Eolian: Integration of Toolbar
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Thu, 27 Mar 2014 08:15:16 +0000 (10:15 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 31 Mar 2014 07:23:51 +0000 (10:23 +0300)
src/lib/Makefile.am
src/lib/elm_toolbar.c
src/lib/elm_toolbar.eo [new file with mode: 0644]
src/lib/elm_toolbar_eo.h
src/lib/elm_widget_toolbar.h

index ac7e5274a350cf830795884ae72cefd1e26f7a92..554ccd67ce389d77a3fbfa18bad2ea2982569818 100644 (file)
@@ -656,7 +656,9 @@ BUILT_SOURCES = \
                elm_table.eo.c \
                elm_table.eo.h \
                elm_thumb.eo.c \
-               elm_thumb.eo.h
+               elm_thumb.eo.h \
+               elm_toolbar.eo.c \
+               elm_toolbar.eo.h
 
 EXTRA_DIST += \
             elm_widget.eo \
@@ -724,7 +726,8 @@ EXTRA_DIST += \
             elm_spinner.eo \
             elm_systray.eo \
             elm_table.eo \
-            elm_thumb.eo
+            elm_thumb.eo \
+            elm_toolbar.eo
 
 nodist_includesunstable_HEADERS = \
                                  elm_widget.eo.h \
@@ -792,5 +795,6 @@ nodist_includesunstable_HEADERS = \
                                  elm_spinner.eo.h \
                                  elm_systray.eo.h \
                                  elm_table.eo.h \
-                                 elm_thumb.eo.h
+                                 elm_thumb.eo.h \
+                                 elm_toolbar.eo.h
 
index 01923e449589b268c4b62cee53aced82fbbcf2a0..ce903174fdfcca020126f021e9016ebf86956a37 100644 (file)
@@ -8,8 +8,6 @@
 #include "elm_widget_toolbar.h"
 #include "els_box.h"
 
-EAPI Eo_Op ELM_OBJ_TOOLBAR_BASE_ID = EO_NOOP;
-
 #define MY_CLASS ELM_OBJ_TOOLBAR_CLASS
 
 #define MY_CLASS_NAME "Elm_Toolbar"
@@ -65,7 +63,7 @@ _toolbar_item_prio_compare_cb(const void *i1,
 }
 
 static void
-_items_visibility_fix(Elm_Toolbar_Smart_Data *sd,
+_items_visibility_fix(Elm_Toolbar_Data *sd,
                       Evas_Coord *iw,
                       Evas_Coord vw,
                       Eina_Bool *more)
@@ -169,7 +167,7 @@ _menu_del(void *data,
 }
 
 static void
-_item_menu_create(Elm_Toolbar_Smart_Data *sd,
+_item_menu_create(Elm_Toolbar_Data *sd,
                   Elm_Toolbar_Item *item)
 {
    item->o_menu = elm_menu_add(elm_widget_parent_get(WIDGET(item)));
@@ -699,18 +697,16 @@ _elm_toolbar_nearest_visible_item_get(Evas_Object *obj, Elm_Object_Item *it)
    return NULL;
 }
 
-static void
-_elm_toolbar_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_on_focus(Eo *obj, Elm_Toolbar_Data *sd)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-   ELM_TOOLBAR_DATA_GET(obj, sd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
    Eina_Bool int_ret = EINA_FALSE;
    Elm_Object_Item *it = NULL;
 
    eo_do_super(obj, MY_CLASS, elm_obj_widget_on_focus(&int_ret));
-   if (!int_ret) return;
-   if (!sd->items) return;
+   if (!int_ret) return EINA_FALSE;
+   if (!sd->items) return EINA_FALSE;
 
    if (elm_widget_focus_get(obj) && !sd->mouse_down)
      {
@@ -733,7 +729,7 @@ _elm_toolbar_smart_on_focus(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
           _elm_toolbar_item_unfocused(sd->focused_item);
         evas_object_focus_set(wd->resize_obj, EINA_FALSE);
      }
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static Elm_Toolbar_Item *
@@ -836,23 +832,17 @@ _item_focused_next( Evas_Object *obj,
    return EINA_FALSE;
 }
 
-static void
-_elm_toolbar_smart_event(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_event(Eo *obj, Elm_Toolbar_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info)
 {
-   Evas_Object *src = va_arg(*list, Evas_Object *);
-   Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
-   Evas_Event_Key_Down *ev = va_arg(*list, void *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   if (ret) *ret = EINA_FALSE;
    (void) src;
    (void) type;
+   Evas_Event_Key_Down *ev = event_info;
 
-   if (elm_widget_disabled_get(obj)) return;
-   if (type != EVAS_CALLBACK_KEY_DOWN) return;
-   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
-   if (!sd->items) return;
+   if (elm_widget_disabled_get(obj)) return EINA_FALSE;
+   if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
+   if (!sd->items) return EINA_FALSE;
 
    if ((!strcmp(ev->key, "Return")) ||
        (!strcmp(ev->key, "KP_Enter")) ||
@@ -871,10 +861,7 @@ _elm_toolbar_smart_event(Eo *obj, void *_pd, va_list *list)
              goto success;
           }
         else
-          {
-             if (ret) *ret = EINA_FALSE;
-             return;
-          }
+           return EINA_FALSE;
      }
    else if ((!strcmp(ev->key, "Right")) ||
             ((!strcmp(ev->key, "KP_Right")) && !ev->string))
@@ -884,10 +871,7 @@ _elm_toolbar_smart_event(Eo *obj, void *_pd, va_list *list)
              goto success;
           }
         else
-          {
-             if (ret) *ret = EINA_FALSE;
-             return;
-          }
+           return EINA_FALSE;
      }
    else if ((!strcmp(ev->key, "Up")) ||
             ((!strcmp(ev->key, "KP_Up")) && !ev->string))
@@ -897,10 +881,7 @@ _elm_toolbar_smart_event(Eo *obj, void *_pd, va_list *list)
              goto success;
           }
         else
-          {
-             if (ret) *ret = EINA_FALSE;
-             return;
-          }
+           return EINA_FALSE;
      }
    else if ((!strcmp(ev->key, "Down")) ||
             ((!strcmp(ev->key, "KP_Down")) && !ev->string))
@@ -910,15 +891,12 @@ _elm_toolbar_smart_event(Eo *obj, void *_pd, va_list *list)
              goto success;
           }
         else
-          {
-             if (ret) *ret = EINA_FALSE;
-             return;
-          }
+           return EINA_FALSE;
      }
 
 success:
    ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static void
@@ -978,7 +956,7 @@ end:
 }
 
 static int
-_elm_toolbar_icon_size_get(Evas_Object *obj)
+_internal_elm_toolbar_icon_size_get(Evas_Object *obj)
 {
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
    const char *icon_size = edje_object_data_get
@@ -1360,26 +1338,18 @@ _elm_toolbar_highlight_in_theme(Evas_Object *obj)
      elm_widget_highlight_in_theme_set(obj, EINA_FALSE);
 }
 
