ecrire: improve ui and open behaviour.

This commit is contained in:
Alastair Poole 2020-05-19 14:25:15 +01:00
parent c775617dd6
commit 3f70cbe5a8
4 changed files with 81 additions and 62 deletions

View File

@ -92,6 +92,10 @@ _update_cur_file(const char *file, Ecrire_Entry *ent)
snprintf(buf, sizeof(buf), _("%sUntitled %d - %s"), saving,
ent->unsaved, PACKAGE_NAME);
if (ent->filename)
elm_object_text_set(ent->frame, ent->filename);
else
elm_object_text_set(ent->frame, buf);
elm_win_title_set(ent->win, buf);
}
}
@ -360,8 +364,13 @@ _fs_open_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event_info)
{
const char *selected = event_info;
if (selected)
_load_to_entry(main_ec_ent, selected);
if (!selected) return;
if (ecore_file_app_installed("ecrire"))
ecore_exe_run(eina_slstr_printf("ecrire %s", selected), NULL);
else
_load_to_entry(main_ec_ent, selected);
}
void
@ -447,10 +456,18 @@ static void
_new_do(void *data)
{
Ecrire_Entry *ent = data;
elm_object_text_set(ent->entry, "");
_init_entry(ent);
elm_object_item_disabled_set(ent->save_item, EINA_TRUE);
_update_cur_file(NULL, ent);
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);
}
}
static void
@ -620,7 +637,7 @@ _key_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
EAPI_MAIN int
elm_main(int argc, char **argv)
{
Evas_Object *pad, *bx, *cur_info, *menu, *bx2;
Evas_Object *pad, *fr, *bx, *cur_info, *menu, *bx2;
Evas_Coord w = 600, h = 600;
Elm_Widget_Item *mit;
int c;
@ -692,13 +709,19 @@ elm_main(int argc, char **argv)
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
main_ec_ent->frame = fr = elm_frame_add(main_ec_ent->win);
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(fr);
main_ec_ent->entry = elm_entry_add(main_ec_ent->win);
elm_entry_scrollable_set(main_ec_ent->entry, EINA_TRUE);
elm_entry_line_wrap_set(main_ec_ent->entry, _ent_cfg->wrap_type);
elm_entry_cnp_mode_set(main_ec_ent->entry, ELM_CNP_MODE_PLAINTEXT);
evas_object_size_hint_align_set(main_ec_ent->entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(main_ec_ent->entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(bx, main_ec_ent->entry);
elm_object_content_set(fr, main_ec_ent->entry);
elm_box_pack_end(bx, fr);
evas_object_show(main_ec_ent->entry);
pad = elm_frame_add(main_ec_ent->win);
@ -783,6 +806,7 @@ elm_main(int argc, char **argv)
evas_object_smart_callback_add(main_ec_ent->win, "delete,request", my_win_del, main_ec_ent);
evas_object_smart_callback_add(main_ec_ent->win, "focus,in", my_win_focused, main_ec_ent);
elm_win_center(main_ec_ent->win, EINA_TRUE, EINA_TRUE);
evas_object_show(main_ec_ent->win);
_load_to_entry(main_ec_ent, main_ec_ent->filename);

View File

@ -14,6 +14,7 @@ extern int _ecrire_log_dom;
struct _Ecrire_Entry {
Evas_Object *entry;
Evas_Object *frame;
Evas_Object *win;
const char *filename;
int unsaved;

View File

@ -68,41 +68,24 @@ ui_goto_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
evas_object_show(bx);
hbx = elm_box_add(win);
elm_box_padding_set(hbx, 15, 0);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(hbx);
elm_box_pack_end(bx, hbx);
lbl = elm_label_add(win);
elm_object_text_set(lbl, _("Jump to line:"));
evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(lbl, 0.0, 0.0);
elm_box_pack_end(hbx, lbl);
evas_object_show(lbl);
sent = elm_entry_add(win);
elm_entry_scrollable_set(sent, EINA_TRUE);
elm_entry_single_line_set(sent, EINA_TRUE);
evas_object_size_hint_align_set(sent, EVAS_HINT_FILL, 0.0);
evas_object_size_hint_weight_set(sent, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(sent, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(sent, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_box_pack_end(hbx, sent);
evas_object_show(sent);
hbx = elm_box_add(win);
elm_box_homogeneous_set(hbx, EINA_FALSE);
elm_box_padding_set(hbx, 15, 0);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0.0);
evas_object_show(hbx);
elm_box_pack_end(bx, hbx);
btn = elm_button_add(win);
elm_object_text_set(btn, _("Go"));
evas_object_size_hint_align_set(btn, 1.0, 0.0);
evas_object_size_hint_weight_set(btn, 0.0, 0.0);
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.0);
evas_object_size_hint_weight_set(btn, 0.1, EVAS_HINT_EXPAND);
evas_object_show(btn);
elm_box_pack_end(hbx, btn);
evas_object_smart_callback_add(btn, "clicked", _goto_clicked, entry);

View File

@ -132,7 +132,7 @@ Evas_Object *
ui_find_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
{
Evas_Object *entry = ent->entry;
Evas_Object *win, *bg, *bx, *lbl, *hbx, *btn;
Evas_Object *win, *bg, *tbl, *bx, *exp, *pad, *lbl, *hbx, *btn;
if (search_win)
{
@ -155,19 +155,18 @@ ui_find_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bx);
hbx = elm_box_add(win);
elm_box_padding_set(hbx, 15, 0);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0.0);
evas_object_show(hbx);
elm_box_pack_end(bx, hbx);
tbl = elm_table_add(win);
elm_table_padding_set(tbl, 15, 0);
evas_object_size_hint_align_set(tbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(tbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(tbl);
elm_box_pack_end(bx, tbl);
lbl = elm_label_add(win);
elm_object_text_set(lbl, _("Search for:"));
elm_object_text_set(lbl, _("Search:"));
evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, 0.5);
evas_object_size_hint_weight_set(lbl, 0.0, 0.0);
elm_box_pack_end(hbx, lbl);
elm_table_pack(tbl, lbl, 0, 0, 1, 1);
evas_object_show(lbl);
sent = elm_entry_add(win);
@ -175,23 +174,14 @@ ui_find_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
elm_entry_single_line_set(sent, EINA_TRUE);
evas_object_size_hint_align_set(sent, EVAS_HINT_FILL, 0.0);
evas_object_size_hint_weight_set(sent, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(hbx, sent);
elm_table_pack(tbl, sent, 1, 0, 1, 1);
evas_object_show(sent);
hbx = elm_box_add(win);
elm_box_homogeneous_set(hbx, EINA_FALSE);
elm_box_padding_set(hbx, 15, 0);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0.0);
evas_object_show(hbx);
elm_box_pack_end(bx, hbx);
lbl = elm_label_add(win);
elm_object_text_set(lbl, _("Replace with:"));
evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, 0.5);
elm_object_text_set(lbl, _("Replace:"));
evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, 1.0);
evas_object_size_hint_weight_set(lbl, 0.0, 0.0);
elm_box_pack_end(hbx, lbl);
elm_table_pack(tbl, lbl, 0, 1, 1, 1);
evas_object_show(lbl);
rent = elm_entry_add(win);
@ -199,36 +189,57 @@ ui_find_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
elm_entry_single_line_set(rent, EINA_TRUE);
evas_object_size_hint_align_set(rent, EVAS_HINT_FILL, 0.0);
evas_object_size_hint_weight_set(rent, EVAS_HINT_EXPAND, 0.0);
elm_box_pack_end(hbx, rent);
elm_table_pack(tbl, rent, 1, 1, 1, 1);
evas_object_show(rent);
hbx = elm_box_add(win);
elm_box_homogeneous_set(hbx, EINA_FALSE);
elm_box_padding_set(hbx, 15, 0);
elm_box_horizontal_set(hbx, EINA_TRUE);
evas_object_size_hint_align_set(hbx, 1.0, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, 0.0, 0.0);
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0.0);
evas_object_show(hbx);
elm_box_pack_end(bx, hbx);
exp = elm_box_add(win);
evas_object_size_hint_align_set(exp, 1.0, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(exp, EVAS_HINT_EXPAND, 0.0);
elm_box_horizontal_set(exp, EINA_TRUE);
elm_box_homogeneous_set(exp, EINA_TRUE);
evas_object_show(exp);
elm_box_pack_end(hbx, exp);
pad = elm_frame_add(win);
elm_object_style_set(pad, "pad_small");
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(pad, EVAS_HINT_EXPAND, 0.0);
evas_object_show(pad);
btn = elm_button_add(win);
elm_object_text_set(btn, _("Find"));
evas_object_size_hint_align_set(btn, 1.0, 0.0);
evas_object_size_hint_weight_set(btn, 0.0, 0.0);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_show(btn);
elm_box_pack_end(hbx, btn);
elm_object_content_set(pad, btn);
elm_box_pack_end(exp, pad);
evas_object_smart_callback_add(btn, "clicked", _find_clicked, entry);
pad = elm_frame_add(win);
elm_object_style_set(pad, "pad_small");
evas_object_size_hint_align_set(pad, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(pad, EVAS_HINT_EXPAND, 0.0);
evas_object_show(pad);
btn = elm_button_add(win);
elm_object_text_set(btn, _("Replace"));
evas_object_size_hint_align_set(btn, 1.0, 0.0);
evas_object_size_hint_weight_set(btn, 0.0, 0.0);
evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
evas_object_show(btn);
elm_box_pack_end(hbx, btn);
elm_object_content_set(pad, btn);
elm_box_pack_end(exp, pad);
evas_object_smart_callback_add(btn, "clicked", _replace_clicked, entry);
/* Forcing it to be the min height. */
evas_object_resize(win, 300, 1);
evas_object_resize(win, 250, 1);
evas_object_show(win);
cur_find = NULL;