hermet pushed a commit to branch master.

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

commit df7a9f51f8114cc40490b601bedd4b351c11e6c8
Author: taehyub <taehyub....@samsung.com>
Date:   Fri Mar 25 13:30:33 2016 +0900

    tools: support mirror mode
    
    Summary: Added new toolbar item to support mirror mode
    
    Test Plan:
    1. luanch enventor
    2. toggle mirror mode item of toolbar at the left-top or press ctrl + M
    3. see the mirror mode working well
    
    Reviewers: Jaehyun_Cho, NikaWhite, Hermet
    
    Differential Revision: https://phab.enlightenment.org/D3813
---
 README                     |  1 +
 data/about/ABOUT           |  1 +
 src/bin/config_data.c      | 18 ++++++++++++++++++
 src/bin/main.c             |  9 +++++++++
 src/bin/tools.c            | 41 +++++++++++++++++++++++++++++++++++++++++
 src/include/common.h       |  2 +-
 src/include/tools.h        |  1 +
 src/lib/edj_viewer.c       | 22 ++++++++++++++++++++++
 src/lib/enventor_object.eo |  9 +++++++++
 src/lib/enventor_private.h |  2 ++
 src/lib/enventor_smart.c   | 17 +++++++++++++++++
 11 files changed, 122 insertions(+), 1 deletion(-)

diff --git a/README b/README
index 466eafe..d65492f 100644
--- a/README
+++ b/README
@@ -45,6 +45,7 @@ Ctrl+I - Toggle Auto Indentation
 Ctrl+O - Toggle Auto Completion
 Ctrl+W - Toggle Dummy Parts
 Ctrl+H - Toggle Part Highlighting
+Ctrl+M - Toggle Mirror Mode
 Ctrl+T - Insert Defaut Template Code
 Ctrl+Mouse Wheel Up - View Zoom In / Font Size Up
 Ctrl+Mouse Wheel Down - View Zoom Out / Font Size Down
diff --git a/data/about/ABOUT b/data/about/ABOUT
index ced67e3..cf7b9db 100644
--- a/data/about/ABOUT
+++ b/data/about/ABOUT
@@ -27,6 +27,7 @@ Ctrl+I - Toggle Auto Indentation</br>
 Ctrl+O - Toggle Auto Completion</br>
 Ctrl+W - Toggle Dummy Parts</br>
 Ctrl+H - Toggle Part Highlighting</br>
+Ctrl+M - Toggle Mirror Mode</br>
 Ctrl+T - Insert Defaut Template Code</br>
 Ctrl+Mouse Wheel Up - View Zoom In / Font Size Up</br>
 Ctrl+Mouse Wheel Down - View Zoom Out / Font Size Down</br>
diff --git a/src/bin/config_data.c b/src/bin/config_data.c
index bb792ea..f788dd4 100644
--- a/src/bin/config_data.c
+++ b/src/bin/config_data.c
@@ -33,6 +33,7 @@ typedef struct config_s
    Eina_Bool linenumber;
    Eina_Bool part_highlight;
    Eina_Bool dummy_parts;
+   Eina_Bool mirror_mode;
    Eina_Bool auto_indent;
    Eina_Bool tools;
    Eina_Bool console;
@@ -177,6 +178,7 @@ config_load(void)
         cd->linenumber = EINA_TRUE;
         cd->part_highlight = EINA_TRUE;
         cd->dummy_parts = EINA_TRUE;
+        cd->mirror_mode = EINA_FALSE;
         cd->auto_indent = EINA_TRUE;
         cd->tools = EINA_TRUE;
         cd->console = EINA_TRUE;
@@ -289,6 +291,8 @@ eddc_init(void)
                                  part_highlight, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "dummy_parts",
                                  dummy_parts, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "mirror_mode",
+                                 mirror_mode, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "auto_indent",
                                  auto_indent, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "tools",
@@ -703,6 +707,20 @@ config_dummy_parts_set(Eina_Bool dummy_parts)
 }
 
 Eina_Bool
+config_mirror_mode_get(void)
+{
+   config_data *cd = g_cd;
+   return cd->mirror_mode;
+}
+
+void
+config_mirror_mode_set(Eina_Bool mirror_mode)
+{
+   config_data *cd = g_cd;
+   cd->mirror_mode = mirror_mode;
+}
+
+Eina_Bool
 config_auto_indent_get(void)
 {
    config_data *cd = g_cd;
diff --git a/src/bin/main.c b/src/bin/main.c
index e23e8ab..d6dee66 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -42,6 +42,7 @@ tools_update(void)
    tools_lines_update(EINA_FALSE);
    tools_highlight_update(EINA_FALSE);
    tools_dummy_update(EINA_FALSE);
+   tools_mirror_mode_update(EINA_FALSE);
    tools_status_update(EINA_FALSE);
    tools_edc_navigator_update(EINA_FALSE);
 }
