Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_tree2.h 


Log Message:
Move the model and view into their own namespace and fill out some of the API.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_tree2.h 4 Nov 2005 15:50:49 -0000       1.4
+++ ewl_tree2.h 8 Nov 2005 16:53:14 -0000       1.5
@@ -56,21 +56,46 @@
  * @themekey /tree/group
  */
 
-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;
+typedef void *(*data_get)(void *data, int row, int column) Ewl_Model_Data_Get;
 
-typedef struct Ewl_Tree2_Model Ewl_Tree2_Model;
+#define EWL_MODEL_DATA_GET(f) ((Ewl_Model_Data_Get *)d)
 
-struct Ewl_Tree2_Model
+typedef int (*data_sort)(void *data, int column) Ewl_Model_Data_Sort;
+
+#define EWL_MODEL_DATA_SORT(f) ((Ewl_Model_Data_Sort *)d)
+
+typedef int (*data_count)(void *data) Ewl_Model_Data_Count;
+
+#define EWL_MODEL_DATA_COUNT(f) ((Ewl_Model_Data_Count *)d)
+
+/**
+ * @def EWL_MODEL(t)
+ * Typecasts a pointer to an Ewl_Model pointer.
+ */
+#define EWL_MODEL(model) ((Ewl_Model *)model)
+
+typedef struct Ewl_Model Ewl_Model;
+
+struct Ewl_Model
 {
-       void *data;                          /**< Data provided to the tree */
+       Ewl_Model_Data_Get    data_get;     /**< Retrieve data for a cell */
+       Ewl_Model_Data_Get    subdata_get;  /**< Check for subdata */
+       Ewl_Model_Data_Sort   column_sort;  /**< Trigger sort on column */
+       Ewl_Model_Data_Count  row_count;    /**< Count of data items */
+};
+
+/**
+ * @def EWL_VIEW(t)
+ * Typecasts a pointer to an Ewl_View pointer.
+ */
+#define EWL_VIEW(view) ((Ewl_View *)view)
 
-       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_View Ewl_View;
+
+struct Ewl_View
+{
+       Ewl_View_Constructor constructor;   /**< Create a widget for display */
+       Ewl_View_Data_Assign data_set;      /**< Assign data to a widget */
 };
 
 typedef struct Ewl_Tree2 Ewl_Tree2;
@@ -88,12 +113,13 @@
  */
 struct Ewl_Tree2
 {
-       Ewl_Container    container; /**< Inherit from container. */
+       Ewl_Container container; /**< Inherit from container. */
 
-       Ewl_Tree2_Model *model;     /**< Current data model for the tree. */
+       Ewl_Model *models;       /**< Data models for the tree columns. */
 
-       int *rowcache;              /**< Cache of row sizes */
-       int fixed;                  /**< Rows are fixed height */
+       void *data;              /**< Data provided to the tree */
+       int *rowcache;           /**< Cache of row sizes */
+       int fixed;               /**< Rows are fixed height */
 };
 
 /*
@@ -102,6 +128,13 @@
 Ewl_Widget     *ewl_tree2_new();
 int             ewl_tree2_init(Ewl_Tree *tree);
 
+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_Tree2_View *v);
+void             ewl_tree2_column_prepend(Ewl_Tree2 *t, Ewl_Model *m, 
Ewl_Tree2_View *v);
+void             ewl_tree2_column_remove(Ewl_Tree2 *t, Ewl_Model *m, 
Ewl_Tree2_View *v);
+
 void            ewl_tree2_headers_visible_set(Ewl_Tree *tree,
                                               unsigned char visible);
 unsigned int    ewl_tree2_headers_visible_get(Ewl_Tree *tree);
@@ -116,18 +149,18 @@
 int              ewl_tree2_fixed_rows_get(Ewl_Tree2 *tree);
 
 /*
- * Tree model manipulation.
+ * Model manipulation.
  */
-Ewl_Tree2_Model *ewl_tree2_model_new();
+Ewl_Model *ewl_model_new();
 
-void             ewl_tree2_model_data_set(Ewl_Tree2_Model *m, void *data);
-void            *ewl_tree2_model_data_get(Ewl_Tree2_Model *m);
+void                  ewl_model_data_get_set(Ewl_Model *m, Ewl_Tree2_Cell_Data 
get);
+Ewl_Model_Data_Get    ewl_model_data_get_get(Ewl_Model *m);
 
-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);
+void                  ewl_model_subdata_get_set(Ewl_Model *m, 
Ewl_Model_Data_Get get);
+Ewl_Model_Data_Get    ewl_model_subdata_get_get(Ewl_Model *m);
 
-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);
+void                  ewl_model_data_sort_set(Ewl_Model *m, 
Ewl_Tree2_Column_Sort sort);
+Ewl_Tree2_Column_Sort ewl_model_data_sort_get(Ewl_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