Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_tree2.h 


Log Message:
Fill in a more tree documentation and begin some of the API structure.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- ewl_tree2.h 2 Nov 2005 16:10:37 -0000       1.2
+++ ewl_tree2.h 4 Nov 2005 14:27:08 -0000       1.3
@@ -10,7 +10,8 @@
  *
  * Model:
  * Defines communication callbacks for views and controllers. Query row/column
- * data, indicate expansion points, notify views and controllers of changes.
+ * data, indicate expansion points, notify views and controllers of changes,
+ * trigger sorting on a row/column combination.
  *
  * View:
  * Defines the callbacks for setting up the widgets based on the data returned
@@ -55,130 +56,78 @@
  * @themekey /tree/group
  */
 
-typedef struct Ewl_Tree_Column_Provider Ewl_Tree_Column_Provider;
+typedef void *(*data_get)(void *data, int row, int column) Ewl_Tree2_Cell_Data;
+typedef void *(*child_data_get)(void *data, int row) Ewl_Tree2_Child_Data;
+typedef int (*column_sort)(void *data, int column) Ewl_Tree2_Column_Sort;
+typedef int (*row_count)(void *data) Ewl_Tree2_Row_Count;
 
-/**
- * @def EWL_TREE_COLUMN_PROVIDER(t)
- * Typecasts a pointer to an Ewl_Tree_Column_Provider pointer.
- */
-#define EWL_TREE_COLUMN_PROVIDER(p) ((Ewl_Tree_Column_Provider *)p)
+typedef struct Ewl_Tree2_Model Ewl_Tree2_Model;
 
-/**
- * @struct Ewl_Tree_Column_Provider
- * The tree column provider is used to map data from an arbitrary data 
structure
- * into a widget and corresponding information for display.
- */
-struct Ewl_Tree_Column_Provider
+struct Ewl_Tree2_Model
 {
-       Ewl_Widget *(*display_get)(void);                    /**< Get widget 
for data display */
-       void (*display_set)(Ewl_Widget *w, void *data);      /**< Set widget 
data */
+       void *data;                          /**< Data provided to the tree */
 
-       int (*row_count_get)(void *data);                    /**< Total rows in 
column */
-       void *(*data_get)(void *data, int row, int col);     /**< Get cell data 
*/
-       int (*expandable_get)(void *data, int row, int col); /**< Mark column 
expandable */
-       int (*persistent_get)(void *data, int row, int col); /**< Mark column 
display data persistent */
+       Ewl_Tree2_Cell_Data cell_data_get;   /**< Retrieve data for a cell */
+       Ewl_Tree2_Child_Data child_data_get; /**< Check if a row expands */
+       Ewl_Tree2_Column_Sort column_sort;   /**< Trigger sort on column */
+       Ewl_Tree2_Row_Count row_count;       /**< Count of rows in data */
 };
 
-typedef struct Ewl_Tree Ewl_Tree;
+typedef struct Ewl_Tree2 Ewl_Tree2;
 
 /**
- * @def EWL_TREE(t)
+ * @def EWL_TREE2(t)
  * Typecasts a pointer to an Ewl_Tree pointer.
  */
-#define EWL_TREE(t) ((Ewl_Tree *)t)
+#define EWL_TREE2(t) ((Ewl_Tree2 *)t)
 
 /**
  * @struct Ewl_Tree
  * The tree is a columnar listing, where items in the list may be nested
  * below other items.
  */
-struct Ewl_Tree
+struct Ewl_Tree2
 {
-       Ewl_Container  container;               /**< Inherit from container */
-       Ewl_Tree_Column_Provider *providers; /**< Array of providers */
-};
+       Ewl_Container    container; /**< Inherit from container. */
 
-typedef struct Ewl_Tree_Node Ewl_Tree_Node;
+       Ewl_Tree2_Model *model;     /**< Current data model for the tree. */
 
-/**
- * @def EWL_TREE_NODE(t)
- * Typecasts a pointer to an Ewl_Tree_Node pointer.
- */
-#define EWL_TREE_NODE(t) ((Ewl_Tree_Node *)t)
-
-/*
- * The tree_node exists for each row, at this level the tree_node contains rows
- * that contain cells which display the data.
- */
-struct Ewl_Tree_Node
-{
-       Ewl_Container container;      /**< Inherit from Ewl_Container */
-       Ewl_Tree *tree;               /**< Pointer to the tree this is inside */
-       Ewl_Widget *row;              /**< The child row */
-       Ewl_Widget *handle;           /**< The child row */
-       Ewl_Tree_Node_Flags expanded; /**< Indicator of expansion state */
+       int *rowcache;              /**< Cache of row sizes */
+       int fixed;                  /**< Rows are fixed height */
 };
 
 /*
- * Node creation/initialization functions.
+ * Tree view/controller manipulation
  */