@@ -674,6 +675,12 @@ ctrl_func(app_data *ad, Evas_Event_Key_Down *event)
         tools_dummy_update(EINA_TRUE);
         return EINA_TRUE;
      }
+   //Mirror Mode
+   if (!strcmp(event->key, "m") || !strcmp(event->key, "M"))
+     {
+        tools_mirror_mode_update(EINA_TRUE);
+        return EINA_TRUE;
+     }
    //Template Code
    if (!strcmp(event->key, "t") || !strcmp(event->key, "T"))
      {
@@ -871,6 +878,8 @@ keygrabber_init(app_data *ad)
    GRAB_ADD("H", modifier);
    GRAB_ADD("w", modifier);
    GRAB_ADD("W", modifier);
+   GRAB_ADD("m", modifier);
+   GRAB_ADD("M", modifier);
    GRAB_ADD("t", modifier);
    GRAB_ADD("T", modifier);
    GRAB_ADD("i", modifier);
diff --git a/src/bin/tools.c b/src/bin/tools.c
index 69dd2fe..030260c 100644
--- a/src/bin/tools.c
+++ b/src/bin/tools.c
@@ -11,6 +11,7 @@ typedef struct tools_s
    Evas_Object *edc_navigator_btn;
    Evas_Object *lines_btn;
    Evas_Object *highlight_btn;
+   Evas_Object *mirror_btn;
    Evas_Object *goto_btn;
    Evas_Object *find_btn;
    Evas_Object *console_btn;
@@ -46,6 +47,13 @@ dummy_cb(void *data EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED,
 }
 
 static void
+mirror_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
+             void *event_info EINA_UNUSED)
+{
+   tools_mirror_mode_update(EINA_TRUE);
+}
+
+static void
 lines_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
          void *event_info EINA_UNUSED)
 {
@@ -187,6 +195,15 @@ tools_init(Evas_Object *parent)
    elm_box_pack_end(box, btn);
    td->swallow_btn = btn;
 
+   //icon image is temporary, it should be changed to its own icon.
+   btn = tools_btn_create(box, "highlight", _("Mirror Mode (Ctrl + M)"),
+                          mirror_cb);
+   elm_object_tooltip_orient_set(btn, ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT);
+   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);
+   td->mirror_btn = btn;
+
    Evas_Object *sp;
    sp = elm_separator_add(box);
    evas_object_show(sp);
@@ -388,6 +405,30 @@ tools_dummy_update(Eina_Bool toggle)
 }
 
 void
+tools_mirror_mode_update(Eina_Bool toggle)
+{
+   tools_data *td = g_td;
+   if (!td) return;
+
+   if (toggle) config_mirror_mode_set(!config_mirror_mode_get());
+   enventor_object_mirror_mode_set(base_enventor_get(),
+                                   config_mirror_mode_get());
+   if (toggle)
+     {
+        if (config_mirror_mode_get())
+          stats_info_msg_update(_("Mirror Mode Enabled."));
+        else
+          stats_info_msg_update(_("Mirror Mode Disabled."));
+     }
+
+   //Toggle on/off
+   if (config_mirror_mode_get())
+     elm_object_signal_emit(td->mirror_btn, "icon,highlight,enabled", "");
+   else
+     elm_object_signal_emit(td->mirror_btn, "icon,highlight,disabled", "");
+}
+
+void
 tools_status_update(Eina_Bool toggle)
 {
    tools_data *td = g_td;
diff --git a/src/include/common.h b/src/include/common.h
index 907e280..2376779 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -54,7 +54,7 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
 
 #define ROUNDING(x, dig) (floor((x) * pow(10, dig) + 0.5) / pow(10, dig))
 
-#define ENVENTOR_CONFIG_VERSION 6
+#define ENVENTOR_CONFIG_VERSION 7
 
 #define EVENT_KEY_MODIFIER_CHECK(NAME, MASK) \
   ((MASK & ECORE_EVENT_MODIFIER_##NAME) && \
diff --git a/src/include/tools.h b/src/include/tools.h
index 530b6f6..8df325b 100644
--- a/src/include/tools.h
+++ b/src/include/tools.h
@@ -4,6 +4,7 @@ Evas_Object *tools_live_edit_get(Evas_Object *tools);
 void tools_highlight_update(Eina_Bool toggle);
 void tools_lines_update(Eina_Bool toggle);
 void tools_dummy_update(Eina_Bool toggle);
+void tools_mirror_mode_update(Eina_Bool toggle);
 void tools_status_update(Eina_Bool toggle);
 void tools_edc_navigator_update(Eina_Bool toggle);
 void tools_goto_update(void);
diff --git a/src/lib/edj_viewer.c b/src/lib/edj_viewer.c
index 5287d39..02f41d6 100644
--- a/src/lib/edj_viewer.c
+++ b/src/lib/edj_viewer.c
@@ -50,6 +50,7 @@ struct viewer_s
 
    Eina_Bool edj_reload_need : 1;
    Eina_Bool file_set_finished : 1;
+   Eina_Bool mirror_mode : 1;
 };
 
 const char *PART_NAME = "part_name";
@@ -152,6 +153,13 @@ view_images_monitor_set(view_data *vd)
 }
 
 static void
+view_mirror_mode_update(view_data *vd)
+{
+   if (!vd) return;
+   edje_object_mirrored_set(vd->layout, vd->mirror_mode);
+}
+
+static void
 view_obj_create_post_job(view_data *vd)
 {
    vd->file_set_finished = EINA_TRUE;
@@ -169,6 +177,8 @@ view_obj_create_post_job(view_data *vd)
    if (enventor_obj_dummy_parts_get(vd->enventor))
      dummy_obj_new(vd->layout);
 
+   view_mirror_mode_update(vd);
+
    if (vd->changed_part.part)
      edje_edit_part_selected_state_set(vd->layout, vd->changed_part.part,
                                        vd->changed_part.desc,
@@ -367,6 +377,7 @@ update_edj_file_internal(view_data *vd)
    view_obj_min_update(vd);
    view_part_highlight_set(vd, vd->part_name);
    dummy_obj_update(vd->layout);
+   view_mirror_mode_update(vd);
    if (vd->changed_part.part)
    edje_edit_part_selected_state_set(vd->layout, vd->changed_part.part,
                                      vd->changed_part.desc,
@@ -612,6 +623,8 @@ view_init(Evas_Object *enventor, const char *group,
    vd->view_config_size.w = 0;
    vd->view_config_size.h = 0;
 
+   vd->mirror_mode = enventor_object_mirror_mode_get(vd->enventor);
+
    return vd;
 }
 
@@ -812,6 +825,15 @@ view_size_get(view_data *vd, Evas_Coord *w, Evas_Coord *h)
      *h = vd->view_config_size.h;
 }
 
+void
+view_mirror_mode_set(view_data *vd, Eina_Bool mirror_mode)
+{
+  if (!vd) return;
+
+   vd->mirror_mode = mirror_mode;
+   view_mirror_mode_update(vd);
+}
+
 Eina_List *
 view_parts_list_get(view_data *vd)
 {
diff --git a/src/lib/enventor_object.eo b/src/lib/enventor_object.eo
index 9fb7322..caa12c9 100644
--- a/src/lib/enventor_object.eo
+++ b/src/lib/enventor_object.eo
@@ -28,6 +28,15 @@ class Enventor.Object (Elm.Widget, Efl.File) {
             dummy_parts: bool;
          }
       }
+      @property mirror_mode {
+         set {
+         }
+         get {
+         }
+         values {
+            mirror_mode: bool;
+         }
+      }
       @property auto_complete {
          set {
          }
diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h
index c16e5e9..77f375e 100644
--- a/src/lib/enventor_private.h
+++ b/src/lib/enventor_private.h
@@ -219,6 +219,8 @@ Evas_Object *view_obj_get(view_data *vd);
 void view_new(view_data *vd, const char *group);
 void view_part_highlight_set(view_data *vd, const char *part_name);
 void view_dummy_set(view_data *vd, Eina_Bool dummy_on);
+void view_mirror_mode_set(view_data *vd, Eina_Bool mirror_mode);
+Eina_Bool view_mirror_mode_get(view_data *vd);
 void view_program_run(view_data *vd, const char *program);
 Eina_Stringshare *view_group_name_get(view_data *vd);
 void *view_data_get(view_data *vd);
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index a5b118c..24f8b30 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -31,6 +31,7 @@ typedef struct _Enventor_Object_Data
    Eina_Bool dummy_parts : 1;
    Eina_Bool key_down : 1;
    Eina_Bool part_cursor_jump : 1;
+   Eina_Bool mirror_mode : 1;
 
 } Enventor_Object_Data;
 
@@ -540,6 +541,22 @@ _enventor_object_part_highlight_get(Eo *obj EINA_UNUSED,
 }
 
 EOLIAN static void
+_enventor_object_mirror_mode_set(Eo *obj EINA_UNUSED,
+                                 Enventor_Object_Data *pd,
+                                 Eina_Bool mirror_mode)
+{
+   pd->mirror_mode = !!mirror_mode;
+   view_mirror_mode_set(VIEW_DATA, mirror_mode);
+}
+
+EOLIAN static Eina_Bool
+_enventor_object_mirror_mode_get(Eo *obj EINA_UNUSED,
+                                 Enventor_Object_Data *pd)
+{
+   return pd->mirror_mode;
+}
+
+EOLIAN static void
 _enventor_object_focus_set(Eo *obj EINA_UNUSED,
                            Enventor_Object_Data *pd EINA_UNUSED,
                            Eina_Bool focus)

-- 


Reply via email to