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