forked from enlightenment/ecrire
ecrire: small tidy
This commit is contained in:
parent
6526fa1a63
commit
60129da3e1
332
src/bin/main.c
332
src/bin/main.c
|
@ -8,22 +8,21 @@
|
|||
#include "ui/ui.h"
|
||||
|
||||
static Eina_Unicode plain_utf8 = EINA_TRUE;
|
||||
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);
|
||||
static void editor_font_set(Ecrire_Entry *inst, const char *font, int font_size);
|
||||
|
||||
/* specific log domain to help debug only ecrire */
|
||||
int _ecrire_log_dom = -1;
|
||||
|
||||
static void
|
||||
_init_entry(Ecrire_Entry *ent)
|
||||
_init_entry(Ecrire_Entry *inst)
|
||||
{
|
||||
Elm_Entry_Change_Info *inf;
|
||||
editor_font_set(ent, _ent_cfg->font.name, _ent_cfg->font.size);
|
||||
editor_font_set(inst, _ent_cfg->font.name, _ent_cfg->font.size);
|
||||
|
||||
/* Init the undo stack */
|
||||
EINA_LIST_FREE(ent->undo_stack, inf)
|
||||
EINA_LIST_FREE(inst->undo_stack, inf)
|
||||
{
|
||||
if (inf)
|
||||
{
|
||||
|
@ -38,25 +37,25 @@ _init_entry(Ecrire_Entry *ent)
|
|||
free(inf);
|
||||
}
|
||||
}
|
||||
ent->undo_stack = ent->undo_stack_ptr =
|
||||
eina_list_append(ent->undo_stack, NULL);
|
||||
ent->last_saved_stack_ptr = ent->undo_stack_ptr;
|
||||
ent->undo_stack_can_merge = EINA_FALSE;
|
||||
inst->undo_stack = inst->undo_stack_ptr =
|
||||
eina_list_append(inst->undo_stack, NULL);
|
||||
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
||||
inst->undo_stack_can_merge = EINA_FALSE;
|
||||
|
||||
elm_object_item_disabled_set(ent->undo_item, EINA_TRUE);
|
||||
elm_object_item_disabled_set(ent->redo_item, EINA_TRUE);
|
||||
elm_object_item_disabled_set(inst->undo_item, EINA_TRUE);
|
||||
elm_object_item_disabled_set(inst->redo_item, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_alert_if_need_saving(void (*done)(void *data), Ecrire_Entry *ent)
|
||||
_alert_if_need_saving(void (*done)(void *data), Ecrire_Entry *inst)
|
||||
{
|
||||
if (!elm_object_item_disabled_get(ent->save_item))
|
||||
if (!elm_object_item_disabled_get(inst->save_item))
|
||||
{
|
||||
ui_alert_need_saving(ent->entry, done, ent);
|
||||
ui_alert_need_saving(inst->entry, done, inst);
|
||||
}
|
||||
else
|
||||
{
|
||||
done(ent);
|
||||
done(inst);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -64,40 +63,40 @@ static void
|
|||
_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);
|
||||
elm_object_item_disabled_set(ent->cut_item, EINA_FALSE);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_object_item_disabled_set(inst->copy_item, EINA_FALSE);
|
||||
elm_object_item_disabled_set(inst->cut_item, EINA_FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
elm_object_item_disabled_set(ent->cut_item, EINA_TRUE);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_object_item_disabled_set(inst->copy_item, EINA_TRUE);
|
||||
elm_object_item_disabled_set(inst->cut_item, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_update_cur_file(const char *file, Ecrire_Entry *ent)
|
||||
_update_cur_file(const char *file, Ecrire_Entry *inst)
|
||||
{
|
||||
const char *saving = (!elm_object_item_disabled_get(ent->save_item)) ?
|
||||
const char *saving = (!elm_object_item_disabled_get(inst->save_item)) ?
|
||||
"*" : "";
|
||||
eina_stringshare_replace(&ent->filename, file);
|
||||
eina_stringshare_replace(&inst->filename, file);
|
||||
{
|
||||
char buf[1024];
|
||||
if (ent->filename)
|
||||
snprintf(buf, sizeof(buf), _("%s%s - %s"), saving, ent->filename,
|
||||
PACKAGE_NAME);
|
||||
if (inst->filename)
|
||||
snprintf(buf, sizeof(buf), _("%s%s - %s"), saving, inst->filename,
|
||||
PACKAGE_NAME);
|
||||
else
|
||||
snprintf(buf, sizeof(buf), _("%sUntitled %d - %s"), saving,
|
||||
ent->unsaved, PACKAGE_NAME);
|
||||
inst->unsaved, PACKAGE_NAME);
|
||||
|
||||
if (ent->filename)
|
||||
elm_object_text_set(ent->frame, ent->filename);
|
||||
if (inst->filename)
|
||||
elm_object_text_set(inst->frame, inst->filename);
|
||||
else
|
||||
elm_object_text_set(ent->frame, buf);
|
||||
elm_win_title_set(ent->win, buf);
|
||||
elm_object_text_set(inst->frame, buf);
|
||||
elm_win_title_set(inst->win, buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,40 +124,39 @@ _cb_cur_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
|||
static void
|
||||
_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;
|
||||
Ecrire_Entry *inst = data;
|
||||
inst->undo_stack_can_merge = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_update_undo_redo_items(Ecrire_Entry *ent)
|
||||
_update_undo_redo_items(Ecrire_Entry *inst)
|
||||
{
|
||||
elm_object_item_disabled_set(ent->undo_item,
|
||||
!eina_list_next(ent->undo_stack_ptr));
|
||||
elm_object_item_disabled_set(ent->redo_item,
|
||||
!eina_list_prev(ent->undo_stack_ptr));
|
||||
elm_object_item_disabled_set(inst->undo_item,
|
||||
!eina_list_next(inst->undo_stack_ptr));
|
||||
elm_object_item_disabled_set(inst->redo_item,
|
||||
!eina_list_prev(inst->undo_stack_ptr));
|
||||
|
||||
if (ent->undo_stack_ptr == ent->last_saved_stack_ptr)
|
||||
if (inst->undo_stack_ptr == inst->last_saved_stack_ptr)
|
||||
{
|
||||
elm_object_item_disabled_set(ent->save_item, EINA_TRUE);
|
||||
_update_cur_file(ent->filename, ent);
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
||||
_update_cur_file(inst->filename, inst);
|
||||
}
|
||||
else if (elm_object_item_disabled_get(ent->save_item))
|
||||
else if (elm_object_item_disabled_get(inst->save_item))
|
||||
{
|
||||
elm_object_item_disabled_set(ent->save_item, EINA_FALSE);
|
||||
_update_cur_file(ent->filename, ent);
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_FALSE);
|
||||
_update_cur_file(inst->filename, inst);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
_undo_stack_add(Ecrire_Entry *ent, Elm_Entry_Change_Info *_info)
|
||||
_undo_stack_add(Ecrire_Entry *inst, Elm_Entry_Change_Info *_info)
|
||||
{
|
||||
Elm_Entry_Change_Info *inf;
|
||||
|
||||
ent->undo_stack = eina_list_split_list(ent->undo_stack, eina_list_prev(ent->undo_stack_ptr),
|
||||
&ent->undo_stack_ptr);
|
||||
inst->undo_stack = eina_list_split_list(inst->undo_stack, eina_list_prev(inst->undo_stack_ptr),
|
||||
&inst->undo_stack_ptr);
|
||||
|
||||
EINA_LIST_FREE(ent->undo_stack, inf)
|
||||
EINA_LIST_FREE(inst->undo_stack, inf)
|
||||
{
|
||||
if (inf->insert)
|
||||
{
|
||||
|
@ -182,7 +180,7 @@ _undo_stack_add(Ecrire_Entry *ent, Elm_Entry_Change_Info *_info)
|
|||
else
|
||||
#endif
|
||||
{
|
||||
Elm_Entry_Change_Info *head_inf = eina_list_data_get(ent->undo_stack_ptr);
|
||||
Elm_Entry_Change_Info *head_inf = eina_list_data_get(inst->undo_stack_ptr);
|
||||
|
||||
inf = calloc(1, sizeof(*inf));
|
||||
memcpy(inf, _info, sizeof(*inf));
|
||||
|
@ -195,54 +193,54 @@ _undo_stack_add(Ecrire_Entry *ent, Elm_Entry_Change_Info *_info)
|
|||
eina_stringshare_ref(inf->change.del.content);
|
||||
}
|
||||
|
||||
if (ent->undo_stack_can_merge && (inf->insert == head_inf->insert))
|
||||
if (inst->undo_stack_can_merge && (inf->insert == head_inf->insert))
|
||||
inf->merge = EINA_TRUE;
|
||||
|
||||
ent->undo_stack_ptr = eina_list_prepend(ent->undo_stack_ptr, inf);
|
||||
inst->undo_stack_ptr = eina_list_prepend(inst->undo_stack_ptr, inf);
|
||||
}
|
||||
|
||||
ent->undo_stack = ent->undo_stack_ptr;
|
||||
inst->undo_stack = inst->undo_stack_ptr;
|
||||
|
||||
ent->undo_stack_can_merge = EINA_TRUE;
|
||||
inst->undo_stack_can_merge = EINA_TRUE;
|
||||
|
||||
_update_undo_redo_items(ent);
|
||||
_update_undo_redo_items(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_undo_redo_do(Ecrire_Entry *ent, Elm_Entry_Change_Info *inf, Eina_Bool undo)
|
||||
_undo_redo_do(Ecrire_Entry *inst, Elm_Entry_Change_Info *inf, Eina_Bool undo)
|
||||
{
|
||||
DBG("%s: %s", (undo) ? "Undo" : "Redo",
|
||||
inf->change.insert.content);
|
||||
|
||||
if ((inf->insert && undo) || (!inf->insert && !undo))
|
||||
{
|
||||
const Evas_Object *tb = elm_entry_textblock_get(ent->entry);
|
||||
const Evas_Object *tb = elm_entry_textblock_get(inst->entry);
|
||||
Evas_Textblock_Cursor *mcur, *end;
|
||||
mcur = (Evas_Textblock_Cursor *) evas_object_textblock_cursor_get(tb);
|
||||
end = evas_object_textblock_cursor_new(tb);
|
||||
|
||||
if (inf->insert)
|
||||
{
|
||||
elm_entry_cursor_pos_set(ent->entry, inf->change.insert.pos);
|
||||
elm_entry_cursor_pos_set(inst->entry, inf->change.insert.pos);
|
||||
evas_textblock_cursor_pos_set(end, inf->change.insert.pos +
|
||||
inf->change.insert.plain_length);
|
||||
}
|
||||
else
|
||||
{
|
||||
elm_entry_cursor_pos_set(ent->entry, inf->change.del.start);
|
||||
elm_entry_cursor_pos_set(inst->entry, inf->change.del.start);
|
||||
evas_textblock_cursor_pos_set(end, inf->change.del.end);
|
||||
}
|
||||
|
||||
evas_textblock_cursor_range_delete(mcur, end);
|
||||
evas_textblock_cursor_free(end);
|
||||
elm_entry_calc_force(ent->entry);
|
||||
elm_entry_calc_force(inst->entry);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (inf->insert)
|
||||
{
|
||||
elm_entry_cursor_pos_set(ent->entry, inf->change.insert.pos);
|
||||
elm_entry_entry_insert(ent->entry, inf->change.insert.content);
|
||||
elm_entry_cursor_pos_set(inst->entry, inf->change.insert.pos);
|
||||
elm_entry_entry_insert(inst->entry, inf->change.insert.content);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -250,35 +248,35 @@ _undo_redo_do(Ecrire_Entry *ent, Elm_Entry_Change_Info *inf, Eina_Bool undo)
|
|||
start = (inf->change.del.start < inf->change.del.end) ?
|
||||
inf->change.del.start : inf->change.del.end;
|
||||
|
||||
elm_entry_cursor_pos_set(ent->entry, start);
|
||||
elm_entry_entry_insert(ent->entry, inf->change.insert.content);
|
||||
elm_entry_cursor_pos_set(ent->entry, inf->change.del.end);
|
||||
elm_entry_cursor_pos_set(inst->entry, start);
|
||||
elm_entry_entry_insert(inst->entry, inf->change.insert.content);
|
||||
elm_entry_cursor_pos_set(inst->entry, inf->change.del.end);
|
||||
}
|
||||
}
|
||||
|
||||
/* No matter what, once we did an undo/redo we don't want to merge,
|
||||
* even if we got backt to the top of the stack. */
|
||||
ent->undo_stack_can_merge = EINA_FALSE;
|
||||
inst->undo_stack_can_merge = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_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;
|
||||
Ecrire_Entry *inst = data;
|
||||
Elm_Entry_Change_Info *inf = NULL;
|
||||
if (!eina_list_next(ent->undo_stack_ptr))
|
||||
if (!eina_list_next(inst->undo_stack_ptr))
|
||||
return;
|
||||
|
||||
do
|
||||
{
|
||||
inf = eina_list_data_get(ent->undo_stack_ptr);
|
||||
inf = eina_list_data_get(inst->undo_stack_ptr);
|
||||
|
||||
_undo_redo_do(ent, inf, EINA_TRUE);
|
||||
_undo_redo_do(inst, inf, EINA_TRUE);
|
||||
|
||||
if (eina_list_next(ent->undo_stack_ptr))
|
||||
if (eina_list_next(inst->undo_stack_ptr))
|
||||
{
|
||||
ent->undo_stack_ptr = eina_list_next(ent->undo_stack_ptr);
|
||||
inst->undo_stack_ptr = eina_list_next(inst->undo_stack_ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -287,25 +285,25 @@ _cb_undo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|||
}
|
||||
while (inf && inf->merge);
|
||||
|
||||
_update_undo_redo_items(ent);
|
||||
_update_undo_redo_items(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
Ecrire_Entry *inst = data;
|
||||
Elm_Entry_Change_Info *inf = NULL;
|
||||
if (!eina_list_prev(ent->undo_stack_ptr))
|
||||
if (!eina_list_prev(inst->undo_stack_ptr))
|
||||
return;
|
||||
|
||||
do
|
||||
{
|
||||
if (eina_list_prev(ent->undo_stack_ptr))
|
||||
if (eina_list_prev(inst->undo_stack_ptr))
|
||||
{
|
||||
ent->undo_stack_ptr = eina_list_prev(ent->undo_stack_ptr);
|
||||
inst->undo_stack_ptr = eina_list_prev(inst->undo_stack_ptr);
|
||||
/* In redo we care about the NEW item */
|
||||
inf = eina_list_data_get(ent->undo_stack_ptr);
|
||||
_undo_redo_do(ent, inf, EINA_FALSE);
|
||||
inf = eina_list_data_get(inst->undo_stack_ptr);
|
||||
_undo_redo_do(inst, inf, EINA_FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -313,31 +311,33 @@ _cb_redo(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|||
}
|
||||
|
||||
/* Update inf to next for the condition. */
|
||||
if (eina_list_prev(ent->undo_stack_ptr))
|
||||
if (eina_list_prev(inst->undo_stack_ptr))
|
||||
{
|
||||
inf = eina_list_data_get(eina_list_prev(ent->undo_stack_ptr));
|
||||
inf = eina_list_data_get(eina_list_prev(inst->undo_stack_ptr));
|
||||
}
|
||||
}
|
||||
while (inf && inf->merge);
|
||||
|
||||
_update_undo_redo_items(ent);
|
||||
_update_undo_redo_items(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
_update_cur_file(ent->filename, ent);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_FALSE);
|
||||
_update_cur_file(inst->filename, inst);
|
||||
|
||||
/* Undo/redo */
|
||||
_undo_stack_add(ent, event_info);
|
||||
_undo_stack_add(inst, event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
_load_to_entry(Ecrire_Entry *ent, const char *file)
|
||||
_load_to_entry(Ecrire_Entry *inst, const char *file)
|
||||
{
|
||||
if (file)
|
||||
if (!file)
|
||||
_init_entry(inst);
|
||||
else
|
||||
{
|
||||
char *buf;
|
||||
|
||||
|
@ -346,27 +346,25 @@ _load_to_entry(Ecrire_Entry *ent, const char *file)
|
|||
else
|
||||
buf = file_load(file);
|
||||
|
||||
elm_object_text_set(ent->entry, "");
|
||||
_init_entry(ent);
|
||||
elm_entry_entry_append(ent->entry, buf);
|
||||
elm_object_item_disabled_set(ent->save_item, EINA_TRUE);
|
||||
elm_object_text_set(inst->entry, "");
|
||||
_init_entry(inst);
|
||||
elm_entry_entry_append(inst->entry, buf);
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
||||
free(buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
_init_entry(ent);
|
||||
}
|
||||
|
||||
_update_cur_file(file, ent);
|
||||
_update_cur_file(file, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info)
|
||||
_cb_fs_open_done(void *data, 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);
|
||||
|
@ -375,76 +373,71 @@ _fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|||
}
|
||||
|
||||
void
|
||||
save_do(const char *file, Ecrire_Entry *ent)
|
||||
save_do(const char *file, Ecrire_Entry *inst)
|
||||
{
|
||||
if (plain_utf8)
|
||||
file_plain_save(file, elm_object_text_get(ent->entry));
|
||||
file_plain_save(file, elm_object_text_get(inst->entry));
|
||||
else
|
||||
file_save(file, elm_object_text_get(ent->entry));
|
||||
file_save(file, elm_object_text_get(inst->entry));
|
||||
|
||||
elm_object_item_disabled_set(ent->save_item, EINA_TRUE);
|
||||
ent->last_saved_stack_ptr = ent->undo_stack_ptr;
|
||||
_update_cur_file(file, ent);
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
||||
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
||||
_update_cur_file(file, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info)
|
||||
_cb_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info)
|
||||
{
|
||||
Ecrire_Entry *inst = data;
|
||||
const char *selected = event_info;
|
||||
|
||||
if (selected)
|
||||
{
|
||||
save_do(selected, inst);
|
||||
}
|
||||
save_do(selected, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_open_do(void *data)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
ui_file_open_save_dialog_open(ent->win, _fs_open_done, EINA_FALSE);
|
||||
Ecrire_Entry *inst = data;
|
||||
ui_file_open_save_dialog_open(inst->win, EINA_FALSE, _cb_fs_open_done, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
ui_goto_dialog_open(inst->win, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
_alert_if_need_saving(_open_do, inst);
|
||||
}
|
||||
|
||||
void
|
||||
editor_save(Ecrire_Entry *ent, void *callback_func)
|
||||
editor_save(Ecrire_Entry *inst, void *callback_func)
|
||||
{
|
||||
if (ent->filename)
|
||||
{
|
||||
save_do(ent->filename, ent);
|
||||
}
|
||||
if (inst->filename)
|
||||
save_do(inst->filename, inst);
|
||||
else
|
||||
{
|
||||
ui_file_open_save_dialog_open(ent->win, callback_func, EINA_TRUE);
|
||||
}
|
||||
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, callback_func, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
editor_save(ent, _fs_save_done);
|
||||
Ecrire_Entry *inst = data;
|
||||
editor_save(inst, _cb_fs_save_done);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, _cb_fs_save_done, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -456,83 +449,83 @@ _win_del_do(void *data EINA_UNUSED)
|
|||
static void
|
||||
_new_do(void *data)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
Ecrire_Entry *inst = data;
|
||||
|
||||
if (ecore_file_app_installed("ecrire"))
|
||||
ecore_exe_run("ecrire", NULL);
|
||||
else
|
||||
{
|
||||
elm_object_text_set(ent->entry, "");
|
||||
_init_entry(ent);
|
||||
elm_object_item_disabled_set(ent->save_item, EINA_TRUE);
|
||||
_update_cur_file(NULL, ent);
|
||||
elm_object_text_set(inst->entry, "");
|
||||
_init_entry(inst);
|
||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
||||
_update_cur_file(NULL, inst);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
_alert_if_need_saving(_new_do, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_app_exit(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
_alert_if_need_saving(_win_del_do, ent);
|
||||
Ecrire_Entry *inst = data;
|
||||
_alert_if_need_saving(_win_del_do, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_cut(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
elm_entry_selection_cut(ent->entry);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_entry_selection_cut(inst->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_copy(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
elm_entry_selection_copy(ent->entry);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_entry_selection_copy(inst->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_paste(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
elm_entry_selection_paste(ent->entry);
|
||||
Ecrire_Entry *inst = data;
|
||||
elm_entry_selection_paste(inst->entry);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
ui_find_dialog_open(inst->win, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_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);
|
||||
Ecrire_Entry *inst = data;
|
||||
ui_font_dialog_open(elm_object_top_widget_get(inst->win), inst, _ent_cfg->font.name, _ent_cfg->font.size);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_cb_win_del(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
Ecrire_Entry *inst = data;
|
||||
(void) data;
|
||||
(void) obj;
|
||||
(void) event_info;
|
||||
_alert_if_need_saving(_win_del_do, ent);
|
||||
_alert_if_need_saving(_win_del_do, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_win_focused(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
// Ecrire_Entry *ent = data;
|
||||
Ecrire_Entry *inst = data;
|
||||
(void) data;
|
||||
(void) obj;
|
||||
(void) event_info;
|
||||
|
@ -542,7 +535,7 @@ _cb_win_focused(void *data, Evas_Object *obj, void *event_info)
|
|||
static void
|
||||
_cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
|
||||
{
|
||||
Ecrire_Entry *ent = data;
|
||||
Ecrire_Entry *inst = data;
|
||||
Eina_Bool ctrl, alt, shift;
|
||||
Evas_Event_Key_Down *ev = event;
|
||||
|
||||
|
@ -551,7 +544,7 @@ _cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
|
|||
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
||||
if ((ctrl) && (!alt) && (!shift))
|
||||
{
|
||||
if (!strcmp(ev->keyname, "a")) elm_entry_select_all(ent->entry);
|
||||
if (!strcmp(ev->keyname, "a")) elm_entry_select_all(inst->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);
|
||||
|
@ -560,9 +553,9 @@ _cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
|
|||
}
|
||||
|
||||
static void
|
||||
editor_font_set(Ecrire_Entry *ent, const char *font, int font_size)
|
||||
editor_font_set(Ecrire_Entry *inst, const char *font, int font_size)
|
||||
{
|
||||
const Evas_Object *tb = elm_entry_textblock_get(ent->entry);
|
||||
const Evas_Object *tb = elm_entry_textblock_get(inst->entry);
|
||||
Eina_Strbuf *sbuf;
|
||||
|
||||
eina_stringshare_replace(&_ent_cfg->font.name, font);
|
||||
|
@ -596,21 +589,20 @@ editor_font_set(Ecrire_Entry *ent, const char *font, int font_size)
|
|||
evas_object_textblock_style_user_pop((Evas_Object *) tb);
|
||||
}
|
||||
|
||||
elm_entry_calc_force(ent->entry);
|
||||
elm_entry_calc_force(inst->entry);
|
||||
|
||||
eina_strbuf_free(sbuf);
|
||||
}
|
||||
|
||||
void
|
||||
editor_font_choose(Ecrire_Entry *ent, const char *font, int size)
|
||||
editor_font_choose(Ecrire_Entry *inst, const char *font, int size)
|
||||
{
|
||||
editor_font_set(ent, font, size);
|
||||
editor_font_set(inst, font, size);
|
||||
|
||||
/* Save the font for future runs */
|
||||
ecrire_cfg_save();
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_ecrire_menu_add(Ecrire_Entry *inst)
|
||||
{
|
||||
|
@ -654,7 +646,7 @@ _ecrire_menu_add(Ecrire_Entry *inst)
|
|||
EAPI_MAIN int
|
||||
elm_main(int argc, char **argv)
|
||||
{
|
||||
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info, *bx2;
|
||||
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info;
|
||||
Evas_Coord w = 600, h = 600;
|
||||
int c;
|
||||
|
||||
|
@ -704,7 +696,7 @@ elm_main(int argc, char **argv)
|
|||
ecrire_cfg_init(PACKAGE_NAME);
|
||||
ecrire_cfg_load();
|
||||
|
||||
inst = calloc(1, sizeof(Ecrire_Entry));
|
||||
Ecrire_Entry *inst = calloc(1, sizeof(Ecrire_Entry));
|
||||
inst->unsaved = 1;
|
||||
inst->filename = NULL;
|
||||
inst->last_saved_stack_ptr = NULL;
|
||||
|
@ -738,7 +730,7 @@ elm_main(int argc, char **argv)
|
|||
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(inst->entry);
|
||||
evas_object_show(entry);
|
||||
|
||||
pad = elm_frame_add(win);
|
||||
elm_object_style_set(pad, "pad_medium");
|
||||
|
@ -747,18 +739,18 @@ elm_main(int argc, char **argv)
|
|||
elm_box_pack_end(bx, pad);
|
||||
evas_object_show(pad);
|
||||
|
||||
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);
|
||||
bx = elm_box_add(win);
|
||||
elm_box_horizontal_set(bx, 1);
|
||||
evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0.5);
|
||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_object_content_set(pad, bx);
|
||||
evas_object_show(bx);
|
||||
|
||||
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);
|
||||
elm_box_pack_end(bx, cur_info);
|
||||
evas_object_show(cur_info);
|
||||
|
||||
evas_object_smart_callback_add(entry, "cursor,changed", _cb_cur_changed, cur_info);
|
||||
|
@ -783,6 +775,8 @@ elm_main(int argc, char **argv)
|
|||
|
||||
elm_run();
|
||||
|
||||
free(inst);
|
||||
|
||||
ecrire_cfg_shutdown();
|
||||
eina_log_domain_unregister(_ecrire_log_dom);
|
||||
_ecrire_log_dom = -1;
|
||||
|
|
|
@ -1,21 +1,30 @@
|
|||
#include "config.h"
|
||||
#include <Elementary.h>
|
||||
|
||||
Evas_Object *inwin;
|
||||
typedef struct _File_Selector_Data
|
||||
{
|
||||
Evas_Object *inwin;
|
||||
void (*func)(void *, Evas_Object *, void *);
|
||||
void *data;
|
||||
} File_Selector_Data;
|
||||
|
||||
static void
|
||||
_cleaning_cb(void *data, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
void (*func) (void *, Evas_Object *, void *) = data;
|
||||
func(NULL, obj, event_info);
|
||||
evas_object_del(inwin); /* delete the test window */
|
||||
File_Selector_Data *fsdata = data;
|
||||
fsdata->func(fsdata->data, obj, event_info);
|
||||
evas_object_del(fsdata->inwin);
|
||||
free(fsdata);
|
||||
}
|
||||
|
||||
void
|
||||
ui_file_open_save_dialog_open(Evas_Object *parent, Evas_Smart_Cb func,
|
||||
Eina_Bool save)
|
||||
ui_file_open_save_dialog_open(Evas_Object *parent, Eina_Bool save,
|
||||
Evas_Smart_Cb func, void *data)
|
||||
{
|
||||
Evas_Object *fs;
|
||||
Evas_Object *inwin;
|
||||
File_Selector_Data *fsdata;
|
||||
|
||||
inwin = elm_win_inwin_add(parent);
|
||||
evas_object_show(inwin);
|
||||
|
||||
|
@ -26,5 +35,10 @@ ui_file_open_save_dialog_open(Evas_Object *parent, Evas_Smart_Cb func,
|
|||
elm_win_inwin_content_set(inwin, fs);
|
||||
evas_object_show(fs);
|
||||
|
||||
evas_object_smart_callback_add(fs, "done", _cleaning_cb, func);
|
||||
fsdata = malloc(sizeof(File_Selector_Data));
|
||||
fsdata->inwin = inwin;
|
||||
fsdata->func = func;
|
||||
fsdata->data = data;
|
||||
|
||||
evas_object_smart_callback_add(fs, "done", _cleaning_cb, fsdata);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "../mess_header.h"
|
||||
|
||||
void ui_file_open_save_dialog_open(Evas_Object *parent, Evas_Smart_Cb func, Eina_Bool save);
|
||||
void ui_file_open_save_dialog_open(Evas_Object *parent, Eina_Bool save, Evas_Smart_Cb func, void *data);
|
||||
|
||||
Evas_Object *ui_find_dialog_open(Evas_Object *parent, Ecrire_Entry *ent);
|
||||
Evas_Object *ui_goto_dialog_open(Evas_Object *parent, Ecrire_Entry *ent);
|
||||
|
|
Loading…
Reference in New Issue