Enlightenment CVS committal Author : devilhorns Project : e17 Module : proto
Dir : e17/proto/emenu Modified Files: e_mod_main.h e_mod_main.c Log Message: Make the module actually do something. Adds a menu entry to the E Configuration menu for now. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/emenu/e_mod_main.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- e_mod_main.h 27 Jan 2006 00:24:25 -0000 1.2 +++ e_mod_main.h 27 Jan 2006 01:29:56 -0000 1.3 @@ -10,7 +10,7 @@ typedef struct _EMenu EMenu; struct _EMenu { - E_Menu *config_menu; + E_Int_Menu_Augmentation *augment; E_Config_DD *conf_edd; Config *conf; @@ -23,6 +23,8 @@ EAPI int e_modapi_save (E_Module *m); EAPI int e_modapi_info (E_Module *m); EAPI int e_modapi_about (E_Module *m); + +/* Disabled for now */ EAPI int e_modapi_config (E_Module *m); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/emenu/e_mod_main.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- e_mod_main.c 27 Jan 2006 00:24:25 -0000 1.1 +++ e_mod_main.c 27 Jan 2006 01:29:56 -0000 1.2 @@ -2,7 +2,12 @@ #include "config.h" #include "e_mod_main.h" -static EMenu *_emenu_init (E_Module *m); +static EMenu *_emenu_init (E_Module *m); +static void _emenu_shutdown (EMenu *em); +static void _emenu_config_menu_new (EMenu *em); +static void _emenu_menu_add (void *data, E_Menu *m); +static void _emenu_menu_del (void *data, E_Menu *m); +static void _emenu_menu_cb_generate (void *data, E_Menu *m, E_Menu_Item *mi); EAPI E_Module_Api e_modapi = { @@ -15,10 +20,7 @@ { EMenu *em; - /* Call the module init here - em = _emenu_init(m); */ - - m->config_menu = NULL; + em = _emenu_init(m); return em; } @@ -29,15 +31,8 @@ em = m->data; if (!m) return 0; - - if (m->config_menu) - { - e_menu_deactivate(m->config_menu); - e_object_del(E_OBJECT(m->config_menu)); - m->config_menu = NULL; - } - - /* Call the module shutdown here */ + + _emenu_shutdown(em); return 1; } @@ -67,8 +62,84 @@ return 1; } +/* Disabled for now EAPI int e_modapi_config(E_Module *m) { return 0; } +*/ + +static EMenu * +_emenu_init(E_Module *m) +{ + EMenu *em; + + em = E_NEW(EMenu, 1); + if (!em) return NULL; + + em->conf_edd = E_CONFIG_DD_NEW("EMenu_Config", Config); + #undef T + #undef D + #define T Config + #define D em->conf_edd + + em->conf = e_config_domain_load("module.emenu", em->conf_edd); + if (!em->conf) + { + em->conf = E_NEW(Config, 1); + } + else + { + /* Handle Whatever config loading we need */ + } + + em->augment = e_int_menus_menu_augmentation_add("config", _emenu_menu_add, em, _emenu_menu_del, em); + + return em; +} + +static void +_emenu_shutdown(EMenu *em) +{ + E_CONFIG_DD_FREE(em->conf_edd); + e_int_menus_menu_augmentation_del("config", em->augment); + free(em->conf); + free(em); +} + +static void +_emenu_menu_add(void *data, E_Menu *m) +{ + EMenu *em; + E_Menu_Item *mi; + + em = data; + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Generate Menus")); + e_menu_item_callback_set(mi, _emenu_menu_cb_generate, em); +} + +static void +_emenu_menu_del(void *data, E_Menu *m) +{ + EMenu *em; + + em = data; + if (em->augment) + { + e_object_del(E_OBJECT(em->augment)); + em->augment = NULL; + } +} + +static void +_emenu_menu_cb_generate(void *data, E_Menu *m, E_Menu_Item *mi) +{ + EMenu *em; + + em = data; + e_module_dialog_show(_("Enlightenment Menu Module"), + _("Generate Menus.")); +} ------------------------------------------------------- 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