hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=c8aa003ec336a21e10cf7c5f1e32928733da588d

commit c8aa003ec336a21e10cf7c5f1e32928733da588d
Author: Hermet Park <her...@hermet.pe.kr>
Date:   Thu Feb 4 21:04:33 2016 +0900

    update live edit tools
---
 data/themes/default/images.edc      |  16 ++--
 data/themes/default/images/logo.png | Bin 5151 -> 61036 bytes
 data/themes/default/live_edit.edc   |  43 +++++----
 src/bin/live_edit.c                 | 180 ++++++++++++++++--------------------
 src/bin/main.c                      |   6 --
 src/bin/tools.c                     |  33 ++-----
 src/include/live_edit.h             |   2 +-
 7 files changed, 118 insertions(+), 162 deletions(-)

diff --git a/data/themes/default/images.edc b/data/themes/default/images.edc
index f48381f..b448ec5 100644
--- a/data/themes/default/images.edc
+++ b/data/themes/default/images.edc
@@ -25,8 +25,8 @@ images {
 #define ICON_GROUP(_group_name, _image_path) \
    group { name: _group_name; \
       parts { \
-         part { name: "img"; \
-            description { state: "default" 0.0; \
+         part { \
+            desc { \
                image.normal: _image_path; \
             } \
          } \
@@ -47,11 +47,11 @@ ICON_GROUP("save", "save.png")
 ICON_GROUP("undo", "undo.png")
 ICON_GROUP("redo", "redo.png")
 ICON_GROUP("expand", "expand.png")
-ICON_GROUP("IMAGE", "live_image.png")
-ICON_GROUP("RECT", "live_rectangle.png")
-ICON_GROUP("SPACER", "live_spacer.png")
-ICON_GROUP("SWALLOW", "live_swallow.png")
-ICON_GROUP("TEXT", "live_text.png")
-ICON_GROUP("TEXTBLOCK", "live_textblock.png")
+ICON_GROUP("Image", "live_image.png")
+ICON_GROUP("Rect", "live_rectangle.png")
+ICON_GROUP("Spacer", "live_spacer.png")
+ICON_GROUP("Swallow", "live_swallow.png")
+ICON_GROUP("Text", "live_text.png")
+ICON_GROUP("Textblock", "live_textblock.png")
 
 #undef ICON_GROUP
diff --git a/data/themes/default/images/logo.png 
b/data/themes/default/images/logo.png
index 725990a..a6da587 100644
Binary files a/data/themes/default/images/logo.png and 
b/data/themes/default/images/logo.png differ
diff --git a/data/themes/default/live_edit.edc 
b/data/themes/default/live_edit.edc
index 1032a53..75740d3 100644
--- a/data/themes/default/live_edit.edc
+++ b/data/themes/default/live_edit.edc
@@ -1,5 +1,8 @@
 images {
    image: "live_spacer.png" COMP;
+   image: "swallow.png" COMP;
+   image: "logo.png" COMP;
+
 }
 
 styles {
@@ -8,32 +11,30 @@ styles {
    }
 }
 
-group { name: "IMAGE_bg";
+group { "Image_bg";
    parts {
-      part { name: "logo";
-         description { state: "default" 0.0;
+      image {
+         desc {
             image.normal: "logo.png";
          }
       }
    }
 }
-group { name: "RECT_bg";
+group { "Rect_bg";
    parts {
-      part { name: "rect";
-         type: RECT;
-         description { state: "default" 0.0;
+      rect {
+         desc {
             color: 0 136 170 255;
          }
       }
    }
 }
-group { name: "TEXT_bg";
+group { "Text_bg";
    parts {
-      part { name: "text";
-         type: TEXT;
+      text {
          scale: 1;
          effect: FAR_SOFT_SHADOW;
-         description { state: "default" 0.0;
+         desc {
             color: 0 136 170 255;
             color2: 0 136 170 50;
             color3: 0 136 170 25;
@@ -46,13 +47,11 @@ group { name: "TEXT_bg";
       }
    }
 }
-group { name: "TEXTBLOCK_bg";
+group { "Textblock_bg";
    parts {
-      part { name: "text";
-         type: TEXTBLOCK;
+      textblock {
          scale: 1;
-         description { state: "default" 0.0;
-            color: 255 255 255 255;
+         desc {
             text {
                style: "default_style";
                size: 10;
@@ -63,20 +62,20 @@ group { name: "TEXTBLOCK_bg";
       }
    }
 }
-group { name: "SWALLOW_bg";
+group { "Swallow_bg";
    parts {
-      part { name: "bg";
-         description { state: "default" 0.0;
+      image {
+         desc {
             image.normal: "swallow.png";
             color: 255 255 255 155;
          }
       }
    }
 }
-group { name: "SPACER_bg";
+group { "Spacer_bg";
    parts {
-      part { name: "bg";
-         description { state: "default" 0.0;
+      image {
+         desc {
             image.normal: "live_spacer.png";
             image.border: 5 5 5 5;
             fill.smooth: 0;
diff --git a/src/bin/live_edit.c b/src/bin/live_edit.c
index a219d10..aea3943 100644
--- a/src/bin/live_edit.c
+++ b/src/bin/live_edit.c
@@ -8,6 +8,12 @@
 #define CTRL_PT_LAYER 3
 #define INFO_TEXT_LAYER (CTRL_PT_LAYER+1)
 
+typedef struct livedit_item_s
+{
+   const char *name;
+   Edje_Part_Type type;
+} liveedit_item;
+
 typedef enum
 {
    Ctrl_Pt_Rel1 = 0,
@@ -38,15 +44,9 @@ typedef enum
    Align_Line_Cnt
 } Align_Line;
 
-typedef struct ctxpopup_it_data_s
-{
-   const char *name;
-   Edje_Part_Type type;
-} ctxpopup_it_data;
-
 typedef struct live_editor_s
 {
-   Evas_Object *ctxpopup;
+   Evas_Object *toolbox;
    Evas_Object *layout;
    Evas_Object *live_view;
    Evas_Object *trigger;
@@ -69,18 +69,20 @@ typedef struct live_editor_s
 
 static void live_edit_update_internal(live_data *ld);
 
-static const ctxpopup_it_data CTXPOPUP_ITEMS[] =
-{
-     {"RECT", EDJE_PART_TYPE_RECTANGLE},
-     {"TEXT", EDJE_PART_TYPE_TEXT},
-     {"IMAGE", EDJE_PART_TYPE_IMAGE},
-     {"SWALLOW", EDJE_PART_TYPE_SWALLOW},
-     {"TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK},
-     {"SPACER", EDJE_PART_TYPE_SPACER}
-};
+#define LIVEEDIT_ITEMS_NUM 6
 
 static live_data *g_ld = NULL;
 
+static const liveedit_item LIVEEDIT_ITEMS[] =
+{
+     {"Rect", EDJE_PART_TYPE_RECTANGLE},
+     {"Text", EDJE_PART_TYPE_TEXT},
+     {"Image", EDJE_PART_TYPE_IMAGE},
+     {"Swallow", EDJE_PART_TYPE_SWALLOW},
+     {"Textblock", EDJE_PART_TYPE_TEXTBLOCK},
+     {"Spacer", EDJE_PART_TYPE_SPACER}
+};
+
 static Evas_Object *
 view_scroller_get(live_data *ld)
 {
@@ -181,7 +183,7 @@ static void
 live_edit_symbol_set(live_data *ld)
 {
    char buf[PATH_MAX];
-   snprintf(buf, sizeof(buf), "%s_bg", 
CTXPOPUP_ITEMS[ld->part_info.type].name);
+   snprintf(buf, sizeof(buf), "%s_bg", 
LIVEEDIT_ITEMS[ld->part_info.type].name);
    Evas_Object *layout_symbol = elm_layout_add(ld->layout);
    elm_layout_file_set(layout_symbol, EDJE_PATH, buf);
    elm_object_scale_set(layout_symbol, config_view_scale_get());
@@ -191,7 +193,7 @@ live_edit_symbol_set(live_data *ld)
 static void
 live_edit_insert(live_data *ld)
 {
-   int type = CTXPOPUP_ITEMS[ld->part_info.type].type;
+   int type = LIVEEDIT_ITEMS[ld->part_info.type].type;
    enventor_object_template_part_insert(base_enventor_get(),
                                         type,
                                         ENVENTOR_TEMPLATE_INSERT_LIVE_EDIT,
@@ -708,7 +710,6 @@ layout_update(live_data *ld)
 static void
 live_edit_update_internal(live_data *ld)
 {
-   evas_norender(evas_object_evas_get(ld->layout));
    layout_update(ld);
    ctrl_pt_update(ld);
    align_line_update(ld);
@@ -910,59 +911,6 @@ live_edit_layer_set(live_data *ld)
    info_text_init(ld);
 }
 
-static void
-ctxpopup_it_selected_cb(void *data, Evas_Object *obj,
-                        void *event_info EINA_UNUSED)
-{
-   live_data *ld = g_ld;
-   ld->part_info.type = (unsigned int)(uintptr_t)data;
-   live_edit_layer_set(ld);
-
-   elm_ctxpopup_dismiss(obj);
-
-   stats_info_msg_update(_("Double click the part to confirm."));
-}
-
-static void
-ctxpopup_dismissed_cb(void *data, Evas_Object *obj,
-                      void *event_info EINA_UNUSED)
-{
-   live_data *ld = data;
-   if (!ld->layout) live_edit_cancel();
-   evas_object_focus_set(ld->live_view, EINA_TRUE);
-   evas_object_del(obj);
-   ld->ctxpopup = NULL;
-}
-
-static Evas_Object *
-ctxpopup_create(live_data *ld)
-{
-   const int CTXPOPUP_ITEMS_NUM = 6;
-   int i;
-   Evas_Object *ctxpopup = elm_ctxpopup_add(ld->live_view);
-   elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_DOWN,
-                                       ELM_CTXPOPUP_DIRECTION_RIGHT,
-                                       ELM_CTXPOPUP_DIRECTION_LEFT,
-                                       ELM_CTXPOPUP_DIRECTION_UP);
-
-   for (i = 0; i < CTXPOPUP_ITEMS_NUM; i++)
-     {
-        Evas_Object *icon = elm_image_add(ctxpopup);
-        elm_image_file_set(icon, EDJE_PATH, CTXPOPUP_ITEMS[i].name);
-        elm_ctxpopup_item_append(ctxpopup, CTXPOPUP_ITEMS[i].name, icon,
-                                 ctxpopup_it_selected_cb, (void 
*)(uintptr_t)i);
-     }
-
-   evas_object_smart_callback_add(ctxpopup, "dismissed", ctxpopup_dismissed_cb,
-                                  ld);
-   Evas_Coord x, y, w, h;
-   evas_object_geometry_get(ld->trigger, &x, &y, &w, &h);
-   evas_object_move(ctxpopup, (x + (w/2)), (y + h));
-   evas_object_show(ctxpopup);
-
-   return ctxpopup;
-}
-
 void
 live_edit_update(void)
 {
@@ -979,26 +927,6 @@ live_edit_update(void)
    live_edit_update_internal(ld);
 }
 
-void
-live_edit_toggle(void)
-{
-   live_data *ld = g_ld;
-   Eina_Bool on = !ld->on;
-
-   if (on)
-     {
-        enventor_object_disabled_set(base_enventor_get(), EINA_TRUE);
-        ld->live_view = enventor_object_live_view_get(base_enventor_get());
-        ld->ctxpopup = ctxpopup_create(ld);
-        stats_info_msg_update(_("Select a part to add in Live View."));
-        tools_live_update(EINA_TRUE);
-     }
-   else
-     live_edit_cancel();
-
-   ld->on = on;
-}
-
 Eina_Bool
 live_edit_get(void)
 {
@@ -1012,8 +940,6 @@ live_edit_cancel(void)
    live_data *ld = g_ld;
    if (!ld->on) return EINA_FALSE;
 
-   if (ld->ctxpopup) elm_ctxpopup_dismiss(ld->ctxpopup);
-
    enventor_object_disabled_set(base_enventor_get(), EINA_FALSE);
 
    ecore_event_handler_del(ld->key_down_handler);
@@ -1056,11 +982,70 @@ live_edit_cancel(void)
 
    ld->on = EINA_FALSE;
 
-   tools_live_update(EINA_FALSE);
-
    return EINA_TRUE;
 }
 
+static void
+live_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+   live_edit_cancel();
+   goto_close();
+   search_close();
+
+   live_data *ld = g_ld;
+
+   ld->part_info.type = (unsigned int)(uintptr_t)data;
+   enventor_object_disabled_set(base_enventor_get(), EINA_TRUE);
+   ld->live_view = enventor_object_live_view_get(base_enventor_get());
+   ld->on = EINA_TRUE;
+
+   live_edit_layer_set(ld);
+
+   stats_info_msg_update(_("Double click the part to confirm. (Esc = 
cancel)"));
+}
+
+static Evas_Object *
+live_btn_create(Evas_Object *parent, const char *name, void * data)
+{
+   Evas_Object *btn = elm_button_add(parent);
+   elm_object_style_set(btn, elm_app_name_get());
+   evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_object_focus_allow_set(btn, EINA_FALSE);
+   elm_object_tooltip_text_set(btn, name);
+   elm_object_tooltip_orient_set(btn, ELM_TOOLTIP_ORIENT_BOTTOM);
+
+   Evas_Object *img = elm_image_add(btn);
+   elm_image_file_set(img, EDJE_PATH, name);
+   elm_object_content_set(btn, img);
+
+   evas_object_smart_callback_add(btn, "clicked", live_btn_clicked_cb, data);
+   evas_object_show(btn);
+
+   return btn;
+}
+
+Evas_Object *
+live_edit_tools_create(Evas_Object *parent)
+{
+   Evas_Object *box = elm_box_add(parent);
+   elm_box_horizontal_set(box, EINA_TRUE);
+   elm_box_padding_set(box, ELM_SCALE_SIZE(5), 0);
+
+   Evas_Object *btn;
+   int i;
+
+   for (i = 0; i < LIVEEDIT_ITEMS_NUM; i++)
+     {
+        btn = live_btn_create(box, LIVEEDIT_ITEMS[i].name,
+                              (void *)(uintptr_t) i);
+        elm_box_pack_end(box, btn);
+     }
+
+   evas_object_show(box);
+   return box;
+}
+
 void
 live_edit_init(Evas_Object *trigger)
 {
@@ -1078,8 +1063,7 @@ void
 live_edit_term(void)
 {
    live_data *ld = g_ld;
-   evas_object_del(ld->ctxpopup);
-   ld->ctxpopup = NULL;
+   evas_object_del(ld->toolbox);
    live_edit_cancel();
    free(ld);
    g_ld = NULL;
diff --git a/src/bin/main.c b/src/bin/main.c
index e342f39..dfdc792 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -677,12 +677,6 @@ ctrl_func(app_data *ad, Evas_Event_Key_Down *event)
         enventor_object_auto_complete_list_show(ad->enventor);
         return EINA_TRUE;
      }
-   //Live Edit
-   if (!strcmp(event->key, "e") || !strcmp(event->key, "E"))
-     {
-        live_edit_toggle();
-        return EINA_TRUE;
-     }
 
    return EINA_FALSE;
 }
diff --git a/src/bin/tools.c b/src/bin/tools.c
index 5fa5657..5e53bbf 100644
--- a/src/bin/tools.c
+++ b/src/bin/tools.c
@@ -12,7 +12,6 @@ typedef struct tools_s
    Evas_Object *highlight_btn;
    Evas_Object *goto_btn;
    Evas_Object *find_btn;
-   Evas_Object *live_btn;
    Evas_Object *console_btn;
    Evas_Object *menu_btn;
    Evas_Object *box;
@@ -87,15 +86,6 @@ console_cb(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
 }
 
 static void
-live_edit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
-             void *event_info EINA_UNUSED)
-{
-   search_close();
-   goto_close();
-   live_edit_toggle();
-}
-
-static void
 save_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
         void *event_info EINA_UNUSED)
 {
@@ -242,13 +232,14 @@ tools_init(Evas_Object *parent)
    elm_box_pack_end(box, btn);
    td->swallow_btn = btn;
 
-   btn = tools_btn_create(box, "live_edit", _("Live View Edit (Ctrl + E)"),
-                          live_edit_cb);
-   evas_object_size_hint_weight_set(btn, 0.0, EVAS_HINT_EXPAND);
+   sp = elm_separator_add(box);
+   evas_object_show(sp);
+   elm_box_pack_end(box, sp);
+
+   btn = live_edit_tools_create(box);
+   evas_object_size_hint_weight_set(btn, 0, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(btn, 0.0, EVAS_HINT_FILL);
    elm_box_pack_end(box, btn);
-   evas_object_data_set(box, "live_edit", btn);
-   td->live_btn = btn;
 
    //For a empty space
    Evas_Object *rect = evas_object_rectangle_add(evas_object_evas_get(box));
@@ -396,18 +387,6 @@ tools_search_update(void)
 }
 
 void
-tools_live_update(Eina_Bool on)
-{
-   tools_data *td = g_td;
-   if (!td) return;
-
-   if (on)
-     elm_object_signal_emit(td->live_btn, "icon,highlight,enabled", "");
-   else
-     elm_object_signal_emit(td->live_btn, "icon,highlight,disabled", "");
-}
-
-void
 tools_console_update(Eina_Bool on)
 {
    tools_data *td = g_td;
diff --git a/src/include/live_edit.h b/src/include/live_edit.h
index 7cf6711..626146a 100644
--- a/src/include/live_edit.h
+++ b/src/include/live_edit.h
@@ -5,7 +5,7 @@
 
 void live_edit_init(Evas_Object *trigger);
 void live_edit_term(void);
-void live_edit_toggle(void);
 Eina_Bool live_edit_cancel(void);
 Eina_Bool live_edit_get(void);
 void live_edit_update(void);
+Evas_Object *live_edit_tools_create(Evas_Object *parent);

-- 


Reply via email to