Enlightenment CVS committal

Author  : titan
Project : e17
Module  : apps/ephoto

Dir     : e17/apps/ephoto/src/bin


Modified Files:
        Makefile.am ephoto.c ephoto.h ephoto_edit_view.c ephoto_gui.c 
        ephoto_main.c 
Added Files:
        ephoto_single_view.c 


Log Message:
Add some more stuff to ephoto including directory viewing now.
The old edit view has become single view, and there is a completely
new edit view that is much more editing specific.

===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- Makefile.am 23 Mar 2007 23:50:51 -0000      1.7
+++ Makefile.am 19 Apr 2007 03:17:11 -0000      1.8
@@ -16,6 +16,7 @@
                      ephoto_main.c \
                      ephoto_nls.c \
                      ephoto_normal_view.c \
+                     ephoto_single_view.c \
                      ephoto_slideshow.c \
                      ephoto_utils.c
                     
===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ephoto.c    30 Mar 2007 02:47:16 -0000      1.4
+++ ephoto.c    19 Apr 2007 03:17:11 -0000      1.5
@@ -266,9 +266,6 @@
        bind_textdomain_codeset(PACKAGE, "UTF-8");
        textdomain(PACKAGE);
 #endif
-       /*Use our own theme*/
-       ewl_theme_theme_set(PACKAGE_DATA_DIR "/themes/ephoto.edj");
-
        /*Start the GUI*/
        create_main_gui();
        
===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ephoto.h    30 Mar 2007 02:47:16 -0000      1.15
+++ ephoto.h    19 Apr 2007 03:17:11 -0000      1.16
@@ -68,6 +68,7 @@
 Ewl_Widget *add_box(Ewl_Widget *c, Ewl_Orientation orientation, int spacing);
 Ewl_Widget *add_button(Ewl_Widget *c, const char *txt, const char *img, void 
*cb, void *data);
 Ewl_Widget *add_entry(Ewl_Widget *c, const char *txt, void *cb, void *data);
+Ewl_Widget *add_icon(Ewl_Widget *c, const char *lbl, const char *img, int 
thumbnail, void *cb, void *data);
 Ewl_Widget *add_image(Ewl_Widget *c, const char *img, int thumbnail, void *cb, 
void *data);
 Ewl_Widget *add_label(Ewl_Widget *c, const char *lbl);
 Ewl_Widget *add_menubar(Ewl_Widget *c);
@@ -86,7 +87,6 @@
 
 /* Ephoto Edit View */
 Ewl_Widget *add_edit_view(Ewl_Widget *c);
-void add_edit_tools(Ewl_Widget *c);
 
 /* Ephoto List View */
 Ewl_Widget *add_list_view(Ewl_Widget *c);
@@ -96,6 +96,9 @@
 Ewl_Widget *add_normal_view(Ewl_Widget *c);
 void freebox_image_clicked(Ewl_Widget *w, void *event, void *data);
 
+/* Ephoto Single View */
+Ewl_Widget *add_single_view(Ewl_Widget *c);
+
 /* Ephoto Slideshow */
 void start_slideshow(Ewl_Widget *w, void *event, void *data);
 
@@ -104,27 +107,39 @@
 const char *image_pixels_string_get(const char *file);
 void image_pixels_int_get(const char *file, int *width, int *height);
 
-/* Ephoto Views */
-void show_normal_view(Ewl_Widget *w, void *event, void *data);
+/* Ephoto Main View */
+void show_main_view(Ewl_Widget *w, void *event, void *data);
 void show_edit_view(Ewl_Widget *w, void *event, void *data);
+
+/* Ephoto Viewer Views */
+void show_normal_view(Ewl_Widget *w, void *event, void *data);
 void show_list_view(Ewl_Widget *w, void *event, void *data);
