Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/exhibit/src/bin Modified Files: exhibit.h exhibit_comment.c exhibit_comment_jpeg.h exhibit_file.c exhibit_file.h exhibit_image.c exhibit_image.h exhibit_main.c exhibit_main.h exhibit_menus.c exhibit_menus.h exhibit_options.c exhibit_options.h exhibit_tab.c Log Message: - patches from balony for undo, file save as dialog, start of options - misc cleanups =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- exhibit.h 14 Jul 2006 16:56:24 -0000 1.16 +++ exhibit.h 28 Jul 2006 16:04:47 -0000 1.17 @@ -37,6 +37,8 @@ typedef struct _Ex_Options Ex_Options; typedef struct _Ex_Tab Ex_Tab; typedef struct _Ex_Thumb Ex_Thumb; +typedef struct _Ex_Filedialog Ex_Filedialog; + typedef enum _Ex_Images { EX_IMAGE_FIT_TO_WINDOW = -1, @@ -60,7 +62,9 @@ double slide_interval; - int comments_visible; + int comments_visible; + + Ex_Images im_view; }; struct _Ex_Tab @@ -154,6 +158,14 @@ char *image; Etk_Bool selected; Epsilon *ep; +}; + +struct _Ex_Filedialog +{ + Etk_Widget *win; + Etk_Widget *filechooser; + Etk_Widget *entry; + Etk_Image *im; }; #define WINDOW_TITLE "Exhibit" =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_comment.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- exhibit_comment.c 29 May 2006 12:07:04 -0000 1.4 +++ exhibit_comment.c 28 Jul 2006 16:04:47 -0000 1.5 @@ -60,7 +60,8 @@ void _ex_comment_load(Exhibit *e) { - char *file, *comment; + char *file; + char *comment; unsigned int len; file = ((Ex_Tab *) e->cur_tab)->cur_file; @@ -76,9 +77,10 @@ void _ex_comment_save(Exhibit *e) { - char *file, *comment; + char *file; + const char *comment; int len; - + file = ((Ex_Tab *) e->cur_tab)->cur_file; comment = etk_entry_text_get(ETK_ENTRY(e->comment.entry)); if (comment) =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_comment_jpeg.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- exhibit_comment_jpeg.h 14 Mar 2006 01:01:15 -0000 1.1 +++ exhibit_comment_jpeg.h 28 Jul 2006 16:04:47 -0000 1.2 @@ -1,11 +1,7 @@ +#ifndef _EX_COMMENT_JPEG_H +#define _EX_COMMENT_JPEG_H -/* read stuff */ - -int -_ex_comment_jpeg_read(char *file, char **comment, unsigned int *len); - -/* write stuff */ - -int -_ex_comment_jpeg_write(char *file, char *comment, unsigned int len); +int _ex_comment_jpeg_read(char *file, char **comment, unsigned int *len); +int _ex_comment_jpeg_write(char *file, const char *comment, unsigned int len); +#endif =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_file.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- exhibit_file.c 18 May 2006 14:11:25 -0000 1.8 +++ exhibit_file.c 28 Jul 2006 16:04:47 -0000 1.9 @@ -64,7 +64,6 @@ _ex_file_is_jpg(char *file) { char *ext; - Evas_List *groups, *l; ext = strrchr(file, '.'); if (!ext) return 0; @@ -97,11 +96,11 @@ return file; } -char * +const char * _ex_file_get(char *path) { if(!path[0]) return NULL; - + if(path[strlen(path) - 1] == '/' && strlen(path) >= 2) { char *ret; =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_file.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- exhibit_file.h 14 Mar 2006 01:01:15 -0000 1.6 +++ exhibit_file.h 28 Jul 2006 16:04:47 -0000 1.7 @@ -6,6 +6,6 @@ int _ex_file_is_jpg(char *file); char *_ex_file_strip_extention(char *path); -char *_ex_file_get(char *path); +const char *_ex_file_get(char *path); #endif =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_image.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- exhibit_image.c 9 Jul 2006 04:48:07 -0000 1.22 +++ exhibit_image.c 28 Jul 2006 16:04:47 -0000 1.23 @@ -90,6 +90,8 @@ 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); submenu = etk_menu_new(); etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(submenu)); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Undo"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu), ETK_CALLBACK(_ex_menu_undo_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, _("Date"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_date_cb), e); _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); @@ -157,6 +159,45 @@ etk_range_value_set(vs, etk_range_value_get(ETK_RANGE(vs)) + dy); } +unsigned int * +_ex_image_data_copy(Etk_Image *im, unsigned int *data, int w, int h) +{ + unsigned int *data2; + + data2 = etk_object_data_get(ETK_OBJECT(im), "undo"); + if(data2) + free(data2); + + data2 = malloc(w * h * sizeof(unsigned int)); + memcpy(data2, data, w * h * sizeof(unsigned int)); + etk_object_data_set(ETK_OBJECT(im), "undo", data2); + printf("Undo: setting data %p size %d\n", data, w * h * sizeof(unsigned int)); + + return data2; +} + +void +_ex_image_undo(Etk_Image *im) +{ + unsigned int *data; + int w, h; + + if(im->use_edje) + return; + + etk_image_size_get(im, &w, &h); + + data = etk_object_data_get(ETK_OBJECT(im), "undo"); + + if (data) + { + printf("Undo: getting data %p\n", data); + evas_object_image_data_set(im->image_object, data); + evas_object_image_data_update_add(im->image_object, 0, 0, w, h); + etk_object_data_set(ETK_OBJECT(im), "undo", NULL); + } +} + void _ex_image_flip_horizontal(Etk_Image *im) { @@ -170,6 +211,7 @@ etk_image_size_get(im, &w, &h); data = evas_object_image_data_get(im->image_object, ETK_TRUE); + _ex_image_data_copy(im, data, w, h); /* for undo */ for (y = 0; y < h; y++) { @@ -202,6 +244,7 @@ etk_image_size_get(im, &w, &h); data = evas_object_image_data_get(im->image_object, ETK_TRUE); + _ex_image_data_copy(im, data, w, h); /* for undo */ for (y = 0; y < (h >> 1); y++) { @@ -238,7 +281,7 @@ etk_image_size_get(im, &iw, &ih); data2 = evas_object_image_data_get(im->image_object, ETK_FALSE); - + data = malloc(iw * ih * sizeof(unsigned int)); from = data2; w = ih; @@ -301,6 +344,7 @@ etk_image_size_get(im, &w, &h); data2 = evas_object_image_data_get(im->image_object, ETK_TRUE); + _ex_image_data_copy(im, data2, w, h); /* for undo */ if (rad < 1) return; @@ -401,6 +445,7 @@ etk_image_size_get(im, &w, &h); data2 = evas_object_image_data_get(im->image_object, ETK_TRUE); + _ex_image_data_copy(im, data2, w, h); /* for undo */ data = malloc(w * h * sizeof(unsigned int)); if (rad == 0) @@ -479,6 +524,114 @@ } void +_ex_image_save_as_entry_cb(Etk_Object *object, void *event, void *data) +{ + Etk_Event_Key_Up_Down *ev = event; + + if(!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter")) + _ex_image_save_as_cb(data); +} + +void +_ex_image_save_as_cb(void *data) +{ + Ex_Filedialog *fd = data; + pid_t pid; + char file[1024]; + const char *basename; + const char *dir; + + basename = etk_entry_text_get(ETK_ENTRY(fd->entry)); + dir = etk_filechooser_widget_current_folder_get + (ETK_FILECHOOSER_WIDGET(fd->filechooser)); + + if (!basename || !dir) + return; + + sprintf(file, "%s/%s", dir, basename); + printf("Saving: %s\n", file); + + pid = fork(); + if(!pid) + { + evas_object_image_save(fd->im->image_object, file, NULL, NULL); + exit(0); + } + + etk_widget_hide(fd->win); +} + +void +_ex_image_save_as(Etk_Image *im, Etk_Tree *tree, Etk_Tree_Row *row) +{ + static Ex_Filedialog *fd = NULL; + Etk_Widget *vbox; + Etk_Widget *hbox; + Etk_Widget *btn; + Etk_Widget *label; + char *filename; + + if (!fd) + { + fd = calloc(1, sizeof(Ex_Filedialog)); + if (!fd) return; + fd->im = im; + fd->win = NULL; + } + + /* Don't open more then one window */ + if (fd->win) + { + /* Update the filename when we show the window again */ + etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, + &filename, etk_tree_nth_col_get(tree, 1), + NULL); + etk_entry_text_set(ETK_ENTRY(fd->entry), filename); + etk_widget_show_all(ETK_WIDGET(fd->win)); + return; + } + + fd->win = etk_window_new(); + etk_window_title_set(ETK_WINDOW(fd->win), "Exhibit save image as .."); + etk_signal_connect("delete_event", ETK_OBJECT(fd->win), + ETK_CALLBACK(etk_window_hide_on_delete), fd->win); + + vbox = etk_vbox_new(ETK_FALSE, 0); + etk_container_add(ETK_CONTAINER(fd->win), vbox); + + fd->filechooser = etk_filechooser_widget_new(); + etk_container_add(ETK_CONTAINER(vbox), fd->filechooser); + + label = etk_label_new("Filename:"); + etk_box_pack_start(ETK_BOX(vbox), label, ETK_FALSE, ETK_FALSE, 0); + + etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, + &filename, etk_tree_nth_col_get(tree, 1), NULL); + printf ("Selected original filename: %s\n", filename); + + fd->entry = etk_entry_new(); + etk_entry_text_set(ETK_ENTRY(fd->entry), filename); + etk_box_pack_start(ETK_BOX(vbox), fd->entry, ETK_TRUE, ETK_FALSE, 0); + etk_signal_connect("key_down", ETK_OBJECT(fd->entry), + ETK_CALLBACK(_ex_image_save_as_entry_cb), fd); + + hbox = etk_hbox_new(ETK_FALSE, 0); + etk_container_add(ETK_CONTAINER(vbox), hbox); + + btn = etk_button_new_with_label("Save"); + etk_box_pack_start(ETK_BOX(hbox), btn, ETK_FALSE, ETK_FALSE, 0); + etk_signal_connect_swapped("clicked", ETK_OBJECT(btn), + ETK_CALLBACK(_ex_image_save_as_cb), fd); + + btn = etk_button_new_with_label("Cancel"); + etk_box_pack_start(ETK_BOX(hbox), btn, ETK_FALSE, ETK_FALSE, 0); + etk_signal_connect_swapped("clicked", ETK_OBJECT(btn), + ETK_CALLBACK(etk_widget_hide), fd->win); + + etk_widget_show_all(fd->win); +} + +void _ex_image_zoom(Etk_Image *im, int zoom) { int w, h; @@ -527,6 +680,7 @@ etk_image_size_get(im, &w, &h); data = evas_object_image_data_get(im->image_object, ETK_TRUE); + _ex_image_data_copy(im, data, w, h); /* for undo */ for (i = 0; i < 256; i++) { =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_image.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- exhibit_image.h 3 Jan 2006 15:02:15 -0000 1.6 +++ exhibit_image.h 28 Jul 2006 16:04:47 -0000 1.7 @@ -5,12 +5,16 @@ 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(Etk_Image *im, Etk_Tree *tree, Etk_Tree_Row *row); 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); =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_main.c,v retrieving revision 1.49 retrieving revision 1.50 diff -u -3 -r1.49 -r1.50 --- exhibit_main.c 27 Jul 2006 01:38:56 -0000 1.49 +++ exhibit_main.c 28 Jul 2006 16:04:47 -0000 1.50 @@ -167,8 +167,17 @@ else { etk_image_set_from_file(ETK_IMAGE(e->cur_tab->image), image); - etk_image_size_get(ETK_IMAGE(e->cur_tab->image), &w, &h); - etk_widget_size_request_set(ETK_WIDGET(e->cur_tab->image), w, h); + + /* Use selected option for default view */ + if (e->options->im_view == EX_IMAGE_ONE_TO_ONE) + _ex_main_button_zoom_one_to_one_cb(NULL, e); + else if (e->options->im_view == EX_IMAGE_FIT_TO_WINDOW) + _ex_main_button_fit_to_window_cb(NULL, e); + else + { + etk_image_size_get(ETK_IMAGE(e->cur_tab->image), &w, &h); + etk_widget_size_request_set(ETK_WIDGET(e->cur_tab->image), w, h); + } } bytes = ecore_file_size(image); @@ -351,7 +360,7 @@ } void -_ex_main_populate_files(Exhibit *e, char *selected_file) +_ex_main_populate_files(Exhibit *e, const char *selected_file) { char back[PATH_MAX]; DIR *dir; @@ -485,7 +494,7 @@ if(!strcmp(ev->key, "Tab")) { const char *path; - char *dir; + const char *dir; const char *file; Evas_List *l; @@ -493,7 +502,7 @@ etk_signal_stop(); path = etk_entry_text_get(ETK_ENTRY(e->entry[0])); - dir = (const char*)ecore_file_get_dir((char*)path); + dir = ecore_file_get_dir((char*)path); file = ecore_file_get_file(path); if(!dir || !strcmp(dir, "")) @@ -546,7 +555,6 @@ } } - E_FREE(dir); } if(!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter")) @@ -598,6 +606,7 @@ Ex_Tab *tab; tab = _ex_tab_new(e, e->cur_tab->cur_path); + _ex_main_window_tab_append(e, tab); _ex_main_populate_files(e, NULL); } @@ -736,11 +745,11 @@ _ex_main_window_show(char *dir) { Exhibit *e; - Ex_Tab *tab; - char *file; - char *homedir; + Ex_Tab *tab; + const char *file; + char *homedir; const char **dnd_types; - int dnd_types_num; + int dnd_types_num; e = calloc(1, sizeof(Exhibit)); e->mouse.down = 0; @@ -750,6 +759,10 @@ e->slideshow.interval = 5.0; e->comment.visible = ETK_FALSE; + e->options = _ex_options_new(); + /* Now load saved options */ + e->options = _ex_options_load(e->options); + homedir = getenv("HOME"); if (!homedir) snprintf(e->fav_path, sizeof(e->fav_path), "%s", "/tmp/exhibit_favorites"); @@ -805,6 +818,7 @@ menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("File"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); + etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("New window"), ETK_STOCK_WINDOW_NEW, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_new_window_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Save image"), ETK_STOCK_DOCUMENT_SAVE, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_save_image_cb), e); @@ -815,12 +829,16 @@ _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Rename"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_rename_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Delete"), ETK_STOCK_X_DIRECTORY_TRASH, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_delete_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, _("Options"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_options_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, _("Close window"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_close_window_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Quit"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_quit_cb), e); menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Edit"), -99, ETK_MENU_SHELL(e->menu_bar), NULL, NULL); menu = etk_menu_new(); etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); + _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Undo"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_undo_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, _("in The Gimp"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in XV"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in Xpaint"), ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e); @@ -933,7 +951,7 @@ dir2 = ecore_file_get_dir(dir); tab = _ex_tab_new(e, dir2); E_FREE(dir2); - file = (const char*)ecore_file_get_file((const char*)dir); + file = ecore_file_get_file(dir); } else tab = _ex_tab_new(e, "."); =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_main.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- exhibit_main.h 2 Jan 2006 14:47:45 -0000 1.6 +++ exhibit_main.h 28 Jul 2006 16:04:47 -0000 1.7 @@ -14,7 +14,7 @@ int _ex_main_itree_resol_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); void _ex_main_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data); -void _ex_main_populate_files(Exhibit *e, char *selected_file); +void _ex_main_populate_files(Exhibit *e, const char *selected_file); void _ex_main_entry_dir_key_down_cb(Etk_Object *object, void *event, void *data); int _ex_main_window_slideshow_next(void *data); void _ex_main_window_slideshow_toggle(Exhibit *e); =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_menus.c,v retrieving revision 1.18 retrieving revision 1.19 diff -u -3 -r1.18 -r1.19 --- exhibit_menus.c 13 Mar 2006 09:10:32 -0000 1.18 +++ exhibit_menus.c 28 Jul 2006 16:04:47 -0000 1.19 @@ -86,8 +86,14 @@ void _ex_menu_save_image_as_cb(Etk_Object *obj, void *data) { + Exhibit *e; + Etk_Tree_Row *r; EX_MENU_ITEM_GET_RETURN(obj); - printf("save image as\n"); + + e = data; + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return; + _ex_image_save_as(ETK_IMAGE(e->cur_tab->image), ETK_TREE(e->cur_tab->itree), r); } void @@ -112,6 +118,15 @@ } void +_ex_menu_options_cb(Etk_Object *obj, void *data) +{ + Exhibit *e = data; + + EX_MENU_ITEM_GET_RETURN(obj); + _ex_options_window_show(e); +} + +void _ex_menu_close_window_cb(Etk_Object *obj, void *data) { EX_MENU_ITEM_GET_RETURN(obj); @@ -138,6 +153,20 @@ EX_MENU_ITEM_GET_RETURN(obj); printf("run in\n"); } + +void +_ex_menu_undo_cb(Etk_Object *obj, void *data) +{ + Exhibit *e; + Etk_Tree_Row *r; + EX_MENU_ITEM_GET_RETURN(obj); + + e = data; + r = etk_tree_selected_row_get(ETK_TREE(e->cur_tab->itree)); + if(!r) return; + _ex_image_undo(ETK_IMAGE(e->cur_tab->image)); +} + void _ex_menu_rot_clockwise_cb(Etk_Object *obj, void *data) =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_menus.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- exhibit_menus.h 3 Mar 2006 00:44:37 -0000 1.5 +++ exhibit_menus.h 28 Jul 2006 16:04:47 -0000 1.6 @@ -14,9 +14,11 @@ void _ex_menu_search_cb(Etk_Object *obj, void *data); void _ex_menu_rename_cb(Etk_Object *obj, void *data); void _ex_menu_delete_cb(Etk_Object *obj, void *data); +void _ex_menu_options_cb(Etk_Object *obj, void *data); void _ex_menu_close_window_cb(Etk_Object *obj, void *data); void _ex_menu_quit_cb(Etk_Object *obj, void *data); void _ex_menu_run_in_cb(Etk_Object *obj, void *data); +void _ex_menu_undo_cb(Etk_Object *obj, void *data); void _ex_menu_rot_clockwise_cb(Etk_Object *obj, void *data); void _ex_menu_rot_counter_clockwise_cb(Etk_Object *obj, void *data); void _ex_menu_flip_horizontal_cb(Etk_Object *obj, void *data); =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_options.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- exhibit_options.c 15 Jan 2006 12:31:48 -0000 1.2 +++ exhibit_options.c 28 Jul 2006 16:04:47 -0000 1.3 @@ -6,6 +6,14 @@ Ex_Options *o; o = calloc(1, sizeof(Ex_Options)); + o = _ex_options_default(o); + + return o; +} + +Ex_Options * +_ex_options_default(Ex_Options *o) +{ o->app1 = NULL; o->app2 = NULL; o->app3 = NULL; @@ -16,7 +24,8 @@ o->brighten_thresh = EX_DEFAULT_BRIGHTEN_THRESH; o->slide_interval = EX_DEFAULT_SLIDE_INTERVAL; o->comments_visible = EX_DEFAULT_COMMENTS_VISIBLE; - + o->im_view = EX_IMAGE_ONE_TO_ONE; + return o; } @@ -34,23 +43,57 @@ void _ex_options_save(Exhibit *e) { - + /* TODO + * Save options to .eet */ } -void -_ex_options_load(Exhibit *e) +Ex_Options * +_ex_options_load(Ex_Options *o) { + + /* TODO + * Load options from .eet */ + return o; } void _ex_options_window_show(Exhibit *e) { + Etk_Widget *win; + Etk_Widget *vbox, *vbox2; + Etk_Widget *btn, *btn2; + Etk_Widget *frame; + + win = etk_window_new(); + etk_window_title_set(ETK_WINDOW(win), "Exhibit options"); + etk_window_resize(ETK_WINDOW(win), 200, 150); + etk_container_border_width_set(ETK_CONTAINER(win), 10); + etk_signal_connect("delete_event", ETK_OBJECT(win), + ETK_CALLBACK(_ex_options_window_delete_cb), win); + + vbox = etk_vbox_new(ETK_FALSE, 0); + etk_container_add(ETK_CONTAINER(win), vbox); + + frame = etk_frame_new("Choose standard view"); + etk_box_pack_start(ETK_BOX(vbox), frame, ETK_TRUE, ETK_FALSE, 0); + + vbox2 = etk_vbox_new(ETK_FALSE, 0); + etk_container_add(ETK_CONTAINER(frame), vbox2); + + btn = etk_radio_button_new_with_label("Zoom 1:1", NULL); + etk_box_pack_start(ETK_BOX(vbox2), btn, ETK_TRUE, ETK_FALSE, 0); + btn2 = etk_radio_button_new_with_label_from_widget("Fit to window", + ETK_RADIO_BUTTON(btn)); + etk_box_pack_start(ETK_BOX(vbox2), btn2, ETK_TRUE, ETK_FALSE, 0); + + etk_widget_show_all(ETK_WIDGET(win)); } Etk_Bool _ex_options_window_delete_cb(void *data) { - return ETK_TRUE; + etk_object_destroy(ETK_OBJECT(data)); + return ETK_TRUE; } =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_options.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- exhibit_options.h 6 Jan 2006 14:38:34 -0000 1.1 +++ exhibit_options.h 28 Jul 2006 16:04:47 -0000 1.2 @@ -2,9 +2,10 @@ #define _EX_OPTIONS_H Ex_Options *_ex_options_new(); +Ex_Options *_ex_options_default(Ex_Options *o); void _ex_options_free(Exhibit *e); void _ex_options_save(Exhibit *e); -void _ex_options_load(Exhibit *e); +Ex_Options *_ex_options_load(Ex_Options *e); void _ex_options_window_show(Exhibit *e); Etk_Bool _ex_options_window_delete_cb(void *data); =================================================================== RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_tab.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- exhibit_tab.c 29 May 2006 12:07:04 -0000 1.12 +++ exhibit_tab.c 28 Jul 2006 16:04:47 -0000 1.13 @@ -55,12 +55,14 @@ etk_signal_connect("mouse_up", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_up), e); etk_signal_connect("mouse_move", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_move), e); etk_signal_connect("mouse_wheel", ETK_OBJECT(tab->image), ETK_CALLBACK(_ex_image_mouse_wheel), e); + etk_image_keep_aspect_set(ETK_IMAGE(tab->image), ETK_TRUE); + etk_container_add(ETK_CONTAINER(tab->alignment), tab->image); tab->scrolled_view = etk_scrolled_view_new(); etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(tab->scrolled_view), tab->alignment); - + return tab; } ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs