file_browser: Add dragable bar for file_browser

Summary: file_browser can be resized.

Test Plan:
1. Run enventor
2-1. Drag the bar between file_browser and live view
2-2. Toggle file_browser using key F9
3. Check file_browser size is saved after restart envertor

Reviewers: Jaehyun_Cho, Hermet

Differential Revision: https://phab.enlightenment.org/D4431
This commit is contained in:
YeongJong Lee 2016-11-29 12:51:29 +09:00 committed by Hermet Park
parent d796f89805
commit c13134d609
7 changed files with 291 additions and 5 deletions

View File

@ -12,6 +12,8 @@ images {
image: "navi_group.png" COMP;
image: "bg_demo.png" COMP;
image: "help_bg.png" COMP;
image: "downlight_glow_left.png" COMP;
image: "downlight_glow_right.png" COMP;
}
group { "fileselector_layout";
@ -2396,13 +2398,16 @@ group { "main_layout";
to_y: "elm.swallow.file_tab";
}
align: 1 0;
min: 200 0;
fixed: 1 0;
visible: 0;
}
desc { "visible";
inherit: "default";
align: 0 0;
rel2 {
relative: 1.0 0.0;
to_x: "elm.bar.left";
to_y: "elm.swallow.file_tab";
}
visible: 1;
}
}
@ -2435,6 +2440,132 @@ group { "main_layout";
visible: 1;
}
}
spacer { "whole_left";
desc { "default";
rel2.relative: 0.0 1.0;
rel2.to: "elm.swallow.edc_navigator";
}
}
spacer { "elm.bar.left";
dragable { confine: "whole_left";
x: 1 1 1;
y: 0 0 0;
}
desc { "default";
max: 0 99999;
min: 0 14;
fixed: 1 1;
rel1.relative: 0.0 0.5;
rel2.relative: 1.0 0.5;
}
}
spacer { "elm.bar.event_left";
desc { "default";
rel1.to_x: "elm.bar.left";
rel2.to_x: "elm.bar.left";
rel2.to_y: "elm.swallow.file_tab";
rel2.relative: 1.0 0.0;
}
}
swallow { "bar_left";
dragable.events: "elm.bar.left";
desc { "default";
min: 10 0;
max: 99999 99999;
fixed: 1 0;
rel1.to_x: "elm.bar.event_left";
rel1.relative: 0.0 0.25;
rel2.to: "elm.bar.event_left";
rel2.relative: 1.0 0.75;
color: 0 0 0 0;
}
}
rect { "bar_left1";
repeat_events: 1;
desc { "default";
fixed: 1 1;
rel1.to: "bar_left";
rel2.to: "bar_left";
rel2.relative: 0.5 1.0;
color: 0 0 0 0;
}
}
rect { "bar_left2";
repeat_events: 1;
desc { "default";
fixed: 1 1;
rel1.to: "bar_left";
rel1.relative: 0.5 0.0;
rel2.to: "bar_left";
color: 0 0 0 0;
}
}
image { "glow1a_left";
nomouse;
desc { "default";
image.normal: "downlight_glow_left.png";
image.border: 0 3 0 0;
max: 32 99999;
rel2.to_x: "elm.bar.left";
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_left";
nomouse;
desc { "default";
image.normal: "downlight_glow_right.png";
max: 4 99999;
rel1.to_x: "elm.bar.left";
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_left";
nomouse;
desc { "default";
image.normal: "downlight_glow_left.png";
max: 4 99999;
rel2.to_x: "elm.bar.left";
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_left";
nomouse;
desc { "default";
image.normal: "downlight_glow_right.png";
image.border: 0 3 0 0;
max: 32 99999;
rel1.to_x: "elm.bar.left";
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";
@ -2448,6 +2579,10 @@ group { "main_layout";
action: STATE_SET "default";
target: "elm.swallow.file_browser";
transition: DECELERATE 0.25;
after: "file_browser_hide_done";
}
program { "file_browser_hide_done";
action: SIGNAL_EMIT "elm,state,file_browser_hide,done" "";
}
program { "edc_navigator_show";
signal: "elm,state,edc_navigator,show";
@ -2496,6 +2631,34 @@ group { "main_layout";
target: "error_alert";
transition: DECELERATE 1;
}
program { "left_bar_mouse_in1";
signal: "mouse,in"; source: "bar_left1";
action: STATE_SET "active";
transition: BOUNCE 0.4 0.5 4;
target: "glow1a_left";
target: "glow1b_left";
}
program { "left_bar_mouse_out1";
signal: "mouse,out"; source: "bar_left1";
action: STATE_SET "default";
transition: DECELERATE 0.5;
target: "glow1a_left";
target: "glow1b_left";
}
program { "left_bar_mouse_in2";
signal: "mouse,in"; source: "bar_left2";
action: STATE_SET "active";
transition: BOUNCE 0.4 0.5 4;
target: "glow2a_left";
target: "glow2b_left";
}
program { "left_bar_mouse_out2";
signal: "mouse,out"; source: "bar_left2";
action: STATE_SET "default";
transition: DECELERATE 0.5;
target: "glow2a_left";
target: "glow2b_left";
}
}
}

View File

@ -105,6 +105,18 @@ base_file_tab_toggle(Eina_Bool toggle)
}
}
static void
file_browser_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,file_browser_hide,done", "",
file_browser_hide_done);
file_browser_hide();
}
void
base_file_browser_toggle(Eina_Bool toggle)
{
@ -114,9 +126,17 @@ base_file_browser_toggle(Eina_Bool toggle)
if (toggle) config_file_browser_set(!config_file_browser_get());
if (config_file_browser_get())
elm_object_signal_emit(bd->layout, "elm,state,file_browser,show", "");
{
elm_object_signal_emit(bd->layout, "elm,state,file_browser,show", "");
file_browser_show();
}
else
elm_object_signal_emit(bd->layout, "elm,state,file_browser,hide", "");
{
elm_object_signal_callback_add(bd->layout,
"elm,state,file_browser_hide,done", "",
file_browser_hide_done, bd);
elm_object_signal_emit(bd->layout, "elm,state,file_browser,hide", "");
}
}
void