+void show_single_view(Ewl_Widget *w, void *event, void *data);
 
 /* Ephoto Global Variables */
 typedef struct _Ephoto_Main Ephoto_Main;
 
 struct _Ephoto_Main
 {
+       char *current_directory;
        Ecore_List *albums;
+       Ecore_List *directories;
        Ecore_List *images;
        Ewl_Widget *atree;
-       Ewl_Widget *edit_tools;
+       Ewl_Widget *browser;
+       Ewl_Widget *dtree;
        Ewl_Widget *edit_vbox;
        Ewl_Widget *eimage;
        Ewl_Widget *fbox_vbox;
        Ewl_Widget *fbox;
        Ewl_Widget *list_vbox;
        Ewl_Widget *ltree;
+       Ewl_Widget *main_nb;
+       Ewl_Widget *main_vbox;
+       Ewl_Widget *simage;
+       Ewl_Widget *single_vbox;
        Ewl_Widget *toolbar;
+       Ewl_Widget *view;
        Ewl_Widget *view_box;
        Ewl_Widget *win;
        sqlite3 *db;
===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_edit_view.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- ephoto_edit_view.c  30 Mar 2007 02:47:16 -0000      1.11
+++ ephoto_edit_view.c  19 Apr 2007 03:17:11 -0000      1.12
@@ -1,6 +1,7 @@
 #include "ephoto.h"
 
 /*Ephoto Image Manipulation*/
+static void add_standard_edit_tools(Ewl_Widget *c);
 static void previous_image(Ewl_Widget *w, void *event, void *data);
 static void next_image(Ewl_Widget *w, void *event, void *data);
 static void flip_image_horizontal(Ewl_Widget *w, void *event, void *data);
@@ -11,72 +12,104 @@
 /*Add the edit view*/
 Ewl_Widget *add_edit_view(Ewl_Widget *c)
 {
-        em->edit_vbox = add_box(c, EWL_ORIENTATION_VERTICAL, 5);
-        ewl_object_fill_policy_set(EWL_OBJECT(em->edit_vbox), 
EWL_FLAG_FILL_ALL);
-        ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(c), em->edit_vbox, "Edit");
+       Ewl_Widget *button, *vbox, *hbox, *nb, *standard, *enhance, *advanced;
 
-        em->eimage = add_image(em->edit_vbox, NULL, 0, NULL, NULL);
+        vbox = add_box(c, EWL_ORIENTATION_VERTICAL, 5);
+        ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_ALL);
+
+       hbox = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 2);
+       ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_ALL);
+
+       nb = ewl_notebook_new();
+       ewl_object_fill_policy_set(EWL_OBJECT(nb), EWL_FLAG_FILL_VFILL | 
EWL_FLAG_FILL_HSHRINK);
+       ewl_container_child_append(EWL_CONTAINER(hbox), nb);
+       ewl_widget_show(nb);
+
+       standard = add_box(nb, EWL_ORIENTATION_VERTICAL, 2);
+       ewl_object_maximum_w_set(EWL_OBJECT(standard), 172);
+       ewl_object_minimum_w_set(EWL_OBJECT(standard), 172);
+       ewl_object_fill_policy_set(EWL_OBJECT(standard), EWL_FLAG_FILL_VFILL);
+       ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(nb), standard, "Standard 
Tools");   
+
+       add_standard_edit_tools(standard);
+
+       enhance = add_box(nb, EWL_ORIENTATION_VERTICAL, 2);
+        ewl_object_maximum_w_set(EWL_OBJECT(enhance), 172);
+        ewl_object_minimum_w_set(EWL_OBJECT(enhance), 172);
+        ewl_object_fill_policy_set(EWL_OBJECT(enhance), EWL_FLAG_FILL_VFILL);
+        ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(nb), enhance, "Enhancing 
Tools");
+
+       advanced = add_box(nb, EWL_ORIENTATION_VERTICAL, 2);
+        ewl_object_maximum_w_set(EWL_OBJECT(advanced), 172);
+        ewl_object_minimum_w_set(EWL_OBJECT(advanced), 172);
+        ewl_object_fill_policy_set(EWL_OBJECT(advanced), EWL_FLAG_FILL_VFILL);
+        ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(nb), advanced, "Advanced 
Tools");
+
+        em->eimage = add_image(hbox, NULL, 0, NULL, NULL);
         ewl_object_alignment_set(EWL_OBJECT(em->eimage), 
EWL_FLAG_ALIGN_CENTER);
         ewl_object_fill_policy_set(EWL_OBJECT(em->eimage), 
EWL_FLAG_FILL_SHRINK);
 
