hermet pushed a commit to branch master.

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

commit 955b762eccebf72b65acfc39e53deaf7896b30fb
Author: Hermet Park <her...@hermet.pe.kr>
Date:   Fri Apr 22 19:31:07 2016 +0900

    edc_navigator: provide a program launch button.
    
    Now launching program by double clicking the program part in the code
    is removed! This was not intuitive.
---
 data/themes/default/images.edc           |   2 ++
 data/themes/default/images/Makefile.am   |   1 +
 data/themes/default/images/navi_play.png | Bin 0 -> 312 bytes
 src/bin/edc_navigator.c                  |  39 ++++++++++++++++++++++++++-----
 src/bin/main.c                           |  13 -----------
 src/lib/edc_editor.c                     |  22 +++--------------
 src/lib/edj_viewer.c                     |   2 --
 src/lib/enventor_main.c                  |   1 -
 src/lib/enventor_object.eo               |   6 ++++-
 src/lib/enventor_private.h               |   1 -
 src/lib/enventor_smart.c                 |   9 ++++++-
 11 files changed, 52 insertions(+), 44 deletions(-)

diff --git a/data/themes/default/images.edc b/data/themes/default/images.edc
index cf18c1c..3a09b0c 100644
--- a/data/themes/default/images.edc
+++ b/data/themes/default/images.edc
@@ -36,6 +36,7 @@ images {
    image: "navi_state.png" COMP;
    image: "navi_program.png" COMP;
    image: "navi_unknown.png" COMP;
+   image: "navi_play.png" COMP;
 }
 
 #define ICON_GROUP(_group_name, _image_path) \
@@ -85,5 +86,6 @@ ICON_GROUP("navi_spacer", "navi_spacer.png")
 ICON_GROUP("navi_state", "navi_state.png")
 ICON_GROUP("navi_program", "navi_program.png")
 ICON_GROUP("navi_unknown", "navi_unknown.png")
+ICON_GROUP("navi_play", "navi_play.png")
 
 #undef ICON_GROUP
diff --git a/data/themes/default/images/Makefile.am 
b/data/themes/default/images/Makefile.am
index 77bcd3b..9aada26 100644
--- a/data/themes/default/images/Makefile.am
+++ b/data/themes/default/images/Makefile.am
@@ -84,4 +84,5 @@ EXTRA_DIST = \
    navi_unknown.png \
    navi_state.png \
    navi_program.png \
+       navi_play.png \
    bg_demo.png
diff --git a/data/themes/default/images/navi_play.png 
b/data/themes/default/images/navi_play.png
new file mode 100644
index 0000000..2878856
Binary files /dev/null and b/data/themes/default/images/navi_play.png differ
diff --git a/src/bin/edc_navigator.c b/src/bin/edc_navigator.c
index 6e9ca9d..9b301e5 100644
--- a/src/bin/edc_navigator.c
+++ b/src/bin/edc_navigator.c
@@ -712,6 +712,20 @@ gl_state_content_get_cb(void *data EINA_UNUSED, 
Evas_Object *obj,
 
 /* Program Related */
 
+static void
+program_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+   program_it *pit = data;
+   Evas_Object *enventor = base_enventor_get();
+   enventor_object_program_run(enventor, pit->name);
+
+   if (!config_stats_bar_get()) return;
+
+   char buf[256];
+   snprintf(buf, sizeof(buf),_("Program Run: \"%s\""), pit->name);
+   stats_info_msg_update(buf);
+}
+
 static char *
 gl_program_text_get_cb(void *data, Evas_Object *obj EINA_UNUSED,
                        const char *part EINA_UNUSED)
