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
This commit is contained in:
taehyub 2016-03-25 13:30:33 +09:00 committed by Hermet Park
parent 21ed85b72b
commit df7a9f51f8
11 changed files with 122 additions and 1 deletions

1
README
View File

@ -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

View File

@ -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>

View File

@ -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)
{

View File

@ -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);

View File

@ -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)
{

View File

@ -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) && \

View File

@ -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);

View File

@ -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)
{

View File

@ -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 {
}

View File

@ -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);

View File

@ -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,