jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=f5479c104d4817d799d2db414a88c607fa68060f

commit f5479c104d4817d799d2db414a88c607fa68060f
Author: Daniel Zaoui <daniel.za...@samsung.com>
Date:   Tue Mar 25 14:27:37 2014 +0200

    Eolian: Integration of Prefs
---
 src/lib/Makefile.am        |  10 +-
 src/lib/elm_prefs.c        | 637 ++++++++-------------------------------------
 src/lib/elm_prefs.eo       | 388 +++++++++++++++++++++++++++
 src/lib/elm_prefs_eo.h     |   3 +
 src/lib/elm_widget_prefs.h |   6 +-
 5 files changed, 505 insertions(+), 539 deletions(-)

diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 4c61a86..a2035e3 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -630,7 +630,9 @@ BUILT_SOURCES = \
                elm_plug.eo.c \
                elm_plug.eo.h \
                elc_popup.eo.c \
-               elc_popup.eo.h
+               elc_popup.eo.h \
+               elm_prefs.eo.c \
+               elm_prefs.eo.h
 
 EXTRA_DIST += \
             elm_widget.eo \
@@ -685,7 +687,8 @@ EXTRA_DIST += \
             elm_photo.eo \
             elc_player.eo \
             elm_plug.eo \
-            elc_popup.eo
+            elc_popup.eo \
+            elm_prefs.eo
 
 nodist_includesunstable_HEADERS = \
                                  elm_widget.eo.h \
@@ -740,5 +743,6 @@ nodist_includesunstable_HEADERS = \
                                  elm_photo.eo.h \
                                  elc_player.eo.h \
                                  elm_plug.eo.h \
-                                 elc_popup.eo.h
+                                 elc_popup.eo.h \
+                                 elm_prefs.eo.h
 
diff --git a/src/lib/elm_prefs.c b/src/lib/elm_prefs.c
index ebe4202..19b9b29 100644
--- a/src/lib/elm_prefs.c
+++ b/src/lib/elm_prefs.c
@@ -10,8 +10,6 @@
 
 #include "Eo.h"
 
-EAPI Eo_Op ELM_OBJ_PREFS_BASE_ID = EO_NOOP;
-
 #define MY_CLASS ELM_OBJ_PREFS_CLASS
 
 #define MY_CLASS_NAME "Elm_Prefs"
