aboutsummaryrefslogtreecommitdiffstats
path: root/widget_text.c
diff options
context:
space:
mode:
Diffstat (limited to 'widget_text.c')
-rw-r--r--widget_text.c142
1 files changed, 14 insertions, 128 deletions
diff --git a/widget_text.c b/widget_text.c
index d543534..a09c118 100644
--- a/widget_text.c
+++ b/widget_text.c
@@ -1,4 +1,5 @@
-/* $Id: widget_text.c,v 1.27 2006/08/13 18:14:03 harbaum Exp $
+/* $Id: widget_text.c 749 2007-01-20 06:37:35Z michael $
+ * $URL: https://ssl.bulix.org/svn/lcd4linux/branches/0.10.1/widget_text.c $
*
* simple text widget handling
*
@@ -19,121 +20,6 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
- *
- * $Log: widget_text.c,v $
- * Revision 1.27 2006/08/13 18:14:03 harbaum
- * Added KVV plugin
- *
- * Revision 1.26 2006/08/13 11:38:20 reinelt
- * text widget uses dynamic properties
- *
- * Revision 1.25 2006/08/13 09:53:10 reinelt
- * dynamic properties added (used by 'style' of text widget)
- *
- * Revision 1.24 2006/01/23 06:17:18 reinelt
- * timer widget added
- *
- * Revision 1.23 2005/12/18 16:18:36 reinelt
- * GPO's added again
- *
- * Revision 1.22 2005/05/08 04:32:45 reinelt
- * CodingStyle added and applied
- *
- * Revision 1.21 2005/01/18 06:30:24 reinelt
- * added (C) to all copyright statements
- *
- * Revision 1.20 2004/11/29 04:42:07 reinelt
- * removed the 99999 msec limit on widget update time (thanks to Petri Damsten)
- *
- * Revision 1.19 2004/06/26 12:05:00 reinelt
- *
- * uh-oh... the last CVS log message messed up things a lot...
- *
- * Revision 1.18 2004/06/26 09:27:21 reinelt
- *
- * added '-W' to CFLAGS
- * changed all C++ comments to C ones
- * cleaned up a lot of signed/unsigned mistakes
- *
- * Revision 1.17 2004/03/11 06:39:59 reinelt
- * big patch from Martin:
- * - reuse filehandles
- * - memory leaks fixed
- * - earlier busy-flag checking with HD44780
- * - reuse memory for strings in RESULT and hash
- * - netdev_fast to wavid time-consuming regex
- *
- * Revision 1.16 2004/03/08 16:26:26 reinelt
- * re-introduced \nnn (octal) characters in strings
- * text widgets can have a 'update' speed of 0 which means 'never'
- * (may be used for static content)
- *
- * Revision 1.15 2004/03/06 20:31:16 reinelt
- * Complete rewrite of the evaluator to get rid of the code
- * from mark Morley (because of license issues).
- * The new Evaluator does a pre-compile of expressions, and
- * stores them in trees. Therefore it should be reasonable faster...
- *
- * Revision 1.14 2004/03/03 03:47:04 reinelt
- * big patch from Martin Hejl:
- * - use qprintf() where appropriate
- * - save CPU cycles on gettimeofday()
- * - add quit() functions to free allocated memory
- * - fixed lots of memory leaks
- *
- * Revision 1.13 2004/02/18 06:39:20 reinelt
- * T6963 driver for graphic displays finished
- *
- * Revision 1.12 2004/02/09 19:49:38 nicowallmeier
- * Minor bugfix
- *
- * Revision 1.11 2004/01/30 20:57:56 reinelt
- * HD44780 patch from Martin Hejl
- * dmalloc integrated
- *
- * Revision 1.10 2004/01/29 04:40:03 reinelt
- * every .c file includes "config.h" now
- *
- * Revision 1.9 2004/01/23 04:54:04 reinelt
- * icon widget added (not finished yet!)
- *
- * Revision 1.8 2004/01/22 07:57:45 reinelt
- * several bugs fixed where segfaulting on layout>display
- * Crystalfontz driver optimized, 632 display already works
- *
- * Revision 1.7 2004/01/20 04:51:39 reinelt
- * moved generic stuff from drv_MatrixOrbital to drv_generic
- * implemented new-stylish bars which are nearly finished
- *
- * Revision 1.6 2004/01/15 07:47:02 reinelt
- * debian/ postinst and watch added (did CVS forget about them?)
- * evaluator: conditional expressions (a?b:c) added
- * text widget nearly finished
- *
- * Revision 1.5 2004/01/15 04:29:45 reinelt
- * moved lcd4linux.conf.sample to *.old
- * lcd4linux.conf.sample with new layout
- * new plugins 'loadavg' and 'meminfo'
- * text widget have pre- and postfix
- *
- * Revision 1.4 2004/01/14 11:33:00 reinelt
- * new plugin 'uname' which does what it's called
- * text widget nearly finished
- * first results displayed on MatrixOrbital
- *
- * Revision 1.3 2004/01/13 08:18:20 reinelt
- * timer queues added
- * liblcd4linux deactivated turing transformation to new layout
- *
- * Revision 1.2 2004/01/11 18:26:02 reinelt
- * further widget and layout processing
- *
- * Revision 1.1 2004/01/10 20:22:33 reinelt
- * added new function 'cfg_list()' (not finished yet)
- * added layout.c (will replace processor.c someday)
- * added widget_text.c (will be the first and most important widget)
- * modified lcd4linux.c so that old-style configs should work, too
- *
*/
/*
@@ -275,9 +161,10 @@ void widget_text_update(void *Self)
char *string;
int update = 0;
- /* evaluate prefix and postfix */
+ /* evaluate properties */
update += property_eval(&T->prefix);
update += property_eval(&T->postfix);
+ update += property_eval(&T->style);
/* evaluate value */
property_eval(&T->value);
@@ -319,16 +206,12 @@ void widget_text_update(void *Self)
/* did the formatted string change? */
if (T->string == NULL || strcmp(T->string, string) != 0) {
update++;
- if (T->string)
- free(T->string);
+ free(T->string);
T->string = string;
} else {
free(string);
}
- /* text style */
- update += property_eval(&T->style);
-
/* something has changed and should be updated */
if (update) {
/* reset marquee counter if content has changed */
@@ -361,9 +244,14 @@ int widget_text_init(WIDGET * Self)
/* load properties */
property_load(section, "prefix", NULL, &Text->prefix);
- property_load(section, "expression", NULL, &Text->value);
+ property_load(section, "expression", "", &Text->value);
property_load(section, "postfix", NULL, &Text->postfix);
- property_load(section, "style", "norm", &Text->style);
+ property_load(section, "style", NULL, &Text->style);
+
+ /* sanity checks */
+ if (!property_valid(&Text->value)) {
+ error("Warning: widget %s has no expression", section);
+ }
/* field width, default 10 */
cfg_number(section, "width", 10, 0, -1, &(Text->width));
@@ -436,10 +324,8 @@ int widget_text_quit(WIDGET * Self)
property_free(&Text->value);
property_free(&Text->postfix);
property_free(&Text->style);
- if (Text->string)
- free(Text->string);
- if (Text->buffer)
- free(Text->buffer);
+ free(Text->string);
+ free(Text->buffer);
free(Self->data);
Self->data = NULL;
}