Places: create/destroy the e menu augmentation on config apply (no more e restart required to apply the config)

SVN revision: 74457
This commit is contained in:
Davide Andreoli 2012-07-26 21:35:12 +00:00
parent 3566436355
commit 1074da1961
3 changed files with 24 additions and 8 deletions

View File

@ -196,5 +196,6 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
e_config_save_queue();
places_update_all_gadgets();
places_menu_augmentation();
return 1;
}

View File

@ -26,6 +26,7 @@ static void _places_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi);
/* Local Variables */
static E_Config_DD *conf_edd = NULL;
static E_Config_DD *conf_item_edd = NULL;
static E_Int_Menu_Augmentation *maug = NULL;
Eina_List *instances = NULL;
Config *places_conf = NULL;
extern Eina_List *volumes;
@ -137,18 +138,11 @@ e_modapi_init(E_Module *m)
e_gadcon_provider_register(&_gc_class);
places_init();
if (places_conf->show_menu)
{
E_Int_Menu_Augmentation *maug;
maug = e_int_menus_menu_augmentation_add("main/1",
places_augmentation,
NULL, NULL, NULL);
}
places_menu_augmentation();
return m;
}
EAPI int
e_modapi_shutdown(E_Module *m)
{
@ -161,6 +155,13 @@ e_modapi_shutdown(E_Module *m)
if (places_conf->cfd) e_object_del(E_OBJECT(places_conf->cfd));
places_conf->cfd = NULL;
/* Remove the main menu item */
if (maug)
{
e_int_menus_menu_augmentation_del("main/1", maug);
maug = NULL;
}
/* Tell E the module is now unloaded. Gets removed from shelves, etc. */
places_conf->module = NULL;
e_gadcon_provider_unregister(&_gc_class);
@ -179,6 +180,19 @@ e_modapi_save(E_Module *m)
return 1;
}
void
places_menu_augmentation(void)
{
if (places_conf->show_menu && (!maug))
maug = e_int_menus_menu_augmentation_add("main/1", places_augmentation,
NULL, NULL, NULL);
else if ((!places_conf->show_menu) && maug)
{
e_int_menus_menu_augmentation_del("main/1", maug);
maug = NULL;
}
}
/* Gadcon Functions */
static E_Gadcon_Client *
_gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)

View File

@ -65,6 +65,7 @@ EAPI int e_modapi_shutdown(E_Module *m);
EAPI int e_modapi_save(E_Module *m);
E_Config_Dialog *e_int_config_places_module(E_Container *con, const char *params);
void places_menu_augmentation(void);
extern Config *places_conf;
extern Eina_List *instances;