Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/exhibit/src/bin Modified Files: exhibit_image.c exhibit_main.c exhibit_main.h exhibit_menus.c exhibit_sort.c exhibit_sort.h Log Message: - add sorting (name, size, date, resolution) - implement quit from menu =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- exhibit_image.c 23 Dec 2005 00:44:47 -0000 1.10 +++ exhibit_image.c 23 Dec 2005 01:19:34 -0000 1.11 @@ -35,12 +35,23 @@ } else if(ev->button == 3) { + Etk_Menu_Item *menu_item; + Etk_Menu *submenu; if(e->menu) { etk_menu_popup(ETK_MENU(e->menu)); return; } e->menu = etk_menu_new(); + + menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Sort"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); + submenu = etk_menu_new(); + etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(submenu)); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Date"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_date_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Size"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_size_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Name"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_name_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Resolution"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_resol_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in The Gimp"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in XV"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in Xpaint"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- exhibit_main.c 23 Dec 2005 00:44:48 -0000 1.17 +++ exhibit_main.c 23 Dec 2005 01:19:34 -0000 1.18 @@ -3,7 +3,9 @@ extern pid_t pid; extern Evas_List *thumb_list; -static int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); + +Ecore_Evas *ee_buf; +Evas *evas_buf; char *viewables[] = { @@ -205,7 +207,7 @@ } -static int +int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) { char *dir1, *dir2; @@ -219,6 +221,113 @@ } int +_ex_main_itree_name_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) +{ + char *f1, *f2; + + if (!row1 || !row2 || !col) + return 0; + + etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL); + etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL); + + return strcasecmp(f1, f2); +} + +int +_ex_main_itree_size_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) +{ + char *f1, *f2; + struct stat s1, s2; + + if (!row1 || !row2 || !col) + return 0; + + etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL); + etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL); + + stat(f1, &s1); + stat(f2, &s2); + + if(s1.st_size > s2.st_size) + return 1; + else + return -1; +} + +int +_ex_main_itree_date_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) +{ + char *f1, *f2; + struct stat s1, s2; + + if (!row1 || !row2 || !col) + return 0; + + etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL); + etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL); + + stat(f1, &s1); + stat(f2, &s2); + + if(s1.st_mtime > s2.st_mtime) + return 1; + else + return -1; +} + +int +_ex_main_itree_resol_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data) +{ + char *f1, *f2; + Evas_Object *i1, *i2; + int w1, h1, w2, h2; + + if (!row1 || !row2 || !col) + return 0; + + etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL); + etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL); + + if(!ee_buf) + { + ee_buf = ecore_evas_buffer_new(0, 0); + evas_buf = ecore_evas_get(ee_buf); + } + + if(_ex_file_is_ebg(f1)) + { + w1 = 800; + h1 = 600; + } + else + { + i1 = evas_object_image_add(evas_buf); + evas_object_image_file_set(i1, f1, NULL); + evas_object_image_size_get(i1, &w1, &h1); + evas_object_del(i1); + } + + if(_ex_file_is_ebg(f2)) + { + w2 = 800; + h2 = 600; + } + else + { + i2 = evas_object_image_add(evas_buf); + evas_object_image_file_set(i2, f2, NULL); + evas_object_image_size_get(i2, &w2, &h2); + evas_object_del(i2); + } + + if(w1 * h1 > w2 * h2) + return 1; + else + return -1; +} + +int _ex_file_is_viewable(char *file) { char *ext; @@ -482,8 +591,8 @@ etk_table_attach(ETK_TABLE(e->table), e->menu_bar, 0, 4, 0, 0, 0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | ETK_FILL_POLICY_HEXPAND); { - Etk_Widget *menu; - Etk_Widget *menu_item; + Etk_Widget *menu, *submenu; + Etk_Widget *menu_item, *menu_item2; menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("File"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); @@ -499,10 +608,10 @@ _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), NULL, NULL); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Close window"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_close_window_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Quit"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_quit_cb), e); - + menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Edit"), -99, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); + etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in The Gimp"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in XV"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in Xpaint"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); @@ -521,6 +630,16 @@ menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("View"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); + + menu_item2 = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Sort"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); + submenu = etk_menu_new(); + etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item2), ETK_MENU(submenu)); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Date"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_date_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Size"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_size_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Name"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_name_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Resolution"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_resol_cb), e); + + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom in"), EX_IMAGE_ZOOM_IN, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_zoom_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom out"), EX_IMAGE_ZOOM_OUT, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_zoom_out_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom 1:1"), EX_IMAGE_ONE_TO_ONE, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_zoom_one_to_one_cb), e); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- exhibit_main.h 14 Dec 2005 15:34:28 -0000 1.2 +++ exhibit_main.h 23 Dec 2005 01:19:34 -0000 1.3 @@ -8,7 +8,12 @@ void _ex_main_button_fit_to_window_cb(Etk_Object *obj, void *data); void _ex_main_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); void _ex_main_itree_key_down_cb(Etk_Object *object, void *event, void *data); +int _ex_main_itree_name_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); +int _ex_main_itree_size_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); +int _ex_main_itree_date_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); +int _ex_main_itree_resol_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); void _ex_main_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); +int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); void _ex_main_populate_files(Exhibit *e); void _ex_main_entry_dir_key_down_cb(Etk_Object *object, void *event, void *data); void _ex_main_goto_dir_clicked_cb(Etk_Object *object, void *data); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- exhibit_menus.c 19 Dec 2005 19:28:31 -0000 1.8 +++ exhibit_menus.c 23 Dec 2005 01:19:34 -0000 1.9 @@ -114,14 +114,14 @@ _ex_menu_close_window_cb(Etk_Object *obj, void *data) { EX_MENU_ITEM_GET_RETURN(obj); - printf("close window\n"); + etk_main_quit(); } void _ex_menu_quit_cb(Etk_Object *obj, void *data) { EX_MENU_ITEM_GET_RETURN(obj); - printf("quit\n"); + etk_main_quit(); } void =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_sort.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- exhibit_sort.c 14 Dec 2005 11:33:30 -0000 1.1 +++ exhibit_sort.c 23 Dec 2005 01:19:34 -0000 1.2 @@ -1,5 +1,42 @@ #include "exhibit.h" +void +_ex_sort_name_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + + e = data; + etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_name_compare_cb, TRUE, e->icol, NULL); +} + +void +_ex_sort_size_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + + e = data; + etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_size_compare_cb, TRUE, e->icol, NULL); +} + +void +_ex_sort_resol_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + + e = data; + etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_resol_compare_cb, TRUE, e->icol, NULL); +} + +void +_ex_sort_date_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + + e = data; + etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_date_compare_cb, TRUE, e->icol, NULL); +} + + void _ex_sort_label_mouse_down_cb(Etk_Object *object, void *event_info, void *data) { =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_sort.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- exhibit_sort.h 14 Dec 2005 11:33:30 -0000 1.1 +++ exhibit_sort.h 23 Dec 2005 01:19:34 -0000 1.2 @@ -2,5 +2,9 @@ #define _EX_SORT_H void _ex_sort_label_mouse_down_cb(Etk_Object *object, void *event_info, void *data); +void _ex_sort_name_cb(Etk_Object *obj, void *data); +void _ex_sort_size_cb(Etk_Object *obj, void *data); +void _ex_sort_date_cb(Etk_Object *obj, void *data); +void _ex_sort_resol_cb(Etk_Object *obj, void *data); #endif ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs