Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_config_modules.c 


Log Message:


jesse's module patch - quickly in.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_config_modules.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_int_config_modules.c      20 Dec 2005 02:38:47 -0000      1.5
+++ e_int_config_modules.c      21 Dec 2005 04:48:20 -0000      1.6
@@ -28,11 +28,10 @@
    Evas_List *mods, *umods;
    E_Module *cur_mod;
    Evas_Object *mod_name;
-   struct
-     {
+   struct {
       Evas_Object *configure, *enable, *disable, *about;
       Evas_Object *load, *unload, *loaded, *unloaded;
-     } gui;
+   } gui;
 };
 
 struct _E_Cfg_Mod_Data
@@ -63,37 +62,41 @@
 }
 
 /* FIXME : redo this to setup list of loaded and unloaded modules in one pass 
(easy):)*/
+/* FIXME: this leaks ecore list of files - also same fn dealing with 2 lists 
is a bit evil */
 void 
-_e_config_module_list(Evas_List **b,char *dir,int loaded)
+_e_config_module_list(Evas_List **b, char *dir, int loaded)
 {
-  Evas_List *l; 
-  l = *b;
+   Evas_List *l; 
    char fullpath[PATH_MAX];
+   
+   l = *b;
    if ((ecore_file_exists(dir)) && (ecore_file_is_dir(dir)))
-    {
-      Ecore_List *mods;
-      mods = ecore_file_ls(dir);
-      if (mods)
-      {                     
-        char *mod;
-       int i = 0;
-       while ((mod = ecore_list_next(mods)))
-       {
-         snprintf(fullpath, sizeof(fullpath), "%s/%s", dir, mod);
-         if (ecore_file_is_dir(fullpath))
-         {
-            E_Module *m;
-            m = e_module_find(mod);
+     {
+       Ecore_List *mods;
+       
+       mods = ecore_file_ls(dir);
+       if (mods)
+         {                  
+            char *mod;
+            int i = 0;
             
-            if(!m && !loaded)
-              l = evas_list_append(l,mod);
-            else if(m && loaded)
-              l = evas_list_append(l,m);
-         }
-       }
-      }     
-    }
-   *b=l;
+            while ((mod = ecore_list_next(mods)))
+              {
+                 snprintf(fullpath, sizeof(fullpath), "%s/%s", dir, mod);
+                 if (ecore_file_is_dir(fullpath))
+                   {
+                      E_Module *m;
+                      
+                      m = e_module_find(mod);                 
+                      if ((!m) && (!loaded))
+                        l = evas_list_append(l, mod);
+                      else if ((m) && (loaded))
+                        l = evas_list_append(l, m);
+                   }
+              }
+         }     
+     }
+   *b = l;
 }
 
 void
@@ -108,34 +111,34 @@
    cfd = d->cfd;
    cfdata = cfd->cfdata;
    
-   if(cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC)
-     { 
-       m = d->mod;
-       cfd->data=m; 
-       if(m->enabled)
-        {
-           e_widget_disabled_set( cfdata->gui.enable, 1);
-           e_widget_disabled_set( cfdata->gui.disable, 0);
-           if(m->func.config) 
-             e_widget_disabled_set( cfdata->gui.configure, 0);
-           else
-             e_widget_disabled_set( cfdata->gui.configure, 1);
-        }
-       else
-        {
-           e_widget_disabled_set( cfdata->gui.configure, 1);
-           e_widget_disabled_set( cfdata->gui.enable, 0);
-           e_widget_disabled_set( cfdata->gui.disable, 1);
-        }
-
-       if(m->func.about) 
-        e_widget_disabled_set( cfdata->gui.about, 0);
-       else
-        e_widget_disabled_set( cfdata->gui.about, 1);
+   m = d->mod;
+   cfd->data = m;
+   
+   if (m->enabled)
+     {
+       e_widget_disabled_set(cfdata->gui.enable, 1);
+       e_widget_disabled_set(cfdata->gui.disable, 0);
+       if (m->func.config) 
+         e_widget_disabled_set(cfdata->gui.configure, 0);
+       else
+         e_widget_disabled_set(cfdata->gui.configure, 1);
      }
-   else /* Load / Unload menu */
+   else
      {
-       if(!d->loaded)/* unloaded module was clicked */
+       e_widget_disabled_set(cfdata->gui.configure, 1);
+       e_widget_disabled_set(cfdata->gui.enable, 0);
+       e_widget_disabled_set(cfdata->gui.disable, 1);
+     }
+   
+   if (m->func.about) 
+     e_widget_disabled_set(cfdata->gui.about, 0);
+   else
+     e_widget_disabled_set(cfdata->gui.about, 1);
+   
+   /* Load / Unload menu */
+   if (cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_ADVANCED)
+     {
+       if (!d->loaded)/* unloaded module was clicked */
          {
             cfd->data=d->mod_name;
             e_widget_disabled_set(cfdata->gui.load, 0);
@@ -158,33 +161,36 @@
    E_Config_Dialog *cfd;
    CFData *cfdata;
    Evas_Object *ob;
-
+   
    cfd = data;   
+   d = cfd->data;   
    cfdata = cfd->cfdata;
-   e_module_new(cfd->data);
+   e_module_new(d->mod_name);
    
-   cfd->view_dirty=1;
+   cfd->view_dirty = 1;
 }
 
 void *
 _module_unload(void *data, void *data2)
 {
+   E_Cfg_Mod_Data *d;
    E_Module *m;
    E_Config_Dialog *cfd;
    CFData *cfdata;
    
    cfd = data;
-   m = cfd->data;
+   d = cfd->data;
+   m = d->mod;
    cfdata = cfd->cfdata;
     
    e_module_disable(m);
    e_object_del(E_OBJECT(m));
    e_config_save_queue();
-   cfd->view_dirty=1;
+   cfd->view_dirty = 1;
 }
 
 void *
-_module_enable(void *data, void *data2)/* this enables and disables :) */
+_module_enable(void *data, void *data2) /* this enables and disables :) */
 {
    E_Config_Dialog *cfd;
    CFData *cfdata;
@@ -192,43 +198,60 @@
    E_Cfg_Mod_Data *d;
    
    cfd = data;
-   m = cfd->data;
+   d = cfd->data;
+   
+   if (!d->loaded)
+     {
+       m = e_module_new(d->mod_name);
+       cfd->view_dirty = 1;
+     }
+   else
+     {
+       m = d->mod;
+     }
    cfdata = cfd->cfdata;
 
-   if(m->enabled)
+   if (m->enabled)
      {
        e_module_save(m);
        e_module_disable(m);
        
-       e_widget_disabled_set( cfdata->gui.configure, 1);
-       e_widget_disabled_set( cfdata->gui.enable, 0);
-       e_widget_disabled_set( cfdata->gui.disable, 1);
+       e_widget_disabled_set(cfdata->gui.configure, 1);
+       e_widget_disabled_set(cfdata->gui.enable, 0);
+       e_widget_disabled_set(cfdata->gui.disable, 1);
      }
    else
      {
        e_module_enable(m);
-       
-       if(m->func.config)
-         e_widget_disabled_set( cfdata->gui.configure, 0);
-       e_widget_disabled_set( cfdata->gui.enable, 1);
-       e_widget_disabled_set( cfdata->gui.disable, 0);
+       if (m->func.config)
+         e_widget_disabled_set(cfdata->gui.configure, 0);
+       e_widget_disabled_set(cfdata->gui.enable, 1);
+       e_widget_disabled_set(cfdata->gui.disable, 0);
      }
+
+   /* this forces a redraw of the window so that the buttons update their
+    * state properly... probably fix this with a better method that doesn't
+    * unselect the current selection
+    */
+   cfd->view_dirty = 1;
 }
 
 void *
 _module_configure(void *data, void *data2)
 {
+   E_Cfg_Mod_Data *d;
    E_Config_Dialog *cfd;
    CFData *cfdata;
    E_Module *m;
    
    cfd = data;
-   m = cfd->data;
+   d = cfd->data;
+   m = d->mod;
    cfdata = cfd->cfdata;
-   if(m->func.config)
-   {
-      m->func.config(m);
-   }
+   if (m->func.config)
+     {
+       m->func.config(m);
+     }
    else   
      printf("Can't run config no module!!!\n");// Debug!!    
 }
@@ -243,10 +266,10 @@
    cfd = data;
    m = cfd->data;
    cfdata = cfd->cfdata;
-   if(m->func.about)
-   {
-      m->func.about(m);
-   }
+   if (m->func.about)
+     {
+       m->func.about(m);
+     }
    else   
      printf("Can't run about no module!!!\n");// Debug!!    
 }
@@ -256,29 +279,30 @@
 static void
 _fill_data(CFData *cfdata)
 {
-  char buf[4096];
-  char fullpath[PATH_MAX];
-  Evas_List *l=NULL;
-  
-  cfdata->umods = NULL;
-  
-  cfdata->mods= NULL;
+   char buf[4096];
+   char fullpath[PATH_MAX];
+   Evas_List *l = NULL;
+   
+   cfdata->umods = NULL;
+   cfdata->mods = NULL;
    //e_module_list();
-  
-  /* We could use e_module_list() but this method gives us alphabetical order 
*/
-  for(l = e_path_dir_list_get(path_modules);l;l = l->next)
-    {
-       E_Path_Dir *epd;
-       epd = l->data;
-       _e_config_module_list(&(cfdata->mods),epd->dir,1);
-    }
-  
-  for(l = e_path_dir_list_get(path_modules);l;l = l->next)
-    {
-       E_Path_Dir *epd;
-       epd = l->data;
-       _e_config_module_list(&(cfdata->umods),epd->dir,0);
-    }
+   
+   /* We could use e_module_list() but this method gives us alphabetical order 
*/
+   for (l = e_path_dir_list_get(path_modules); l; l = l->next)
+     {
+       E_Path_Dir *epd;
+       
+       epd = l->data;
+       _e_config_module_list(&(cfdata->mods), epd->dir, 1);
+     }
+   
+   for (l = e_path_dir_list_get(path_modules); l; l = l->next)
+     {
+       E_Path_Dir *epd;
+       
+       epd = l->data;
+       _e_config_module_list(&(cfdata->umods), epd->dir, 0);
+     }
 }
 
 static void *
@@ -292,7 +316,6 @@
    
    cfdata = E_NEW(CFData, 1);
    _fill_data(cfdata);
-   
    return cfdata;
 }
 
@@ -307,13 +330,13 @@
 static int
 _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
 {
- return 1; /* Apply was OK */
+   return 1; /* Apply was OK */
 }
 
 static int
 _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
 {
- return 1; /* Apply was OK */
+   return 1; /* Apply was OK */
 }
 
 /**--GUI--**/
@@ -331,19 +354,21 @@
    
    o = e_widget_list_add(evas, 0, 1);
    of = e_widget_framelist_add(evas, "Modules", 1); 
-   ob = e_widget_ilist_add(evas,16,16,NULL);
-   for(l = cfdata->mods;l;l = l->next)
+   ob = e_widget_ilist_add(evas, 16, 16, NULL);
+   for(l = cfdata->mods; l; l = l->next)
      {
        E_Cfg_Mod_Data *cb_data;
+       
        m = l->data;
        sob = e_icon_add(evas);
        if (m->icon_file)
-         e_icon_file_set(sob,m->icon_file);
+         e_icon_file_set(sob, m->icon_file);
        /*else if (mod->edje_icon_file)
         * {
         *  if (mod->edje_icon_key)
         */
        cb_data = E_NEW(E_Cfg_Mod_Data, 1);
+       cb_data->loaded = 1;
        cb_data->cfd = cfd;
        cb_data->mod = m;
        e_widget_ilist_append(ob, sob, m->name, _e_config_mod_cb_standard, 
cb_data, m->name);
@@ -394,14 +419,15 @@
    o = e_widget_list_add(evas, 0, 1);
    
    of = e_widget_framelist_add(evas, "Loaded", 1);
-   ob = e_widget_ilist_add(evas,16,16,NULL);
-   for(l = cfdata->mods;l;l = l->next)
+   ob = e_widget_ilist_add(evas, 16, 16, NULL);
+   for(l = cfdata->mods; l; l = l->next)
    {
       E_Cfg_Mod_Data *cb_data;
+      
       m = l->data;
       sob = e_icon_add(evas);
       if (m->icon_file)
-       e_icon_file_set(sob,m->icon_file);
+       e_icon_file_set(sob, m->icon_file);
       cb_data = E_NEW(E_Cfg_Mod_Data, 1);
       cb_data->cfd = cfd;
       cb_data->loaded = 1;
@@ -414,38 +440,53 @@
    e_widget_framelist_object_append(of, ob);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
 
-   of = e_widget_list_add(evas, 0, 0);
+   of = e_widget_frametable_add(evas, "Actions", 1);
    ob = e_widget_button_add(evas, "Load", NULL, _module_load, cfd, NULL);
    cfdata->gui.load = ob;
    e_widget_disabled_set(ob, 1);
-   e_widget_list_object_append(of, ob, 1, 1, 0.5);
+   e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 32, 32, 1, 1);
+   
+   ob = e_widget_button_add(evas, "Enable", NULL, _module_enable, cfd, NULL);
+   cfdata->gui.enable = ob;
+   e_widget_disabled_set(ob, 1);
+   e_widget_frametable_object_append(of, ob, 0, 1, 1, 1, 32, 32, 1, 1);
+   
+   ob = e_widget_button_add(evas, "Disable", NULL, _module_enable, cfd, NULL);
+   cfdata->gui.disable = ob;
+   e_widget_disabled_set(ob, 1);
+   e_widget_frametable_object_append(of, ob, 0, 2, 1, 1, 32, 32, 1, 1);
    
    ob = e_widget_button_add(evas, "Unload", NULL, _module_unload, cfd, NULL);  
 
    cfdata->gui.unload = ob;
    e_widget_disabled_set(ob, 1);
-   e_widget_list_object_append(of, ob, 1, 1, 0.5);
+   e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 32, 32, 1, 1);
+   
+   ob = e_widget_button_add(evas, "Configure", NULL, _module_configure, cfd, 
NULL);
+   cfdata->gui.configure = ob;
+   e_widget_disabled_set(ob, 1);
+   e_widget_frametable_object_append(of, ob, 0, 4, 1, 1, 32, 32, 1, 1);
    e_widget_list_object_append(o, of, 1, 1, 0.5);  
 
    of = e_widget_framelist_add(evas, "Unloaded", 1);
-   ob = e_widget_ilist_add(evas,16,16,NULL);
-   for(l = cfdata->umods;l;l = l->next)
-   {
-     char *mod;
-     char *icon;
-     char buf[PATH_MAX];
-     E_Cfg_Mod_Data *cb_data;
-     
-     mod = l->data;
-     sob = e_icon_add(evas);
-     snprintf(buf, sizeof(buf), "%s/module_icon.png", mod);
-     icon = e_path_find(path_modules, buf);
-     e_icon_file_set(sob,icon);
-     cb_data = E_NEW(CFData,1);
-     cb_data->cfd = cfd;
-     cb_data->loaded = 0;
-     cb_data->mod_name = strdup(mod);
-     e_widget_ilist_append(ob, sob, mod, _e_config_mod_cb_standard, cb_data, 
mod);
-   }
+   ob = e_widget_ilist_add(evas, 16, 16, NULL);
+   for (l = cfdata->umods; l; l = l->next)
+     {
+       char *mod;
+       char *icon;
+       char buf[PATH_MAX];
+       E_Cfg_Mod_Data *cb_data;
+       
+       mod = l->data;
+       sob = e_icon_add(evas);
+       snprintf(buf, sizeof(buf), "%s/module_icon.png", mod);
+       icon = e_path_find(path_modules, buf);
+       e_icon_file_set(sob,icon);
+       cb_data = E_NEW(CFData,1);
+       cb_data->cfd = cfd;
+       cb_data->loaded = 0;
+       cb_data->mod_name = strdup(mod);
+       e_widget_ilist_append(ob, sob, mod, _e_config_mod_cb_standard, cb_data, 
mod);
+     }
    cfdata->gui.unloaded = ob;
    e_widget_ilist_go(ob);
    e_widget_min_size_set(ob, 120, 120);




-------------------------------------------------------
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://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to