add menu augmentation for syscon to display the same menu that the syscon gadget displays

SVN revision: 75195
This commit is contained in:
Mike Blumenkrantz 2012-08-13 08:55:03 +00:00
parent 0a278dd435
commit a1ac78a4af
3 changed files with 90 additions and 83 deletions

View File

@ -31,8 +31,8 @@ e_modapi_init(E_Module *m)
e_action_predef_name_set(_("System"), _("System Control"), "syscon",
NULL, NULL, 0);
}
// maug = e_int_menus_menu_augmentation_add_sorted
// ("main/8", _("System"), _e_mod_menu_add, NULL, NULL, NULL);
maug = e_int_menus_menu_augmentation_add_sorted
("main/8", _("System"), _e_mod_menu_add, NULL, NULL, NULL);
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "preferences-advanced");
e_configure_registry_item_add("advanced/syscon", 10, _("Syscon"), NULL, "preferences-syscon", e_int_config_syscon);
e_syscon_gadget_init(m);
@ -121,8 +121,7 @@ _e_mod_syscon_cb(void *data __UNUSED__, E_Menu *m, E_Menu_Item *mi __UNUSED__)
static void
_e_mod_menu_generate(void *data __UNUSED__, E_Menu *m)
{
E_Menu_Item *mi;
mi = e_menu_item_new(m);
e_syscon_menu_fill(m);
}
/* menu item add hook */

View File

@ -15,6 +15,7 @@ EAPI int e_modapi_save (E_Module *m);
void e_syscon_gadget_init(E_Module *m);
void e_syscon_gadget_shutdown(void);
void e_syscon_menu_fill(E_Menu *m);
/**
* @addtogroup Optional_Control

View File

@ -1,4 +1,5 @@
#include "e.h"
#include "e_mod_main.h"
/* local structures */
typedef struct _Instance Instance;
@ -203,87 +204,9 @@ _cb_menu_sel(void *data, E_Menu *m, E_Menu_Item *mi __UNUSED__)
static void
_create_menu(Instance *inst)
{
E_Config_Syscon_Action *sca;
E_Menu_Item *it;
if (!inst) return;
inst->menu = e_menu_new();
if ((sca = _find_action("desk_lock")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
}
if ((sca = _find_action("logout")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_LOGOUT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
it = e_menu_item_new(inst->menu);
e_menu_item_separator_set(it, EINA_TRUE);
if ((sca = _find_action("suspend")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_SUSPEND))
e_menu_item_disabled_set(it, EINA_TRUE);
}
if ((sca = _find_action("hibernate")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_HIBERNATE))
e_menu_item_disabled_set(it, EINA_TRUE);
}
it = e_menu_item_new(inst->menu);
e_menu_item_separator_set(it, EINA_TRUE);
if ((sca = _find_action("reboot")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_REBOOT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
if ((sca = _find_action("halt")))
{
it = e_menu_item_new(inst->menu);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_HALT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
e_syscon_menu_fill(inst->menu);
}
static E_Config_Syscon_Action *
@ -319,3 +242,87 @@ e_syscon_gadget_shutdown(void)
mod = NULL;
}
void
e_syscon_menu_fill(E_Menu *m)
{
E_Config_Syscon_Action *sca;
E_Menu_Item *it;
if (!m) return;
if ((sca = _find_action("desk_lock")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
}
if ((sca = _find_action("logout")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_LOGOUT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
it = e_menu_item_new(m);
e_menu_item_separator_set(it, EINA_TRUE);
if ((sca = _find_action("suspend")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_SUSPEND))
e_menu_item_disabled_set(it, EINA_TRUE);
}
if ((sca = _find_action("hibernate")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_HIBERNATE))
e_menu_item_disabled_set(it, EINA_TRUE);
}
it = e_menu_item_new(m);
e_menu_item_separator_set(it, EINA_TRUE);
if ((sca = _find_action("reboot")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_REBOOT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
if ((sca = _find_action("halt")))
{
it = e_menu_item_new(m);
e_menu_item_label_set(it, _(e_action_predef_label_get(sca->action,
sca->params)));
if (sca->icon)
e_util_menu_item_theme_icon_set(it, sca->icon);
e_menu_item_callback_set(it, _cb_menu_sel, sca);
if (!e_sys_action_possible_get(E_SYS_HALT))
e_menu_item_disabled_set(it, EINA_TRUE);
}
}