-        em->edit_tools = add_box(em->edit_vbox, EWL_ORIENTATION_HORIZONTAL, 3);
-        ewl_object_alignment_set(EWL_OBJECT(em->edit_tools), 
EWL_FLAG_ALIGN_CENTER);
-       ewl_object_fill_policy_set(EWL_OBJECT(em->edit_tools), 
EWL_FLAG_FILL_SHRINK);
-        add_edit_tools(em->edit_tools);
+       hbox = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 2);
+       ewl_object_alignment_set(EWL_OBJECT(hbox), EWL_FLAG_ALIGN_CENTER);
+       ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_SHRINK);
+
+       button = add_button(hbox, "Return to main view", NULL, show_main_view, 
NULL);
 
-       return em->edit_vbox;
+        button = add_button(hbox, NULL, PACKAGE_DATA_DIR 
"/images/media-seek-backward.png", previous_image, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 25, 25);
+        ewl_attach_tooltip_text_set(button, "Previous Image");
+
+        button = add_button(hbox, NULL, PACKAGE_DATA_DIR 
"/images/media-seek-forward.png", next_image, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 25, 25);
+        ewl_attach_tooltip_text_set(button, "Next Image");
+
+       return vbox;
 }
 
 /*Show the edit view*/
 void show_edit_view(Ewl_Widget *w, void *event, void *data)
 {
-        ewl_notebook_visible_page_set(EWL_NOTEBOOK(em->view_box), 
em->edit_vbox);
+        ewl_notebook_visible_page_set(EWL_NOTEBOOK(em->main_nb), 
em->edit_vbox);
        ecore_dlist_goto_first(em->images);
        ewl_image_file_path_set(EWL_IMAGE(em->eimage), 
ecore_dlist_current(em->images));
        return;
 }
 
 /*Add edit tools to container c*/
-void add_edit_tools(Ewl_Widget *c)
+static void add_standard_edit_tools(Ewl_Widget *c)
 {
-       Ewl_Widget *image, *sep;
+       Ewl_Widget *button;
 
-        image = add_image(c, PACKAGE_DATA_DIR "/images/get_exif.png", 0, NULL, 
NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-        ewl_attach_tooltip_text_set(image, "You do not have libexif 0.6.13");
+        button = add_button(c, "Get Exif", PACKAGE_DATA_DIR 
"/images/get_exif.png", NULL, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+       ewl_button_label_set(EWL_BUTTON(button), "You do not have libexif 
0.6.13");
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_LEFT);
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_HFILL);
 #ifdef BUILD_EXIF_SUPPORT
-        ewl_callback_append(image, EWL_CALLBACK_CLICKED, display_exif_dialog, 
NULL);
-        ewl_attach_tooltip_text_set(image, "View Exif Data");
+        ewl_callback_append(button, EWL_CALLBACK_CLICKED, display_exif_dialog, 
NULL);
+        ewl_button_label_set(EWL_BUTTON(button), "View Exif Data");
 #endif
 
-       image = add_image(c, PACKAGE_DATA_DIR "/images/undo.png", 0, 
rotate_image_left, NULL);
-       ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Rotate Image Left");
-
-        image = add_image(c, PACKAGE_DATA_DIR "/images/redo.png", 0, 
rotate_image_right, NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Rotate Image Right");
-
-        image = add_image(c, PACKAGE_DATA_DIR "/images/go-next.png", 0, 
flip_image_horizontal, NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Flip Image Horizontally");
-
-        image = add_image(c, PACKAGE_DATA_DIR "/images/go-down.png", 0, 
flip_image_vertical, NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Flip Image Vertically");
-
-       sep = ewl_vseparator_new();
-       ewl_container_child_append(EWL_CONTAINER(c), sep);
-       ewl_widget_show(sep);
-
-        image = add_image(c, PACKAGE_DATA_DIR 
"/images/media-seek-backward.png", 0, previous_image, NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Previous Image");
-
-        image = add_image(c, PACKAGE_DATA_DIR 
"/images/media-seek-forward.png", 0, next_image, NULL);
-        ewl_image_constrain_set(EWL_IMAGE(image), 30);
-       ewl_attach_tooltip_text_set(image, "Next Image");
-       
+       button = add_button(c, "Rotate Left", PACKAGE_DATA_DIR 
"/images/undo.png", rotate_image_left, NULL);
+       ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_LEFT);
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_HFILL);
+
+        button = add_button(c, "Rotate Right", PACKAGE_DATA_DIR 
"/images/redo.png", rotate_image_right, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_LEFT);
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_HFILL);
+
+        button = add_button(c, "Flip Horizontally", PACKAGE_DATA_DIR 
"/images/go-next.png", flip_image_horizontal, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_LEFT);
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_HFILL);
+
+        button = add_button(c, "Flip Vertically", PACKAGE_DATA_DIR 
"/images/go-down.png", flip_image_vertical, NULL);
+       ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_LEFT);
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_HFILL);
+
        return;
 }
 
===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_gui.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ephoto_gui.c        30 Mar 2007 02:47:16 -0000      1.7
+++ ephoto_gui.c        19 Apr 2007 03:17:11 -0000      1.8
@@ -45,6 +45,22 @@
        return entry;
 }
 
+/*Create and add an icon to the container c*/
+Ewl_Widget *add_icon(Ewl_Widget *c, const char *lbl, const char *img, int 
thumbnail, void *cb, void *data)
+{
+       Ewl_Widget *icon;
+       
+       icon = ewl_icon_new();
+       if(!thumbnail) ewl_icon_thumbnailing_set(EWL_ICON(icon), FALSE);
+       if (lbl) ewl_icon_label_set(EWL_ICON(icon), lbl);
+       if (img) ewl_icon_image_set(EWL_ICON(icon), img, NULL);
+       if (c) ewl_container_child_append(EWL_CONTAINER(c), icon);
+       if (cb) ewl_callback_append(icon, EWL_CALLBACK_CLICKED, cb, data);
+       ewl_widget_show(icon);
+
+       return icon;
+}
+
 /*Create and Add an Image to the Container c*/
 Ewl_Widget *add_image(Ewl_Widget *c, const char *img, int thumbnail, void *cb, 
void *data)
 {
===================================================================
RCS file: /cvs/e/e17/apps/ephoto/src/bin/ephoto_main.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- ephoto_main.c       3 Apr 2007 20:12:01 -0000       1.22
+++ ephoto_main.c       19 Apr 2007 03:17:11 -0000      1.23
@@ -2,17 +2,23 @@
 
 /*Ewl Callbacks*/
 static void destroy(Ewl_Widget *w, void *event, void *data);
-static void populate(Ewl_Widget *w, void *event, void *data);
+static void populate_albums(Ewl_Widget *w, void *event, void *data);
+static void populate_directories(Ewl_Widget *w, void *event, void *data);
 static void window_fullscreen(Ewl_Widget *w, void *event, void *data);
 
 /*Ephoto Create Callbacks*/
 static Ewl_Widget *add_atree(Ewl_Widget *c);
+static Ewl_Widget *add_dtree(Ewl_Widget *c);
 
 /*Ephoto MVC Callbacks*/
 static Ewl_Widget *album_view_new(void *data, unsigned int row, unsigned int 
column);
+static Ewl_Widget *directory_view_new(void *data, unsigned int row, unsigned 
int column);
 static Ewl_Widget *album_header_fetch(void *data, unsigned int column);
+static Ewl_Widget *directory_header_fetch(void *data, unsigned int column);
 static void *album_data_fetch(void *data, unsigned int row, unsigned int 
column);
+static void *directory_data_fetch(void *data, unsigned int row, unsigned int 
column);
 static unsigned int album_data_count(void *data);
+static unsigned int directory_data_count(void *data);
 
 /*Ephoto Global Variables*/
 Ephoto_Main *em;
@@ -23,7 +29,8 @@
        ephoto_db_close(em->db);
         ewl_widget_destroy(em->win);
        ecore_list_destroy(em->albums);
-       ecore_list_destroy(em->images);
+       ecore_list_destroy(em->directories);
+       ecore_dlist_destroy(em->images);
        free(em);
        ewl_main_quit();
        return;
@@ -45,15 +52,23 @@
        return;
 }
 
+/*Show the main view*/
+void show_main_view(Ewl_Widget *c, void *event, void *data)
+{
+       ewl_notebook_visible_page_set(EWL_NOTEBOOK(em->main_nb), em->main_vbox);
+       ecore_dlist_goto_first(em->images);
+}
+
 /*Create the Main Ephoto Window*/
 void create_main_gui(void)
 {
-       Ewl_Widget *vbox, *hbox, *hsep, *vsep, *button;
+       Ewl_Widget *vbox, *hbox, *vsep, *button;
        Ewl_Widget *mb, *menu, *mi;
 
        em = NULL;
        em = calloc(1, sizeof(Ephoto_Main));
        em->albums = ecore_list_new();
+       em->directories = ecore_list_new();
        em->images = ecore_dlist_new();
 
        em->win = add_window("Ephoto!", 775, 540, destroy, NULL);
@@ -68,53 +83,100 @@
        hbox = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 2);
        ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_ALL);
 
-       em->atree = add_atree(hbox);
+       em->main_nb = ewl_notebook_new();
+        ewl_notebook_tabbar_visible_set(EWL_NOTEBOOK(em->main_nb), 0);
+        ewl_object_fill_policy_set(EWL_OBJECT(em->main_nb), EWL_FLAG_FILL_ALL);
+        ewl_container_child_append(EWL_CONTAINER(hbox), em->main_nb);
+        ewl_widget_show(em->main_nb);
+
+       em->main_vbox = add_box(em->main_nb, EWL_ORIENTATION_VERTICAL, 2);
+       ewl_object_fill_policy_set(EWL_OBJECT(em->main_vbox), 
EWL_FLAG_FILL_ALL);
+
+       em->edit_vbox = add_box(em->main_nb, EWL_ORIENTATION_VERTICAL, 2);
+       ewl_object_fill_policy_set(EWL_OBJECT(em->edit_vbox), 
EWL_FLAG_FILL_ALL);
+       
+       add_edit_view(em->edit_vbox);
+
+       em->view = add_box(em->main_vbox, EWL_ORIENTATION_HORIZONTAL, 2);
+       ewl_object_fill_policy_set(EWL_OBJECT(em->view), EWL_FLAG_FILL_ALL);
+
+       em->browser = ewl_notebook_new();
+       ewl_object_fill_policy_set(EWL_OBJECT(em->browser), 
EWL_FLAG_FILL_VFILL);
+       ewl_container_child_append(EWL_CONTAINER(em->view), em->browser);
+       ewl_widget_show(em->browser);
+
+        em->atree = add_atree(em->browser);
+        ewl_object_minimum_w_set(EWL_OBJECT(em->atree), 172);
        ewl_object_maximum_w_set(EWL_OBJECT(em->atree), 172);
+       ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(em->browser), em->atree, 
"Albums");
+
+       em->dtree = add_dtree(em->browser);
+       ewl_object_minimum_w_set(EWL_OBJECT(em->dtree), 172);
+       ewl_object_maximum_w_set(EWL_OBJECT(em->dtree), 172);
+       ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(em->browser), em->dtree, 
"File System");
 
        em->view_box = ewl_notebook_new();
        ewl_notebook_tabbar_visible_set(EWL_NOTEBOOK(em->view_box), 0);
        ewl_object_fill_policy_set(EWL_OBJECT(em->view_box), EWL_FLAG_FILL_ALL);
-       ewl_container_child_append(EWL_CONTAINER(hbox), em->view_box);
+       ewl_container_child_append(EWL_CONTAINER(em->view), em->view_box);
        ewl_widget_show(em->view_box);
 
        add_normal_view(em->view_box);
 
-       add_edit_view(em->view_box);
+       add_single_view(em->view_box);
 
        add_list_view(em->view_box);    
