netstar pushed a commit to branch master. http://git.enlightenment.org/apps/ecrire.git/commit/?id=6526fa1a6381641a8fa3fb2e4e011cf668f9773d
commit 6526fa1a6381641a8fa3fb2e4e011cf668f9773d Author: Alastair Poole <nets...@gmail.com> Date: Sat Feb 27 09:57:41 2021 +0000 main: just moving things about --- src/bin/main.c | 243 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 124 insertions(+), 119 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index 4949779..9097b9f 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -8,7 +8,7 @@ #include "ui/ui.h" static Eina_Unicode plain_utf8 = EINA_TRUE; -static Ecrire_Entry *main_ec_ent; +static Ecrire_Entry *inst; static void print_usage(const char *bin); static void editor_font_set(Ecrire_Entry *ent, const char *font, int font_size); @@ -61,8 +61,8 @@ _alert_if_need_saving(void (*done)(void *data), Ecrire_Entry *ent) } static void -_sel_start(void *data, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +_cb_sel_start(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; elm_object_item_disabled_set(ent->copy_item, EINA_FALSE); @@ -70,8 +70,8 @@ _sel_start(void *data, Evas_Object *obj EINA_UNUSED, } static void -_sel_clear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +_cb_sel_clear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; elm_object_item_disabled_set(ent->copy_item, EINA_TRUE); @@ -102,7 +102,7 @@ _update_cur_file(const char *file, Ecrire_Entry *ent) } static void -_cur_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +_cb_cur_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { char buf[50]; int line; @@ -123,7 +123,7 @@ _cur_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) } static void -_cur_changed_manual(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_cur_changed_manual(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; ent->undo_stack_can_merge = EINA_FALSE; @@ -262,7 +262,7 @@ _undo_redo_do(Ecrire_Entry *ent, Elm_Entry_Change_Info *inf, Eina_Bool undo) } static void -_undo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_undo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { /* In undo we care about the current item */ Ecrire_Entry *ent = data; @@ -291,7 +291,7 @@ _undo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) } static void -_redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; Elm_Entry_Change_Info *inf = NULL; @@ -324,7 +324,7 @@ _redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) } static void -_ent_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) +_cb_ent_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) { Ecrire_Entry *ent = data; elm_object_item_disabled_set(ent->save_item, EINA_FALSE); @@ -362,7 +362,7 @@ _load_to_entry(Ecrire_Entry *ent, const char *file) static void _fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info) + void *event_info) { const char *selected = event_info; @@ -371,7 +371,7 @@ _fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, if (ecore_file_app_installed("ecrire")) ecore_exe_run(eina_slstr_printf("ecrire %s", selected), NULL); else - _load_to_entry(main_ec_ent, selected); + _load_to_entry(inst, selected); } void @@ -395,7 +395,7 @@ _fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, if (selected) { - save_do(selected, main_ec_ent); + save_do(selected, inst); } } @@ -407,14 +407,14 @@ _open_do(void *data) } static void -_goto_line(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_goto_line(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; ui_goto_dialog_open(ent->win, ent); } static void -_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; _alert_if_need_saving(_open_do, ent); @@ -434,14 +434,14 @@ editor_save(Ecrire_Entry *ent, void *callback_func) } static void -_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; editor_save(ent, _fs_save_done); } static void -_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; ui_file_open_save_dialog_open(ent->win, _fs_save_done, EINA_TRUE); @@ -459,9 +459,7 @@ _new_do(void *data) Ecrire_Entry *ent = data; if (ecore_file_app_installed("ecrire")) - { - ecore_exe_run("ecrire", NULL); - } + ecore_exe_run("ecrire", NULL); else { elm_object_text_set(ent->entry, ""); @@ -472,7 +470,7 @@ _new_do(void *data) } static void -_new(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_new(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; _alert_if_need_saving(_new_do, ent); @@ -486,35 +484,35 @@ _app_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED } static void -_cut(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_cut(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; elm_entry_selection_cut(ent->entry); } static void -_copy(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_copy(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; elm_entry_selection_copy(ent->entry); } static void -_paste(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_paste(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; elm_entry_selection_paste(ent->entry); } static void -_find(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_find(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; ui_find_dialog_open(ent->win, ent); } static void -_font_settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_font_settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *ent = data; ui_font_dialog_open(elm_object_top_widget_get(ent->win), ent, _ent_cfg->font.name, _ent_cfg->font.size); @@ -522,7 +520,7 @@ _font_settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_U static void -my_win_del(void *data, Evas_Object *obj, void *event_info) +_cb_win_del(void *data, Evas_Object *obj, void *event_info) { Ecrire_Entry *ent = data; (void) data; @@ -532,13 +530,33 @@ my_win_del(void *data, Evas_Object *obj, void *event_info) } static void -my_win_focused(void *data, Evas_Object *obj, void *event_info) +_cb_win_focused(void *data, Evas_Object *obj, void *event_info) { // Ecrire_Entry *ent = data; (void) data; (void) obj; (void) event_info; - elm_object_focus_set(main_ec_ent->entry, EINA_TRUE); + elm_object_focus_set(inst->entry, EINA_TRUE); +} + +static void +_cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event) +{ + Ecrire_Entry *ent = data; + Eina_Bool ctrl, alt, shift; + Evas_Event_Key_Down *ev = event; + + ctrl = evas_key_modifier_is_set(ev->modifiers, "Control"); + alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); + shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); + if ((ctrl) && (!alt) && (!shift)) + { + if (!strcmp(ev->keyname, "a")) elm_entry_select_all(ent->entry); + else if (!strcmp(ev->keyname, "f")) _cb_find(data, obj, event); + else if (!strcmp(ev->keyname, "g")) _cb_goto_line(data, obj, event); + else if (!strcmp(ev->keyname, "n")) _cb_new(data, obj, event); + else if (!strcmp(ev->keyname, "s")) _cb_save(data, obj, event); + } } static void @@ -592,32 +610,52 @@ editor_font_choose(Ecrire_Entry *ent, const char *font, int size) ecrire_cfg_save(); } + static void -_key_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event) -{ - Ecrire_Entry *ent = data; - Eina_Bool ctrl, alt, shift; - Evas_Event_Key_Down *ev = event; +_ecrire_menu_add(Ecrire_Entry *inst) +{ + Evas_Object *menu; + Elm_Object_Item *it; + + menu = elm_win_main_menu_get(inst->win); + it = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL); + elm_menu_item_add(menu, it, "document-new", _("New"), _cb_new, inst); + elm_menu_item_add(menu, it, "document-open", _("Open"), _cb_open, inst); + inst->save_item = + elm_menu_item_add(menu, it, "document-save", _("Save"), _cb_save, inst); + elm_menu_item_add(menu, it, "document-save-as", _("Save As"), _cb_save_as, inst); + elm_menu_item_separator_add(menu, it); + elm_menu_item_add(menu, it, "application-exit", _("Exit"), _app_exit, inst); + + it = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL); + inst->cut_item = + elm_menu_item_add(menu, it, "edit-cut", _("Cut"), _cb_cut, inst); + inst->copy_item = + elm_menu_item_add(menu, it, "edit-copy", _("Copy"), _cb_copy, inst); + inst->paste_item = + elm_menu_item_add(menu, it, "edit-paste", _("Paste"), _cb_paste, inst); + elm_menu_item_separator_add(menu, it); + inst->undo_item = + elm_menu_item_add(menu, it, "edit-undo", _("Undo"), _cb_undo, inst); + inst->redo_item = + elm_menu_item_add(menu, it, "edit-redo", _("Redo"), _cb_redo, inst); + elm_menu_item_separator_add(menu, it); + elm_menu_item_add(menu, it, "edit-find-replace", _("Find"), _cb_find, inst); + elm_menu_item_add(menu, it, "go-jump", _("Go to line.."), _cb_goto_line, inst); + elm_menu_item_separator_add(menu, it); + elm_menu_item_add(menu, it, "preferences-system", _("Settings"), _cb_font_settings, inst); - ctrl = evas_key_modifier_is_set(ev->modifiers, "Control"); - alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); - shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); - if ((ctrl) && (!alt) && (!shift)) - { - if (!strcmp(ev->keyname, "a")) elm_entry_select_all(ent->entry); - else if (!strcmp(ev->keyname, "f")) _find(data, obj, event); - else if (!strcmp(ev->keyname, "g")) _goto_line(data, obj, event); - else if (!strcmp(ev->keyname, "n")) _new(data, obj, event); - else if (!strcmp(ev->keyname, "s")) _save(data, obj, event); - } + /* We don't have a selection when we start, make the items disabled */ + elm_object_item_disabled_set(inst->copy_item, EINA_TRUE); + elm_object_item_disabled_set(inst->cut_item, EINA_TRUE); + elm_object_item_disabled_set(inst->save_item, EINA_TRUE); } EAPI_MAIN int elm_main(int argc, char **argv) { - Evas_Object *pad, *fr, *bx, *cur_info, *menu, *bx2; + Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info, *bx2; Evas_Coord w = 600, h = 600; - Elm_Widget_Item *mit; int c; opterr = 0; @@ -666,115 +704,82 @@ elm_main(int argc, char **argv) ecrire_cfg_init(PACKAGE_NAME); ecrire_cfg_load(); - main_ec_ent = calloc(1, sizeof(*main_ec_ent)); - main_ec_ent->unsaved = 1; - main_ec_ent->filename = NULL; - main_ec_ent->last_saved_stack_ptr = NULL; - main_ec_ent->undo_stack_can_merge = EINA_FALSE; + inst = calloc(1, sizeof(Ecrire_Entry)); + inst->unsaved = 1; + inst->filename = NULL; + inst->last_saved_stack_ptr = NULL; + inst->undo_stack_can_merge = EINA_FALSE; if (optind < argc) { - main_ec_ent->filename = eina_stringshare_add(argv[optind]); + inst->filename = eina_stringshare_add(argv[optind]); } - DBG("Opening filename: '%s'", main_ec_ent->filename); + DBG("Opening filename: '%s'", inst->filename); - main_ec_ent->win = elm_win_util_standard_add("erire", "Ecrire"); - elm_win_autodel_set(main_ec_ent->win, EINA_FALSE); + inst->win = win = elm_win_util_standard_add("erire", "Ecrire"); + elm_win_autodel_set(inst->win, EINA_FALSE); - bx = elm_box_add(main_ec_ent->win); - elm_win_resize_object_add(main_ec_ent->win, bx); + bx = elm_box_add(win); + elm_win_resize_object_add(inst->win, bx); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bx); - main_ec_ent->frame = fr = elm_frame_add(main_ec_ent->win); + inst->frame = fr = elm_frame_add(win); evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(fr); - main_ec_ent->entry = elm_entry_add(main_ec_ent->win); - elm_entry_scrollable_set(main_ec_ent->entry, EINA_TRUE); - elm_entry_line_wrap_set(main_ec_ent->entry, _ent_cfg->wrap_type); - elm_entry_cnp_mode_set(main_ec_ent->entry, ELM_CNP_MODE_PLAINTEXT); - evas_object_size_hint_align_set(main_ec_ent->entry, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(main_ec_ent->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_content_set(fr, main_ec_ent->entry); + inst->entry = entry = elm_entry_add(win); + elm_entry_scrollable_set(entry, EINA_TRUE); + elm_entry_line_wrap_set(entry, _ent_cfg->wrap_type); + elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT); + evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_object_content_set(fr, entry); elm_box_pack_end(bx, fr); - evas_object_show(main_ec_ent->entry); + evas_object_show(inst->entry); - pad = elm_frame_add(main_ec_ent->win); + pad = elm_frame_add(win); elm_object_style_set(pad, "pad_medium"); evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, 1.0); evas_object_size_hint_weight_set(pad, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx, pad); evas_object_show(pad); - bx2 = elm_box_add(main_ec_ent->win); + bx2 = elm_box_add(win); elm_box_horizontal_set(bx2, EINA_TRUE); evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_object_content_set(pad, bx2); evas_object_show(bx2); - cur_info = elm_label_add(main_ec_ent->win); - _cur_changed(cur_info, main_ec_ent->entry, NULL); + cur_info = elm_label_add(win); + _cb_cur_changed(cur_info, entry, NULL); evas_object_size_hint_align_set(cur_info, 1.0, 0.5); evas_object_size_hint_weight_set(cur_info, EVAS_HINT_EXPAND, 0.0); elm_box_pack_end(bx2, cur_info); evas_object_show(cur_info); - evas_object_smart_callback_add(main_ec_ent->entry, "cursor,changed", - _cur_changed, cur_info); - evas_object_smart_callback_add(main_ec_ent->entry, "cursor,changed,manual", - _cur_changed_manual, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->entry, "changed,user", _ent_changed, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->entry, "undo,request", _undo, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->entry, "redo,request", _redo, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->entry, "selection,start", _sel_start, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->entry, "selection,cleared", _sel_clear, main_ec_ent); - evas_object_event_callback_add(main_ec_ent->entry, EVAS_CALLBACK_KEY_DOWN, _key_cb, main_ec_ent); - - menu = elm_win_main_menu_get(main_ec_ent->win); - mit = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL); - elm_menu_item_add(menu, mit, "document-new", _("New"), _new, main_ec_ent); - elm_menu_item_add(menu, mit, "document-open", _("Open"), _open, main_ec_ent); - main_ec_ent->save_item = - elm_menu_item_add(menu, mit, "document-save", _("Save"), _save, main_ec_ent); - elm_menu_item_add(menu, mit, "document-save-as", _("Save As"), _save_as, main_ec_ent); - elm_menu_item_separator_add(menu, mit); - elm_menu_item_add(menu, mit, "application-exit", _("Exit"), _app_exit, main_ec_ent); - - mit = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL); - main_ec_ent->cut_item = - elm_menu_item_add(menu, mit, "edit-cut", _("Cut"), _cut, main_ec_ent); - main_ec_ent->copy_item = - elm_menu_item_add(menu, mit, "edit-copy", _("Copy"), _copy, main_ec_ent); - main_ec_ent->paste_item = - elm_menu_item_add(menu, mit, "edit-paste", _("Paste"), _paste, main_ec_ent); - elm_menu_item_separator_add(menu, mit); - main_ec_ent->undo_item = - elm_menu_item_add(menu, mit, "edit-undo", _("Undo"), _undo, main_ec_ent); - main_ec_ent->redo_item = - elm_menu_item_add(menu, mit, "edit-redo", _("Redo"), _redo, main_ec_ent); - elm_menu_item_separator_add(menu, mit); - elm_menu_item_add(menu, mit, "edit-find-replace", _("Find"), _find, main_ec_ent); - elm_menu_item_add(menu, mit, "go-jump", _("Go to line.."), _goto_line, main_ec_ent); - elm_menu_item_separator_add(menu, mit); - elm_menu_item_add(menu, mit, "preferences-system", _("Settings"), _font_settings, main_ec_ent); + evas_object_smart_callback_add(entry, "cursor,changed", _cb_cur_changed, cur_info); + evas_object_smart_callback_add(entry, "cursor,changed,manual", _cb_cur_changed_manual, inst); + evas_object_smart_callback_add(entry, "changed,user", _cb_ent_changed, inst); + evas_object_smart_callback_add(entry, "undo,request", _cb_undo, inst); + evas_object_smart_callback_add(entry, "redo,request", _cb_redo, inst); + evas_object_smart_callback_add(entry, "selection,start", _cb_sel_start, inst); + evas_object_smart_callback_add(entry, "selection,cleared", _cb_sel_clear, inst); + evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, _cb_key_down, inst); - /* We don't have a selection when we start, make the items disabled */ - elm_object_item_disabled_set(main_ec_ent->copy_item, EINA_TRUE); - elm_object_item_disabled_set(main_ec_ent->cut_item, EINA_TRUE); - elm_object_item_disabled_set(main_ec_ent->save_item, EINA_TRUE); + _ecrire_menu_add(inst); - evas_object_resize(main_ec_ent->win, w, h); + evas_object_smart_callback_add(win, "delete,request", _cb_win_del, inst); + evas_object_smart_callback_add(win, "focus,in", _cb_win_focused, inst); - evas_object_smart_callback_add(main_ec_ent->win, "delete,request", my_win_del, main_ec_ent); - evas_object_smart_callback_add(main_ec_ent->win, "focus,in", my_win_focused, main_ec_ent); - elm_win_center(main_ec_ent->win, EINA_TRUE, EINA_TRUE); - evas_object_show(main_ec_ent->win); + evas_object_resize(win, w, h); + elm_win_center(win, 1, 1); + evas_object_show(win); - _load_to_entry(main_ec_ent, main_ec_ent->filename); + _load_to_entry(inst, inst->filename); elm_run(); --