Enlightenment CVS committal

Author  : balony
Project : e17
Module  : proto

Dir     : e17/proto/exhibit/src/bin


Modified Files:
        exhibit.h exhibit_main.c exhibit_options.c exhibit_thumb.c 


Log Message:


- Much better way of updating the thumblist when new images is added to your
  current dir.
- A new option to choose if you want to autofocus the new image added, may be
  cheesy if lots of images is added at once.. :-)

===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- exhibit.h   1 Sep 2006 20:23:50 -0000       1.32
+++ exhibit.h   1 Sep 2006 21:51:38 -0000       1.33
@@ -16,6 +16,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libgen.h>
 #include <dirent.h>
 #include <limits.h>
 #include <sys/types.h>
@@ -100,6 +101,7 @@
    int default_view;   
    int default_sort;
    int default_sort_tmp;
+   int monitor_focus;
    
    int last_w;
    int last_h;
@@ -118,6 +120,7 @@
    Etk_Widget *comments_visible;
    Etk_Widget *rotate_autosave;
    Etk_Widget *default_sort;
+   Etk_Widget *monitor_focus;
    Etk_Combobox_Item *sort_date;
    Etk_Combobox_Item *sort_size;
    Etk_Combobox_Item *sort_name;
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_main.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -3 -r1.70 -r1.71
--- exhibit_main.c      1 Sep 2006 20:23:50 -0000       1.70
+++ exhibit_main.c      1 Sep 2006 21:51:38 -0000       1.71
@@ -10,6 +10,7 @@
 Exhibit *e;
 Evas_List  *event_handlers;
 
+static void _ex_main_itree_add(const char *file, const char *selected_file);
 static void _ex_main_monitor_dir(void *data, Ecore_File_Monitor 
*ecore_file_monitor, Ecore_File_Event event, const char *path);
 static int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
 static void _ex_main_goto_dir_clicked_cb(Etk_Object *object, void *data);
@@ -157,7 +158,6 @@
    char back[PATH_MAX];
    DIR *dir;
    struct dirent *dir_entry;
-   Etk_Tree_Row *row, *selected_row = NULL;
 
    chdir(e->cur_tab->dir);
    
@@ -195,7 +195,6 @@
        char image[PATH_MAX];
        char imagereal[PATH_MAX];
        struct stat st;
-       Epsilon *ep;
 
         /* Do not include hidden files */
        if (dir_entry->d_name[0] == '.')
@@ -227,37 +226,7 @@
        if(!realpath(image, imagereal))
          snprintf(imagereal, PATH_MAX, "%s", image);
 
-       ep = epsilon_new(imagereal);
-       epsilon_thumb_size(ep, EPSILON_THUMB_NORMAL);
-
-       if(epsilon_exists(ep) == EPSILON_OK)
-         {
-            char *thumb;
-
-            thumb = (char*)epsilon_thumb_file_get(ep);
-            row = etk_tree_append(ETK_TREE(e->cur_tab->itree), 
e->cur_tab->icol, thumb, dir_entry->d_name, NULL);
-            if(selected_file)                                    
-              if(!strcmp(selected_file, dir_entry->d_name))
-                selected_row = row;                         
-            E_FREE(thumb);
-         }
-       else {
-          Ex_Thumb *thumb;
-
-          thumb = calloc(1, sizeof(Ex_Thumb));
-          thumb->ep = ep;
-          thumb->e = e;
-          thumb->name = strdup(dir_entry->d_name);
-          thumb_list = evas_list_append(thumb_list, thumb);
-          if(selected_file)
-            {
-               if(!strcmp(selected_file, dir_entry->d_name))
-                 thumb->selected = ETK_TRUE;
-            }
-          else
-            thumb->selected = ETK_FALSE;
-          if(pid == -1) _ex_thumb_generate();
-       }
+       _ex_main_itree_add(imagereal, selected_file);   
      }
 
    etk_tree_thaw(ETK_TREE(e->cur_tab->itree));
@@ -276,30 +245,75 @@
      }
 
    if (update == EX_TREE_UPDATE_ALL || update == EX_TREE_UPDATE_DIRS)
-     {
        etk_tree_sort(ETK_TREE(e->cur_tab->dtree), _ex_main_dtree_compare_cb, 
              ETK_TRUE, e->cur_tab->dcol, NULL);
-     }
 
-   if(selected_row)
+   if (!e->cur_tab->monitor)
      {
-       etk_tree_row_select(selected_row);
-       etk_tree_row_scroll_to(selected_row, ETK_TRUE);
+       D(("Adding monitoring to path %s\n", e->cur_tab->cur_path)); 
+       e->cur_tab->monitor = ecore_file_monitor_add(e->cur_tab->cur_path, 
+             _ex_main_monitor_dir, NULL);
      }
 
    /* Set the dir to the current dir at the end so we avoid
       stepdown like ".." if we just call the refresh on
       the listing like after a delete */
    e->cur_tab->dir = strdup(".");
+   
+   closedir(dir);
+}
 
-   if (!e->cur_tab->monitor)
+static void
+_ex_main_itree_add(const char *file, const char *selected_file)
+{
+   Epsilon *ep;
+   Etk_Tree_Row *row;
+   
+   if(!_ex_file_is_viewable(basename((char *) file)))
+     return;
+   
+   ep = epsilon_new(file);
+   epsilon_thumb_size(ep, EPSILON_THUMB_NORMAL);
+   
+   if(epsilon_exists(ep) == EPSILON_OK)
      {
-       D(("Adding monitoring to path %s\n", e->cur_tab->cur_path)); 
-       e->cur_tab->monitor = ecore_file_monitor_add(e->cur_tab->cur_path, 
-             _ex_main_monitor_dir, NULL);
+       char *thumb;
+
+       thumb = (char*) epsilon_thumb_file_get(ep);
+       row = etk_tree_append(ETK_TREE(e->cur_tab->itree), e->cur_tab->icol, 
+             thumb, basename((char *) file), NULL);
+
+       if (selected_file && e->options->monitor_focus)
+         {
+            if(!strcmp(selected_file, file))
+              {
+                 etk_tree_row_select(row);
+                 etk_tree_row_scroll_to(row, ETK_TRUE);
+              }
+         }
+       
+       E_FREE(thumb);
      }
-   
-   closedir(dir);
+   else 
+     {
+       Ex_Thumb *thumb;
+       
+       thumb = calloc(1, sizeof(Ex_Thumb));
+       thumb->ep = ep;
+       thumb->e = e;
+       thumb->name = strdup(basename((char *) file));
+       thumb_list = evas_list_append(thumb_list, thumb);
+       if(selected_file && e->options->monitor_focus)
+         {
+            if(!strcmp(selected_file, file))
+              thumb->selected = ETK_TRUE;
+         }
+       else
+         thumb->selected = ETK_FALSE;
+       
+       if(pid == -1) _ex_thumb_generate();
+     }
+
 }
 
 static void
@@ -335,8 +349,7 @@
         _ex_main_populate_files(NULL, EX_TREE_UPDATE_FILES);
         break;
       case ECORE_FILE_EVENT_CREATED_FILE:
-        etk_tree_clear(ETK_TREE(e->cur_tab->itree));
-        _ex_main_populate_files(NULL, EX_TREE_UPDATE_FILES);
+        _ex_main_itree_add(path, path);
         break;
       default:
         D(("Unknown ecore file event occured\n"));
@@ -942,9 +955,7 @@
      fprintf(stderr, "WARNING: Exhibit could not set up its options files!\n"
                     "         You will not be able to save your 
preferences.\n");
    event_handlers = evas_list_append(event_handlers,
-                                    
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
-                                                            _ex_thumb_exe_exit,
-                                                            NULL));
+        ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _ex_thumb_exe_exit, 
NULL));
    
    epsilon_init();
    if(argc > 1)
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_options.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- exhibit_options.c   1 Sep 2006 20:23:50 -0000       1.15
+++ exhibit_options.c   1 Sep 2006 21:51:38 -0000       1.16
@@ -106,6 +106,7 @@
    CFG_OPTIONS_NEWI("lt", slide_interval, EET_T_DOUBLE);
    CFG_OPTIONS_NEWI("cv", comments_visible, EET_T_INT);
    CFG_OPTIONS_NEWI("ra", rotate_autosave, EET_T_INT);
