netstar pushed a commit to branch master. http://git.enlightenment.org/apps/ecrire.git/commit/?id=642847fa741e109dc0fe00951ad7a266442a9d78
commit 642847fa741e109dc0fe00951ad7a266442a9d78 Author: Alastair Poole <nets...@gmail.com> Date: Wed Apr 7 11:15:58 2021 +0100 ecrire: one instance, one win... one arm, one leg, one nod of the head...keep borking. --- src/bin/Ecrire.h | 1 + src/bin/main.c | 182 ++++++++++++++++++++++++++----------------------------- 2 files changed, 86 insertions(+), 97 deletions(-) diff --git a/src/bin/Ecrire.h b/src/bin/Ecrire.h index 3205877..5aafe51 100644 --- a/src/bin/Ecrire.h +++ b/src/bin/Ecrire.h @@ -43,6 +43,7 @@ struct _Ecrire_Entry { typedef struct _Ecrire_Entry Ecrire_Entry; +void ecrire_open(const char *filename, const char *font_name, int font_size); void ecrire_font_set_save(Ecrire_Entry *inst, const char *font, int size); void ecrire_entry_font_set(Ecrire_Entry *inst, const char *font, int font_size); void ecrire_save(Ecrire_Entry *inst, void *callback_func); diff --git a/src/bin/main.c b/src/bin/main.c index 692b966..1e2990e 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -19,6 +19,8 @@ _win_del_do(void *data) { Ecrire_Entry *inst = data; evas_object_del(inst->win); + eina_stringshare_del(inst->filename); + free(inst); } static void @@ -382,19 +384,14 @@ _load_to_entry(Ecrire_Entry *inst, const char *file) } static void -_cb_fs_open_done(void *data, Evas_Object *obj EINA_UNUSED, +_cb_fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { - Ecrire_Entry *inst; const char *selected = event_info; if (!selected) return; - inst = data; - if (ecore_file_app_installed("ecrire")) - ecore_exe_run(eina_slstr_printf("ecrire %s", selected), NULL); - else - _load_to_entry(inst, selected); + ecrire_open(selected, _ent_cfg->font.name, _ent_cfg->font.size); } void @@ -432,6 +429,7 @@ static void _open_do(void *data) { Ecrire_Entry *inst = data; + ui_file_open_save_dialog_open(inst->win, EINA_FALSE, _cb_fs_open_done, inst); } @@ -443,10 +441,11 @@ _cb_goto_line(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UN } static void -_cb_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_open(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *inst = data; - _alert_if_need_saving(_open_do, inst); + + _open_do(inst); } void @@ -473,31 +472,13 @@ _cb_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUS } static void -_new_do(void *data) +_cb_new(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ecrire_Entry *inst = data; - - if (ecore_file_app_installed("ecrire")) - ecore_exe_run("ecrire", NULL); - else - { - elm_object_text_set(inst->entry, ""); - _init_entry(inst); - elm_object_item_disabled_set(inst->menu.save, EINA_TRUE); - elm_object_item_disabled_set(inst->toolbar.save, EINA_TRUE); - _update_cur_file(NULL, inst); - } + ecrire_open(NULL, _ent_cfg->font.name, _ent_cfg->font.size); } static void -_cb_new(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecrire_Entry *inst = data; - _alert_if_need_saving(_new_do, inst); -} - -static void -_cb_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +_cb_close(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Ecrire_Entry *inst = data; _alert_if_need_saving(_win_del_do, inst); @@ -670,7 +651,7 @@ _ecrire_menu_add(Ecrire_Entry *inst) 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"), _cb_exit, inst); + elm_menu_item_add(menu, it, "application-exit", _("Close"), _cb_close, inst); it = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL); inst->menu.cut = @@ -697,59 +678,12 @@ _ecrire_menu_add(Ecrire_Entry *inst) } -EAPI_MAIN int -elm_main(int argc, char **argv) +void +ecrire_open(const char *filename, const char *font_name, int font_size) { Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info; Evas_Object *toolbar; Evas_Coord w = 600, h = 600; - int c; - - opterr = 0; - - _ecrire_log_dom = eina_log_domain_register("ecrire", ECRIRE_DEFAULT_LOG_COLOR); - if (_ecrire_log_dom < 0) - { - EINA_LOG_ERR("Unable to create a log domain."); - exit(-1); - } - - while ((c = getopt (argc, argv, "")) != -1) - { - switch (c) - { - case '?': - print_usage(argv[0]); - if (isprint (optopt)) - { - ERR("Unknown option or requires an argument `-%c'.", - optopt); - } - else - { - ERR("Unknown option character `\\x%x'.", optopt); - } - return 1; - break; - default: - abort(); - } - } - - elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR); - elm_app_compile_lib_dir_set(PACKAGE_LIB_DIR); - elm_app_compile_data_dir_set(PACKAGE_DATA_DIR); -#ifdef ENABLE_NLS - elm_app_compile_locale_set(LOCALEDIR); -#endif - elm_app_info_set(elm_main, "ecrire", "COPYING"); - - setlocale(LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALE_DIR); - textdomain(PACKAGE); - - ecrire_cfg_init(PACKAGE_NAME); - ecrire_cfg_load(); Ecrire_Entry *inst = calloc(1, sizeof(Ecrire_Entry)); inst->unsaved = 1; @@ -758,24 +692,11 @@ elm_main(int argc, char **argv) inst->undo_stack_can_merge = EINA_FALSE; inst->font.name = _ent_cfg->font.name; inst->font.size = _ent_cfg->font.size; - - if (optind < argc) - { - if (!ecore_file_exists(argv[optind])) - return 1; - char *path = ecore_file_realpath(argv[optind]); - if (path) - { - if (ecore_file_is_dir(argv[optind])) return 1; - - inst->filename = eina_stringshare_add(path); - } - } + inst->filename = filename; DBG("Opening filename: '%s'", inst->filename); - elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); - inst->win = win = elm_win_util_standard_add("erire", "Ecrire"); + inst->win = win = elm_win_util_standard_add("ecrire", "Ecrire"); elm_win_autodel_set(inst->win, EINA_FALSE); bx = elm_box_add(win); @@ -841,11 +762,78 @@ elm_main(int argc, char **argv) evas_object_show(win); _load_to_entry(inst, inst->filename); +} + +EAPI_MAIN int +elm_main(int argc, char **argv) +{ + const char *filename = NULL; + int c; + + opterr = 0; + + _ecrire_log_dom = eina_log_domain_register("ecrire", ECRIRE_DEFAULT_LOG_COLOR); + if (_ecrire_log_dom < 0) + { + EINA_LOG_ERR("Unable to create a log domain."); + exit(-1); + } + + while ((c = getopt (argc, argv, "")) != -1) + { + switch (c) + { + case '?': + print_usage(argv[0]); + if (isprint (optopt)) + { + ERR("Unknown option or requires an argument `-%c'.", + optopt); + } + else + { + ERR("Unknown option character `\\x%x'.", optopt); + } + return 1; + break; + default: + abort(); + } + } + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR); + elm_app_compile_lib_dir_set(PACKAGE_LIB_DIR); + elm_app_compile_data_dir_set(PACKAGE_DATA_DIR); +#ifdef ENABLE_NLS + elm_app_compile_locale_set(LOCALEDIR); +#endif + elm_app_info_set(elm_main, "ecrire", "COPYING"); + + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALE_DIR); + textdomain(PACKAGE); + + ecrire_cfg_init(PACKAGE_NAME); + ecrire_cfg_load(); + + if (optind < argc) + { + if (!ecore_file_exists(argv[optind])) + return 1; + char *path = ecore_file_realpath(argv[optind]); + if (path) + { + if (ecore_file_is_dir(argv[optind])) return 1; + + filename = eina_stringshare_add(path); + } + } + + ecrire_open(filename, _ent_cfg->font.name, _ent_cfg->font.size); elm_run(); - eina_stringshare_del(inst->filename); - free(inst); ecrire_cfg_shutdown(); eina_log_domain_unregister(_ecrire_log_dom); --