Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/exhibit/src/bin


Modified Files:
        exhibit.h exhibit_favorites.c exhibit_image.c exhibit_main.c 
        exhibit_main.h exhibit_menus.c exhibit_options.c 
        exhibit_sort.c exhibit_tab.c exhibit_tab.h 


Log Message:
- lots of cleanups, moving code around, making things more logical
- config now saves window W and H and uses them next time it starts


===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- exhibit.h   2 Aug 2006 17:31:03 -0000       1.22
+++ exhibit.h   2 Aug 2006 19:23:22 -0000       1.23
@@ -5,11 +5,12 @@
 #define _EX_H
 
 #include <Eet.h>
-#include <Evas.h>
 #include <Ecore.h>
 #include <Ecore_X.h>
 #include <Ecore_File.h>
 #include <Ecore_X_Cursor.h>
+#include <Evas.h>
+#include <Ecore_Evas.h>
 #include <Epsilon.h>
 #include <etk/Etk.h>
 #include <stdio.h>
@@ -35,7 +36,9 @@
 #define EX_DEFAULT_BRIGHTEN_THRESH 100
 #define EX_DEFAULT_SLIDE_INTERVAL 5.0
 #define EX_DEFAULT_COMMENTS_VISIBLE 0
-           
+#define EX_DEFAULT_WINDOW_WIDTH 700
+#define EX_DEFAULT_WINDOW_HEIGHT 500
+
 #ifdef EX_DEBUG
 # define D(x)  do {printf(__FILE__ ":%d:  ", __LINE__); printf x; 
fflush(stdout);} while (0)
 #else
@@ -73,7 +76,10 @@
    double slide_interval;   
    int comments_visible;
    int default_view;   
-   int default_sort;   
+   int default_sort;
+   
+   int last_w;
+   int last_h;
 };
 
 struct _Ex_Tab
@@ -141,9 +147,7 @@
    Etk_Widget    *resbar;
    Etk_Widget    *zoombar;
    Etk_Widget    *menu;
-   Etk_Widget    *win;
-   
-   char           fav_path[PATH_MAX];
+   Etk_Widget    *win;   
 
    int            zoom;
    int            brightness;
@@ -194,8 +198,6 @@
 };
 
 #define WINDOW_TITLE "Exhibit"
-#define WINDOW_WIDTH 700
-#define WINDOW_HEIGHT 500
 #define ZOOM_MAX 16
 #define ZOOM_MIN -16
 
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_favorites.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit_favorites.c 2 Aug 2006 17:31:03 -0000       1.2
+++ exhibit_favorites.c 2 Aug 2006 19:23:22 -0000       1.3
@@ -9,16 +9,16 @@
    char  new_path[PATH_MAX];
    char *realpath;      
    
-   if(!ecore_file_is_dir(e->fav_path))
+   if(!ecore_file_is_dir(e->options->fav_path))
      {
-       if(ecore_file_exists(e->fav_path))
+       if(ecore_file_exists(e->options->fav_path))
          return;
-       if(!ecore_file_mkdir(e->fav_path))
+       if(!ecore_file_mkdir(e->options->fav_path))
          return;
      }
    
    realpath = ecore_file_realpath(path);
-   snprintf(new_path, sizeof(new_path), "%s/%s", e->fav_path, path);
+   snprintf(new_path, sizeof(new_path), "%s/%s", e->options->fav_path, path);
 
    ecore_file_symlink(realpath, new_path);
    if(realpath)
@@ -30,6 +30,6 @@
 {
    char new_path[PATH_MAX];
    
-   snprintf(new_path, sizeof(new_path), "%s/%s", e->fav_path, path);
+   snprintf(new_path, sizeof(new_path), "%s/%s", e->options->fav_path, path);
    ecore_file_unlink(new_path);
 }
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_image.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- exhibit_image.c     2 Aug 2006 17:31:03 -0000       1.26
+++ exhibit_image.c     2 Aug 2006 19:23:22 -0000       1.27
@@ -37,9 +37,9 @@
    if(evas_key_modifier_is_set(evas_key_modifier_get(evas), "Control"))
      {
        if (ev->z > 0)
-         _ex_main_button_zoom_in_cb(NULL, data);
+         _ex_tab_current_zoom_in(data);
        else
-         _ex_main_button_zoom_out_cb(NULL, data);
+         _ex_tab_current_zoom_out(data);
      }
    else
      { 
@@ -1073,7 +1073,7 @@
    if(!r) return ETK_FALSE;
    
    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);
-   snprintf(path, sizeof(path), "%s/%s", e->fav_path, icol_string);
+   snprintf(path, sizeof(path), "%s/%s", e->options->fav_path, icol_string);
    if(ecore_file_exists(path))     
      return ETK_TRUE;
    return ETK_FALSE;
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_main.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- exhibit_main.c      2 Aug 2006 17:31:03 -0000       1.58
+++ exhibit_main.c      2 Aug 2006 19:23:22 -0000       1.59
@@ -3,15 +3,24 @@
  */
 #include "exhibit.h"
 #include <Ecore_File.h>
-#include <Ecore_Evas.h>
+
 extern pid_t pid;
 extern Evas_List *thumb_list;
 
 Exhibit *e;
-Ecore_Evas *ee_buf;
-Evas       *evas_buf;
 Evas_List  *event_handlers;
 
+static void _ex_main_button_zoom_in_cb(Etk_Object *obj, void *data);
+static void _ex_main_button_zoom_out_cb(Etk_Object *obj, void *data);
+static void _ex_main_button_zoom_one_to_one_cb(Etk_Object *obj, void *data);
+static void _ex_main_button_fit_to_window_cb(Etk_Object *obj, void *data);
+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);
+static void _ex_main_entry_dir_key_down_cb(Etk_Object *object, void *event, 
void *data);
+static Etk_Bool _ex_main_window_deleted_cb(void *data);
+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);
+
 void
 _ex_main_statusbar_zoom_update(Exhibit *e)
 {
@@ -41,197 +50,44 @@
      }      
 }
 
-void
+static void
 _ex_main_button_zoom_in_cb(Etk_Object *obj, void *data)
 {
    Exhibit *e;
    
    e = data;
-   
-   if (e->cur_tab->fit_window)
-     {
-       if(evas_list_count(e->tabs) == 1)
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else
-              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
-         }
-       else
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else
-              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
-         }
-         
-        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
-        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
-        e->cur_tab->fit_window = ETK_FALSE;
-     }
-   
-   if(e->zoom == ZOOM_MAX)
-     e->zoom = ZOOM_MAX;
-   else
-     e->zoom += 2;
-   
-   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
-   _ex_main_statusbar_zoom_update(e);     
+
+   _ex_tab_current_zoom_in(e);
 }
 
-void
+static void
 _ex_main_button_zoom_out_cb(Etk_Object *obj, void *data)
 {
    Exhibit *e;
    
    e = data;
-   
-   if (e->cur_tab->fit_window)
-     {
-       if(evas_list_count(e->tabs) == 1)
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else
-              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
-         }
-       else
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else            
-              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
-         }
-       
-        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
-        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
-        e->cur_tab->fit_window = ETK_FALSE;
-     }
-   
-   if(e->zoom <= ZOOM_MIN)
-     e->zoom = ZOOM_MIN;
-   else
-     e->zoom -= 2;
-   
-   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
-   _ex_main_statusbar_zoom_update(e);   
+
+   _ex_tab_current_zoom_out(e);
 }
 
-void
+static void
 _ex_main_button_zoom_one_to_one_cb(Etk_Object *obj, void *data)
 {
-   Exhibit      *e;
+   Exhibit *e;
    
    e = data;
-   
-   if (e->cur_tab->fit_window)
-     {
-       if(evas_list_count(e->tabs) == 1)
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);          
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else                    
-              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
-         }
-       else
-         {
-            if(e->cur_tab->comment.visible)
-              {
-                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
-                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
-                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-              }
-            else            
-              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
-         }
-       
-        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
-        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
-        e->cur_tab->fit_window = ETK_FALSE;
-     }
-   
-   e->zoom = 0;
-   e->brightness = 128;
-   e->contrast = 0;
-   
-   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
-   _ex_main_statusbar_zoom_update(e);   
+
+   _ex_tab_current_zoom_one_to_one(e);
 }
 
-void
+static void
 _ex_main_button_fit_to_window_cb(Etk_Object *obj, void *data)
 {
-   Exhibit      *e;
+   Exhibit *e;
    
    e = data;
    
-   if (e->cur_tab->fit_window)
-      return;
-   
-   etk_widget_size_request_set(e->cur_tab->alignment, 10, 10);
-   if(evas_list_count(e->tabs) == 1)
-     {
-       if(e->cur_tab->comment.visible)
-         {
-            etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
-            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view);
-            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);       
-            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->alignment, ETK_TRUE, ETK_TRUE, 0);            
-            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-         }
-       else
-         etk_paned_child2_set(ETK_PANED(e->hpaned), e->cur_tab->alignment, 
ETK_TRUE);
-     }
-   else
-     {
-       if(e->cur_tab->comment.visible)
-         {
-            etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
-            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view);
-            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
-            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->alignment, ETK_TRUE, ETK_TRUE, 0);
-            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
-         }
-       else    
-         etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->alignment);
-     }
-     
-   etk_widget_size_request_set(e->cur_tab->image, -1, -1);
-   
-   e->cur_tab->fit_window = ETK_TRUE;
-   _ex_main_statusbar_zoom_update(e);
+   _ex_tab_current_fit_to_window(e);
 }
 
 void
@@ -332,48 +188,7 @@
      _ex_comment_load(e);
 }
 
-void
-_ex_main_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void 
*data)
-{
-   Exhibit *e;   
-   Etk_Tree *tree;
-   char *icol_string;
-
-   e = data;
-   e->zoom = 0;
-   _ex_main_statusbar_zoom_update(e);
-   
-   tree = ETK_TREE(object);
-
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
-        &icol_string, etk_tree_nth_col_get(tree, 1),NULL);
-
-   _ex_main_image_set(e, icol_string);
-}
-
-void
-_ex_main_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void 
*event, void *data)
-{
-   Etk_Tree *tree;
-   char *dcol_string;
-   Exhibit *e;
-
-   e = data;
-   _ex_slideshow_stop(e);
-   
-   tree = ETK_TREE(object);
-   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, 
&dcol_string, NULL);
-
-   E_FREE(e->cur_tab->dir);
-   e->cur_tab->dir = strdup(dcol_string);
-   etk_tree_clear(ETK_TREE(e->cur_tab->itree));
-   etk_tree_clear(ETK_TREE(e->cur_tab->dtree));
-   _ex_main_populate_files(e, NULL);
-   etk_notebook_page_tab_label_set(ETK_NOTEBOOK(e->notebook), e->cur_tab->num, 
_ex_file_get(e->cur_tab->cur_path));
-}
-
-
-int
+static int
 _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, Etk_Tree_Row 
*row2, Etk_Tree_Col *col, void *data)
 {
    char *dir1, *dir2;
@@ -386,113 +201,6 @@
    return strcasecmp(dir1, dir2);
 }
 
-int
-_ex_main_itree_name_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
-{
-   char *f1, *f2;
-   
-   if (!row1 || !row2 || !col)
-      return 0;
-   
-   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
-   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
-   
-   return strcasecmp(f1, f2);
-}
-
-int
-_ex_main_itree_size_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
-{
-   char *f1, *f2;
-   struct stat s1, s2;
-   
-   if (!row1 || !row2 || !col)
-      return 0;
-   
-   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
-   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
-   
-   stat(f1, &s1);
-   stat(f2, &s2);
-   
-   if(s1.st_size > s2.st_size)
-     return 1;
-   else
-     return -1;
-}
-
-int
-_ex_main_itree_date_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
-{
-   char *f1, *f2;
-   struct stat s1, s2;
-   
-   if (!row1 || !row2 || !col)
-      return 0;
-   
-   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
-   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
-   
-   stat(f1, &s1);
-   stat(f2, &s2);
-   
-   if(s1.st_mtime > s2.st_mtime)
-     return 1;
-   else
-     return -1;
-}
-
-int
-_ex_main_itree_resol_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
-{
-   char *f1, *f2;
-   Evas_Object *i1, *i2;
-   int w1, h1, w2, h2;
-   
-   if (!row1 || !row2 || !col)
-      return 0;
-   
-   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
-   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
-
-   if(!ee_buf)
-     {
-       ee_buf = ecore_evas_buffer_new(0, 0);
-       evas_buf = ecore_evas_get(ee_buf);
-     }   
-   
-   if(_ex_file_is_ebg(f1))
-     {
-       w1 = 800;
-       h1 = 600;
-     }
-   else
-     {
-       i1 = evas_object_image_add(evas_buf);
-       evas_object_image_file_set(i1, f1, NULL);
-       evas_object_image_size_get(i1, &w1, &h1);
-       evas_object_del(i1);
-     }
-   
-   if(_ex_file_is_ebg(f2))
-     {
-       w2 = 800;
-       h2 = 600;
-     }
-   else
-     {
-       i2 = evas_object_image_add(evas_buf);
-       evas_object_image_file_set(i2, f2, NULL);
-       evas_object_image_size_get(i2, &w2, &h2);
-       evas_object_del(i2);    
-     }      
-   
-   if(w1 * h1 > w2 * h2)
-     return 1;
-   else
-     return -1;   
-}
-
 void
 _ex_main_populate_files(Exhibit *e, const char *selected_file)
 {
@@ -605,25 +313,7 @@
    closedir(dir);
 }
 
-void
-_ex_main_itree_key_down_cb(Etk_Object *object, void *event, void *data)
-{
-   Etk_Event_Key_Up_Down *ev;
-   Exhibit *e;
-
-   e = data;
-   ev = event;
-
-   if(!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter"))
-     {
-        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));
-        _ex_main_populate_files(e, NULL);
-     }
-}
-
-void
+static void
 _ex_main_entry_dir_key_down_cb(Etk_Object *object, void *event, void *data)
 {
    Etk_Event_Key_Up_Down *ev;
@@ -708,7 +398,7 @@
      }
 }
 
-void
+static void
 _ex_main_goto_dir_clicked_cb(Etk_Object *object, void *data)
 {
    Exhibit *e;
@@ -721,7 +411,7 @@
    _ex_main_populate_files(e, NULL);
 }
 
-Etk_Bool
+static Etk_Bool
 _ex_main_window_deleted_cb(void *data)
 {
    Exhibit *e;
@@ -731,7 +421,7 @@
    return 1;
 }
 
-void
+static void
 _ex_main_window_key_down_cb(Etk_Object *object, void *event, void *data)
 {
    Etk_Event_Key_Up_Down *ev;
@@ -781,6 +471,14 @@
      }
 }
 
+static void
+_ex_main_window_resize_cb(Etk_Object *object, void *data)
+{
+
+   etk_window_geometry_get(ETK_WINDOW(object), NULL, NULL, 
+                          &e->options->last_w, &e->options->last_h);
+}
+
 void
 _ex_main_window_slideshow_toggle(Exhibit *e)
 {
@@ -794,7 +492,7 @@
      }
 }
 
-void 
+static void 
 _ex_main_window_tab_toggled_cb(Etk_Object *object, void *data)
 {     
    Exhibit *e;
@@ -857,7 +555,8 @@
    etk_notebook_current_page_set(ETK_NOTEBOOK(e->notebook), 
evas_list_count(e->tabs) - 1);
 }
 
-static void _etk_main_drag_drop_cb(Etk_Object *object, void *event, void *data)
+static void 
+_etk_main_drag_drop_cb(Etk_Object *object, void *event, void *data)
 {
    Etk_Event_Selection_Request *ev;
    Etk_Selection_Data_Files *files;
@@ -925,22 +624,27 @@
    /* Now load saved options */
    _ex_options_load(e);  
    
-   homedir = getenv("HOME");
-   if (!homedir) 
-     snprintf(e->fav_path, sizeof(e->fav_path), "%s", 
"/tmp/exhibit_favorites");
-   else
+   if(!e->options->fav_path)
      {
-       snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e", homedir);
-       if(!ecore_file_is_dir(e->fav_path))
-         ecore_file_mkdir(e->fav_path);
-       snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e/exhibit", homedir);
-       if(!ecore_file_is_dir(e->fav_path))
-         ecore_file_mkdir(e->fav_path);
-       snprintf(e->fav_path, sizeof(e->fav_path), "%s/.e/exhibit/favorites", 
homedir); 
+       int size = PATH_MAX * sizeof(char);
+       e->options->fav_path = malloc(size);
+       homedir = getenv("HOME");
+       if (!homedir) 
+         snprintf(e->options->fav_path, size, "%s", "/tmp/exhibit_favorites");
+       else
+         {
+            snprintf(e->options->fav_path, size, "%s/.e", homedir);
+            if(!ecore_file_is_dir(e->options->fav_path))
+              ecore_file_mkdir(e->options->fav_path);
+            snprintf(e->options->fav_path, size, "%s/.e/exhibit", homedir);
+            if(!ecore_file_is_dir(e->options->fav_path))
+              ecore_file_mkdir(e->options->fav_path);
+            snprintf(e->options->fav_path, size, "%s/.e/exhibit/favorites", 
homedir);
+         }
      }
    
-   if(!ecore_file_is_dir(e->fav_path))
-     ecore_file_mkdir(e->fav_path);
+   if(!ecore_file_is_dir(e->options->fav_path))
+     ecore_file_mkdir(e->options->fav_path);
    
    file = NULL;
    tab = NULL;
@@ -954,9 +658,10 @@
    etk_widget_dnd_types_set(e->win, dnd_types, dnd_types_num);   
    etk_window_title_set(ETK_WINDOW(e->win), WINDOW_TITLE " - Image Viewing the 
Kewl Way!");
    etk_window_wmclass_set(ETK_WINDOW(e->win), "exhibit", "Exhibit");
-   etk_window_resize(ETK_WINDOW(e->win), WINDOW_WIDTH, WINDOW_HEIGHT);   
+   etk_window_resize(ETK_WINDOW(e->win), e->options->last_w, 
e->options->last_h);
    etk_signal_connect("delete_event", ETK_OBJECT(e->win), 
ETK_CALLBACK(_ex_main_window_deleted_cb), e);
    etk_signal_connect("key_down", ETK_OBJECT(e->win), 
ETK_CALLBACK(_ex_main_window_key_down_cb), e);
+   etk_signal_connect("resize", ETK_OBJECT(e->win), 
ETK_CALLBACK(_ex_main_window_resize_cb), e);
 
    e->vbox = etk_vbox_new(ETK_FALSE, 0);
    etk_container_add(ETK_CONTAINER(e->win), e->vbox);
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_main.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- exhibit_main.h      2 Aug 2006 03:10:43 -0000       1.9
+++ exhibit_main.h      2 Aug 2006 19:23:22 -0000       1.10
@@ -5,25 +5,9 @@
 #define _EX_MAIN_H
 
 void         _ex_main_statusbar_zoom_update(Exhibit *e);
-void         _ex_main_button_zoom_in_cb(Etk_Object *obj, void *data);
-void         _ex_main_button_zoom_out_cb(Etk_Object *obj, void *data);
-void         _ex_main_button_zoom_one_to_one_cb(Etk_Object *obj, void *data);
-void         _ex_main_button_fit_to_window_cb(Etk_Object *obj, void *data);
-void         _ex_main_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row 
*row, void *data);
-void         _ex_main_itree_key_down_cb(Etk_Object *object, void *event, void 
*data);
-int          _ex_main_itree_name_compare_cb(Etk_Tree *tree, Etk_Tree_Row 
*row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
-int          _ex_main_itree_size_compare_cb(Etk_Tree *tree, Etk_Tree_Row 
*row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
-int          _ex_main_itree_date_compare_cb(Etk_Tree *tree, Etk_Tree_Row 
*row1, Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
-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 *event, 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, 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);    
-void         _ex_main_goto_dir_clicked_cb(Etk_Object *object, void *data);
-Etk_Bool     _ex_main_window_deleted_cb(void *data);
-void         _ex_main_window_key_down_cb(Etk_Object *object, void *event, void 
*data);
 void         _ex_main_window_tab_append(Exhibit *e, Ex_Tab *tab);
 void         _ex_main_window_show(char *dir);
 void         _ex_main_image_unset(Exhibit *e);
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_menus.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- exhibit_menus.c     2 Aug 2006 17:31:04 -0000       1.22
+++ exhibit_menus.c     2 Aug 2006 19:23:22 -0000       1.23
@@ -304,25 +304,25 @@
 void
 _ex_menu_zoom_in_cb(Etk_Object *obj, void *data)
 {
-   _ex_main_button_zoom_in_cb(NULL, data);  
+   _ex_tab_current_zoom_in(data);  
 }
 
 void
 _ex_menu_zoom_out_cb(Etk_Object *obj, void *data)
 {
-   _ex_main_button_zoom_out_cb(NULL, data);
+   _ex_tab_current_zoom_out(data);
 }
 
 void
 _ex_menu_zoom_one_to_one_cb(Etk_Object *obj, void *data)
 {
-   _ex_main_button_zoom_one_to_one_cb(NULL, data);    
+   _ex_tab_current_zoom_one_to_one(data);    
 }
 
 void
 _ex_menu_fit_to_window_cb(Etk_Object *obj, void *data)
 {
-   _ex_main_button_fit_to_window_cb(NULL, data);
+   _ex_tab_current_fit_to_window(data);
 }
 
 void
@@ -409,7 +409,7 @@
    
    _ex_slideshow_stop(e);
    E_FREE(e->cur_tab->dir);
-   e->cur_tab->dir = strdup(e->fav_path);
+   e->cur_tab->dir = strdup(e->options->fav_path);
    etk_tree_clear(ETK_TREE(e->cur_tab->itree));
    etk_tree_clear(ETK_TREE(e->cur_tab->dtree));
    _ex_main_populate_files(e, NULL);   
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_options.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- exhibit_options.c   2 Aug 2006 17:31:04 -0000       1.5
+++ exhibit_options.c   2 Aug 2006 19:23:22 -0000       1.6
@@ -84,7 +84,9 @@
    CFG_OPTIONS_NEWI("lt", slide_interval, EET_T_DOUBLE);
    CFG_OPTIONS_NEWI("cv", comments_visible, EET_T_INT);
    CFG_OPTIONS_NEWI("dv", default_view, EET_T_INT);
-
+   CFG_OPTIONS_NEWI("lw", last_w, EET_T_INT);
+   CFG_OPTIONS_NEWI("lh", last_h, EET_T_INT);
+   
    _ex_config_version_edd = NEWD("Ex_Config_Version", Ex_Config_Version);
    VER_NEWI("mj", major, EET_T_INT);
    VER_NEWI("mn", minor, EET_T_INT);
@@ -157,6 +159,8 @@
    if(!e->options)
      e->options = _ex_options_new();
 
+   D(("Config: using default options!\n"));
+   
    /* TODO: free values before allocating if e->options != NULL */
    
    e->options->app1 =     NULL;
@@ -171,7 +175,8 @@
    e->options->comments_visible = EX_DEFAULT_COMMENTS_VISIBLE;
    e->options->default_view     = EX_IMAGE_ONE_TO_ONE;
    e->options->default_sort     = 0; /* TODO: enumerate sort types */
-   
+   e->options->last_w           = EX_DEFAULT_WINDOW_WIDTH;
+   e->options->last_h           = EX_DEFAULT_WINDOW_HEIGHT;   
    e->version = _ex_options_version_parse(VERSION);        
 }
 
@@ -211,6 +216,8 @@
    ret = eet_data_write(ef, _ex_config_options_edd, "config/options", 
e->options, 1);
    if(!ret)
      fprintf(stderr, "Problem saving config/options!");
+
+   D(("Saving configuation (%s)\n", e->options->fav_path));
    
    eet_close(ef);
    return ret;   
@@ -269,6 +276,9 @@
      }
    
    e->options = eet_data_read(ef, _ex_config_options_edd, "config/options");
+   
+   D(("Config: Loaded saved options (%s)\n", e->options->fav_path));
+   
    
    eet_close(ef);
    return 1;
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_sort.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- exhibit_sort.c      15 Jan 2006 12:31:48 -0000      1.4
+++ exhibit_sort.c      2 Aug 2006 19:23:22 -0000       1.5
@@ -1,12 +1,123 @@
 #include "exhibit.h"
 
+static Ecore_Evas *ee_buf;
+static Evas *evas_buf;
+
+static int
+_ex_sort_itree_name_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
+{
+   char *f1, *f2;
+   
+   if (!row1 || !row2 || !col)
+      return 0;
+   
+   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
+   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
+   
+   return strcasecmp(f1, f2);
+}
+
+
+static int
+_ex_sort_itree_size_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
+{
+   char *f1, *f2;
+   struct stat s1, s2;
+   
+   if (!row1 || !row2 || !col)
+      return 0;
+   
+   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
+   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
+   
+   stat(f1, &s1);
+   stat(f2, &s2);
+   
+   if(s1.st_size > s2.st_size)
+     return 1;
+   else
+     return -1;
+}
+
+static int
+_ex_sort_itree_date_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
+{
+   char *f1, *f2;
+   struct stat s1, s2;
+   
+   if (!row1 || !row2 || !col)
+      return 0;
+   
+   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
+   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
+   
+   stat(f1, &s1);
+   stat(f2, &s2);
+   
+   if(s1.st_mtime > s2.st_mtime)
+     return 1;
+   else
+     return -1;
+}
+
+static int
+_ex_sort_itree_resol_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data)
+{
+   char *f1, *f2;
+   Evas_Object *i1, *i2;
+   int w1, h1, w2, h2;
+   
+   if (!row1 || !row2 || !col)
+      return 0;
+   
+   etk_tree_row_fields_get(row1, col, NULL, &f1, NULL,NULL);
+   etk_tree_row_fields_get(row2, col, NULL, &f2, NULL,NULL);
+
+   if(!ee_buf)
+     {
+       ee_buf = ecore_evas_buffer_new(0, 0);
+       evas_buf = ecore_evas_get(ee_buf);
+     }   
+   
+   if(_ex_file_is_ebg(f1))
+     {
+       w1 = 800;
+       h1 = 600;
+     }
+   else
+     {
+       i1 = evas_object_image_add(evas_buf);
+       evas_object_image_file_set(i1, f1, NULL);
+       evas_object_image_size_get(i1, &w1, &h1);
+       evas_object_del(i1);
+     }
+   
+   if(_ex_file_is_ebg(f2))
+     {
+       w2 = 800;
+       h2 = 600;
+     }
+   else
+     {
+       i2 = evas_object_image_add(evas_buf);
+       evas_object_image_file_set(i2, f2, NULL);
+       evas_object_image_size_get(i2, &w2, &h2);
+       evas_object_del(i2);    
+     }      
+   
+   if(w1 * h1 > w2 * h2)
+     return 1;
+   else
+     return -1;   
+}
+
 void 
 _ex_sort_name_cb(Etk_Object *obj, void *data)
 {    
    Exhibit *e;
    
    e = data;
-   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_main_itree_name_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
+   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_sort_itree_name_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
 }
 
 void 
