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