Enlightenment CVS committal Author : moom Project : e17 Module : libs/etk
Dir : e17/libs/etk/src/bin Modified Files: etk_tree2_test.c Log Message: * [Etk_Tree2] More work on the image model and on the checkbox model * [Etk_Tree2] You can now set the horizontal alignment of the content of a column * [Etk_Cache] Rewrite the cache system. Disable it for now in the iconbox =================================================================== RCS file: /cvs/e/e17/libs/etk/src/bin/etk_tree2_test.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- etk_tree2_test.c 3 Jan 2007 23:35:25 -0000 1.7 +++ etk_tree2_test.c 5 Jan 2007 15:56:03 -0000 1.8 @@ -5,6 +5,7 @@ static void _etk_test_tree2_key_down_cb(Etk_Object *object, Etk_Event_Key_Down *event, void *data); static void _etk_test_tree2_row_clicked_cb(Etk_Object *object, Etk_Tree2_Row *row, Etk_Event_Mouse_Up *event, void *data); +static void _etk_test_tree2_checkbox_toggled_cb(Etk_Object *object, Etk_Tree2_Row *row, void *data); /* Creates the window for the tree test */ void etk_test_tree2_window_create(void *data) @@ -47,25 +48,26 @@ etk_container_add(ETK_CONTAINER(alignment), tree); /* We first create the columns of the tree, and then we "build" the tree with etk_tree2_build() */ - col1 = etk_tree2_col_new(ETK_TREE2(tree), "Column 1", 130); + col1 = etk_tree2_col_new(ETK_TREE2(tree), "Column 1", 130, 0.0); etk_tree2_col_model_add(col1, etk_tree2_model_image_new()); etk_tree2_col_model_add(col1, etk_tree2_model_text_new()); - col2 = etk_tree2_col_new(ETK_TREE2(tree), "Column 2", 60); + col2 = etk_tree2_col_new(ETK_TREE2(tree), "Column 2", 60, 1.0); etk_tree2_col_model_add(col2, etk_tree2_model_double_new()); - col3 = etk_tree2_col_new(ETK_TREE2(tree), "Column 3", 60); + col3 = etk_tree2_col_new(ETK_TREE2(tree), "Column 3", 60, 0.0); etk_tree2_col_model_add(col3, etk_tree2_model_image_new()); - col4 = etk_tree2_col_new(ETK_TREE2(tree), "Column 4", 90); + col4 = etk_tree2_col_new(ETK_TREE2(tree), "Column 4", 60, 0.5); etk_tree2_col_model_add(col4, etk_tree2_model_checkbox_new()); etk_tree2_build(ETK_TREE2(tree)); - /* Then we add the rows to the tree. etk_tree2_freeze/thaw() is used to improve the speed when you insert a lot - * of rows. It's not really useful here since we insert only 150 rows */ + /* Then we add the rows to the tree. etk_tree2_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_tree2_freeze(ETK_TREE2(tree)); - for (i = 0; i < 50; i++) + for (i = 0; i < 1000; i++) { sprintf(row_name, "Row %d", (i * 3) + 1); stock_key = etk_stock_key_get(ETK_STOCK_PLACES_USER_HOME, ETK_STOCK_SMALL); @@ -100,8 +102,12 @@ 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_tree2_key_down_cb), NULL); - etk_signal_connect("row_clicked", ETK_OBJECT(tree), ETK_CALLBACK(_etk_test_tree2_row_clicked_cb), statusbar); + etk_signal_connect("key_down", ETK_OBJECT(tree), + ETK_CALLBACK(_etk_test_tree2_key_down_cb), NULL); + etk_signal_connect("row_clicked", ETK_OBJECT(tree), + ETK_CALLBACK(_etk_test_tree2_row_clicked_cb), statusbar); + etk_signal_connect("cell_value_changed", ETK_OBJECT(col4), + ETK_CALLBACK(_etk_test_tree2_checkbox_toggled_cb), statusbar); etk_widget_show_all(win); } @@ -154,5 +160,29 @@ (event->flags & ETK_MOUSE_TRIPLE_CLICK) ? "Triple" : ((event->flags & ETK_MOUSE_DOUBLE_CLICK) ? "Double" : "Single")); + etk_statusbar_message_push(statusbar, message, 0); +} + +/* Called when a checkbox of the tree is toggled: we display its new state in the statusbar */ +static void _etk_test_tree2_checkbox_toggled_cb(Etk_Object *object, Etk_Tree2_Row *row, void *data) +{ + Etk_Tree2 *tree; + Etk_Tree2_Col *col; + Etk_Statusbar *statusbar; + Etk_Bool checked; + char *row_name; + char message[1024]; + + if (!(col = ETK_TREE2_COL(object)) || !(statusbar = ETK_STATUSBAR(data)) || !row) + return; + + tree = etk_tree2_col_tree_get(col); + + /* We retrieve the name of the row: see _etk_test_tree2_row_clicked_cb() for more info*/ + etk_tree2_row_fields_get(row, etk_tree2_nth_col_get(tree, 0), NULL, NULL, &row_name, NULL); + /* We then retrieve the new state of the checkbox */ + etk_tree2_row_fields_get(row, col, &checked, NULL); + + 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