okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=f7b4eda7912d407f4a0f3e2d88e12a3e9f34d067

commit f7b4eda7912d407f4a0f3e2d88e12a3e9f34d067
Author: Stephen Houston <smhousto...@gmail.com>
Date:   Thu Jan 16 15:34:33 2014 -0600

    Ephoto: Use layout/edje external, toolbars for better icons, and other UI
    
    Use layout and edje externals for better themability when others make elm 
themes.  Using toolbars improves the size and functionality of the icons.  
Remove unnecessary entry/label in single view.
---
 src/bin/ephoto_main.c           |   2 +-
 src/bin/ephoto_single_browser.c | 136 ++++++++++++++--------------------------
 src/bin/ephoto_thumb_browser.c  | 117 +++++++++++++++++-----------------
 3 files changed, 107 insertions(+), 148 deletions(-)

diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c
index bd01d91..97028be 100644
--- a/src/bin/ephoto_main.c
+++ b/src/bin/ephoto_main.c
@@ -255,7 +255,7 @@ ephoto_title_set(Ephoto *ephoto, const char *title)
 {
    char buf[1024] = "Ephoto";
 
-   if (title) snprintf(buf, sizeof(buf), "%s - Ephoto", title);
+   if (title) snprintf(buf, sizeof(buf), "Ephoto - %s", title);
    elm_win_title_set(ephoto->win, buf);
 }
 
diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c
index ec12a5b..613be0e 100644
--- a/src/bin/ephoto_single_browser.c
+++ b/src/bin/ephoto_single_browser.c
@@ -20,7 +20,7 @@ struct _Ephoto_Single_Browser
    Ephoto *ephoto;
    Evas_Object *main;
    Evas_Object *bar;
-   Evas_Object *sentry;
+   Evas_Object *edje;
    Evas_Object *viewer;
    const char *pending_path;
    Ephoto_Entry *entry;
@@ -491,11 +491,10 @@ _ephoto_single_browser_recalc(Ephoto_Single_Browser *sb)
      {
         const char *bname = ecore_file_file_get(sb->entry->path);
         sb->viewer = _viewer_add(sb->main, sb->entry->path);
-        elm_box_pack_end(sb->main, sb->viewer);
+        elm_layout_box_append(sb->main, "elm.box.content", sb->viewer);
         evas_object_show(sb->viewer);
         evas_object_event_callback_add
           (sb->viewer, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel, sb);
-        elm_entry_entry_set(sb->sentry, bname);
         ephoto_title_set(sb->ephoto, bname);
         sb->orient = ephoto_file_orient_get(sb->entry->path);
         _orient_apply(sb);
@@ -698,11 +697,6 @@ _back(void *data, Evas_Object *o __UNUSED__, void 
*event_info __UNUSED__)
 }
 
 static void
-_changed_file_text(void *data __UNUSED__, Evas_Object *o __UNUSED__, void 
*event_info __UNUSED__)
-{
-}
-
-static void
 _key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void 
