Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        Ewl.h.in Makefile.am ewl_tree2.c ewl_tree2.h 
Added Files:
        ewl_model.c ewl_model.h ewl_view.c ewl_view.h 


Log Message:
- working on ewl_tree2

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/Ewl.h.in,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- Ewl.h.in    4 Feb 2006 05:58:48 -0000       1.30
+++ Ewl.h.in    6 Feb 2006 03:40:26 -0000       1.31
@@ -266,6 +266,9 @@
 #include <ewl_object.h>
 #include <ewl_widget.h>
 
+#include <ewl_model.h>
+#include <ewl_view.h>
+
 #include <ewl_attach.h>
 
 #include <ewl_container.h>
@@ -333,6 +336,7 @@
 #include <ewl_dnd.h>
 
 #include <ewl_tree.h>
+#include <ewl_tree2.h>
 
 #ifdef __cplusplus
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/Makefile.am,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- Makefile.am 4 Feb 2006 05:58:48 -0000       1.21
+++ Makefile.am 6 Feb 2006 03:40:26 -0000       1.22
@@ -49,6 +49,7 @@
        ewl_menu_base.h \
        ewl_menu_item.h \
        ewl_misc.h \
+       ewl_model.h \
        ewl_notebook.h \
        ewl_object.h \
        ewl_overlay.h \
@@ -70,6 +71,7 @@
        ewl_tree.h \
        ewl_tree2.h \
        ewl_theme.h \
+       ewl_view.h \
        ewl_widget.h \
        ewl_window.h
 
@@ -114,6 +116,7 @@
        ewl_menu_base.c \
        ewl_menu_item.c \
        ewl_misc.c \
+       ewl_model.c \
        ewl_notebook.c \
        ewl_object.c \
        ewl_overlay.c \
@@ -135,6 +138,7 @@
        ewl_theme.c \
        ewl_tree.c \
        ewl_tree2.c \
+       ewl_view.c \
        ewl_widget.c \
        ewl_window.c \
        ewl_private.h \
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_tree2.c 30 Jan 2006 03:01:21 -0000      1.4
+++ ewl_tree2.c 6 Feb 2006 03:40:26 -0000       1.5
@@ -2,7 +2,8 @@
 #include "ewl_debug.h"
 #include "ewl_macros.h"
 #include "ewl_private.h"
-#include "ewl_tree2.h"
+
+static void ewl_tree2_cb_column_free(void *data);
 
 /**
  * @return Returns NULL on failure, a new tree widget on success.
@@ -19,7 +20,8 @@
        if (!w)
                DRETURN_PTR(NULL, DLEVEL_STABLE);
 
-       if (!ewl_tree2_init(EWL_TREE2(w))) {
+       if (!ewl_tree2_init(EWL_TREE2(w))) 
+       {
                ewl_widget_destroy(w);
                DRETURN_PTR(NULL, DLEVEL_STABLE);
        }
@@ -46,200 +48,467 @@
        ewl_widget_appearance_set(EWL_WIDGET(tree), EWL_TREE2_TYPE);
        ewl_widget_inherit(EWL_WIDGET(tree), EWL_TREE2_TYPE);
 
-       DRETURN_INT(TRUE, DLEVEL_STABLE);
+       tree->columns = ecore_list_new();
+       ecore_list_set_free_cb(tree->columns, ewl_tree2_cb_column_free);
+
+       tree->mode = EWL_TREE_MODE_NONE;
+
+{
+Ewl_Widget *l;
+l = ewl_label_new();
+ewl_label_text_set(EWL_LABEL(l), "TEST");
+ewl_container_child_append(EWL_CONTAINER(tree), l);
+ewl_widget_show(l);
 }
 
-/*
- * MODEL CODE BEGINS HERE
- */
+       tree->header = ewl_hpaned_new();
+       ewl_container_child_append(EWL_CONTAINER(tree), tree->header);
+       ewl_widget_appearance_set(EWL_WIDGET(tree->header), "tree_header");
+       ewl_object_fill_policy_set(EWL_OBJECT(tree->header), 
+                               EWL_FLAG_FILL_HFILL | EWL_FLAG_FILL_VSHRINK);
+       ewl_widget_show(tree->header);
+
+       ewl_tree2_headers_visible_set(tree, TRUE);
+       ewl_tree2_fixed_rows_set(tree, FALSE);
+
+       ewl_callback_append(EWL_WIDGET(tree), EWL_CALLBACK_CONFIGURE,
+                                       ewl_tree2_cb_configure, NULL);
+       ewl_callback_prepend(EWL_WIDGET(tree), EWL_CALLBACK_DESTROY,
+                                       ewl_tree2_cb_destroy, NULL);
+
+       ewl_widget_focusable_set(EWL_WIDGET(tree), FALSE);
+
+       DRETURN_INT(TRUE, DLEVEL_STABLE);
+}
 
 /**
+ * @param tree: The Ewl_Tree to set the data into
+ * @param data: The data to set into the tree
+ * @return Returns no value.
  */
-Ewl_Model *
-ewl_model_new(void)
+void
+ewl_tree2_data_set(Ewl_Tree2 *tree, void *data)
 {
-       Ewl_Model *model;
-
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
 
-       model = NEW(Ewl_Model, 1);
-       if (!ewl_model_init(model))
-               FREE(model);
+       tree->data = data;
 
-       DRETURN_PTR(model, DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The Ewl_Tree to get the data from
+ * @return Returns the data currently set into the tree or NULL on failure
  */
-int
-ewl_model_init(Ewl_Model *model)
+void *
+ewl_tree2_data_get(Ewl_Tree2 *tree)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("model", model, FALSE);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("tree", tree, NULL);
+       DCHECK_TYPE_RET("tree", tree, EWL_TREE2_TYPE, NULL);
 
-       DRETURN_INT(TRUE, DLEVEL_UNSTABLE);
+       DRETURN_PTR(tree->data, DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The Ewl_Tree to append the column too
+ * @param model: The model to use for this column
+ * @param view: The view to use for this column
+ * @return Returns no value.
  */
 void
-ewl_model_fetch_set(Ewl_Model *m, Ewl_Model_Fetch get)
+ewl_tree2_column_append(Ewl_Tree2 *tree, Ewl_Model *model, Ewl_View *view)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR("m", m);
+       Ewl_Tree2_Column *c;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_PARAM_PTR("model", model);
+       DCHECK_PARAM_PTR("view", view);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       c = ewl_tree2_column_new();
+       if (!c)
+       {
+               DWARNING("Unable to create new tree column.\n");
+               DRETURN(DLEVEL_STABLE);
+       }
 
-       m->fetch = get;
+       ewl_tree2_column_model_set(c, model);
+       ewl_tree2_column_view_set(c, view);
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       ecore_list_append(tree->columns, c);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The Ewl_Tree to prepend the column too
+ * @param model: The model to use for this column
+ * @param view: The view to use for this column
+ * @return Returns no value.
  */
-Ewl_Model_Fetch
-ewl_model_fetch_get(Ewl_Model *m)
+void
+ewl_tree2_column_prepend(Ewl_Tree2 *tree, Ewl_Model *model, Ewl_View *view)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("m", m, NULL);
+       Ewl_Tree2_Column *c;
 
-       DRETURN_PTR(m->fetch, DLEVEL_UNSTABLE);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_PARAM_PTR("model", model);
+       DCHECK_PARAM_PTR("view", view);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       c = ewl_tree2_column_new();
+       if (!c)
+       {
+               DWARNING("Unable to create new tree column.\n");
+               DRETURN(DLEVEL_STABLE);
+       }
+
+       ewl_tree2_column_model_set(c, model);
+       ewl_tree2_column_view_set(c, view);
+
+       ecore_list_prepend(tree->columns, c);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The Ewl_Tree to insert the column into
+ * @param model: The model to use for this column
+ * @param view: The view to use for this column
+ * @param idx: The index to insert into 
+ * @return Returns no value.
  */
 void
-ewl_model_subfetch_set(Ewl_Model *m, Ewl_Model_Fetch get)
+ewl_tree2_column_insert(Ewl_Tree2 *tree, Ewl_Model *model, Ewl_View *view, 
+                                                       unsigned int idx)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR("m", m);
+       Ewl_Tree2_Column *c;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_PARAM_PTR("model", model);
+       DCHECK_PARAM_PTR("view", view);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       c = ewl_tree2_column_new();
+       if (!c)
+       {
+               DWARNING("Unable to create new tree column.\n");
+               DRETURN(DLEVEL_STABLE);
+       }
+
+       ewl_tree2_column_model_set(c, model);
+       ewl_tree2_column_view_set(c, view);
 
-       m->subfetch = get;
+       ecore_list_goto_index(tree->columns, idx);
+       ecore_list_insert(tree->columns, c);
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to remove the column from
+ * @param idx: The column index to remove
+ * @return Returns no value
  */
-Ewl_Model_Fetch
-ewl_model_subfetch_get(Ewl_Model *m)
+void
+ewl_tree2_column_remove(Ewl_Tree2 *tree, unsigned int idx)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("m", m, NULL);
+       Ewl_Tree2_Column *c;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       ecore_list_goto_index(tree->columns, idx);
+       c = ecore_list_remove(tree->columns);
+
+       ewl_tree2_column_destroy(c);
 
-       DRETURN_PTR(m->subfetch, DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to toggle the header visibility
+ * @param visible: The visiblity to set the tree to (TRUE == on, FALSE == off)
+ * @return Returns no value
  */
 void
-ewl_model_sort_set(Ewl_Model *m, Ewl_Model_Sort sort)
+ewl_tree2_headers_visible_set(Ewl_Tree2 *tree, unsigned char visible)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR("m", m);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
 
-       m->sort = sort;
+       tree->headers_visible = !!visible;
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       if (!tree->headers_visible)
+               ewl_widget_hide(tree->header);
+       else
+               ewl_widget_show(tree->header);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to get the header visiblity from
+ * @return Returns the current header visiblity of the tree
  */
-Ewl_Model_Sort
-ewl_model_sort_get(Ewl_Model *m)
+unsigned int
+ewl_tree2_headers_visible_get(Ewl_Tree2 *tree)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("m", m, NULL);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("tree", tree, FALSE);
+       DCHECK_TYPE_RET("tree", tree, EWL_TREE2_TYPE, FALSE);
 
-       DRETURN_PTR(m->sort, DLEVEL_UNSTABLE);
+       DRETURN_INT(tree->headers_visible, DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to get the selected cells from
+ * @return Returns an Ecore_List of cells selected in the tree
+ */
+Ecore_List *
+ewl_tree2_selected_cells_get(Ewl_Tree2 *tree)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("tree", tree, FALSE);
+       DCHECK_TYPE_RET("tree", tree, EWL_TREE2_TYPE, FALSE);
+
+       DRETURN_PTR(tree->selected, DLEVEL_STABLE);
+}
+
+/**
+ * @param tree: The tree to clear the selected cells from
+ * @return Returns no value.
  */
 void
-ewl_model_count_set(Ewl_Model *m, Ewl_Model_Count count)
+ewl_tree2_selected_cells_clear(Ewl_Tree2 *tree)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR("m", m);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       if (tree->mode == EWL_TREE_MODE_NONE)
+               DRETURN(DLEVEL_STABLE);
 
-       m->count = count;
+       ecore_list_clear(tree->selected);
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-/*
- * VIEW CODE BEGINS HERE
+/**
+ * @param tree: The tree to get the mode from
+ * @return Returns the current Ewl_Tree_Mode of the tree
  */
+Ewl_Tree_Mode 
+ewl_tree2_mode_get(Ewl_Tree2 *tree)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("tree", tree, EWL_TREE_MODE_NONE);
+       DCHECK_TYPE_RET("tree", tree, EWL_TREE2_TYPE, EWL_TREE_MODE_NONE);
+
+       DRETURN_INT(tree->mode, DLEVEL_STABLE);
+}
 
 /**
+ * @param tree: The Ewl_Tree to set the mode into
+ * @param mode: The Ewl_Tree_Mode to set into the tree
+ * @return Returns no value.
  */
-Ewl_View *
-ewl_view_new(void)
+void 
+ewl_tree2_mode_set(Ewl_Tree2 *tree, Ewl_Tree_Mode mode)
 {
-       Ewl_View *view;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
 
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
+       if (tree->mode == mode)
+               DRETURN(DLEVEL_STABLE);
 
-       view = NEW(Ewl_View, 1);
-       if (!ewl_view_init(view))
-               FREE(view);
+       tree->mode = mode;
+ 
+       /* if the mode is none then we don't care about the selected list */
+       if (tree->mode == EWL_TREE_MODE_NONE)
+       {
+               if (tree->selected)
+                       ecore_list_destroy(tree->selected);
+       }
+       else
+       {
+               if (!tree->selected)
+                       tree->selected = ecore_list_new();
+       }
 
-       DRETURN_PTR(view, DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to set the fixed row flag into
+ * @param fixed: The fixed row flag to set into the tree
+ * @return Returns no value.
  */
-int
-ewl_view_init(Ewl_View *view)
+void
+ewl_tree2_fixed_rows_set(Ewl_Tree2 *tree, unsigned int fixed)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("view", view, FALSE);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("tree", tree);
+       DCHECK_TYPE("tree", tree, EWL_TREE2_TYPE);
+
+       tree->fixed = fixed;
 
-       DRETURN_INT(TRUE, DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 /**
+ * @param tree: The tree to get the fixed row flag from
+ * @return Returns the current fixed row flag of the tree
  */
+unsigned int
+ewl_tree2_fixed_rows_get(Ewl_Tree2 *tree)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("tree", tree, FALSE);
+       DCHECK_TYPE_RET("tree", tree, EWL_TREE2_TYPE, FALSE);
+
+       DRETURN_INT(tree->fixed, DLEVEL_STABLE);
+}
+
 void
-ewl_view_constructor_set(Ewl_View *v, Ewl_View_Constructor construct)
+ewl_tree2_cb_destroy(Ewl_Widget *w, void *ev __UNUSED__, void *data __UNUSED__)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR("v", v);
+       Ewl_Tree2 *t;
 
-       v->construct = construct;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
+
+       t = EWL_TREE2(w);
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       ecore_list_destroy(t->columns);
+       if (t->selected) ecore_list_destroy(t->selected);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-/**
- */
-Ewl_View_Constructor
-ewl_view_constructor_get(Ewl_View *v)
+void
+ewl_tree2_cb_configure(Ewl_Widget *w, void *ev __UNUSED__, void *data 
__UNUSED__)
+{
+       Ewl_Tree2 *tree;
+       Ewl_Tree2_Column *col;
+       int column = 0;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, EWL_TREE2_TYPE);
+
+       tree = EWL_TREE2(w);
+
+       /* setup the headers */
+       ewl_container_reset(EWL_CONTAINER(tree->header));
+       ecore_list_goto_first(tree->columns);
+       while ((col = ecore_list_next(tree->columns)))
+       {
+               Ewl_Widget *h;
+
+               h = col->model->header_fetch(tree->data, column);
+               ewl_container_child_append(EWL_CONTAINER(tree->header), h);
+
+printf("%s\n", ewl_label_text_get(EWL_LABEL(h)));
+
+               column ++;
+       }
+
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+static void
+ewl_tree2_cb_column_free(void *data)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("v", v, NULL);
+       Ewl_Tree2_Column *c;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
 
-       DRETURN_PTR(v->construct, DLEVEL_UNSTABLE);
+       c = data;
+       ewl_tree2_column_destroy(c);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-/**
+/*
+ * Ewl_Tree2_Column stuff
  */
+Ewl_Tree2_Column *
+ewl_tree2_column_new(void)
+{
+       Ewl_Tree2_Column *c;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+
+       c = NEW(Ewl_Tree2_Column, 1);
+
+       DRETURN_PTR(c, DLEVEL_STABLE);
+}
+
 void
-ewl_view_assign_set(Ewl_View *v, Ewl_View_Assign assign)
+ewl_tree2_column_destroy(Ewl_Tree2_Column *c)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("c", c);
+
+       c->model = NULL;
+       c->view = NULL;
+       FREE(c);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+ewl_tree2_column_model_set(Ewl_Tree2_Column *c, Ewl_Model *m)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("c", c);
+       DCHECK_PARAM_PTR("m", m);
+
+       c->model = m;
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+Ewl_Model * 
+ewl_tree2_column_model_get(Ewl_Tree2_Column *c)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("c", c, NULL);
+
+       DRETURN_PTR(c->model, DLEVEL_STABLE);
+}
+
+void
+ewl_tree2_column_view_set(Ewl_Tree2_Column *c, Ewl_View *v)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("c", c);
        DCHECK_PARAM_PTR("v", v);
 
-       v->assign = assign;
+       c->view = v;
 
-       DLEAVE_FUNCTION(DLEVEL_UNSTABLE);
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-/**
- */
-Ewl_View_Assign
-ewl_view_assign_get(Ewl_View *v)
+Ewl_View *
+ewl_tree2_column_view_get(Ewl_Tree2_Column *c)
 {
-       DENTER_FUNCTION(DLEVEL_UNSTABLE);
-       DCHECK_PARAM_PTR_RET("v", v, NULL);
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("c", c, NULL);
 
-       DRETURN_PTR(v->assign, DLEVEL_UNSTABLE);
+       DRETURN_PTR(c->view, DLEVEL_STABLE);
 }
+
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- ewl_tree2.h 12 Jan 2006 18:21:19 -0000      1.13
+++ ewl_tree2.h 6 Feb 2006 03:40:26 -0000       1.14
@@ -2,8 +2,8 @@
 #define _EWL_TREE2_H
 
 /**
- * @file ewl_tree.h
- * @defgroup Ewl_Tree Tree: A Widget for List or Tree Layout
+ * @file ewl_tree2.h
+ * @defgroup Ewl_Tree2 Tree: A Widget for List or Tree Layout
  * @brief Defines a widget for laying out other widgets in a tree or list
  * like manner. This also fulfills the functionality often seen in a table
  * widget.
@@ -62,64 +62,32 @@
 
 #define EWL_TREE2_TYPE "tree2"
 
-typedef void *(*Ewl_Model_Fetch)(void *data, int row, int column);
-
-#define EWL_MODEL_DATA_GET(f) ((Ewl_Model_Fetch *)f)
-
-typedef int (*Ewl_Model_Sort)(void *data, int column);
-
-#define EWL_MODEL_DATA_SORT(f) ((Ewl_Model_Sort *)f)
-
-typedef int (*Ewl_Model_Count)(void *data);
-
-#define EWL_MODEL_DATA_COUNT(f) ((Ewl_Model_Count *)f)
-
 /**
- * @def EWL_MODEL(model)
- * Typecasts a pointer to an Ewl_Model pointer.
+ * @def EWL_TREE2_COLUMN
+ * Typecasts a pointer to an Ewl_Tree2_Column pointer.
  */
-#define EWL_MODEL(model) ((Ewl_Model *)model)
-
-typedef struct Ewl_Model Ewl_Model;
-
-struct Ewl_Model
-{
-       Ewl_Model_Fetch  fetch;    /**< Retrieve data for a cell */
-       Ewl_Model_Fetch  subfetch; /**< Check for subdata */
-       Ewl_Model_Sort   sort;     /**< Trigger sort on column */
-       Ewl_Model_Count  count;    /**< Count of data items */
-};
-
-typedef int (*Ewl_View_Constructor)(void *data);
-
-#define EWL_VIEW_CONSTRUCTOR(f) ((Ewl_View_Constructor *)f)
-
-typedef int (*Ewl_View_Assign)(Ewl_Widget *w, void *data);
+#define EWL_TREE2_COLUMN(c) ((Ewl_Tree2_Column *)c)
 
-#define EWL_VIEW_ASSIGN(f) ((Ewl_View_Assign *)f)
+typedef struct Ewl_Tree2_Column Ewl_Tree2_Column;
 
 /**
- * @def EWL_VIEW(view)
- * Typecasts a pointer to an Ewl_View pointer.
+ * @struct Ewl_Tree2_Column
+ * Holdes the model and view to use for this column in the tree
  */
-#define EWL_VIEW(view) ((Ewl_View *)view)
-
-typedef struct Ewl_View Ewl_View;
-
-struct Ewl_View
+struct Ewl_Tree2_Column
 {
-       Ewl_View_Constructor construct;     /**< Create a widget for display */
-       Ewl_View_Assign assign;             /**< Assign data to a widget */
+       Ewl_Model *model;       /**< The model for the column */
+       Ewl_View *view;         /**< The view for the column */
 };
 
-typedef struct Ewl_Tree2 Ewl_Tree2;
-
 /**
  * @def EWL_TREE2(t)
  * Typecasts a pointer to an Ewl_Tree pointer.
  */
 #define EWL_TREE2(t) ((Ewl_Tree2 *)t)
 
+typedef struct Ewl_Tree2 Ewl_Tree2;
+
 /**
  * @struct Ewl_Tree
  * The tree is a columnar listing, where items in the list may be nested
@@ -129,11 +97,17 @@
 {
        Ewl_Container container; /**< Inherit from container. */
 
-       Ewl_Model *models;       /**< Data models for the tree columns. */
+       Ewl_Widget *header;      /**< The tree header */
 
+       Ecore_List *columns;     /**< The tree columns. */
        void *data;              /**< Data provided to the tree */
+
        int *rowcache;           /**< Cache of row sizes */
-       int fixed;               /**< Rows are fixed height */
+       Ecore_List *selected;    /**< The list of selected cells */
+
+       Ewl_Tree_Mode mode;      /**< The mode of the tree */
+       unsigned int fixed:1;   /**< Rows are fixed height */
+       unsigned int headers_visible:1; /**< Are the headers visible? */
 };
 
 /*
@@ -142,58 +116,52 @@
 Ewl_Widget     *ewl_tree2_new(void);
 int             ewl_tree2_init(Ewl_Tree2 *tree);
 
-void             ewl_tree2_data_set(Ewl_Tree2 *m, void *data);
-void            *ewl_tree2_data_get(Ewl_Tree2 *m);
+void            ewl_tree2_data_set(Ewl_Tree2 *m, void *data);
+void           *ewl_tree2_data_get(Ewl_Tree2 *m);
 
-void             ewl_tree2_column_append(Ewl_Tree2 *t, Ewl_Model *m, Ewl_View 
*v);
-void             ewl_tree2_column_prepend(Ewl_Tree2 *t, Ewl_Model *m, Ewl_View 
*v);
-void             ewl_tree2_column_remove(Ewl_Tree2 *t, Ewl_Model *m, Ewl_View 
*v);
+void            ewl_tree2_column_append(Ewl_Tree2 *t, Ewl_Model *m, 
+                                                       Ewl_View *v);
+void            ewl_tree2_column_prepend(Ewl_Tree2 *t, Ewl_Model *m, 
+                                                       Ewl_View *v);
+void            ewl_tree2_column_insert(Ewl_Tree2 *t, Ewl_Model *m, 
+                                                       Ewl_View *v, 
+                                                       unsigned int idx);
+void            ewl_tree2_column_remove(Ewl_Tree2 *t, unsigned int idx);
 
 void            ewl_tree2_headers_visible_set(Ewl_Tree2 *tree,
                                               unsigned char visible);
 unsigned int    ewl_tree2_headers_visible_get(Ewl_Tree2 *tree);
 
-Ecore_List     *ewl_tree2_selected_get(Ewl_Tree2 *tree);
-void            ewl_tree2_selected_clear(Ewl_Tree2 *tree);
+Ecore_List     *ewl_tree2_selected_cells_get(Ewl_Tree2 *tree);
+void            ewl_tree2_selected_cells_clear(Ewl_Tree2 *tree);
 
 Ewl_Tree_Mode   ewl_tree2_mode_get(Ewl_Tree2 *tree);
 void            ewl_tree2_mode_set(Ewl_Tree2 *tree, Ewl_Tree_Mode mode);
 
-void             ewl_tree2_fixed_rows_set(Ewl_Tree2 *tree, int fixed);
-int              ewl_tree2_fixed_rows_get(Ewl_Tree2 *tree);
+void            ewl_tree2_fixed_rows_set(Ewl_Tree2 *tree, unsigned int fixed);
+unsigned int    ewl_tree2_fixed_rows_get(Ewl_Tree2 *tree);
 
 /*
- * View manipulation
+ * Internal stuff.
  */
-Ewl_View            *ewl_view_new(void);
-int                  ewl_view_init(Ewl_View *view);
-
-void                 ewl_view_constructor_set(Ewl_View *view, 
Ewl_View_Constructor construct);
-Ewl_View_Constructor ewl_view_constructor_get(Ewl_View *view);
-
-void                 ewl_view_assign_set(Ewl_View *view, Ewl_View_Assign 
assign);
-Ewl_View_Assign      ewl_view_assign_get(Ewl_View *view);
+void ewl_tree2_cb_destroy(Ewl_Widget *w, void *ev, void *data);
+void ewl_tree2_cb_configure(Ewl_Widget *w, void *ev, void *data);
 
 /*
- * Model manipulation.
+ * Ewl_Tree2_Column stuff
  */
-Ewl_Model      *ewl_model_new(void);
-int             ewl_model_init(Ewl_Model *model);
+Ewl_Tree2_Column       *ewl_tree2_column_new(void);
+void                    ewl_tree2_column_destroy(Ewl_Tree2_Column *c);
 
-void             ewl_model_fetch_set(Ewl_Model *m, Ewl_Model_Fetch get);
-Ewl_Model_Fetch  ewl_model_fetch_get(Ewl_Model *m);
+void                    ewl_tree2_column_model_set(Ewl_Tree2_Column *c, 
Ewl_Model *m);
+Ewl_Model              *ewl_tree2_column_model_get(Ewl_Tree2_Column *c);
 
-void             ewl_model_subfetch_set(Ewl_Model *m, Ewl_Model_Fetch get);
-Ewl_Model_Fetch  ewl_model_subfetch_get(Ewl_Model *m);
-
-void             ewl_model_sort_set(Ewl_Model *m, Ewl_Model_Sort sort);
-Ewl_Model_Sort   ewl_model_sort_get(Ewl_Model *m);
-
-void             ewl_model_count_set(Ewl_Model *m, Ewl_Model_Count count);
-Ewl_Model_Count  ewl_model_count_get(Ewl_Model *m);
+void                    ewl_tree2_column_view_set(Ewl_Tree2_Column *c, 
Ewl_View *v);
+Ewl_View               *ewl_tree2_column_view_get(Ewl_Tree2_Column *c);
 
 /**
  * @}
  */
 
 #endif
+




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to