diff options
| -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;  | 
