Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e.h e_gadget.c e_int_config_modules.c e_int_gadcon_config.c e_int_menus.c e_module.c e_module.h e_object.c e_object.h Log Message: nice little overhaul of module related stuff. moduels now finally RELY on module.eap files being installed - and using the e_apps api to load them and ask for a name. Also icon is expected to be in this file too and i have removed the info func call from modules as well as config_menu, module menus, and other cruft in moduel structs. this also means revving the module api version and saving users from a "if i recompile it will work" thing. :) moduels need serious updates, not just a recompile for this. your modules WILL break. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e.h,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- e.h 13 Apr 2006 08:10:52 -0000 1.44 +++ e.h 1 Jun 2006 06:44:35 -0000 1.45 @@ -7,6 +7,8 @@ #include "config.h" #define USE_IPC +/* #define OBJECT_PARANOIA_CHECK */ +/* #define OBJECT_CHECK */ #include <stdio.h> #include <stdlib.h> =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_gadget.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- e_gadget.c 23 Feb 2006 14:22:31 -0000 1.12 +++ e_gadget.c 1 Jun 2006 06:44:35 -0000 1.13 @@ -264,7 +264,6 @@ } evas_list_free(gad->faces); - gad->module->config_menu = NULL; e_object_unref(E_OBJECT(gad->module)); if (gad->name) evas_stringshare_del(gad->name); free(gad); =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_modules.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -3 -r1.31 -r1.32 --- e_int_config_modules.c 10 May 2006 13:41:23 -0000 1.31 +++ e_int_config_modules.c 1 Jun 2006 06:44:35 -0000 1.32 @@ -250,17 +250,24 @@ cm = l->data; if (cm) { + E_App *a; + cm->state = MOD_UNLOADED; m = e_module_find(cm->name); if (m) { if (m->enabled) cm->state = MOD_ENABLED; } - /* This Fails if module author names icon something else */ - snprintf(buf, sizeof(buf), "%s/module_icon.png", cm->path); - oc = e_icon_add(evas); - e_icon_file_set(oc, buf); - e_widget_ilist_append(ilist, oc, cm->name, NULL, NULL, NULL); + snprintf(buf, sizeof(buf), "%s/module.eap", cm->path); + + a = e_app_new(buf, 0); + if (a) + { + oc = edje_object_add(evas); + edje_object_file_set(oc, buf, "icon"); + e_widget_ilist_append(ilist, oc, a->name, NULL, NULL, NULL); + e_object_unref(E_OBJECT(a)); + } } } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_gadcon_config.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- e_int_gadcon_config.c 31 May 2006 18:58:26 -0000 1.12 +++ e_int_gadcon_config.c 1 Jun 2006 06:44:35 -0000 1.13 @@ -444,179 +444,3 @@ return o; } - -/************* raster original code ********************/ -#if 0 -static int -_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) -{ - Evas_List *l, *l2; - E_Config_Gadcon *cf_gc, *cf_gc2; - E_Config_Gadcon_Client *cf_gcc, *cf_gcc2; - int i, ok = 0; - char buf[256]; - - cfdata->gc->config_dialog = cfd; - for (l = e_config->gadcons; l; l = l->next) - { - cf_gc = l->data; - if ((!strcmp(cf_gc->name, cfdata->gc->name)) && - (!strcmp(cf_gc->id, cfdata->gc->id))) - { - ok = 1; - break; - } - } - if (!ok) return 1; - for (l = cf_gc->clients; l; l = l->next) - { - cf_gcc = l->data; - if (!cf_gcc->name) continue; - if (!strcmp(cf_gcc->name, cfdata->cname)) - { - if (!cfdata->enabled) - { - /* remove from list */ - cf_gc->clients = evas_list_remove_list(cf_gc->clients, l); - if (cf_gcc->name) evas_stringshare_del(cf_gcc->name); - if (cf_gcc->id) evas_stringshare_del(cf_gcc->id); - if (cf_gcc->style) evas_stringshare_del(cf_gcc->style); - free(cf_gcc); - goto savedone; - } - return 1; /* Apply was OK */ - } - } - snprintf(buf, sizeof(buf), "default"); - for (i = 0; ; i++) - { - ok = 1; - for (l = e_config->gadcons; l; l = l->next) - { - cf_gc2 = l->data; - for (l2 = cf_gc2->clients; l2; l2 = l2->next) - { - cf_gcc2 = l2->data; - if ((!cf_gcc2->name) || (!cf_gcc2->id)) continue; - if ((!strcmp(cf_gcc2->name, cfdata->cname)) && (!strcmp(cf_gcc2->id, buf))) - { - ok = 0; - goto done; - } - } - } - if (ok) break; - done: - snprintf(buf, sizeof(buf), "other-%i", i); - } - cf_gcc = E_NEW(E_Config_Gadcon_Client, 1); - cf_gcc->name = evas_stringshare_add(cfdata->cname); - cf_gcc->id = evas_stringshare_add(buf); - cf_gcc->geom.res = 800; - cf_gcc->geom.size = 80; - cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size; - cf_gcc->autoscroll = 0; - cf_gcc->resizable = 0; - cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc); - savedone: - e_gadcon_unpopulate(cfdata->gc); - e_gadcon_populate(cfdata->gc); - e_config_save_queue(); - return 1; /* Apply was OK */ -} -static void -_cb_select(void *data) -{ - E_Config_Dialog_Data *cfdata; - Evas_List *l; - E_Config_Gadcon *cf_gc; - E_Config_Gadcon_Client *cf_gcc; - int ok = 0, enabled = 0; - - cfdata = data; - e_widget_disabled_set(cfdata->o_enabled, 0); - e_widget_disabled_set(cfdata->o_disabled, 0); - for (l = e_config->gadcons; l; l = l->next) - { - cf_gc = l->data; - if ((!strcmp(cf_gc->name, cfdata->gc->name)) && - (!strcmp(cf_gc->id, cfdata->gc->id))) - { - ok = 1; - break; - } - } - if (!ok) return; - for (l = cf_gc->clients; l; l = l->next) - { - cf_gcc = l->data; - if (!cf_gcc->name) continue; - if (!strcmp(cf_gcc->name, cfdata->cname)) - { - enabled = 1; - break; - } - } - e_widget_radio_toggle_set(cfdata->o_enabled, enabled); - e_widget_radio_toggle_set(cfdata->o_disabled, 1 - enabled); -} - -static Evas_Object * -_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) -{ - /* generate the core widget layout for a basic dialog */ - Evas_Object *o, *o2, *of, *ob, *oi, *oj; - E_Radio_Group *rg; - Evas_Coord wmw, wmh; - Evas_List *styles, *l; - int sel, n; - - /* FIXME: this is just raw config now - it needs UI improvments */ - o = e_widget_list_add(evas, 0, 1); - - of = e_widget_framelist_add(evas, _("Available Items"), 0); - - oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname)); - - for (l = e_gadcon_provider_list(); l; l = l->next) - { - E_Gadcon_Client_Class *cc; - char *label; - Evas_Object *icon; - - cc = l->data; - icon = NULL; - label = NULL; - if (cc->func.label) label = cc->func.label(); - if (!label) label = cc->name; - if (cc->func.icon) icon = cc->func.icon(evas); - e_widget_ilist_append(oi, icon, label, _cb_select, cfdata, cc->name); - } - - e_widget_ilist_go(oi); - - e_widget_min_size_get(oi, &wmw, &wmh); - if (wmw < 200) wmw = 200; - e_widget_min_size_set(oi, wmw, 250); - - e_widget_framelist_object_append(of, oi); - - e_widget_list_object_append(o, of, 1, 1, 0.5); - - of = e_widget_framelist_add(evas, _("Status"), 0); - - rg = e_widget_radio_group_new(&(cfdata->enabled)); - ob = e_widget_radio_add(evas, _("Enabled"), 1, rg); - e_widget_disabled_set(ob, 1); - e_widget_framelist_object_append(of, ob); - cfdata->o_enabled = ob; - ob = e_widget_radio_add(evas, _("Disabled"), 0, rg); - e_widget_disabled_set(ob, 1); - e_widget_framelist_object_append(of, ob); - cfdata->o_disabled = ob; - - e_widget_list_object_append(o, of, 0, 0, 0.0); - - return o; -} -#endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_int_menus.c,v retrieving revision 1.136 retrieving revision 1.137 diff -u -3 -r1.136 -r1.137 --- e_int_menus.c 13 May 2006 14:57:20 -0000 1.136 +++ e_int_menus.c 1 Jun 2006 06:44:35 -0000 1.137 @@ -11,9 +11,7 @@ E_Menu *apps; E_Menu *desktops; E_Menu *clients; -// E_Menu *modules; E_Menu *gadgets; -// E_Menu *themes; E_Menu *config; E_Menu *lost_clients; }; @@ -46,12 +44,10 @@ static void _e_int_menus_desktops_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m); static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m); -static void _e_int_menus_themes_edit_mode_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_themes_about (void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m); -static void _e_int_menus_lost_clients_free_hook (void *obj); -static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m); +static void _e_int_menus_lost_clients_free_hook(void *obj); +static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_augmentation_add (E_Menu *m, Evas_List *augmentation); static void _e_int_menus_augmentation_del (E_Menu *m, Evas_List *augmentation); @@ -90,20 +86,6 @@ mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); -/* Modules menu MUST go. it's inconsistsent with the dialog - it displays only - * loaded modules, dialog displays everything so u can load and unload etc. - * it's BAD to have 2 UI's and each be inconsistent with the other. use the - * dialog. this code will go soon. - */ - /* - subm = e_module_menu_new(); - dat->modules = subm; - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Modules")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/modules"); - e_menu_item_submenu_set(mi, subm); - */ - subm = e_int_menus_desktops_new(); dat->desktops = subm; mi = e_menu_item_new(m); @@ -132,18 +114,6 @@ e_util_menu_item_edje_icon_set(mi, "enlightenment/gadgets"); e_menu_item_submenu_set(mi, subm); -/* We have a config dialog for this - this menu was a hack nayway to start - * with - */ -/* - subm = e_int_menus_themes_new(); - dat->themes = subm; - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Themes")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/themes"); - e_menu_item_submenu_set(mi, subm); - */ - mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); @@ -253,18 +223,6 @@ return m; } -/* -EAPI E_Menu * -e_int_menus_themes_new(void) -{ - E_Menu *m; - - m = e_menu_new(); - e_menu_pre_activate_callback_set(m, _e_int_menus_themes_pre_cb, NULL); - return m; -} -*/ - EAPI E_Menu * e_int_menus_lost_clients_new(void) { @@ -355,11 +313,9 @@ if (dat) { e_object_del(E_OBJECT(dat->apps)); -// e_object_del(E_OBJECT(dat->modules)); e_object_del(E_OBJECT(dat->desktops)); e_object_del(E_OBJECT(dat->clients)); e_object_del(E_OBJECT(dat->gadgets)); -// e_object_del(E_OBJECT(dat->themes)); e_object_del(E_OBJECT(dat->config)); e_object_del(E_OBJECT(dat->lost_clients)); free(dat); @@ -831,135 +787,6 @@ e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL); } } - -/* FIXME: - * - * Remove this later, keep for fast theme switching now. - */ -/* -static void -_e_int_menus_themes_pre_cb(void *data, E_Menu *m) -{ - E_Menu_Item *mi; - E_Menu *root; - - e_menu_pre_activate_callback_set(m, NULL, NULL); - root = e_menu_root_get(m); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("About This Theme")); - e_util_menu_item_edje_icon_set(mi, "enlightenment/theme"); - e_menu_item_callback_set(mi, _e_int_menus_themes_about, NULL); - - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - if ((root) && (root->zone)) - { - char buf[4096]; - char *homedir; - - homedir = e_user_homedir_get(); - if (homedir) - { - snprintf(buf, sizeof(buf), "%s/.e/e/themes", homedir); - free(homedir); - } - - if (ecore_file_is_dir(buf)) - { - Ecore_List *themes; - - themes = ecore_file_ls(buf); - if (themes) - { - char *theme, *deftheme = NULL; - char fulltheme[PATH_MAX]; - Evas_Object *o; - Ecore_Evas *eebuf; - Evas *evasbuf; - Evas_List *l; - - for (l = e_config->themes; l; l = l->next) - { - E_Config_Theme *et; - - et = l->data; - if (!strcmp(et->category, "theme")) deftheme = et->file; - } - - mi = e_menu_item_new(m); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (((deftheme) && (!strcmp("default", deftheme))) || - (!deftheme)) - e_menu_item_toggle_set(mi, 1); - e_menu_item_label_set(mi, "default"); - e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL); - - eebuf = ecore_evas_buffer_new(1, 1); - evasbuf = ecore_evas_get(eebuf); - o = edje_object_add(evasbuf); - - while ((theme = ecore_list_next(themes))) - { - snprintf(fulltheme, sizeof(fulltheme), "%s/%s", buf, theme); - if (ecore_file_is_dir(fulltheme)) continue; - - if(edje_object_file_set(o, fulltheme, "widgets/border/default/border")) - { - mi = e_menu_item_new(m); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (deftheme) - { - if (!strcmp(theme, deftheme)) - e_menu_item_toggle_set(mi, 1); - } - e_menu_item_label_set(mi, theme); - e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL); - } - } - - evas_object_del(o); - ecore_evas_free(eebuf); - ecore_list_destroy(themes); - } - } - } -} - -static void -_e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Config_Theme *et; - Evas_List *l; - E_Action *a; - - for (l = e_config->themes; l; l = l->next) - { - et = l->data; - if (!strcmp(et->category, "theme")) - { - e_config->themes = evas_list_remove_list(e_config->themes, l); - evas_stringshare_del(et->category); - evas_stringshare_del(et->file); - E_FREE(et); - break; - } - } - - et = E_NEW(E_Config_Theme, 1); - et->category = evas_stringshare_add("theme"); - et->file = evas_stringshare_add(mi->label); - e_config->themes = evas_list_append(e_config->themes, et); - - e_config_save_queue(); - - a = e_action_find("restart"); - if ((a) && (a->func.go)) a->func.go(NULL, NULL); -} -*/ static void _e_int_menus_lost_clients_pre_cb(void *data, E_Menu *m) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_module.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -3 -r1.55 -r1.56 --- e_module.c 2 Mar 2006 12:03:48 -0000 1.55 +++ e_module.c 1 Jun 2006 06:44:35 -0000 1.56 @@ -130,16 +130,19 @@ m->func.init = dlsym(m->handle, "e_modapi_init"); m->func.shutdown = dlsym(m->handle, "e_modapi_shutdown"); m->func.save = dlsym(m->handle, "e_modapi_save"); - m->func.info = dlsym(m->handle, "e_modapi_info"); m->func.about = dlsym(m->handle, "e_modapi_about"); m->func.config = dlsym(m->handle, "e_modapi_config"); if ((!m->func.init) || (!m->func.shutdown) || (!m->func.save) || - (!m->func.info) || (!m->func.about) || - (!m->api) + (!m->api) || + + // this is to more forcibly catch old/bad modules. will go - eventually, + // but for now is a good check to have + (dlsym(m->handle, "e_modapi_info")) + ) { snprintf(body, sizeof(body), _("There was an error loading module named: %s<br>" @@ -153,7 +156,6 @@ m->func.init = NULL; m->func.shutdown = NULL; m->func.save = NULL; - m->func.info = NULL; m->func.about = NULL; m->func.config = NULL; @@ -176,7 +178,6 @@ m->func.init = NULL; m->func.shutdown = NULL; m->func.save = NULL; - m->func.info = NULL; m->func.about = NULL; m->func.config = NULL; dlclose(m->handle); @@ -205,8 +206,6 @@ } } } - if (m->func.info) - m->func.info(m); for (l = e_config->modules; l; l = l->next) { E_Config_Module *em; @@ -356,53 +355,6 @@ return _e_modules; } -EAPI E_Menu * -e_module_menu_new(void) -{ - E_Menu *m, *subm; - E_Menu_Item *mi; - Evas_List *l; - Module_Menu_Data *dat; - int mod_count = 0; - - dat = calloc(1, sizeof(Module_Menu_Data)); - m = e_menu_new(); - e_object_data_set(E_OBJECT(m), dat); - e_object_free_attach_func_set(E_OBJECT(m), _e_module_menu_free); - for (l = _e_modules; l; l = l->next) - { - E_Module *mod; - - mod = l->data; - mi = e_menu_item_new(m); - if ((mod->api) && (mod->api->name)) - e_menu_item_label_set(mi, mod->api->name); - else e_menu_item_label_set(mi, mod->name); - if (mod->edje_icon_file) - { - if (mod->edje_icon_key) - e_menu_item_icon_edje_set(mi, mod->edje_icon_file, mod->edje_icon_key); - else - e_menu_item_icon_edje_set(mi, mod->edje_icon_file, "icon"); - } - else if (mod->icon_file) - e_menu_item_icon_file_set(mi, mod->icon_file); - subm = _e_module_control_menu_new(mod); - if (subm) - { - e_menu_item_submenu_set(mi, subm); - dat->submenus = evas_list_append(dat->submenus, subm); - } - ++mod_count; - } - if (mod_count == 0) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("(No Loaded Modules)")); - } - return m; -} - EAPI void e_module_dialog_show(const char *title, const char *body) { @@ -455,9 +407,6 @@ if (m->dir) evas_stringshare_del(m->dir); if (m->handle) dlclose(m->handle); _e_modules = evas_list_remove(_e_modules, m); - if (m->icon_file) free(m->icon_file); - if (m->edje_icon_file) free(m->edje_icon_file); - if (m->edje_icon_key) free(m->edje_icon_key); free(m); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_module.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_module.h 2 Mar 2006 12:03:48 -0000 1.11 +++ e_module.h 1 Jun 2006 06:44:35 -0000 1.12 @@ -3,7 +3,7 @@ */ #ifdef E_TYPEDEFS -#define E_MODULE_API_VERSION 2 +#define E_MODULE_API_VERSION 3 typedef struct _E_Module E_Module; typedef struct _E_Module_Api E_Module_Api; @@ -28,7 +28,6 @@ void * (*init) (E_Module *m); int (*shutdown) (E_Module *m); int (*save) (E_Module *m); - int (*info) (E_Module *m); int (*about) (E_Module *m); int (*config) (E_Module *m); } func; @@ -38,14 +37,6 @@ /* the module is allowed to modify these */ void *data; - E_Menu *config_menu; - - /* modify these but only set them up when the info func is called */ - /* e_module will free them when the module is freed. */ - /* note you will need to malloc (strdup) these fields due to the free */ - char *icon_file; - char *edje_icon_file; - char *edje_icon_key; }; struct _E_Module_Api @@ -66,7 +57,6 @@ EAPI int e_module_save_all(void); EAPI E_Module *e_module_find(const char *name); EAPI Evas_List *e_module_list(void); -EAPI E_Menu *e_module_menu_new(void); EAPI void e_module_dialog_show(const char *title, const char *body); #endif =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_object.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e_object.c 10 Jan 2006 04:23:43 -0000 1.17 +++ e_object.c 1 Jun 2006 06:44:35 -0000 1.18 @@ -3,17 +3,6 @@ */ #include "e.h" -/* TODO List: - * - * * fix a lot of parts of e17's code to use e_object_del NOT e_object_unref. - * there is a subtle difference. unref means u had a reference and you stop - * referencing the object - thats ALL. if you created it and now literally - * want to destroy it - del is the way to go. there is a separate handler for - * this so on del it can go and clean up objects that may reference this one - * etc. - * - */ - /* yes - i know. glibc specific... but i like being able to do my own */ /* backtraces! NB: you need CFLAGS="-rdynamic -g" LDFLAGS="-rdynamic -g" */ #ifdef OBJECT_PARANOIA_CHECK =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_object.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- e_object.h 27 Dec 2005 17:16:57 -0000 1.18 +++ e_object.h 1 Jun 2006 06:44:35 -0000 1.19 @@ -6,14 +6,11 @@ /* Object safety/debugging checks */ /* */ /* OBJECT_PARANOIA_CHECK is paranoid and checkes pointers and traps segv's */ -/* incase they dont work... very paranoid and slow. NB for backtrace to */ +/* in case they dont work... very paranoid and slow. NB for backtrace to */ /* work you need gcc, glibc and you need to compile with compile options of */ /* -g -rdynamic and link with them too */ /* OBJECT_CHECK is a simple null pointer and magic number check with no */ /* debug output */ - -/* #define OBJECT_PARANOIA_CHECK */ -/* #define OBJECT_CHECK */ #ifndef __GLIBC__ # ifdef OBJECT_PARANOIA_CHECK _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs