Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/bin/tests


Modified Files:
        Makefile.am ewl_combo.c ewl_theme.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/bin/tests/Makefile.am,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- Makefile.am 10 Mar 2006 18:36:44 -0000      1.23
+++ Makefile.am 13 Mar 2006 00:19:27 -0000      1.24
@@ -26,7 +26,7 @@
                          ewl_table.la ewl_notebook.la ewl_scrollpane.la \
                          ewl_spinner.la ewl_progressbar.la ewl_theme.la \
                          ewl_media.la ewl_menu.la ewl_imenu.la \
-                         ewl_widget.la
+                         ewl_widget.la 
 
 ewl_border_la_SOURCES   = ewl_border.c
 ewl_border_la_LIBADD    = $(top_builddir)/src/lib/libewl.la
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/bin/tests/ewl_combo.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- ewl_combo.c 10 Mar 2006 04:05:42 -0000      1.3
+++ ewl_combo.c 13 Mar 2006 00:19:27 -0000      1.4
@@ -1,9 +1,24 @@
 #include "Ewl_Test.h"
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 
+typedef struct Combo_Test_Data Combo_Test_Data;
+struct Combo_Test_Data
+{
+       unsigned int count;
+       char ** data;
+};
+
+static void *combo_test_data_setup(void);
 static int create_test(Ewl_Container *win);
 static void combo_value_changed(Ewl_Widget *w, void *ev, void *data);
+static Ewl_Widget *combo_test_data_header_fetch(void *data, 
+                                                       unsigned int col);
+static void *combo_test_data_fetch(void *data, unsigned int row,
+                                               unsigned int col);
+static int combo_test_data_count_get(void *data);
+static void combo_cb_add(Ewl_Widget *w, void *ev, void *data);
 
 void 
 test_info(Ewl_Test *test)
@@ -20,57 +35,150 @@
 static int
 create_test(Ewl_Container *box)
 {
-       Ewl_Widget *combo1, *item;
-
-       combo1 = ewl_combo_new("test menu");
-       ewl_container_child_append(EWL_CONTAINER(box), combo1);
-       ewl_callback_append(combo1, EWL_CALLBACK_VALUE_CHANGED,
+       Ewl_Widget *combo, *hbox, *o;
+       Ewl_Model *model;
+       Ewl_View *view;
+       void *data;
+
+       hbox = ewl_hbox_new();
+       ewl_container_child_append(EWL_CONTAINER(box), hbox);
+       ewl_widget_show(hbox);
+
+       data = combo_test_data_setup();
+
+       /* create the model */
+       model = ewl_model_new();
+       ewl_model_fetch_set(model, combo_test_data_fetch);
+       ewl_model_count_set(model, combo_test_data_count_get);
+       ewl_model_header_fetch_set(model, combo_test_data_header_fetch);
+
+       /* create the view for ewl_label widgets */
+       view = ewl_view_new();
+       ewl_view_constructor_set(view, ewl_label_new);
+       ewl_view_assign_set(view, EWL_VIEW_ASSIGN(ewl_label_text_set));
+
+       combo = ewl_combo_new();
+       ewl_widget_name_set(combo, "combo_label");
+       ewl_container_child_append(EWL_CONTAINER(hbox), combo);
+       ewl_callback_append(combo, EWL_CALLBACK_VALUE_CHANGED,
                                        combo_value_changed, NULL);
-       ewl_widget_show(combo1);
-
-       item = ewl_menu_item_new();
-       ewl_button_label_set(EWL_BUTTON(item), "dia");
-       ewl_button_image_set(EWL_BUTTON(item),
-                               PACKAGE_DATA_DIR "/images/Draw.png", NULL);
-       ewl_container_child_append(EWL_CONTAINER(combo1), item);
-       ewl_widget_show(item);
-
-       item = EWL_WIDGET(ewl_separator_new());
-       ewl_container_child_append(EWL_CONTAINER(combo1), item);
-       ewl_widget_show(item);
-
-       item = ewl_menu_item_new();
-       ewl_button_label_set(EWL_BUTTON(item), "gimp");
-       ewl_button_image_set(EWL_BUTTON(item),
-                               PACKAGE_DATA_DIR "/images/World.png", NULL);
-       ewl_container_child_append(EWL_CONTAINER(combo1), item);
-       ewl_widget_show(item);
-
-       item = ewl_menu_item_new();
-       ewl_button_label_set(EWL_BUTTON(item), "button");
-       ewl_widget_data_set(item, "dummy", "data");
-       ewl_container_child_append(EWL_CONTAINER(combo1), item);
-       ewl_widget_show(item);
+       ewl_combo_model_set(EWL_COMBO(combo), model);
+       ewl_combo_view_set(EWL_COMBO(combo), view);
+       ewl_combo_data_set(EWL_COMBO(combo), data);
+       ewl_widget_show(combo);
+
+       /* create the view for ewl_image widgets */
+       view = ewl_view_new();
+       ewl_view_constructor_set(view, ewl_image_new);
+       ewl_view_assign_set(view, EWL_VIEW_ASSIGN(ewl_image_file_path_set));
+
+       combo = ewl_combo_new();
+       ewl_widget_name_set(combo, "combo_image");
+       ewl_container_child_append(EWL_CONTAINER(hbox), combo);
+       ewl_callback_append(combo, EWL_CALLBACK_VALUE_CHANGED,
+                                       combo_value_changed, NULL);
+       ewl_combo_model_set(EWL_COMBO(combo), model);
+       ewl_combo_view_set(EWL_COMBO(combo), view);
+       ewl_combo_data_set(EWL_COMBO(combo), data);
+       ewl_widget_show(combo);
+
+       o = ewl_button_new();
+       ewl_button_label_set(EWL_BUTTON(o), "Add items");
+       ewl_container_child_append(EWL_CONTAINER(box), o);
+       ewl_callback_append(o, EWL_CALLBACK_CLICKED, combo_cb_add, NULL);
+       ewl_widget_show(o);
 
        return 1;
 }
 
+static void *
+combo_test_data_setup(void)
+{
+       Combo_Test_Data *data;
+
+       data = calloc(1, sizeof(Combo_Test_Data));
+       data->count = 3;
+
+       data->data = calloc(3, sizeof(char *));
+       data->data[0] = strdup(PACKAGE_DATA_DIR "/images/Draw.png");
+       data->data[1] = strdup(PACKAGE_DATA_DIR "/images/End.png");
+       data->data[2] = strdup(PACKAGE_DATA_DIR "/images/World.png");
+
+       return data;
+}
+
+static Ewl_Widget *
+combo_test_data_header_fetch(void *data __UNUSED__, 
+                               unsigned int col __UNUSED__)
+{
+       Ewl_Widget *header;
+
+       header = ewl_label_new();
+       ewl_label_text_set(EWL_LABEL(header), "Select Image");
+       ewl_widget_show(header);
+
+       return header;
+}
+
+static void *
+combo_test_data_fetch(void *data, unsigned int row, 
+                               unsigned int col __UNUSED__)
+{
+       Combo_Test_Data *d;
+
+       d = data;
+       if (row < d->count)
+               return d->data[row];
+       else
+               return NULL;
+}
+
+static int
+combo_test_data_count_get(void *data)
+{
+       Combo_Test_Data *d;
+
+       d = data;
+       return d->count;
+}
+
 static void
-combo_value_changed(Ewl_Widget *w __UNUSED__, void *ev,
+combo_value_changed(Ewl_Widget *w, void *ev __UNUSED__, 
+                               void *data __UNUSED__)
+{
+       Combo_Test_Data *d;
+       int idx;
+
+       d = ewl_combo_data_get(EWL_COMBO(w));
+       idx = ewl_combo_selected_get(EWL_COMBO(w));
+       if (idx > -1)
+               printf("value changed to %d (%s)\n", idx, d->data[idx]);
+       else
+               printf("Nothing selected.\n");
+}
+
+static void
+combo_cb_add(Ewl_Widget *w __UNUSED__, void *ev __UNUSED__, 
                                        void *data __UNUSED__)
 {
-       Ewl_Widget *entry;
-       const char *text;
+       Ewl_Widget *c;
+       Combo_Test_Data *d;
+       int s;
 
-       entry = EWL_WIDGET(ev);
-       text = ewl_button_label_get(EWL_BUTTON(entry));
+       c = ewl_widget_name_find("combo_label");
+       d = ewl_combo_data_get(EWL_COMBO(c));
 
-       printf("value changed to %s\n", text);
-       if (!strcmp(text, "button"))
-       {
-               char *t2;
-               t2 = ewl_widget_data_get(entry, "dummy");
-               printf("with data: %s\n", t2);
-       }
+       s = d->count;
+       d->count += 2;
+       d->data = realloc(d->data, sizeof(char *) * d->count);
+
+       d->data[s] = strdup(PACKAGE_DATA_DIR "/images/Package.png");
+       d->data[s + 1] = strdup(PACKAGE_DATA_DIR "/images/Open.png");
+
+       ewl_combo_dirty_set(EWL_COMBO(c), 1);
+
+       c = ewl_widget_name_find("combo_image");
+       ewl_combo_dirty_set(EWL_COMBO(c), 1);
 }
 
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/bin/tests/ewl_theme.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- ewl_theme.c 10 Mar 2006 04:05:42 -0000      1.1
+++ ewl_theme.c 13 Mar 2006 00:19:27 -0000      1.2
@@ -236,7 +236,8 @@
        misc = ewl_hseparator_new();
        ewl_container_child_append(EWL_CONTAINER(vbox), misc);
        ewl_widget_show(misc);
-       
+#if 0  
+XXX Port this to use the model/view system
        misc = ewl_combo_new("Combo entry");
        ewl_container_child_append(EWL_CONTAINER(vbox), misc);
        ewl_widget_show(misc);
@@ -255,7 +256,8 @@
                ewl_container_child_append(EWL_CONTAINER(misc), item);
                ewl_widget_show(item);
        }
-       
+#endif
+
        /* List/tree */
        vbox = ewl_vbox_new();
        ewl_container_child_append(EWL_CONTAINER(notebook), vbox);




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