hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=3aefa8ff8a0774de2b6cc33f1f1a91bb1488809d
commit 3aefa8ff8a0774de2b6cc33f1f1a91bb1488809d Author: ChunEon Park <[email protected]> Date: Thu Jan 30 12:18:31 2014 +0900 hotkeys - add a trigger button for hotkey gui enable/disable --- data/themes/default/images.edc | 12 ++++++++++++ data/themes/default/images/Makefile.am | 3 ++- data/themes/default/images/hotkeys.png | Bin 0 -> 486 bytes data/themes/default/layout.edc | 17 +++++++++++++++++ data/themes/default/theme_ext.edc | 12 ++++++++++++ src/bin/config_data.c | 16 ++++++++++++++++ src/bin/hotkeys.c | 5 ----- src/bin/main.c | 14 +++++++++++++- src/bin/panes.c | 26 ++++++++++++++++++++++++-- src/include/config_data.h | 2 ++ src/include/panes.h | 2 +- 11 files changed, 99 insertions(+), 10 deletions(-) diff --git a/data/themes/default/images.edc b/data/themes/default/images.edc index 708894e..3690058 100644 --- a/data/themes/default/images.edc +++ b/data/themes/default/images.edc @@ -4,6 +4,18 @@ images { image: "panes_left_arrow.png" COMP; image: "panes_right_arrow.png" COMP; image: "panes_recover_arrow.png" COMP; + image: "hotkeys.png" COMP; +} + +group { name: "hotkeys"; + parts { + part { name: "img"; + type: IMAGE; + description { state: "default" 0.0; + image.normal: "hotkeys.png"; + } + } + } } group { name: "plus_img"; diff --git a/data/themes/default/images/Makefile.am b/data/themes/default/images/Makefile.am index 9c426b9..6186096 100644 --- a/data/themes/default/images/Makefile.am +++ b/data/themes/default/images/Makefile.am @@ -58,4 +58,5 @@ EXTRA_DIST = \ white_bar_vert_glow.png \ panes_left_arrow.png \ panes_right_arrow.png \ - panes_recover_arrow.png + panes_recover_arrow.png \ + hotkeys.png diff --git a/data/themes/default/images/hotkeys.png b/data/themes/default/images/hotkeys.png new file mode 100644 index 0000000..4492f91 Binary files /dev/null and b/data/themes/default/images/hotkeys.png differ diff --git a/data/themes/default/layout.edc b/data/themes/default/layout.edc index ca4f21d..f16803c 100644 --- a/data/themes/default/layout.edc +++ b/data/themes/default/layout.edc @@ -271,6 +271,10 @@ group { name: "main_layout"; fixed: 0 1; align: 0.5 0; } + description { state: "hide" 0.0; + inherit: "default"; + align: 0.5 1; + } } part { name: "elm.swallow.panes"; type: SWALLOW; @@ -320,6 +324,19 @@ group { name: "main_layout"; target: "statusbar_clip"; transition: DECELERATE 0.35; } + program { name: "hotkeys_show"; + signal: "elm,state,hotkeys,show"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.hotkeys"; + transition: DECELERATE 0.35; + } + program { name: "hotkeys_hide"; + signal: "elm,state,hotkeys,hide"; + action: STATE_SET "hide" 0.0; + target: "elm.swallow.hotkeys"; + transition: DECELERATE 0.35; + } + } } diff --git a/data/themes/default/theme_ext.edc b/data/themes/default/theme_ext.edc index 7db34a8..e7eba52 100644 --- a/data/themes/default/theme_ext.edc +++ b/data/themes/default/theme_ext.edc @@ -2142,6 +2142,18 @@ group { name: "elm/panes/vertical/enventor"; rel2.to: "bar"; } } + part { name: "elm.swallow.hotkeys"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: 20 20; + fixed: 1 1; + align: 0.5 0; + rel1.to: "bar"; + rel2.to: "bar"; + rel2.relative: 1 0; + } + } part { name: "elm.swallow.left_arrow"; type: SWALLOW; scale: 1; diff --git a/src/bin/config_data.c b/src/bin/config_data.c index 7826270..dcda302 100644 --- a/src/bin/config_data.c +++ b/src/bin/config_data.c @@ -27,6 +27,7 @@ struct config_s Eina_Bool part_highlight : 1; Eina_Bool dummy_swallow : 1; Eina_Bool auto_indent : 1; + Eina_Bool hotkeys : 1; }; static config_data *g_cd = NULL; @@ -78,6 +79,7 @@ config_init(const char *edc_path, const char *edc_img_path, cd->part_highlight = EINA_TRUE; cd->dummy_swallow = EINA_TRUE; cd->auto_indent = EINA_TRUE; + cd->hotkeys = EINA_TRUE; } void @@ -514,3 +516,17 @@ config_view_size_get(Evas_Coord *w, Evas_Coord *h) if (w) *w = cd->view_size.w; if (h) *h = cd->view_size.h; } + +Eina_Bool +config_hotkeys_get() +{ + config_data *cd = g_cd; + return cd->hotkeys; +} + +void +config_hotkeys_set(Eina_Bool enabled) +{ + config_data *cd = g_cd; + cd->hotkeys = enabled; +} diff --git a/src/bin/hotkeys.c b/src/bin/hotkeys.c index edc5d24..26ab599 100644 --- a/src/bin/hotkeys.c +++ b/src/bin/hotkeys.c @@ -99,23 +99,18 @@ hotkeys_create(Evas_Object *parent, app_data *ad, edit_data *ed) elm_box_pack_end(box, btn); btn = btn_create(box, "F7: ---", NULL, NULL); - elm_object_disabled_set(btn, EINA_TRUE); elm_box_pack_end(box, btn); btn = btn_create(box, "F8: ---", NULL, NULL); - elm_object_disabled_set(btn, EINA_TRUE); elm_box_pack_end(box, btn); btn = btn_create(box, "F9: ---", NULL, NULL); - elm_object_disabled_set(btn, EINA_TRUE); elm_box_pack_end(box, btn); btn = btn_create(box, "F10: ---", NULL, NULL); - elm_object_disabled_set(btn, EINA_TRUE); elm_box_pack_end(box, btn); btn = btn_create(box, "F11: ---", NULL, NULL); - elm_object_disabled_set(btn, EINA_TRUE); elm_box_pack_end(box, btn); btn = btn_create(box, "F12: Setting", f12_cb, NULL); diff --git a/src/bin/main.c b/src/bin/main.c index 71cc54a..81bb2dd 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -74,7 +74,7 @@ base_gui_construct(app_data *ad) evas_object_show(layout); //Panes - Evas_Object *panes = panes_create(layout); + Evas_Object *panes = panes_create(layout, ad); elm_object_part_content_set(layout, "elm.swallow.panes", panes); ad->win = win; @@ -626,6 +626,18 @@ statusbar_toggle(app_data *ad) elm_object_signal_emit(ad->layout, "elm,state,statusbar,hide", ""); } +//This function is used in panes. Maybe layout should be separated from main. +void +hotkey_toggle(app_data *ad) +{ + config_hotkeys_set(!config_hotkeys_get()); + + if (config_hotkeys_get()) + elm_object_signal_emit(ad->layout, "elm,state,hotkeys,show", ""); + else + elm_object_signal_emit(ad->layout, "elm,state,hotkeys,hide", ""); +} + int main(int argc, char **argv) { diff --git a/src/bin/panes.c b/src/bin/panes.c index 45f767f..570cc88 100644 --- a/src/bin/panes.c +++ b/src/bin/panes.c @@ -66,6 +66,13 @@ panes_full_view_cancel(panes_data *pd) } static void +hotkeys_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + app_data *ad = data; + hotkey_toggle(ad); +} + +static void left_clicked_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { const double TRANSIT_TIME = 0.25; @@ -160,7 +167,7 @@ panes_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, } Evas_Object * -panes_create(Evas_Object *parent) +panes_create(Evas_Object *parent, app_data *ad) { Evas_Object *img; char buf[PATH_MAX]; @@ -176,9 +183,24 @@ panes_create(Evas_Object *parent) evas_object_smart_callback_add(panes, "unpress", unpress_cb, NULL); evas_object_event_callback_add(panes, EVAS_CALLBACK_DEL, panes_del_cb, pd); - evas_object_show(panes); + //Hotkey Button + Evas_Object *hotkeys_btn = elm_button_add(panes); + elm_object_focus_allow_set(hotkeys_btn, EINA_FALSE); + evas_object_smart_callback_add(hotkeys_btn, "clicked", hotkeys_clicked_cb, + ad); + evas_object_show(hotkeys_btn); + + //Hotkey Image + img = elm_image_add(hotkeys_btn); + elm_image_file_set(img, EDJE_PATH, "hotkeys"); + evas_object_show(img); + + elm_object_content_set(hotkeys_btn, img); + + elm_object_part_content_set(panes, "elm.swallow.hotkeys", hotkeys_btn); + //Left Button Evas_Object *left_arrow = elm_button_add(panes); elm_object_focus_allow_set(left_arrow, EINA_FALSE); diff --git a/src/include/config_data.h b/src/include/config_data.h index 8a652b2..b0a8d9c 100644 --- a/src/include/config_data.h +++ b/src/include/config_data.h @@ -38,4 +38,6 @@ void config_font_size_set(float font_size); float config_font_size_get(); void config_view_scale_set(double view_scale); double config_view_scale_get(); +Eina_Bool config_hotkeys_get(); +void config_hotkeys_set(Eina_Bool enabled); diff --git a/src/include/panes.h b/src/include/panes.h index 2496abb..bc85a2b 100644 --- a/src/include/panes.h +++ b/src/include/panes.h @@ -1,4 +1,4 @@ -Evas_Object *panes_create(Evas_Object *parent); +Evas_Object *panes_create(Evas_Object *parent, app_data *ad); void panes_full_view_right(Evas_Object *panes); void panes_full_view_left(Evas_Object *panes); --
