From d0c7529cb9833ede3595051df5599a11fe03be48 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Thu, 5 Apr 2007 15:25:19 +0200 Subject: import new upstream --- widget_text.c | 142 ++++++---------------------------------------------------- 1 file changed, 14 insertions(+), 128 deletions(-) (limited to 'widget_text.c') 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; } -- cgit v1.2.3