Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/bin


Modified Files:
        Makefile.am etk_test.c etk_test.h etk_tree_test.c 
Removed Files:
        etk_tree2_test.c 


Log Message:
* Replace Etk_Tree by Etk_Tree2. The old tree is now removed..


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/bin/Makefile.am,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- Makefile.am 28 Nov 2006 21:40:06 -0000      1.19
+++ Makefile.am 16 Jan 2007 23:49:26 -0000      1.20
@@ -28,7 +28,6 @@
 etk_canvas_test.c \
 etk_colorpicker_test.c \
 etk_tree_test.c \
-etk_tree2_test.c \
 etk_paned_test.c \
 etk_scrolled_view_test.c \
 etk_menu_test.c \
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/bin/etk_test.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- etk_test.c  28 Nov 2006 21:40:06 -0000      1.32
+++ etk_test.c  16 Jan 2007 23:49:26 -0000      1.33
@@ -68,11 +68,6 @@
       ETK_TEST_ADVANCED_WIDGET
    },
    {
-      "Tree2",
-      etk_test_tree2_window_create,
-      ETK_TEST_ADVANCED_WIDGET
-   },
-   {
       "Paned",
       etk_test_paned_window_create,
       ETK_TEST_CONTAINER
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/bin/etk_test.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- etk_test.h  28 Nov 2006 21:40:07 -0000      1.19
+++ etk_test.h  16 Jan 2007 23:49:26 -0000      1.20
@@ -11,7 +11,6 @@
 void etk_test_colorpicker_window_create(void *data);
 void etk_test_canvas_window_create(void *data);
 void etk_test_tree_window_create(void *data);
-void etk_test_tree2_window_create(void *data);
 void etk_test_paned_window_create(void *data);
 void etk_test_scrolled_view_window_create(void *data);
 void etk_test_menu_window_create(void *data);
===================================================================
RCS file: /cvs/e/e17/libs/etk/src/bin/etk_tree_test.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- etk_tree_test.c     29 Dec 2006 22:10:12 -0000      1.36
+++ etk_tree_test.c     16 Jan 2007 23:49:26 -0000      1.37
@@ -1,38 +1,23 @@
 #include "etk_test.h"
-#include <string.h>
 #include <stdlib.h>
+#include <string.h>
 #include "config.h"
 
-static void _etk_test_tree_drag_drop_cb(Etk_Object *object, void *event, void 
*data);
-static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_add_items(Etk_Tree *tree, int n);
-static void _etk_test_tree_row_selected(Etk_Object *object, Etk_Tree_Row *row, 
void *data);
-static void _etk_test_tree_row_unselected(Etk_Object *object, Etk_Tree_Row 
*row, void *data);
-static void _etk_test_tree_row_clicked(Etk_Object *object, Etk_Tree_Row *row, 
Etk_Event_Mouse_Up *event, void *data);
-static void _etk_test_tree_row_activated(Etk_Object *object, Etk_Tree_Row 
*row, void *data);
+static void _etk_test_tree_key_down_cb(Etk_Object *object, Etk_Event_Key_Down 
*event, void *data);
+static void _etk_test_tree_row_clicked_cb(Etk_Object *object, Etk_Tree_Row 
*row, Etk_Event_Mouse_Up *event, void *data);
 static void _etk_test_tree_checkbox_toggled_cb(Etk_Object *object, 
Etk_Tree_Row *row, void *data);
-static void _etk_test_tree_clear_list_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_add_5_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_add_50_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_add_500_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_add_5000_cb(Etk_Object *object, void *data);
-static void _etk_test_tree_sort_cb(Etk_Object *object, void *data);
-static int _etk_test_tree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
-
-static Etk_Bool ascendant = ETK_TRUE;
 
 /* Creates the window for the tree test */
 void etk_test_tree_window_create(void *data)
 {
    static Etk_Widget *win = NULL;
+   Etk_Widget *vbox;
    Etk_Widget *tree;
-   Etk_Tree_Row *row;
    Etk_Tree_Col *col1, *col2, *col3, *col4;
-   Etk_Widget *table;
-   Etk_Widget *label;
-   Etk_Widget *frame;
-   Etk_Widget *button;
-   Etk_Widget *hbox;
+   Etk_Tree_Row *row;
+   Etk_Widget *statusbar;
+   char row_name[128];
+   const char *stock_key;
    int i;
 
    if (win)
@@ -41,296 +26,158 @@
       return;
    }
 
+   /* Create the window and the vbox where the widgets will be packed into */
    win = etk_window_new();
    etk_window_title_set(ETK_WINDOW(win), "Etk Tree Test");
+   etk_window_resize(ETK_WINDOW(win), 440, 500);
    etk_signal_connect("delete_event", ETK_OBJECT(win), 
ETK_CALLBACK(etk_window_hide_on_delete), NULL);
-       
-   table = etk_table_new(2, 3, ETK_FALSE);
-   etk_container_add(ETK_CONTAINER(win), table);
-
-   /* The tree: */
-   label = etk_label_new("<h1>Tree:</h1>");
-   etk_table_attach(ETK_TABLE(table), label, 0, 0, 0, 0, 0, 0, ETK_TABLE_FILL);
-
+   
+   vbox = etk_vbox_new(ETK_FALSE, 0);
+   etk_container_add(ETK_CONTAINER(win), vbox);
+   
+   /* Create the tree widget */
    tree = etk_tree_new();
-   etk_widget_size_request_set(tree, 320, 400);
-   etk_table_attach_default(ETK_TABLE(table), tree, 0, 0, 1, 1);
-
    etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_TREE);
    etk_tree_multiple_select_set(ETK_TREE(tree), ETK_TRUE);
-   col1 = etk_tree_col_new(ETK_TREE(tree), "Column 1", 
etk_tree_model_icon_text_new(ETK_TREE(tree), ETK_TREE_FROM_EDJE), 90);
-   col2 = etk_tree_col_new(ETK_TREE(tree), "Column 2", 
etk_tree_model_double_new(ETK_TREE(tree)), 60);
-   col3 = etk_tree_col_new(ETK_TREE(tree), "Column 3", 
etk_tree_model_image_new(ETK_TREE(tree), ETK_TREE_FROM_FILE), 60);
-   col4 = etk_tree_col_new(ETK_TREE(tree), "Column 4", 
etk_tree_model_checkbox_new(ETK_TREE(tree)), 40);
-   etk_tree_build(ETK_TREE(tree));
-   etk_signal_connect("cell_value_changed", ETK_OBJECT(col4), 
ETK_CALLBACK(_etk_test_tree_checkbox_toggled_cb), NULL);
+   etk_widget_padding_set(tree, 5, 5, 5, 5);
+   etk_box_append(ETK_BOX(vbox), tree, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 0);
 
+   /* We first create the columns of the tree, and then we "build" the tree 
with etk_tree_build() */
+   col1 = etk_tree_col_new(ETK_TREE(tree), "Column 1", 130, 0.0);
+   etk_tree_col_model_add(col1, etk_tree_model_image_new());
+   etk_tree_col_model_add(col1, etk_tree_model_text_new());
+   
+   col2 = etk_tree_col_new(ETK_TREE(tree), "Column 2", 60, 1.0);
+   etk_tree_col_model_add(col2, etk_tree_model_double_new());
+   
+   col3 = etk_tree_col_new(ETK_TREE(tree), "Column 3", 60, 0.0);
+   etk_tree_col_model_add(col3, etk_tree_model_image_new());
+   
+   col4 = etk_tree_col_new(ETK_TREE(tree), "Column 4", 60, 0.5);
+   etk_tree_col_model_add(col4, etk_tree_model_checkbox_new());
+   
+   etk_tree_build(ETK_TREE(tree));
+   
+   /* Then we add the rows to the tree. etk_tree_freeze/thaw() is used to 
improve
+    * the speed when you insert a lot of rows. It is not really important if 
you
+    * insert only some thousands of rows (here, we insert 3000 rows) */
    etk_tree_freeze(ETK_TREE(tree));
    for (i = 0; i < 1000; i++)
    {
-      row = etk_tree_append(ETK_TREE(tree), col1, etk_theme_icon_get(), 
"places/user-home_16", "Row1",
-         col2, 10.0, col3, PACKAGE_DATA_DIR "/images/1star.png", col4, 
ETK_FALSE, NULL);
-      row = etk_tree_append_to_row(row, col1, etk_theme_icon_get(), 
"places/folder_16", "Row2",
-         col2, 20.0, col3, PACKAGE_DATA_DIR "/images/2stars.png", col4, 
ETK_FALSE, NULL);
-      etk_tree_append_to_row(row, col1, etk_theme_icon_get(), 
"mimetypes/text-x-generic_16", "Row3",
-         col2, 30.0, col3, PACKAGE_DATA_DIR "/images/3stars.png", col4, 
ETK_FALSE, NULL);
+      sprintf(row_name, "Row %d", (i * 3) + 1);
+      stock_key = etk_stock_key_get(ETK_STOCK_PLACES_USER_HOME, 
ETK_STOCK_SMALL);
+      row = etk_tree_row_append(ETK_TREE(tree), NULL,
+         col1, etk_theme_icon_get(), stock_key, row_name,
+         col2, 10.0,
+         col3, PACKAGE_DATA_DIR "/images/1star.png", NULL,
+         col4, ETK_FALSE,
+         NULL);
+      
+      sprintf(row_name, "Row %d", (i * 3) + 2);
+      stock_key = etk_stock_key_get(ETK_STOCK_PLACES_FOLDER, ETK_STOCK_SMALL);
+      row = etk_tree_row_append(ETK_TREE(tree), row,
+         col1, etk_theme_icon_get(), stock_key, row_name,
+         col2, 20.0,
+         col3, PACKAGE_DATA_DIR "/images/2stars.png", NULL,
+         col4, ETK_TRUE,
+         NULL);
+      
+      sprintf(row_name, "Row %d", (i * 3) + 3);
+      stock_key = etk_stock_key_get(ETK_STOCK_TEXT_X_GENERIC, ETK_STOCK_SMALL);
+      etk_tree_row_append(ETK_TREE(tree), row,
+         col1, etk_theme_icon_get(), stock_key, row_name,
+         col2, 30.0,
+         col3, PACKAGE_DATA_DIR "/images/3stars.png", NULL,
+         col4, ETK_TRUE,
+         NULL);
    }
    etk_tree_thaw(ETK_TREE(tree));
