From 905dbf38f50aaa63c592e79aa30b413492e31f7f Mon Sep 17 00:00:00 2001 From: michael Date: Fri, 19 Jan 2007 05:25:31 +0000 Subject: dynamic properties for keypad widget git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@746 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- widget_keypad.c | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) (limited to 'widget_keypad.c') diff --git a/widget_keypad.c b/widget_keypad.c index f19f105..fdc3225 100644 --- a/widget_keypad.c +++ b/widget_keypad.c @@ -40,7 +40,7 @@ #include "debug.h" #include "cfg.h" -#include "evaluator.h" +#include "property.h" #include "timer.h" #include "widget.h" #include "widget_keypad.h" @@ -53,20 +53,11 @@ int widget_keypad_draw(WIDGET * Self) { WIDGET_KEYPAD *keypad = Self->data; - RESULT result = { 0, 0, 0, NULL }; - int val; + /* evaluate properties */ + property_eval(&keypad->expression); - /* evaluate expression */ - val = 0; - if (keypad->tree != NULL) { - Eval(keypad->tree, &result); - val = R2N(&result); - DelResult(&result); - } - keypad->val = val; - - return val; + return P2N(&keypad->expression); } @@ -85,17 +76,8 @@ int widget_keypad_init(WIDGET * Self) keypad = malloc(sizeof(WIDGET_KEYPAD)); memset(keypad, 0, sizeof(WIDGET_KEYPAD)); - /* get raw expression (we evaluate them ourselves) */ - keypad->expression = cfg_get_raw(section, "expression", NULL); - - /* sanity check */ - if (keypad->expression == NULL || *keypad->expression == '\0') { - error("widget %s has no expression, using '0.0'", Self->name); - keypad->expression = "0"; - } - - /* compile expression */ - Compile(keypad->expression, &keypad->tree); + /* load properties */ + property_load(section, "expression", "0", &keypad->expression); /* state: pressed (default), released */ c = cfg_get(section, "state", "pressed"); @@ -145,8 +127,8 @@ int widget_keypad_quit(WIDGET * Self) { if (Self) { if (Self->data) { - WIDGET_KEYPAD *KEYPAD = Self->data; - DelTree(KEYPAD->tree); + WIDGET_KEYPAD *keypad = Self->data; + property_free(&keypad->expression); free(Self->data); } Self->data = NULL; -- cgit v1.2.3