+   CFG_OPTIONS_NEWI("mf", monitor_focus, EET_T_INT);
    CFG_OPTIONS_NEWI("dv", default_view, EET_T_INT);
    CFG_OPTIONS_NEWI("ds", default_sort, EET_T_INT);
    CFG_OPTIONS_NEWI("lw", last_w, EET_T_INT);
@@ -206,6 +207,7 @@
    e->options->last_w           = EX_DEFAULT_WINDOW_WIDTH;
    e->options->last_h           = EX_DEFAULT_WINDOW_HEIGHT;
    e->options->rotate_autosave  = ETK_FALSE;
+   e->options->monitor_focus  = ETK_FALSE;
    e->version = _ex_options_version_parse(VERSION);        
 }
 
@@ -475,6 +477,12 @@
    etk_tree_clear(ETK_TREE(e->cur_tab->itree));
    _ex_main_populate_files(NULL, EX_TREE_UPDATE_ALL);
 
+   /* MONITOR FOCUS */
+   if (IS_SELECTED(dialog->monitor_focus))
+       e->options->monitor_focus = ETK_TRUE;
+   else 
+       e->options->monitor_focus = ETK_FALSE;
+
    /* RUN IN */
    APP_NEW(dialog->app1, e->options->app1);
    APP_NEW(dialog->app1_cmd, e->options->app1_cmd);
@@ -687,6 +695,17 @@
    etk_signal_connect("active_item_changed", ETK_OBJECT(dialog->default_sort), 
         ETK_CALLBACK(_ex_options_combobox_active_item_changed_cb), NULL);
    
+   frame = etk_frame_new("Filesystem monitoring");
+   etk_box_append(ETK_BOX(vbox), frame, ETK_BOX_START, ETK_BOX_NONE, 5);
+   hbox = etk_hbox_new(ETK_FALSE, 0);
+   etk_container_add(ETK_CONTAINER(frame), hbox);
+   
+   dialog->monitor_focus = etk_check_button_new_with_label("Autofocus new 
images added to your current dir");
+   etk_box_append(ETK_BOX(hbox), dialog->monitor_focus, ETK_BOX_START, 
ETK_BOX_NONE, 0);
+   
+   if (e->options->monitor_focus)
+     etk_toggle_button_toggle(ETK_TOGGLE_BUTTON(dialog->monitor_focus));
+
    if (e->options->default_sort == EX_SORT_BY_DATE)
       etk_combobox_active_item_set(ETK_COMBOBOX(dialog->default_sort), 
dialog->sort_date);
    else if (e->options->default_sort == EX_SORT_BY_SIZE)
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_thumb.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- exhibit_thumb.c     15 Jan 2006 12:31:48 -0000      1.7
+++ exhibit_thumb.c     1 Sep 2006 21:51:38 -0000       1.8
@@ -7,8 +7,8 @@
 int
 _ex_thumb_exe_exit(void *data, int type, void *event)
 {
-   Ecore_Exe_Event_Del *ev;
-   Ex_Thumb              *thumb;
+   Ecore_Exe_Event_Del  *ev;
+   Ex_Thumb             *thumb;
    char                 *ext;
 
    ev = event;
@@ -31,10 +31,10 @@
             etk_tree_row_select(row);
             etk_tree_row_scroll_to(row, ETK_TRUE);          
          }
-       free(thumb->image);
-       free(thumb->name);
+       E_FREE(thumb->image);
+       E_FREE(thumb->name);
        epsilon_free(thumb->ep);
-       free(thumb);
+       E_FREE(thumb);
      }
 
    pid = -1;



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to