@@ -45,8 +43,8 @@ static void _elm_prefs_values_get_default(Elm_Prefs_Page_Node 
*,
 static Eina_Bool _prefs_item_widget_value_from_self(Elm_Prefs_Item_Node *,
                                                     Eina_Bool);
 
-static void
-_elm_prefs_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_prefs_evas_smart_add(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
    elm_widget_sub_object_parent_add(obj);
@@ -148,7 +146,7 @@ end:
 }
 
 static void
-_root_node_free(Elm_Prefs_Smart_Data *sd)
+_root_node_free(Elm_Prefs_Data *sd)
 {
    _page_free(sd->root);
 }
@@ -224,7 +222,7 @@ _prefs_data_type_fix(Elm_Prefs_Item_Node *it,
 }
 
 static Eina_Bool
-_prefs_item_widget_value_from_data(Elm_Prefs_Smart_Data *sd,
+_prefs_item_widget_value_from_data(Elm_Prefs_Data *sd,
                                    Elm_Prefs_Item_Node *it,
                                    Eina_Value *value)
 {
@@ -328,7 +326,7 @@ _elm_prefs_page_item_by_name(Elm_Prefs_Page_Node *p,
 }
 
 static Elm_Prefs_Item_Node *
-_elm_prefs_item_node_by_name(Elm_Prefs_Smart_Data *sd,
+_elm_prefs_item_node_by_name(Elm_Prefs_Data *sd,
                              const char *name)
 {
    char buf[PATH_MAX];
@@ -347,7 +345,7 @@ _elm_prefs_item_node_by_name(Elm_Prefs_Smart_Data *sd,
 }
 
 static Eina_List *
-_elm_prefs_item_list_node_by_name(Elm_Prefs_Smart_Data *sd,
+_elm_prefs_item_list_node_by_name(Elm_Prefs_Data *sd,
                                   const char *name)
 {
    Elm_Prefs_Item_Node *it;
@@ -446,11 +444,9 @@ _elm_prefs_data_cbs_del(Eo *obj)
          "prefs data handle");
 }
 
-static void
-_elm_prefs_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_prefs_evas_smart_del(Eo *obj, Elm_Prefs_Data *sd)
 {
-   Elm_Prefs_Smart_Data *sd = _pd;
-
    sd->delete_me = EINA_TRUE;
 
    if (sd->saving_poller) ecore_poller_del(sd->saving_poller);
@@ -474,39 +470,28 @@ _elm_prefs_smart_del(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
    eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
 }
 
-static void
-_elm_prefs_smart_focus_next(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_elm_widget_focus_next(Eo *obj, Elm_Prefs_Data *sd, 
Elm_Focus_Direction dir, Evas_Object **next)
 {
-   Elm_Prefs_Smart_Data *sd = _pd;
-   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 *);
-   Eina_Bool mret;
-
    const Eina_List *items;
 
-   ELM_PREFS_CHECK(obj);
+   ELM_PREFS_CHECK(obj) EINA_FALSE;
 
    items = elm_widget_focus_custom_chain_get(obj);
    if (items)
      {
-        mret = elm_widget_focus_list_next_get
+        return elm_widget_focus_list_next_get
            (obj, items, eina_list_data_get, dir, next);
-
-        if (ret) *ret = mret;
-        return;
      }
 
    if (sd->root && sd->root->w_obj)
      {
-        mret = elm_widget_focus_next_get(sd->root->w_obj, dir, next);
-        if (ret) *ret = mret;
-        return;
+        return elm_widget_focus_next_get(sd->root->w_obj, dir, next);
      }
 
    if (next) *next = NULL;
 
-   if (ret) *ret = EINA_FALSE;
+   return EINA_FALSE;
 }
 
 EAPI Evas_Object *
@@ -526,8 +511,8 @@ elm_prefs_add(Evas_Object *parent)
    return obj;
 }
 
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_prefs_eo_base_constructor(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, eo_constructor());
    eo_do(obj,
@@ -1061,7 +1046,7 @@ _elm_prefs_values_get_default(Elm_Prefs_Page_Node *page,
 }
 
 static void
-_elm_prefs_values_get_user(Elm_Prefs_Smart_Data *sd,
+_elm_prefs_values_get_user(Elm_Prefs_Data *sd,
                            Elm_Prefs_Page_Node *p)
 {
    char buf[PATH_MAX];
@@ -1137,33 +1122,16 @@ _elm_prefs_values_get_user(Elm_Prefs_Smart_Data *sd,
      }
 }
 
-EAPI Eina_Bool
-elm_prefs_file_set(Evas_Object *obj,
-                   const char *file,
-                   const char *page)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do(obj, elm_obj_prefs_file_set(file, page, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_file_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_file_set(Eo *obj, Elm_Prefs_Data *sd, const char *file, const char 
*page)
 {
    const char *prefix;
-   const char *file = va_arg(*list, const char *);
-   const char *page = va_arg(*list, const char *);
-   Eina_Bool  *ret  = va_arg(*list, Eina_Bool *);
-
-   Elm_Prefs_Smart_Data *sd = _pd;
 
    if (!_elm_prefs_init_count)
      {
         CRI("prefs_iface module is not loaded! you can't"
             " create prefs widgets");
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
    prefix = elm_app_data_dir_get();
    if (!strlen(prefix))
@@ -1186,19 +1154,14 @@ _elm_prefs_file_set(Eo *obj, void *_pd, va_list *list)
    sd->page = eina_stringshare_add(page ? page : "main");
 
    sd->root = _elm_prefs_page_load(obj, sd->page);
-   if (!sd->root)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!sd->root) return EINA_FALSE;
 
    if (!_elm_prefs_page_populate(sd->root, obj))
      {
         _root_node_free(sd);
         sd->root = NULL;
 
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
    elm_widget_resize_object_set(obj, sd->root->w_obj, EINA_TRUE);
@@ -1208,62 +1171,25 @@ _elm_prefs_file_set(Eo *obj, void *_pd, va_list *list)
    evas_object_smart_callback_call
       (obj, SIG_PAGE_LOADED, (char *)sd->root->name);
 
-   *ret = EINA_TRUE;
-}
-
-EAPI Eina_Bool
-elm_prefs_file_get(const Evas_Object *obj,
-                   const char **file,
-                   const char **page)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_file_get(file, page, &ret));
-   return ret;
+   return EINA_TRUE;
 }
 
-static void
-_elm_prefs_file_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_file_get(Eo *obj EINA_UNUSED, Elm_Prefs_Data *sd, const char 
**file, const char **page)
 {
-   const char **file = va_arg(*list, const char **);
-   const char **page = va_arg(*list, const char **);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   Elm_Prefs_Smart_Data *sd = _pd;
-
    if (file) *file = sd->file;
    if (page) *page = sd->page;
 
-   *ret = EINA_TRUE;
-}
-
-EAPI Eina_Bool
-elm_prefs_data_set(Evas_Object *obj,
-                   Elm_Prefs_Data *prefs_data)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do(obj, elm_obj_prefs_data_set(prefs_data, &ret));
-   return ret;
+   return EINA_TRUE;
 }
 
-static void
-_elm_prefs_data_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_data_set(Eo *obj, Elm_Prefs_Data *sd, Elm_Prefs_Data *prefs_data)
 {
-   Elm_Prefs_Smart_Data *sd = _pd;
-   Elm_Prefs_Data *prefs_data = va_arg(*list, Elm_Prefs_Data *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-
-   if (!sd->root)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!sd->root) return EINA_FALSE;
 
    if (prefs_data && !_elm_prefs_data_cbs_add(obj, prefs_data))
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+      return EINA_FALSE;
 
    if (sd->prefs_data)
      {
@@ -1292,41 +1218,20 @@ end:
    evas_object_smart_callback_call
      (obj, SIG_PAGE_CHANGED, (char *)sd->root->name);
 
-   *ret = EINA_TRUE;
-}
-
-EAPI Elm_Prefs_Data *
-elm_prefs_data_get(const Evas_Object *obj)
-{
-   ELM_PREFS_CHECK(obj) NULL;
-   Elm_Prefs_Data *ret;
-   eo_do((Eo *) obj, elm_obj_prefs_data_get(&ret));
-   return ret;
-}
-
-static void
-_elm_prefs_data_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Prefs_Smart_Data *sd = _pd;
-   Elm_Prefs_Data **ret = va_arg(*list, Elm_Prefs_Data **);
-
-   if (!sd->root) *ret = NULL;
-   else *ret = sd->prefs_data;
+   return EINA_TRUE;
 }
 
-EAPI void
-elm_prefs_autosave_set(Evas_Object *obj,
-                       Eina_Bool autosave)
+EOLIAN static Elm_Prefs_Data*
+_elm_prefs_data_get(Eo *obj EINA_UNUSED, Elm_Prefs_Data *sd)
 {
-   ELM_PREFS_CHECK(obj);
-   eo_do(obj, elm_obj_prefs_autosave_set(autosave));
+   if (!sd->root) return NULL;
+   else return sd->prefs_data;
 }
 
-static void
-_elm_prefs_autosave_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_prefs_autosave_set(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, Eina_Bool 
autosave)
 {
    ELM_PREFS_DATA_GET(obj, sd);
-   Eina_Bool autosave = va_arg(*list, int);
 
    autosave = !!autosave;
 
@@ -1351,38 +1256,15 @@ _elm_prefs_autosave_set(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list)
      }
 }
 
-EAPI Eina_Bool
-elm_prefs_autosave_get(const Evas_Object *obj)
+EOLIAN static Eina_Bool
+_elm_prefs_autosave_get(Eo *obj EINA_UNUSED, Elm_Prefs_Data *sd)
 {
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_autosave_get(&ret));
-   return ret;
+   return sd->autosave;
 }
 
-static void
-_elm_prefs_autosave_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_prefs_reset(Eo *obj EINA_UNUSED, Elm_Prefs_Data *sd, Elm_Prefs_Reset_Mode 
mode)
 {
-   Elm_Prefs_Smart_Data *sd = _pd;
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-
-   *ret = sd->autosave;
-}
-
-EAPI void
-elm_prefs_reset(Evas_Object *obj,
-                Elm_Prefs_Reset_Mode mode)
-{
-   ELM_PREFS_CHECK(obj);
-   eo_do(obj, elm_obj_prefs_reset(mode));
-}
-
-static void
-_elm_prefs_reset(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Elm_Prefs_Smart_Data *sd = _pd;
-   Elm_Prefs_Reset_Mode mode = va_arg(*list, Elm_Prefs_Reset_Mode);
-
    EINA_SAFETY_ON_NULL_RETURN(sd->root);
 
    if (mode == ELM_PREFS_RESET_DEFAULTS)
@@ -1412,57 +1294,32 @@ _elm_prefs_item_api_entry_common(const Evas_Object *obj,
    return ret;
 }
 
-EAPI Eina_Bool
-elm_prefs_item_value_set(Evas_Object *obj,
-                         const char *name,
-                         const Eina_Value *value)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do(obj, elm_obj_prefs_item_value_set(name, value, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_item_value_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_item_value_set(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const char 
*name, const Eina_Value *value)
 {
    const Eina_Value_Type *t, *def_t;
    Elm_Prefs_Item_Node *it;
    Eina_Value it_val;
 
-   const char *name = va_arg(*list, const char *);
-   const Eina_Value *value = va_arg(*list, const Eina_Value *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (!_elm_prefs_item_has_value(it))
      {
         ERR("item %s has no underlying value, you can't operate on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   EINA_SAFETY_ON_NULL_RETURN(value);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(value, EINA_FALSE);
    t = eina_value_type_get(value);
-   if (!t)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!t) return EINA_FALSE;
 
    if (!it->available)
      {
         ERR("widget of item %s has been deleted, we can't set values on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
    if (!it->w_impl->value_get(it->w_obj, &it_val))
@@ -1487,114 +1344,62 @@ _elm_prefs_item_value_set(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
      }
 
    eina_value_flush(&it_val);
-   *ret = EINA_TRUE;
-   return;
+   return EINA_TRUE;
 
 err:
-   *ret = EINA_FALSE;
-}
-
-EAPI Eina_Bool
-elm_prefs_item_value_get(const Evas_Object *obj,
-                         const char *name,
-                         Eina_Value *value)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_item_value_get(name, value, &ret));
-   return ret;
+   return EINA_FALSE;
 }
 
-static void
-_elm_prefs_item_value_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_item_value_get(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const char 
*name, Eina_Value *value)
 {
    Elm_Prefs_Item_Node *it;
 
-   const char *name = va_arg(*list, const char *);
-   Eina_Value *value = va_arg(*list, Eina_Value *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (!_elm_prefs_item_has_value(it))
      {
         ERR("item %s has no underlying value, you can't operate on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   if (!value)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!value) return EINA_FALSE;
 
    if (!it->available)
      {
         ERR("widget of item %s has been deleted, we can't set values on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
    if (!it->w_impl->value_get(it->w_obj, value))
      {
         ERR("failed to fetch value from widget of item %s", it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   *ret = EINA_TRUE;
-}
-
-EAPI const Evas_Object *
-elm_prefs_item_object_get(Evas_Object *obj,
-                          const char *name)
-{
-   ELM_PREFS_CHECK(obj) NULL;
-   const Evas_Object *ret;
-   eo_do(obj, elm_obj_prefs_item_object_get(name, &ret));
-   return ret;
+   return EINA_TRUE;
 }
 
-static void
-_elm_prefs_item_object_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static const Evas_Object*
+_elm_prefs_item_object_get(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name)
 {
    Elm_Prefs_Item_Node *it;
-   const char *name = va_arg(*list, const char *);
-   const Evas_Object **ret = va_arg(*list, const Evas_Object **);
 
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it) *ret = NULL;
-   else *ret = it->w_obj;
-}
-
-EAPI void
-elm_prefs_item_visible_set(Evas_Object *obj,
-                           const char *name,
-                           Eina_Bool visible)
-{
-   ELM_PREFS_CHECK(obj);
-   eo_do(obj, elm_obj_prefs_item_visible_set(name, visible));
+   if (!it) return NULL;
+   else return it->w_obj;
 }
 
-static void
-_elm_prefs_item_visible_set(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static void
+_elm_prefs_item_visible_set(Eo *obj EINA_UNUSED, Elm_Prefs_Data *sd, const 
char *name, Eina_Bool visible)
 {
    Elm_Prefs_Item_Node *it;
    Eina_List *l;
    Evas_Object *lbl, *icon;
 
-   Elm_Prefs_Smart_Data *sd = _pd;
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool visible = va_arg(*list, int);
-
    EINA_SAFETY_ON_NULL_RETURN(name);
    EINA_SAFETY_ON_NULL_RETURN(sd->root);
 
@@ -1670,55 +1475,27 @@ _elm_prefs_item_visible_set(Eo *obj EINA_UNUSED, void 
*_pd, va_list *list)
      }
 }
 
-EAPI Eina_Bool
-elm_prefs_item_visible_get(const Evas_Object *obj,
-                           const char *name)
+EOLIAN static Eina_Bool
+_elm_prefs_item_visible_get(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name)
 {
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_item_visible_get(name, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_item_visible_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
    Elm_Prefs_Item_Node *it;
 
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (!it->available)
      {
         ERR("widget of item %s has been deleted, we can't act on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   *ret = it->visible;
+   return it->visible;
 }
 
-EAPI void
-elm_prefs_item_disabled_set(Evas_Object *obj,
-                            const char *name,
-                            Eina_Bool disabled)
+EOLIAN static void
+_elm_prefs_item_disabled_set(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name, Eina_Bool disabled)
 {
-   ELM_PREFS_CHECK(obj);
-   eo_do(obj, elm_obj_prefs_item_disabled_set(name, disabled));
-}
-
-static void
-_elm_prefs_item_disabled_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool disabled = va_arg(*list, int);
    Elm_Prefs_Item_Node *it;
 
    it = _elm_prefs_item_api_entry_common(obj, name);
@@ -1734,55 +1511,27 @@ _elm_prefs_item_disabled_set(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
    elm_object_disabled_set(it->w_obj, disabled);
 }
 
-EAPI Eina_Bool
-elm_prefs_item_disabled_get(const Evas_Object *obj,
-                            const char *name)
+EOLIAN static Eina_Bool
+_elm_prefs_item_disabled_get(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name)
 {
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_item_disabled_get(name, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_item_disabled_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
    Elm_Prefs_Item_Node *it;
 
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (!it->available)
      {
         ERR("widget of item %s has been deleted, we can't act on it",
             it->name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   *ret = elm_object_disabled_get(it->w_obj);
+   return elm_object_disabled_get(it->w_obj);
 }
 
-EAPI void
-elm_prefs_item_editable_set(Evas_Object *obj,
-                            const char *name,
-                            Eina_Bool editable)
+EOLIAN static void
+_elm_prefs_item_editable_set(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name, Eina_Bool editable)
 {
-   ELM_PREFS_CHECK(obj);
-   eo_do(obj, elm_obj_prefs_item_editable_set(name, editable));
-}
-
-static void
-_elm_prefs_item_editable_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool editable = va_arg(*list, int);
    Elm_Prefs_Item_Node *it;
 
    it = _elm_prefs_item_api_entry_common(obj, name);
@@ -1798,136 +1547,79 @@ _elm_prefs_item_editable_set(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
    it->w_impl->editable_set(it->w_obj, editable);
 }
 
-EAPI Eina_Bool
-elm_prefs_item_editable_get(const Evas_Object *obj,
-                            const char *name)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do((Eo *) obj, elm_obj_prefs_item_editable_get(name, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_item_editable_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_item_editable_get(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const 
char *name)
 {
-   const char *name = va_arg(*list, const char *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
    Elm_Prefs_Item_Node *it;
 
    it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (!it->w_impl->editable_get)
      {
         ERR("the item %s does not implement the 'editable' "
             "property (using widget %s)", it->name, it->widget);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   *ret = it->w_impl->editable_get(it->w_obj);
+   return it->w_impl->editable_get(it->w_obj);
 }
 
-EAPI Eina_Bool
-elm_prefs_item_swallow(Evas_Object *obj,
-                       const char *name,
-                       Evas_Object *child)
-{
-   ELM_PREFS_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret;
-   eo_do(obj, elm_obj_prefs_item_swallow(name, child, &ret));
-   return ret;
-}
-
-static void
-_elm_prefs_item_swallow(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_prefs_item_swallow(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const char 
*name, Evas_Object *child)
 {
    Eina_Value v;
-   const char *name = va_arg(*list, const char *);
-   Evas_Object *child = va_arg(*list, Evas_Object *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+   Eina_Bool ret = EINA_FALSE;
 
    Elm_Prefs_Item_Node *it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!it) return EINA_FALSE;
 
    if (it->type != ELM_PREFS_TYPE_SWALLOW)
      {
         ERR("item %s does not match a SWALLOW item", name);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   if (!eina_value_setup(&v, EINA_VALUE_TYPE_UINT64))
-     {
-        *ret = EINA_FALSE;
-        return;
-     }
+   if (!eina_value_setup(&v, EINA_VALUE_TYPE_UINT64)) return EINA_FALSE;
    if (!eina_value_set(&v, child))
      {
         eina_value_flush(&v);
-        *ret = EINA_FALSE;
-        return;
+        return EINA_FALSE;
      }
 
-   *ret = it->w_impl->value_set(it->w_obj, &v);
+   ret = it->w_impl->value_set(it->w_obj, &v);
    eina_value_flush(&v);
-}
 
-EAPI Evas_Object *
-elm_prefs_item_unswallow(Evas_Object *obj,
-                         const char *name)
-{
-   ELM_PREFS_CHECK(obj) NULL;
-   Evas_Object *ret;
-   eo_do(obj, elm_obj_prefs_item_unswallow(name, &ret));
    return ret;
 }
 
-static void
-_elm_prefs_item_unswallow(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Evas_Object*
+_elm_prefs_item_unswallow(Eo *obj, Elm_Prefs_Data *_pd EINA_UNUSED, const char 
*name)
 {
    Eina_Value v;
-   const char *name = va_arg(*list, const char *);
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
+   Evas_Object *ret = NULL;
 
    Elm_Prefs_Item_Node *it = _elm_prefs_item_api_entry_common(obj, name);
-   if (!it)
-     {
-        *ret = NULL;
-        return;
-     }
+   if (!it) return NULL;
 
    if (it->type != ELM_PREFS_TYPE_SWALLOW)
      {
         ERR("item %s does not match a SWALLOW item", name);
-        *ret = NULL;
-        return;
+        return NULL;
      }
 
-   if (!(it->w_impl->value_get(it->w_obj, &v)))
-     {
-        *ret = NULL;
-        return;
-     }
+   if (!(it->w_impl->value_get(it->w_obj, &v))) return NULL;
 
    if (eina_value_type_get(&v) != EINA_VALUE_TYPE_UINT64 ||
        !eina_value_get(&v, ret))
      {
         eina_value_flush(&v);
-        *ret = NULL;
-        return;
+        return NULL;
      }
 
    eina_value_flush(&v);
+
+   return ret;
 }
 
 static unsigned int
@@ -2173,130 +1865,9 @@ _elm_prefs_shutdown(void)
 }
 
 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_ADD),
-                   _elm_prefs_smart_add),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL),
-                   _elm_prefs_smart_del),
-
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT),
-                   _elm_prefs_smart_focus_next),
-
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_SET),
-                   _elm_prefs_file_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_FILE_GET),
-                   _elm_prefs_file_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_SET),
-                   _elm_prefs_data_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_DATA_GET),
-                   _elm_prefs_data_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET),
-                   _elm_prefs_autosave_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET),
-                   _elm_prefs_autosave_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_RESET),
-                   _elm_prefs_reset),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET),
-                   _elm_prefs_item_value_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET),
-                   _elm_prefs_item_value_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET),
-                   _elm_prefs_item_object_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET),
-                   _elm_prefs_item_visible_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET),
-                   _elm_prefs_item_visible_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET),
-                   _elm_prefs_item_disabled_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET),
-                   _elm_prefs_item_disabled_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET),
-                   _elm_prefs_item_editable_set),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET),
-                   _elm_prefs_item_editable_get),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW),
-                   _elm_prefs_item_swallow),
-        EO_OP_FUNC(ELM_OBJ_PREFS_ID(ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW),
-                   _elm_prefs_item_unswallow),
-        EO_OP_FUNC_SENTINEL
-   };
-   eo_class_funcs_set(klass, func_desc);
-
+_elm_prefs_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_PREFS_SUB_ID_FILE_SET, "Set file and page to populate a given "
-      "prefs widget's interface."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_FILE_GET, "Retrieve file and page bound to a given "
-      "prefs widget."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_DATA_SET, "Set user data for a given prefs 
widget."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_DATA_GET, "Retrieve user data for a given prefs "
-      "widget."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_SET, "Set whether a given prefs widget "
-      "should save its values back (on the user data file, if set) "
-      "automatically on every UI element changes."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_AUTOSAVE_GET, "Get whether a given prefs widget is "
-      "saving its values back automatically on changes."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_RESET, "Reset the values of a given prefs widget to 
"
-      "a previous state."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_SET, "Set the value on a given prefs "
-      "widget's item."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_VALUE_GET, "Retrieve the value of a given 
prefs"
-      " widget's item."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_OBJECT_GET, "Retrieve the Elementary widget "
-      "bound to a given prefs widget's item."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_SET, "Set whether the widget bound to "
-      "given prefs widget's item should be visible or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_VISIBLE_GET, "Retrieve whether the widget 
bound"
-      " to a given prefs widget's item is visible or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_SET, "Set whether the widget bound to 
"
-      "a given prefs widget's item is disabled or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_DISABLED_GET, "Retrieve whether the widget "
-      "bound to a given prefs widget's item is disabled or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_SET, "Set whether the widget bound to 
"
-      "a given prefs widget's item is editable or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_EDITABLE_GET, "Retrieve whether the widget "
-      "bound to a given prefs widget's item is editable or not."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_SWALLOW, "\"Swallows\" an object into a 
SWALLOW"
-      " item of a prefs widget."),
-     EO_OP_DESCRIPTION
-     (ELM_OBJ_PREFS_SUB_ID_ITEM_UNSWALLOW, "Unswallow an object from a SWALLOW"
-      " item of a prefs widget."),
-     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_PREFS_BASE_ID, op_desc, ELM_OBJ_PREFS_SUB_ID_LAST),
-     NULL,
-     sizeof(Elm_Prefs_Smart_Data),
-     _class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(elm_obj_prefs_class_get, &class_desc, ELM_OBJ_WIDGET_CLASS, 
NULL);
+#include "elm_prefs.eo.c"
diff --git a/src/lib/elm_prefs.eo b/src/lib/elm_prefs.eo
new file mode 100644
index 0000000..6be7d85
--- /dev/null
+++ b/src/lib/elm_prefs.eo
@@ -0,0 +1,388 @@
+class Elm_Prefs (Elm_Widget)
+{
+   eo_prefix: elm_obj_prefs;
+   properties {
+      data {
+         set {
+            /*@
+            Set user data for a given prefs widget
+
+            @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+            Once a prefs widget is created, after elm_prefs_file_set() is
+            issued on it, all of its UI elements will get default values, when
+            declared on that file. To fetch an user's own, personal set of
+            those values, one gets to pair a <b>prefs data</b> handle to the
+            prefs widget. This is what this call is intended for.
+
+            Prefs data values from @a prefs_data with keys matching the ones
+            present on the file passed on elm_prefs_file_set() to @a obj will
+            have their values applied to the respective UI elements of the
+            widget.
+
+            When @a obj dies, the values of the elements declared on its @b
+            .epb file (the one set on elm_prefs_file_set()) marked as permanent
+            <b>will be written back</b> to @a prefs_data, if it is writable.
+            One is also able to make this writing event to take place
+            automatically after each UI element modification by using
+            elm_prefs_autosave_set().
+
+            @note @a obj will keep a reference of its own for @a prefs_data,
+            but you should still unreference it by yourself, after the widget
+            is gone.
+
+            @see elm_prefs_data_get()
+
+            @since 1.8 */
+            return Eina_Bool;
+         }
+         get {
+            /*@
+            Retrieve user data for a given prefs widget
+
+            @return A pointer to the user data of a given prefs widget on 
success.
+            @c NULL otherwise.
+
+            @see elm_prefs_data_set() for more details
+
+            @since 1.8 */
+         }
+         values {
+            Elm_Prefs_Data *data; /*@ A valid prefs_data handle */
+         }
+      }
+      file {
+         set {
+            /*@
+            Set file and page to populate a given prefs widget's interface.
+
+            @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+            Elm prefs widgets start blank, with no child widgets. It's meant to
+            have its viewport populated with child elements coming from a
+            declaration file. That file (usually with @b .epb extension), is a
+            binary format (Eet) one, coming from a human-readable textual
+            declaration. This textual form (usually with @b .epc extension) is
+            translated to the binary form by means of the @b prefs_cc compiler.
+
+            With this function, one thus populates a prefs widget with UI
+            elements.
+
+            If @a file is @c NULL, "elm_app_data_dir_get()/preferences.epb"
+            will be used, by default. If @a file is a @b relative path, the
+            prefix "elm_app_data_dir_get()/" will be implicitly used with it.
+            If @a page is @c NULL, it is considered "main", as default.
+
+            @warning If your binary is not properly installed and
+            elm_app_data_dir_get() can't be figured out, a fallback value of
+            "." will be tryed, instead.
+
+            @see elm_prefs_file_get()
+
+            @since 1.8 */
+            return Eina_Bool;
+         }
+         get {
+            /*@
+            Retrieve file and page bound to a given prefs widget.
+
+            @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+            @note Use @c NULL pointers on the components you're not
+            interested in: they'll be ignored by the function.
+
+            @see elm_prefs_file_set() for more information
+
+            @since 1.8 */
+            return Eina_Bool;
+         }
+         values {
+            const char *file; /*@ The @b .epb (binary) file to get contents 
from */
+            const char *page; /*@ The page, inside @a file, where to get item 
contents from */
+         }
+      }
+      autosave {
+         set {
+            /*@
+            Set whether a given prefs widget should save its values back (on
+            the user data file, if set) automatically on every UI element
+            changes.
+
+            If @a autosave is @c EINA_TRUE, every call to
+            elm_prefs_item_value_set(), every
+            Elm_Prefs_Data_Event_Type::ELM_PREFS_DATA_EVENT_ITEM_CHANGED event
+            coming for its prefs data and every UI element direct value
+            changing will implicitly make the prefs values to be flushed back
+            to it prefs data. If a prefs data handle with no writing
+            permissions or no prefs data is set on @a prefs, naturally nothing
+            will happen.
+
+            @see elm_prefs_autosave_get()
+
+            @since 1.8 */
+         }
+         get {
+            /*@
+            Get whether a given prefs widget is saving its values back
+            automatically on changes.
+
+            @return @c EINA_TRUE if @a prefs is saving automatically,
+            @c EINA_FALSE otherwise.
+
+            @see elm_prefs_autosave_set(), for more details
+
+            @since 1.8 */
+         }
+         values {
+            Eina_Bool autosave; /*@ @c EINA_TRUE to save automatically, @c 
EINA_FALSE
+            otherwise. */
+         }
+      }
+   }
+   methods {
+      reset {
+         /*@
+         Reset the values of a given prefs widget to a previous state.
+
+         As can be seen on #Elm_Prefs_Reset_Mode, there are two possible
+         actions to be taken by this call -- either to reset @a prefs'
+         values to the defaults (declared on the @c .epb file it is bound
+         to) or to reset to the state they were before the last modification
+         it got.
+
+         @since 1.8 */
+
+         params {
+            @in Elm_Prefs_Reset_Mode mode; /*@ The reset mode to apply on @a 
prefs */
+         }
+      }
+      item_value_set {
+         /*@
+         Set the value on a given prefs widget's item.
+
+         @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+         This will change the value of item named @a name programatically.
+
+         @see elm_prefs_item_value_get()
+
+         @since 1.8 */
+
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) */
+            @in const Eina_Value *value; /*@ The value to set on the item. It 
should be typed as
+            the item expects, preferably, or a conversion will
+            take place */
+         }
+      }
+      item_value_get {
+         /*@
+         Retrieve the value of a given prefs widget's item.
+
+         @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+         This will retrieve the value of item named @a name.
+
+         @see elm_prefs_item_value_set()
+
+         @since 1.8 */
+
+         const;
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to get value from */
+            @out Eina_Value value; /*@ Where to store the value of the item. 
It will be
+            overwritten and setup with the type the item
+            is bound to */
+         }
+      }
+      item_object_get {
+         /*@
+         Retrieve the Elementary widget bound to a given prefs widget's
+         item.
+
+         @return A valid widget handle, on success, or @c NULL, otherwise
+
+         This will retrieve a handle to the real widget implementing a given
+         item of @a prefs, <b>for read-only</b> actions.
+
+         @warning You should @b never modify the state of the returned
+         widget, because it's meant to be managed by @a prefs, solely.
+
+         @see elm_prefs_item_value_set()
+
+         @since 1.8 */
+
+         return const Evas_Object *;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to get object from */
+         }
+      }
+      item_disabled_set {
+         /*@
+         Set whether the widget bound to a given prefs widget's item is
+         disabled or not.
+
+         @see elm_prefs_item_disabled_get()
+
+         @since 1.8 */
+
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to act on */
+            @in Eina_Bool disabled; /*@ @c EINA_TRUE, to make it disabled, @c 
EINA_FALSE
+            otherwise */
+         }
+      }
+      item_disabled_get {
+         /*@
+         Retrieve whether the widget bound to a given prefs widget's item is
+         disabled or not.
+
+         @return @c EINA_TRUE, if it is disabled, @c EINA_FALSE
+         otherwise
+
+         @see elm_prefs_item_disabled_set()
+
+         @since 1.8 */
+
+         const;
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to get disabled state from */
+         }
+      }
+      item_swallow {
+         /*@
+         "Swallows" an object into a SWALLOW item of a prefs widget.
+
+         @return @c EINA_TRUE, on success, @c EINA_FALSE otherwise
+
+         @see elm_prefs_item_swallow() for more details
+
+         @since 1.8 */
+
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ the name of the SWALLOW item (as 
declared in the prefs
+            collection) */
+            @in Evas_Object *child; /*@ The object to occupy the item */
+         }
+      }
+      item_editable_set {
+         /*@
+         Set whether the widget bound to a given prefs widget's item is
+         editable or not.
+
+         @note Only @c TEXT or @c TEXTAREA items' default widgets implement
+         the 'editable' property. Custom registered widgets may as well
+         implement them.
+
+         @see elm_prefs_item_editable_get()
+
+         @since 1.8 */
+
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to act on */
+            @in Eina_Bool editable; /*@ @c EINA_TRUE, to make it editable, @c 
EINA_FALSE
+            otherwise */
+         }
+      }
+      item_editable_get {
+         /*@
+         Retrieve whether the widget bound to a given prefs widget's item is
+         editable or not.
+
+         @return @c EINA_TRUE, if it is editable, @c EINA_FALSE
+         otherwise
+
+         @see elm_prefs_item_editable_set() for more details
+
+         @since 1.8 */
+
+         const;
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to get editable state from */
+         }
+      }
+      item_unswallow {
+         /*@
+         Unswallow an object from a SWALLOW item of a prefs widget.
+
+         @return The unswallowed object, or NULL on errors
+
+         @see elm_prefs_item_unswallow() for more details
+
+         @since 1.8 */
+
+         return Evas_Object *;
+         params {
+            @in const char *name; /*@ the name of the SWALLOW item (as 
declared in the prefs
+            collection) */
+         }
+      }
+      item_visible_set {
+         /*@
+         Set whether the widget bound to given prefs widget's item should be
+         visible or not.
+
+         Each prefs item may have a default visibility state, declared on
+         the @c .epb @a prefs it was loaded with. By this call one may alter
+         that state, programatically.
+
+         @see elm_prefs_item_visible_get()
+
+         @since 1.8 */
+
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to change visibility of */
+            @in Eina_Bool visible; /*@ @c EINA_TRUE, to make it visible, @c 
EINA_FALSE
+            otherwise */
+         }
+      }
+      item_visible_get {
+         /*@
+         Retrieve whether the widget bound to a given prefs widget's item is
+         visible or not.
+
+         @return @c EINA_TRUE, if it is visible, @c EINA_FALSE
+         otherwise
+
+         @see elm_prefs_item_visible_set() for more details
+
+         @since 1.8 */
+
+         const;
+         return Eina_Bool;
+         params {
+            @in const char *name; /*@ The name of the item (as declared in the 
prefs
+            collection) to get visibility state from */
+         }
+      }
+   }
+   implements {
+      class::constructor;
+      Eo_Base::constructor;
+      Evas_Smart::del;
+      Evas_Smart::add;
+      Elm_Widget::focus_next;
+   }
+   events {
+      page,changed; /*@ s */
+      page,saved; /*@ s */
+      page,reset; /*@ s */
+      page,loaded; /*@ s */
+      item,changed; /*@ s */
+      action; /*@ ss */
+   }
+
+}
diff --git a/src/lib/elm_prefs_eo.h b/src/lib/elm_prefs_eo.h
index 7605f3b..8639a8f 100644
--- a/src/lib/elm_prefs_eo.h
+++ b/src/lib/elm_prefs_eo.h
@@ -3,6 +3,8 @@
  *
  * @{
  */
+#include "elm_prefs.eo.h"
+#if 0
 #define ELM_OBJ_PREFS_CLASS elm_obj_prefs_class_get()
 
 const Eo_Class *elm_obj_prefs_class_get(void) EINA_CONST;
@@ -352,6 +354,7 @@ enum
         EO_TYPECHECK(const char *,name),                       \
         EO_TYPECHECK(Evas_Object **, ret)
 //FIXME: ret == EObject?
+#endif
 /**
  * @}
  */
diff --git a/src/lib/elm_widget_prefs.h b/src/lib/elm_widget_prefs.h
index 82945b5..cd5f682 100644
--- a/src/lib/elm_widget_prefs.h
+++ b/src/lib/elm_widget_prefs.h
@@ -64,8 +64,8 @@ typedef struct _Elm_Prefs_Item_Node
 /**
  * Base widget smart data extended with prefs instance data.
  */
-typedef struct _Elm_Prefs_Smart_Data Elm_Prefs_Smart_Data;
-struct _Elm_Prefs_Smart_Data
+typedef struct _Elm_Prefs_Data Elm_Prefs_Data;
+struct _Elm_Prefs_Data
 {
    Elm_Prefs_Page_Node  *root;
 
@@ -91,7 +91,7 @@ extern const Eina_Hash *elm_prefs_item_type_widgets_map;
 extern const Elm_Prefs_Item_Iface *elm_prefs_item_default_widget;
 
 #define ELM_PREFS_DATA_GET(o, sd) \
-  Elm_Prefs_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_PREFS_CLASS)
+  Elm_Prefs_Data * sd = eo_data_scope_get(o, ELM_OBJ_PREFS_CLASS)
 
 #define ELM_PREFS_ENTRY(o, sd)                                              \
   if (EINA_UNLIKELY(!sd->data_file || !sd->page))                           \

-- 


Reply via email to