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

Reply via email to