forked from enlightenment/ecrire
ecrire: one instance, one win...
one arm, one leg, one nod of the head...keep borking.
This commit is contained in:
parent
74ef59427e
commit
642847fa74
|
@ -43,6 +43,7 @@ struct _Ecrire_Entry {
|
||||||
|
|
||||||
typedef struct _Ecrire_Entry 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_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_entry_font_set(Ecrire_Entry *inst, const char *font, int font_size);
|
||||||
void ecrire_save(Ecrire_Entry *inst, void *callback_func);
|
void ecrire_save(Ecrire_Entry *inst, void *callback_func);
|
||||||
|
|
182
src/bin/main.c
182
src/bin/main.c
|
@ -19,6 +19,8 @@ _win_del_do(void *data)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
evas_object_del(inst->win);
|
evas_object_del(inst->win);
|
||||||
|
eina_stringshare_del(inst->filename);
|
||||||
|
free(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -382,19 +384,14 @@ _load_to_entry(Ecrire_Entry *inst, const char *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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)
|
void *event_info)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst;
|
|
||||||
const char *selected = event_info;
|
const char *selected = event_info;
|
||||||
|
|
||||||
if (!selected) return;
|
if (!selected) return;
|
||||||
inst = data;
|
|
||||||
|
|
||||||
if (ecore_file_app_installed("ecrire"))
|
ecrire_open(selected, _ent_cfg->font.name, _ent_cfg->font.size);
|
||||||
ecore_exe_run(eina_slstr_printf("ecrire %s", selected), NULL);
|
|
||||||
else
|
|
||||||
_load_to_entry(inst, selected);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -432,6 +429,7 @@ static void
|
||||||
_open_do(void *data)
|
_open_do(void *data)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
|
|
||||||
ui_file_open_save_dialog_open(inst->win, EINA_FALSE, _cb_fs_open_done, inst);
|
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
|
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;
|
Ecrire_Entry *inst = data;
|
||||||
_alert_if_need_saving(_open_do, inst);
|
|
||||||
|
_open_do(inst);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -473,31 +472,13 @@ _cb_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUS
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
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;
|
ecrire_open(NULL, _ent_cfg->font.name, _ent_cfg->font.size);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cb_new(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(_new_do, inst);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_cb_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
_alert_if_need_saving(_win_del_do, inst);
|
_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", _("Save"), _cb_save, inst);
|
||||||
elm_menu_item_add(menu, it, "document-save-as", _("Save As"), _cb_save_as, 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_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);
|
it = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL);
|
||||||
inst->menu.cut =
|
inst->menu.cut =
|
||||||
|
@ -697,59 +678,12 @@ _ecrire_menu_add(Ecrire_Entry *inst)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI_MAIN int
|
void
|
||||||
elm_main(int argc, char **argv)
|
ecrire_open(const char *filename, const char *font_name, int font_size)
|
||||||
{
|
{
|
||||||
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info;
|
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info;
|
||||||
Evas_Object *toolbar;
|
Evas_Object *toolbar;
|
||||||
Evas_Coord w = 600, h = 600;
|
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));
|
Ecrire_Entry *inst = calloc(1, sizeof(Ecrire_Entry));
|
||||||
inst->unsaved = 1;
|
inst->unsaved = 1;
|
||||||
|
@ -758,24 +692,11 @@ elm_main(int argc, char **argv)
|
||||||
inst->undo_stack_can_merge = EINA_FALSE;
|
inst->undo_stack_can_merge = EINA_FALSE;
|
||||||
inst->font.name = _ent_cfg->font.name;
|
inst->font.name = _ent_cfg->font.name;
|
||||||
inst->font.size = _ent_cfg->font.size;
|
inst->font.size = _ent_cfg->font.size;
|
||||||
|
inst->filename = filename;
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DBG("Opening filename: '%s'", inst->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("ecrire", "Ecrire");
|
||||||
inst->win = win = elm_win_util_standard_add("erire", "Ecrire");
|
|
||||||
elm_win_autodel_set(inst->win, EINA_FALSE);
|
elm_win_autodel_set(inst->win, EINA_FALSE);
|
||||||
|
|
||||||
bx = elm_box_add(win);
|
bx = elm_box_add(win);
|
||||||
|
@ -841,11 +762,78 @@ elm_main(int argc, char **argv)
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
|
|
||||||
_load_to_entry(inst, inst->filename);
|
_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();
|
elm_run();
|
||||||
|
|
||||||
eina_stringshare_del(inst->filename);
|
|
||||||
free(inst);
|
|
||||||
|
|
||||||
ecrire_cfg_shutdown();
|
ecrire_cfg_shutdown();
|
||||||
eina_log_domain_unregister(_ecrire_log_dom);
|
eina_log_domain_unregister(_ecrire_log_dom);
|
||||||
|
|
Loading…
Reference in New Issue