refactoring - got rid of menu instance handling.

count menu as a singleton instance.
since we can not image multiple menus in the enventor.

now code is getting simpler.
This commit is contained in:
ChunEon Park 2014-01-30 01:15:33 +09:00
parent 39fb929aeb
commit 9af9369c79
5 changed files with 78 additions and 67 deletions

View File

@ -3,35 +3,36 @@
static void static void
f1_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f1_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_about();
menu_about(md);
} }
static void static void
f2_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f2_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_edc_new();
menu_edc_new(md);
} }
static void static void
f3_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f3_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_edc_save();
menu_edc_save(md);
} }
static void static void
f4_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f4_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_edc_load();
menu_edc_load(md);
} }
static void static void
f5_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f5_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
/* app_data *ad = data; /* app_data *ad = data;
config_linenumber_set(ad->cd, !config_linenumber_get(ad->cd)); config_linenumber_set(ad->cd, !config_linenumber_get(ad->cd));
@ -39,7 +40,8 @@ f5_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
} }
static void static void
f6_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f6_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
/* app_data *ad = data; /* app_data *ad = data;
config_stats_bar_set(ad->cd, !config_stats_bar_get(ad->cd)); config_stats_bar_set(ad->cd, !config_stats_bar_get(ad->cd));
@ -47,15 +49,15 @@ f6_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
} }
static void static void
f12_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) f12_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_setting();
menu_setting(md);
} }
Evas_Object * Evas_Object *
hotkeys_create(Evas_Object *parent, menu_data *md) hotkeys_create(Evas_Object *parent)
{ {
Evas_Object *box = elm_box_add(parent); Evas_Object *box = elm_box_add(parent);
elm_box_horizontal_set(box, EINA_TRUE); elm_box_horizontal_set(box, EINA_TRUE);
@ -70,7 +72,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
evas_object_smart_callback_add(btn, "clicked", f1_cb, md); evas_object_smart_callback_add(btn, "clicked", f1_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -81,7 +83,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
evas_object_smart_callback_add(btn, "clicked", f2_cb, md); evas_object_smart_callback_add(btn, "clicked", f2_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -92,7 +94,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
evas_object_smart_callback_add(btn, "clicked", f3_cb, md); evas_object_smart_callback_add(btn, "clicked", f3_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -103,7 +105,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
evas_object_smart_callback_add(btn, "clicked", f4_cb, md); evas_object_smart_callback_add(btn, "clicked", f4_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -116,7 +118,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
elm_object_disabled_set(btn, EINA_TRUE); elm_object_disabled_set(btn, EINA_TRUE);
evas_object_smart_callback_add(btn, "clicked", f5_cb, md); evas_object_smart_callback_add(btn, "clicked", f5_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -129,7 +131,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
elm_object_disabled_set(btn, EINA_TRUE); elm_object_disabled_set(btn, EINA_TRUE);
evas_object_smart_callback_add(btn, "clicked", f6_cb, md); evas_object_smart_callback_add(btn, "clicked", f6_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);
@ -195,7 +197,7 @@ hotkeys_create(Evas_Object *parent, menu_data *md)
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(btn, 0.5, 0); evas_object_size_hint_align_set(btn, 0.5, 0);
elm_object_focus_allow_set(btn, EINA_FALSE); elm_object_focus_allow_set(btn, EINA_FALSE);
evas_object_smart_callback_add(btn, "clicked", f12_cb, md); evas_object_smart_callback_add(btn, "clicked", f12_cb, NULL);
evas_object_show(btn); evas_object_show(btn);
elm_box_pack_end(box, btn); elm_box_pack_end(box, btn);

View File

@ -7,7 +7,6 @@ struct app_s
{ {
edit_data *ed; edit_data *ed;
edj_mgr *em; edj_mgr *em;
menu_data *md;
stats_data *sd; stats_data *sd;
config_data *cd; config_data *cd;
@ -41,11 +40,10 @@ edc_changed_cb(void *data, int type EINA_UNUSED, void *event)
} }
static void static void
win_delete_request_cb(void *data, Evas_Object *obj EINA_UNUSED, win_delete_request_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
app_data *ad = data; menu_exit();
menu_exit(ad->md);
} }
static Eina_Bool static Eina_Bool
@ -304,12 +302,12 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
if (!strcmp(event->keyname, "Escape")) if (!strcmp(event->keyname, "Escape"))
{ {
menu_toggle(); menu_toggle();
if (menu_open_depth(ad->md) == 0) if (menu_open_depth() == 0)
edit_focus_set(ad->ed); edit_focus_set(ad->ed);
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
if (menu_open_depth(ad->md) > 0) return ECORE_CALLBACK_PASS_ON; if (menu_open_depth() > 0) return ECORE_CALLBACK_PASS_ON;
//Control Key //Control Key
if (!strcmp("Control_L", event->keyname)) if (!strcmp("Control_L", event->keyname))
@ -320,25 +318,25 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
//README //README
if (!strcmp(event->keyname, "F1")) if (!strcmp(event->keyname, "F1"))
{ {
menu_about(ad->md); menu_about();
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
//New //New
if (!strcmp(event->keyname, "F2")) if (!strcmp(event->keyname, "F2"))
{ {
menu_edc_new(ad->md); menu_edc_new();
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
//Save //Save
if (!strcmp(event->keyname, "F3")) if (!strcmp(event->keyname, "F3"))
{ {
menu_edc_save(ad->md); menu_edc_save();
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
//Load //Load
if (!strcmp(event->keyname, "F4")) if (!strcmp(event->keyname, "F4"))
{ {
menu_edc_load(ad->md); menu_edc_load();
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
//Line Number //Line Number
@ -358,7 +356,7 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
//Setting //Setting
if (!strcmp(event->keyname, "F12")) if (!strcmp(event->keyname, "F12"))
{ {
menu_setting(ad->md); menu_setting();
return ECORE_CALLBACK_DONE; return ECORE_CALLBACK_DONE;
} }
@ -603,9 +601,9 @@ init(app_data *ad, int argc, char **argv)
statusbar_set(ad, ad->cd); statusbar_set(ad, ad->cd);
edc_edit_set(ad, ad->sd, ad->cd); edc_edit_set(ad, ad->sd, ad->cd);
edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd)); edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd));
ad->md = menu_init(ad->win, ad->ed, ad->cd); menu_init(ad->win, ad->ed, ad->cd);
Evas_Object *hotkeys = hotkeys_create(ad->layout, ad->md); Evas_Object *hotkeys = hotkeys_create(ad->layout);
elm_object_part_content_set(ad->layout, "elm.swallow.hotkeys", hotkeys); elm_object_part_content_set(ad->layout, "elm.swallow.hotkeys", hotkeys);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd)); ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));
@ -618,7 +616,7 @@ static void
term(app_data *ad) term(app_data *ad)
{ {
build_term(); build_term();
menu_term(ad->md); menu_term();
edit_term(ad->ed); edit_term(ad->ed);
edj_mgr_term(ad->em); edj_mgr_term(ad->em);
stats_term(ad->sd); stats_term(ad->sd);

View File

@ -30,7 +30,7 @@ struct menu_s
edit_data *ed; edit_data *ed;
}; };
static menu_data *g_md; static menu_data *g_md = NULL;
static void warning_no_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, static void warning_no_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED); void *event_info EINA_UNUSED);
@ -40,32 +40,37 @@ static void edc_reload(menu_data *md, const char *edc_path);
static void edc_file_save(menu_data *md); static void edc_file_save(menu_data *md);
static void static void
fileselector_close(menu_data *md) fileselector_close()
{ {
menu_data *md = g_md;
elm_object_signal_emit(md->fileselector_layout, "elm,state,dismiss", ""); elm_object_signal_emit(md->fileselector_layout, "elm,state,dismiss", "");
} }
static void static void
about_close(menu_data *md) about_close()
{ {
menu_data *md = g_md;
elm_object_signal_emit(md->about_layout, "elm,state,dismiss", ""); elm_object_signal_emit(md->about_layout, "elm,state,dismiss", "");
} }
static void static void
setting_close(menu_data *md) setting_close()
{ {
menu_data *md = g_md;
elm_object_signal_emit(md->setting_layout, "elm,state,dismiss", ""); elm_object_signal_emit(md->setting_layout, "elm,state,dismiss", "");
} }
static void static void
warning_close(menu_data *md) warning_close()
{ {
menu_data *md = g_md;
elm_object_signal_emit(md->warning_layout, "elm,state,dismiss", ""); elm_object_signal_emit(md->warning_layout, "elm,state,dismiss", "");
} }
static void static void
menu_close(menu_data *md) menu_close()
{ {
menu_data *md = g_md;
if (!md->menu_layout) return; if (!md->menu_layout) return;
elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", ""); elm_object_signal_emit(md->menu_layout, "elm,state,dismiss", "");
} }
@ -681,8 +686,9 @@ exit_save_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
} }
void void
menu_exit(menu_data *md) menu_exit()
{ {
menu_data *md = g_md;
if (edit_changed_get(md->ed)) if (edit_changed_get(md->ed))
warning_layout_create(md, exit_yes_btn_cb, exit_save_btn_cb); warning_layout_create(md, exit_yes_btn_cb, exit_save_btn_cb);
else else
@ -693,8 +699,7 @@ static void
exit_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, exit_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_exit();
menu_exit(md);
} }
static Evas_Object * static Evas_Object *
@ -986,20 +991,23 @@ load_save_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
} }
void void
menu_about(menu_data *md) menu_about()
{ {
menu_data *md = g_md;
about_open(md); about_open(md);
} }
void void
menu_setting(menu_data *md) menu_setting()
{ {
menu_data *md = g_md;
setting_open(md); setting_open(md);
} }
Eina_Bool Eina_Bool
menu_edc_new(menu_data *md) menu_edc_new()
{ {
menu_data *md = g_md;
if (edit_changed_get(md->ed)) if (edit_changed_get(md->ed))
{ {
warning_layout_create(md, new_yes_btn_cb, new_save_btn_cb); warning_layout_create(md, new_yes_btn_cb, new_save_btn_cb);
@ -1012,14 +1020,16 @@ menu_edc_new(menu_data *md)
} }
void void
menu_edc_save(menu_data *md) menu_edc_save()
{ {
menu_data *md = g_md;
edc_file_save(md); edc_file_save(md);
} }
void void
menu_edc_load(menu_data *md) menu_edc_load()
{ {
menu_data *md = g_md;
if (edit_changed_get(md->ed)) if (edit_changed_get(md->ed))
warning_layout_create(md, load_yes_btn_cb, load_save_btn_cb); warning_layout_create(md, load_yes_btn_cb, load_save_btn_cb);
else else
@ -1027,11 +1037,10 @@ menu_edc_load(menu_data *md)
} }
static void static void
load_btn_cb(void *data, Evas_Object *obj EINA_UNUSED, load_btn_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
menu_data *md = data; menu_edc_load();
menu_edc_load(md);
} }
static void static void
@ -1096,8 +1105,9 @@ menu_init(Evas_Object *win, edit_data *ed, config_data *cd)
} }
void void
menu_term(menu_data *md) menu_term()
{ {
menu_data *md = g_md;
if (!md) return; if (!md) return;
free(md); free(md);
} }
@ -1165,7 +1175,8 @@ menu_ctxpopup_register(Evas_Object *ctxpopup)
} }
int int
menu_open_depth(menu_data *md) menu_open_depth()
{ {
menu_data *md = g_md;
return md->open_depth; return md->open_depth;
} }

View File

@ -1,2 +1,2 @@
Evas_Object *hotkeys_create(Evas_Object *parent, menu_data *md); Evas_Object *hotkeys_create(Evas_Object *parent);

View File

@ -1,14 +1,14 @@
#define VIEW_DATA edj_mgr_view_get(NULL, NULL) #define VIEW_DATA edj_mgr_view_get(NULL, NULL)
menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd); menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd);
void menu_term(menu_data *md); void menu_term();
void menu_toggle(); void menu_toggle();
void menu_ctxpopup_register(Evas_Object *ctxpopup); void menu_ctxpopup_register(Evas_Object *ctxpopup);
void menu_ctxpopup_unregister(Evas_Object *ctxpopup); void menu_ctxpopup_unregister(Evas_Object *ctxpopup);
Eina_Bool menu_edc_new(menu_data *md); Eina_Bool menu_edc_new();
void menu_edc_save(menu_data *md); void menu_edc_save();
void menu_edc_load(menu_data *md); void menu_edc_load();
void menu_exit(menu_data *md); void menu_exit();
void menu_about(menu_data *md); void menu_about();
void menu_setting(menu_data *md); void menu_setting();
int menu_open_depth(menu_data *md); int menu_open_depth();