Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/exhibit/src/bin


Modified Files:
        exhibit_image.c exhibit_main.c exhibit_main.h exhibit_menus.c 
        exhibit_sort.c exhibit_sort.h 


Log Message:
- add sorting (name, size, date, resolution)
- implement quit from menu


===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_image.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- exhibit_image.c     23 Dec 2005 00:44:47 -0000      1.10
+++ exhibit_image.c     23 Dec 2005 01:19:34 -0000      1.11
@@ -35,12 +35,23 @@
      }
    else if(ev->button == 3)
      {
+       Etk_Menu_Item *menu_item;
+       Etk_Menu *submenu;
        if(e->menu)
          {
             etk_menu_popup(ETK_MENU(e->menu));
             return;
          }
        e->menu = etk_menu_new();
+       
+       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, _("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);
+       _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Resolution"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_resol_cb), 
e);       
+       
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("in The Gimp"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(e->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(e->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(e->menu), ETK_CALLBACK(_ex_menu_run_in_cb), 
e);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- exhibit_main.c      23 Dec 2005 00:44:48 -0000      1.17
+++ exhibit_main.c      23 Dec 2005 01:19:34 -0000      1.18
@@ -3,7 +3,9 @@
 
 extern pid_t pid;
 extern Evas_List *thumb_list;
-static int _ex_main_dtree_compare_cb(Etk_Tree *tree, Etk_Tree_Row *row1, 
Etk_Tree_Row *row2, Etk_Tree_Col *col, void *data);
+
+Ecore_Evas *ee_buf;
+Evas       *evas_buf;
 
 char *viewables[] =
 {
@@ -205,7 +207,7 @@
 }
 
 
-static int
+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;
@@ -219,6 +221,113 @@
 }
 
 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;   
+}
+
+int
 _ex_file_is_viewable(char *file)
 {
    char *ext;
@@ -482,8 +591,8 @@
    etk_table_attach(ETK_TABLE(e->table), e->menu_bar, 0, 4, 0, 0, 0, 0, 
ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_VFILL | ETK_FILL_POLICY_HEXPAND);
    
      {
-       Etk_Widget *menu;
-       Etk_Widget *menu_item;
+       Etk_Widget *menu, *submenu;
+       Etk_Widget *menu_item, *menu_item2;
        
        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();
@@ -499,10 +608,10 @@
        _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));
+       etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu));    
        
        _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);
@@ -521,6 +630,16 @@
        menu_item = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("View"), 
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));
+       
+       menu_item2 = _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Sort"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_run_in_cb), e);
+       submenu = etk_menu_new();
+       etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item2), ETK_MENU(submenu));
+       _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);
+       _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Resolution"), 
ETK_STOCK_NO_STOCK, ETK_MENU_SHELL(submenu), ETK_CALLBACK(_ex_sort_resol_cb), 
e);
+       
+       
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom in"), EX_IMAGE_ZOOM_IN, 
ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_zoom_in_cb), e);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom out"), 
EX_IMAGE_ZOOM_OUT, ETK_MENU_SHELL(menu), ETK_CALLBACK(_ex_menu_zoom_out_cb), e);
        _ex_menu_item_new(EX_MENU_ITEM_NORMAL, _("Zoom 1:1"), 
EX_IMAGE_ONE_TO_ONE, ETK_MENU_SHELL(menu), 
ETK_CALLBACK(_ex_menu_zoom_one_to_one_cb), e);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_main.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- exhibit_main.h      14 Dec 2005 15:34:28 -0000      1.2
+++ exhibit_main.h      23 Dec 2005 01:19:34 -0000      1.3
@@ -8,7 +8,12 @@
 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 *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);
 void         _ex_main_entry_dir_key_down_cb(Etk_Object *object, void *event, 
void *data);
 void         _ex_main_goto_dir_clicked_cb(Etk_Object *object, void *data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_menus.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- exhibit_menus.c     19 Dec 2005 19:28:31 -0000      1.8
+++ exhibit_menus.c     23 Dec 2005 01:19:34 -0000      1.9
@@ -114,14 +114,14 @@
 _ex_menu_close_window_cb(Etk_Object *obj, void *data)
 {
    EX_MENU_ITEM_GET_RETURN(obj);
-   printf("close window\n");
+   etk_main_quit();   
 }
 
 void
 _ex_menu_quit_cb(Etk_Object *obj, void *data)
 {
    EX_MENU_ITEM_GET_RETURN(obj);
-   printf("quit\n");
+   etk_main_quit();   
 }
 
 void
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_sort.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- exhibit_sort.c      14 Dec 2005 11:33:30 -0000      1.1
+++ exhibit_sort.c      23 Dec 2005 01:19:34 -0000      1.2
@@ -1,5 +1,42 @@
 #include "exhibit.h"
 
+void 
+_ex_sort_name_cb(Etk_Object *obj, void *data)
+{    
+   Exhibit *e;
+   
+   e = data;
+   etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_name_compare_cb, TRUE, 
e->icol, NULL);
+}
+
+void 
+_ex_sort_size_cb(Etk_Object *obj, void *data)
+{    
+   Exhibit *e;
+   
+   e = data;
+   etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_size_compare_cb, TRUE, 
e->icol, NULL);
+}
+
+void 
+_ex_sort_resol_cb(Etk_Object *obj, void *data)
+{    
+   Exhibit *e;
+   
+   e = data;
+   etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_resol_compare_cb, TRUE, 
e->icol, NULL);
+}
+
+void 
+_ex_sort_date_cb(Etk_Object *obj, void *data)
+{    
+   Exhibit *e;
+   
+   e = data;
+   etk_tree_sort(ETK_TREE(e->itree), _ex_main_itree_date_compare_cb, TRUE, 
e->icol, NULL);
+}
+
+
 void
 _ex_sort_label_mouse_down_cb(Etk_Object *object, void *event_info, void *data)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/proto/exhibit/src/bin/exhibit_sort.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- exhibit_sort.h      14 Dec 2005 11:33:30 -0000      1.1
+++ exhibit_sort.h      23 Dec 2005 01:19:34 -0000      1.2
@@ -2,5 +2,9 @@
 #define _EX_SORT_H
 
 void       _ex_sort_label_mouse_down_cb(Etk_Object *object, void *event_info, 
void *data);
+void       _ex_sort_name_cb(Etk_Object *obj, void *data);
+void       _ex_sort_size_cb(Etk_Object *obj, void *data);
+void       _ex_sort_date_cb(Etk_Object *obj, void *data);
+void       _ex_sort_resol_cb(Etk_Object *obj, void *data);
 
 #endif




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to