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