@@ -724,15 +738,26 @@ static Evas_Object *
 gl_program_content_get_cb(void *data EINA_UNUSED, Evas_Object *obj,
                           const char *part)
 {
-   if (strcmp("elm.swallow.icon", part)) return NULL;
-
-   Evas_Object *image = elm_image_add(obj);
-   elm_image_file_set(image, EDJE_PATH, "navi_state");
+   if (!strcmp("elm.swallow.icon", part))
+     {
+        Evas_Object *image = elm_image_add(obj);
+        elm_image_file_set(image, EDJE_PATH, "navi_state");
+        return image;
+     }
 
-   return image;
+   //play/stop button
+   program_it *pit = data;
+   Evas_Object *btn = elm_button_add(obj);
+   evas_object_smart_callback_add(btn, "clicked", program_btn_clicked_cb,
+                                  pit);
+/*
+   Evas_Object *img = elm_image_add(btn);
+   elm_image_file_set(img, EDJE_PATH, "navi_play");
+   elm_object_content_set(btn, img);
+*/
+   return btn;
 }
 
-
 static void
 gl_program_selected_cb(void *data, Evas_Object *obj EINA_UNUSED,
                        void *event_info EINA_UNUSED)
@@ -1261,6 +1286,8 @@ edc_navigator_group_update(const char *cur_group)
    navi_data *nd = g_nd;
    if (!nd) return;
 
+   //FIXME: This function is unnecessarily called... why?
+
    //Cancel item selection if group was not indicated. 
    if (!cur_group) navigator_item_deselect(nd);
 
diff --git a/src/bin/main.c b/src/bin/main.c
index 30582dc..3d1e2c5 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -463,17 +463,6 @@ enventor_live_view_cursor_moved_cb(void *data EINA_UNUSED,
 }
 
 static void
-enventor_program_run_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
-                        void *event_info)
-{
-   if (!config_stats_bar_get()) return;
-   const char *program = event_info;
-   char buf[256];
-   snprintf(buf, sizeof(buf),_("Program Run: \"%s\""), program);
-   stats_info_msg_update(buf);
-}
-
-static void
 enventor_ctxpopup_activated_cb(void *data EINA_UNUSED,
                                Evas_Object *obj EINA_UNUSED,
                                void *event_info)
@@ -564,8 +553,6 @@ enventor_setup(app_data *ad)
                                   enventor_live_view_resized_cb, ad);
    evas_object_smart_callback_add(enventor, "live_view,updated",
                                   enventor_live_view_updated_cb, ad);
-   evas_object_smart_callback_add(enventor, "program,run",
-                                  enventor_program_run_cb, ad);
    evas_object_smart_callback_add(enventor, "ctxpopup,activated",
                                   enventor_ctxpopup_activated_cb, ad);
    evas_object_smart_callback_add(enventor, "ctxpopup,changed",
diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c
index 7d739a1..a62e947 100644
--- a/src/lib/edc_editor.c
+++ b/src/lib/edc_editor.c
@@ -725,18 +725,6 @@ candidate_list_show(edit_data *ed, char *text, char *cur, 
char *selected)
 }
 
 static void