-       
-       hsep = ewl_hseparator_new();
-       ewl_container_child_append(EWL_CONTAINER(vbox), hsep);
-       ewl_widget_show(hsep);
 
-       em->toolbar = add_box(vbox, EWL_ORIENTATION_HORIZONTAL, 1);
-       ewl_object_minimum_h_set(EWL_OBJECT(em->toolbar), 30);
+       em->toolbar = ewl_hbox_new();
+       ewl_box_spacing_set(EWL_BOX(em->toolbar), 5);
        ewl_object_alignment_set(EWL_OBJECT(em->toolbar), 
EWL_FLAG_ALIGN_CENTER);
        ewl_object_fill_policy_set(EWL_OBJECT(em->toolbar), 
EWL_FLAG_FILL_SHRINK);
+       ewl_container_child_append(EWL_CONTAINER(em->main_vbox), em->toolbar);
+       ewl_widget_show(em->toolbar);
 
         button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/normal_view.png", show_normal_view, NULL);
-        ewl_image_size_set(EWL_IMAGE(EWL_BUTTON(button)->image_object), 30, 
30);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
        ewl_attach_tooltip_text_set(button, "Normal View");
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+       ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
 
         button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/list_view.png", show_list_view, NULL);
-        ewl_image_size_set(EWL_IMAGE(EWL_BUTTON(button)->image_object), 30, 
30);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
        ewl_attach_tooltip_text_set(button, "List View");      
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+        ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
 
-       button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/edit_view.png", show_edit_view, NULL);
-        ewl_image_size_set(EWL_IMAGE(EWL_BUTTON(button)->image_object), 30, 
30);
+       button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/image.png", show_single_view, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
        ewl_attach_tooltip_text_set(button, "Single View");
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+        ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
 
        vsep = ewl_vseparator_new();
        ewl_container_child_append(EWL_CONTAINER(em->toolbar), vsep);
        ewl_widget_show(vsep);
 
        button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/stock_fullscreen.png", window_fullscreen, NULL);
-        ewl_image_size_set(EWL_IMAGE(EWL_BUTTON(button)->image_object), 30, 
30);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
        ewl_attach_tooltip_text_set(button, "Toggle Fullscreen");
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+        ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
 
         button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/x-office-presentation.png", start_slideshow, NULL);
-       ewl_image_size_set(EWL_IMAGE(EWL_BUTTON(button)->image_object), 30, 30);
+       ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
        ewl_attach_tooltip_text_set(button, "Start a Slideshow");
+       ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+        ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
+
+       vsep = ewl_vseparator_new();
+        ewl_container_child_append(EWL_CONTAINER(em->toolbar), vsep);
+        ewl_widget_show(vsep);
+
+        button = add_button(em->toolbar, NULL, PACKAGE_DATA_DIR 
"/images/edit_view.png", show_edit_view, NULL);
+        ewl_button_image_size_set(EWL_BUTTON(button), 30, 30);
+        ewl_attach_tooltip_text_set(button, "Move to edit view");
+        ewl_object_fill_policy_set(EWL_OBJECT(button), EWL_FLAG_FILL_SHRINK);
+        ewl_object_alignment_set(EWL_OBJECT(button), EWL_FLAG_ALIGN_CENTER);
 
        em->albums = ecore_list_new();
        em->db = ephoto_db_init();
@@ -122,13 +184,14 @@
 
        ewl_mvc_data_set(EWL_MVC(em->atree), em->albums);
        
-       populate(NULL, NULL, "Complete Library");
+       populate_albums(NULL, NULL, "Complete Library");
+       populate_directories(NULL, NULL, getenv("HOME"));
 
        return;
 }
 
 /*Update the Image List*/
