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