-program_run(edit_data *ed, char *cur)
-{
-   char *program = parser_name_get(ed->pd, cur);
-   if (program)
-     {
-        view_data *vd = edj_mgr_view_get(NULL);
-        view_program_run(vd, program);
-        free(program);
-     }
-}
-
-static void
 edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
                               void *event_info EINA_UNUSED)
 {
@@ -764,13 +752,9 @@ edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
    * Because right now any text inside quotes that placed after selection is
    * recognized as name.
    */
-  if (!strcmp(selected, "program"))
-     {
-        program_run(ed, cur);
-     }
-   else if ((!strncmp(selected, "image", 5)) ||  //5: sizeof("image")
-            (!strcmp(selected, "normal")) ||
-            (!strcmp(selected, "tween")))
+   if ((!strncmp(selected, "image", 5)) ||  //5: sizeof("image")
+       (!strcmp(selected, "normal")) ||
+       (!strcmp(selected, "tween")))
      {
         int x, y;
         evas_pointer_output_xy_get(evas_object_evas_get(ed->en_edit), &x, &y);
diff --git a/src/lib/edj_viewer.c b/src/lib/edj_viewer.c
index acf562c..139c6fa 100644
--- a/src/lib/edj_viewer.c
+++ b/src/lib/edj_viewer.c
@@ -670,8 +670,6 @@ view_program_run(view_data *vd, const char *program)
    if (!program || !vd->layout) return;
    if (!vd->file_set_finished) return;
    edje_edit_program_run(vd->layout, program);
-   evas_object_smart_callback_call(vd->enventor, SIG_PROGRAM_RUN,
-                                   (void*)program);
 }
 
 void
diff --git a/src/lib/enventor_main.c b/src/lib/enventor_main.c
index e5e4a79..40b1ad5 100644
--- a/src/lib/enventor_main.c
+++ b/src/lib/enventor_main.c
@@ -16,7 +16,6 @@ const char SIG_LIVE_VIEW_CURSOR_MOVED[] = 
"live_view,cursor,moved";
 const char SIG_LIVE_VIEW_RESIZED[] = "live_view,resized";
 const char SIG_MAX_LINE_CHANGED[] = "max_line,changed";
 const char SIG_COMPILE_ERROR[] = "compile,error";
-const char SIG_PROGRAM_RUN[] = "program,run";
 const char SIG_CTXPOPUP_CHANGED[] = "ctxpopup,changed";
 const char SIG_CTXPOPUP_DISMISSED[] = "ctxpopup,dismissed";
 const char SIG_CTXPOPUP_ACTIVATED[] = "ctxpopup,activated";
diff --git a/src/lib/enventor_object.eo b/src/lib/enventor_object.eo
index ed52c83..a903c27 100644
--- a/src/lib/enventor_object.eo
+++ b/src/lib/enventor_object.eo
@@ -185,6 +185,11 @@ class Enventor.Object (Elm.Widget, Efl.File) {
             @in line: int;
          }
       }
+      program_run {
+         params {
+            @in program: const(char) *;
+         }
+      }
       syntax_color_set {
          params {
             @in color_type: Enventor_Syntax_Color_Type;
@@ -300,7 +305,6 @@ class Enventor.Object (Elm.Widget, Efl.File) {
       live_view,resized;
       max_line,changed;
       compile,error;
-      program,run;
       ctxpopup,activated;
       ctxpopup,changed;
       ctxpopup,dismissed;
diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h
index a87b9ae..39baefc 100644
--- a/src/lib/enventor_private.h
+++ b/src/lib/enventor_private.h
@@ -51,7 +51,6 @@ extern const char SIG_LIVE_VIEW_LOADED[];
 extern const char SIG_LIVE_VIEW_UPDATED[];
 extern const char SIG_LIVE_VIEW_CURSOR_MOVED[];
 extern const char SIG_LIVE_VIEW_RESIZED[];
-extern const char SIG_PROGRAM_RUN[];
 extern const char SIG_CTXPOPUP_CHANGED[];
 extern const char SIG_CTXPOPUP_DISMISSED[];
 extern const char SIG_CTXPOPUP_ACTIVATED[];
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index 820e611..0cd58f5 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -44,7 +44,6 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = {
    {SIG_LIVE_VIEW_UPDATED, ""},
    {SIG_MAX_LINE_CHANGED, ""},
    {SIG_COMPILE_ERROR, ""},
-   {SIG_PROGRAM_RUN, ""},
    {SIG_CTXPOPUP_CHANGED, ""},
    {SIG_CTXPOPUP_DISMISSED, ""},
    {SIG_CTXPOPUP_ACTIVATED, ""},
@@ -779,6 +778,14 @@ _enventor_object_undo(Eo *obj EINA_UNUSED, 
Enventor_Object_Data *pd)
    return edit_redoundo(pd->ed, EINA_TRUE);
 }
 
+EOLIAN static void
+_enventor_object_program_run(Eo *obj EINA_UNUSED,
+                             Enventor_Object_Data *pd,
+                             const char *program)
+{
+   view_program_run(VIEW_DATA, program);
+}
+
 /*****************************************************************************/
 /* Externally accessible calls                                               */
 /*****************************************************************************/

-- 


Reply via email to