* Add a new menu api call :

EAPI void
e_menu_item_disabled_set(E_Menu_Item *mi, int disable)

Setting the menu item 'disabled' will gray it out and will make it unselectable.



SVN revision: 39802
This commit is contained in:
Davide Andreoli 2009-03-30 13:59:56 +00:00
parent c6b5f985fe
commit f71eea73b2
3 changed files with 81 additions and 5 deletions

View File

@ -5944,11 +5944,21 @@ collections { /* begin the collection of edje groups that are in this file */
}
/* this group holds a menu icon. here we just use it to add padding around
* the icon */
* the icon. And to gray-out when disabled */
group { name: "e/widgets/menu/default/icon";
parts {
part { name: "clip";
type: RECT;
description { state: "default" 0.0;
color: 255 255 255 255;
}
description { state: "disabled" 0.0;
color: 255 255 255 128;
}
}
part { name: "e.swallow.content"; /* icon is swallowed here */
type: SWALLOW;
clip_to: "clip";
description {
state: "default" 0.0;
rel1 {
@ -5962,6 +5972,20 @@ collections { /* begin the collection of edje groups that are in this file */
}
}
}
programs {
program { name: "enable"; /* enable */
signal: "e,state,enable";
source: "e";
action: STATE_SET "default" 0.0;
target: "clip";
}
program { name: "disable"; /* disable */
signal: "e,state,disable";
source: "e";
action: STATE_SET "disabled" 0.0;
target: "clip";
}
}
}
/* this is the actual text label for the menu item */
@ -5972,8 +5996,7 @@ collections { /* begin the collection of edje groups that are in this file */
effect: SOFT_SHADOW;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
description { state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 1 -1;
@ -5999,6 +6022,11 @@ collections { /* begin the collection of edje groups that are in this file */
color3: 0 0 0 64;
color_class: "menu_item";
}
description { state: "disabled" 0.0;
inherit: "default" 0.0;
color: 110 110 110 255;
color3: 0 0 0 0;
}
}
}
programs {
@ -6016,6 +6044,20 @@ collections { /* begin the collection of edje groups that are in this file */
transition: LINEAR 0.3;
target: "e.text.label";
}
program { name: "enable"; /* enable */
signal: "e,state,enable";
source: "e";
action: STATE_SET "default" 0.0;
transition: LINEAR 0.3;
target: "e.text.label";
}
program { name: "disable"; /* disable */
signal: "e,state,disable";
source: "e";
action: STATE_SET "disabled" 0.0;
//transition: LINEAR 0.3;
target: "e.text.label";
}
}
}

View File

@ -818,6 +818,7 @@ e_menu_item_active_set(E_Menu_Item *mi, int active)
{
E_Menu_Item *pmi;
if (mi->disable) return;
pmi = _e_menu_item_active_get();
if (mi == pmi) return;
if (pmi) e_menu_item_active_set(pmi, 0);
@ -859,6 +860,36 @@ e_menu_item_active_set(E_Menu_Item *mi, int active)
}
}
EAPI void
e_menu_item_disabled_set(E_Menu_Item *mi, int disable)
{
E_OBJECT_CHECK(mi);
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
if (mi->separator) return;
if ((disable))
{
if (mi->active) e_menu_item_active_set(mi, 0);
mi->disable = 1;
if (mi->icon_bg_object)
edje_object_signal_emit(mi->icon_bg_object, "e,state,disable", "e");
if (mi->label_object)
edje_object_signal_emit(mi->label_object, "e,state,disable", "e");
if (mi->toggle_object)
edje_object_signal_emit(mi->toggle_object, "e,state,disable", "e");
}
else
{
mi->disable = 0;
if (mi->icon_bg_object)
edje_object_signal_emit(mi->icon_bg_object, "e,state,enable", "e");
if (mi->label_object)
edje_object_signal_emit(mi->label_object, "e,state,enable", "e");
if (mi->toggle_object)
edje_object_signal_emit(mi->toggle_object, "e,state,enable", "e");
}
}
EAPI void
e_menu_idler_before(void)
{
@ -1354,6 +1385,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
}
if (mi->active) e_menu_item_active_set(mi, 1);
if (mi->toggle) e_menu_item_toggle_set(mi, 1);
if (mi->disable) e_menu_item_disabled_set(mi, 1);
}
static void
@ -1922,7 +1954,7 @@ _e_menu_item_activate_next(void)
else
ll = ll->next;
mi = ll->data;
while (mi->separator)
while (mi->separator || mi->disable)
{
if (!(ll->next))
ll = mi->menu->items;
@ -1956,7 +1988,7 @@ _e_menu_item_activate_previous(void)
else
ll = ll->prev;
mi = ll->data;
while (mi->separator)
while (mi->separator || mi->disable)
{
if (!(ll->prev))
ll = eina_list_last(ll);

View File

@ -146,6 +146,7 @@ struct _E_Menu_Item
unsigned char toggle : 1;
unsigned char changed : 1;
unsigned char active : 1;
unsigned char disable : 1;
};
struct _E_Menu_Category_Callback
@ -201,6 +202,7 @@ EAPI void e_menu_item_submenu_pre_callback_set(E_Menu_Item *mi, void (*
EAPI void e_menu_item_submenu_post_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
EAPI void e_menu_item_drag_callback_set(E_Menu_Item *mi, void (*func) (void *data, E_Menu *m, E_Menu_Item *mi), void *data);
EAPI void e_menu_item_active_set(E_Menu_Item *mi, int active);
EAPI void e_menu_item_disabled_set(E_Menu_Item *mi, int disable);
EAPI void e_menu_idler_before(void);