forked from enlightenment/efl
radio buttons: GET IN MAH MENUS!!!!
added elm_menu_item_add_object which allows a user to directly add an arbitrary evas_object to be swallowed as a menu item, added radio item as test SVN revision: 61717
This commit is contained in:
parent
6a1768ead2
commit
2139708729
|
@ -70,11 +70,17 @@ _populate_2(Elm_Menu_Item *item)
|
|||
}
|
||||
|
||||
static void
|
||||
_populate_1(Elm_Menu_Item *item)
|
||||
_populate_1(Evas_Object *win, Elm_Menu_Item *item)
|
||||
{
|
||||
Elm_Menu_Item *item2;
|
||||
Elm_Menu_Item *item2, *item3;
|
||||
Evas_Object *radio;
|
||||
|
||||
radio = elm_radio_add(win);
|
||||
elm_radio_state_value_set(radio, 0);
|
||||
elm_radio_value_set(radio, 0);
|
||||
elm_object_text_set(radio, "radio in menu");
|
||||
item2 = elm_menu_item_add(menu, item, "object-rotate-left", "menu 1", NULL, NULL);
|
||||
item3 = elm_menu_item_add_object(menu, item, radio, NULL, NULL);
|
||||
|
||||
_populate_2(item2);
|
||||
}
|
||||
|
@ -102,7 +108,7 @@ test_menu(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info _
|
|||
elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL);
|
||||
|
||||
item = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item", NULL, NULL);
|
||||
_populate_1(item);
|
||||
_populate_1(win, item);
|
||||
|
||||
elm_menu_item_add(menu, item, "window-new", "sub menu", NULL, NULL);
|
||||
|
||||
|
|
|
@ -9230,6 +9230,7 @@ extern "C" {
|
|||
EAPI const Eina_List *elm_menu_items_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
|
||||
EAPI Evas_Object *elm_menu_item_object_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1);
|
||||
EAPI Elm_Menu_Item *elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
|
||||
EAPI Elm_Menu_Item *elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
|
||||
EAPI void elm_menu_item_label_set(Elm_Menu_Item *item, const char *label) EINA_ARG_NONNULL(1);
|
||||
EAPI const char *elm_menu_item_label_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1);
|
||||
EAPI void elm_menu_item_icon_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2);
|
||||
|
|
|
@ -33,7 +33,8 @@ struct _Elm_Menu_Item
|
|||
|
||||
Eina_Bool separator : 1;
|
||||
Eina_Bool disabled : 1;
|
||||
Eina_Bool selected: 1;
|
||||
Eina_Bool selected : 1;
|
||||
Eina_Bool object_item : 1;
|
||||
};
|
||||
|
||||
struct _Widget_Data
|
||||
|
@ -600,6 +601,7 @@ elm_menu_close(Evas_Object *obj)
|
|||
* Get the Evas_Object of an Elm_Menu_Item
|
||||
*
|
||||
* @param item The menu item object.
|
||||
* @return The edje object containing the swallowed content
|
||||
*
|
||||
* @ingroup Menu
|
||||
*/
|
||||
|
@ -644,6 +646,7 @@ elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Menu_Item *pare
|
|||
* Add an item at the end
|
||||
*
|
||||
* @param obj The menu object.
|
||||
* @param parent The parent menu item (optional)
|
||||
* @param icon A icon display on the item. The icon will be destryed by the menu.
|
||||
* @param label The label of the item.
|
||||
* @param func Function called when the user select the item.
|
||||
|
@ -697,6 +700,57 @@ elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, con
|
|||
return subitem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an object swallowed in an item at the end
|
||||
*
|
||||
* @param obj The menu object.
|
||||
* @param parent The parent menu item (optional)
|
||||
* @param subobj The object to swallow
|
||||
* @param func Function called when the user select the item.
|
||||
* @param data Data sent by the callback.
|
||||
* @return Returns the new item.
|
||||
*
|
||||
* @ingroup Menu
|
||||
*/
|
||||
EAPI Elm_Menu_Item *
|
||||
elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data)
|
||||
{
|
||||
Elm_Menu_Item *subitem;
|
||||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return NULL;
|
||||
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
|
||||
if (!subitem) return NULL;
|
||||
|
||||
subitem->base.data = data;
|
||||
subitem->func = func;
|
||||
subitem->parent = parent;
|
||||
subitem->object_item = EINA_TRUE;
|
||||
subitem->icon = subobj;
|
||||
|
||||
_item_obj_create(subitem);
|
||||
|
||||
elm_widget_sub_object_add(subitem->base.widget, subitem->icon);
|
||||
edje_object_part_swallow(subitem->base.view, "elm.swallow.content", subobj);
|
||||
_sizing_eval(subitem->base.widget);
|
||||
|
||||
if (parent)
|
||||
{
|
||||
if (!parent->submenu.bx) _item_submenu_obj_create(parent);
|
||||
elm_box_pack_end(parent->submenu.bx, subitem->base.view);
|
||||
parent->submenu.items = eina_list_append(parent->submenu.items, subitem);
|
||||
}
|
||||
else
|
||||
{
|
||||
elm_box_pack_end(wd->bx, subitem->base.view);
|
||||
wd->items = eina_list_append(wd->items, subitem);
|
||||
}
|
||||
|
||||
_sizing_eval(obj);
|
||||
return subitem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the label of a menu item
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue