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
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/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", @@ -702,6 +706,20 @@ config_dummy_parts_set(Eina_Bool dummy_parts) cd->dummy_parts = 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) { 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; @@ -45,6 +46,13 @@ dummy_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, tools_dummy_update(EINA_TRUE); } +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); @@ -387,6 +404,30 @@ tools_dummy_update(Eina_Bool toggle) elm_object_signal_emit(td->swallow_btn, "icon,highlight,disabled", ""); } +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) { 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"; @@ -151,6 +152,13 @@ view_images_monitor_set(view_data *vd) edje_edit_string_list_free(imgs); } +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) { @@ -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; @@ -539,6 +540,22 @@ _enventor_object_part_highlight_get(Eo *obj EINA_UNUSED, return edit_part_highlight_get(pd->ed); } +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,