*event_info)
 {
    Ephoto_Single_Browser *sb = data;
@@ -804,111 +798,75 @@ _ephoto_single_entry_create(void *data, int type 
__UNUSED__, void *event __UNUSE
    return ECORE_CALLBACK_PASS_ON;
 }
 
-static Evas_Object *
-_button_add(Evas_Object *box, const char *image)
-{
-   Evas_Object *but, *ic;
-
-   but = elm_button_add(box);
-
-   ic = elm_icon_add(but);
-   elm_icon_standard_set(ic, image);
-   evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
-   elm_object_content_set(but, ic);
-   evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_box_pack_end(box, but);
-   evas_object_show(but);
-
-   return but;
-}
-
 Evas_Object *
 ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent)
 {
-   Evas_Object *box = elm_box_add(parent);
-   Evas_Object *but, *sep;
+   Evas_Object *layout = elm_layout_add(parent);
+   Elm_Object_Item *icon;
    Ephoto_Single_Browser *sb;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(box, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(layout, NULL);
 
    sb = calloc(1, sizeof(Ephoto_Single_Browser));
    EINA_SAFETY_ON_NULL_GOTO(sb, error);
    sb->ephoto = ephoto;
-   sb->main = box;
-   elm_box_horizontal_set(sb->main, EINA_FALSE);
-   elm_box_homogeneous_set(sb->main, EINA_FALSE);
+   sb->main = layout;
+   sb->edje = elm_layout_edje_get(layout);
+
    evas_object_event_callback_add(sb->main, EVAS_CALLBACK_DEL, _main_del, sb);
    evas_object_event_callback_add
      (sb->main, EVAS_CALLBACK_KEY_DOWN, _key_down, sb);
    evas_object_data_set(sb->main, "single_browser", sb);
 
-   sb->bar = elm_box_add(sb->main);
-   elm_box_horizontal_set(sb->bar, EINA_TRUE);
-   elm_box_homogeneous_set(sb->bar, EINA_FALSE);
-   evas_object_size_hint_weight_set(sb->bar, 0.0, 0.0);
-   evas_object_size_hint_align_set(sb->bar, EVAS_HINT_FILL, 0.0);
-   evas_object_show(sb->bar);
-   elm_box_pack_end(sb->main, sb->bar);
-
-   but = _button_add(sb->bar, "go-home");
-   evas_object_smart_callback_add(but, "clicked", _back, sb);
-
-   sep = elm_separator_add(sb->bar);
-   elm_box_pack_end(sb->bar, sep);
-   evas_object_show(sep);
-
-   but = _button_add(sb->bar, "zoom-in");
-   evas_object_smart_callback_add(but, "clicked", _zoom_in_cb, sb);
-
-   but = _button_add(sb->bar, "zoom-out");
-   evas_object_smart_callback_add(but, "clicked", _zoom_out_cb, sb);
-
-   but = _button_add(sb->bar, "zoom-fit");
-   evas_object_smart_callback_add(but, "clicked", _zoom_fit_cb, sb);
+   if (!elm_layout_theme_set(sb->main, "layout", "application", 
"toolbar-vbox"))
+     {
+        ERR("Could not load style 'toolbar-vbox' from theme!");
+        goto error;
+     }
+   sb->bar = edje_object_part_external_object_get(sb->edje, 
"elm.external.toolbar");
+   if (!sb->bar)
+     {
+        ERR("Could not find toolbar in layout!");
+        goto error;
+     }
+   elm_toolbar_homogeneous_set(sb->bar, EINA_FALSE);
+   elm_toolbar_shrink_mode_set(sb->bar, ELM_TOOLBAR_SHRINK_MENU);
+   elm_toolbar_menu_parent_set(sb->bar, parent);
+   elm_toolbar_select_mode_set(sb->bar, ELM_OBJECT_SELECT_MODE_NONE);
 
-   but = _button_add(sb->bar, "zoom-original");
-   evas_object_smart_callback_add(but, "clicked", _zoom_1_cb, sb);
+   icon = elm_toolbar_item_append(sb->bar, "go-home", "Back", _back, sb);
+   elm_toolbar_item_priority_set(icon, 150);
 
-   sep = elm_separator_add(sb->bar);
-   elm_box_pack_end(sb->bar, sep);
-   evas_object_show(sep);
+   icon = elm_toolbar_item_append(sb->bar, "media-playback-start", 
"Slideshow", _slideshow, sb);
+   elm_toolbar_item_priority_set(icon, 150);
+   
+   elm_toolbar_item_separator_set(elm_toolbar_item_append(sb->bar, NULL, NULL, 
NULL, NULL), EINA_TRUE);
 
-   sb->sentry = elm_entry_add(sb->bar);
-   evas_object_size_hint_weight_set(sb->sentry, EVAS_HINT_EXPAND, 0.0);
-   evas_object_size_hint_align_set(sb->sentry, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_entry_single_line_set(sb->sentry, EINA_TRUE);
-   elm_entry_scrollable_set(sb->sentry, EINA_TRUE);
-   elm_scroller_policy_set(sb->sentry, ELM_SCROLLER_POLICY_OFF,
-                                  ELM_SCROLLER_POLICY_OFF);
-   elm_object_disabled_set(sb->sentry, EINA_TRUE);
-   evas_object_smart_callback_add
-     (sb->sentry, "activated", _changed_file_text, sb);
-   elm_box_pack_end(sb->bar, sb->sentry);
-   evas_object_show(sb->sentry);
+   icon = elm_toolbar_item_append(sb->bar, "zoom-in", "In", _zoom_in_cb, sb);
+   elm_toolbar_item_priority_set(icon, 100);
 
-   sep = elm_separator_add(sb->bar);
-   elm_box_pack_end(sb->bar, sep);
-   evas_object_show(sep);
+   icon = elm_toolbar_item_append(sb->bar, "zoom-out", "Out", _zoom_out_cb, 
sb);
+   elm_toolbar_item_priority_set(icon, 100);
 
-   but = _button_add(sb->bar, "go-first");
-   evas_object_smart_callback_add(but, "clicked", _go_first, sb);
+   icon = elm_toolbar_item_append(sb->bar, "zoom-fit", "Fit", _zoom_fit_cb, 
sb);
+   elm_toolbar_item_priority_set(icon, 80);
 
-   but = _button_add(sb->bar, "go-previous");
-   evas_object_smart_callback_add(but, "clicked", _go_prev, sb);
+   icon = elm_toolbar_item_append(sb->bar, "zoom-original", "1:1", _zoom_1_cb, 
sb);
+   elm_toolbar_item_priority_set(icon, 80);
+   
+   elm_toolbar_item_separator_set(elm_toolbar_item_append(sb->bar, NULL, NULL, 
NULL, NULL), EINA_TRUE);
 
-   but = _button_add(sb->bar, "go-next");
-   evas_object_smart_callback_add(but, "clicked", _go_next, sb);
+   icon = elm_toolbar_item_append(sb->bar, "go-first", "First", _go_first, sb);
+   elm_toolbar_item_priority_set(icon, 60);
 
-   but = _button_add(sb->bar, "go-last");
-   evas_object_smart_callback_add(but, "clicked", _go_last, sb);
+   icon = elm_toolbar_item_append(sb->bar, "go-previous", "Previous", 
_go_prev, sb);
+   elm_toolbar_item_priority_set(icon, 70);
 
-   sep = elm_separator_add(sb->bar);
-   elm_box_pack_end(sb->bar, sep);
-   evas_object_show(sep);
+   icon = elm_toolbar_item_append(sb->bar, "go-next", "Next", _go_next, sb);
+   elm_toolbar_item_priority_set(icon, 70);
 
-   but = _button_add(sb->bar, "media-playback-start");
-   evas_object_smart_callback_add(but, "clicked", _slideshow, sb);
+   icon = elm_toolbar_item_append(sb->bar, "go-last", "Last", _go_last, sb);
+   elm_toolbar_item_priority_set(icon, 60);
 
    sb->handlers = eina_list_append
       (sb->handlers, ecore_event_handler_add
diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c
index f2c4461..e11a630 100644
--- a/src/bin/ephoto_thumb_browser.c
+++ b/src/bin/ephoto_thumb_browser.c
@@ -15,6 +15,7 @@ struct _Ephoto_Thumb_Browser
    Ephoto *ephoto;
    Evas_Object *main;
    Evas_Object *bar;
+   Evas_Object *edje;
    Evas_Object *entry;
    Evas_Object *grid;
    Eio_File *ls;
@@ -230,10 +231,21 @@ _ephoto_thumb_selected(void *data, Evas_Object *o 
__UNUSED__, void *event_info)
 }
 
 static void
+_changed_dir(void *data, Evas_Object *o __UNUSED__, void *event_info)
+{
+   Ephoto_Thumb_Browser *tb = data;
+   const char *path = event_info;
+   if (path)
+     ephoto_directory_set(tb->ephoto, path);
+   else
+     elm_fileselector_entry_path_set(tb->entry, 
tb->ephoto->config->directory); 
+}
+
+static void
 _changed_dir_text(void *data, Evas_Object *o __UNUSED__, void *event_info 
__UNUSED__)
 {
    Ephoto_Thumb_Browser *tb = data;
-   const char *path = elm_entry_entry_get(tb->entry);
+   const char *path = elm_fileselector_entry_path_get(tb->entry);
    if (ecore_file_is_dir(path))
      ephoto_directory_set(tb->ephoto, path);
 }
@@ -376,7 +388,7 @@ _ephoto_thumb_populate_start(void *data, int type 
__UNUSED__, void *event __UNUS
    _todo_items_free(tb);
    _grid_items_free(tb);
    elm_gengrid_clear(tb->grid);
-   elm_entry_entry_set(tb->entry, tb->ephoto->config->directory);
+   elm_fileselector_entry_path_set(tb->entry, tb->ephoto->config->directory);
    _up_item_add_if_required(tb);
 
    return ECORE_CALLBACK_PASS_ON;
@@ -419,33 +431,15 @@ _ephoto_thumb_entry_create(void *data, int type 
__UNUSED__, void *event)
    return ECORE_CALLBACK_PASS_ON;
 }
 
-static Evas_Object *
-_button_add(Evas_Object *box, const char *image)
-{
-   Evas_Object *but, *ic;
-
-   but = elm_button_add(box);
-
-   ic = elm_icon_add(but);
-   elm_icon_standard_set(ic, image);
-   evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-
-   elm_object_content_set(but, ic);
-   evas_object_size_hint_align_set(but, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_box_pack_end(box, but);
-   evas_object_show(but);
-
-   return but;
-}
-
 Evas_Object *
 ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent)
 {
-   Evas_Object *box = elm_box_add(parent);
-   Evas_Object *but, *min, *max;
+   Evas_Object *layout = elm_layout_add(parent);
+   Elm_Object_Item *icon;
+   Evas_Object *min, *max, *ic;
    Ephoto_Thumb_Browser *tb;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(box, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(layout, NULL);
 
    tb = calloc(1, sizeof(Ephoto_Thumb_Browser));
    EINA_SAFETY_ON_NULL_GOTO(tb, error);
@@ -471,52 +465,59 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object 
*parent)
    elm_theme_extension_add(NULL, PACKAGE_DATA_DIR 
"/themes/default/ephoto.edj");
 
    tb->ephoto = ephoto;
-   tb->main = box;
-   elm_box_horizontal_set(tb->main, EINA_FALSE);
-   elm_box_homogeneous_set(tb->main, EINA_FALSE);
+   tb->edje = elm_layout_edje_get(layout);
+   tb->main = layout;
+
    evas_object_event_callback_add(tb->main, EVAS_CALLBACK_DEL, _main_del, tb);
-   evas_object_event_callback_add
+    evas_object_event_callback_add
      (tb->main, EVAS_CALLBACK_KEY_DOWN, _key_down, tb);
    evas_object_data_set(tb->main, "thumb_browser", tb);
 
-   tb->bar = elm_box_add(tb->main);
-   elm_box_horizontal_set(tb->bar, EINA_TRUE);
-   elm_box_homogeneous_set(tb->bar, EINA_FALSE);
-   evas_object_size_hint_weight_set(tb->bar, 0.0, 0.0);
-   evas_object_size_hint_align_set(tb->bar, EVAS_HINT_FILL, 0.0);
-   evas_object_show(tb->bar);
-   elm_box_pack_end(tb->main, tb->bar);
+   if (!elm_layout_theme_set(tb->main, "layout", "application", 
"toolbar-vbox"))
+     {
+        ERR("Could not load style 'toolbar-vbox' from theme!");
+        goto error;
+     }
+   tb->bar = edje_object_part_external_object_get(tb->edje, 
"elm.external.toolbar");
+   if (!tb->bar)
+     {
+        ERR("Could not find toolbar in layout!");
+        goto error;
+     }
 
-   but = _button_add(tb->bar, "image-x-generic");
-   evas_object_smart_callback_add(but, "clicked", _view_single, tb);
+   elm_toolbar_homogeneous_set(tb->bar, EINA_FALSE);
+   elm_toolbar_shrink_mode_set(tb->bar, ELM_TOOLBAR_SHRINK_MENU);
+   elm_toolbar_menu_parent_set(tb->bar, parent);
+   elm_toolbar_select_mode_set(tb->bar, ELM_OBJECT_SELECT_MODE_NONE);
+
+   elm_toolbar_item_append(tb->bar, "image", "View Single", _view_single, tb);
+   elm_toolbar_item_append(tb->bar, "media-playback-start", "Slideshow", 
_slideshow, tb);
+   icon = elm_toolbar_item_append(tb->bar, "zoom-in", "Zoom In", _zoom_in, tb);
+   max = elm_object_item_widget_get(icon);
+   icon = elm_toolbar_item_append(tb->bar, "zoom-out", "Zoom Out", _zoom_out, 
tb);
+   min = elm_object_item_widget_get(icon);
+   evas_object_data_set(max, "min", min);
+   evas_object_data_set(min, "max", max);
 
-   but = _button_add(tb->bar, "media-playback-start");
-   evas_object_smart_callback_add(but, "clicked", _slideshow, tb);
+   ic = elm_icon_add(tb->main);
+   elm_icon_standard_set(ic, "folder");
+   evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
 
-   tb->entry = elm_entry_add(tb->bar);
+   tb->entry = elm_fileselector_entry_add(tb->main);
    EINA_SAFETY_ON_NULL_GOTO(tb->entry, error);
    evas_object_size_hint_weight_set(tb->entry, EVAS_HINT_EXPAND, 0.0);
    evas_object_size_hint_align_set(tb->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_entry_single_line_set(tb->entry, EINA_TRUE);
-   elm_entry_scrollable_set(tb->entry, EINA_TRUE);
-   elm_scroller_policy_set(tb->entry, ELM_SCROLLER_POLICY_OFF,
-                                  ELM_SCROLLER_POLICY_OFF);
-
+   elm_object_text_set(tb->entry, "Choose");
+   elm_object_part_content_set(tb->entry, "button icon", ic);
+   elm_fileselector_entry_folder_only_set(tb->entry, EINA_TRUE);
+   elm_fileselector_entry_inwin_mode_set(tb->entry, EINA_TRUE);
+   elm_fileselector_entry_expandable_set(tb->entry, EINA_FALSE);
+   evas_object_smart_callback_add
+     (tb->entry, "file,chosen", _changed_dir, tb);
    evas_object_smart_callback_add
      (tb->entry, "activated", _changed_dir_text, tb);
    evas_object_show(tb->entry);
-   elm_box_pack_end(tb->bar, tb->entry);
-
-   but = _button_add(tb->bar, "zoom-in.png");
-   evas_object_smart_callback_add(but, "clicked", _zoom_in, tb);
-   max = but;
-
-   but = _button_add(tb->bar, "zoom-out.png");
-   evas_object_smart_callback_add(but, "clicked", _zoom_out, tb);
-   min = but;
-
-   evas_object_data_set(max, "min", min);
-   evas_object_data_set(min, "max", max);
+   elm_layout_box_append(tb->main, "elm.box.content", tb->entry);
 
    tb->grid = elm_gengrid_add(tb->main);
    EINA_SAFETY_ON_NULL_GOTO(tb->grid, error);
@@ -537,7 +538,7 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object 
*parent)
    _zoom_set(tb, tb->ephoto->config->thumb_size);
 
    evas_object_show(tb->grid);
-   elm_box_pack_end(tb->main, tb->grid);
+   elm_layout_box_append(tb->main, "elm.box.content", tb->grid);
 
    tb->handlers = eina_list_append
       (tb->handlers, ecore_event_handler_add

-- 


Reply via email to