-
-   /* The list: */
-   label = etk_label_new("<h1>List:</h1>");
-   etk_table_attach(ETK_TABLE(table), label, 1, 1, 0, 0, 0, 0, ETK_TABLE_FILL);
-
-   tree = etk_tree_new();
-   etk_widget_dnd_source_set(ETK_WIDGET(tree), ETK_TRUE);   
-   etk_widget_dnd_dest_set(ETK_WIDGET(tree), ETK_TRUE);
-   etk_signal_connect("drag_drop", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_drag_drop_cb), NULL);
-   etk_signal_connect("drag_begin", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_drag_begin_cb), NULL);
-   etk_widget_size_request_set(tree, 320, 400);
-   etk_table_attach_default(ETK_TABLE(table), tree, 1, 1, 1, 1);
-
-   etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_LIST);
-   etk_tree_multiple_select_set(ETK_TREE(tree), ETK_TRUE);
-   col1 = etk_tree_col_new(ETK_TREE(tree), "Column 1", 
etk_tree_model_icon_text_new(ETK_TREE(tree), ETK_TREE_FROM_FILE), 90);
-   col2 = etk_tree_col_new(ETK_TREE(tree), "Column 2", 
etk_tree_model_int_new(ETK_TREE(tree)), 90);
-   etk_tree_col_sort_func_set(col2, _etk_test_tree_compare_cb, NULL);
-   col3 = etk_tree_col_new(ETK_TREE(tree), "Column 3", 
etk_tree_model_image_new(ETK_TREE(tree), ETK_TREE_FROM_FILE), 90);
-   etk_tree_build(ETK_TREE(tree));
-
-   _etk_test_tree_add_items(ETK_TREE(tree), 5000);
-   etk_signal_connect("row_selected", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_row_selected), NULL);
-   etk_signal_connect("row_unselected", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_row_unselected), NULL);
-   etk_signal_connect("row_clicked", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_row_clicked), NULL);
-   etk_signal_connect("row_activated", ETK_OBJECT(tree), 
ETK_CALLBACK(_etk_test_tree_row_activated), NULL);
-
-   /* Frame */
-   frame = etk_frame_new("List Actions");
-   etk_table_attach(ETK_TABLE(table), frame, 0, 1, 2, 2, 0, 0, ETK_TABLE_FILL);
-   hbox = etk_hbox_new(ETK_TRUE, 10);
-   etk_container_add(ETK_CONTAINER(frame), hbox);
-
-   button = etk_button_new_with_label("Clear");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_clear_list_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-
-   button = etk_button_new_with_label("Add 5 rows");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_add_5_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-
-   button = etk_button_new_with_label("Add 50 rows");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_add_50_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-
-   button = etk_button_new_with_label("Add 500 rows");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_add_500_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-
-   button = etk_button_new_with_label("Add 5000 rows");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_add_5000_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-   
-   button = etk_button_new_with_label("Sort");
-   etk_signal_connect("clicked", ETK_OBJECT(button), 
ETK_CALLBACK(_etk_test_tree_sort_cb), tree);
-   etk_box_append(ETK_BOX(hbox), button, ETK_BOX_START, ETK_BOX_EXPAND_FILL, 
0);
-
+   
+   /* Finally we create the statusbar used to display the events on the tree */
+   statusbar = etk_statusbar_new();
+   etk_box_append(ETK_BOX(vbox), statusbar, ETK_BOX_START, ETK_BOX_FILL, 0);
+   
+   etk_signal_connect("key_down", ETK_OBJECT(tree),
+      ETK_CALLBACK(_etk_test_tree_key_down_cb), NULL);
+   etk_signal_connect("row_clicked", ETK_OBJECT(tree),
+      ETK_CALLBACK(_etk_test_tree_row_clicked_cb), statusbar);
+   etk_signal_connect("cell_value_changed", ETK_OBJECT(col4),
+      ETK_CALLBACK(_etk_test_tree_checkbox_toggled_cb), statusbar);
+   
    etk_widget_show_all(win);
 }
 
