edc_navigator: Add dragable bar for edc_navigator

Summary:
edc_navigator can be resized. in order to prevent collision
between edc_navigator and file_browser, limit the size to half each other.

Test Plan:
1. Run enventor
2-1. Drag the bar between text editor and edc_navigator
2-2. Toggle edc_navigator using key F10
3. Check edc_navigator size is saved after restart envertor

Reviewers: Jaehyun_Cho, Hermet

Differential Revision: https://phab.enlightenment.org/D4439
This commit is contained in:
YeongJong Lee 2016-11-30 13:25:56 +09:00 committed by Hermet Park
parent c13134d609
commit d9cbfba323
7 changed files with 281 additions and 12 deletions

View File

@ -2422,28 +2422,26 @@ group { "main_layout";
to_y: "elm.swallow.file_tab";
}
align: 0 0;
min: 200 0;
max: 0 -1;
fixed: 1 0;
visible: 0;
}
desc { "visible";
inherit: "default";
align: 1 0;
rel1 {
relative: 1.0 0.0;
}
rel2 {
relative: 1.0 0.0;
to_y: "elm.swallow.file_tab";
to: "elm.bar.right";
}
visible: 1;
}
}
spacer { "whole_left";
desc { "default";
rel2.relative: 0.0 1.0;
rel2.to: "elm.swallow.edc_navigator";
rel2.relative: 0.5 1.0;
}
}
spacer { "whole_right";
desc { "default";
rel1.relative: 0.5 0.0;
}
}
spacer { "elm.bar.left";
@ -2455,8 +2453,21 @@ group { "main_layout";
max: 0 99999;
min: 0 14;
fixed: 1 1;
rel1.relative: 0.0 0.5;
rel2.relative: 1.0 0.5;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
}
}
spacer { "elm.bar.right";
dragable { confine: "whole_right";
x: 1 1 1;
y: 0 0 0;
}
desc { "default";
max: 0 99999;
min: 0 14;
fixed: 1 1;
rel1.relative: 0.0 0.0;
rel2.relative: 1.0 1.0;
}
}
spacer { "elm.bar.event_left";
@ -2467,6 +2478,14 @@ group { "main_layout";
rel2.relative: 1.0 0.0;
}
}
spacer { "elm.bar.event_right";
desc { "default";
rel1.to_x: "elm.bar.right";
rel2.to_x: "elm.bar.right";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
}
}
swallow { "bar_left";
dragable.events: "elm.bar.left";
desc { "default";
@ -2480,6 +2499,19 @@ group { "main_layout";
color: 0 0 0 0;
}
}
swallow { "bar_right";
dragable.events: "elm.bar.right";
desc { "default";
min: 10 0;
max: 99999 99999;
fixed: 1 0;
rel1.to_x: "elm.bar.event_right";
rel1.relative: 0.0 0.25;
rel2.to: "elm.bar.event_right";
rel2.relative: 1.0 0.75;
color: 0 0 0 0;
}
}
rect { "bar_left1";
repeat_events: 1;
desc { "default";
@ -2500,6 +2532,26 @@ group { "main_layout";
color: 0 0 0 0;
}
}
rect { "bar_right1";
repeat_events: 1;
desc { "default";
fixed: 1 1;
rel1.to: "bar_right";
rel2.to: "bar_right";
rel2.relative: 0.5 1.0;
color: 0 0 0 0;
}
}
rect { "bar_right2";
repeat_events: 1;
desc { "default";
fixed: 1 1;
rel1.to: "bar_right";
rel1.relative: 0.5 0.0;
rel2.to: "bar_right";
color: 0 0 0 0;
}
}
image { "glow1a_left";
nomouse;
desc { "default";
@ -2566,6 +2618,72 @@ group { "main_layout";
color: 255 255 255 255;
}
}
image { "glow1a_right";
nomouse;
desc { "default";
image.normal: "downlight_glow_left.png";
image.border: 0 3 0 0;
max: 32 99999;
rel2.to_x: "elm.bar.right";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
color: 255 255 255 0;
align: 1.0 0.5;
}
desc { "active";
inherit: "default";
color: 255 255 255 255;
}
}
image { "glow1b_right";
nomouse;
desc { "default";
image.normal: "downlight_glow_right.png";
max: 4 99999;
rel1.to_x: "elm.bar.right";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
color: 255 255 255 0;
align: 0.0 0.5;
}
desc { "active";
inherit: "default";
color: 255 255 255 255;
}
}
image { "glow2a_right";
nomouse;
desc { "default";
image.normal: "downlight_glow_left.png";
max: 4 99999;
rel2.to_x: "elm.bar.right";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
color: 255 255 255 0;
align: 1.0 0.5;
}
desc { "active";
inherit: "default";
color: 255 255 255 255;
}
}
image { "glow2b_right";
nomouse;
desc { "default";
image.normal: "downlight_glow_right.png";
image.border: 0 3 0 0;
max: 32 99999;
rel1.to_x: "elm.bar.right";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
color: 255 255 255 0;
align: 0.0 0.5;
}
desc { "active";
inherit: "default";
color: 255 255 255 255;
}
}
}
programs {
program { "file_browser_show";
@ -2595,6 +2713,10 @@ group { "main_layout";
action: STATE_SET "default";
target: "elm.swallow.edc_navigator";
transition: DECELERATE 0.25;
after: "edc_navigator_hide_done";
}
program { "edc_navigator_hide_done";
action: SIGNAL_EMIT "elm,state,edc_navigator_hide,done" "";
}
program { "statusbar_show";
signal: "elm,state,statusbar,show";
@ -2659,6 +2781,34 @@ group { "main_layout";
target: "glow2a_left";
target: "glow2b_left";
}
program { "right_bar_mouse_in1";
signal: "mouse,in"; source: "bar_right1";
action: STATE_SET "active";
transition: BOUNCE 0.4 0.5 4;
target: "glow1a_right";
target: "glow1b_right";
}
program { "right_bar_mouse_out1";
signal: "mouse,out"; source: "bar_right1";
action: STATE_SET "default";
transition: DECELERATE 0.5;
target: "glow1a_right";
target: "glow1b_right";
}
program { "right_bar_mouse_in2";
signal: "mouse,in"; source: "bar_right2";
action: STATE_SET "active";
transition: BOUNCE 0.4 0.5 4;
target: "glow2a_right";
target: "glow2b_right";
}
program { "right_bar_mouse_out2";
signal: "mouse,out"; source: "bar_right2";
action: STATE_SET "default";
transition: DECELERATE 0.5;
target: "glow2a_right";
target: "glow2b_right";
}
}
}

View File

@ -146,6 +146,18 @@ base_edc_navigator_deselect(void)
edc_navigator_deselect();
}
static void
edc_navigator_hide_done(void *data, Evas_Object *obj EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
base_data *bd = data;
elm_object_signal_callback_del(bd->layout,
"elm,state,edc_navigator_hide,done", "",
edc_navigator_hide_done);
edc_navigator_hide();
}
void base_edc_navigator_toggle(Eina_Bool toggle)
{
base_data *bd = g_bd;
@ -157,9 +169,13 @@ void base_edc_navigator_toggle(Eina_Bool toggle)
{
base_edc_navigator_group_update();
elm_object_signal_emit(bd->layout, "elm,state,edc_navigator,show", "");
edc_navigator_show();
}
else
{
elm_object_signal_callback_add(bd->layout,
"elm,state,edc_navigator_hide,done", "",
edc_navigator_hide_done, bd);
elm_object_signal_emit(bd->layout, "elm,state,edc_navigator,hide", "");
edc_navigator_deselect();
}

View File

@ -24,6 +24,7 @@ typedef struct config_s
double editor_size;
double console_size;
double file_browser_size;
double edc_navigator_size;
void (*update_cb)(void *data);
void *update_cb_data;
@ -186,6 +187,7 @@ config_load(void)
cd->editor_size = DEFAULT_EDITOR_SIZE;
cd->console_size = DEFAULT_CONSOLE_SIZE;
cd->file_browser_size = DEFAULT_FILE_BROWSER_SIZE;
cd->edc_navigator_size = DEFAULT_EDC_NAVIGATOR_SIZE;
cd->stats_bar = EINA_TRUE;
cd->linenumber = EINA_TRUE;
cd->part_highlight = EINA_TRUE;
@ -291,6 +293,8 @@ eddc_init(void)
console_size, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "file_browser_size",
file_browser_size, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "edc_navigator_size",
edc_navigator_size, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "view_size_w",
view_size_w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "view_size_h",
@ -1099,3 +1103,21 @@ config_edc_navigator_get(void)
return cd->edc_navigator;
}
void
config_edc_navigator_size_set(double size)
{
config_data *cd = g_cd;
EINA_SAFETY_ON_NULL_RETURN(cd);
cd->edc_navigator_size = size;
}
double
config_edc_navigator_size_get(void)
{
config_data *cd = g_cd;
EINA_SAFETY_ON_NULL_RETURN_VAL(cd, 0.0);
return cd->edc_navigator_size;
}

View File

@ -1351,6 +1351,44 @@ gl_contract_request_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
}
}
static void
dragable_bar_mouse_up_cb(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *main_layout = data;
if (!main_layout) return;
double w;
edje_object_part_drag_value_get
(elm_layout_edje_get(main_layout), "elm.bar.right", &w, NULL);
if (w > 0.99)
{
config_edc_navigator_set(EINA_FALSE);
tools_edc_navigator_update(EINA_FALSE);
config_edc_navigator_size_set(0.0);
}
else
config_edc_navigator_size_set(w);
}
static void
dragable_bar_mouse_down_cb(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
Evas_Object *main_layout = data;
if (!main_layout) return;
double w;
edje_object_part_drag_value_get
(elm_layout_edje_get(main_layout), "elm.bar.right", &w, NULL);
if (w > 0.99)
{
config_edc_navigator_set(EINA_TRUE);
tools_edc_navigator_update(EINA_FALSE);
}
}
/*****************************************************************************/
/* Externally accessible calls */
/*****************************************************************************/
@ -1536,9 +1574,21 @@ edc_navigator_init(Evas_Object *parent)
nd->program_itc = itc;
//Dragable Bar
Evas_Object *bar = evas_object_rectangle_add(evas_object_evas_get(parent));
evas_object_color_set(bar, 0, 0, 0, 0);
evas_object_event_callback_add(bar, EVAS_CALLBACK_MOUSE_DOWN,
dragable_bar_mouse_down_cb, parent);
evas_object_event_callback_add(bar, EVAS_CALLBACK_MOUSE_UP,
dragable_bar_mouse_up_cb, parent);
elm_object_part_content_set(parent, "bar_right", bar);
nd->base_layout = base_layout;
nd->genlist = genlist;
if (config_edc_navigator_get())
config_edc_navigator_size_set(config_edc_navigator_size_get());
return base_layout;
}
@ -1585,3 +1635,28 @@ edc_navigator_tools_visible_set(Eina_Bool visible)
else
elm_object_signal_emit(nd->base_layout, "elm,state,tools,hide", "");
}
void
edc_navigator_show()
{
navi_data *nd = g_nd;
if (!nd) return;
Evas_Object *main_layout = evas_object_smart_parent_get(nd->base_layout);
if (!main_layout) return;
double w = config_edc_navigator_size_get();
edje_object_part_drag_value_set(main_layout, "elm.bar.right", w, 0.0);
}
void
edc_navigator_hide()
{
navi_data *nd = g_nd;
if (!nd) return;
Evas_Object *main_layout = evas_object_smart_parent_get(nd->base_layout);
if (!main_layout) return;
edje_object_part_drag_value_set(main_layout, "elm.bar.right", 1.0, 0.0);
}

View File

@ -59,7 +59,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 14
#define ENVENTOR_CONFIG_VERSION 15
#define EVENT_KEY_MODIFIER_CHECK(NAME, MASK) \
((MASK & ECORE_EVENT_MODIFIER_##NAME) && \

View File

@ -67,6 +67,8 @@ void config_file_browser_size_set(double size);
double config_file_browser_size_get(void);
void config_edc_navigator_set(Eina_Bool enabled);
Eina_Bool config_edc_navigator_get(void);
void config_edc_navigator_size_set(double size);
double config_edc_navigator_size_get(void);
Eina_Bool config_mirror_mode_get(void);
void config_mirror_mode_set(Eina_Bool mirror_mode);
void config_red_alert_set(Eina_Bool enabled);

View File

@ -1,6 +1,10 @@
#define DEFAULT_EDC_NAVIGATOR_SIZE 0.3
Evas_Object *edc_navigator_init(Evas_Object *parent);
void edc_navigator_term(void);
void edc_navigator_group_update(const char *cur_group);
void edc_navigator_deselect(void);
void edc_navigator_tools_set(void);
void edc_navigator_tools_visible_set(Eina_Bool visible);
void edc_navigator_show();
void edc_navigator_hide();