diff options
author | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2007-01-19 05:25:31 +0000 |
---|---|---|
committer | michael <michael@3ae390bd-cb1e-0410-b409-cd5a39f66f1f> | 2007-01-19 05:25:31 +0000 |
commit | 905dbf38f50aaa63c592e79aa30b413492e31f7f (patch) | |
tree | f2d0967a1501eec300a944869b96d60cc05684dc | |
parent | af17b6b122dc6e49dd64ff51b574a172af860ff8 (diff) | |
download | lcd4linux-905dbf38f50aaa63c592e79aa30b413492e31f7f.tar.gz |
dynamic properties for keypad widget
git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@746 3ae390bd-cb1e-0410-b409-cd5a39f66f1f
Diffstat (limited to '')
-rw-r--r-- | widget_keypad.c | 34 | ||||
-rw-r--r-- | widget_keypad.h | 9 |
2 files changed, 14 insertions, 29 deletions
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; diff --git a/widget_keypad.h b/widget_keypad.h index 89bc78c..117ef1d 100644 --- a/widget_keypad.h +++ b/widget_keypad.h @@ -28,6 +28,10 @@ #ifndef _WIDGET_KEYPAD_H_ #define _WIDGET_KEYPAD_H_ + +#include "property.h" + + typedef enum { WIDGET_KEY_UP = 1, WIDGET_KEY_DOWN = 2, @@ -39,10 +43,9 @@ typedef enum { WIDGET_KEY_RELEASED = 128 } KEYPADKEY; + typedef struct WIDGET_KEYPAD { - char *expression; /* expression that delivers the value */ - void *tree; /* pre-compiled expression that delivers the value */ - int val; /* current value of the expression */ + PROPERTY expression; /* expression that delivers the value */ KEYPADKEY key; /* which key */ } WIDGET_KEYPAD; |