jackdanielz pushed a commit to branch master.

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

commit fa17936d032c1d639a9ef7a88704c9a99e0f54bd
Author: Daniel Zaoui <[email protected]>
Date:   Wed Mar 26 17:37:22 2014 +0200

    Eolian: Integration of Table
---
 src/lib/Makefile.am    |  10 +-
 src/lib/elm_table.c    | 289 ++++++++++---------------------------------------
 src/lib/elm_table.eo   | 158 +++++++++++++++++++++++++++
 src/lib/elm_table_eo.h |   4 +
 4 files changed, 226 insertions(+), 235 deletions(-)

diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 64d13b6..7088743 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -652,7 +652,9 @@ BUILT_SOURCES = \
                elm_spinner.eo.c \
                elm_spinner.eo.h \
                elm_systray.eo.c \
-               elm_systray.eo.h
+               elm_systray.eo.h \
+               elm_table.eo.c \
+               elm_table.eo.h
 
 EXTRA_DIST += \
             elm_widget.eo \
@@ -718,7 +720,8 @@ EXTRA_DIST += \
             elm_slider.eo \
             elm_slideshow.eo \
             elm_spinner.eo \
-            elm_systray.eo
+            elm_systray.eo \
+            elm_table.eo
 
 nodist_includesunstable_HEADERS = \
                                  elm_widget.eo.h \
@@ -784,5 +787,6 @@ nodist_includesunstable_HEADERS = \
                                  elm_slider.eo.h \
                                  elm_slideshow.eo.h \
                                  elm_spinner.eo.h \
-                                 elm_systray.eo.h
+                                 elm_systray.eo.h \
+                                 elm_table.eo.h
 
diff --git a/src/lib/elm_table.c b/src/lib/elm_table.c
index 36cb02f..74792e0 100644
--- a/src/lib/elm_table.c
+++ b/src/lib/elm_table.c
@@ -7,34 +7,27 @@
 #include "elm_priv.h"
 #include "elm_widget_table.h"
 
-EAPI Eo_Op ELM_OBJ_TABLE_BASE_ID = EO_NOOP;
-
 #define MY_CLASS ELM_OBJ_TABLE_CLASS
 
 #define MY_CLASS_NAME "Elm_Table"
 #define MY_CLASS_NAME_LEGACY "elm_table"
 
-static void
-_elm_table_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_table_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_focus_next(Eo *obj, void *_pd EINA_UNUSED, 
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_Bool int_ret;
 
    const Eina_List *items;
    Eina_List *(*list_free)(Eina_List *list);
    void *(*list_data_get)(const Eina_List *list);
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
    /* Focus chain */
    /* TODO: Change this to use other chain */
@@ -50,39 +43,32 @@ _elm_table_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list)
         list_data_get = eina_list_data_get;
         list_free = eina_list_free;
 
-        if (!items) return;
+        if (!items) return EINA_FALSE;
      }
 
    int_ret = elm_widget_focus_list_next_get(obj, items, list_data_get, dir, 
next);
 
    if (list_free) list_free((Eina_List *)items);
 
-   if (ret) *ret = int_ret;
+   return int_ret;
 }
 