View File

@ -23,6 +23,7 @@ typedef struct config_s
float font_scale;
double editor_size;
double console_size;
double file_browser_size;
void (*update_cb)(void *data);
void *update_cb_data;
@ -184,6 +185,7 @@ config_load(void)
cd->win_size_h = WIN_DEFAULT_H;
cd->editor_size = DEFAULT_EDITOR_SIZE;
cd->console_size = DEFAULT_CONSOLE_SIZE;
cd->file_browser_size = DEFAULT_FILE_BROWSER_SIZE;
cd->stats_bar = EINA_TRUE;
cd->linenumber = EINA_TRUE;
cd->part_highlight = EINA_TRUE;
@ -287,6 +289,8 @@ eddc_init(void)
editor_size, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "console_size",
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, "view_size_w",
view_size_w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "view_size_h",
@ -1060,6 +1064,24 @@ config_file_browser_get(void)
return cd->file_browser;
}
void
config_file_browser_size_set(double size)
{
config_data *cd = g_cd;
EINA_SAFETY_ON_NULL_RETURN(cd);
cd->file_browser_size = size;
}
double
config_file_browser_size_get(void)
{
config_data *cd = g_cd;
EINA_SAFETY_ON_NULL_RETURN_VAL(cd, 0.0);
return cd->file_browser_size;
}
void
config_edc_navigator_set(Eina_Bool enabled)
{

View File

@ -624,6 +624,44 @@ show_all_check_changed_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.left", &w, NULL);
if (w < 0.01)
{
config_file_browser_set(EINA_FALSE);
tools_file_browser_update(EINA_FALSE);
config_file_browser_size_set(0.0);
}
else
config_file_browser_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.left", &w, NULL);
if (w < 0.01)
{
config_file_browser_set(EINA_TRUE);
tools_file_browser_update(EINA_FALSE);
}
}
/*****************************************************************************/
/* Externally accessible calls */
/*****************************************************************************/
@ -772,11 +810,23 @@ file_browser_init(Evas_Object *parent)
search_itc->func.content_get = gl_search_content_get_cb;
bd->search_itc = search_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_left", bar);
bd->base_layout = base_layout;
bd->search_entry = search_entry;
bd->genlist = genlist;
bd->show_all_check = show_all_check;
if (config_file_browser_get())
config_file_browser_size_set(config_file_browser_size_get());
elm_object_disabled_set(base_layout, EINA_TRUE);
return base_layout;
@ -923,3 +973,28 @@ file_browser_selected_file_main_set(void)
config_input_path_set(file->path);
elm_genlist_realized_items_update(bd->genlist);
}
void
file_browser_show()
{
brows_data *bd = g_bd;
if (!bd) return;
Evas_Object *main_layout = evas_object_smart_parent_get(bd->base_layout);
if (!main_layout) return;
double w = config_file_browser_size_get();
edje_object_part_drag_value_set(main_layout, "elm.bar.left", w, 0.0);
}
void
file_browser_hide()
{
brows_data *bd = g_bd;
if (!bd) return;
Evas_Object *main_layout = evas_object_smart_parent_get(bd->base_layout);
if (!main_layout) return;
edje_object_part_drag_value_set(main_layout, "elm.bar.left", 0.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 13
#define ENVENTOR_CONFIG_VERSION 14
#define EVENT_KEY_MODIFIER_CHECK(NAME, MASK) \
((MASK & ECORE_EVENT_MODIFIER_##NAME) && \

View File

@ -63,6 +63,8 @@ void config_smart_undo_redo_set(Eina_Bool smart_undo_redo);
Eina_Bool config_smart_undo_redo_get(void);
void config_file_browser_set(Eina_Bool enabled);
Eina_Bool config_file_browser_get(void);
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);
Eina_Bool config_mirror_mode_get(void);

View File

@ -1,3 +1,5 @@
#define DEFAULT_FILE_BROWSER_SIZE 0.3
Evas_Object *file_browser_init(Evas_Object *parent);
void file_browser_term(void);
void file_browser_workspace_set(const char *workspace_dir);
@ -7,3 +9,5 @@ void file_browser_refresh(void);
void file_browser_selected_file_main_set(void);
void file_brwser_refresh(void);
void file_browser_main_file_unset(void);
void file_browser_show();
void file_browser_hide();