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);

-- 


Reply via email to