-static void
-_elm_table_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, void 
*_pd EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_table_smart_focus_direction(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_focus_direction(Eo *obj, void *_pd EINA_UNUSED, const 
Evas_Object *base, double degree, Evas_Object **direction, double *weight)
 {
-   Evas_Object *base = va_arg(*list, Evas_Object *);
-   double degree = va_arg(*list, double);
-   Evas_Object **direction = va_arg(*list, Evas_Object **);
-   double *weight = va_arg(*list, double *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
 
    const Eina_List *items;
    Eina_List *(*list_free)(Eina_List *list);
    void *(*list_data_get)(const Eina_List *list);
 
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
 
    /* Focus chain */
    /* TODO: Change this to use other chain */
@@ -98,7 +84,7 @@ _elm_table_smart_focus_direction(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
         list_data_get = eina_list_data_get;
         list_free = eina_list_free;
 
-        if (!items) return;
+        if (!items) return EINA_FALSE;
      }
 
    int_ret = elm_widget_focus_list_direction_get
@@ -107,7 +93,7 @@ _elm_table_smart_focus_direction(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
    if (list_free)
      list_free((Eina_List *)items);
 
-   if (ret) *ret = int_ret;
+   return int_ret;
 }
 
 static void
@@ -118,20 +104,17 @@ _mirrored_set(Evas_Object *obj, Eina_Bool rtl)
    evas_object_table_mirrored_set(wd->resize_obj, rtl);
 }
 
-static void
-_elm_table_smart_theme(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_theme_apply(Eo *obj, void *sd EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
-
    Eina_Bool super_ret;
    eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&super_ret));
    if (super_ret == EINA_FALSE)
-      return;
+      return EINA_FALSE;
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static void
@@ -165,24 +148,21 @@ _on_size_hints_changed(void *data,
    _sizing_eval(data);
 }
 
-static void
-_elm_table_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_table_elm_widget_sub_object_del(Eo *obj, void *_pd EINA_UNUSED, 
Evas_Object *child)
 {
-   Evas_Object *child = va_arg(*list, Evas_Object *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
 
    eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_del(child, &int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    _sizing_eval(obj);
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_table_smart_add(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_table_evas_smart_add(Eo *obj, void *_pd EINA_UNUSED)
 {
    Evas_Object *table;
 
@@ -202,8 +182,8 @@ _elm_table_smart_add(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list EINA_UNUSED)
    eo_do(obj, elm_obj_widget_theme_apply(NULL));
 }
 
-static void
-_elm_table_smart_del(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_table_evas_smart_del(Eo *obj, void *_pd EINA_UNUSED)
 {
    Eina_List *l;
    Evas_Object *child;
@@ -238,109 +218,51 @@ elm_table_add(Evas_Object *parent)
    return obj;
 }
 
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_table_eo_base_constructor(Eo *obj, void *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, eo_constructor());
    eo_do(obj,
          evas_obj_type_set(MY_CLASS_NAME_LEGACY));
 }
 
-EAPI void
-elm_table_homogeneous_set(Evas_Object *obj,
-                          Eina_Bool homogeneous)
-{
-   ELM_TABLE_CHECK(obj);
-   eo_do(obj, elm_obj_table_homogeneous_set(homogeneous));
-}
-
-static void
-_homogeneous_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_homogeneous_set(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool 
homogeneous)
 {
-   Eina_Bool homogeneous = va_arg(*list, int);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    evas_object_table_homogeneous_set
      (wd->resize_obj, homogeneous);
 }
 
-EAPI Eina_Bool
-elm_table_homogeneous_get(const Evas_Object *obj)
+EOLIAN static Eina_Bool
+_elm_table_homogeneous_get(Eo *obj, void *_pd EINA_UNUSED)
 {
-   ELM_TABLE_CHECK(obj) EINA_FALSE;
-   Eina_Bool ret = EINA_FALSE;
-   eo_do((Eo *) obj, elm_obj_table_homogeneous_get(&ret));
-   return ret;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
+   return evas_object_table_homogeneous_get(wd->resize_obj);
 }
 
-static void
-_homogeneous_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_padding_set(Eo *obj, void *_pd EINA_UNUSED, Evas_Coord horizontal, 
Evas_Coord vertical)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-   *ret = evas_object_table_homogeneous_get(wd->resize_obj);
-}
-
-EAPI void
-elm_table_padding_set(Evas_Object *obj,
-                      Evas_Coord horizontal,
-                      Evas_Coord vertical)
-{
-   ELM_TABLE_CHECK(obj);
-   eo_do(obj, elm_obj_table_padding_set(horizontal, vertical));
-}
-
-static void
-_padding_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   Evas_Coord horizontal = va_arg(*list, Evas_Coord);
-   Evas_Coord vertical = va_arg(*list, Evas_Coord);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    evas_object_table_padding_set
      (wd->resize_obj, horizontal, vertical);
 }
 
-EAPI void
-elm_table_padding_get(const Evas_Object *obj,
-                      Evas_Coord *horizontal,
-                      Evas_Coord *vertical)
-{
-   ELM_TABLE_CHECK(obj);
-   eo_do((Eo *) obj, elm_obj_table_padding_get(horizontal, vertical));
-}
-
-static void
-_padding_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_padding_get(Eo *obj, void *_pd EINA_UNUSED, Evas_Coord *horizontal, 
Evas_Coord *vertical)
 {
-   Evas_Coord *horizontal = va_arg(*list, Evas_Coord *);
-   Evas_Coord *vertical = va_arg(*list, Evas_Coord *);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    evas_object_table_padding_get
      (wd->resize_obj, horizontal, vertical);
 }
 
-EAPI void
-elm_table_pack(Evas_Object *obj,
-               Evas_Object *subobj,
-               int col,
-               int row,
-               int colspan,
-               int rowspan)
+EOLIAN static void
+_elm_table_pack(Eo *obj, void *_pd EINA_UNUSED, Evas_Object *subobj, int col, 
int row, int colspan, int rowspan)
 {
-   ELM_TABLE_CHECK(obj);
-   eo_do(obj, elm_obj_table_pack(subobj, col, row, colspan, rowspan));
-}
-
-static void
-_pack(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   Evas_Object *subobj = va_arg(*list, Evas_Object *);
-   int col = va_arg(*list, int);
-   int row = va_arg(*list, int);
-   int colspan = va_arg(*list, int);
-   int rowspan = va_arg(*list, int);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    if (col < 0)
@@ -386,18 +308,9 @@ _pack(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
    evas_object_table_pack(wd->resize_obj, subobj, col, row, colspan, rowspan);
 }
 
-EAPI void
-elm_table_unpack(Evas_Object *obj,
-                 Evas_Object *subobj)
+EOLIAN static void
+_elm_table_unpack(Eo *obj, void *_pd EINA_UNUSED, Evas_Object *subobj)
 {
-   ELM_TABLE_CHECK(obj);
-   eo_do(obj, elm_obj_table_unpack(subobj));
-}
-
-static void
-_unpack(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   Evas_Object *subobj = va_arg(*list, Evas_Object *);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    elm_widget_sub_object_del(obj, subobj);
@@ -417,15 +330,9 @@ elm_table_pack_set(Evas_Object *subobj,
    eo_do(obj, elm_obj_table_pack_set(subobj, col, row, colspan, rowspan));
 }
 
-static void
-_pack_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_pack_set(Eo *obj, void *_pd EINA_UNUSED, Evas_Object *subobj, int 
col, int row, int colspan, int rowspan)
 {
-   Evas_Object *subobj = va_arg(*list, Evas_Object *);
-   int col = va_arg(*list, int);
-   int row = va_arg(*list, int);
-   int colspan = va_arg(*list, int);
-   int rowspan = va_arg(*list, int);
-
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    evas_object_table_pack(wd->resize_obj, subobj, col, row, colspan, rowspan);
@@ -443,15 +350,9 @@ elm_table_pack_get(Evas_Object *subobj,
    eo_do(obj, elm_obj_table_pack_get(subobj, col, row, colspan, rowspan));
 }
 
-static void
-_pack_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_pack_get(Eo *obj, void *_pd EINA_UNUSED, Evas_Object *subobj, int 
*col, int *row, int *colspan, int *rowspan)
 {
-   Evas_Object *subobj = va_arg(*list, Evas_Object *);
-   int *col = va_arg(*list, int *);
-   int *row = va_arg(*list, int *);
-   int *colspan = va_arg(*list, int *);
-   int *rowspan = va_arg(*list, int *);
-
    unsigned short icol, irow, icolspan, irowspan;
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
@@ -463,102 +364,26 @@ _pack_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
    if (rowspan) *rowspan = irowspan;
 }
 
-EAPI void
-elm_table_clear(Evas_Object *obj,
-                Eina_Bool clear)
+EOLIAN static void
+_elm_table_clear(Eo *obj, void *_pd EINA_UNUSED, Eina_Bool clear)
 {
-   ELM_TABLE_CHECK(obj);
-   eo_do(obj, elm_obj_table_clear(clear));
-}
-
-static void
-_clear(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
-{
-   Eina_Bool clear = va_arg(*list, int);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
 
    evas_object_table_clear(wd->resize_obj, clear);
 }
 
-EAPI Evas_Object *
-elm_table_child_get(const Evas_Object *obj, int col, int row)
+EOLIAN static Evas_Object*
+_elm_table_child_get(Eo *obj, void *_pd EINA_UNUSED, int col, int row)
 {
-   Evas_Object *ret;
-   ELM_TABLE_CHECK(obj) NULL;
+   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
 
-   eo_do((Eo *)obj, elm_obj_table_child_get(col, row, &ret));
-   return ret;
+   return evas_object_table_child_get(wd->resize_obj, col, row);
 }
 
-static void
-_child_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_table_class_constructor(Eo_Class *klass)
 {
-   int col = va_arg(*list, int);
-   int row = va_arg(*list, int);
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-
-   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
-
-   if (ret)
-     *ret = evas_object_table_child_get(wd->resize_obj, col, row);
-}
-
-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_table_smart_add),
-        EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), 
_elm_table_smart_del),
-
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), 
_elm_table_smart_theme),
-        
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), 
_elm_table_smart_focus_next_manager_is),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), 
_elm_table_smart_focus_next),
-        
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), 
_elm_table_smart_focus_direction_manager_is),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION), 
_elm_table_smart_focus_direction),
-        EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_DEL), 
_elm_table_sub_object_del),
-
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), 
_homogeneous_set),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), 
_homogeneous_get),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_SET), 
_padding_set),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PADDING_GET), 
_padding_get),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK), _pack),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_UNPACK), _unpack),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_SET), _pack_set),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_PACK_GET), _pack_get),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CLEAR), _clear),
-        EO_OP_FUNC(ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CHILD_GET), 
_child_get),
-        EO_OP_FUNC_SENTINEL
-   };
-   eo_class_funcs_set(klass, func_desc);
-
    evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
-static const Eo_Op_Description op_desc[] = {
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET, "Set the 
homogeneous layout in the table."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET, "Get the current 
table homogeneous mode."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_PADDING_SET, "Set padding between 
cells."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_PADDING_GET, "Get padding between 
cells."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_PACK, "Add a subobject on the 
table with the coordinates passed."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_UNPACK, "Remove child from 
table."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_PACK_SET, "Set the packing 
location of an existing child of the table."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_PACK_GET, "Get the packing 
location of an existing child of the table."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_CLEAR, "Faster way to remove all 
child objects from a table object."),
-     EO_OP_DESCRIPTION(ELM_OBJ_TABLE_SUB_ID_CHILD_GET, "Get child object of 
table at given coordinates."),
-     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_TABLE_BASE_ID, op_desc, 
ELM_OBJ_TABLE_SUB_ID_LAST),
-     NULL,
-     0,
-     _class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(elm_obj_table_class_get, &class_desc, ELM_OBJ_WIDGET_CLASS, 
NULL);
+#include "elm_table.eo.c"
diff --git a/src/lib/elm_table.eo b/src/lib/elm_table.eo
new file mode 100644
index 0000000..710959c
--- /dev/null
+++ b/src/lib/elm_table.eo
@@ -0,0 +1,158 @@
+class Elm_Table (Elm_Widget)
+{
+   eo_prefix: elm_obj_table;
+   data: null;
+   properties {
+      homogeneous {
+         set {
+            /*@
+            @brief Set the homogeneous layout in the table
+
+            @ingroup Table */
+         }
+         get {
+            /*@
+            @brief Get the current table homogeneous mode.
+
+            @return A boolean to indicating if the layout is homogeneous in 
the table
+            (EINA_TRUE = homogeneous,  EINA_FALSE = no homogeneous)
+
+            @ingroup Table */
+         }
+         values {
+            Eina_Bool homogeneous; /*@ A boolean to set if the layout is 
homogeneous in the
+            table (EINA_TRUE = homogeneous,  EINA_FALSE = no homogeneous) */
+         }
+      }
+      padding {
+         set {
+            /*@
+            @brief Set padding between cells.
+
+            Default value is 0.
+
+            @ingroup Table */
+         }
+         get {
+            /*@
+            @brief Get padding between cells.
+
+            @ingroup Table */
+         }
+         values {
+            Evas_Coord horizontal; /*@ set the horizontal padding. */
+            Evas_Coord vertical; /*@ set the vertical padding. */
+         }
+      }
+   }
+   methods {
+      clear {
+         /*@
+         @brief Faster way to remove all child objects from a table object.
+
+         @ingroup Table */
+
+         params {
+            @in Eina_Bool clear; /*@ If true, will delete children, else just 
remove from table. */
+         }
+      }
+      child_get {
+         /*@
+         @brief Get child object of table at given coordinates.
+
+         @return Child of object if find if not return NULL. */
+
+         const;
+         return Evas_Object *;
+         params {
+            @in int col; /*@ Column number of child object */
+            @in int row; /*@ Row number of child object */
+         }
+      }
+      pack_set {
+         /*@
+         @brief Set the packing location of an existing child of the table
+
+         Modifies the position of an object already in the table.
+
+         @note All positioning inside the table is relative to rows and 
columns, so
+         a value of 0 for col and row, means the top left cell of the table, 
and a
+         value of 1 for colspan and rowspan means @p subobj only takes that 1 
cell.
+
+         @ingroup Table */
+
+         params {
+            @in Evas_Object *subobj; /*@ The subobject to be modified in the 
table */
+            @in int column; /*@ Column number */
+            @in int row; /*@ Row number */
+            @in int colspan; /*@ colspan */
+            @in int rowspan; /*@ rowspan */
+         }
+         legacy null;
+      }
+      pack_get {
+         /*@
+         @brief Get the packing location of an existing child of the table
+
+         @see elm_table_pack_set()
+
+         @ingroup Table */
+
+         params {
+            @in Evas_Object *subobj; /*@ The subobject to be modified in the 
table */
+            @out int column; /*@ Column number */
+            @out int row; /*@ Row number */
+            @out int colspan; /*@ colspan */
+            @out int rowspan; /*@ rowspan */
+         }
+         legacy null;
+      }
+      unpack {
+         /*@
+         @brief Remove child from table.
+
+         @ingroup Table */
+
+         params {
+            @in Evas_Object *subobj; /*@ The subobject */
+         }
+      }
+      pack {
+         /*@
+         @brief Add a subobject on the table with the coordinates passed
+
+         @note All positioning inside the table is relative to rows and 
columns, so
+         a value of 0 for x and y, means the top left cell of the table, and a
+         value of 1 for w and h means @p subobj only takes that 1 cell.
+
+         Note that columns and rows only guarantee 16bit unsigned values at 
best.
+         That means that col + colspan AND row + rowspan must fit inside 16bit
+         unsigned values cleanly. You will be warned once values exceed 15bit
+         storage, and attempting to use values not able to fit in 16bits will
+         result in failure.
+
+         @ingroup Table */
+
+         params {
+            @in Evas_Object *subobj; /*@ The subobject to be added to the 
table */
+            @in int column; /*@ Column number */
+            @in int row; /*@ Row number */
+            @in int colspan; /*@ colspan */
+            @in int rowspan; /*@ rowspan */
+         }
+      }
+   }
+   implements {
+      class::constructor;
+      Eo_Base::constructor;
+      Evas_Smart::add;
+      Evas_Smart::del;
+      Elm_Widget::focus_direction;
+      Elm_Widget::focus_next_manager_is;
+      Elm_Widget::focus_next;
+      Elm_Widget::focus_direction_manager_is;
+      Elm_Widget::theme_apply;
+      Elm_Widget::sub_object_del;
+   }
+
+}
diff --git a/src/lib/elm_table_eo.h b/src/lib/elm_table_eo.h
index da82ca9..f3ae2d4 100644
--- a/src/lib/elm_table_eo.h
+++ b/src/lib/elm_table_eo.h
@@ -1,3 +1,6 @@
+#include "elm_table.eo.h"
+
+#if 0
 #define ELM_OBJ_TABLE_CLASS elm_obj_table_class_get()
 
 const Eo_Class *elm_obj_table_class_get(void) EINA_CONST;
@@ -175,3 +178,4 @@ enum
  * @ingroup Table
  */
 #define elm_obj_table_child_get(col, row, ret) 
ELM_OBJ_TABLE_ID(ELM_OBJ_TABLE_SUB_ID_CHILD_GET), EO_TYPECHECK(int, col), 
EO_TYPECHECK(int, row), EO_TYPECHECK(Evas_Object **, ret)
+#endif

-- 


Reply via email to