Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : apps/exhibit

Dir     : e17/apps/exhibit/src/bin


Modified Files:
        exhibit.h exhibit_image.c exhibit_image.h exhibit_main.c 
        exhibit_model_wobbly.c exhibit_model_wobbly.h exhibit_tab.c 
        exhibit_tab.h exhibit_thumb.c exhibit_thumb.h 


Log Message:
- helper functions
- fix a bug thats been around for a long time (viewing lots of images and 
changing dirs while the thumb process / addition is not done yet used to cause 
the images to get appended to the wrong itree - fixed now)


===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -3 -r1.40 -r1.41
--- exhibit.h   17 Jan 2007 01:30:09 -0000      1.40
+++ exhibit.h   3 May 2007 10:30:41 -0000       1.41
@@ -167,6 +167,8 @@
    
    Etk_Tree_Col  *dcol;
    Etk_Tree_Col  *icol;
+
+   Etk_Tree_Model *imodel;
    
    struct {
       Etk_Bool    visible;
@@ -243,6 +245,8 @@
    char     *image;
    Etk_Bool  selected;
    Epsilon  *ep;
+   Ex_Tab   *tab;
+   Etk_Bool  is_update;
 };
 
 struct _Ex_Filedialog
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_image.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -r1.45 -r1.46
--- exhibit_image.c     22 Mar 2007 19:43:19 -0000      1.45
+++ exhibit_image.c     3 May 2007 10:30:41 -0000       1.46
@@ -21,8 +21,6 @@
 static void _ex_image_delete_dialog_response(Etk_Object *obj, int response_id, 
void *data);
 static void _ex_image_delete_cb(void *data);
 
-
-
 void
 _ex_image_mouse_wheel(Etk_Object *object, void *event, void *data)
 {
@@ -1047,11 +1045,9 @@
 _ex_image_wallpaper_set(Etk_Image *im)
 {
    pid_t pid;
-   int w, h;
    const char *file;
    char *filename;
    const char *dir;
-   char *edj_file;
    const char *filenoext;
    char *esetroot;
    char esetroot_opt[] = "-s";
@@ -1239,4 +1235,32 @@
    if(ecore_file_exists(path))     
      return ETK_TRUE;
    return ETK_FALSE;
+}
+
+Etk_Tree_Row *
+_ex_image_find_row_from_file(Ex_Tab *tab, const char *filename)
+{
+   Etk_Tree_Row *iter;
+   char *icol_string;
+   char *base;
+   
+   for (iter = etk_tree_first_row_get(ETK_TREE(tab->itree));
+       iter;
+       iter = etk_tree_row_walk_next(iter, ETK_TRUE))
+     {
+       etk_tree_row_fields_get(
+                         iter,
+                         etk_tree_nth_col_get(ETK_TREE(tab->itree), 0),
+                         NULL,
+                         NULL,
+                         &icol_string,
+                         NULL);
+       base = basename(filename);
+       if (!strcmp(icol_string, base))
+         {
+            return iter;
+         }
+     }
+       
+   return NULL;
 }
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_image.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- exhibit_image.h     13 Aug 2006 22:59:01 -0000      1.12
+++ exhibit_image.h     3 May 2007 10:30:41 -0000       1.13
@@ -4,27 +4,28 @@
 #ifndef _EX_IMAGE_H
 #define _EX_IMAGE_H
 
-void         _ex_image_mouse_wheel(Etk_Object *object, void *event, void 
*data);
-void         _ex_image_mouse_down(Etk_Object *object, void *event, void *data);
-void         _ex_image_mouse_up(Etk_Object *object, void *event, void *data);
-void         _ex_image_mouse_move(Etk_Object *object, void *event, void *data);
-void         _ex_image_undo(Etk_Image *im);
-void         _ex_image_flip_horizontal(Etk_Image *im);
-void         _ex_image_flip_vertical(Etk_Image *im);
-void         _ex_image_flip_diagonal(Etk_Image *im, int direction);    
-void         _ex_image_blur(Etk_Image *im);
-void         _ex_image_sharpen(Etk_Image *im);
-void         _ex_image_save(Etk_Image *im);
-void        _ex_image_save_as_entry_cb(Etk_Object *object, void *event, void 
*data);
-void        _ex_image_save_as_cb(void *data);
-void         _ex_image_save_as(Exhibit *e);
-void        _ex_image_delete(Exhibit *e);
-void        _ex_image_rename();
-void        _ex_image_refresh();
-void         _ex_image_run(const char *app);
-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);
-    
+void          _ex_image_mouse_wheel(Etk_Object *object, void *event, void 
*data);
+void          _ex_image_mouse_down(Etk_Object *object, void *event, void 
*data);
+void          _ex_image_mouse_up(Etk_Object *object, void *event, void *data);
+void          _ex_image_mouse_move(Etk_Object *object, void *event, void 
*data);
+void          _ex_image_undo(Etk_Image *im);
+void          _ex_image_flip_horizontal(Etk_Image *im);
+void          _ex_image_flip_vertical(Etk_Image *im);
+void          _ex_image_flip_diagonal(Etk_Image *im, int direction);    
+void          _ex_image_blur(Etk_Image *im);
+void          _ex_image_sharpen(Etk_Image *im);
+void          _ex_image_save(Etk_Image *im);
+void         _ex_image_save_as_entry_cb(Etk_Object *object, void *event, void 
*data);
+void         _ex_image_save_as_cb(void *data);
+void          _ex_image_save_as(Exhibit *e);
+void         _ex_image_delete(Exhibit *e);
+void         _ex_image_rename();
+void         _ex_image_refresh();
+void          _ex_image_run(const char *app);
+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);
+Etk_Tree_Row *_ex_image_find_row_from_file(Ex_Tab *tab, const char *filename);
+
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_main.c,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -3 -r1.99 -r1.100
--- exhibit_main.c      21 Apr 2007 10:55:19 -0000      1.99
+++ exhibit_main.c      3 May 2007 10:30:41 -0000       1.100
@@ -17,16 +17,18 @@
 static void _ex_main_window_key_down_cb(Etk_Object *object, void *event, void 
*data);
 static void _ex_main_window_resize_cb(Etk_Object *object, void *data);
 
-
 /*******
  * We are defining these here until Tree2 has them
  *******/
+#if 0
+/* This is implemented in etk_tree now */
 Etk_Tree_Row *etk_tree_selected_row_get(Etk_Tree *tree)
 {
    if (!tree || !tree->last_selected_row || !tree->last_selected_row->selected)
      return NULL;
    return tree->last_selected_row;
 }
+#endif
 
 Evas_List *etk_tree_selected_rows_get(Etk_Tree *tree)
 {
@@ -357,7 +359,9 @@
        thumb->ep = ep;
        thumb->e = e;
        thumb->name = strdup(basename((char *) file));
-       thumb_list = evas_list_append(thumb_list, thumb);
+       thumb->tab = e->cur_tab;
+       thumb->is_update = ETK_FALSE;
+       thumb_list = evas_list_append(thumb_list, thumb);       
        if(selected_file)
          {
             if(!strcmp(selected_file, file))
@@ -375,10 +379,11 @@
 _ex_main_monitor_dir(void *data, Ecore_File_Monitor *ecore_file_monitor, 
Ecore_File_Event event, const char *path)
 {
    struct stat st;
+   Etk_Tree_Row *row;
    
    /* TODO: update non-visible tabs too */
    
-   /* Only do changes if tree's are visible */
+   /* Only do changes if trees are visible */
    if (ecore_file_monitor != e->cur_tab->monitor)
      return;
 
@@ -404,6 +409,10 @@
              break;
           case ECORE_FILE_EVENT_MODIFIED:
              /* Careful with what to do here.. */
+             if ((row =  _ex_image_find_row_from_file(e->cur_tab, path)))
+              {
+                 _ex_thumb_update_at_row(row);
+              }
              break;
           case ECORE_FILE_EVENT_DELETED_FILE:
              /* TODO: remove the correct item from tree, don't refresh all */
@@ -499,6 +508,7 @@
    if (!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter"))
      {
        _ex_slideshow_stop(e);
+       _ex_thumb_abort();
         e->cur_tab->dir = 
strdup((char*)etk_entry_text_get(ETK_ENTRY(e->entry[0])));
         etk_tree_clear(ETK_TREE(e->cur_tab->itree));
         etk_tree_clear(ETK_TREE(e->cur_tab->dtree));
@@ -554,8 +564,8 @@
             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);
+            etk_tree_row_fields_get(r, 
etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 0),
+                  &icol_string, NULL, 
etk_tree_nth_col_get(ETK_TREE(e->cur_tab->itree), 1), NULL);
             _ex_favorites_add(e, icol_string);
          }
        else if(!strcmp(ev->key, "x"))
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_model_wobbly.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- exhibit_model_wobbly.c      5 Apr 2007 09:31:29 -0000       1.4
+++ exhibit_model_wobbly.c      3 May 2007 10:30:41 -0000       1.5
@@ -34,7 +34,7 @@
 static int _wobbly_width_get(Etk_Tree_Model *model, void *cell_data, 
Evas_Object *cell_objects[ETK_TREE_MAX_OBJECTS_PER_MODEL]);
 static void _wobbly_resize_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _wobbly_cache_free_cb(Evas_Object *object, void *data);
-
+/* static void _wobbly_cache_remove(Etk_Tree_Model *model, Evas_Object 
*object); */
 
 /* TODOC */
 Etk_Tree_Model *etk_tree_model_wobbly_new(void)
@@ -53,6 +53,7 @@
    model->objects_cache = _wobbly_objects_cache;
    model->render = _wobbly_render;
    model->width_get = _wobbly_width_get;
+/*   model->cache_remove = _wobbly_cache_remove; */
    
    wobbly_model->cache = etk_cache_new(50);
    etk_cache_free_callback_set(wobbly_model->cache, _wobbly_cache_free_cb, 
NULL);
@@ -60,6 +61,19 @@
    return model;
 }
 
+# if 0
+/* Get the Etk_Cache object associated with the model */
+Etk_Cache *etk_tree_model_wobbly_cache_get(Etk_Tree_Model *model)
+{
+   Etk_Tree_Model_Wobbly *wobbly_model;
+   
+   if (!(wobbly_model = (Etk_Tree_Model_Wobbly *)model))
+     return NULL;
+   
+   return wobbly_model->cache;
+}
+#endif
+
 /* Wobbly: model_free() */
 static void _wobbly_model_free(Etk_Tree_Model *model)
 {
@@ -260,3 +274,16 @@
    if ((image = edje_object_part_swallow_get(object, "swallow_icon")))
       evas_object_del(image);
 }
+
+#if 0
+/* Wobbly: delete a certain evas object from the model's cache */
+static void _wobbly_cache_remove(Etk_Tree_Model *model, Evas_Object *object)
+{
+   Etk_Tree_Model_Wobbly *wobbly_model;
+      
+   if (!(wobbly_model = (Etk_Tree_Model_Wobbly *)model))
+     return;
+   
+   etk_cache_remove(wobbly_model->cache, object);
+}
+#endif
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_model_wobbly.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- exhibit_model_wobbly.h      17 Jan 2007 01:30:09 -0000      1.3
+++ exhibit_model_wobbly.h      3 May 2007 10:30:41 -0000       1.4
@@ -4,5 +4,6 @@
 #include <Etk.h>
 
 Etk_Tree_Model *etk_tree_model_wobbly_new(void);
+/* Etk_Cache *etk_tree_model_wobbly_cache_get(Etk_Tree_Model *model); */
 
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_tab.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- exhibit_tab.c       25 Mar 2007 18:38:03 -0000      1.38
+++ exhibit_tab.c       3 May 2007 10:30:41 -0000       1.39
@@ -60,6 +60,7 @@
    etk_signal_connect("row-selected", ETK_OBJECT(tab->itree), 
ETK_CALLBACK(_ex_tab_itree_item_clicked_cb), e);
    etk_signal_connect("key-down", ETK_OBJECT(tab->itree), 
ETK_CALLBACK(_ex_tab_itree_key_down_cb), e);
    imodel = etk_tree_model_wobbly_new();
+   tab->imodel = imodel;
    //etk_tree_model_image_width_set(imodel, 80, 0.0);
    tab->icol = etk_tree_col_new(ETK_TREE(tab->itree), "Files", 10, 0.0);
    etk_tree_col_model_add(tab->icol, imodel);
@@ -270,6 +271,22 @@
    _ex_main_statusbar_zoom_update(e);
 }
 
+Ex_Tab *
+_ex_tab_find_by_itree(Etk_Tree *itree)
+{
+   Evas_List *l;
+   
+   for (l = e->tabs; l; l = l->next)
+     {
+       Ex_Tab *tab;
+       
+       tab = l->data;
+       if (ETK_TREE(tab->itree) == itree)
+         return tab;
+     }
+   return NULL;
+}
+
 static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data)
 {
    Ex_Tab       *tab;
@@ -362,6 +379,7 @@
 
    e = data;
    _ex_slideshow_stop(e);
+   _ex_thumb_abort();
    
    tree = ETK_TREE(object);
    etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, 
&dcol_string, NULL);
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_tab.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- exhibit_tab.h       18 Aug 2006 10:36:41 -0000      1.5
+++ exhibit_tab.h       3 May 2007 10:30:41 -0000       1.6
@@ -11,5 +11,5 @@
 void    _ex_tab_current_zoom_out(Exhibit *e);
 void    _ex_tab_current_zoom_one_to_one(Exhibit *e);
 void    _ex_tab_current_fit_to_window(Exhibit *e);
-
+Ex_Tab *_ex_tab_find_by_itree(Etk_Tree *itree);
 #endif
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_thumb.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- exhibit_thumb.c     6 Feb 2007 04:56:45 -0000       1.12
+++ exhibit_thumb.c     3 May 2007 10:30:41 -0000       1.13
@@ -28,11 +28,23 @@
        Etk_Tree_Row *row;
        
        thumb->image = (char*)epsilon_thumb_file_get(thumb->ep);
-       row = etk_tree_row_append(ETK_TREE(thumb->e->cur_tab->itree),
-                                  NULL,
-                                  thumb->e->cur_tab->icol, 
-                                  thumb->image, NULL,
-                                  thumb->name, NULL);
+       if (thumb->is_update)
+         {
+            row = _ex_image_find_row_from_file(thumb->tab, thumb->name);
+            etk_tree_row_fields_set(row,
+                                    ETK_FALSE,
+                                    thumb->tab->icol, 
+                                    thumb->image, NULL,
+                                    thumb->name, NULL);
+         }
+       else
+         {
+            row = etk_tree_row_append(ETK_TREE(thumb->tab->itree),
+                                      NULL,
+                                      thumb->tab->icol, 
+                                      thumb->image, NULL,
+                                      thumb->name, NULL);
+         }
        if(thumb->selected)
          {
             etk_tree_row_select(row);
@@ -74,4 +86,88 @@
          }
        exit(0);
      }
+}
+
+void
+_ex_thumb_abort()
+{
+   Evas_List *l;
+   pid = -1;
+   
+   for(l = thumb_list; l; l = l->next)
+     {
+       Ex_Thumb *thumb;
+       
+       thumb = l->data;
+       if (thumb->tab == e->cur_tab)
+         {
+            E_FREE(thumb->image);
+            E_FREE(thumb->name);
+            if (thumb->ep)
+              epsilon_free(thumb->ep);
+            E_FREE(thumb);
+            thumb_list = evas_list_remove_list(thumb_list, l);
+         }
+     }
+}
+
+
+void
+_ex_thumb_abort_all()
+{
+   pid = -1;
+   
+   while(thumb_list)
+     {
+       Ex_Thumb *thumb;        
+       thumb = thumb_list->data;
+       E_FREE(thumb->image);
+       E_FREE(thumb->name);
+       if (thumb->ep)
+         epsilon_free(thumb->ep);
+       E_FREE(thumb);
+       thumb_list = evas_list_remove_list(thumb_list, thumb_list);
+     }
+   evas_list_free(thumb_list);
+}
+
+void
+_ex_thumb_update_at_row(Etk_Tree_Row *row)
+{   
+   Etk_Tree *tree;
+   Epsilon *ep;
+   char file[PATH_MAX];
+   char *icol_string;
+   Ex_Tab *tab;
+   Ex_Thumb *thumb;
+   
+   if (!row || !(tree = etk_tree_row_tree_get(row)))
+     return;       
+      
+   etk_tree_row_fields_get(
+                          row,
+                          etk_tree_nth_col_get(ETK_TREE(tree), 0),
+                          NULL,
+                          NULL,
+                          &icol_string,
+                          NULL);
+   
+   tab = _ex_tab_find_by_itree(tree);
+   
+   snprintf(file, sizeof(file), "%s%s",
+           tab->cur_path, icol_string);
+   
+   ep = epsilon_new(file);
+   if (epsilon_exists(ep))
+     ecore_file_unlink(epsilon_thumb_file_get(ep));
+   
+   thumb = calloc(1, sizeof(Ex_Thumb));
+   thumb->ep = ep;
+   thumb->e = e;
+   thumb->name = strdup(basename(icol_string));
+   thumb->tab = e->cur_tab;
+   thumb_list = evas_list_append(thumb_list, thumb);
+   thumb->selected = ETK_FALSE;
+   thumb->is_update = ETK_TRUE;
+   if(pid == -1) _ex_thumb_generate();   
 }
===================================================================
RCS file: /cvs/e/e17/apps/exhibit/src/bin/exhibit_thumb.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit_thumb.h     2 Sep 2006 01:43:23 -0000       1.2
+++ exhibit_thumb.h     3 May 2007 10:30:41 -0000       1.3
@@ -6,5 +6,8 @@
 
 int         _ex_thumb_exe_exit(void *data, int type, void *event);
 void        _ex_thumb_generate();
+void        _ex_thumb_abort();
+void        _ex_thumb_abort_all();
+void        _ex_thumb_update_at_row(Etk_Tree_Row *row);
 
 #endif



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to