Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_config_modules.c 


Log Message:
Slightly better modules config dialog. Added frames for module options. Fix 
potential segv that could have happened if a user clicked on Enable/Load/Unload 
without having a module selected. Supports Auto-Apply properly now
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_modules.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- e_int_config_modules.c      15 Feb 2006 20:30:59 -0000      1.24
+++ e_int_config_modules.c      16 Feb 2006 11:24:36 -0000      1.25
@@ -12,16 +12,13 @@
 
 static void *_create_data(E_Config_Dialog *cfd);
 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
-/* static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata); */
+static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, 
E_Config_Dialog_Data *cfdata);
 
 static void _ilist_cb_change(void *data, Evas_Object *obj);
 static int _sort_modules(void *data1, void *data2);
 static void _module_configure(void *data, void *data2);
 static void _module_about(void *data, void *data2);
-static void _enabled_cb_change(void *data, Evas_Object *obj);
-static void _loaded_cb_change(void *data, Evas_Object *obj);
-static void _unloaded_cb_change(void *data, Evas_Object *obj);
 
 struct _E_Widget_Data
 {
@@ -61,8 +58,7 @@
    v->create_cfdata           = _create_data;
    v->free_cfdata             = _free_data;
    v->basic.create_widgets    = _basic_create_widgets;
-   /* v->basic.apply_cfdata      = _basic_apply_data; */
-   v->override_auto_apply = 1;
+   v->basic.apply_cfdata      = _basic_apply_data;
    
    cfd = e_config_dialog_new(con, _("Module Settings"), NULL, 0, v, NULL);
    return cfd;
@@ -177,7 +173,6 @@
    free(cfdata);
 }
 
