Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/exhibit/src/bin Modified Files: Makefile.am exhibit.h exhibit_file.c exhibit_file.h exhibit_image.c exhibit_image.h exhibit_main.c exhibit_menus.c exhibit_menus.h Added Files: exhibit_favorites.c exhibit_favorites.h Log Message: exhibit: - add favorites support. - add / delete from favorites. - browse to favorites. - todo: subdirs in favorites. =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/Makefile.am,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- Makefile.am 2 Jan 2006 14:47:45 -0000 1.4 +++ Makefile.am 3 Jan 2006 15:02:15 -0000 1.5 @@ -17,7 +17,8 @@ exhibit_sort.h \ exhibit_thumb.h \ exhibit_tab.h \ -exhibit_slideshow.h +exhibit_slideshow.h \ +exhibit_favorites.h exhibit_SOURCES = \ exhibit_file.c \ @@ -28,6 +29,7 @@ exhibit_thumb.c \ exhibit_tab.c \ exhibit_slideshow.c \ +exhibit_favorites.c \ $(exhibit_includes) exhibit_LDADD = @my_libs@ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- exhibit.h 2 Jan 2006 14:47:45 -0000 1.10 +++ exhibit.h 3 Jan 2006 15:02:15 -0000 1.11 @@ -87,8 +87,7 @@ Etk_Widget *menu; Etk_Widget *win; - char *dir; - char cur_path[PATH_MAX]; + char fav_path[PATH_MAX]; int zoom; int brightness; @@ -133,6 +132,8 @@ #define DATA8 unsigned char #endif +#define E_FREE(ptr) do { if(ptr) { free(ptr); ptr = NULL; } } while(0); + #include "exhibit_menus.h" #include "exhibit_file.h" #include "exhibit.h" @@ -143,5 +144,6 @@ #include "exhibit_thumb.h" #include "exhibit_tab.h" #include "exhibit_slideshow.h" +#include "exhibit_favorites.h" #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_file.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- exhibit_file.c 26 Dec 2005 14:28:55 -0000 1.4 +++ exhibit_file.c 3 Jan 2006 15:02:15 -0000 1.5 @@ -1,6 +1,31 @@ #include "exhibit.h" #include <Edje.h> +char *viewables[] = +{ + ".jpg", + ".png", + ".edj" +}; + +int +_ex_file_is_viewable(char *file) +{ + char *ext; + int i; + + ext = strrchr(file, '.'); + if(!ext) return 0; + + for(i = 0; i < VIEWABLES; i++) + { + if(!strcasecmp(ext, viewables[i])) + return 1; + } + + return 0; +} + int _ex_file_is_ebg(char *file) { =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_file.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- exhibit_file.h 1 Jan 2006 23:49:22 -0000 1.4 +++ exhibit_file.h 3 Jan 2006 15:02:15 -0000 1.5 @@ -1,8 +1,8 @@ #ifndef _EX_FILE_H #define _EX_FILE_H -int _ex_file_is_ebg(char *file); int _ex_file_is_viewable(char *file); +int _ex_file_is_ebg(char *file); char *_ex_file_strip_extention(char *path); char *_ex_file_get(char *path); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- exhibit_image.c 1 Jan 2006 23:49:22 -0000 1.17 +++ exhibit_image.c 3 Jan 2006 15:02:15 -0000 1.18 @@ -78,11 +78,14 @@ { Etk_Widget *menu_item; Etk_Widget *submenu; +#if 0 + /* do this better */ if(e->menu) { etk_menu_popup(ETK_MENU(e->menu)); return; } +#endif 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); @@ -107,6 +110,9 @@ _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Brighten"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_brighten_cb), e); //_ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Darken"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_darken_cb), e); _ex_menu_item_new(EX_MENU_ITEM_SEPERATOR, NULL, ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), NULL, NULL); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Add to favorites"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_add_to_fav_cb), e); + if(_ex_image_is_favorite(e)) + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Remove from favorites"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_remove_from_fav_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Set as wallpaper"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_set_wallpaper_cb), e); etk_menu_popup(ETK_MENU(e->menu)); } @@ -773,3 +779,20 @@ exit(0); } } + +Etk_Bool +_ex_image_is_favorite(Exhibit *e) +{ + Etk_Tree_Row *r; + char *icol_string; + char path[PATH_MAX]; + + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return FALSE; + + etk_tree_row_fields_get(r, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 0), NULL, &icol_string, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 1),NULL); + snprintf(path, sizeof(path), "%s/%s", e->fav_path, icol_string); + if(ecore_file_exists(path)) + return TRUE; + return FALSE; +} =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- exhibit_image.h 28 Dec 2005 11:14:18 -0000 1.5 +++ exhibit_image.h 3 Jan 2006 15:02:15 -0000 1.6 @@ -14,5 +14,6 @@ void _ex_image_zoom(Etk_Image *im, int zoom); void _ex_image_brightness(Etk_Image *im, int brightness); void _ex_image_wallpaper_set(Etk_Image *im); - +Etk_Bool _ex_image_is_favorite(Exhibit *e); + #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- exhibit_main.c 2 Jan 2006 23:50:18 -0000 1.30 +++ exhibit_main.c 3 Jan 2006 15:02:15 -0000 1.31 @@ -6,15 +6,7 @@ Ecore_Evas *ee_buf; Evas *evas_buf; - -char *viewables[] = -{ - ".jpg", - ".png", - ".edj" -}; - -Evas_List *event_handlers; +Evas_List *event_handlers; void _ex_main_statusbar_zoom_update(Exhibit *e) @@ -217,7 +209,7 @@ tree = ETK_TREE(object); etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, &dcol_string, NULL); - free(e->dir); + E_FREE(e->cur_tab->dir); e->cur_tab->dir = strdup(dcol_string); etk_tree_clear(ETK_TREE(e->cur_tab->itree)); etk_tree_clear(ETK_TREE(e->cur_tab->dtree)); @@ -346,24 +338,6 @@ return -1; } -int -_ex_file_is_viewable(char *file) -{ - char *ext; - int i; - - ext = strrchr(file, '.'); - if(!ext) return 0; - - for(i = 0; i < VIEWABLES; i++) - { - if(!strcasecmp(ext, viewables[i])) - return 1; - } - - return 0; -} - void _ex_main_populate_files(Exhibit *e, char *selected_file) { @@ -435,7 +409,7 @@ if(selected_file) if(!strcmp(selected_file, dir_entry->d_name)) selected_row = row; - free(thumb); + E_FREE(thumb); } else { Ex_Thumb *thumb; @@ -557,7 +531,7 @@ } } - free(dir); + E_FREE(dir); } if(!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter")) @@ -630,6 +604,17 @@ { _ex_main_window_slideshow_toggle(e); } + else if(!strcmp(ev->key, "d")) + { + Etk_Tree_Row *r; + char *icol_string; + + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return; + + etk_tree_row_fields_get(r, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 0), NULL, &icol_string, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 1),NULL); + _ex_favorites_add(e, icol_string); + } } } @@ -692,6 +677,7 @@ Exhibit *e; Ex_Tab *tab; char *file; + char *homedir; e = calloc(1, sizeof(Exhibit)); e->mouse.down = 0; @@ -700,6 +686,23 @@ e->slideshow.active = FALSE; e->slideshow.interval = 5.0; + homedir = getenv("HOME"); + if (!homedir) + snprintf(e->fav_path, sizeof(e->fav_path), "%s", "/tmp/exhibit_favorites"); + else + { + snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e", homedir); + if(!ecore_file_is_dir(e->fav_path)) + ecore_file_mkdir(e->fav_path); + snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e/exhibit", homedir); + if(!ecore_file_is_dir(e->fav_path)) + ecore_file_mkdir(e->fav_path); + snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e/exhibit/favorites", homedir); + } + + if(!ecore_file_is_dir(e->fav_path)) + ecore_file_mkdir(e->fav_path); + file = NULL; tab = NULL; @@ -774,15 +777,17 @@ _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); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Fit to window"), EX_IMAGE_FIT_TO_WINDOW, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_fit_to_window_cb), e); _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, _("Toggle slideshow"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_toggle_slideshow_cb), e); - _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Refresh"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_refresh_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Refresh"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_refresh_cb), e); + _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, _("Add to favorites"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_add_to_fav_cb), e); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("View favorites"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_go_to_fav_cb), e); menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Help"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); @@ -857,7 +862,7 @@ dir2 = ecore_file_get_dir(dir); tab = _ex_tab_new(e, dir2); - free(dir2); + E_FREE(dir2); file = (const char*)ecore_file_get_file((const char*)dir); } else =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- exhibit_menus.c 2 Jan 2006 14:47:45 -0000 1.13 +++ exhibit_menus.c 3 Jan 2006 15:02:15 -0000 1.14 @@ -126,12 +126,8 @@ EX_MENU_ITEM_GET_RETURN(obj); e = (Exhibit *)data; - if (e) - { - if (e->dir) - free(e->dir); - free(e); - } + if (e) + free(e); etk_main_quit(); } @@ -322,6 +318,56 @@ } void +_ex_menu_add_to_fav_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + Etk_Tree_Row *r; + char *icol_string; + EX_MENU_ITEM_GET_RETURN(obj); + + e = data; + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return; + + etk_tree_row_fields_get(r, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 0), NULL, &icol_string, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 1),NULL); + _ex_favorites_add(e, icol_string); + //free(icol_string); +} + +void +_ex_menu_remove_from_fav_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + Etk_Tree_Row *r; + char *icol_string; + EX_MENU_ITEM_GET_RETURN(obj); + + e = data; + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return; + + etk_tree_row_fields_get(r, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 0), NULL, &icol_string, etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 1),NULL); + _ex_favorites_del(e, icol_string); + //free(icol_string); +} + +void +_ex_menu_go_to_fav_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + EX_MENU_ITEM_GET_RETURN(obj); + + e = data; + + _ex_slideshow_stop(e); + E_FREE(e->cur_tab->dir); + e->cur_tab->dir = strdup(e->fav_path); + etk_tree_clear(ETK_TREE(e->cur_tab->itree)); + etk_tree_clear(ETK_TREE(e->cur_tab->dtree)); + _ex_main_populate_files(e, NULL); +} + +void _ex_menu_release_notes_cb(Etk_Object *obj, void *data) { EX_MENU_ITEM_GET_RETURN(obj); =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- exhibit_menus.h 19 Dec 2005 14:01:30 -0000 1.3 +++ exhibit_menus.h 3 Jan 2006 15:02:15 -0000 1.4 @@ -32,6 +32,9 @@ void _ex_menu_fit_to_window_cb(Etk_Object *obj, void *data); void _ex_menu_toggle_slideshow_cb(Etk_Object *obj, void *data); void _ex_menu_refresh_cb(Etk_Object *obj, void *data); +void _ex_menu_add_to_fav_cb(Etk_Object *obj, void *data); +void _ex_menu_remove_from_fav_cb(Etk_Object *obj, void *data); +void _ex_menu_go_to_fav_cb(Etk_Object *obj, void *data); void _ex_menu_release_notes_cb(Etk_Object *obj, void *data); void _ex_menu_about_cb(Etk_Object *obj, void *data); ------------------------------------------------------- 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