rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=0589c60b5af294075251bfc624affadcb9ce255e
commit 0589c60b5af294075251bfc624affadcb9ce255e Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Mon Apr 4 10:48:33 2016 +0300 workspace: implement the rulers visibility Change-Id: I5c8b72d9885b18c1728077b5ba3477d297841e37 --- data/themes/default/widgets/layouts/workspace.edc | 46 ++++++++++++++++++++++- src/bin/common/signals.h | 1 + src/bin/ui/menu.c | 2 +- src/bin/ui/tabs.c | 15 ++++++++ src/bin/ui/workspace/workspace.c | 27 +++++++++++++ src/bin/ui/workspace/workspace.h | 6 +++ 6 files changed, 95 insertions(+), 2 deletions(-) diff --git a/data/themes/default/widgets/layouts/workspace.edc b/data/themes/default/widgets/layouts/workspace.edc index d84e0d2..c7094cd 100644 --- a/data/themes/default/widgets/layouts/workspace.edc +++ b/data/themes/default/widgets/layouts/workspace.edc @@ -105,6 +105,7 @@ group { name: "elm/layout/workspace/scroller"; scale: 1; clip_to: "clipper.ruler_v"; description { state: "default" 0.0; + align: 0.0 0.5; rel1 { relative: 0.0 1.0; to_y: "area.ruler.cros"; @@ -113,6 +114,18 @@ group { name: "elm/layout/workspace/scroller"; to_x: "area.ruler.cros"; } } + description { state: "hidden" 0.0; + align: 0.0 0.5; + max: 0 -1; + rel1 { + relative: 0.0 1.0; + to_y: "area.ruler.cros"; + } + rel2 { + to_x: "area.ruler.cros"; + } + } + } part { name: "clipper.ruler_v"; type: RECT; @@ -144,6 +157,18 @@ group { name: "elm/layout/workspace/scroller"; scale: 1; clip_to: "clipper.ruler_h"; description { state: "default" 0.0; + align: 0.5. 0.0; + rel1 { + relative: 1.0 0.0; + to_x: "area.ruler.cros"; + } + rel2 { + to_y: "area.ruler.cros"; + } + } + description { state: "hidden" 0.0; + align: 0.5. 0.0; + max: -1 0; rel1 { relative: 1.0 0.0; to_x: "area.ruler.cros"; @@ -169,7 +194,8 @@ group { name: "elm/layout/workspace/scroller"; description { state: "default" 0.0; rel1 { relative: 1.0 1.0; - to: "area.ruler.cros"; + to_x: "elm.swallow.ruler_v"; + to_y: "elm.swallow.ruler_h"; } } } @@ -185,6 +211,24 @@ group { name: "elm/layout/workspace/scroller"; } } } + programs { + program { name: "hide_rulers"; + signal: "elm,state,rulers,hide"; + source: "eflete"; + action: STATE_SET "hidden" 0.00; + transition: LINEAR 0.30000 CURRENT; + target: "elm.swallow.ruler_v"; + target: "elm.swallow.ruler_h"; + } + program { name: "show_rulers"; + signal: "elm,state,rulers,show"; + source: "eflete"; + action: STATE_SET "default" 0.00; + transition: LINEAR 0.30000 CURRENT; + target: "elm.swallow.ruler_v"; + target: "elm.swallow.ruler_h"; + } + } } group { name: "elm/layout/workspace/toolbar"; diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h index 9d54a23..496fe07 100644 --- a/src/bin/common/signals.h +++ b/src/bin/common/signals.h @@ -476,6 +476,7 @@ typedef struct { #define SIGNAL_SHORTCUT_FILL "SIGNAL_SHORTCUT_FILL" #define SIGNAL_SHORTCUT_FIT "SIGNAL_SHORTCUT_FIT" #define SIGNAL_SHORTCUT_OBJECT_AREA "SIGNAL_SHORTCUT_OBJECT_AREA" +#define SIGNAL_SHORTCUT_RULERS_VISIBLED "SIGNAL_SHORTCUT_RULERS_VISIBLED" /** * emited when shortcut is pressed. diff --git a/src/bin/ui/menu.c b/src/bin/ui/menu.c index 4832912..c9999b5 100644 --- a/src/bin/ui/menu.c +++ b/src/bin/ui/menu.c @@ -153,7 +153,7 @@ _menu_cb(void *data __UNUSED__, evas_object_smart_callback_call(ap.win, SIGNAL_SHORTCUT_FILL, NULL); break; case MENU_VIEW_RULERS_SHOW: - evas_object_smart_callback_call(tabs_current_workspace_get(), "ruler,toggle", strdup("rulers")); + evas_object_smart_callback_call(ap.win, SIGNAL_SHORTCUT_RULERS_VISIBLED, NULL); break; case MENU_VIEW_RULERS_ABS: evas_object_smart_callback_call(tabs_current_workspace_get(), "ruler,toggle", strdup("abs")); diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c index c8ff9cc..a5dd889 100644 --- a/src/bin/ui/tabs.c +++ b/src/bin/ui/tabs.c @@ -820,6 +820,20 @@ _shortcut_object_area_cb(void *data __UNUSED__, } } +static void +_shortcut_rulers_visibled_cb(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + void *event_info __UNUSED__) +{ + Eina_Bool visible; + + if (tabs.current_workspace) + { + visible = workspace_rulers_visibled_get(tabs.current_workspace); + workspace_rulers_visibled_set(tabs.current_workspace, !visible); + } +} + Evas_Object * tabs_add(void) { @@ -945,6 +959,7 @@ tabs_add(void) evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_FIT, _shortcut_fit_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_FILL, _shortcut_fill_cb, NULL); evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_OBJECT_AREA, _shortcut_object_area_cb, NULL); + evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_RULERS_VISIBLED, _shortcut_rulers_visibled_cb, NULL); return tabs.layout; } diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c index c7c57d5..c2a46ec 100644 --- a/src/bin/ui/workspace/workspace.c +++ b/src/bin/ui/workspace/workspace.c @@ -60,6 +60,7 @@ struct _Scroll_Area { Evas_Object *content; /* for normal mode - groupview, for demo - elm widget */ Ruler ruler_v; Ruler ruler_h; + Eina_Bool rulers_visibled : 1; }; typedef struct _Scroll_Area Scroll_Area; @@ -815,6 +816,8 @@ workspace_add(Evas_Object *parent, Group *group) wd->code.size = -1; wd->group = group; wd->mode = MODE_NORMAL; + wd->normal.rulers_visibled = true; + wd->demo.rulers_visibled = true; wd->toolbar.layout = elm_layout_add(wd->panes); elm_layout_theme_set(wd->toolbar.layout, "layout", "workspace", "toolbar"); @@ -1297,3 +1300,27 @@ workspace_all_parts_showhide_request(Evas_Object *obj) group_navigator_all_parts_showhide_request(wd->group_navi); } + +void +workspace_rulers_visibled_set(Evas_Object *obj, Eina_Bool visible) +{ + Scroll_Area *area; + WS_DATA_GET(obj); + + area = _scroll_area_get(wd); + area->rulers_visibled = visible; + if (visible) + elm_layout_signal_emit(area->layout, "elm,state,rulers,show", "eflete"); + else + elm_layout_signal_emit(area->layout, "elm,state,rulers,hide", "eflete"); +} + +Eina_Bool +workspace_rulers_visibled_get(Evas_Object *obj) +{ + Scroll_Area *area; + WS_DATA_GET(obj); + + area = _scroll_area_get(wd); + return area->rulers_visibled; +} diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h index 2af77ec..d60e956 100644 --- a/src/bin/ui/workspace/workspace.h +++ b/src/bin/ui/workspace/workspace.h @@ -376,4 +376,10 @@ workspace_part_showhide_request(Evas_Object *obj); void workspace_all_parts_showhide_request(Evas_Object *obj); +void +workspace_rulers_visibled_set(Evas_Object *obj, Eina_Bool visible); + +Eina_Bool +workspace_rulers_visibled_get(Evas_Object *obj); + #endif /* WORKSPACE_H */ --