setting: Add size configuration of Live View
Summary: Add size configuration of Live View @feature Reviewers: Hermet Differential Revision: https://phab.enlightenment.org/D1667
This commit is contained in:
parent
8ebec28586
commit
a4227ef9a4
|
@ -11,6 +11,7 @@ images {
|
|||
image: "live_rel2_dragable.png" COMP;
|
||||
image: "live_bg_glow_in.png" COMP;
|
||||
image: "bevel_out.png" COMP;
|
||||
image: "pm_fill.png" COMP;
|
||||
}
|
||||
|
||||
styles {
|
||||
|
@ -1447,6 +1448,28 @@ group { name: "live_edit_layout";
|
|||
}
|
||||
}
|
||||
|
||||
group { name: "viewer_layout_bg";
|
||||
parts {
|
||||
part { name: "bg";
|
||||
type: IMAGE;
|
||||
description { state: "default" 0.0;
|
||||
rel1.to: "elm.swallow.content";
|
||||
rel2.to: "elm.swallow.content";
|
||||
image.normal: "pm_fill.png";
|
||||
fill {
|
||||
size.relative: 0 0;
|
||||
size.offset: 64 64;
|
||||
}
|
||||
}
|
||||
}
|
||||
part { name: "elm.swallow.content";
|
||||
type: SWALLOW;
|
||||
description { state: "default" 0.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group { name: "viewer_layout";
|
||||
parts {
|
||||
part { name: "prev_clipper";
|
||||
|
|
|
@ -886,7 +886,6 @@ group { name: "elm/ctxpopup/bg/enventor";
|
|||
group { name: "elm/panes/vertical/enventor";
|
||||
images.image: "downlight_glow_left.png" COMP;
|
||||
images.image: "downlight_glow_right.png" COMP;
|
||||
images.image: "pm_fill.png" COMP;
|
||||
parts {
|
||||
part { name: "whole"; type: SPACER;
|
||||
description { state: "default" 0.0;
|
||||
|
@ -910,15 +909,11 @@ group { name: "elm/panes/vertical/enventor";
|
|||
max: 0 0;
|
||||
}
|
||||
}
|
||||
part { name: "left_bg"; type: IMAGE;
|
||||
part { name: "left_bg"; type: RECT;
|
||||
description { state: "default" 0.0;
|
||||
rel1.to: "elm.swallow.left";
|
||||
rel2.to: "elm.swallow.left";
|
||||
image.normal: "pm_fill.png";
|
||||
fill {
|
||||
size.relative: 0 0;
|
||||
size.offset: 64 64;
|
||||
}
|
||||
color: 0 0 0 175;
|
||||
}
|
||||
}
|
||||
part { name: "right_bg"; type: RECT;
|
||||
|
|
|
@ -32,6 +32,7 @@ typedef struct config_s
|
|||
Eina_Bool tools;
|
||||
Eina_Bool auto_complete;
|
||||
Eina_Bool live_edit;
|
||||
Eina_Bool view_size_configurable;
|
||||
} config_data;
|
||||
|
||||
static config_data *g_cd = NULL;
|
||||
|
@ -149,6 +150,7 @@ config_load(void)
|
|||
cd->tools = EINA_TRUE;
|
||||
cd->auto_complete = EINA_TRUE;
|
||||
cd->live_edit = EINA_FALSE;
|
||||
cd->view_size_configurable = EINA_FALSE;
|
||||
}
|
||||
|
||||
g_cd = cd;
|
||||
|
@ -692,6 +694,20 @@ config_view_size_get(Evas_Coord *w, Evas_Coord *h)
|
|||
if (h) *h = cd->view_size.h;
|
||||
}
|
||||
|
||||
void
|
||||
config_view_size_configurable_set(Eina_Bool configurable)
|
||||
{
|
||||
config_data *cd = g_cd;
|
||||
cd->view_size_configurable = configurable;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
config_view_size_configurable_get(void)
|
||||
{
|
||||
config_data *cd = g_cd;
|
||||
return cd->view_size_configurable;
|
||||
}
|
||||
|
||||
double
|
||||
config_console_size_get(void)
|
||||
{
|
||||
|
|
|
@ -136,6 +136,16 @@ config_update_cb(void *data)
|
|||
enventor_object_part_highlight_set(enventor, config_part_highlight_get());
|
||||
enventor_object_live_view_scale_set(enventor, config_view_scale_get());
|
||||
|
||||
Evas_Coord w, h;
|
||||
if (config_view_size_configurable_get())
|
||||
config_view_size_get(&w, &h);
|
||||
else
|
||||
{
|
||||
w = 0;
|
||||
h = 0;
|
||||
}
|
||||
enventor_object_live_view_size_set(enventor, w, h);
|
||||
|
||||
base_tools_toggle(EINA_FALSE);
|
||||
base_statusbar_toggle(EINA_FALSE);
|
||||
|
||||
|
|
|
@ -18,6 +18,10 @@ struct setting_s
|
|||
Evas_Object *toggle_swallow;
|
||||
Evas_Object *toggle_indent;
|
||||
Evas_Object *toggle_autocomp;
|
||||
|
||||
Evas_Object *view_size_w_entry;
|
||||
Evas_Object *view_size_h_entry;
|
||||
Evas_Object *toggle_view_size;
|
||||
};
|
||||
|
||||
typedef struct setting_s setting_data;
|
||||
|
@ -113,6 +117,11 @@ setting_apply_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
|
|||
config_dummy_swallow_set(elm_check_state_get(sd->toggle_swallow));
|
||||
config_auto_indent_set(elm_check_state_get(sd->toggle_indent));
|
||||
config_auto_complete_set(elm_check_state_get(sd->toggle_autocomp));
|
||||
config_view_size_configurable_set(elm_check_state_get(sd->toggle_view_size));
|
||||
|
||||
Evas_Coord w = (Evas_Coord)atoi(elm_entry_entry_get(sd->view_size_w_entry));
|
||||
Evas_Coord h = (Evas_Coord)atoi(elm_entry_entry_get(sd->view_size_h_entry));
|
||||
config_view_size_set(w, h);
|
||||
|
||||
config_apply();
|
||||
|
||||
|
@ -178,9 +187,22 @@ toggle_create(Evas_Object *parent, const char *text, Eina_Bool state)
|
|||
return toggle;
|
||||
}
|
||||
|
||||
static void
|
||||
toggle_view_size_changed_cb(void *data, Evas_Object *obj,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
setting_data *sd = data;
|
||||
Eina_Bool toggle_on = elm_check_state_get(obj);
|
||||
|
||||
elm_object_disabled_set(sd->view_size_w_entry, !toggle_on);
|
||||
elm_object_disabled_set(sd->view_size_h_entry, !toggle_on);
|
||||
}
|
||||
|
||||
void
|
||||
setting_open(void)
|
||||
{
|
||||
static Elm_Entry_Filter_Accept_Set digits_filter_data;
|
||||
static Elm_Entry_Filter_Limit_Size limit_filter_data;
|
||||
setting_data *sd = g_sd;
|
||||
if (sd) return;
|
||||
|
||||
|
@ -352,6 +374,83 @@ setting_open(void)
|
|||
config_auto_indent_get());
|
||||
elm_box_pack_end(box2, toggle_indent);
|
||||
|
||||
|
||||
//View Size
|
||||
box3 = elm_box_add(box2);
|
||||
elm_box_horizontal_set(box3, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(box3, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(box3, EVAS_HINT_FILL, 0);
|
||||
evas_object_show(box3);
|
||||
|
||||
elm_box_pack_end(box2, box3);
|
||||
|
||||
//Entry (Live View Size)
|
||||
Evas_Object *view_size_guide = entry_create(box3);
|
||||
elm_object_text_set(view_size_guide, "Live View Size");
|
||||
elm_entry_scrollable_set(view_size_guide, EINA_FALSE);
|
||||
elm_entry_editable_set(view_size_guide, EINA_FALSE);
|
||||
elm_box_pack_end(box3, view_size_guide);
|
||||
|
||||
Evas_Coord w, h;
|
||||
char w_str[5], h_str[5];
|
||||
config_view_size_get(&w, &h);
|
||||
snprintf(w_str, sizeof(w_str), "%d", w);
|
||||
snprintf(h_str, sizeof(h_str), "%d", h);
|
||||
|
||||
//Entry (View Width)
|
||||
Evas_Object *view_size_w_entry = entry_create(box3);
|
||||
evas_object_size_hint_weight_set(view_size_w_entry, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(view_size_w_entry, EVAS_HINT_FILL, 0);
|
||||
|
||||
digits_filter_data.accepted = "0123456789";
|
||||
digits_filter_data.rejected = NULL;
|
||||
elm_entry_markup_filter_append(view_size_w_entry,
|
||||
elm_entry_filter_accept_set,
|
||||
&digits_filter_data);
|
||||
limit_filter_data.max_char_count = 4;
|
||||
limit_filter_data.max_byte_count = 0;
|
||||
elm_entry_markup_filter_append(view_size_w_entry,
|
||||
elm_entry_filter_limit_size,
|
||||
&limit_filter_data);
|
||||
|
||||
elm_object_text_set(view_size_w_entry, w_str);
|
||||
elm_object_disabled_set(view_size_w_entry,
|
||||
!config_view_size_configurable_get());
|
||||
elm_box_pack_end(box3, view_size_w_entry);
|
||||
|
||||
//Entry (X)
|
||||
view_size_guide = entry_create(box3);
|
||||
elm_object_text_set(view_size_guide, "X");
|
||||
elm_entry_scrollable_set(view_size_guide, EINA_FALSE);
|
||||
elm_entry_editable_set(view_size_guide, EINA_FALSE);
|
||||
elm_box_pack_end(box3, view_size_guide);
|
||||
|
||||
//Entry (View Height)
|
||||
Evas_Object *view_size_h_entry = entry_create(box3);
|
||||
evas_object_size_hint_weight_set(view_size_h_entry, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(view_size_h_entry, EVAS_HINT_FILL, 0);
|
||||
|
||||
elm_entry_markup_filter_append(view_size_h_entry,
|
||||
elm_entry_filter_accept_set,
|
||||
&digits_filter_data);
|
||||
elm_entry_markup_filter_append(view_size_h_entry,
|
||||
elm_entry_filter_limit_size,
|
||||
&limit_filter_data);
|
||||
|
||||
elm_object_text_set(view_size_h_entry, h_str);
|
||||
elm_object_disabled_set(view_size_h_entry,
|
||||
!config_view_size_configurable_get());
|
||||
elm_box_pack_end(box3, view_size_h_entry);
|
||||
|
||||
//Toggle (View Size)
|
||||
Evas_Object *toggle_view_size;
|
||||
toggle_view_size = toggle_create(box3, NULL,
|
||||
config_view_size_configurable_get());
|
||||
evas_object_smart_callback_add(toggle_view_size, "changed",
|
||||
toggle_view_size_changed_cb, sd);
|
||||
elm_box_pack_end(box3, toggle_view_size);
|
||||
|
||||
|
||||
Evas_Object *btn;
|
||||
|
||||
//Apply Button
|
||||
|
@ -387,6 +486,9 @@ setting_open(void)
|
|||
sd->toggle_swallow = toggle_swallow;
|
||||
sd->toggle_indent = toggle_indent;
|
||||
sd->toggle_autocomp = toggle_autocomp;
|
||||
sd->view_size_w_entry = view_size_w_entry;
|
||||
sd->view_size_h_entry = view_size_h_entry;
|
||||
sd->toggle_view_size = toggle_view_size;
|
||||
|
||||
menu_activate_request();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,8 @@ void config_apply(void);
|
|||
void config_edc_path_set(const char *edc_path);
|
||||
void config_view_size_get(Evas_Coord *w, Evas_Coord *h);
|
||||
void config_view_size_set(Evas_Coord w, Evas_Coord h);
|
||||
Eina_Bool config_view_size_configurable_get(void);
|
||||
void config_view_size_configurable_set(Eina_Bool configurable);
|
||||
Eina_Bool config_part_highlight_get(void);
|
||||
void config_part_highlight_set(Eina_Bool highlight);
|
||||
Eina_Bool config_dummy_swallow_get(void);
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
struct viewer_s
|
||||
{
|
||||
Evas_Object *layout;
|
||||
Evas_Object *base;
|
||||
Evas_Object *scroller;
|
||||
Evas_Object *event_rect;
|
||||
Evas_Object *enventor;
|
||||
|
@ -31,6 +32,9 @@ struct viewer_s
|
|||
void (*del_cb)(void *data);
|
||||
void *data;
|
||||
|
||||
/* view size configured by application */
|
||||
Evas_Coord_Size view_config_size;
|
||||
|
||||
Eina_Bool edj_reload_need : 1;
|
||||
};
|
||||
|
||||
|
@ -39,12 +43,20 @@ struct viewer_s
|
|||
/*****************************************************************************/
|
||||
|
||||
static void
|
||||
view_obj_min_update(Evas_Object *obj)
|
||||
view_obj_min_update(view_data *vd)
|
||||
{
|
||||
Evas_Coord w, h;
|
||||
double scale = edj_mgr_view_scale_get();
|
||||
edje_object_size_min_calc(obj, &w, &h);
|
||||
evas_object_size_hint_min_set(obj, ((double)w * scale), ((double)h * scale));
|
||||
|
||||
edje_object_size_min_calc(vd->layout, &w, &h);
|
||||
|
||||
if (vd->view_config_size.w > 0)
|
||||
w = vd->view_config_size.w;
|
||||
|
||||
if (vd->view_config_size.h > 0)
|
||||
h = vd->view_config_size.h;
|
||||
|
||||
evas_object_size_hint_min_set(vd->layout, ((double)w * scale), ((double)h * scale));
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -66,7 +78,7 @@ file_set_timer_cb(void *data)
|
|||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
view_obj_min_update(vd->layout);
|
||||
view_obj_min_update(vd);
|
||||
edj_mgr_reload_need_set(EINA_TRUE);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
|
@ -153,7 +165,7 @@ exe_del_event_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
|
|||
return ECORE_CALLBACK_DONE;
|
||||
}
|
||||
|
||||
view_obj_min_update(vd->layout);
|
||||
view_obj_min_update(vd);
|
||||
view_part_highlight_set(vd, vd->part_name);
|
||||
dummy_obj_update(vd->layout);
|
||||
#if 0
|
||||
|
@ -208,14 +220,26 @@ layout_resize_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|||
{
|
||||
static Enventor_Live_View_Size size;
|
||||
view_data *vd = data;
|
||||
evas_object_geometry_get(obj, NULL, NULL, &size.w, &size.h);
|
||||
view_size_get(vd, &size.w, &size.h);
|
||||
evas_object_smart_callback_call(vd->enventor, SIG_LIVE_VIEW_RESIZED, &size);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
base_create(Evas_Object *parent)
|
||||
{
|
||||
Evas_Object *base = elm_layout_add(parent);
|
||||
elm_layout_file_set(base, EDJE_PATH, "viewer_layout_bg");
|
||||
evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
|
||||
EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(base, 0.5, 0.5);
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
view_obj_create(view_data *vd, const char *file_path, const char *group)
|
||||
{
|
||||
Evas *e = evas_object_evas_get(vd->scroller);
|
||||
Evas *e = evas_object_evas_get(vd->base);
|
||||
Evas_Object *layout = edje_edit_object_add(e);
|
||||
if (!edje_object_file_set(layout, file_path, group))
|
||||
{
|
||||
|
@ -233,8 +257,6 @@ view_obj_create(view_data *vd, const char *file_path, const char *group)
|
|||
EVAS_HINT_EXPAND);
|
||||
evas_object_event_callback_add(layout, EVAS_CALLBACK_RESIZE,
|
||||
layout_resize_cb, vd);
|
||||
view_obj_min_update(layout);
|
||||
|
||||
return layout;
|
||||
}
|
||||
|
||||
|
@ -263,11 +285,17 @@ view_obj_idler_cb(void *data)
|
|||
{
|
||||
view_data *vd = data;
|
||||
|
||||
vd->base = base_create(vd->scroller);
|
||||
|
||||
vd->layout = view_obj_create(vd, build_edj_path_get(), vd->group_name);
|
||||
view_obj_min_update(vd);
|
||||
view_scale_set(vd, edj_mgr_view_scale_get());
|
||||
|
||||
event_layer_set(vd);
|
||||
elm_object_content_set(vd->scroller, vd->layout);
|
||||
|
||||
elm_object_part_content_set(vd->base, "elm.swallow.content",
|
||||
vd->layout);
|
||||
elm_object_content_set(vd->scroller, vd->base);
|
||||
|
||||
if (eo_do(vd->enventor, enventor_obj_dummy_swallow_get()))
|
||||
dummy_obj_new(vd->layout);
|
||||
|
@ -320,6 +348,9 @@ view_init(Evas_Object *enventor, const char *group,
|
|||
vd->exe_del_event =
|
||||
ecore_event_handler_add(ECORE_EXE_EVENT_DEL, exe_del_event_cb, vd);
|
||||
|
||||
vd->view_config_size.w = 0;
|
||||
vd->view_config_size.h = 0;
|
||||
|
||||
return vd;
|
||||
}
|
||||
|
||||
|
@ -437,7 +468,7 @@ view_scale_set(view_data *vd, double scale)
|
|||
elm_scroller_region_get(vd->scroller, &sx, &sy, &sw, &sh);
|
||||
|
||||
edje_object_scale_set(vd->layout, scale);
|
||||
view_obj_min_update(vd->layout);
|
||||
view_obj_min_update(vd);
|
||||
|
||||
//adjust scroller position according to the scale change.
|
||||
int minw, minh;
|
||||
|
@ -455,6 +486,34 @@ view_scale_set(view_data *vd, double scale)
|
|||
((Evas_Coord) cy) - (sh / 2), sw, sh);
|
||||
}
|
||||
|
||||
void
|
||||
view_size_set(view_data *vd, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
double scale = edj_mgr_view_scale_get();
|
||||
|
||||
vd->view_config_size.w = w;
|
||||
vd->view_config_size.h = h;
|
||||
|
||||
evas_object_size_hint_min_set(vd->layout, ((double)w * scale),
|
||||
((double)h * scale));
|
||||
evas_object_size_hint_max_set(vd->layout, ((double)w * scale),
|
||||
((double)h * scale));
|
||||
}
|
||||
|
||||
void
|
||||
view_size_get(view_data *vd, Evas_Coord *w, Evas_Coord *h)
|
||||
{
|
||||
if (!w || !h) return;
|
||||
|
||||
evas_object_geometry_get(vd->layout, NULL , NULL, w, h);
|
||||
|
||||
if (vd->view_config_size.w > 0)
|
||||
*w = vd->view_config_size.w;
|
||||
|
||||
if (vd->view_config_size.h > 0)
|
||||
*h = vd->view_config_size.h;
|
||||
}
|
||||
|
||||
Eina_List *
|
||||
view_parts_list_get(view_data *vd)
|
||||
{
|
||||
|
|
|
@ -407,6 +407,29 @@ class Enventor.Object (Elm_Widget, Efl.File) {
|
|||
@in Eina_Bool disabled; /*@ ... */
|
||||
}
|
||||
}
|
||||
live_view_size_set {
|
||||
/*@
|
||||
@brief
|
||||
@warning
|
||||
@see
|
||||
@ingroup Enventor */
|
||||
params {
|
||||
@in Evas_Coord w; /*@ ... */
|
||||
@in Evas_Coord h; /*@ ... */
|
||||
}
|
||||
}
|
||||
live_view_size_get {
|
||||
/*@
|
||||
@brief
|
||||
@warning
|
||||
@see
|
||||
@ingroup Enventor */
|
||||
params {
|
||||
@in Evas_Coord *w; /*@ ... */
|
||||
@in Evas_Coord *h; /*@ ... */
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
implements {
|
||||
class.constructor;
|
||||
|
|
|
@ -163,6 +163,8 @@ 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);
|
||||
void view_scale_set(view_data *vd, double scale);
|
||||
void view_size_get(view_data *vd, Evas_Coord *w, Evas_Coord *h);
|
||||
void view_size_set(view_data *vd, Evas_Coord w, Evas_Coord h);
|
||||
Eina_List *view_parts_list_get(view_data *vd);
|
||||
Eina_List *view_images_list_get(view_data *vd);
|
||||
Eina_List *view_programs_list_get(view_data *vd);
|
||||
|
|
|
@ -310,6 +310,22 @@ _enventor_object_live_view_scale_set(Eo *obj EINA_UNUSED,
|
|||
edj_mgr_view_scale_set(scale);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_enventor_object_live_view_size_set(Eo *obj EINA_UNUSED,
|
||||
Enventor_Object_Data *pd EINA_UNUSED,
|
||||
Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
view_size_set(VIEW_DATA, w, h);
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_enventor_object_live_view_size_get(Eo *obj EINA_UNUSED,
|
||||
Enventor_Object_Data *pd EINA_UNUSED,
|
||||
Evas_Coord *w, Evas_Coord *h)
|
||||
{
|
||||
view_size_get(VIEW_DATA, w, h);
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_enventor_object_live_view_scale_get(Eo *obj EINA_UNUSED,
|
||||
Enventor_Object_Data *pd EINA_UNUSED)
|
||||
|
|
Loading…
Reference in New Issue