-static void
-_elm_toolbar_smart_theme(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_theme_apply(Eo *obj, Elm_Toolbar_Data *sd)
 {
    Elm_Toolbar_Item *it;
    double scale = 0;
-   Elm_Toolbar_Smart_Data *sd = _pd;
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
-   if (sd->delete_me)
-     {
-        if (ret) *ret = EINA_TRUE;
-        return;
-     }
+   if (sd->delete_me) return EINA_TRUE;
 
    Eina_Bool int_ret;
    eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    elm_widget_theme_object_set
      (obj, wd->resize_obj, "toolbar", "base",
@@ -1399,7 +1369,7 @@ _elm_toolbar_smart_theme(Eo *obj, void *_pd, va_list *list)
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   sd->theme_icon_size = _elm_toolbar_icon_size_get(obj);
+   sd->theme_icon_size = _internal_elm_toolbar_icon_size_get(obj);
    if (sd->priv_icon_size) sd->icon_size = sd->priv_icon_size;
    else sd->icon_size = sd->theme_icon_size;
 
@@ -1413,7 +1383,7 @@ _elm_toolbar_smart_theme(Eo *obj, void *_pd, va_list *list)
    _elm_toolbar_highlight_in_theme(obj);
    _sizing_eval(obj);
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static void
@@ -1608,11 +1578,9 @@ _item_content_unset_hook(Elm_Object_Item *it,
    return o;
 }
 
-static void
-_elm_toolbar_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_translate(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
    Elm_Toolbar_Item *it;
 
    EINA_INLIST_FOREACH(sd->items, it)
@@ -1620,7 +1588,7 @@ _elm_toolbar_smart_translate(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
 
    eo_do_super(obj, MY_CLASS, elm_obj_widget_translate(NULL));
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static void
@@ -2701,10 +2669,9 @@ _elm_toolbar_action_down_cb(void *data,
    _elm_toolbar_action_right_cb(data, o, sig, src);
 }
 
-static void
-_elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_toolbar_evas_smart_add(Eo *obj, Elm_Toolbar_Data *priv)
 {
-   Elm_Toolbar_Smart_Data *priv = _pd;
    Evas_Object *edje;
 
    elm_widget_sub_object_parent_add(obj);
@@ -2753,7 +2720,7 @@ _elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
      (edje, "elm,action,down", "elm", _elm_toolbar_action_down_cb, obj);
 
    priv->shrink_mode = ELM_TOOLBAR_SHRINK_NONE;
-   priv->theme_icon_size = _elm_toolbar_icon_size_get(obj);
+   priv->theme_icon_size = _internal_elm_toolbar_icon_size_get(obj);
    priv->icon_size = priv->theme_icon_size;
 
    priv->homogeneous = EINA_TRUE;
@@ -2804,13 +2771,11 @@ _elm_toolbar_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
    _sizing_eval(obj);
 }
 
-static void
-_elm_toolbar_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_toolbar_evas_smart_del(Eo *obj, Elm_Toolbar_Data *sd)
 {
    Elm_Toolbar_Item *it, *next;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    sd->delete_me = EINA_TRUE;
 
    ecore_job_del(sd->resize_job);
@@ -2829,36 +2794,25 @@ _elm_toolbar_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
    eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
 }
 
-static void
-_elm_toolbar_smart_move(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_evas_smart_move(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord x, Evas_Coord y)
 {
-   Evas_Coord x = va_arg(*list, Evas_Coord);
-   Evas_Coord y = va_arg(*list, Evas_Coord);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    eo_do_super(obj, MY_CLASS, evas_obj_smart_move(x, y));
 
    evas_object_move(sd->hit_rect, x, y);
 }
 
-static void
-_elm_toolbar_smart_resize(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_evas_smart_resize(Eo *obj, Elm_Toolbar_Data *sd, Evas_Coord w, Evas_Coord h)
 {
-   Evas_Coord w = va_arg(*list, Evas_Coord);
-   Evas_Coord h = va_arg(*list, Evas_Coord);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    eo_do_super(obj, MY_CLASS, evas_obj_smart_resize(w, h));
 
    evas_object_resize(sd->hit_rect, w, h);
 }
 
-static void
-_elm_toolbar_smart_member_add(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_evas_smart_member_add(Eo *obj, Elm_Toolbar_Data *sd, Evas_Object *member)
 {
-   Evas_Object *member = va_arg(*list, Evas_Object *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    eo_do_super(obj, MY_CLASS, evas_obj_smart_member_add(member));
 
    if (sd->hit_rect)
@@ -2890,25 +2844,17 @@ _access_item_find_append(const Evas_Object *obj,
 
 static Eina_Bool _elm_toolbar_smart_focus_next_enable = EINA_FALSE;
 
-static void
-_elm_toolbar_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *_pd EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   *ret = _elm_toolbar_smart_focus_next_enable;
+   return _elm_toolbar_smart_focus_next_enable;
 }
 
-static void
-_elm_toolbar_smart_focus_next(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_toolbar_elm_widget_focus_next(Eo *obj, Elm_Toolbar_Data *sd, Elm_Focus_Direction dir, Evas_Object **next)
 {
-   Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction);
-   Evas_Object **next = va_arg(*list, Evas_Object **);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
-
    Eina_List *items = NULL;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (sd->more_item && sd->more_item->selected)
      {
         items = _access_item_find_append(obj, sd->bx_more, items);
@@ -2924,12 +2870,12 @@ _elm_toolbar_smart_focus_next(Eo *obj, void *_pd, va_list *list)
           items = eina_list_append(items, sd->more_item->base.access_obj);
      }
 
-   if (ret) *ret = elm_widget_focus_list_next_get
+   return elm_widget_focus_list_next_get
             (obj, items, eina_list_data_get, dir, next);
 }
 
 static void
-_access_obj_process(Elm_Toolbar_Smart_Data * sd, Eina_Bool is_access)
+_access_obj_process(Elm_Toolbar_Data * sd, Eina_Bool is_access)
 {
    Elm_Toolbar_Item *it;
 
@@ -2940,11 +2886,10 @@ _access_obj_process(Elm_Toolbar_Smart_Data * sd, Eina_Bool is_access)
      }
 }
 
-static void
-_elm_toolbar_smart_access(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_elm_widget_access(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Eina_Bool acs)
 {
-   Elm_Toolbar_Smart_Data *sd = _pd;
-   _elm_toolbar_smart_focus_next_enable = va_arg(*list, int);
+   _elm_toolbar_smart_focus_next_enable = acs;
    _access_obj_process(sd, _elm_toolbar_smart_focus_next_enable);
 }
 
@@ -2983,17 +2928,9 @@ _elm_toolbar_coordinates_adjust(Elm_Toolbar_Item *it,
      }
 }
 
-static void
-_elm_toolbar_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_elm_widget_focus_highlight_geometry_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h, Eina_Bool is_next)
 {
-   Evas_Coord *x = va_arg(*list, Evas_Coord *);
-   Evas_Coord *y = va_arg(*list, Evas_Coord *);
-   Evas_Coord *w = va_arg(*list, Evas_Coord *);
-   Evas_Coord *h = va_arg(*list, Evas_Coord *);
-   Eina_Bool is_next = va_arg(*list, int);
-
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (is_next)
      {
         if (sd->focused_item)
@@ -3025,8 +2962,8 @@ elm_toolbar_add(Evas_Object *parent)
    return obj;
 }
 
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_toolbar_eo_base_constructor(Eo *obj, Elm_Toolbar_Data *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, eo_constructor());
    eo_do(obj,
@@ -3034,20 +2971,9 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
          evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
 }
 
-EAPI void
-elm_toolbar_icon_size_set(Evas_Object *obj,
-                          int icon_size)
+EOLIAN static void
+_elm_toolbar_icon_size_set(Eo *obj, Elm_Toolbar_Data *sd, int icon_size)
 {
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_icon_size_set(icon_size));
-}
-
-static void
-_icon_size_set(Eo *obj, void *_pd, va_list *list)
-{
-   int icon_size = va_arg(*list, int);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (sd->priv_icon_size == icon_size) return;
    sd->priv_icon_size = icon_size;
 
@@ -3057,53 +2983,20 @@ _icon_size_set(Eo *obj, void *_pd, va_list *list)
    eo_do(obj, elm_obj_widget_theme_apply(NULL));
 }
 
-EAPI int
-elm_toolbar_icon_size_get(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) 0;
-   int ret = 0;
-   eo_do((Eo *) obj, elm_obj_toolbar_icon_size_get(&ret));
-   return ret;
-}
-
-static void
-_icon_size_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static int
+_elm_toolbar_icon_size_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   int *ret = va_arg(*list, int *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-   *ret = sd->priv_icon_size;
+   return sd->priv_icon_size;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_item_append(Evas_Object *obj,
-                        const char *icon,
-                        const char *label,
-                        Evas_Smart_Cb func,
-                        const void *data)
-{
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret;
-   eo_do(obj, elm_obj_toolbar_item_append(icon, label, func, data, &ret));
-   return ret;
-}
-
-static void
-_item_append(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_item_append(Eo *obj, Elm_Toolbar_Data *sd, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
 {
-   const char *icon = va_arg(*list, const char *);
-   const char *label = va_arg(*list, const char *);
-   Evas_Smart_Cb func = va_arg(*list, Evas_Smart_Cb);
-   const void *data = va_arg(*list, const void *);
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   if (ret) *ret = NULL;
-
    Elm_Toolbar_Item *it;
    double scale;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    it = _item_new(obj, icon, label, func, data);
-   if (!it) return;
+   if (!it) return NULL;
    scale = (elm_widget_scale_get(obj) * elm_config_scale_get());
 
    sd->items = eina_inlist_append(sd->items, EINA_INLIST_GET(it));
@@ -3114,39 +3007,17 @@ _item_append(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
    sd->item_count++;
 
-   if (ret) *ret = (Elm_Object_Item *)it;
-}
-
-EAPI Elm_Object_Item *
-elm_toolbar_item_prepend(Evas_Object *obj,
-                         const char *icon,
-                         const char *label,
-                         Evas_Smart_Cb func,
-                         const void *data)
-{
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret;
-   eo_do(obj, elm_obj_toolbar_item_prepend(icon, label, func, data, &ret));
-   return ret;
+   return (Elm_Object_Item *)it;
 }
 
-static void
-_item_prepend(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_item_prepend(Eo *obj, Elm_Toolbar_Data *sd, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
 {
-   const char *icon = va_arg(*list, const char *);
-   const char *label = va_arg(*list, const char *);
-   Evas_Smart_Cb func = va_arg(*list, Evas_Smart_Cb);
-   const void *data = va_arg(*list, const void *);
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   if (ret) *ret = NULL;
-
    Elm_Toolbar_Item *it;
    double scale;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    it = _item_new(obj, icon, label, func, data);
-   if (!it) return;
+   if (!it) return NULL;
    scale = (elm_widget_scale_get(obj) * elm_config_scale_get());
 
    sd->items = eina_inlist_prepend(sd->items, EINA_INLIST_GET(it));
@@ -3156,44 +3027,20 @@ _item_prepend(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
    sd->item_count++;
 
-   if (ret) *ret = (Elm_Object_Item *)it;
+   return (Elm_Object_Item *)it;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_item_insert_before(Evas_Object *obj,
-                               Elm_Object_Item *before,
-                               const char *icon,
-                               const char *label,
-                               Evas_Smart_Cb func,
-                               const void *data)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_item_insert_before(Eo *obj, Elm_Toolbar_Data *sd, Elm_Object_Item *before, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
 {
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do(obj, elm_obj_toolbar_item_insert_before(before, icon, label, func, data, &ret));
-   return ret;
-}
-
-static void
-_item_insert_before(Eo *obj, void *_pd, va_list *list)
-{
-   Elm_Object_Item *before = va_arg(*list, Elm_Object_Item *);
-   const char *icon = va_arg(*list, const char *);
-   const char *label = va_arg(*list, const char *);
-   Evas_Smart_Cb func = va_arg(*list, Evas_Smart_Cb);
-   const void *data = va_arg(*list, const void *);
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-
-   if (ret) *ret = NULL;
-
    Elm_Toolbar_Item *it, *_before;
    double scale;
 
-   ELM_TOOLBAR_ITEM_CHECK(before);
-   Elm_Toolbar_Smart_Data *sd = _pd;
+   ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(before,  NULL);
 
    _before = (Elm_Toolbar_Item *)before;
    it = _item_new(obj, icon, label, func, data);
-   if (!it) return;
+   if (!it) return NULL;
    scale = (elm_widget_scale_get(obj) * elm_config_scale_get());
 
    sd->items = eina_inlist_prepend_relative
@@ -3204,43 +3051,20 @@ _item_insert_before(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
    sd->item_count++;
 
-   if (ret) *ret = (Elm_Object_Item *)it;
-}
-
-EAPI Elm_Object_Item *
-elm_toolbar_item_insert_after(Evas_Object *obj,
-                              Elm_Object_Item *after,
-                              const char *icon,
-                              const char *label,
-                              Evas_Smart_Cb func,
-                              const void *data)
-{
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do(obj, elm_obj_toolbar_item_insert_after(after, icon, label, func, data, &ret));
-   return ret;
+   return (Elm_Object_Item *)it;
 }
 
-static void
-_item_insert_after(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_item_insert_after(Eo *obj, Elm_Toolbar_Data *sd, Elm_Object_Item *after, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
 {
-   Elm_Object_Item *after = va_arg(*list, Elm_Object_Item *);
-   const char *icon = va_arg(*list, const char *);
-   const char *label = va_arg(*list, const char *);
-   Evas_Smart_Cb func = va_arg(*list, Evas_Smart_Cb);
-   const void *data = va_arg(*list, const void *);
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   if (ret) *ret = NULL;
-
    Elm_Toolbar_Item *it, *_after;
    double scale;
 
-   ELM_TOOLBAR_ITEM_CHECK(after);
+   ELM_TOOLBAR_ITEM_CHECK_OR_RETURN(after, NULL);
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
    _after = (Elm_Toolbar_Item *)after;
    it = _item_new(obj, icon, label, func, data);
-   if (!it) return;
+   if (!it) return NULL;
    scale = (elm_widget_scale_get(obj) * elm_config_scale_get());
 
    sd->items = eina_inlist_append_relative
@@ -3251,48 +3075,22 @@ _item_insert_after(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
    sd->item_count++;
 
-   if (ret) *ret = (Elm_Object_Item *)it;
-}
-
-EAPI Elm_Object_Item *
-elm_toolbar_first_item_get(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_first_item_get(&ret));
-   return ret;
-}
-
-static void
-_first_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   *ret = NULL;
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   if (!sd->items) return;
-   *ret = (Elm_Object_Item *)ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items);
+   return (Elm_Object_Item *)it;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_last_item_get(const Evas_Object *obj)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_first_item_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_last_item_get(&ret));
-   return ret;
+   if (!sd->items) return NULL;
+   return (Elm_Object_Item *)ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items);
 }
 
-static void
-_last_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_last_item_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   *ret = NULL;
-   Elm_Toolbar_Smart_Data *sd = _pd;
+   if (!sd->items) return NULL;
 
-   if (!sd->items) return;
-
-   *ret = (Elm_Object_Item *)ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items->last);
+   return (Elm_Object_Item *)ELM_TOOLBAR_ITEM_FROM_INLIST(sd->items->last);
 }
 
 EAPI Elm_Object_Item *
@@ -3334,34 +3132,17 @@ elm_toolbar_item_priority_get(const Elm_Object_Item *it)
    return ((Elm_Toolbar_Item *)it)->prio.priority;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_item_find_by_label(const Evas_Object *obj,
-                               const char *label)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_item_find_by_label(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, const char *label)
 {
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_item_find_by_label(label, &ret));
-   return ret;
-}
-
-static void
-_item_find_by_label(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   const char *label = va_arg(*list, const char *);
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   *ret = NULL;
    Elm_Toolbar_Item *it;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    EINA_INLIST_FOREACH(sd->items, it)
      {
-        if (!strcmp(it->label, label))
-          {
-             *ret = (Elm_Object_Item *)it;
-             return;
-          }
+        if (!strcmp(it->label, label)) return (Elm_Object_Item *)it;
      }
+
+   return NULL;
 }
 
 EAPI void
@@ -3385,40 +3166,16 @@ elm_toolbar_item_selected_get(const Elm_Object_Item *it)
    return ((Elm_Toolbar_Item *)it)->selected;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_selected_item_get(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_selected_item_get(&ret));
-   return ret;
-}
-
-static void
-_selected_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_selected_item_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = (Elm_Object_Item *)sd->selected_item;
+   return (Elm_Object_Item *)sd->selected_item;
 }
 
-EAPI Elm_Object_Item *
-elm_toolbar_more_item_get(const Evas_Object *obj)
+EOLIAN static Elm_Object_Item*
+_elm_toolbar_more_item_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Elm_Object_Item *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_more_item_get(&ret));
-   return ret;
-}
-
-static void
-_more_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = (Elm_Object_Item *)sd->more_item;
+   return (Elm_Object_Item *)sd->more_item;
 }
 
 EAPI void
@@ -3572,22 +3329,11 @@ elm_toolbar_item_separator_get(const Elm_Object_Item *it)
    return ((Elm_Toolbar_Item *)it)->separator;
 }
 
-EAPI void
-elm_toolbar_shrink_mode_set(Evas_Object *obj,
-                            Elm_Toolbar_Shrink_Mode shrink_mode)
-{
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_shrink_mode_set(shrink_mode));
-}
-
-static void
-_shrink_mode_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_shrink_mode_set(Eo *obj, Elm_Toolbar_Data *sd, Elm_Toolbar_Shrink_Mode shrink_mode)
 {
-   Elm_Toolbar_Shrink_Mode shrink_mode = va_arg(*list, Elm_Toolbar_Shrink_Mode);
    Eina_Bool bounce;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (sd->shrink_mode == shrink_mode) return;
    sd->shrink_mode = shrink_mode;
    bounce = (_elm_config->thumbscroll_bounce_enable) &&
@@ -3627,22 +3373,10 @@ _shrink_mode_set(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
 }
 
-EAPI Elm_Toolbar_Shrink_Mode
-elm_toolbar_shrink_mode_get(const Evas_Object *obj)
+EOLIAN static Elm_Toolbar_Shrink_Mode
+_elm_toolbar_shrink_mode_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) ELM_TOOLBAR_SHRINK_NONE;
-   Elm_Toolbar_Shrink_Mode ret = ELM_TOOLBAR_SHRINK_NONE;
-   eo_do((Eo *) obj, elm_obj_toolbar_shrink_mode_get(&ret));
-   return ret;
-}
-
-static void
-_shrink_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Toolbar_Shrink_Mode *ret = va_arg(*list, Elm_Toolbar_Shrink_Mode *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->shrink_mode;
+   return sd->shrink_mode;
 }
 
 EAPI void
@@ -3666,20 +3400,9 @@ elm_toolbar_transverse_expanded_get(const Evas_Object *obj)
    return sd->transverse_expanded;
 }
 
-EAPI void
-elm_toolbar_homogeneous_set(Evas_Object *obj,
-                            Eina_Bool homogeneous)
+EOLIAN static void
+_elm_toolbar_homogeneous_set(Eo *obj, Elm_Toolbar_Data *sd, Eina_Bool homogeneous)
 {
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_homogeneous_set(homogeneous));
-}
-
-static void
-_homogeneous_set(Eo *obj, void *_pd, va_list *list)
-{
-   Eina_Bool homogeneous = va_arg(*list, int);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    homogeneous = !!homogeneous;
    if (homogeneous == sd->homogeneous) return;
    sd->homogeneous = homogeneous;
@@ -3687,39 +3410,17 @@ _homogeneous_set(Eo *obj, void *_pd, va_list *list)
    evas_object_smart_calculate(sd->bx);
 }
 
-EAPI Eina_Bool
-elm_toolbar_homogeneous_get(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret = EINA_FALSE;
-   eo_do((Eo *) obj, elm_obj_toolbar_homogeneous_get(&ret));
-   return ret;
-}
-
-static void
-_homogeneous_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->homogeneous;
-}
-
-EAPI void
-elm_toolbar_menu_parent_set(Evas_Object *obj,
-                            Evas_Object *parent)
+EOLIAN static Eina_Bool
+_elm_toolbar_homogeneous_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_menu_parent_set(parent));
+   return sd->homogeneous;
 }
 