-/* TODO: doc */
-static void _etk_test_tree_drag_drop_cb(Etk_Object *object, void *event, void 
*data)
-{
-   Etk_Tree *tree;
-   Etk_Tree_Row *row;
-   char *col1_string, *col3_path;
-   int col2_value;
-
-   tree = ETK_TREE(object);
-   row = etk_tree_selected_row_get(tree);
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
&col1_string, etk_tree_nth_col_get(tree, 1), &col2_value, 
etk_tree_nth_col_get(tree, 2), &col3_path, NULL);
-   printf("Row dropped on %p: \"%s\" %d %s\n", row, col1_string, col2_value, 
col3_path);      
-}
-
-/* TODO: doc */
-static void _etk_test_tree_drag_begin_cb(Etk_Object *object, void *data)
+/* Called when a key is pressed while the tree is focused:
+ * we use this to delete the selected rows if "DEL" is pressed */
+static void _etk_test_tree_key_down_cb(Etk_Object *object, Etk_Event_Key_Down 
*event, void *data)
 {
    Etk_Tree *tree;
-   Etk_Tree_Row *row;
-   char *col1_string, *col3_path;
-   int col2_value;   
-   const char **types;
-   unsigned int num_types;
-   char *drag_data;
-   Etk_Drag *drag;
-   Etk_Widget *button;
-   
-   tree = ETK_TREE(object);
-   row = etk_tree_selected_row_get(tree);
-   
-   drag = ETK_DRAG((ETK_WIDGET(tree))->drag);
-   
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
&col1_string, etk_tree_nth_col_get(tree, 1), &col2_value, 
etk_tree_nth_col_get(tree, 2), &col3_path, NULL);   
-   
-   types = calloc(1, sizeof(char*));
-   num_types = 1;
-   types[0] = strdup("text/plain");
-   drag_data = strdup(col1_string);
-   
-   etk_drag_types_set(drag, types, num_types);
-   etk_drag_data_set(drag, drag_data, strlen(drag_data) + 1);
-   button = etk_button_new_with_label(col1_string);
-   etk_button_image_set(ETK_BUTTON(button), 
ETK_IMAGE(etk_image_new_from_file(col3_path, NULL)));
-   etk_container_add(ETK_CONTAINER(drag), button);
-}
-
-/* Adds n items to the tree */
-static void _etk_test_tree_add_items(Etk_Tree *tree, int n)
-{
-   int i;
-   Etk_Tree_Col *col1, *col2, *col3;
-   char row_name[256];
-   char star_path[256];
-   int rand_value;
-
-   if (!tree)
+   Etk_Tree_Row *r;
+   
+   if (!(tree = ETK_TREE(object)))
       return;
-
-   col1 = etk_tree_nth_col_get(tree, 0);
-   col2 = etk_tree_nth_col_get(tree, 1);
-   col3 = etk_tree_nth_col_get(tree, 2);
-
-   etk_tree_freeze(tree);
-   for (i = 0; i < n; i++)
+   
+   if (strcmp(event->keyname, "Delete") == 0)
    {
-      snprintf(row_name, 256, "Row%d", i);
-      if (i % 3 == 0)
-         strncpy(star_path, PACKAGE_DATA_DIR "/images/1star.png", 256);
-      else if (i % 3 == 1)
-         strncpy(star_path, PACKAGE_DATA_DIR "/images/2stars.png", 256);
-      else
-         strncpy(star_path, PACKAGE_DATA_DIR "/images/3stars.png", 256);
-      rand_value = rand() % 10000;
-      etk_tree_append(ETK_TREE(tree), col1, PACKAGE_DATA_DIR 
"/images/1star.png", row_name, col2, rand_value, col3, star_path, NULL);
+      /* We walk through all the rows of the tree, and we delete those which 
are selected.
+       * Note that we can safely manipulate "r" with etk_tree_row_walk_next(), 
even if it
+       * has been deleted with etk_tree_row_delete(), because 
etk_tree_row_delete() just
+       * marks the row as deleted, but the row is not effectively deleted 
immediately */
+      for (r = etk_tree_first_row_get(tree); r; r = etk_tree_row_walk_next(r, 
ETK_TRUE))
+      {
+         if (etk_tree_row_is_selected(r))
+            etk_tree_row_delete(r);
+      }
+      
+      etk_signal_stop();
    }
-   etk_tree_thaw(tree);
-}
-
-/* Called when a row is selected */
-static void _etk_test_tree_row_selected(Etk_Object *object, Etk_Tree_Row *row, 
void *data)
-{
-   Etk_Tree *tree;
-   char *col1_string, *col3_path;
-   int col2_value;
-
-   tree = ETK_TREE(object);
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
&col1_string, etk_tree_nth_col_get(tree, 1), &col2_value, 
etk_tree_nth_col_get(tree, 2), &col3_path, NULL);
-   printf("Row selected %p: \"%s\" %d %s\n", row, col1_string, col2_value, 
col3_path);
-}
-
-/* Called when a row is unselected */
-static void _etk_test_tree_row_unselected(Etk_Object *object, Etk_Tree_Row 
*row, void *data)
-{
-   printf("Row unselected %p\n", row);
-}
-
-/* Called when a row is clicked */
-static void _etk_test_tree_row_clicked(Etk_Object *object, Etk_Tree_Row *row, 
Etk_Event_Mouse_Up *event, void *data)
-{
-   printf("Row clicked %p. Button: %d. ", row, event->button);
-   if (event->flags & ETK_MOUSE_TRIPLE_CLICK)
-      printf("Triple Click\n");
-   else if (event->flags & ETK_MOUSE_DOUBLE_CLICK)
-      printf("Double Click\n");
-   else
-      printf("Single Click\n");
 }
 
-/* Called when a row is activated */
-static void _etk_test_tree_row_activated(Etk_Object *object, Etk_Tree_Row 
*row, void *data)
+/* Called when a row of the tree is clicked: we display the clicked row in the 
statusbar */
+/* TODO: sometimes it's a Etk_Event_Mouse_Up, sometimes a 
Etk_Event_Mouse_Down... */
+static void _etk_test_tree_row_clicked_cb(Etk_Object *object, Etk_Tree_Row 
*row, Etk_Event_Mouse_Up *event, void *data)
 {
    Etk_Tree *tree;
-   char *col1_string, *col3_path;
-   int col2_value;
-
-   tree = ETK_TREE(object);
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
&col1_string, etk_tree_nth_col_get(tree, 1), &col2_value, 
etk_tree_nth_col_get(tree, 2), &col3_path, NULL);
-   printf("Row activated %p: \"%s\" %d %s\n", row, col1_string, col2_value, 
col3_path);
-}
-
-/* Called when a checkbox of the tree is toggled */
-static void _etk_test_tree_checkbox_toggled_cb(Etk_Object *object, 
Etk_Tree_Row *row, void *data)
-{
-   Etk_Bool checked;
-   Etk_Tree_Col *col;
+   Etk_Statusbar *statusbar;
+   char *row_name;
+   char message[1024];
    
-   if (!(col = ETK_TREE_COL(object)) || !row)
+   if (!(tree = ETK_TREE(object)) || !(statusbar = ETK_STATUSBAR(data)) || 
!row || !event)
       return;
    
-   etk_tree_row_fields_get(row, col, &checked, NULL);
-   if (checked)
-      printf("Checkbox activated\n");
-   else
-      printf("Checkbox deactivated\n");
-}
-
-/* Called when the "Clear" button is clicked */
-static void _etk_test_tree_clear_list_cb(Etk_Object *object, void *data)
-{
-   Etk_Tree *tree;
-
-   if (!(tree = ETK_TREE(data)))
-      return;
-   etk_tree_clear(tree);
-}
-
-/* Called when the "Add 5 items" button is clicked */
-static void _etk_test_tree_add_5_cb(Etk_Object *object, void *data)
-{
-   _etk_test_tree_add_items(ETK_TREE(data), 5);
-}
-
-/* Called when the "Add 50 items" button is clicked */
-static void _etk_test_tree_add_50_cb(Etk_Object *object, void *data)
-{
-   _etk_test_tree_add_items(ETK_TREE(data), 50);
-}
-
-/* Called when the "Add 500 items" button is clicked */
-static void _etk_test_tree_add_500_cb(Etk_Object *object, void *data)
-{
-   _etk_test_tree_add_items(ETK_TREE(data), 500);
-}
-
-/* Called when the "Add 5000 items" button is clicked */
-static void _etk_test_tree_add_5000_cb(Etk_Object *object, void *data)
-{
-   _etk_test_tree_add_items(ETK_TREE(data), 5000);
+   /* We retrieve the name of the row: this information is located in the 
first column,
+    * and it corresponds to the third param of the model (the two first params 
correspond
+    * to the icon used, we ignore them here (that's why there are two NULL 
params)).
+    * etk_tree_row_fields_get() has to be terminated by NULL */
+   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, 
&row_name, NULL);
+   
+   sprintf(message, "Row \"%s\" clicked (%s)", row_name,
+      (event->flags & ETK_MOUSE_TRIPLE_CLICK) ? "Triple" :
+      ((event->flags & ETK_MOUSE_DOUBLE_CLICK) ? "Double" : "Single"));
+   
+   etk_statusbar_message_push(statusbar, message, 0);
 }
 
-/* Called when the "Sort" button is clicked */
-static void _etk_test_tree_sort_cb(Etk_Object *object, void *data)
+/* Called when a checkbox of the tree is toggled: we display its new state in 
the statusbar */
+static void _etk_test_tree_checkbox_toggled_cb(Etk_Object *object, 
Etk_Tree_Row *row, void *data)
 {
    Etk_Tree *tree;
+   Etk_Tree_Col *col;
+   Etk_Statusbar *statusbar;
+   Etk_Bool checked;
+   char *row_name;
+   char message[1024];
    
-   if (!(tree = ETK_TREE(data)))
+   if (!(col = ETK_TREE_COL(object)) || !(statusbar = ETK_STATUSBAR(data)) || 
!row)
       return;
-   etk_tree_sort(tree, _etk_test_tree_compare_cb, ascendant, 
etk_tree_nth_col_get(tree, 1), NULL);
-   ascendant = !ascendant;
-}
-
-/* Compares two rows of the tree */
-static int _etk_test_tree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
-{
-   int row1_value, row2_value;
    
-   if (!tree || !row1 || !row2 || !col)
-      return 0;
+   tree = etk_tree_col_tree_get(col);
+   
+   /* We retrieve the name of the row: see _etk_test_tree_row_clicked_cb() for 
more info*/
+   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, 
&row_name, NULL);
+   /* We then retrieve the new state of the checkbox */
+   etk_tree_row_fields_get(row, col, &checked, NULL);
    
-   etk_tree_row_fields_get(row1, col, &row1_value, NULL);
-   etk_tree_row_fields_get(row2, col, &row2_value, NULL);
-   if (row1_value < row2_value)
-      return -1;
-   else if (row1_value > row2_value)
-      return 1;
-   else
-      return 0;
+   sprintf(message, "Row \"%s\" has been %s", row_name, checked ? "checked" : 
"unchecked");
+   etk_statusbar_message_push(statusbar, message, 0);
 }



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to