Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/enhance/src/lib Modified Files: Enhance.h enhance.c Log Message: - patch from nerochiaro to add widget enumerators (another step for more friendliness for scripting languages) =================================================================== RCS file: /cvs/e/e17/proto/enhance/src/lib/Enhance.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- Enhance.h 5 Aug 2006 17:11:18 -0000 1.2 +++ Enhance.h 8 Aug 2006 19:02:41 -0000 1.3 @@ -69,6 +69,7 @@ } Enhance_Signal_Handling; typedef Evas_List* Enhance_Signals_Enumerator; +typedef Evas_List* Enhance_Widgets_Enumerator; typedef struct _Enhance Enhance; @@ -81,7 +82,7 @@ Evas_Hash *radio_groups; /* radio groups used */ char *main_window; /* main window to show */ Enhance_Signal_Handling signal_handling; /* how the signals should be handled */ -}; +}; /* Initialize and shutdown the enhance subsystems */ void enhance_init(); @@ -98,23 +99,32 @@ void enhance_signal_handling_set(Enhance *en, Enhance_Signal_Handling mode); /* Loads / parses a Glade XML file showing main_window */ -void enhance_file_load(Enhance *en, char *main_window, char *file); +void enhance_file_load(Enhance *en, const char *main_window, const char *file); /* Sets / gets a void *data variable of a particular callback */ -void enhance_callback_data_set(Enhance *en, char *cb_name, void *data); -void *enhance_callback_data_get(Enhance *en, char *cb_name); +void enhance_callback_data_set(Enhance *en, const char *cb_name, void *data); +void *enhance_callback_data_get(Enhance *en, const char *cb_name); /* Gets the internal Etk_Widget for a certain part in the GUI */ -Etk_Widget *enhance_var_get(Enhance *en, char *string); +Etk_Widget *enhance_var_get(Enhance *en, const char *string); /* Gets the number of signal handlers for a certain part in the GUI */ -int enhance_signals_count(Enhance *en, char *widget); +int enhance_signals_count(Enhance *en, const char *widget); /* Gets the first signal name + handler name for a certain part in the GUI. Returns NULL if there are none. */ -Enhance_Signals_Enumerator enhance_signals_first(Enhance *en, char* widget, char **signal, char **handler); +Enhance_Signals_Enumerator enhance_signals_first(Enhance *en, const char* widget, char **signal, char **handler); /* Gets the next signal name + handler name for a certain part in the GUI. Returns NULL if there are no more. */ Enhance_Signals_Enumerator enhance_signals_next(Enhance *en, Enhance_Signals_Enumerator current, char **signal, char **handler); + +/* Starts the enumeration of all GUI parts. You should always call enhance_widgets_end to close it. */ +Enhance_Widgets_Enumerator enhance_widgets_start(Enhance *en); + +/* Gets the next GUI part. Return NULL if there are no more GUI parts. */ +const char* enhance_widgets_next(Enhance *en, Enhance_Widgets_Enumerator* enumeration); + +/* Ends an enumeration of all GUI parts. */ +void enhance_widgets_end(Enhance *en, Enhance_Widgets_Enumerator* enumeration); #ifdef __cplusplus } =================================================================== RCS file: /cvs/e/e17/proto/enhance/src/lib/enhance.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- enhance.c 8 Aug 2006 03:40:41 -0000 1.16 +++ enhance.c 8 Aug 2006 19:02:42 -0000 1.17 @@ -752,10 +752,6 @@ sig_hndl[0] = name; sig_hndl[1] = handler; -#if DEBUG - printf("STORING %s <<< %s => %s\n", parent_id, sig_hndl[0], sig_hndl[1]); -#endif - signals = evas_hash_find(en->signals, parent_id); signals = evas_list_append(signals, sig_hndl); en->signals = evas_hash_add(en->signals, parent_id, signals); @@ -1028,7 +1024,7 @@ } void -enhance_file_load(Enhance *en, char *main_window, char *file) +enhance_file_load(Enhance *en, const char *main_window, const char *file) { EXML *xml; EXML_Node *node; @@ -1048,7 +1044,7 @@ } Etk_Widget * -enhance_var_get(Enhance *en, char *string) +enhance_var_get(Enhance *en, const char *string) { E_Widget *widget; @@ -1063,14 +1059,11 @@ } int -enhance_signals_count(Enhance *en, char *widget) +enhance_signals_count(Enhance *en, const char *widget) { Evas_List *signals; signals = evas_hash_find(en->signals, widget); -#if DEBUG - printf("READING %p \n", signals); -#endif return evas_list_count(signals); } @@ -1082,20 +1075,13 @@ sig_hndl = cur->data; *signal = sig_hndl[0]; *handler = sig_hndl[1]; -#if DEBUG - printf("PRINTING: %s => %s\n", *signal, *handler); -#endif } Enhance_Signals_Enumerator -enhance_signals_first(Enhance *en, char* widget, char **signal, char **handler) +enhance_signals_first(Enhance *en, const char* widget, char **signal, char **handler) { Evas_List *signals; -#if DEBUG - printf("PRINTING BF: %p => %p\n", signal, handler); -#endif - signals = evas_hash_find(en->signals, widget); if (signals != NULL) _enhance_enum_copy(signals, signal, handler); return (Enhance_Signals_Enumerator) signals; @@ -1112,15 +1098,62 @@ } void -enhance_callback_data_set(Enhance *en, char *cb_name, void *data) +enhance_callback_data_set(Enhance *en, const char *cb_name, void *data) { en->callback_data = evas_hash_add(en->callback_data, cb_name, data); } void * -enhance_callback_data_get(Enhance *en, char *cb_name) +enhance_callback_data_get(Enhance *en, const char *cb_name) { return evas_hash_find(en->callback_data, cb_name); +} + +static Evas_Bool +_e_wigets_enum_create(Evas_Hash *hash, const char *key, void *data, void *fdata) +{ + Evas_List **plist; + + plist = fdata; + *plist = evas_list_append(*plist, key); + + return 1; +} + +Enhance_Widgets_Enumerator +enhance_widgets_start(Enhance *en) +{ + Evas_List* list; + + list = NULL; + evas_hash_foreach(en->widgets, _e_wigets_enum_create, &list); + return evas_list_last(list); +} + +const char* +enhance_widgets_next(Enhance *en, Enhance_Widgets_Enumerator* enumerator) +{ + Evas_List *list; + char* data; + + if (enumerator == NULL) return NULL; + + list = *enumerator; + data = evas_list_data(list); + *enumerator = evas_list_prev(list); + return data; +} + +void +enhance_widgets_end(Enhance *en, Enhance_Widgets_Enumerator* enumerator) +{ + Evas_List *l; + + l = *enumerator; + for (; l; l = evas_list_next(l)) E_FREE(l->data); + evas_list_free(l); + + *enumerator = NULL; } Enhance * ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs