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

Reply via email to