Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/lib


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


Log Message:
- remove the dirty flag from the models, makes it impossible to share them
- start moving combo over to use the model/view setup, working not half bad,
  there appears to be something wrong with the button appearance change
  [This is API breakage.]
- need to add doxy
- need to redo the theme tests as I've just removed the combo for now until
  it can be ported to model/view

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_combo.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ewl_combo.c 22 Feb 2006 18:12:01 -0000      1.15
+++ ewl_combo.c 13 Mar 2006 00:19:27 -0000      1.16
@@ -3,24 +3,26 @@
 #include "ewl_macros.h"
 #include "ewl_private.h"
 
+void ewl_combo_cb_item_clicked(Ewl_Widget *w, void *ev, void *data);
+
 /**
  * @param title: the text to place in the combo
  * @return Returns a pointer to a new combo on success, NULL on failure.
  * @brief Create a new internal combo
  */
 Ewl_Widget *
-ewl_combo_new(char *title)
+ewl_combo_new(void)
 {
        Ewl_Combo *combo;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
 
        combo = NEW(Ewl_Combo, 1);
-       if (!combo) {
+       if (!combo)
                DRETURN_PTR(NULL, DLEVEL_STABLE);
-       }
 
-       if (!ewl_combo_init(combo, title)) {
+       if (!ewl_combo_init(combo)) 
+       {
                ewl_widget_destroy(EWL_WIDGET(combo));
                combo = NULL;
        }
@@ -28,272 +30,317 @@
        DRETURN_PTR(EWL_WIDGET(combo), DLEVEL_STABLE);
 }
 
-/**
- * @param combo: the combo to initialize
- * @param title: the string displayed in the title
- * @return Returns TRUE on success or FALSE on failure
- * @brief Initialize an internal combo to starting values
- */
-int 
-ewl_combo_init(Ewl_Combo *combo, char *title)
+int
+ewl_combo_init(Ewl_Combo *combo)
 {
-       Ewl_Container *redirect;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("combo", combo, FALSE);
 
-       /*
-        * Initialize the defaults of the inherited fields.
-        */
-       if (!ewl_menu_base_init(EWL_MENU_BASE(combo)))
+       if (!ewl_box_init(EWL_BOX(combo)))
                DRETURN_INT(FALSE, DLEVEL_STABLE);
 
-       ewl_button_label_set(EWL_BUTTON(combo), title);
-       ewl_object_fill_policy_set(EWL_OBJECT(combo), EWL_FLAG_FILL_HFILL |
-                       EWL_FLAG_FILL_HSHRINK);
-
-       ewl_widget_appearance_set( EWL_WIDGET(combo), EWL_COMBO_TYPE );
        ewl_widget_inherit(EWL_WIDGET(combo), EWL_COMBO_TYPE);
+       ewl_widget_appearance_set(EWL_WIDGET(combo), EWL_COMBO_TYPE);
 
-       redirect = ewl_container_redirect_get( EWL_CONTAINER(combo) );
-       ewl_container_redirect_set( EWL_CONTAINER(combo), NULL );
+       ewl_box_orientation_set(EWL_BOX(combo), EWL_ORIENTATION_HORIZONTAL);
 
        combo->button = ewl_button_new();
        ewl_widget_appearance_set(combo->button, "decrement");
-       ewl_object_alignment_set(EWL_OBJECT(combo->button), 
EWL_FLAG_ALIGN_RIGHT);
+       ewl_widget_internal_set(combo->button, TRUE);
+       ewl_object_alignment_set(EWL_OBJECT(combo->button), 
+                                       EWL_FLAG_ALIGN_RIGHT);
        ewl_container_child_append(EWL_CONTAINER(combo), combo->button);
+       ewl_object_fill_policy_set(EWL_OBJECT(combo->button), 
+                                       EWL_FLAG_FILL_NONE);
+       ewl_callback_append(combo->button, EWL_CALLBACK_CLICKED,
+                               ewl_combo_cb_decrement_clicked, combo);
        ewl_widget_show(combo->button);
 
-       combo->selected = ewl_entry_new();
-       ewl_text_text_set(EWL_TEXT(combo->selected), title);
-       ewl_entry_editable_set(EWL_ENTRY(combo->selected), FALSE);
-       ewl_object_fill_policy_set(EWL_OBJECT(combo->selected),
-                                  EWL_FLAG_FILL_HFILL | EWL_FLAG_FILL_HSHRINK);
-       ewl_object_alignment_set(EWL_OBJECT(combo->selected),
-                                EWL_FLAG_ALIGN_CENTER);
-       ewl_container_child_append(EWL_CONTAINER(combo), combo->selected);
-       ewl_widget_show(combo->selected);
-
-       ewl_callback_del(EWL_WIDGET(combo), EWL_CALLBACK_FOCUS_IN,
-                        ewl_menu_base_expand_cb);
-
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_CLICKED);
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_MOUSE_DOWN);
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_MOUSE_UP);
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_MOUSE_MOVE);
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_FOCUS_IN);
-       ewl_container_callback_nointercept(EWL_CONTAINER(combo),
-                                          EWL_CALLBACK_FOCUS_OUT);
-
-       ewl_container_redirect_set(EWL_CONTAINER(combo), redirect);
+       combo->popup = NEW(Ewl_Menu_Base, 1);
+       ewl_menu_base_init(EWL_MENU_BASE(combo->popup));
+       ewl_widget_internal_set(EWL_WIDGET(combo->popup), TRUE);
+
+       combo->popup->popup = ewl_floater_new();
+       ewl_floater_follow_set(EWL_FLOATER(combo->popup->popup),
+                                               EWL_WIDGET(combo));
+       ewl_widget_internal_set(combo->popup->popup, TRUE);
+       ewl_widget_layer_set(combo->popup->popup, 1000);
+       ewl_widget_appearance_set(combo->popup->popup, EWL_IMENU_TYPE);
+       ewl_box_orientation_set(EWL_BOX(combo->popup->popup),
+                                               EWL_ORIENTATION_VERTICAL);
+       ewl_object_fill_policy_set(EWL_OBJECT(combo->popup->popup),
+                                               EWL_FLAG_FILL_NONE);
+       ewl_object_alignment_set(EWL_OBJECT(combo->popup->popup),
+                               EWL_FLAG_ALIGN_LEFT | EWL_FLAG_ALIGN_TOP);
 