-static void
-_menu_parent_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_menu_parent_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Evas_Object *parent)
 {
-   Evas_Object *parent = va_arg(*list, Evas_Object *);
    Elm_Toolbar_Item *it;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
    EINA_SAFETY_ON_NULL_RETURN(parent);
 
    sd->menu_parent = parent;
@@ -3732,38 +3433,15 @@ _menu_parent_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
      elm_menu_parent_set(sd->more_item->o_menu, sd->menu_parent);
 }
 
-EAPI Evas_Object *
-elm_toolbar_menu_parent_get(const Evas_Object *obj)
+EOLIAN static Evas_Object*
+_elm_toolbar_menu_parent_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) NULL;
-   Evas_Object *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_toolbar_menu_parent_get(&ret));
-   return ret;
+   return sd->menu_parent;
 }
 
-static void
-_menu_parent_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_align_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, double align)
 {
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->menu_parent;
-}
-
-EAPI void
-elm_toolbar_align_set(Evas_Object *obj,
-                      double align)
-{
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_align_set(align));
-}
-
-static void
-_align_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   double align = va_arg(*list, double);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (sd->vertical)
      {
         if (sd->align != align)
@@ -3777,22 +3455,10 @@ _align_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
    sd->align = align;
 }
 
-EAPI double
-elm_toolbar_align_get(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) 0.0;
-   double ret = 0.0;
-   eo_do((Eo *) obj, elm_obj_toolbar_align_get(&ret));
-   return ret;
-}
-
-static void
-_align_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static double
+_elm_toolbar_align_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   double *ret = va_arg(*list, double *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->align;
+   return sd->align;
 }
 
 EAPI void
