Enlightenment CVS committal Author : doursse Project : e17 Module : proto
Dir : e17/proto/epdf/src/bin Modified Files: epdf_etk_test.c Log Message: use etk_tree2 for the etk test. There is still a segfault that I don't understand when one closes the window =================================================================== RCS file: /cvs/e/e17/proto/epdf/src/bin/epdf_etk_test.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- epdf_etk_test.c 3 Sep 2006 07:49:45 -0000 1.4 +++ epdf_etk_test.c 13 Jan 2007 19:51:24 -0000 1.5 @@ -8,54 +8,23 @@ static void _quit_cb(void *data); -static void _change_page_cb (Etk_Object *object, Etk_Tree_Row *row, void *data); - -void -_tree_fill (Etk_Pdf *pdf, Etk_Tree *tree, Etk_Tree_Col *col, Etk_Tree_Row *row, Ecore_List *items) -{ - Etk_Tree_Row *prow; - Epdf_Index_Item *item; - - if (!items) - return; - - ecore_list_goto_first (items); - while ((item = ecore_list_next (items))) { - char *buf; - Ecore_List *c; - int *num; - - buf = strdup (epdf_index_item_title_get (item)); - if (!row) - prow = etk_tree_append (tree, col, buf, NULL); - else - prow = etk_tree_append_to_row (row, col, buf, NULL); - - num = (int *)malloc (sizeof (int)); - *num = epdf_index_item_page_get (etk_pdf_pdf_document_get (pdf), item); - etk_tree_row_data_set (prow, num); - free (buf); - c = epdf_index_item_children_get (item); - if (c) { - _tree_fill (pdf, tree, col, prow, c); - } - } -} +static void _tree2_fill (Etk_Pdf *pdf, Etk_Tree2 *tree, Etk_Tree2_Col *col, Etk_Tree2_Row *row, Ecore_List *items); +static void _change_page_cb (Etk_Object *object, Etk_Tree2_Row *row, Etk_Event_Mouse_Up *event, void *data); int main (int argc, char *argv[]) { - Etk_Widget *window; - Etk_Widget *table; - Etk_Widget *tree; - Etk_Widget *list; - Etk_Widget *pdf; - Etk_Tree_Col *col; - Etk_Tree_Row *row; - Ecore_List *index; + Etk_Widget *window; + Etk_Widget *table; + Etk_Widget *tree; + Etk_Widget *list; + Etk_Widget *pdf; + Etk_Tree2_Col *col; + Etk_Tree2_Row *row; + Ecore_List *index; Epdf_Document *document; - int page_count; - int i; + int page_count; + int i; etk_init (NULL,NULL); @@ -85,54 +54,65 @@ table = etk_table_new (2, 2, ETK_FALSE); etk_container_add (ETK_CONTAINER (window), table); etk_widget_show (table); - + if (index) { - tree = etk_tree_new (); - etk_tree_headers_visible_set (ETK_TREE (tree), ETK_FALSE); - etk_widget_size_request_set (tree, 60, -1); - etk_tree_mode_set (ETK_TREE(tree), ETK_TREE_MODE_TREE); - col = etk_tree_col_new (ETK_TREE(tree), "", - etk_tree_model_text_new (ETK_TREE (tree)), - 60); - etk_tree_build (ETK_TREE (tree)); - etk_tree_freeze (ETK_TREE (tree)); - _tree_fill (ETK_PDF (pdf), ETK_TREE (tree), col, NULL, index); - etk_tree_thaw (ETK_TREE (tree)); + Etk_Tree2_Col *col; + + tree = etk_tree2_new (); + etk_tree2_mode_set (ETK_TREE2 (tree), ETK_TREE2_MODE_TREE); + etk_tree2_multiple_select_set (ETK_TREE2 (tree), ETK_FALSE); + + /* column */ + col = etk_tree2_col_new (ETK_TREE2 (tree), "Column", 130, 0.0); + etk_tree2_col_model_add (col, etk_tree2_model_text_new()); + + etk_tree2_build (ETK_TREE2 (tree)); + + /* rows */ + _tree2_fill (ETK_PDF (pdf), ETK_TREE2 (tree), col, NULL, index); epdf_index_delete (index); - etk_signal_connect ("row_selected", ETK_OBJECT (tree), + + /* change page */ + etk_signal_connect ("row_clicked", ETK_OBJECT (tree), ETK_CALLBACK(_change_page_cb), pdf); + + /* we attach and show */ etk_table_attach_default (ETK_TABLE (table), tree, 0, 0, 0, 0); etk_widget_show (tree); } - list = etk_tree_new (); - etk_tree_headers_visible_set (ETK_TREE (list), FALSE); - etk_widget_size_request_set (list, 60, -1); - if (index) - etk_table_attach_default (ETK_TABLE (table), list, 0, 0, 1, 1); - else - etk_table_attach_default (ETK_TABLE (table), list, 0, 0, 0, 1); - etk_widget_show (list); + list = etk_tree2_new (); + etk_tree2_headers_visible_set (ETK_TREE2 (list), FALSE); + etk_tree2_mode_set (ETK_TREE2 (list), ETK_TREE2_MODE_LIST); + etk_tree2_multiple_select_set (ETK_TREE2 (list), ETK_FALSE); + + /* column */ + col = etk_tree2_col_new (ETK_TREE2 (list), "", 60, 0.0); + etk_tree2_col_model_add (col, etk_tree2_model_int_new()); - etk_signal_connect ("row_selected", ETK_OBJECT (list), - ETK_CALLBACK(_change_page_cb), pdf); - etk_tree_mode_set (ETK_TREE(list), ETK_TREE_MODE_LIST); - col = etk_tree_col_new (ETK_TREE(list), "", - etk_tree_model_int_new (ETK_TREE (list)), - 60); - etk_tree_build (ETK_TREE (list)); + etk_tree2_build (ETK_TREE2 (list)); + /* rows */ page_count = epdf_document_page_count_get (ETK_PDF (pdf)->pdf_document); - etk_tree_freeze (ETK_TREE (list)); for (i = 0; i < page_count; i++) { int *num; - row = etk_tree_append (ETK_TREE (list), col, i + 1, NULL); + row = etk_tree2_row_append (ETK_TREE2 (list), NULL, col, i + 1, NULL); num = (int *)malloc (sizeof (int)); *num = i; - etk_tree_row_data_set (row, num); + etk_tree2_row_data_set_full (row, num, free); } - etk_tree_thaw (ETK_TREE (list)); + + /* change page */ + etk_signal_connect ("row_clicked", ETK_OBJECT (list), + ETK_CALLBACK(_change_page_cb), pdf); + + /* we attach and show */ + if (index) + etk_table_attach_default (ETK_TABLE (table), list, 0, 0, 1, 1); + else + etk_table_attach_default (ETK_TABLE (table), list, 0, 0, 0, 1); + etk_widget_show (list); etk_table_attach_default (ETK_TABLE (table), pdf, 1, 1, 0, 1); etk_widget_show (pdf); @@ -141,6 +121,8 @@ etk_main (); + etk_shutdown (); + return 0; } @@ -151,14 +133,43 @@ } static void -_change_page_cb (Etk_Object *object, Etk_Tree_Row *row, void *data) +_tree2_fill (Etk_Pdf *pdf, Etk_Tree2 *tree, Etk_Tree2_Col *col, Etk_Tree2_Row *row, Ecore_List *items) +{ + Etk_Tree2_Row *prow; + Epdf_Index_Item *item; + + if (!items) + return; + + ecore_list_goto_first (items); + while ((item = ecore_list_next (items))) { + char *buf; + Ecore_List *c; + int *num; + + buf = strdup (epdf_index_item_title_get (item)); + prow = etk_tree2_row_append (tree, row, col, buf, NULL); + + num = (int *)malloc (sizeof (int)); + *num = epdf_index_item_page_get (etk_pdf_pdf_document_get (pdf), item); + etk_tree2_row_data_set_full (prow, num, free); + free (buf); + c = epdf_index_item_children_get (item); + if (c) { + _tree2_fill (pdf, tree, col, prow, c); + } + } +} + +static void +_change_page_cb (Etk_Object *object, Etk_Tree2_Row *row, Etk_Event_Mouse_Up *event, void *data) { - Etk_Tree *tree; - Etk_Pdf *pdf; - int row_number; + Etk_Tree2 *tree; + Etk_Pdf *pdf; + int row_number; - tree = ETK_TREE (object); + tree = ETK_TREE2 (object); pdf = ETK_PDF (data); - row_number = *(int *)etk_tree_row_data_get (row); + row_number = *(int *)etk_tree2_row_data_get (row); etk_pdf_page_set (pdf, row_number); } ------------------------------------------------------------------------- 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