-static void populate(Ewl_Widget *w, void *event, void *data)
+static void populate_albums(Ewl_Widget *w, void *event, void *data)
 {
        const char *album;
        char *imagef;
@@ -136,7 +199,7 @@
 
        if (w)
        {
-               album = (char *)ewl_widget_name_get(w);
+               album = ewl_widget_name_get(w);
        }
        else
        {
@@ -165,6 +228,7 @@
                ecore_dlist_next(em->images);
         }
        ecore_dlist_goto_first(em->images);
+       ewl_image_file_path_set(EWL_IMAGE(em->simage), 
ecore_dlist_current(em->images));
 
         ewl_mvc_data_set(EWL_MVC(em->ltree), em->images);
        ewl_mvc_dirty_set(EWL_MVC(em->ltree), 1);
@@ -172,6 +236,68 @@
        return;
 }
 
+/*Update the Image List*/
+static void populate_directories(Ewl_Widget *w, void *event, void *data)
+{
+       const char *directory;
+       char *imagef;
+        Ewl_Widget *thumb;
+
+       if (w)
+       {
+               directory = ewl_widget_name_get(w);
+       }
+       else
+       {
+               directory = data;
+       }
+       if (!ecore_list_is_empty(em->directories))
+       {
+               ecore_list_destroy(em->directories);
+       }
+
+       if(em->current_directory) free(em->current_directory);
+       em->current_directory = strdup(directory);
+
+       em->directories = ecore_list_new();
+       em->directories = get_directories(directory);
+
+       ecore_dlist_goto_first(em->directories);
+        ewl_mvc_data_set(EWL_MVC(em->dtree), em->directories);
+        ewl_mvc_dirty_set(EWL_MVC(em->dtree), 1);
+
+       if (w)
+       {
+               if (!ecore_list_is_empty(em->images))
+               {
+                       ecore_dlist_destroy(em->images);
+               }
+
+               em->images = ecore_dlist_new();
+               em->images = get_images(directory);
+       
+               ecore_dlist_goto_first(em->images);
+               
+               ewl_container_reset(EWL_CONTAINER(em->fbox));
+               while (ecore_dlist_current(em->images))
+               {
+                       imagef = ecore_dlist_current(em->images);
+       
+                       thumb = add_image(em->fbox, imagef, 1, 
freebox_image_clicked, NULL);
+                       ewl_image_constrain_set(EWL_IMAGE(thumb), 64);
+                               ewl_object_alignment_set(EWL_OBJECT(thumb), 
EWL_FLAG_ALIGN_CENTER);
+                       ewl_widget_name_set(thumb, imagef);
+
+                       ecore_dlist_next(em->images);
+               }
+               ecore_dlist_goto_first(em->images);
+               ewl_image_file_path_set(EWL_IMAGE(em->simage), 
ecore_dlist_current(em->images));
+               ewl_mvc_data_set(EWL_MVC(em->ltree), em->images);
+               ewl_mvc_dirty_set(EWL_MVC(em->ltree), 1);
+       }
+       return;
+} 
+
 /*Create and Add a Tree to the Container c*/
 static Ewl_Widget *add_atree(Ewl_Widget *c)
 {
@@ -201,6 +327,34 @@
        return tree;
 }
 
+/*Create and Add a Tree to the Container c*/
+static Ewl_Widget *add_dtree(Ewl_Widget *c)
+{
+        Ewl_Widget *tree;
+        Ewl_Model *model;
+        Ewl_View *view;
+
+        model = ewl_model_new();
+        ewl_model_data_fetch_set(model, directory_data_fetch);
+        ewl_model_data_count_set(model, directory_data_count);
+
+        view = ewl_view_new();
+        ewl_view_widget_fetch_set(view, directory_view_new);
+        ewl_view_header_fetch_set(view, directory_header_fetch);
+
+        tree = ewl_tree2_new();
+        ewl_tree2_headers_visible_set(EWL_TREE2(tree), 0);
+        ewl_tree2_fixed_rows_set(EWL_TREE2(tree), 1);
+        ewl_tree2_column_count_set(EWL_TREE2(tree), 1);
+        ewl_mvc_model_set(EWL_MVC(tree), model);
+        ewl_mvc_view_set(EWL_MVC(tree), view);
+        ewl_mvc_selection_mode_set(EWL_MVC(tree), EWL_SELECTION_MODE_SINGLE);
+        ewl_object_fill_policy_set(EWL_OBJECT(tree), EWL_FLAG_FILL_ALL);
+        ewl_container_child_append(EWL_CONTAINER(c), tree);
+        ewl_widget_show(tree);
+
+        return tree;
+}
 
 /* The view of the users albums */
 static Ewl_Widget *album_view_new(void *data, unsigned int row, unsigned int 
column)
@@ -210,31 +364,64 @@
 
        album = data;
 
-       icon = ewl_icon_new();
-       ewl_icon_thumbnailing_set(EWL_ICON(icon), FALSE);
-        ewl_icon_image_set(EWL_ICON(icon), PACKAGE_DATA_DIR 
"/images/image.png", NULL);
-        ewl_icon_label_set(EWL_ICON(icon), album);
+       icon = add_icon(NULL, album, PACKAGE_DATA_DIR "/images/image.png", 0, 
populate_albums, NULL);
+
         ewl_icon_constrain_set(EWL_ICON(icon), 25);
        ewl_box_orientation_set(EWL_BOX(icon), EWL_ORIENTATION_HORIZONTAL);
        ewl_object_alignment_set(EWL_OBJECT(icon), EWL_FLAG_ALIGN_LEFT);
        ewl_object_fill_policy_set(EWL_OBJECT(icon), EWL_FLAG_FILL_ALL);
-        ewl_callback_append(icon, EWL_CALLBACK_CLICKED, populate, NULL);
        ewl_widget_name_set(icon, album);
-       ewl_widget_show(icon);
 
        return icon;
 }
 
+/* The view of the users directories */
+static Ewl_Widget *directory_view_new(void *data, unsigned int row, unsigned 
int column)
+{
+        const char *directory;
+        Ewl_Widget *icon;
+
+        directory = data;
+
+       icon = add_icon(NULL, basename((char *)directory), PACKAGE_DATA_DIR 
"/images/folder.png", 0, populate_directories, NULL);
+
+        ewl_icon_constrain_set(EWL_ICON(icon), 25);
+        ewl_box_orientation_set(EWL_BOX(icon), EWL_ORIENTATION_HORIZONTAL);
+        ewl_object_alignment_set(EWL_OBJECT(icon), EWL_FLAG_ALIGN_LEFT);
+        ewl_object_fill_policy_set(EWL_OBJECT(icon), EWL_FLAG_FILL_ALL);
+       if (!strncmp(directory, "..", 2))
+       {
+               ewl_widget_name_set(icon, dirname(em->current_directory));
+       }
+       else
+       {
+               ewl_widget_name_set(icon, directory);
+        }
+
+        return icon;
+}
+
+
 /* The header for the tree */
 static Ewl_Widget *album_header_fetch(void *data, unsigned int column)
 {
        Ewl_Widget *label;
 
-       label = add_label(NULL, "Browser");
+       label = add_label(NULL, "Albums");
 
        return label;
 }
 
+/* The header for the tree */
+static Ewl_Widget *directory_header_fetch(void *data, unsigned int column)
+{
+        Ewl_Widget *label;
+
+        label = add_label(NULL, "Directories");
+
+        return label;
+}
+
 /* The albums that will be displayed*/ 
 static void *album_data_fetch(void *data, unsigned int row, unsigned int 
column)
 {
@@ -250,6 +437,21 @@
        return val;
 }
 
+/* The directories that will be displayed*/
+static void *directory_data_fetch(void *data, unsigned int row, unsigned int 
column)
+{
+        const char *directory;
+        void *val = NULL;
+
+        directory = ecore_list_goto_index(em->directories, row);
+        if (directory)
+        {
+                val = (void *)directory;
+        }
+
+        return val;
+}
+
 /* The number of albums the view is displaying */
 static unsigned int album_data_count(void *data)
 {
@@ -258,5 +460,15 @@
        val = ecore_list_nodes(em->albums);
 
        return val;
+}
+
+/* The number of directories the view is displaying */
+static unsigned int directory_data_count(void *data)
+{
+        int val;
+
+        val = ecore_list_nodes(em->directories);
+
+        return val;
 }
 



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to