@@ -15,7 +126,7 @@
    Exhibit *e;
    
    e = data;
-   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_main_itree_size_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
+   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_sort_itree_size_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
 }
 
 void 
@@ -24,7 +135,7 @@
    Exhibit *e;
    
    e = data;
-   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_main_itree_resol_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
+   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_sort_itree_resol_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
 }
 
 void 
@@ -33,7 +144,7 @@
    Exhibit *e;
    
    e = data;
-   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_main_itree_date_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
+   etk_tree_sort(ETK_TREE(e->cur_tab->itree), _ex_sort_itree_date_compare_cb, 
ETK_TRUE, e->cur_tab->icol, NULL);
 }
 
 
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_tab.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- exhibit_tab.c       2 Aug 2006 17:31:04 -0000       1.19
+++ exhibit_tab.c       2 Aug 2006 19:23:22 -0000       1.20
@@ -7,6 +7,9 @@
 #define EX_DND_COL_NUM 5
 
 static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data);
+static void _ex_tab_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row 
*row, void *event, void *data);
+static void _ex_tab_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row 
*row, void *data);
+static void _ex_tab_itree_key_down_cb(Etk_Object *object, void *event, void 
*data);
 
 Ex_Tab *
 _ex_tab_new(Exhibit *e, char *dir)
@@ -27,7 +30,7 @@
    
    tab->dtree = etk_tree_new();
    etk_widget_size_request_set(tab->dtree, 180, 120);
-   etk_signal_connect("row_clicked", ETK_OBJECT(tab->dtree), 
ETK_CALLBACK(_ex_main_dtree_item_clicked_cb), e);
+   etk_signal_connect("row_clicked", ETK_OBJECT(tab->dtree), 
ETK_CALLBACK(_ex_tab_dtree_item_clicked_cb), e);
    tab->dcol = etk_tree_col_new(ETK_TREE(tab->dtree), "Directories", 
etk_tree_model_icon_text_new(ETK_TREE(tab->dtree), ETK_TREE_FROM_EDJE), 10);
    etk_tree_headers_visible_set(ETK_TREE(tab->dtree), 0);
    
etk_scrolled_view_policy_set(etk_tree_scrolled_view_get(ETK_TREE(tab->dtree)), 
ETK_POLICY_AUTO, ETK_POLICY_SHOW);
@@ -38,8 +41,8 @@
    etk_signal_connect("drag_begin", ETK_OBJECT(tab->itree), 
ETK_CALLBACK(_ex_tab_tree_drag_begin_cb), tab);
    etk_widget_size_request_set(tab->itree, 180, 220);
    etk_tree_multiple_select_set(ETK_TREE(tab->itree), ETK_TRUE);
-   etk_signal_connect("row_selected", ETK_OBJECT(tab->itree), 
ETK_CALLBACK(_ex_main_itree_item_clicked_cb), e);
-   etk_signal_connect("key_down", ETK_OBJECT(tab->itree), 
ETK_CALLBACK(_ex_main_itree_key_down_cb), e);
+   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_icon_text_new(ETK_TREE(tab->itree), 
ETK_TREE_FROM_FILE);
    etk_tree_model_icon_text_icon_width_set(imodel, 80);
    tab->icol = etk_tree_col_new(ETK_TREE(tab->itree), "Files", imodel, 10);
@@ -115,6 +118,183 @@
    etk_widget_show_all(tab->e->win);
 }
 
+void
+_ex_tab_current_zoom_in(Exhibit *e)
+{
+   if (e->cur_tab->fit_window)
+     {
+       if(evas_list_count(e->tabs) == 1)
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else
+              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
+         }
+       else
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else
+              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
+         }
+         
+        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
+        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
+        e->cur_tab->fit_window = ETK_FALSE;
+     }
+   
+   if(e->zoom == ZOOM_MAX)
+     e->zoom = ZOOM_MAX;
+   else
+     e->zoom += 2;
+   
+   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
+   _ex_main_statusbar_zoom_update(e);     
+}
+
+void
+_ex_tab_current_zoom_out(Exhibit *e)
+{
+   if (e->cur_tab->fit_window)
+     {
+       if(evas_list_count(e->tabs) == 1)
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else
+              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
+         }
+       else
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else            
+              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
+         }
+       
+        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
+        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
+        e->cur_tab->fit_window = ETK_FALSE;
+     }
+   
+   if(e->zoom <= ZOOM_MIN)
+     e->zoom = ZOOM_MIN;
+   else
+     e->zoom -= 2;
+   
+   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
+   _ex_main_statusbar_zoom_update(e);   
+}
+
+void
+_ex_tab_current_zoom_one_to_one(Exhibit *e)
+{
+   if (e->cur_tab->fit_window)
+     {
+       if(evas_list_count(e->tabs) == 1)
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);          
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else                    
+              etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->scrolled_view, ETK_TRUE);
+         }
+       else
+         {
+            if(e->cur_tab->comment.visible)
+              {
+                 etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->alignment);
+                 etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view, ETK_TRUE, ETK_TRUE, 0);
+                 etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+              }
+            else            
+              etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->scrolled_view);
+         }
+       
+        etk_widget_size_request_set(e->cur_tab->alignment, -1, -1);
+        
etk_scrolled_view_add_with_viewport(ETK_SCROLLED_VIEW(e->cur_tab->scrolled_view),
 e->cur_tab->alignment);
+        e->cur_tab->fit_window = ETK_FALSE;
+     }
+   
+   e->zoom = 0;
+   e->brightness = 128;
+   e->contrast = 0;
+   
+   _ex_image_zoom(ETK_IMAGE(e->cur_tab->image), e->zoom);
+   _ex_main_statusbar_zoom_update(e);   
+}
+
+void
+_ex_tab_current_fit_to_window(Exhibit *e)
+{
+   if (e->cur_tab->fit_window)
+      return;
+   
+   etk_widget_size_request_set(e->cur_tab->alignment, 10, 10);
+   if(evas_list_count(e->tabs) == 1)
+     {
+       if(e->cur_tab->comment.visible)
+         {
+            etk_paned_child2_set(ETK_PANED(e->hpaned), 
e->cur_tab->comment.vbox, ETK_TRUE);
+            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view);
+            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);       
+            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->alignment, ETK_TRUE, ETK_TRUE, 0);            
+            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+         }
+       else
+         etk_paned_child2_set(ETK_PANED(e->hpaned), e->cur_tab->alignment, 
ETK_TRUE);
+     }
+   else
+     {
+       if(e->cur_tab->comment.visible)
+         {
+            etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->comment.vbox);
+            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->scrolled_view);
+            etk_container_remove(ETK_CONTAINER(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame);
+            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->alignment, ETK_TRUE, ETK_TRUE, 0);
+            etk_box_pack_start(ETK_BOX(e->cur_tab->comment.vbox), 
e->cur_tab->comment.frame, ETK_FALSE, ETK_FALSE, 3);
+         }
+       else    
+         etk_notebook_page_child_set(ETK_NOTEBOOK(e->notebook), 
e->cur_tab->num, e->cur_tab->alignment);
+     }
+     
+   etk_widget_size_request_set(e->cur_tab->image, -1, -1);
+   
+   e->cur_tab->fit_window = ETK_TRUE;
+   _ex_main_statusbar_zoom_update(e);
+}
+
 static void _ex_tab_tree_drag_begin_cb(Etk_Object *object, void *data)
 {
    Ex_Tab       *tab;
@@ -195,4 +375,62 @@
    
    etk_drag_types_set(ETK_DRAG(drag), types, num_types);
    etk_drag_data_set(ETK_DRAG(drag), drag_data, strlen(drag_data) + 1);
+}
+
+static void
+_ex_tab_dtree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void 
*event, void *data)
+{
+   Etk_Tree *tree;
+   char *dcol_string;
+   Exhibit *e;
+
+   e = data;
+   _ex_slideshow_stop(e);
+   
+   tree = ETK_TREE(object);
+   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, NULL, 
&dcol_string, NULL);
+
+   E_FREE(e->cur_tab->dir);
+   e->cur_tab->dir = strdup(dcol_string);
+   etk_tree_clear(ETK_TREE(e->cur_tab->itree));
+   etk_tree_clear(ETK_TREE(e->cur_tab->dtree));
+   _ex_main_populate_files(e, NULL);
+   etk_notebook_page_tab_label_set(ETK_NOTEBOOK(e->notebook), e->cur_tab->num, 
_ex_file_get(e->cur_tab->cur_path));
+}
+
+static void
+_ex_tab_itree_item_clicked_cb(Etk_Object *object, Etk_Tree_Row *row, void 
*data)
+{
+   Exhibit *e;   
+   Etk_Tree *tree;
+   char *icol_string;
+
+   e = data;
+   e->zoom = 0;
+   _ex_main_statusbar_zoom_update(e);
+   
+   tree = ETK_TREE(object);
+
+   etk_tree_row_fields_get(row, etk_tree_nth_col_get(tree, 0), NULL, 
+        &icol_string, etk_tree_nth_col_get(tree, 1),NULL);
+
+   _ex_main_image_set(e, icol_string);
+}
+
+static void
+_ex_tab_itree_key_down_cb(Etk_Object *object, void *event, void *data)
+{
+   Etk_Event_Key_Up_Down *ev;
+   Exhibit *e;
+
+   e = data;
+   ev = event;
+
+   if(!strcmp(ev->key, "Return") || !strcmp(ev->key, "KP_Enter"))
+     {
+        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));
+        _ex_main_populate_files(e, NULL);
+     }
 }
===================================================================
RCS file: /cvs/e/e17/proto/exhibit/src/bin/exhibit_tab.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit_tab.h       2 Aug 2006 03:10:43 -0000       1.2
+++ exhibit_tab.h       2 Aug 2006 19:23:22 -0000       1.3
@@ -4,10 +4,13 @@
 #ifndef _EX_TAB_H
 #define _EX_TAB_H
 
-Ex_Tab        *_ex_tab_new(Exhibit *e, char *dir);
-void           _ex_tab_dir_set(Ex_Tab *tab, char *dir);
-void           _ex_tab_delete(Ex_Tab *tab);    
-void           _ex_tab_select(Ex_Tab *tab);
-    
+Ex_Tab *_ex_tab_new(Exhibit *e, char *dir);
+void    _ex_tab_dir_set(Ex_Tab *tab, char *dir);
+void    _ex_tab_delete(Ex_Tab *tab);    
+void    _ex_tab_select(Ex_Tab *tab);
+void    _ex_tab_current_zoom_in(Exhibit *e);
+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);
 
 #endif



-------------------------------------------------------------------------
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