-       ewl_callback_append(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                           ewl_combo_expand_cb, combo);
+       /* default this to -2 so that when we first show we will set it to -1 */
+       combo->selected_idx = -2; 
        ewl_callback_append(EWL_WIDGET(combo), EWL_CALLBACK_CONFIGURE,
-                           ewl_combo_configure_cb, NULL);
-       ewl_callback_append(combo->selected, EWL_CALLBACK_VALUE_CHANGED,
-                           ewl_combo_value_changed_cb, combo);
-
-       /*
-        * Create the popup combo portion of the widget.
-        */
-       combo->base.popup = ewl_floater_new();
-       ewl_floater_follow_set(EWL_FLOATER(combo->base.popup),
-                               EWL_WIDGET(combo));
-       ewl_widget_internal_set(combo->base.popup, TRUE);
-       ewl_widget_layer_set(combo->base.popup, 1000);
-       ewl_widget_appearance_set(EWL_WIDGET(combo->base.popup),
-                                               EWL_IMENU_TYPE);
-       ewl_box_orientation_set(EWL_BOX(combo->base.popup),
-                               EWL_ORIENTATION_VERTICAL);
-       ewl_object_fill_policy_set(EWL_OBJECT(combo->base.popup),
-                                  EWL_FLAG_FILL_NONE);
-       ewl_object_alignment_set(EWL_OBJECT(combo->base.popup),
-                                EWL_FLAG_ALIGN_LEFT | EWL_FLAG_ALIGN_TOP);
+                                       ewl_combo_cb_configure, NULL);
+       ewl_object_fill_policy_set(EWL_OBJECT(combo), EWL_FLAG_FILL_NONE);
 
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
-/**
- * @param combo: the combo to set the selected item of
- * @param item: the entry to be set selected
- * @return Returns no value
- * @brief Set the currently selected item
- */
 void
-ewl_combo_selected_set(Ewl_Combo *combo, Ewl_Widget *item)
+ewl_combo_selected_set(Ewl_Combo *combo, int idx)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("combo", combo);
-       DCHECK_PARAM_PTR("item", item);
        DCHECK_TYPE("combo", combo, EWL_COMBO_TYPE);
-       DCHECK_TYPE("item", item, EWL_WIDGET_TYPE);
 
-       combo->selected = item;
-       ewl_callback_call_with_event_data(EWL_WIDGET(combo),
-                                         EWL_CALLBACK_VALUE_CHANGED, item);
+       if (combo->selected_idx == idx)
+               DRETURN(DLEVEL_STABLE);
+
+       combo->selected_idx = idx;
+
+       /* remove the previously selected value */
+       if (combo->selected)
+       {
+               ewl_container_child_remove(EWL_CONTAINER(combo), 
+                                               combo->selected);
+               ewl_widget_destroy(combo->selected);
+       }
+
+       /* if we have a selected value then show it in the top, else show
+        * the header */
+       if (idx > -1)
+       {
+               combo->selected = combo->view->construct();
+               combo->view->assign(combo->selected, 
+                               combo->model->fetch(combo->data, idx, 0));
+               ewl_widget_show(combo->selected);
+       }
+       else
+               combo->selected = combo->model->header_fetch(combo->data, 0);   
+
+       ewl_container_child_prepend(EWL_CONTAINER(combo), combo->selected);
+                                               
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-/**
- * @param combo: the combo to get the selcted item of
- * @return Returns the currently selected item (possibly NULL)
- * @brief Gets the currently selected item
- */
-Ewl_Widget *
+int 
 ewl_combo_selected_get(Ewl_Combo *combo)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("combo", combo, -1);
+       DCHECK_TYPE_RET("combo", combo, EWL_COMBO_TYPE, -1);
+
+       DRETURN_INT(combo->selected_idx, DLEVEL_STABLE);
+}
+
+void
+ewl_combo_model_set(Ewl_Combo *combo, Ewl_Model *model)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("combo", combo);
+       DCHECK_PARAM_PTR("model", model);
+       DCHECK_TYPE("combo", combo, EWL_COMBO_TYPE);
+
+       combo->model = model;
+       ewl_combo_dirty_set(combo, TRUE);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+Ewl_Model *
+ewl_combo_model_get(Ewl_Combo *combo)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("combo", combo, NULL);
        DCHECK_TYPE_RET("combo", combo, EWL_COMBO_TYPE, NULL);
 
-       DRETURN_PTR(combo->selected, DLEVEL_STABLE);
+       DRETURN_PTR(combo->model, DLEVEL_STABLE);
 }
 
 void
-ewl_combo_item_focus_in_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
-                                               void *user_data)
+ewl_combo_view_set(Ewl_Combo *combo, Ewl_View *view)
 {
-       Ewl_Combo *combo;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("combo", combo);
+       DCHECK_PARAM_PTR("view", view);
+       DCHECK_TYPE("combo", combo, EWL_COMBO_TYPE);
+
+       combo->view = view;
+       ewl_combo_dirty_set(combo, TRUE);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
 
+Ewl_View *
+ewl_combo_view_get(Ewl_Combo *combo)
+{
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("w", w);
-       DCHECK_PARAM_PTR("user_data", user_data);
-       DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
+       DCHECK_PARAM_PTR_RET("combo", combo, NULL);
+       DCHECK_TYPE_RET("combo", combo, EWL_COMBO_TYPE, NULL);
 
-       combo = EWL_COMBO(user_data);
+       DRETURN_PTR(combo->view, DLEVEL_STABLE);
+}
 
-       ewl_combo_selected_set(combo, w);
-       ewl_widget_hide(EWL_MENU_BASE(combo)->popup);
+void
+ewl_combo_data_set(Ewl_Combo *combo, void *data)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("combo", combo);
+       DCHECK_PARAM_PTR("data", data);
+       DCHECK_TYPE("combo", combo, EWL_COMBO_TYPE);
 
-       ewl_widget_appearance_set(combo->button, "decrement");
-       ewl_callback_del(EWL_MENU_BASE(combo)->popbox, EWL_CALLBACK_MOUSE_OUT,
-                                               ewl_combo_collapse_cb);
-       ewl_callback_del(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                                               ewl_combo_collapse_cb);
-       ewl_callback_append(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                                               ewl_combo_expand_cb, combo);
+       combo->data = data;
+       ewl_combo_dirty_set(combo, TRUE);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
-void
-ewl_combo_configure_cb(Ewl_Widget *w, void *ev_data __UNUSED__, 
-                                       void *user_data __UNUSED__)
+void *
+ewl_combo_data_get(Ewl_Combo *combo)
 {
-       Ewl_Combo *combo;
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("combo", combo, NULL);
+       DCHECK_TYPE_RET("combo", combo, EWL_COMBO_TYPE, NULL);
 
+       DRETURN_PTR(combo->data, DLEVEL_STABLE);
+}
+
+void
+ewl_combo_dirty_set(Ewl_Combo *combo, unsigned int dirty)
+{
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("w", w);
-       DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
+       DCHECK_PARAM_PTR("combo", combo);
+       DCHECK_TYPE("combo", combo, EWL_COMBO_TYPE);
 
-       combo = EWL_COMBO(w);
-       /*
-        * Position the popup combo relative to the combo.
-        */
-       if (EWL_MENU_ITEM(w)->inmenu) {
-               ewl_floater_position_set(EWL_FLOATER(combo->base.popup),
-                                        CURRENT_W(w), 0);
-       }
-       else {
-               ewl_floater_position_set(EWL_FLOATER(combo->base.popup), 0,
-                                        CURRENT_H(w));
-       }
+       combo->dirty = !!dirty;
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
+unsigned int
+ewl_combo_dirty_get(Ewl_Combo *combo)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR_RET("combo", combo, FALSE);
+       DCHECK_TYPE_RET("combo", combo, EWL_COMBO_TYPE, FALSE);
+
+       DRETURN_INT(combo->dirty, DLEVEL_STABLE);
+}
+
 void
-ewl_combo_value_changed_cb(Ewl_Widget *w __UNUSED__, 
-                       void *ev_data __UNUSED__, void *user_data)
+ewl_combo_cb_configure(Ewl_Widget *w, void *ev __UNUSED__, 
+                                       void *data __UNUSED__)
 {
-       Ewl_Widget *cw;
        Ewl_Combo *combo;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("user_data", user_data);
+       DCHECK_PARAM_PTR("w", w);
+       DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
+
+       combo = EWL_COMBO(w);
 
-       cw = EWL_WIDGET(user_data);
-       combo = EWL_COMBO(user_data);
+       if (EWL_MENU_ITEM(combo->popup)->inmenu)
+               ewl_floater_position_set(EWL_FLOATER(combo->popup->popup),
+                                               CURRENT_W(w), 0);
+       else
+               ewl_floater_position_set(EWL_FLOATER(combo->popup->popup),
+                                               0, CURRENT_H(w));
 
-       ewl_callback_call_with_event_data(cw, EWL_CALLBACK_VALUE_CHANGED, 
-                                           combo->selected);
+       if (combo->selected_idx < -1)
+               ewl_combo_selected_set(combo, -1);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void
-ewl_combo_expand_cb(Ewl_Widget *w, void *ev_data, void *user_data)
+ewl_combo_cb_decrement_clicked(Ewl_Widget *w __UNUSED__, void *ev, void *data)
 {
        Ewl_Combo *combo;
-       Ewl_Embed *emb;
-       Ewl_Container *pb;
-       Ewl_Widget *child;
+       int i;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("w", w);
-       DCHECK_PARAM_PTR("user_data", user_data);
-       DCHECK_TYPE("w", w, EWL_WIDGET_TYPE);
-       
-       combo = EWL_COMBO(user_data);
-       ewl_widget_appearance_set(combo->button, "increment");
-       ewl_menu_base_expand_cb(EWL_WIDGET(combo), ev_data, NULL);
+       DCHECK_PARAM_PTR("data", data);
 
-       if (!REALIZED(combo->base.popup)) {
-               emb = ewl_embed_widget_find(w);
+       combo = data;
+
+       /* nothing to do if we have no model/view or data */
+       if ((!combo->model) || (!combo->view) || (!combo->data))
+               DRETURN(DLEVEL_STABLE);
+
+       /* change hte button appearance and expand the menu */
+       ewl_widget_appearance_set(combo->button, "increment");
+       ewl_callback_del(combo->button, EWL_CALLBACK_CLICKED, 
+                                       ewl_combo_cb_decrement_clicked);
+       ewl_callback_append(combo->button, EWL_CALLBACK_CLICKED,
+                               ewl_combo_cb_increment_clicked, combo);
+
+       ewl_menu_base_expand_cb(EWL_WIDGET(combo->popup), ev, NULL);
+       if (!REALIZED(combo->popup->popup))
+       {
+               Ewl_Embed *emb;
+               emb = ewl_embed_widget_find(EWL_WIDGET(combo));
                ewl_container_child_append(EWL_CONTAINER(emb),
-                                          combo->base.popup); 
+                                               combo->popup->popup);
        }
 
-       pb = EWL_CONTAINER(EWL_MENU_BASE(combo)->popbox);
+       if (!combo->dirty)
+               DRETURN(DLEVEL_STABLE);
 
-       ewl_callback_append(EWL_WIDGET(pb), EWL_CALLBACK_MOUSE_OUT,
-                                       ewl_combo_collapse_cb, combo);
-       ewl_callback_del(combo->button, EWL_CALLBACK_MOUSE_DOWN, 
ewl_combo_expand_cb);
-       ewl_callback_append(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                                       ewl_combo_collapse_cb, combo);
-
-       ecore_dlist_goto_first(pb->children);
-
-       /*
-        * Set all of the items in this menu a callback to set the currently 
selected
-        * widget
-        */
-       while ((child = ecore_dlist_next(pb->children))) {
-               ewl_callback_del(child, EWL_CALLBACK_FOCUS_IN, 
ewl_combo_item_focus_in_cb);
-               ewl_callback_append(child, EWL_CALLBACK_FOCUS_IN,
-                                       ewl_combo_item_focus_in_cb, combo);
+       ewl_container_reset(EWL_CONTAINER(combo->popup));
+       for (i = 0; i < combo->model->count(combo->data); i++)
+       {
+               Ewl_Widget *item;
+
+               item = combo->view->construct();
+               combo->view->assign(item, 
+                               combo->model->fetch(combo->data, i, 0));
+               ewl_container_child_append(EWL_CONTAINER(combo->popup), item);
+               ewl_widget_data_set(item, "ewl_combo_position", (int *)i);
+               ewl_callback_append(item, EWL_CALLBACK_CLICKED,
+                                       ewl_combo_cb_item_clicked, combo);
+               ewl_widget_show(item);
        }
 
-       ewl_widget_show(combo->base.popup);
+       combo->dirty = 0;
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
 
 void
-ewl_combo_collapse_cb(Ewl_Widget *w __UNUSED__, 
-                       void *ev_data __UNUSED__, void *user_data)
+ewl_combo_cb_increment_clicked(Ewl_Widget *w __UNUSED__, 
+                               void *ev __UNUSED__, void *data)
 {
        Ewl_Combo *combo;
 
        DENTER_FUNCTION(DLEVEL_STABLE);
-       DCHECK_PARAM_PTR("user_data", user_data);
+       DCHECK_PARAM_PTR("data", data);
 
-       combo = EWL_COMBO(user_data);
-       ewl_widget_hide(EWL_MENU_BASE(combo)->popup);
+       combo = data;
+       ewl_widget_hide(combo->popup->popup);
 
        ewl_widget_appearance_set(combo->button, "decrement");
-       ewl_callback_del(EWL_MENU_BASE(combo)->popbox, EWL_CALLBACK_MOUSE_OUT,
-                                                       ewl_combo_collapse_cb);
-       ewl_callback_del(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                                                       ewl_combo_collapse_cb);
-       ewl_callback_append(combo->button, EWL_CALLBACK_MOUSE_DOWN,
-                                                       ewl_combo_expand_cb, 
combo);
+       ewl_callback_del(combo->button, EWL_CALLBACK_CLICKED,
+                                       ewl_combo_cb_increment_clicked);
+       ewl_callback_append(combo->button, EWL_CALLBACK_CLICKED,
+                               ewl_combo_cb_decrement_clicked, combo);
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
+void
+ewl_combo_cb_item_clicked(Ewl_Widget *w __UNUSED__, void *ev __UNUSED__, 
+                                                               void *data)
+{
+       int i;
+       Ewl_Combo *combo;
+
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("data", data);
+
+       combo = data;
+
+       i = (int)ewl_widget_data_get(w, "ewl_combo_position");
+       ewl_combo_selected_set(combo, i);
+       ewl_combo_cb_increment_clicked(NULL, NULL, data);
+
+       ewl_callback_call(EWL_WIDGET(combo), EWL_CALLBACK_VALUE_CHANGED);
 
        DLEAVE_FUNCTION(DLEVEL_STABLE);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_combo.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- ewl_combo.h 16 Feb 2006 17:06:43 -0000      1.9
+++ ewl_combo.h 13 Mar 2006 00:19:27 -0000      1.10
@@ -34,24 +34,44 @@
  */
 struct Ewl_Combo
 {
-       Ewl_Menu_Base base; /**< Inherits from menu_base. */
-       Ewl_Widget *button; /**< The button used to expand/collapse the 
selector. */
-       Ewl_Widget *selected; /**< An entry that contains the current 
selection. */
+       Ewl_Box box; /**< Inherit from box */
+       Ewl_Menu_Base *popup; /**< Use a menu to display with. */
+
+       Ewl_Widget *button; /**< expand/contract button */
+       Ewl_Widget *selected; /**< Selected widget */
+       unsigned int selected_idx; /**< The selected row */
+
+       Ewl_Model *model; /**< The model for the combo */
+       Ewl_View *view;   /**< The view for the combo */
+
+       void *data;       /**< The data for the combo */
+       unsigned char dirty:1; /**< The combo's data is dirty */
 };
 
-Ewl_Widget     *ewl_combo_new(char *title);
-int             ewl_combo_init(Ewl_Combo *combo, char *title);
-Ewl_Widget     *ewl_combo_selected_get(Ewl_Combo *combo);
-void            ewl_combo_selected_set(Ewl_Combo *combo, Ewl_Widget *item);
+Ewl_Widget     *ewl_combo_new(void);
+int             ewl_combo_init(Ewl_Combo *combo);
+
+int             ewl_combo_selected_get(Ewl_Combo *combo);
+void            ewl_combo_selected_set(Ewl_Combo *combo, int);
+
+void            ewl_combo_model_set(Ewl_Combo *combo, Ewl_Model *model);
+Ewl_Model      *ewl_combo_model_get(Ewl_Combo *combo);
+
+void            ewl_combo_view_set(Ewl_Combo *combo, Ewl_View *view);
+Ewl_View       *ewl_combo_view_get(Ewl_Combo *combo);
+
+void            ewl_combo_data_set(Ewl_Combo *combo, void *data);
+void           *ewl_combo_data_get(Ewl_Combo *combo);
+
+void            ewl_combo_dirty_set(Ewl_Combo *combo, unsigned int dirty);
+unsigned int    ewl_combo_dirty_get(Ewl_Combo *combo);
 
 /*
  * Internally used callbacks, override at your own risk.
  */
-void ewl_combo_item_focus_in_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_combo_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_combo_value_changed_cb(Ewl_Widget *w, void *ev_data, void *user_data);
-void ewl_combo_expand_cb(Ewl_Widget * w, void *ev_data, void *user_data);
-void ewl_combo_collapse_cb(Ewl_Widget * w, void *ev_data, void *user_data);
+void ewl_combo_cb_configure(Ewl_Widget *w, void *ev, void *data);
+void ewl_combo_cb_decrement_clicked(Ewl_Widget *w, void *ev, void *data);
+void ewl_combo_cb_increment_clicked(Ewl_Widget *w, void *ev, void *data);
 
 /**
  * @}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/lib/ewl_model.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_model.c 22 Feb 2006 03:51:01 -0000      1.4
+++ ewl_model.c 13 Mar 2006 00:19:27 -0000      1.5
@@ -35,9 +35,6 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR_RET("model", model, FALSE);
 
-       /* we're dirty by default */
-       model->dirty = TRUE;
-
        DRETURN_INT(TRUE, DLEVEL_STABLE);
 }
 
@@ -198,34 +195,3 @@
        DRETURN_INT(m->header_fetch, DLEVEL_STABLE);
 }
 
-/**
- * @param m: The model to set dirty
- * @param dirty: The dirty value to set
- * @return Returns no value
- * @brief Sets if the model is dirty
- */
-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
- * @brief Gets if the model is dirty
- */
-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.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewl_model.h 17 Feb 2006 06:43:33 -0000      1.3
+++ ewl_model.h 13 Mar 2006 00:19:27 -0000      1.4
@@ -57,8 +57,6 @@
        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);
@@ -79,9 +77,6 @@
 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.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- ewl_tree2.c 17 Feb 2006 06:43:33 -0000      1.9
+++ ewl_tree2.c 13 Mar 2006 00:19:27 -0000      1.10
@@ -427,11 +427,13 @@
        ecore_list_goto_first(tree->columns);
        while ((col = ecore_list_next(tree->columns)))
        {
+#if 0
                if (ewl_model_dirty_get(col->model))
                {
                        dirty = TRUE;
                        break;
                }
+#endif
        }
 
        /* place the header */
@@ -454,7 +456,7 @@
                ewl_container_child_append(EWL_CONTAINER(tree->header), h);
 
                /* once we are done this model won't be dirty anymore */
-               col->model->dirty = FALSE;
+//             col->model->dirty = FALSE;
                column ++;
        }
 




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to