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:
parent
c13134d609
commit
d9cbfba323
|
@ -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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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) && \
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue