ecrire: small tidy

This commit is contained in:
Alastair Poole 2021-02-27 10:44:38 +00:00
parent 6526fa1a63
commit 60129da3e1
3 changed files with 185 additions and 177 deletions

View File

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

View File

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

View File

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