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

Reply via email to