Enlightenment CVS committal

Author  : titan
Project : e17
Module  : proto

Dir     : e17/proto/ephoto/src/bin


Modified Files:
        ephoto_gui.c 


Log Message:
First step towards tree2.

===================================================================
RCS file: /cvs/e/e17/proto/ephoto/src/bin/ephoto_gui.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- ephoto_gui.c        2 Jan 2007 09:32:48 -0000       1.15
+++ ephoto_gui.c        7 Jan 2007 02:06:50 -0000       1.16
@@ -16,9 +16,13 @@
 static Ewl_Widget *add_tree(Ewl_Widget *c);
 static void populate_files(char *cdir);
 
-/*Ephoto Global Variables*/
-static Ewl_Widget *ftree, *atree, *fbox, *vnb, *cvbox, *ivbox, *vimage, 
*progress;
+/*Ephoto Widget Global Variables*/
+static Ewl_Widget *ftree, *atree, *fbox, *vnb;
+static Ewl_Widget *cvbox, *ivbox, *vimage, *progress;
+
+/*Ephoto Ecore Global Variables*/
 static Ecore_Timer *timer;
+static Ecore_List *directories, *images;
 
 /*Destroy Boot Splash*/
 int destroy_boot(void *data)
@@ -169,18 +173,94 @@
        return;
 }
 
+static Ewl_Widget *directory_view_new(void)
+{
+       Ewl_Widget *icon;
+
+       icon = ewl_icon_new();
+       ewl_box_orientation_set(EWL_BOX(icon), EWL_ORIENTATION_HORIZONTAL);
+       ewl_widget_show(icon);
+
+       return icon;
+}
+
+static void directory_view_assign(Ewl_Widget *w, void *data)
+{
+       char *file;
+
+       file = data;
+       ewl_icon_image_set(EWL_ICON(w), PACKAGE_DATA_DIR "/images/folder.png", 
NULL);
+       ewl_icon_label_set(EWL_ICON(w), basename(file));
+       ewl_icon_constrain_set(EWL_ICON(w), 20);
+}      
+
+static Ewl_Widget *directory_header_fetch(void *data, int column)
+{
+       Ewl_Widget *label;
+
+       label = ewl_label_new();
+       ewl_label_text_set(EWL_LABEL(label), "Directories");
+       ewl_widget_show(label);
+
+       return label;
+}
+
+static void *directory_data_fetch(void *data, unsigned int row, unsigned int 
column)
+{
+       char *file;
+       void *val = NULL;
+
+       file = ecore_list_goto_index(directories, row);
+       if (file)
+       {
+               val = file;
+       }
+
+       return val;
+}
+
+static void directory_data_sort(void *data, unsigned int column, 
Ewl_Sort_Direction sort)
+{
+       return;
+}
+
+static int directory_data_count(void *data)
+{
+       int val;
+
+       val = ecore_list_nodes(directories);
+
+       return val;
+}
+
 /*Create and Add a Tree to the Container c*/
 static Ewl_Widget *add_tree(Ewl_Widget *c)
 {
        Ewl_Widget *tree;
+       Ewl_Model *model;
+       Ewl_View *view;
 
-       tree = ewl_tree_new(1);
-       ewl_tree_headers_visible_set(EWL_TREE(tree), 0);
-       ewl_tree_expandable_rows_set(EWL_TREE(tree), 0);
+       model = ewl_model_new();
+       ewl_model_fetch_set(model, directory_data_fetch);
+       ewl_model_sort_set(model, directory_data_sort);
+       ewl_model_count_set(model, directory_data_count);
+       ewl_model_expandable_set(model, NULL);
+       ewl_model_subfetch_set(model, NULL);
+
+       tree = ewl_tree2_new();
+       ewl_mvc_data_set(EWL_MVC(tree), directories);
+       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);
 
+       view = ewl_view_new();
+       ewl_view_constructor_set(view, directory_view_new);
+       ewl_view_assign_set(view, directory_view_assign);
+       ewl_view_header_fetch_set(view, directory_header_fetch);
+       
+       ewl_tree2_column_append(EWL_TREE2(tree), model, view);
+
        return tree;
 }
 
@@ -203,67 +283,54 @@
 /*Update the Directory Listing and Image List*/
 static void populate_files(char *cdir)
 {
-       char *dir, *imagef;
-       Ecore_List *directories, *images;
-       Ewl_Widget *hbox, *image, *text, *children[2], *row;
+       if (!ecore_list_is_empty(directories))
+       {
+               ecore_list_destroy(directories);
+               directories = ecore_list_new();
+       }
+       if (!ecore_list_is_empty(images))
+       {
+               ecore_list_destroy(images);
+               images = ecore_list_new();
+       }
 
        directories = get_directories(cdir);
        images = get_images(cdir);
+}
 
-       ewl_container_reset(EWL_CONTAINER(ftree));
-       while (!ecore_list_is_empty(directories))
-       {
-               dir = ecore_list_remove_first(directories);
-               
-               hbox = ewl_hbox_new();
-               ewl_object_alignment_set(EWL_OBJECT(hbox), 
EWL_FLAG_ALIGN_CENTER);
-               ewl_object_fill_policy_set(EWL_OBJECT(hbox), EWL_FLAG_FILL_ALL);
-               ewl_box_spacing_set(EWL_BOX(hbox), 5);
-               ewl_widget_show(hbox);
-
-               image = ewl_image_new();
-               ewl_image_file_set(EWL_IMAGE(image), 
-                                  PACKAGE_DATA_DIR "/images/folder.png", NULL);
-               ewl_container_child_append(EWL_CONTAINER(hbox), image);
-               ewl_widget_show(image);
-
-               text = ewl_text_new();
-               ewl_text_text_set(EWL_TEXT(text), basename(dir));
-               ewl_object_alignment_set(EWL_OBJECT(text), 
EWL_FLAG_ALIGN_CENTER);
-               ewl_object_fill_policy_set(EWL_OBJECT(text), 
EWL_FLAG_FILL_SHRINK);
-               ewl_container_child_append(EWL_CONTAINER(hbox), text);
-               ewl_widget_show(text);
-
-               children[0] = hbox;
-               children[1] = NULL;
-               
-               row = ewl_tree_row_add(EWL_TREE(ftree), NULL, children);
-       }
-       ewl_widget_configure(ftree);
+static void populate_images(void)
+{
+       char *imagef;
+       Ewl_Widget *image, *thumb;
 
        ewl_container_reset(EWL_CONTAINER(fbox));
        while (!ecore_list_is_empty(images))
        {
                imagef = ecore_list_remove_first(images);
-               image = ewl_image_thumbnail_new();
-               ewl_image_thumbnail_request(EWL_IMAGE_THUMBNAIL(image), imagef);
-               ewl_image_proportional_set(EWL_IMAGE(image), TRUE);
-               ewl_image_constrain_set(EWL_IMAGE(image), 100);
-               ewl_object_alignment_set(EWL_OBJECT(image), 
EWL_FLAG_ALIGN_CENTER);
-               ewl_container_child_append(EWL_CONTAINER(fbox), image);
-                ewl_callback_append(image, EWL_CALLBACK_CLICKED, view_image, 
imagef);
-               ewl_widget_show(image);
-       }
-       ewl_widget_configure(ftree);
-       ecore_list_destroy(directories);
-       ecore_list_destroy(images);
+               
+               image = ewl_image_new();
+               ewl_image_file_set(EWL_IMAGE(image), imagef, NULL);
+
+               thumb = ewl_image_thumbnail_get(EWL_IMAGE(image));
+               ewl_image_file_set(EWL_IMAGE(thumb), PACKAGE_DATA_DIR 
"/images/album.png", NULL);
+               ewl_image_proportional_set(EWL_IMAGE(thumb), TRUE);
+               ewl_image_constrain_set(EWL_IMAGE(thumb), 100);
+               ewl_container_child_append(EWL_CONTAINER(fbox), thumb);
+                ewl_callback_append(thumb, EWL_CALLBACK_CLICKED, view_image, 
imagef);
+               ewl_widget_show(thumb);
+       }
+       ewl_widget_configure(fbox);
 }
 
 /*Create the Main Ephoto Window*/
 static void create_main_gui(void)
 {
-       Ewl_Widget *win, *vbox, *menu_bar, *menu, *nb, *paned;
-       Ewl_Widget *border, *ihbox, *sp;
+       Ewl_Widget *win, *vbox, *menu_bar, *menu, *paned;
+       Ewl_Widget *ihbox, *sp;
+
+       directories = ecore_list_new();
+       images = ecore_list_new();
+       populate_files(getenv("HOME"));
 
        win = ewl_window_new();
         ewl_window_title_set(EWL_WINDOW(win), "Ephoto!");
@@ -294,16 +361,7 @@
        ewl_container_child_append(EWL_CONTAINER(vbox), paned);
        ewl_widget_show(paned);
 
-       nb = ewl_notebook_new();
-       ewl_notebook_tabbar_alignment_set(EWL_NOTEBOOK(nb), 
EWL_FLAG_ALIGN_LEFT);
-       ewl_object_fill_policy_set(EWL_OBJECT(nb), EWL_FLAG_FILL_ALL);
-       ewl_container_child_append(EWL_CONTAINER(paned), nb);
-       ewl_widget_show(nb);
-
-       ftree = add_tree(nb);
-       ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(nb), ftree, "Files");
-       atree = add_tree(nb);
-       ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(nb), atree, "Albums");
+       ftree = add_tree(paned);
 
        vnb = ewl_notebook_new();
        ewl_notebook_tabbar_visible_set(EWL_NOTEBOOK(vnb), 0);
@@ -317,16 +375,9 @@
        ewl_widget_show(cvbox);
        ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(vnb), cvbox, "Catalog");
 
-       border = ewl_border_new();
-       ewl_border_label_set(EWL_BORDER(border), "Catalog");
-       ewl_border_label_alignment_set(EWL_BORDER(border), 
EWL_FLAG_ALIGN_CENTER);
-       ewl_object_fill_policy_set(EWL_OBJECT(border), EWL_FLAG_FILL_ALL);
-       ewl_container_child_append(EWL_CONTAINER(cvbox), border);
-       ewl_widget_show(border);
-
        sp = ewl_scrollpane_new();
        ewl_object_fill_policy_set(EWL_OBJECT(sp), EWL_FLAG_FILL_ALL);
-       ewl_container_child_append(EWL_CONTAINER(border), sp);
+       ewl_container_child_append(EWL_CONTAINER(cvbox), sp);
        ewl_widget_show(sp);
 
        fbox = ewl_hfreebox_new();
@@ -340,16 +391,9 @@
         ewl_widget_show(ivbox);
         ewl_notebook_page_tab_text_set(EWL_NOTEBOOK(vnb), ivbox, "Viewer");
 
-        border = ewl_border_new();
-        ewl_border_label_set(EWL_BORDER(border), "Image Viewer");
-        ewl_border_label_alignment_set(EWL_BORDER(border), 
EWL_FLAG_ALIGN_CENTER);
-        ewl_object_fill_policy_set(EWL_OBJECT(border), EWL_FLAG_FILL_ALL);
-        ewl_container_child_append(EWL_CONTAINER(ivbox), border);
-        ewl_widget_show(border);
-
         sp = ewl_scrollpane_new();
         ewl_object_fill_policy_set(EWL_OBJECT(sp), EWL_FLAG_FILL_ALL);
-        ewl_container_child_append(EWL_CONTAINER(border), sp);
+        ewl_container_child_append(EWL_CONTAINER(ivbox), sp);
         ewl_widget_show(sp);
 
        vimage = ewl_image_new();
@@ -367,7 +411,7 @@
 
        add_button(ihbox, "Return to Catalog", NULL, view_catalog);
 
-       populate_files(getenv("HOME"));
+       populate_images();
 
        return;
 }



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