-Ewl_Widget     *ewl_tree_node_new(void);
-int             ewl_tree_node_init(Ewl_Tree_Node *tree_node);
+Ewl_Widget     *ewl_tree2_new();
+int             ewl_tree2_init(Ewl_Tree *tree, unsigned short columns);
 
-/*
- * Node state modifying functions
- */
-void            ewl_tree_node_collapse(Ewl_Tree_Node *tree);
-void            ewl_tree_node_expand(Ewl_Tree_Node *tree);
-
-/*
- * Tree creation/initialization functions.
- */
-Ewl_Widget     *ewl_tree_new(unsigned short columns);
-int             ewl_tree_init(Ewl_Tree *tree, unsigned short columns);
+void            ewl_tree2_headers_visible_set(Ewl_Tree *tree,
+                                              unsigned char visible);
+unsigned int    ewl_tree2_headers_visible_get(Ewl_Tree *tree);
 
-void            ewl_tree_headers_set(Ewl_Tree *tree, char **headers);
-void            ewl_tree_columns_set(Ewl_Tree *tree, unsigned short columns);
+Ecore_List     *ewl_tree2_selected_get(Ewl_Tree *tree);
+void            ewl_tree2_selected_clear(Ewl_Tree *tree);
 
-void            ewl_tree_headers_visible_set(Ewl_Tree *tree, unsigned int 
visible);
-unsigned int    ewl_tree_headers_visible_get(Ewl_Tree *tree);
+Ewl_Tree2_Mode          ewl_tree2_mode_get(Ewl_Tree *tree);
+void            ewl_tree2_mode_set(Ewl_Tree *tree, Ewl_Tree2_Mode mode);
 
+void             ewl_tree2_fixed_rows_set(Ewl_Tree2 *tree, int fixed);
+int              ewl_tree2_fixed_rows_get(Ewl_Tree2 *tree);
 
-Ecore_List     *ewl_tree_selected_get(Ewl_Tree *tree);
-void            ewl_tree_selected_clear(Ewl_Tree *tree);
-Ewl_Widget     *ewl_tree_row_column_get(Ewl_Row *row, int i);
-
-Ewl_Tree_Mode           ewl_tree_mode_get(Ewl_Tree *tree);
-void            ewl_tree_mode_set(Ewl_Tree *tree, Ewl_Tree_Mode mode);
+/*
+ * Tree model manipulation.
+ */
+Ewl_Tree2_Model *ewl_tree2_model_new();
 
-Ewl_Widget     *ewl_tree_row_add(Ewl_Tree *tree, Ewl_Row *prow,
-                                            Ewl_Widget **children);
-Ewl_Widget     *ewl_tree_text_row_add(Ewl_Tree *tree, Ewl_Row *prow, char 
**text);
-Ewl_Widget     *ewl_tree_entry_row_add(Ewl_Tree *tree, Ewl_Row *prow, char 
**text);
+void             ewl_tree2_model_data_set(Ewl_Tree2_Model *m, void *data);
+void            *ewl_tree2_model_data_get(Ewl_Tree2_Model *m);
 
-void            ewl_tree_row_destroy(Ewl_Tree *tree, Ewl_Row *row);
-void            ewl_tree_row_expand_set(Ewl_Row *row, Ewl_Tree_Node_Flags 
expanded);
-Ewl_Widget     *ewl_tree_row_find(Ewl_Tree *tree, int row);
+void             ewl_tree2_model_cell_data_get_set(Ewl_Tree2_Model *m, 
Ewl_Tree2_Cell_Data get);
+Ewl_Tree2_Cell_Data ewl_tree2_model_cell_data_get_get(Ewl_Tree2_Model *m);
 
-/*
- * Internally used callbacks, override at your own risk.
- */
-void ewl_tree_node_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_node_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_node_toggle_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-
-void ewl_tree_node_child_show_cb(Ewl_Container *c, Ewl_Widget *w);
-void ewl_tree_node_child_hide_cb(Ewl_Container *c, Ewl_Widget *w);
-void ewl_tree_node_resize_cb(Ewl_Container *c, Ewl_Widget *w, int size,
-                                                    Ewl_Orientation o);
-
-void ewl_tree_row_select_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_row_hide_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_hscroll_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_tree_child_resize_cb(Ewl_Container *c);
-void ewl_tree_node_child_add_cb(Ewl_Container *c, Ewl_Widget *w);
+void             ewl_tree2_model_column_sort_set(Ewl_Tree2_Model *m, 
Ewl_Tree2_Column_Sort sort);
+Ewl_Tree2_Column_Sort ewl_tree2_model_column_sort_get(Ewl_Tree2_Model *m);
 
 /**
  * @}




-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to