-/*
 static int
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
@@ -248,22 +243,20 @@
      }
    return 1;
 }
-*/
 
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
 {
-   Evas_Object *o, *of, *ob, *oc, *ot, *ilist;
+   Evas_Object *o, *of, *ob, *ot, *ilist, *mt;
    E_Radio_Group *rg;
    E_Module *m;
    char buf[4096];
    int i;
 
    o = e_widget_list_add(evas, 1, 0);
-
-   of = e_widget_framelist_add(evas, _("Modules"), 1);
    ot = e_widget_table_add(evas, 1);
-
+   
+   of = e_widget_framelist_add(evas, _("Modules"), 1);
    ilist = e_widget_ilist_add(evas, 16, 16, NULL);
    cfdata->gui.list = ilist;
    e_widget_on_change_hook_set(ilist, _ilist_cb_change, cfdata);
@@ -272,7 +265,8 @@
    for (i = 0; i < evas_list_count(cfdata->modules); i++)
      {
        CFModule *cm;
-
+       Evas_Object *oc;
+       
        cm = evas_list_nth(cfdata->modules, i);
        if (cm)
          {
@@ -292,39 +286,46 @@
      }
 
    e_widget_ilist_go(ilist);
-   e_widget_table_object_append(ot, ilist, 0, 0, 1, 7, 1, 1, 1, 1);
+   e_widget_framelist_object_append(of, ilist);
+   e_widget_table_object_append(ot, of, 0, 0, 2, 5, 1, 1, 1, 1);
 
+   of = e_widget_framelist_add(evas, _("Module State"), 0);
+   mt = e_widget_table_add(evas, 0);
+   
    rg = e_widget_radio_group_new(&(cfdata->state));
 
    ob = e_widget_radio_add(evas, _("Enabled"), MOD_ENABLED, rg);
    cfdata->gui.enabled = ob;
-   e_widget_table_object_append(ot, ob, 1, 0, 1, 1, 1, 0, 1, 0);
-   e_widget_on_change_hook_set(ob, _enabled_cb_change, cfdata);
+   e_widget_disabled_set(ob, 1);
+   e_widget_table_object_append(mt, ob, 0, 0, 1, 1, 1, 0, 1, 0);
 
    ob = e_widget_radio_add(evas, _("Loaded"), MOD_LOADED, rg);
    cfdata->gui.loaded = ob;
-   e_widget_table_object_append(ot, ob, 1, 1, 1, 1, 1, 0, 1, 0);
-   e_widget_on_change_hook_set(ob, _loaded_cb_change, cfdata);
+   e_widget_disabled_set(ob, 1);
+   e_widget_table_object_append(mt, ob, 0, 1, 1, 1, 1, 0, 1, 0);
 
    ob = e_widget_radio_add(evas, _("Unloaded"), MOD_UNLOADED, rg);
    cfdata->gui.unloaded = ob;
-   e_widget_table_object_append(ot, ob, 1, 2, 1, 1, 1, 0, 1, 0);
-   e_widget_on_change_hook_set(ob, _unloaded_cb_change, cfdata);
+   e_widget_disabled_set(ob, 1);
+   e_widget_table_object_append(mt, ob, 0, 2, 1, 1, 1, 0, 1, 0);
+   
+   e_widget_framelist_object_append(of, mt);
+   e_widget_table_object_append(ot, of, 2, 0, 2, 2, 1, 1, 1, 1);
 
+   of = e_widget_framelist_add(evas, _("Module Actions"), 0);   
    ob = e_widget_button_add(evas, _("Configure"), NULL, _module_configure, 
ilist, NULL);
    cfdata->gui.configure = ob;
-   e_widget_table_object_append(ot, ob, 1, 3, 1, 1, 1, 0, 1, 0);
+   e_widget_framelist_object_append(of, ob);
 
    ob = e_widget_button_add(evas, _("About"), NULL, _module_about, ilist, 
NULL);
    cfdata->gui.about = ob;
-   e_widget_table_object_append(ot, ob, 1, 4, 1, 1, 1, 0, 1, 0);
+   e_widget_framelist_object_append(of, ob);
 
    e_widget_disabled_set(cfdata->gui.configure, 1);
    e_widget_disabled_set(cfdata->gui.about, 1);
-   
-   e_widget_framelist_object_append(of, ot);
-   e_widget_list_object_append(o, of, 1, 1, 0.5);
-   e_dialog_resizable_set(cfd->dia, 1);
+
+   e_widget_table_object_append(ot, of, 2, 3, 2, 2, 1, 1, 1, 1);
+   e_widget_list_object_append(o, ot, 1, 1, 0.5);
 
    return o;
 }
@@ -339,7 +340,7 @@
    int i;
 
    cfdata = data;
-
+   
    v = e_widget_ilist_selected_label_get(obj);
    for (i = 0; i < evas_list_count(cfdata->modules); i++)
      {
@@ -349,6 +350,9 @@
        if ((cm) && (!strcmp(cm->name, v)))
          {
             cfdata->state = cm->state;
+            e_widget_disabled_set(cfdata->gui.enabled, 0);
+            e_widget_disabled_set(cfdata->gui.loaded, 0);
+            e_widget_disabled_set(cfdata->gui.unloaded, 0);
             switch (cm->state)
               {
                case MOD_ENABLED:
@@ -404,139 +408,3 @@
    m2 = data2;
    return (strcmp((const char*)m1->name, (const char*)m2->name));
 }
-
-static void
-_enabled_cb_change(void *data, Evas_Object *obj)
-{
-   E_Config_Dialog_Data *cfdata;
-   E_Module *m;
-   CFModule *cm;
-   const char *v;
-   int i;
-   
-   cfdata = (E_Config_Dialog_Data *)data;   
-   v = e_widget_ilist_selected_label_get(cfdata->gui.list);
-   for (i = 0; i < evas_list_count(cfdata->modules); i++)
-     {
-       cm = evas_list_nth(cfdata->modules, i);
-       if ((cm) && (!strcmp(cm->name, v)))
-         break;
-       else
-         cm = NULL;
-     }
-   if (!cm) return;
-
-   if (cm->state != cfdata->state)
-     {
-       e_widget_disabled_set(cfdata->gui.configure, 1);
-       e_widget_disabled_set(cfdata->gui.about, 1);
-       m = e_module_find((char *)v);
-       if (!m) 
-         { 
-            m = e_module_new((char *)v);
-            if (!m) return;
-         }
-       if (!m->enabled) 
-         e_module_enable(m);
-
-       e_config_save_queue();
-       if (m->enabled) 
-         {      
-            if (m->func.config)
-              e_widget_disabled_set(cfdata->gui.configure, 0);
-            if (m->func.about)
-              e_widget_disabled_set(cfdata->gui.about, 0);
-         }
-       cm->state = MOD_ENABLED;
-     }
-}
-
-static void
-_loaded_cb_change(void *data, Evas_Object *obj)
-{
-   E_Config_Dialog_Data *cfdata;
-   E_Module *m;
-   CFModule *cm;
-   const char *v;
-   int i;
-
-   cfdata = (E_Config_Dialog_Data *)data;   
-   v = e_widget_ilist_selected_label_get(cfdata->gui.list);
-   for (i = 0; i < evas_list_count(cfdata->modules); i++)
-     {
-       cm = evas_list_nth(cfdata->modules, i);
-       if ((cm) && (!strcmp(cm->name, v)))
-         break;
-       else
-         cm = NULL;
-     }
-   if (!cm) return;
-
-   if (cm->state != cfdata->state)
-     {
-       e_widget_disabled_set(cfdata->gui.configure, 1);
-       e_widget_disabled_set(cfdata->gui.about, 1);
-       m = e_module_find((char *)v);
-       if (!m) 
-         { 
-            m = e_module_new((char *)v);
-            if (!m) return;
-         }
-       if (m->enabled) 
-         {
-            e_module_save(m);
-            e_module_disable(m);
-            e_config_save_queue();          
-         }
-       if (m->func.about)
-         e_widget_disabled_set(cfdata->gui.about, 0);
-                      
-       cm->state = MOD_LOADED;
-     }
-}
-
-static void
-_unloaded_cb_change(void *data, Evas_Object *obj)
-{
-   E_Config_Dialog_Data *cfdata;
-   E_Module *m;
-   CFModule *cm;
-   const char *v;
-   int i;
-
-   cfdata = (E_Config_Dialog_Data *)data;   
-   v = e_widget_ilist_selected_label_get(cfdata->gui.list);
-   for (i = 0; i < evas_list_count(cfdata->modules); i++)
-     {
-       cm = evas_list_nth(cfdata->modules, i);
-       if ((cm) && (!strcmp(cm->name, v)))
-         break;
-       else
-         cm = NULL;
-     }
-   if (!cm) return;
-
-   if (cm->state != cfdata->state)
-     {
-       e_widget_disabled_set(cfdata->gui.configure, 1);
-       e_widget_disabled_set(cfdata->gui.about, 1);
-       m = e_module_find((char *)v);
-       if (!m) 
-         { 
-            m = e_module_new((char *)v);
-            if (!m) return;
-         }
-   
-       if (m)
-         {
-            if (m->func.config)
-              e_widget_disabled_set(cfdata->gui.configure, 1);
-            if (m->func.about)
-              e_widget_disabled_set(cfdata->gui.about, 1);
-            e_module_disable(m);
-            e_object_del(E_OBJECT(m));
-            e_config_save_queue();
-         }
-       cm->state = MOD_UNLOADED;
-     }
-}




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to