Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


Modified Files:
        ewl_model.c ewl_model.h ewl_tree2.c ewl_tree2.h 


Log Message:
- tree2 work

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_model.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ewl_model.c 6 Feb 2006 03:40:26 -0000       1.1
+++ ewl_model.c 6 Feb 2006 04:14:45 -0000       1.2
@@ -34,6 +34,9 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("model", model, FALSE);
 
+       /* we're dirty by default */
+       model->dirty = TRUE;
+
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
@@ -184,5 +187,32 @@
        DRETURN_PTR(m->header_fetch, DLEVEL_STABLE);
 }
 
+/**
+ * @param m: The model to set dirty
+ * @param dirty: The dirty value to set
+ * @return Returns no value
+ */
+void
+ewl_model_dirty_set(Ewl_Model *m, unsigned int dirty)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("m", m);
 
+       m->dirty = !!dirty;
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+/**
+ * @param m: The model to get the dirty value of
+ * @return Returns TRUE if the model is dirty, FALSE otherwise
+ */
+unsigned int
+ewl_model_dirty_get(Ewl_Model *m)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("m", m, FALSE);
+
+       DRETURN_INT(m->dirty, DLEVEL_STABLE);
+}
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_model.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ewl_model.h 6 Feb 2006 03:40:26 -0000       1.1
+++ ewl_model.h 6 Feb 2006 04:14:45 -0000       1.2
@@ -55,6 +55,8 @@
        Ewl_Model_Sort sort;      /**< Trigger sort on column */
        Ewl_Model_Count count;    /**< Count of data items */
        Ewl_Model_Header_Fetch header_fetch; /**< Get the header for the given 
column */
+
+       unsigned int dirty;       /**< Is this models data dirty? */
 };
 
 Ewl_Model      *ewl_model_new(void);
@@ -75,6 +77,9 @@
 void            ewl_model_header_fetch_set(Ewl_Model *m, 
Ewl_Model_Header_Fetch f);
 Ewl_Model_Header_Fetch ewl_model_header_fetch_get(Ewl_Model *m);
 
+void            ewl_model_dirty_set(Ewl_Model *m, unsigned int dirty);
+unsigned int    ewl_model_dirty_get(Ewl_Model *m);
+
 /**
  * @}
  */
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ewl_tree2.c 6 Feb 2006 03:40:26 -0000       1.5
+++ ewl_tree2.c 6 Feb 2006 04:14:45 -0000       1.6
@@ -68,6 +68,10 @@
                                EWL_FLAG_FILL_HFILL | EWL_FLAG_FILL_VSHRINK);
        ewl_widget_show(tree->header);
 
+       tree->rows = ewl_vbox_new();
+       ewl_container_child_append(EWL_CONTAINER(tree), tree->rows);
+       ewl_widget_show(tree->rows);
+
        ewl_tree2_headers_visible_set(tree, TRUE);
        ewl_tree2_fixed_rows_set(tree, FALSE);
 
@@ -76,6 +80,9 @@
        ewl_callback_prepend(EWL_WIDGET(tree), EWL_CALLBACK_DESTROY,
                                        ewl_tree2_cb_destroy, NULL);
 
+       ewl_container_resize_notify_set(EWL_CONTAINER(tree),
+                                       ewl_tree2_cb_child_resize);
+
        ewl_widget_focusable_set(EWL_WIDGET(tree), FALSE);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
@@ -401,7 +408,7 @@
 {
        Ewl_Tree2 *tree;
        Ewl_Tree2_Column *col;
-       int column = 0;
+       int column = 0, dirty = FALSE;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("w", w);
@@ -409,6 +416,19 @@
 
        tree = EWL_TREE2(w);
 
+       ecore_list_goto_first(tree->columns);
+       while ((col = ecore_list_next(tree->columns)))
+       {
+               if (ewl_model_dirty_get(col->model))
+               {
+                       dirty = TRUE;
+                       break;
+               }
+       }
+
+       /* if none of the models are dirty we are done */
+       if (!dirty) DRETURN(DLEVEL_STABLE);
+
        /* setup the headers */
        ewl_container_reset(EWL_CONTAINER(tree->header));
        ecore_list_goto_first(tree->columns);
@@ -419,11 +439,33 @@
                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)));
-
+               /* once we are done this model won't be dirty anymore */
+               col->model->dirty = FALSE;
                column ++;
        }
 
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+ewl_tree2_cb_child_resize(Ewl_Container *c, Ewl_Widget *w __UNUSED__,
+                                       int size __UNUSED__,
+                                       Ewl_Orientation o __UNUSED__)
+{
+       Ewl_Tree2 *tree;
+       int hw, hh, rw, rh;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("c", c);
+       DCHECK_TYPE("c", c, EWL_CONTAINER_TYPE);
+
+       tree = EWL_TREE2(c);
+
+       ewl_object_preferred_size_get(EWL_OBJECT(tree->header), &hw, &hh);
+       ewl_object_preferred_size_get(EWL_OBJECT(tree->rows), &rw, &rh);
+
+       ewl_object_preferred_inner_size_set(EWL_OBJECT(tree), 
+                                       ((hw > rw) ? hw : rw), hh + rh);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_tree2.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- ewl_tree2.h 6 Feb 2006 03:40:26 -0000       1.14
+++ ewl_tree2.h 6 Feb 2006 04:14:45 -0000       1.15
@@ -98,6 +98,7 @@
        Ewl_Container container; /**< Inherit from container. */
 
        Ewl_Widget *header;      /**< The tree header */
+       Ewl_Widget *rows;        /**< Holds the rows of the tree */
 
        Ecore_List *columns;     /**< The tree columns. */
        void *data;              /**< Data provided to the tree */
@@ -146,6 +147,8 @@
  */
 void ewl_tree2_cb_destroy(Ewl_Widget *w, void *ev, void *data);
 void ewl_tree2_cb_configure(Ewl_Widget *w, void *ev, void *data);
+void ewl_tree2_cb_child_resize(Ewl_Container *c, Ewl_Widget *w,
+                                    int size, Ewl_Orientation o);
 
 /*
  * Ewl_Tree2_Column stuff




-------------------------------------------------------
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