@@ -4018,21 +3684,11 @@ elm_toolbar_item_state_prev(Elm_Object_Item *it)
    return eina_list_data_get(prev_state);
 }
 
-EAPI void
-elm_toolbar_icon_order_lookup_set(Evas_Object *obj,
-                                  Elm_Icon_Lookup_Order order)
-{
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_icon_order_lookup_set(order));
-}
-
-static void
-_icon_order_lookup_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_icon_order_lookup_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Elm_Icon_Lookup_Order order)
 {
-   Elm_Icon_Lookup_Order order = va_arg(*list, Elm_Icon_Lookup_Order);
    Elm_Toolbar_Item *it;
 
-   Elm_Toolbar_Smart_Data *sd = _pd;
 
    if (sd->lookup_order == order) return;
    sd->lookup_order = order;
@@ -4042,38 +3698,15 @@ _icon_order_lookup_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
      elm_icon_order_lookup_set(sd->more_item->icon, order);
 }
 
-EAPI Elm_Icon_Lookup_Order
-elm_toolbar_icon_order_lookup_get(const Evas_Object *obj)
+EOLIAN static Elm_Icon_Lookup_Order
+_elm_toolbar_icon_order_lookup_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) ELM_ICON_LOOKUP_THEME_FDO;
-   Elm_Icon_Lookup_Order ret = ELM_ICON_LOOKUP_THEME_FDO;
-   eo_do((Eo *) obj, elm_obj_toolbar_icon_order_lookup_get(&ret));
-   return ret;
+   return sd->lookup_order;
 }
 
-static void
-_icon_order_lookup_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Icon_Lookup_Order *ret = va_arg(*list, Elm_Icon_Lookup_Order *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->lookup_order;
-}
-
-EAPI void
-elm_toolbar_horizontal_set(Evas_Object *obj,
-                           Eina_Bool horizontal)
+EOLIAN static void
+_elm_toolbar_horizontal_set(Eo *obj, Elm_Toolbar_Data *sd, Eina_Bool horizontal)
 {
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_horizontal_set(horizontal));
-}
-
-static void
-_horizontal_set(Eo *obj, void *_pd, va_list *list)
-{
-   Eina_Bool horizontal = va_arg(*list, int);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    horizontal = !!horizontal;
    if (!horizontal == sd->vertical) return;
    sd->vertical = !horizontal;
@@ -4085,93 +3718,35 @@ _horizontal_set(Eo *obj, void *_pd, va_list *list)
    _sizing_eval(obj);
 }
 
-EAPI Eina_Bool
-elm_toolbar_horizontal_get(const Evas_Object *obj)
+EOLIAN static Eina_Bool
+_elm_toolbar_horizontal_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret = EINA_FALSE;
-   eo_do((Eo *) obj, elm_obj_toolbar_horizontal_get(&ret));
-   return ret;
+   return !sd->vertical;
 }
 
-static void
-_horizontal_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static unsigned int
+_elm_toolbar_items_count(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = !sd->vertical;
-}
-
-EAPI unsigned int
-elm_toolbar_items_count(const Evas_Object *obj)
-{
-   ELM_TOOLBAR_CHECK(obj) 0;
-   unsigned int ret = 0;
-   eo_do((Eo *) obj, elm_obj_toolbar_items_count(&ret));
-   return ret;
-}
-
-static void
-_items_count(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   unsigned int *ret = va_arg(*list, unsigned int *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->item_count;
-}
-
-EAPI void
-elm_toolbar_standard_priority_set(Evas_Object *obj,
-                                  int priority)
-{
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_standard_priority_set(priority));
+   return sd->item_count;
 }
 
-static void
-_standard_priority_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_standard_priority_set(Eo *obj, Elm_Toolbar_Data *sd, int priority)
 {
-   int priority = va_arg(*list, int);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (sd->standard_priority == priority) return;
    sd->standard_priority = priority;
    _resize_cb(obj, NULL, NULL, NULL);
 }
 
-EAPI int
-elm_toolbar_standard_priority_get(const Evas_Object *obj)
+EOLIAN static int
+_elm_toolbar_standard_priority_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) 0;
-   int ret = 0;
-   eo_do((Eo *) obj, elm_obj_toolbar_standard_priority_get(&ret));
-   return ret;
+   return sd->standard_priority;
 }
 
-static void
-_standard_priority_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_toolbar_select_mode_set(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd, Elm_Object_Select_Mode mode)
 {
-   int *ret = va_arg(*list, int *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->standard_priority;
-}
-
-EAPI void
-elm_toolbar_select_mode_set(Evas_Object *obj,
-                            Elm_Object_Select_Mode mode)
-{
-   ELM_TOOLBAR_CHECK(obj);
-   eo_do(obj, elm_obj_toolbar_select_mode_set(mode));
-}
-
-static void
-_select_mode_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Object_Select_Mode mode = va_arg(*list, Elm_Object_Select_Mode);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
    if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
      return;
 
@@ -4186,22 +3761,10 @@ _select_mode_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
      sd->select_mode = mode;
 }
 
-EAPI Elm_Object_Select_Mode
-elm_toolbar_select_mode_get(const Evas_Object *obj)
+EOLIAN static Elm_Object_Select_Mode
+_elm_toolbar_select_mode_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   ELM_TOOLBAR_CHECK(obj) ELM_OBJECT_SELECT_MODE_MAX;
-   Elm_Object_Select_Mode ret = ELM_OBJECT_SELECT_MODE_MAX;
-   eo_do((Eo *) obj, elm_obj_toolbar_select_mode_get(&ret));
-   return ret;
-}
-
-static void
-_select_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Object_Select_Mode *ret = va_arg(*list, Elm_Object_Select_Mode *);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   *ret = sd->select_mode;
+   return sd->select_mode;
 }
 
 EAPI void
@@ -4249,113 +3812,16 @@ elm_toolbar_item_bring_in(Elm_Object_Item *it, Elm_Toolbar_Item_Scrollto_Type ty
      (x, y, w, h));
 }
 
-static void
-_elm_toolbar_focused_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Elm_Object_Item *
+_elm_toolbar_elm_widget_focused_item_get(Eo *obj EINA_UNUSED, Elm_Toolbar_Data *sd)
 {
-   Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
-   Elm_Toolbar_Smart_Data *sd = _pd;
-
-   if (ret) *ret = (Elm_Object_Item *)sd->focused_item;
+   return (Elm_Object_Item *)sd->focused_item;
 }
 
