elementary/menu - applied elm_object_item common APIs.
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 25 Nov 2011 11:52:35 +0000 (11:52 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 25 Nov 2011 11:52:35 +0000 (11:52 +0000)
@deprecated
elm_menu_item_label_set
elm_menu_item_label_get
elm_menu_item_object_content_set
elm_menu_item_object_content_get
elm_menu_item_disabled_set
elm_menu_item_disabled_get
elm_menu_item_data_set
elm_menu_item_data_get

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@65597 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/test_menu.c
src/examples/menu_example_01.c
src/lib/Elementary.h.in
src/lib/elm_menu.c

index 47c17de..03e965f 100644 (file)
@@ -24,13 +24,13 @@ _populate_4(Elm_Object_Item *menu_it)
    elm_menu_item_separator_add(menu, menu_it);
    menu_it2 = elm_menu_item_add(menu, menu_it, "go-last", "Disabled item", NULL,
                                 NULL);
-   elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it2, EINA_TRUE);
    menu_it2 = elm_menu_item_add(menu, menu_it, "go-next", "Disabled item", NULL,
                                 NULL);
-   elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it2, EINA_TRUE);
    menu_it2 = elm_menu_item_add(menu, menu_it, "go-up", "Disabled item", NULL,
                                 NULL);
-   elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it2, EINA_TRUE);
 }
 
 static void
@@ -44,7 +44,7 @@ _populate_3(Elm_Object_Item *menu_it)
    elm_menu_item_separator_add(menu, menu_it);
    menu_it2 = elm_menu_item_add(menu, menu_it, "media-playback-stop",
                                 "Disabled item", NULL, NULL);
-   elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it2, EINA_TRUE);
 }
 
 static void
@@ -71,7 +71,7 @@ _populate_2(Elm_Object_Item *menu_it)
 
    menu_it3 = elm_menu_item_add(menu, menu_it, "system-run", "Disabled item",
                                 NULL, NULL);
-   elm_menu_item_disabled_set(menu_it3, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it3, EINA_TRUE);
 
    _populate_4(menu_it2);
 }
index 5761797..257eb19 100644 (file)
@@ -59,7 +59,7 @@ elm_main(int argc, char **argv)
    elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
 
    menu_it = elm_menu_item_add(menu, NULL, NULL, "third item", NULL, NULL);
-   elm_menu_item_disabled_set(menu_it, EINA_TRUE);
+   elm_object_item_disabled_set(menu_it, EINA_TRUE);
 
    evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);
    evas_object_show(menu);
index d46106a..55edaef 100644 (file)
@@ -15973,8 +15973,13 @@ extern "C" {
     *
     * Signals that you can add callbacks for are:
     * @li "clicked" - the user clicked the empty space in the menu to dismiss.
-    *             event_info is NULL.
     *
+    * Default contents parts of the menu items that you can use for are:
+    * @li "default" - A main content of the menu item 
+    *
+    * Default text parts of the menu items that you can use for are:
+    * @li "default" - label in the menu item
+    * 
     * @see @ref tutorial_menu
     * @{
     */
@@ -16033,10 +16038,11 @@ extern "C" {
    /**
     * @brief Get the Evas_Object of an Elm_Menu_Item
     *
-    * @param item The menu item object.
+    * @param it The menu item object.
     * @return The edje object containing the swallowed content
     *
     * @warning Don't manipulate this object!
+    *
     */
    EAPI Evas_Object       *elm_menu_item_object_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
@@ -16073,15 +16079,18 @@ extern "C" {
     *
     * @warning Don't use this funcion on items created with
     * elm_menu_item_add_object() or elm_menu_item_separator_add().
+    *
+    * @deprecated Use elm_object_item_text_set() instead
     */
-   EAPI void               elm_menu_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_menu_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the label of a menu item
     *
     * @param it The menu item object.
     * @return The label of @p item
+        * @deprecated Use elm_object_item_text_get() instead
     */
-   EAPI const char        *elm_menu_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI const char        *elm_menu_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the icon of a menu item to the standard icon with name @p icon
     *
@@ -16109,8 +16118,10 @@ extern "C" {
     *
     * Use this function to change the object swallowed by a menu item, deleting
     * any previously swallowed object.
+    *
+    * @deprecated Use elm_object_item_content_set() instead
     */
-   EAPI Eina_Bool          elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Eina_Bool          elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the content object of a menu item
     *
@@ -16121,8 +16132,10 @@ extern "C" {
     * icon object.
     *
     * @see elm_menu_item_object_content_set()
+    *
+    * @deprecated Use elm_object_item_content_get() instead
     */
-   EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the selected state of @p item.
     *
@@ -16144,8 +16157,9 @@ extern "C" {
     *
     * @param it The menu item object.
     * @param disabled The enabled/disabled state of the item
+    * @deprecated Use elm_object_item_disabled_set() instead
     */
-   EAPI void               elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the disabled state of @p item.
     *
@@ -16153,8 +16167,9 @@ extern "C" {
     * @return The enabled/disabled state of the item
     *
     * @see elm_menu_item_disabled_set()
+    * @deprecated Use elm_object_item_disabled_get() instead 
     */
-   EAPI Eina_Bool          elm_menu_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Eina_Bool          elm_menu_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Add a separator item to menu @p obj under @p parent.
     *
@@ -16199,15 +16214,19 @@ extern "C" {
     * @return The data associated with @p item or NULL if none was set.
     *
     * This is the data set with elm_menu_add() or elm_menu_item_data_set().
+        * 
+        * @deprecated Use elm_object_item_data_get() instead
     */
-   EAPI void              *elm_menu_item_data_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void              *elm_menu_item_data_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Sets the data to be associated with menu item @p item.
     *
     * @param it The item
     * @param data The data to be associated with @p item
+        *
+        * @deprecated Use elm_object_item_data_set() instead
     */
-   EAPI void               elm_menu_item_data_set(Elm_Object_Item *it, const void *data) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void               elm_menu_item_data_set(Elm_Object_Item *it, const void *data) EINA_ARG_NONNULL(1);
 
    /**
     * @brief Returns a list of @p item's subitems.
index a1e25c9..fc2e678 100644 (file)
@@ -21,7 +21,6 @@ struct _Elm_Menu_Item
    } submenu;
 
    Eina_Bool separator : 1;
-   Eina_Bool disabled : 1;
    Eina_Bool selected : 1;
    Eina_Bool object_item : 1;
 };
@@ -36,6 +35,7 @@ struct _Widget_Data
 static const char *widtype = NULL;
 static void _del_hook(Evas_Object *obj);
 static void _theme_hook(Evas_Object *obj);
+static void _item_disable_set_hook(Elm_Object_Item *it);
 static void _sizing_eval(Evas_Object *obj);
 static void _submenu_sizing_eval(Elm_Menu_Item *parent);
 static void _item_sizing_eval(Elm_Menu_Item *item);
@@ -117,8 +117,8 @@ _theme_hook(Evas_Object *obj)
                   _elm_theme_object_set
                      (obj, VIEW(item), "menu", "item_with_submenu",
                       elm_widget_style_get(obj));
-                  elm_menu_item_label_set((Elm_Object_Item *) item,
-                                          item->label);
+                  elm_object_item_text_set((Elm_Object_Item *) item,
+                                           item->label);
                   elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
                                                      item->icon_str);
                }
@@ -126,18 +126,12 @@ _theme_hook(Evas_Object *obj)
                {
                   _elm_theme_object_set(obj, VIEW(item), "menu", "item",
                                         elm_widget_style_get(obj));
-                  elm_menu_item_label_set((Elm_Object_Item *) item,
-                                          item->label);
+                  elm_object_item_text_set((Elm_Object_Item *) item,
+                                           item->label);
                   elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
                                                      item->icon_str);
                }
-             if (item->disabled)
-               edje_object_signal_emit
-                  (VIEW(item), "elm,state,disabled", "elm");
-             else
-               edje_object_signal_emit
-                  (VIEW(item), "elm,state,enabled", "elm");
-             edje_object_message_signal_process(VIEW(item));
+             _item_disable_set_hook((Elm_Object_Item *) item);
              edje_object_scale_set(VIEW(item), elm_widget_scale_get(obj) *
                                    _elm_config->scale);
           }
@@ -146,6 +140,88 @@ _theme_hook(Evas_Object *obj)
 }
 
 static void
+_item_text_set_hook(Elm_Object_Item *it,
+                    const char *part,
+                    const char *label)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Menu_Item *item;
+
+   if (part && strcmp(part, "default")) return;
+
+   item = (Elm_Menu_Item *) it;
+
+   eina_stringshare_replace(&item->label, label);
+
+   if (label)
+     edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
+   else
+     edje_object_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
+
+   edje_object_message_signal_process(VIEW(item));
+   edje_object_part_text_set(VIEW(item), "elm.text", label);
+   _sizing_eval(WIDGET(item));
+}
+
+static const char *
+_item_text_get_hook(const Elm_Object_Item *it, const char *part)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   if (part && strcmp(part, "default")) return NULL;
+   return ((Elm_Menu_Item *) it)->label;
+}
+
+static void
+_item_content_set_hook(Elm_Object_Item *it,
+                       const char *part,
+                       Evas_Object *content)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Menu_Item *item;
+
+   if (part && strcmp(part, "default")) return;
+
+   item = (Elm_Menu_Item *) it;
+
+   if (item->content)
+     {
+        elm_widget_sub_object_del(WIDGET(item), item->content);
+        evas_object_del(item->content);
+     }
+
+   item->content = content;
+
+   elm_widget_sub_object_add(WIDGET(item), item->content);
+   edje_object_part_swallow(VIEW(item), "elm.swallow.content", item->content);
+   _sizing_eval(WIDGET(item));
+}
+
+static Evas_Object *
+_item_content_get_hook(const Elm_Object_Item *it, const char *part)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   if (part && strcmp(part, "default")) return NULL;
+   return ((Elm_Menu_Item *) it)->content;
+}
+
+static void
+_item_disable_set_hook(Elm_Object_Item *it)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   Elm_Menu_Item *item = (Elm_Menu_Item *) it;
+
+   if (elm_widget_item_disabled_get(item))
+     {
+        edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
+        if (item->submenu.open) _submenu_hide(item);
+     }
+   else
+     edje_object_signal_emit(VIEW(item), "elm,state,enabled", "elm");
+
+   edje_object_message_signal_process(VIEW(item));
+}
+
+static void
 _sizing_eval(Evas_Object *obj)
 {
    Eina_List *l;
@@ -426,8 +502,8 @@ _item_submenu_obj_create(Elm_Menu_Item *item)
 
    edje_object_mirrored_set(VIEW(item), elm_widget_mirrored_get(WIDGET(item)));
    _elm_theme_object_set(WIDGET(item), VIEW(item), "menu", "item_with_submenu",  elm_widget_style_get(WIDGET(item)));
-   elm_menu_item_label_set((Elm_Object_Item *) item,
-                           item->label);
+   elm_object_item_text_set((Elm_Object_Item *) item,
+                            item->label);
    if (item->icon_str)
      elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
                                         item->icon_str);
@@ -556,7 +632,6 @@ elm_menu_close(Evas_Object *obj)
 EAPI Evas_Object *
 elm_menu_item_object_get(const Elm_Object_Item *it)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
    return VIEW(((Elm_Menu_Item *) it));
 }
 
@@ -576,7 +651,8 @@ _item_clone(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item *item)
                                   item->label,
                                   item->func,
                                   item->base.data);
-   elm_menu_item_disabled_set(new_item, item->disabled);
+   elm_object_item_disabled_set(new_item,
+                                elm_widget_item_disabled_get(item));
 
    EINA_LIST_FOREACH(item->submenu.items, iter, subitem)
      _item_clone(obj, (Elm_Menu_Item *) new_item, subitem);
@@ -633,13 +709,20 @@ elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, c
         evas_object_del(icon_obj);
         return NULL;
      }
+
+   elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
+   elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
+   elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
+   elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
+   elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
+
    subitem->base.data = data;
    subitem->func = func;
    subitem->parent = (Elm_Menu_Item *) parent;
    subitem->content = icon_obj;
 
    _item_obj_create(subitem);
-   elm_menu_item_label_set((Elm_Object_Item *) subitem, label);
+   elm_object_item_text_set((Elm_Object_Item *) subitem, label);
 
    elm_widget_sub_object_add(WIDGET(subitem), subitem->content);
    edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subitem->content);
@@ -662,6 +745,12 @@ elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object
    subitem = elm_widget_item_new(obj, Elm_Menu_Item);
    if (!subitem) return NULL;
 
+   elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
+   elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
+   elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
+   elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
+   elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
+
    subitem->base.data = data;
    subitem->func = func;
    subitem->parent = (Elm_Menu_Item *) parent;
@@ -689,26 +778,13 @@ elm_menu_item_index_get(const Elm_Object_Item *it)
 EAPI void
 elm_menu_item_label_set(Elm_Object_Item *it, const char *label)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Menu_Item *item = (Elm_Menu_Item *) it;
-
-   eina_stringshare_replace(&item->label, label);
-
-   if (label)
-     edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
-   else
-     edje_object_signal_emit(VIEW(item), "elm,state,text,hidden", "elm");
-
-   edje_object_message_signal_process(VIEW(item));
-   edje_object_part_text_set(VIEW(item), "elm.text", label);
-   _sizing_eval(WIDGET(item));
+   _item_text_set_hook(it, NULL, label);
 }
 
 EAPI const char *
 elm_menu_item_label_get(const Elm_Object_Item *it)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   return ((Elm_Menu_Item *) it)->label;
+   return _item_text_get_hook(it, NULL);
 }
 
 EAPI void
@@ -737,26 +813,13 @@ elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon)
 EAPI void
 elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Menu_Item *item = (Elm_Menu_Item *) it;
-
-   if (disabled == item->disabled) return;
-   item->disabled = !!disabled;
-   if (disabled)
-     {
-        edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
-        if (item->submenu.open) _submenu_hide(item);
-     }
-   else
-     edje_object_signal_emit(VIEW(item), "elm,state,enabled", "elm");
-   edje_object_message_signal_process(VIEW(item));
+   elm_object_item_disabled_set(it, disabled);
 }
 
 EAPI Eina_Bool
 elm_menu_item_disabled_get(const Elm_Object_Item *it)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
-   return ((Elm_Menu_Item *) it)->disabled;
+   return elm_object_item_disabled_get(it);
 }
 
 EAPI Elm_Object_Item *
@@ -776,8 +839,14 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
 
    subitem = elm_widget_item_new(obj, Elm_Menu_Item);
    if (!subitem) return NULL;
-   WIDGET(subitem) = obj;
-   subitem->separator = 1;
+
+   elm_widget_item_disable_set_hook_set(subitem, _item_disable_set_hook);
+   elm_widget_item_text_set_hook_set(subitem, _item_text_set_hook);
+   elm_widget_item_text_get_hook_set(subitem, _item_text_get_hook);
+   elm_widget_item_content_set_hook_set(subitem, _item_content_set_hook);
+   elm_widget_item_content_get_hook_set(subitem, _item_content_get_hook);
+
+   subitem->separator = EINA_TRUE;
    _item_separator_obj_create(subitem);
    if (!p_item)
      {
@@ -798,28 +867,14 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
 EAPI Eina_Bool
 elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
-   Elm_Menu_Item *item = (Elm_Menu_Item *) it;
-
-   if (item->content)
-     {
-        elm_widget_sub_object_del(WIDGET(item), item->content);
-        evas_object_del(item->content);
-     }
-
-   item->content = obj;
-
-   elm_widget_sub_object_add(WIDGET(item), item->content);
-   edje_object_part_swallow(VIEW(item), "elm.swallow.content", item->content);
-   _sizing_eval(WIDGET(item));
+   _item_content_set_hook(it, NULL, obj);
    return EINA_TRUE;
 }
 
 EAPI Evas_Object *
 elm_menu_item_object_content_get(const Elm_Object_Item *it)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   return ((Elm_Menu_Item *) it)->content;
+   return _item_content_get_hook(it, NULL);
 }
 
 EAPI const char *