Enlightenment CVS committal Author : moom16 Project : e17 Module : proto
Dir : e17/proto/etk/src/bin Modified Files: etk_tree_test.c Log Message: * Add a frame container * More work on the test app of the tree =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/bin/etk_tree_test.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- etk_tree_test.c 29 Oct 2005 19:57:20 -0000 1.10 +++ etk_tree_test.c 30 Oct 2005 10:25:25 -0000 1.11 @@ -1,12 +1,44 @@ #include "etk_test.h" +#include <string.h> #include "../../config.h" +/* 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]; + + if (!tree) + 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); + + for (i = 0; i < n; i++) + { + 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); + + etk_tree_append(ETK_TREE(tree), col1, PACKAGE_DATA_DIR "/images/1star.png", row_name, col2, i, col3, star_path, NULL); + } +} + +/* Called when the user wants to close the window: we just hide it */ static Etk_Bool _etk_test_tree_window_deleted_cb(void *data) { etk_widget_hide(ETK_WIDGET(data)); return 1; } +/* 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; @@ -19,20 +51,58 @@ printf("\"%s\" %d %s\n\n", 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 %p\n"), object, row); } +/* 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); +} + +/* Create the test window */ void etk_test_tree_window_create(void *data) { static Etk_Widget *win = NULL; Etk_Widget *tree; Etk_Tree_Row *row; Etk_Tree_Col *col1, *col2, *col3; - Etk_Widget *hpaned; - Etk_Widget *vbox; + Etk_Widget *table; Etk_Widget *label; + Etk_Widget *frame; + Etk_Widget *button; + Etk_Widget *hbox; int i; if (win) @@ -43,22 +113,18 @@ win = etk_window_new(); etk_window_title_set(ETK_WINDOW(win), _("Etk Tree Test")); - etk_signal_connect("delete_event", ETK_OBJECT(win), ETK_CALLBACK(_etk_test_tree_window_deleted_cb), win); + etk_signal_connect("delete_event", ETK_OBJECT(win), ETK_CALLBACK(_etk_test_tree_window_deleted_cb), win); - hpaned = etk_hpaned_new(); - etk_container_add(ETK_CONTAINER(win), hpaned); + table = etk_table_new(2, 3, FALSE); + etk_container_add(ETK_CONTAINER(win), table); /* The tree: */ - vbox = etk_vbox_new(FALSE, 0); - etk_paned_add1(ETK_PANED(hpaned), vbox); - label = etk_label_new(_("<h1>Tree:</h1>")); - etk_box_pack_start(ETK_BOX(vbox), label, FALSE, TRUE, 0); + etk_table_attach(ETK_TABLE(table), label, 0, 0, 0, 0, 0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL); tree = etk_tree_new(); etk_widget_size_request_set(tree, 320, 400); - //etk_container_add(ETK_CONTAINER(win), tree); - etk_box_pack_start(ETK_BOX(vbox), tree, TRUE, TRUE, 0); + etk_table_attach_defaults(ETK_TABLE(table), tree, 0, 0, 1, 1); etk_tree_mode_set(ETK_TREE(tree), ETK_TREE_MODE_TREE); col1 = etk_tree_col_new(ETK_TREE(tree), _("Column 1"), ETK_TREE_COL_ICON_TEXT, 100); @@ -82,15 +148,12 @@ etk_signal_connect("row_unselected", ETK_OBJECT(tree), ETK_CALLBACK(_etk_test_tree_row_unselected), NULL); /* The list: */ - vbox = etk_vbox_new(FALSE, 0); - etk_paned_add2(ETK_PANED(hpaned), vbox); - label = etk_label_new(_("<h1>List:</h1>")); - etk_box_pack_start(ETK_BOX(vbox), label, FALSE, TRUE, 0); + etk_table_attach(ETK_TABLE(table), label, 1, 1, 0, 0, 0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL); tree = etk_tree_new(); etk_widget_size_request_set(tree, 320, 400); - etk_box_pack_start(ETK_BOX(vbox), tree, TRUE, TRUE, 0); + etk_table_attach_defaults(ETK_TABLE(table), tree, 1, 1, 1, 1); etk_tree_multiple_select_set(ETK_TREE(tree), TRUE); col1 = etk_tree_col_new(ETK_TREE(tree), _("Column 1"), ETK_TREE_COL_ICON_TEXT, 100); @@ -118,6 +181,32 @@ 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); - + + /* Frame */ + frame = etk_frame_new(_("List Actions")); + etk_table_attach(ETK_TABLE(table), frame, 0, 1, 2, 2, 0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL); + hbox = etk_hbox_new(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_pack_start(ETK_BOX(hbox), button, TRUE, TRUE, 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_pack_start(ETK_BOX(hbox), button, TRUE, TRUE, 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_pack_start(ETK_BOX(hbox), button, TRUE, TRUE, 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_pack_start(ETK_BOX(hbox), button, TRUE, TRUE, 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_pack_start(ETK_BOX(hbox), button, TRUE, TRUE, 0); + etk_widget_show_all(win); } ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs