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
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(md);
menu_about();
}
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(md);
menu_edc_new();
}
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(md);
menu_edc_save();
}
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(md);
menu_edc_load();
}
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;
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
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;
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
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(md);
menu_setting();
}
Evas_Object *
hotkeys_create(Evas_Object *parent, menu_data *md)
hotkeys_create(Evas_Object *parent)
{
Evas_Object *box = elm_box_add(parent);
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_align_set(btn, 0.5, 0);
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);
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_align_set(btn, 0.5, 0);
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);
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_align_set(btn, 0.5, 0);
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);
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_align_set(btn, 0.5, 0);
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);
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);
elm_object_focus_allow_set(btn, EINA_FALSE);
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);
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);
elm_object_focus_allow_set(btn, EINA_FALSE);
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);
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_align_set(btn, 0.5, 0);
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);
elm_box_pack_end(box, btn);

View File

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

View File

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