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