hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=e592d650535008eb4cb6567a9641dde8e74e8c3d
commit e592d650535008eb4cb6567a9641dde8e74e8c3d Author: ChunEon Park <[email protected]> Date: Wed Jul 30 18:08:57 2014 +0900 code refactoring. split setting.c out from the menu. --- src/bin/Makefile.am | 1 + src/bin/main.c | 2 +- src/bin/menu.c | 447 +++++------------------------------------------- src/bin/setting.c | 401 +++++++++++++++++++++++++++++++++++++++++++ src/include/Makefile.am | 1 + src/include/common.h | 1 + src/include/menu.h | 4 +- src/include/setting.h | 3 + 8 files changed, 450 insertions(+), 410 deletions(-) diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index eebc94d..46ccbe7 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -31,6 +31,7 @@ enventor_SOURCES = \ goto.c \ newfile.c \ auto_comp.c \ + setting.c \ globals.c enventor_LDADD = @ENVENTOR_LIBS@ diff --git a/src/bin/main.c b/src/bin/main.c index 308bc63..e76d8b6 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -215,7 +215,7 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) return ECORE_CALLBACK_DONE; } - if (menu_open_depth() > 0) return ECORE_CALLBACK_PASS_ON; + if (menu_activated_get() > 0) return ECORE_CALLBACK_PASS_ON; //Control Key if (!strcmp("Control_L", event->key)) diff --git a/src/bin/menu.c b/src/bin/menu.c index 948fab2..efcd19c 100644 --- a/src/bin/menu.c +++ b/src/bin/menu.c @@ -5,28 +5,15 @@ struct menu_s { Evas_Object *menu_layout; Evas_Object *newfile_layout; - Evas_Object *setting_layout; Evas_Object *warning_layout; Evas_Object *fileselector_layout; Evas_Object *about_layout; - Evas_Object *img_path_entry; - Evas_Object *snd_path_entry; - Evas_Object *fnt_path_entry; - Evas_Object *data_path_entry; - Evas_Object *slider_font; - Evas_Object *slider_view; - Evas_Object *toggle_tools; - Evas_Object *toggle_stats; - Evas_Object *toggle_linenum; - Evas_Object *toggle_highlight; - Evas_Object *toggle_swallow; - Evas_Object *toggle_indent; - Evas_Object *toggle_autocomp; + Evas_Object *ctxpopup; const char *last_accessed_path; - int open_depth; + int active_request; edit_data *ed; }; @@ -65,13 +52,6 @@ about_close() } static void -setting_close() -{ - menu_data *md = g_md; - elm_object_signal_emit(md->setting_layout, "elm,state,dismiss", ""); -} - -static void warning_close() { menu_data *md = g_md; @@ -94,11 +74,7 @@ newfile_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->newfile_layout); md->newfile_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); - if (!md->menu_layout) return; - elm_object_disabled_set(md->menu_layout, EINA_FALSE); - elm_object_focus_set(md->menu_layout, EINA_TRUE); + menu_deactivate_request(); } static void @@ -109,26 +85,7 @@ fileselector_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->fileselector_layout); md->fileselector_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); - if (!md->menu_layout) return; - elm_object_disabled_set(md->menu_layout, EINA_FALSE); - elm_object_focus_set(md->menu_layout, EINA_TRUE); -} - -static void -setting_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, - const char *emission EINA_UNUSED, - const char *source EINA_UNUSED) -{ - menu_data *md = data; - evas_object_del(md->setting_layout); - md->setting_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); - if (!md->menu_layout) return; - elm_object_disabled_set(md->menu_layout, EINA_FALSE); - elm_object_focus_set(md->menu_layout, EINA_TRUE); + menu_deactivate_request(); } static void @@ -139,11 +96,7 @@ about_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->about_layout); md->about_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); - if (!md->menu_layout) return; - elm_object_disabled_set(md->menu_layout, EINA_FALSE); - elm_object_focus_set(md->menu_layout, EINA_TRUE); + menu_deactivate_request(); } static void @@ -154,8 +107,7 @@ menu_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->menu_layout); md->menu_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); + menu_deactivate_request(); } static void @@ -166,11 +118,7 @@ warning_dismiss_done(void *data, Evas_Object *obj EINA_UNUSED, menu_data *md = data; evas_object_del(md->warning_layout); md->warning_layout = NULL; - md->open_depth--; - if (md->open_depth == 0) edit_focus_set(md->ed); - if (!md->menu_layout) return; - elm_object_disabled_set(md->menu_layout, EINA_FALSE); - elm_object_focus_set(md->menu_layout, EINA_TRUE); + menu_deactivate_request(); } static void @@ -224,7 +172,7 @@ newfile_open(menu_data *md) if (md->menu_layout) elm_object_disabled_set(md->menu_layout, EINA_TRUE); md->newfile_layout = layout; - md->open_depth++; + menu_activate_request(); } static void @@ -267,343 +215,7 @@ warning_open(menu_data *md, Evas_Smart_Cb yes_cb, Evas_Smart_Cb save_cb) elm_object_disabled_set(md->menu_layout, EINA_TRUE); md->warning_layout = layout; - md->open_depth++; -} - -static void -setting_apply_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - menu_data *md = data; - - config_edc_img_path_set(elm_object_text_get(md->img_path_entry)); - config_edc_snd_path_set(elm_object_text_get(md->snd_path_entry)); - config_edc_fnt_path_set(elm_object_text_get(md->fnt_path_entry)); - config_edc_data_path_set(elm_object_text_get(md->data_path_entry)); - config_font_size_set((float) elm_slider_value_get(md->slider_font)); - config_view_scale_set(elm_slider_value_get(md->slider_view)); - config_tools_set(elm_check_state_get(md->toggle_tools)); - config_stats_bar_set(elm_check_state_get(md->toggle_stats)); - config_linenumber_set(elm_check_state_get(md->toggle_linenum)); - config_part_highlight_set(elm_check_state_get(md->toggle_highlight)); - config_dummy_swallow_set(elm_check_state_get(md->toggle_swallow)); - config_auto_indent_set(elm_check_state_get(md->toggle_indent)); - config_auto_complete_set(elm_check_state_get(md->toggle_autocomp)); - - config_apply(); - - setting_close(md); -} - -static void -img_path_entry_update(Evas_Object *entry, Eina_List *edc_img_paths) -{ - elm_entry_entry_set(entry, NULL); - - Eina_List *l; - char *edc_img_path; - EINA_LIST_FOREACH(edc_img_paths, l, edc_img_path) - { - elm_entry_entry_append(entry, edc_img_path); - elm_entry_entry_append(entry, ";"); - } -} - -static void -fnt_path_entry_update(Evas_Object *entry, Eina_List *edc_fnt_paths) -{ - elm_entry_entry_set(entry, NULL); - - Eina_List *l; - char *edc_fnt_path; - EINA_LIST_FOREACH(edc_fnt_paths, l, edc_fnt_path) - { - elm_entry_entry_append(entry, edc_fnt_path); - elm_entry_entry_append(entry, ";"); - } -} - -static void -data_path_entry_update(Evas_Object *entry, Eina_List *edc_data_paths) -{ - elm_entry_entry_set(entry, NULL); - - Eina_List *l; - char *edc_data_path; - EINA_LIST_FOREACH(edc_data_paths, l, edc_data_path) - { - elm_entry_entry_append(entry, edc_data_path); - elm_entry_entry_append(entry, ";"); - } -} - -static void -snd_path_entry_update(Evas_Object *entry, Eina_List *edc_snd_paths) -{ - elm_entry_entry_set(entry, NULL); - - Eina_List *l; - char *edc_snd_path; - EINA_LIST_FOREACH(edc_snd_paths, l, edc_snd_path) - { - elm_entry_entry_append(entry, edc_snd_path); - elm_entry_entry_append(entry, ";"); - } -} - -static void -setting_cancel_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - menu_data *md = data; - setting_close(md); -} - -static void -setting_reset_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - menu_data *md = data; - - img_path_entry_update(md->img_path_entry, - (Eina_List *)config_edc_img_path_list_get()); - snd_path_entry_update(md->snd_path_entry, - (Eina_List *)config_edc_snd_path_list_get()); - fnt_path_entry_update(md->fnt_path_entry, - (Eina_List *)config_edc_fnt_path_list_get()); - data_path_entry_update(md->data_path_entry, - (Eina_List *)config_edc_data_path_list_get()); - - elm_slider_value_set(md->slider_font, (double) config_font_size_get()); - elm_slider_value_set(md->slider_view, (double) config_view_scale_get()); - - elm_check_state_set(md->toggle_tools, config_tools_get()); - elm_check_state_set(md->toggle_stats, config_stats_bar_get()); - elm_check_state_set(md->toggle_linenum, config_linenumber_get()); - elm_check_state_set(md->toggle_highlight, config_part_highlight_get()); - elm_check_state_set(md->toggle_swallow, config_dummy_swallow_get()); - elm_check_state_set(md->toggle_indent, config_auto_indent_get()); - elm_check_state_set(md->toggle_autocomp, config_auto_complete_get()); -} - -static Evas_Object * -entry_create(Evas_Object *parent) -{ - Evas_Object *entry = elm_entry_add(parent); - elm_entry_single_line_set(entry, EINA_TRUE); - elm_entry_scrollable_set(entry, EINA_TRUE); - evas_object_show(entry); - - return entry; -} - -static Evas_Object * -toggle_create(Evas_Object *parent, const char *text, Eina_Bool state) -{ - Evas_Object *toggle = elm_check_add(parent); - elm_object_style_set(toggle, "toggle"); - elm_check_state_set(toggle, state); - evas_object_size_hint_weight_set(toggle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(toggle, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_text_set(toggle, text); - evas_object_show(toggle); - - return toggle; -} - -static void -setting_open(menu_data *md) -{ - search_close(); - goto_close(); - - //Layout - Evas_Object *layout = elm_layout_add(base_win_get()); - elm_layout_file_set(layout, EDJE_PATH, "setting_layout"); - elm_object_signal_callback_add(layout, "elm,state,dismiss,done", "", - setting_dismiss_done, md); - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(layout); - base_win_resize_object_add(layout); - - //Image Path Entry - Evas_Object *img_path_entry = entry_create(layout); - img_path_entry_update(img_path_entry, - (Eina_List *)config_edc_img_path_list_get()); - elm_object_focus_set(img_path_entry, EINA_TRUE); - elm_object_part_content_set(layout, "elm.swallow.img_path_entry", - img_path_entry); - - //Sound Path Entry - Evas_Object *snd_path_entry = entry_create(layout); - snd_path_entry_update(snd_path_entry, - (Eina_List *)config_edc_snd_path_list_get()); - elm_object_part_content_set(layout, "elm.swallow.snd_path_entry", - snd_path_entry); - //Font Path Entry - Evas_Object *fnt_path_entry = entry_create(layout); - fnt_path_entry_update(fnt_path_entry, - (Eina_List *)config_edc_fnt_path_list_get()); - elm_object_part_content_set(layout, "elm.swallow.fnt_path_entry", - fnt_path_entry); - - //Data Path Entry - Evas_Object *data_path_entry = entry_create(layout); - data_path_entry_update(data_path_entry, - (Eina_List *)config_edc_data_path_list_get()); - elm_object_part_content_set(layout, "elm.swallow.data_path_entry", - data_path_entry); - - //Preference - Evas_Object *scroller = elm_scroller_add(layout); - elm_object_part_content_set(layout, "elm.swallow.preference", scroller); - - Evas_Object *box = elm_box_add(scroller); - evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(box); - - elm_object_content_set(scroller, box); - - Evas_Object *label, *box2; - - //Font Size - box2 = elm_box_add(box); - elm_box_horizontal_set(box2, EINA_TRUE); - evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(box2); - - elm_box_pack_end(box, box2); - - //Font Size (Label) - label = elm_label_add(box2); - evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(label, 0, EVAS_HINT_FILL); - - elm_object_text_set(label, "Font Size"); - evas_object_show(label); - - elm_box_pack_end(box2, label); - - //Font Size (Slider) - Evas_Object *slider_font = elm_slider_add(box2); - evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(slider_font, 1, EVAS_HINT_FILL); - elm_slider_span_size_set(slider_font, 400); - elm_slider_indicator_show_set(slider_font, EINA_FALSE); - elm_slider_unit_format_set(slider_font, "%1.1fx"); - elm_slider_min_max_set(slider_font, MIN_FONT_SIZE, MAX_FONT_SIZE); - elm_slider_value_set(slider_font, (double) config_font_size_get()); - evas_object_show(slider_font); - - elm_box_pack_end(box2, slider_font); - - //View Scale - box2 = elm_box_add(box); - elm_box_horizontal_set(box2, EINA_TRUE); - evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(box2); - - elm_box_pack_end(box, box2); - - //View Scale (Label) - label = elm_label_add(box2); - evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(label, 0, EVAS_HINT_FILL); - - elm_object_text_set(label, "View Scale"); - evas_object_show(label); - - elm_box_pack_end(box2, label); - - //View Scale (Slider) - Evas_Object *slider_view = elm_slider_add(box2); - evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(slider_view, 1, EVAS_HINT_FILL); - elm_slider_span_size_set(slider_view, 394); - elm_slider_indicator_show_set(slider_view, EINA_FALSE); - elm_slider_unit_format_set(slider_view, "%1.2fx"); - elm_slider_min_max_set(slider_view, MIN_VIEW_SCALE, MAX_VIEW_SCALE); - elm_slider_value_set(slider_view, (double) config_view_scale_get()); - evas_object_show(slider_view); - - elm_box_pack_end(box2, slider_view); - - //Toggle (Tools) - Evas_Object *toggle_tools = toggle_create(box, "Tools", - config_tools_get()); - elm_box_pack_end(box, toggle_tools); - - //Toggle (Status) - Evas_Object *toggle_stats = toggle_create(box, "Status", - config_stats_bar_get()); - elm_box_pack_end(box, toggle_stats); - - //Toggle (Line Number) - Evas_Object *toggle_linenum = toggle_create(box, "Line Number", - config_linenumber_get()); - elm_box_pack_end(box, toggle_linenum); - - //Toggle (Part Highlighting) - Evas_Object *toggle_highlight = toggle_create(box, "Part Highlighting", - config_part_highlight_get()); - elm_box_pack_end(box, toggle_highlight); - - //Toggle (Dummy Swallow) - Evas_Object *toggle_swallow = toggle_create(box, "Dummy Swallow", - config_dummy_swallow_get()); - elm_box_pack_end(box, toggle_swallow); - - //Toggle (Auto Indentation) - Evas_Object *toggle_indent = toggle_create(box, "Auto Indentation", - config_auto_indent_get()); - elm_box_pack_end(box, toggle_indent); - - //Toggle (Auto Complete) - Evas_Object *toggle_autocomp = toggle_create(box, "Auto Completion", - config_auto_complete_get()); - elm_box_pack_end(box, toggle_autocomp); - - Evas_Object *btn; - - //Apply Button - btn = elm_button_add(layout); - elm_object_text_set(btn, "Apply"); - evas_object_smart_callback_add(btn, "clicked", setting_apply_btn_cb, md); - elm_object_part_content_set(layout, "elm.swallow.apply_btn", btn); - - //Reset Button - btn = elm_button_add(layout); - elm_object_text_set(btn, "Reset"); - evas_object_smart_callback_add(btn, "clicked", setting_reset_btn_cb, md); - elm_object_part_content_set(layout, "elm.swallow.reset_btn", btn); - - //Cancel Button - btn = elm_button_add(layout); - elm_object_text_set(btn, "Cancel"); - evas_object_smart_callback_add(btn, "clicked", setting_cancel_btn_cb, md); - elm_object_part_content_set(layout, "elm.swallow.cancel_btn", btn); - - if (md->menu_layout) - elm_object_disabled_set(md->menu_layout, EINA_TRUE); - - md->setting_layout = layout; - md->img_path_entry = img_path_entry; - md->snd_path_entry = snd_path_entry; - md->fnt_path_entry = fnt_path_entry; - md->data_path_entry = data_path_entry; - md->slider_font = slider_font; - md->slider_view = slider_view; - md->toggle_tools = toggle_tools; - md->toggle_stats = toggle_stats; - md->toggle_linenum = toggle_linenum; - md->toggle_highlight = toggle_highlight; - md->toggle_swallow = toggle_swallow; - md->toggle_indent = toggle_indent; - md->toggle_autocomp = toggle_autocomp; - md->open_depth++; + menu_activate_request(); } static void @@ -664,7 +276,7 @@ about_open(menu_data *md) elm_object_disabled_set(md->menu_layout, EINA_TRUE); md->about_layout = layout; - md->open_depth++; + menu_activate_request(); err: if (strbuf) eina_strbuf_free(strbuf); @@ -685,7 +297,7 @@ setting_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { menu_data *md = data; - setting_open(md); + setting_open(); } static void @@ -942,7 +554,7 @@ edc_file_save(menu_data *md) elm_object_focus_set(fs, EINA_TRUE); md->fileselector_layout = layout; - md->open_depth++; + menu_activate_request(); } static void @@ -976,7 +588,7 @@ edc_file_load(menu_data *md) elm_object_focus_set(fs, EINA_TRUE); md->fileselector_layout = layout; - md->open_depth++; + menu_activate_request(); } static void @@ -1052,7 +664,7 @@ menu_open(menu_data *md) ecore_timer_add(0.15, btn_effect_timer_cb, btn); md->menu_layout = layout; - md->open_depth++; + menu_activate_request(); } static void @@ -1095,7 +707,7 @@ void menu_setting() { menu_data *md = g_md; - setting_open(md); + setting_open(); } void @@ -1130,9 +742,9 @@ menu_toggle() { menu_data *md = g_md; - if (md->setting_layout) + if (setting_is_opened()) { - setting_close(md); + setting_close(); return; } if (md->warning_layout) @@ -1162,7 +774,7 @@ menu_toggle() } //Main Menu - if (md->open_depth) menu_close(md); + if (md->active_request) menu_close(md); else menu_open(md); } @@ -1185,11 +797,11 @@ menu_ctxpopup_register(Evas_Object *ctxpopup) } int -menu_open_depth() +menu_activated_get() { menu_data *md = g_md; if (!md) return 0; - return md->open_depth; + return md->active_request; } void @@ -1204,3 +816,22 @@ menu_exit() else elm_exit(); } + +void +menu_deactivate_request() +{ + menu_data *md = g_md; + md->active_request--; + if (md->active_request == 0) edit_focus_set(md->ed); + if (!md->menu_layout) return; + elm_object_disabled_set(md->menu_layout, EINA_FALSE); + elm_object_focus_set(md->menu_layout, EINA_TRUE); +} + +void +menu_activate_request() +{ + menu_data *md = g_md; + if (md->menu_layout) elm_object_disabled_set(md->menu_layout, EINA_TRUE); + md->active_request++; +} diff --git a/src/bin/setting.c b/src/bin/setting.c new file mode 100644 index 0000000..b22d9c6 --- /dev/null +++ b/src/bin/setting.c @@ -0,0 +1,401 @@ +#include <Elementary.h> +#include "common.h" + +struct setting_s +{ + Evas_Object *setting_layout; + Evas_Object *img_path_entry; + Evas_Object *snd_path_entry; + Evas_Object *fnt_path_entry; + Evas_Object *data_path_entry; + + Evas_Object *slider_font; + Evas_Object *slider_view; + Evas_Object *toggle_tools; + Evas_Object *toggle_stats; + Evas_Object *toggle_linenum; + Evas_Object *toggle_highlight; + Evas_Object *toggle_swallow; + Evas_Object *toggle_indent; + Evas_Object *toggle_autocomp; +}; + +typedef struct setting_s setting_data; + +static setting_data *g_sd = NULL; + +static void +img_path_entry_update(Evas_Object *entry, Eina_List *edc_img_paths) +{ + elm_entry_entry_set(entry, NULL); + + Eina_List *l; + char *edc_img_path; + EINA_LIST_FOREACH(edc_img_paths, l, edc_img_path) + { + elm_entry_entry_append(entry, edc_img_path); + elm_entry_entry_append(entry, ";"); + } +} + +static void +fnt_path_entry_update(Evas_Object *entry, Eina_List *edc_fnt_paths) +{ + elm_entry_entry_set(entry, NULL); + + Eina_List *l; + char *edc_fnt_path; + EINA_LIST_FOREACH(edc_fnt_paths, l, edc_fnt_path) + { + elm_entry_entry_append(entry, edc_fnt_path); + elm_entry_entry_append(entry, ";"); + } +} + +static void +data_path_entry_update(Evas_Object *entry, Eina_List *edc_data_paths) +{ + elm_entry_entry_set(entry, NULL); + + Eina_List *l; + char *edc_data_path; + EINA_LIST_FOREACH(edc_data_paths, l, edc_data_path) + { + elm_entry_entry_append(entry, edc_data_path); + elm_entry_entry_append(entry, ";"); + } +} + +static void +snd_path_entry_update(Evas_Object *entry, Eina_List *edc_snd_paths) +{ + elm_entry_entry_set(entry, NULL); + + Eina_List *l; + char *edc_snd_path; + EINA_LIST_FOREACH(edc_snd_paths, l, edc_snd_path) + { + elm_entry_entry_append(entry, edc_snd_path); + elm_entry_entry_append(entry, ";"); + } +} + +static void +setting_dismiss_done_cb(void *data, Evas_Object *obj EINA_UNUSED, + const char *emission EINA_UNUSED, + const char *source EINA_UNUSED) +{ + setting_data *sd = data; + evas_object_del(sd->setting_layout); + sd->setting_layout = NULL; + menu_deactivate_request(); + + free(sd); + g_sd = NULL; +} + +static void +setting_apply_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + setting_data *sd = data; + + config_edc_img_path_set(elm_object_text_get(sd->img_path_entry)); + config_edc_snd_path_set(elm_object_text_get(sd->snd_path_entry)); + config_edc_fnt_path_set(elm_object_text_get(sd->fnt_path_entry)); + config_edc_data_path_set(elm_object_text_get(sd->data_path_entry)); + config_font_size_set((float) elm_slider_value_get(sd->slider_font)); + config_view_scale_set(elm_slider_value_get(sd->slider_view)); + config_tools_set(elm_check_state_get(sd->toggle_tools)); + config_stats_bar_set(elm_check_state_get(sd->toggle_stats)); + config_linenumber_set(elm_check_state_get(sd->toggle_linenum)); + config_part_highlight_set(elm_check_state_get(sd->toggle_highlight)); + 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_apply(); + + setting_close(sd); +} + +static void +setting_cancel_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + setting_data *sd = data; + setting_close(sd); +} + +static void +setting_reset_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + setting_data *sd = data; + + img_path_entry_update(sd->img_path_entry, + (Eina_List *)config_edc_img_path_list_get()); + snd_path_entry_update(sd->snd_path_entry, + (Eina_List *)config_edc_snd_path_list_get()); + fnt_path_entry_update(sd->fnt_path_entry, + (Eina_List *)config_edc_fnt_path_list_get()); + data_path_entry_update(sd->data_path_entry, + (Eina_List *)config_edc_data_path_list_get()); + + elm_slider_value_set(sd->slider_font, (double) config_font_size_get()); + elm_slider_value_set(sd->slider_view, (double) config_view_scale_get()); + + elm_check_state_set(sd->toggle_tools, config_tools_get()); + elm_check_state_set(sd->toggle_stats, config_stats_bar_get()); + elm_check_state_set(sd->toggle_linenum, config_linenumber_get()); + elm_check_state_set(sd->toggle_highlight, config_part_highlight_get()); + elm_check_state_set(sd->toggle_swallow, config_dummy_swallow_get()); + elm_check_state_set(sd->toggle_indent, config_auto_indent_get()); + elm_check_state_set(sd->toggle_autocomp, config_auto_complete_get()); +} + +static Evas_Object * +entry_create(Evas_Object *parent) +{ + Evas_Object *entry = elm_entry_add(parent); + elm_entry_single_line_set(entry, EINA_TRUE); + elm_entry_scrollable_set(entry, EINA_TRUE); + evas_object_show(entry); + + return entry; +} + +static Evas_Object * +toggle_create(Evas_Object *parent, const char *text, Eina_Bool state) +{ + Evas_Object *toggle = elm_check_add(parent); + elm_object_style_set(toggle, "toggle"); + elm_check_state_set(toggle, state); + evas_object_size_hint_weight_set(toggle, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(toggle, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(toggle, text); + evas_object_show(toggle); + + return toggle; +} + +void +setting_open() +{ + setting_data *sd = g_sd; + if (sd) return; + + sd = calloc(1, sizeof(setting_data)); + if (!sd) + { + EINA_LOG_ERR("Failed to allocate Memory!"); + return; + } + g_sd = sd; + + search_close(); + goto_close(); + + //Layout + Evas_Object *layout = elm_layout_add(base_win_get()); + elm_layout_file_set(layout, EDJE_PATH, "setting_layout"); + elm_object_signal_callback_add(layout, "elm,state,dismiss,done", "", + setting_dismiss_done_cb, sd); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(layout); + base_win_resize_object_add(layout); + + //Image Path Entry + Evas_Object *img_path_entry = entry_create(layout); + img_path_entry_update(img_path_entry, + (Eina_List *)config_edc_img_path_list_get()); + elm_object_focus_set(img_path_entry, EINA_TRUE); + elm_object_part_content_set(layout, "elm.swallow.img_path_entry", + img_path_entry); + + //Sound Path Entry + Evas_Object *snd_path_entry = entry_create(layout); + snd_path_entry_update(snd_path_entry, + (Eina_List *)config_edc_snd_path_list_get()); + elm_object_part_content_set(layout, "elm.swallow.snd_path_entry", + snd_path_entry); + //Font Path Entry + Evas_Object *fnt_path_entry = entry_create(layout); + fnt_path_entry_update(fnt_path_entry, + (Eina_List *)config_edc_fnt_path_list_get()); + elm_object_part_content_set(layout, "elm.swallow.fnt_path_entry", + fnt_path_entry); + + //Data Path Entry + Evas_Object *data_path_entry = entry_create(layout); + data_path_entry_update(data_path_entry, + (Eina_List *)config_edc_data_path_list_get()); + elm_object_part_content_set(layout, "elm.swallow.data_path_entry", + data_path_entry); + + //Preference + Evas_Object *scroller = elm_scroller_add(layout); + elm_object_part_content_set(layout, "elm.swallow.preference", scroller); + + Evas_Object *box = elm_box_add(scroller); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(box); + + elm_object_content_set(scroller, box); + + Evas_Object *label, *box2; + + //Font Size + box2 = elm_box_add(box); + elm_box_horizontal_set(box2, EINA_TRUE); + evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(box2); + + elm_box_pack_end(box, box2); + + //Font Size (Label) + label = elm_label_add(box2); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(label, 0, EVAS_HINT_FILL); + + elm_object_text_set(label, "Font Size"); + evas_object_show(label); + + elm_box_pack_end(box2, label); + + //Font Size (Slider) + Evas_Object *slider_font = elm_slider_add(box2); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(slider_font, 1, EVAS_HINT_FILL); + elm_slider_span_size_set(slider_font, 400); + elm_slider_indicator_show_set(slider_font, EINA_FALSE); + elm_slider_unit_format_set(slider_font, "%1.1fx"); + elm_slider_min_max_set(slider_font, MIN_FONT_SIZE, MAX_FONT_SIZE); + elm_slider_value_set(slider_font, (double) config_font_size_get()); + evas_object_show(slider_font); + + elm_box_pack_end(box2, slider_font); + + //View Scale + box2 = elm_box_add(box); + elm_box_horizontal_set(box2, EINA_TRUE); + evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(box2); + + elm_box_pack_end(box, box2); + + //View Scale (Label) + label = elm_label_add(box2); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(label, 0, EVAS_HINT_FILL); + + elm_object_text_set(label, "View Scale"); + evas_object_show(label); + + elm_box_pack_end(box2, label); + + //View Scale (Slider) + Evas_Object *slider_view = elm_slider_add(box2); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(slider_view, 1, EVAS_HINT_FILL); + elm_slider_span_size_set(slider_view, 394); + elm_slider_indicator_show_set(slider_view, EINA_FALSE); + elm_slider_unit_format_set(slider_view, "%1.2fx"); + elm_slider_min_max_set(slider_view, MIN_VIEW_SCALE, MAX_VIEW_SCALE); + elm_slider_value_set(slider_view, (double) config_view_scale_get()); + evas_object_show(slider_view); + + elm_box_pack_end(box2, slider_view); + + //Toggle (Tools) + Evas_Object *toggle_tools = toggle_create(box, "Tools", + config_tools_get()); + elm_box_pack_end(box, toggle_tools); + + //Toggle (Status) + Evas_Object *toggle_stats = toggle_create(box, "Status", + config_stats_bar_get()); + elm_box_pack_end(box, toggle_stats); + + //Toggle (Line Number) + Evas_Object *toggle_linenum = toggle_create(box, "Line Number", + config_linenumber_get()); + elm_box_pack_end(box, toggle_linenum); + + //Toggle (Part Highlighting) + Evas_Object *toggle_highlight = toggle_create(box, "Part Highlighting", + config_part_highlight_get()); + elm_box_pack_end(box, toggle_highlight); + + //Toggle (Dummy Swallow) + Evas_Object *toggle_swallow = toggle_create(box, "Dummy Swallow", + config_dummy_swallow_get()); + elm_box_pack_end(box, toggle_swallow); + + //Toggle (Auto Indentation) + Evas_Object *toggle_indent = toggle_create(box, "Auto Indentation", + config_auto_indent_get()); + elm_box_pack_end(box, toggle_indent); + + //Toggle (Auto Complete) + Evas_Object *toggle_autocomp = toggle_create(box, "Auto Completion", + config_auto_complete_get()); + elm_box_pack_end(box, toggle_autocomp); + + Evas_Object *btn; + + //Apply Button + btn = elm_button_add(layout); + elm_object_text_set(btn, "Apply"); + evas_object_smart_callback_add(btn, "clicked", setting_apply_btn_cb, sd); + elm_object_part_content_set(layout, "elm.swallow.apply_btn", btn); + + //Reset Button + btn = elm_button_add(layout); + elm_object_text_set(btn, "Reset"); + evas_object_smart_callback_add(btn, "clicked", setting_reset_btn_cb, sd); + elm_object_part_content_set(layout, "elm.swallow.reset_btn", btn); + + //Cancel Button + btn = elm_button_add(layout); + elm_object_text_set(btn, "Cancel"); + evas_object_smart_callback_add(btn, "clicked", setting_cancel_btn_cb, sd); + elm_object_part_content_set(layout, "elm.swallow.cancel_btn", btn); + + sd->setting_layout = layout; + sd->setting_layout = layout; + sd->img_path_entry = img_path_entry; + sd->snd_path_entry = snd_path_entry; + sd->fnt_path_entry = fnt_path_entry; + sd->data_path_entry = data_path_entry; + sd->slider_font = slider_font; + sd->slider_view = slider_view; + sd->toggle_tools = toggle_tools; + sd->toggle_stats = toggle_stats; + sd->toggle_linenum = toggle_linenum; + sd->toggle_highlight = toggle_highlight; + sd->toggle_swallow = toggle_swallow; + sd->toggle_indent = toggle_indent; + sd->toggle_autocomp = toggle_autocomp; + + menu_activate_request(); +} + +void +setting_close() +{ + setting_data *sd = g_sd; + if (!sd) return; + elm_object_signal_emit(sd->setting_layout, "elm,state,dismiss", ""); +} + +Eina_Bool +setting_is_opened() +{ + setting_data *sd = g_sd; + if (!sd) return EINA_FALSE; + return EINA_TRUE; +} diff --git a/src/include/Makefile.am b/src/include/Makefile.am index 167f52f..e5098e2 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am @@ -23,4 +23,5 @@ EXTRA_DIST = common.h \ auto_comp.h \ auto_comp_code.h \ goto.h \ + setting.h \ search.h diff --git a/src/include/common.h b/src/include/common.h index 76443d3..5a4b452 100644 --- a/src/include/common.h +++ b/src/include/common.h @@ -30,5 +30,6 @@ typedef struct indent_s indent_data; #include "goto.h" #include "newfile.h" #include "auto_comp.h" +#include "setting.h" #endif diff --git a/src/include/menu.h b/src/include/menu.h index 692dca5..d157b98 100644 --- a/src/include/menu.h +++ b/src/include/menu.h @@ -9,4 +9,6 @@ void menu_edc_load(); void menu_exit(); void menu_about(); void menu_setting(); -int menu_open_depth(); +int menu_activated_get(); +void menu_activate_request(); +void menu_deactivate_request(); diff --git a/src/include/setting.h b/src/include/setting.h new file mode 100644 index 0000000..39a1557 --- /dev/null +++ b/src/include/setting.h @@ -0,0 +1,3 @@ +void setting_open(); +void setting_close(); +Eina_Bool setting_is_opened(); --