-static void
-_class_constructor(Eo_Class *klass)
-{
-   const Eo_Op_Func_Description func_desc[] = {
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
-
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBER_ADD), _elm_toolbar_smart_member_add),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_toolbar_smart_add),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_toolbar_smart_del),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _elm_toolbar_smart_resize),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), _elm_toolbar_smart_move),
-
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ON_FOCUS), _elm_toolbar_smart_on_focus),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_toolbar_smart_theme),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_TRANSLATE), _elm_toolbar_smart_translate),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_toolbar_smart_event),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_toolbar_smart_focus_next_manager_is),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), _elm_toolbar_smart_focus_next),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACCESS), _elm_toolbar_smart_access),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_HIGHLIGHT_GEOMETRY_GET), _elm_toolbar_focus_highlight_geometry_get),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUSED_ITEM_GET), _elm_toolbar_focused_item_get),
-
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ICON_SIZE_SET), _icon_size_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ICON_SIZE_GET), _icon_size_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_APPEND), _item_append),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_PREPEND), _item_prepend),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_INSERT_BEFORE), _item_insert_before),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_INSERT_AFTER), _item_insert_after),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_FIRST_ITEM_GET), _first_item_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_LAST_ITEM_GET), _last_item_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_FIND_BY_LABEL), _item_find_by_label),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SELECTED_ITEM_GET), _selected_item_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_MORE_ITEM_GET), _more_item_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SHRINK_MODE_SET), _shrink_mode_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SHRINK_MODE_GET), _shrink_mode_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_HOMOGENEOUS_SET), _homogeneous_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_HOMOGENEOUS_GET), _homogeneous_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_MENU_PARENT_SET), _menu_parent_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_MENU_PARENT_GET), _menu_parent_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ALIGN_SET), _align_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ALIGN_GET), _align_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ICON_ORDER_LOOKUP_SET), _icon_order_lookup_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ICON_ORDER_LOOKUP_GET), _icon_order_lookup_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_HORIZONTAL_SET), _horizontal_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_HORIZONTAL_GET), _horizontal_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_ITEMS_COUNT), _items_count),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_STANDARD_PRIORITY_SET), _standard_priority_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_STANDARD_PRIORITY_GET), _standard_priority_get),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SELECT_MODE_SET), _select_mode_set),
-        EO_OP_FUNC(ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SELECT_MODE_GET), _select_mode_get),
-        EO_OP_FUNC_SENTINEL
-   };
-   eo_class_funcs_set(klass, func_desc);
-
+EOLIAN static void
+_elm_toolbar_class_constructor(Eo_Class *klass)
+{
    evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
-static const Eo_Op_Description op_desc[] = {
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ICON_SIZE_SET, "Set the icon size, in pixels, to be used by toolbar items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ICON_SIZE_GET, "Get the icon size, in pixels, to be used by toolbar items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_APPEND, "Append item to the toolbar."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_PREPEND, "Prepend item to the toolbar."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_INSERT_BEFORE, "Insert a new item into the toolbar object before item before."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_INSERT_AFTER, "Insert a new item into the toolbar object after item after."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_FIRST_ITEM_GET, "Get the first item in the given toolbar widget's list of items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_LAST_ITEM_GET, "Get the last item in the given toolbar widget's list of items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEM_FIND_BY_LABEL, "Returns a pointer to a toolbar item by its label."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_SELECTED_ITEM_GET, "Get the selected item."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_MORE_ITEM_GET, "Get the more item."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_SHRINK_MODE_SET, "Set the item displaying mode of a given toolbar widget obj."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_SHRINK_MODE_GET, "Get the shrink mode of toolbar obj."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_HOMOGENEOUS_SET, "Enable/disable homogeneous mode."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_HOMOGENEOUS_GET, "Get whether the homogeneous mode is enabled."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_MENU_PARENT_SET, "Set the parent object of the toolbar items' menus."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_MENU_PARENT_GET, "Get the parent object of the toolbar items' menus."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ALIGN_SET, "Set the alignment of the items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ALIGN_GET, "Get the alignment of the items."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ICON_ORDER_LOOKUP_SET, "Sets icon lookup order, for toolbar items' icons."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ICON_ORDER_LOOKUP_GET, "Get the icon lookup order."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_HORIZONTAL_SET, "Change a toolbar's orientation."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_HORIZONTAL_GET, "Get a toolbar's orientation."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_ITEMS_COUNT, "Get the number of items in a toolbar."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_STANDARD_PRIORITY_SET, "Set the standard priority of visible items in a toolbar."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_STANDARD_PRIORITY_GET, "Get the standard_priority of visible items in a toolbar."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_SELECT_MODE_SET, "Set the toolbar select mode"),
-     EO_OP_DESCRIPTION(ELM_OBJ_TOOLBAR_SUB_ID_SELECT_MODE_GET, "Get the toolbar select mode"),
-     EO_OP_DESCRIPTION_SENTINEL
-};
-
-static const Eo_Class_Description class_desc = {
-     EO_VERSION,
-     MY_CLASS_NAME,
-     EO_CLASS_TYPE_REGULAR,
-     EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_TOOLBAR_BASE_ID, op_desc, ELM_OBJ_TOOLBAR_SUB_ID_LAST),
-     NULL,
-     sizeof(Elm_Toolbar_Smart_Data),
-     _class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(elm_obj_toolbar_class_get, &class_desc, ELM_OBJ_WIDGET_CLASS, ELM_INTERFACE_SCROLLABLE_CLASS, NULL);
+#include "elm_toolbar.eo.c"
diff --git a/src/lib/elm_toolbar.eo b/src/lib/elm_toolbar.eo
new file mode 100644 (file)
index 0000000..4e4efa0
--- /dev/null
@@ -0,0 +1,534 @@
+class Elm_Toolbar (Elm_Widget, Elm_Interface_Scrollable)
+{
+   eo_prefix: elm_obj_toolbar;
+   properties {
+      homogeneous {
+         set {
+            /*@
+            Enable/disable homogeneous mode.
+
+            This will enable the homogeneous mode where items are of the same size.
+            @see elm_toolbar_homogeneous_get()
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get whether the homogeneous mode is enabled.
+
+            @return Assume the items within the toolbar are of the same height
+            and width (EINA_TRUE = on, EINA_FALSE = off).
+
+            @see elm_toolbar_homogeneous_set()
+
+            @ingroup Toolbar */
+         }
+         values {
+            Eina_Bool homogeneous; /*@ Assume the items within the toolbar are of the
+            same size (EINA_TRUE = on, EINA_FALSE = off). Default is @c EINA_FALSE. */
+         }
+      }
+      align {
+         set {
+            /*@
+            Set the alignment of the items.
+
+            Alignment of toolbar items, from <tt> 0.0 </tt> to indicates to align
+            left, to <tt> 1.0 </tt>, to align to right. <tt> 0.5 </tt> centralize
+            items.
+
+            Centered items by default.
+
+            @see elm_toolbar_align_get()
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the alignment of the items.
+
+            @return toolbar items alignment, a float between <tt> 0.0 </tt> and
+            <tt> 1.0 </tt>.
+
+            @see elm_toolbar_align_set() for details.
+
+            @ingroup Toolbar */
+         }
+         values {
+            double align; /*@ The new alignment, a float between <tt> 0.0 </tt>
+            and <tt> 1.0 </tt>. */
+         }
+      }
+      select_mode {
+         set {
+            /*@
+            Set the toolbar select mode.
+
+            elm_toolbar_select_mode_set() changes item select mode in the toolbar widget.
+            - ELM_OBJECT_SELECT_MODE_DEFAULT : Items will only call their selection func and
+            callback when first becoming selected. Any further clicks will
+            do nothing, unless you set always select mode.
+            - ELM_OBJECT_SELECT_MODE_ALWAYS :  This means that, even if selected,
+            every click will make the selected callbacks be called.
+            - ELM_OBJECT_SELECT_MODE_NONE : This will turn off the ability to select items
+            entirely and they will neither appear selected nor call selected
+            callback functions.
+
+            @see elm_toolbar_select_mode_get()
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the toolbar select mode.
+
+            @return The select mode
+            (If getting mode is failed, it returns ELM_OBJECT_SELECT_MODE_MAX)
+
+            @see elm_toolbar_select_mode_set()
+
+            @ingroup Toolbar */
+         }
+         values {
+            Elm_Object_Select_Mode mode; /*@ The select mode */
+         }
+      }
+      icon_size {
+         set {
+            /*@
+            Set the icon size, in pixels, to be used by toolbar items.
+
+            @note Default value is @c 32. It reads value from elm config.
+
+            @see elm_toolbar_icon_size_get()
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the icon size, in pixels, to be used by toolbar items.
+
+            @return The icon size in pixels.
+
+            @see elm_toolbar_icon_size_set() for details.
+
+            @ingroup Toolbar */
+         }
+         values {
+            int icon_size; /*@ The icon size in pixels */
+         }
+      }
+      horizontal {
+         set {
+            /*@
+            Change a toolbar's orientation
+            By default, a toolbar will be horizontal. Use this function to create a vertical toolbar.
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get a toolbar's orientation
+            @return If @c EINA_TRUE, the toolbar is horizontal
+            By default, a toolbar will be horizontal. Use this function to determine whether a toolbar is vertical.
+            @ingroup Toolbar */
+         }
+         values {
+            Eina_Bool horizontal; /*@ If @c EINA_TRUE, the toolbar is horizontal */
+         }
+      }
+      icon_order_lookup {
+         set {
+            /*@
+            Sets icon lookup order, for toolbar items' icons.
+
+            Icons added before calling this function will not be affected.
+            The default lookup order is #ELM_ICON_LOOKUP_THEME_FDO.
+
+            @see elm_toolbar_icon_order_lookup_get()
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the icon lookup order.
+
+            @return The icon lookup order.
+
+            @see elm_toolbar_icon_order_lookup_set() for details.
+
+            @ingroup Toolbar */
+         }
+         values {
+            Elm_Icon_Lookup_Order order; /*@ The icon lookup order. */
+         }
+      }
+      shrink_mode {
+         set {
+            /*@
+            Set the item displaying mode of a given toolbar widget @p obj.
+
+            The toolbar won't scroll under #ELM_TOOLBAR_SHRINK_NONE mode, but
+            it will enforce a minimum size, so that all the items will fit
+            inside it. It won't scroll and won't show the items that don't fit
+            under #ELM_TOOLBAR_SHRINK_HIDE mode. Finally, it'll scroll under
+            #ELM_TOOLBAR_SHRINK_SCROLL mode, and it will create a button to
+            aggregate items which didn't fit with the #ELM_TOOLBAR_SHRINK_MENU
+            mode.
+
+            @warning This function's behavior will clash with those of
+            elm_scroller_policy_set(), so use either one of them, but not both.
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the shrink mode of toolbar @p obj.
+
+            @return Toolbar's items display behavior.
+
+            @see elm_toolbar_shrink_mode_set() for details.
+
+            @ingroup Toolbar */
+         }
+         values {
+            Elm_Toolbar_Shrink_Mode shrink_mode; /*@ Toolbar's items display behavior */
+         }
+      }
+      menu_parent {
+         set {
+            /*@
+            Set the parent object of the toolbar items' menus.
+
+            Each item can be set as item menu, with elm_toolbar_item_menu_set().
+
+            For more details about setting the parent for toolbar menus, see
+            elm_menu_parent_set().
+
+            @see elm_menu_parent_set() for details.
+            @see elm_toolbar_item_menu_set() for details.
+
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the parent object of the toolbar items' menus.
+
+            @return The parent of the menu objects.
+
+            @see elm_toolbar_menu_parent_set() for details.
+
+            @ingroup Toolbar */
+         }
+         values {
+            Evas_Object *parent; /*@ The parent of the menu objects. */
+         }
+      }
+      standard_priority {
+         set {
+            /*@
+            Set the standard priority of visible items in a toolbar
+            If the priority of the item is up to standard priority, it is shown in basic panel.
+            The other items are located in more menu or panel. The more menu or panel can be shown when the more item is clicked.
+
+            @see elm_toolbar_standard_priority_get()
+
+            @since 1.7
+            @ingroup Toolbar */
+         }
+         get {
+            /*@
+            Get the standard_priority of visible items in a toolbar
+            @return The standard priority of items in @p obj toolbar
+
+            @see elm_toolbar_standard_priority_set()
+
+            @since 1.7
+            @ingroup Toolbar */
+         }
+         values {
+            int priority; /*@ The standard_priority of visible items */
+         }
+      }
+      selected_item {
+         get {
+            /*@
+            Get the selected item.
+
+            @return The selected toolbar item.
+
+            The selected item can be unselected with function
+            elm_toolbar_item_selected_set().
+
+            The selected item always will be highlighted on toolbar.
+
+            @ingroup Toolbar */
+            return Elm_Object_Item *;
+         }
+      }
+      first_item {
+         get {
+            /*@
+            Get the first item in the given toolbar widget's list of
+            items.
+
+            @return The first item or @c NULL, if it has no items (and on
+            errors)
+
+            @see elm_toolbar_item_append()
+            @see elm_toolbar_last_item_get()
+
+            @ingroup Toolbar */
+            return Elm_Object_Item *;
+         }
+      }
+      more_item {
+         get {
+            /*@
+            Get the more item which is auto-generated by toolbar.
+
+            @return The toolbar more item.
+
+            Toolbar generates 'more' item when there is no more space to fit items in
+            and toolbar is in ELM_TOOLBAR_SHRINK_MENU or ELM_TOOLBAR_SHRINK_EXPAND mode.
+            The more item can be manipulated by elm_object_item_text_set() and
+            elm_object_item_content_set.
+
+            @ingroup Toolbar */
+            return Elm_Object_Item *;
+         }
+      }
+      last_item {
+         get {
+            /*@
+            Get the last item in the given toolbar widget's list of
+            items.
+
+            @return The last item or @c NULL, if it has no items (and on
+            errors)
+
+            @see elm_toolbar_item_prepend()
+            @see elm_toolbar_first_item_get()
+
+            @ingroup Toolbar */
+            return Elm_Object_Item *;
+         }
+      }
+   }
+   methods {
+      item_insert_before {
+         /*@
+         Insert a new item into the toolbar object before item @p before.
+
+         @return The created item or @c NULL upon failure.
+
+         A new item will be created and added to the toolbar. Its position in
+         this toolbar will be just before item @p before.
+
+         Items created with this method can be deleted with
+         elm_object_item_del().
+
+         Associated @p data can be properly freed when item is deleted if a
+         callback function is set with elm_object_item_del_cb_set().
+
+         If a function is passed as argument, it will be called every time this item
+         is selected, i.e., the user clicks over an unselected item.
+         If such function isn't needed, just passing
+         @c NULL as @p func is enough. The same should be done for @p data.
+
+         Toolbar will load icon image from fdo or current theme.
+         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
+         If an absolute path is provided it will load it direct from a file.
+
+         @note This function does not accept relative icon path.
+
+         @see elm_toolbar_item_icon_set()
+         @see elm_object_item_del()
+
+         @ingroup Toolbar */
+
+         return Elm_Object_Item *;
+         params {
+            @in Elm_Object_Item *before; /*@ The toolbar item to insert before. */
+            @in const char *icon; /*@ A string with icon name or the absolute path of an image file. */
+            @in const char *label; /*@ The label of the item. */
+            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
+            @in const void *data; /*@ The data to associate with the item for related callbacks. */
+         }
+      }
+      item_insert_after {
+         /*@
+         Insert a new item into the toolbar object after item @p after.
+
+         @return The created item or @c NULL upon failure.
+
+         A new item will be created and added to the toolbar. Its position in
+         this toolbar will be just after item @p after.
+
+         Items created with this method can be deleted with
+         elm_object_item_del().
+
+         Associated @p data can be properly freed when item is deleted if a
+         callback function is set with elm_object_item_del_cb_set().
+
+         If a function is passed as argument, it will be called every time this item
+         is selected, i.e., the user clicks over an unselected item.
+         If such function isn't needed, just passing
+         @c NULL as @p func is enough. The same should be done for @p data.
+
+         Toolbar will load icon image from fdo or current theme.
+         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
+         If an absolute path is provided it will load it direct from a file.
+
+         @note This function does not accept relative icon path.
+
+         @see elm_toolbar_item_icon_set()
+         @see elm_object_item_del()
+
+         @ingroup Toolbar */
+
+         return Elm_Object_Item *;
+         params {
+            @in Elm_Object_Item *after; /*@ The toolbar item to insert after. */
+            @in const char *icon; /*@ A string with icon name or the absolute path of an image file. */
+            @in const char *label; /*@ The label of the item. */
+            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
+            @in const void *data; /*@ The data to associate with the item for related callbacks. */
+         }
+      }
+      item_append {
+         /*@
+         Append item to the toolbar.
+
+         @return The created item or @c NULL upon failure.
+
+         A new item will be created and appended to the toolbar, i.e., will
+         be set as @b last item.
+
+         Items created with this method can be deleted with
+         elm_object_item_del().
+
+         Associated @p data can be properly freed when item is deleted if a
+         callback function is set with elm_object_item_del_cb_set().
+
+         If a function is passed as argument, it will be called every time this item
+         is selected, i.e., the user clicks over an unselected item.
+         If such function isn't needed, just passing
+         @c NULL as @p func is enough. The same should be done for @p data.
+
+         Toolbar will load icon image from fdo or current theme.
+         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
+         If an absolute path is provided it will load it direct from a file.
+
+         @note This function does not accept relative icon path.
+
+         @see elm_toolbar_item_icon_set()
+         @see elm_object_item_del()
+
+         @ingroup Toolbar */
+
+         return Elm_Object_Item *;
+         params {
+            @in const char *icon; /*@ A string with icon name or the absolute path of an image file. */
+            @in const char *label; /*@ The label of the item. */
+            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
+            @in const void *data; /*@ The data to associate with the item for related callbacks. */
+         }
+      }
+      items_count {
+         /*@
+         Get the number of items in a toolbar
+         @return The number of items in @p obj toolbar
+         @ingroup Toolbar */
+
+         const;
+         return unsigned int;
+      }
+      item_prepend {
+         /*@
+         Prepend item to the toolbar.
+
+         @return The created item or @c NULL upon failure.
+
+         A new item will be created and prepended to the toolbar, i.e., will
+         be set as @b first item.
+
+         Items created with this method can be deleted with
+         elm_object_item_del().
+
+         Associated @p data can be properly freed when item is deleted if a
+         callback function is set with elm_object_item_del_cb_set().
+
+         If a function is passed as argument, it will be called every time this item
+         is selected, i.e., the user clicks over an unselected item.
+         If such function isn't needed, just passing
+         @c NULL as @p func is enough. The same should be done for @p data.
+
+         Toolbar will load icon image from fdo or current theme.
+         This behavior can be set by elm_toolbar_icon_order_lookup_set() function.
+         If an absolute path is provided it will load it direct from a file.
+
+         @note This function does not accept relative icon path.
+
+         @see elm_toolbar_item_icon_set()
+         @see elm_object_item_del()
+
+         @ingroup Toolbar */
+
+         return Elm_Object_Item *;
+         params {
+            @in const char *icon; /*@ A string with icon name or the absolute path of an image file. */
+            @in const char *label; /*@ The label of the item. */
+            @in Evas_Smart_Cb func; /*@ The function to call when the item is clicked. */
+            @in const void *data; /*@ The data to associate with the item for related callbacks. */
+         }
+      }
+      item_find_by_label {
+         /*@
+         Returns a pointer to a toolbar item by its label.
+
+         @return The pointer to the toolbar item matching @p label or @c NULL
+         on failure.
+
+         @ingroup Toolbar */
+
+         const;
+         return Elm_Object_Item *;
+         params {
+            @in const char *label; /*@ The label of the item to find. */
+         }
+      }
+   }
+   implements {
+      class::constructor;
+      Eo_Base::constructor;
+      Evas_Smart::move;
+      Evas_Smart::add;
+      Evas_Smart::del;
+      Evas_Smart::member_add;
+      Evas_Smart::resize;
+      Elm_Widget::focus_next_manager_is;
+      Elm_Widget::access;
+      Elm_Widget::focus_next;
+      Elm_Widget::theme_apply;
+      Elm_Widget::on_focus;
+      Elm_Widget::translate;
+      Elm_Widget::event;
+      Elm_Widget::focus_highlight_geometry_get;
+      Elm_Widget::focused_item::get;
+   }
+   events {
+      scroll;
+      scroll,anim,start;
+      scroll,anim,stop;
+      scroll,drag,start;
+      scroll,drag,stop;
+      clicked;
+      longpressed;
+      clicked,double;
+      language,changed;
+      access,changed;
+      focused;
+      unfocused;
+   }
+
+}
index f9706b090604c36dac9b1655c447132b12d11bc0..9b5eb275ad08fd16932b2bef0964198d0022ccad 100644 (file)
@@ -3,6 +3,8 @@
  *
  * @{
  */
+#include "elm_toolbar.eo.h"
+#if 0
 #define ELM_OBJ_TOOLBAR_CLASS elm_obj_toolbar_class_get()
 
 const Eo_Class *elm_obj_toolbar_class_get(void) EINA_CONST;
@@ -402,6 +404,7 @@ enum
  */
 #define elm_obj_toolbar_select_mode_get(ret) ELM_OBJ_TOOLBAR_ID(ELM_OBJ_TOOLBAR_SUB_ID_SELECT_MODE_GET), EO_TYPECHECK(Elm_Object_Select_Mode *, ret)
 
+#endif
 /**
  * @}
  */
index 381dba32a39455370b193d0a17243cfe86dcc63b..09d6a45dd13edc24b61fc27f51b3ad3f36bddd0e 100644 (file)
@@ -19,8 +19,8 @@ typedef struct _Elm_Toolbar_Item Elm_Toolbar_Item;
 /**
  * Base widget smart data extended with toolbar instance data.
  */
-typedef struct _Elm_Toolbar_Smart_Data Elm_Toolbar_Smart_Data;
-struct _Elm_Toolbar_Smart_Data
+typedef struct _Elm_Toolbar_Data Elm_Toolbar_Data;
+struct _Elm_Toolbar_Data
 {
    Evas_Object                          *hit_rect;
 
@@ -98,7 +98,7 @@ struct _Elm_Toolbar_Item_State
  */
 
 #define ELM_TOOLBAR_DATA_GET(o, sd) \
-  Elm_Toolbar_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_TOOLBAR_CLASS)
+  Elm_Toolbar_Data * sd = eo_data_scope_get(o, ELM_OBJ_TOOLBAR_CLASS)
 
 #define ELM_TOOLBAR_DATA_GET_OR_RETURN(o, ptr)       \
   ELM_TOOLBAR_DATA_GET(o, ptr);                      \