forked from enlightenment/ecrire
ecrire: Move things...add toolbar.
More changes...to come.
This commit is contained in:
parent
6d63c0cb09
commit
dfb5a9594d
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _MESS_HEADER_H
|
#ifndef _ECRIRE_H
|
||||||
#define _MESS_HEADER_H
|
#define _ECRIRE_H
|
||||||
|
|
||||||
#include <Evas.h>
|
#include <Evas.h>
|
||||||
|
|
||||||
|
@ -18,7 +18,15 @@ struct _Ecrire_Entry {
|
||||||
Evas_Object *win;
|
Evas_Object *win;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
int unsaved;
|
int unsaved;
|
||||||
Elm_Object_Item *copy_item, *cut_item, *save_item, *paste_item, *undo_item, *redo_item;
|
struct
|
||||||
|
{
|
||||||
|
Elm_Object_Item *copy, *cut, *save, *paste, *undo, *redo;
|
||||||
|
} menu;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
Elm_Object_Item *copy, *cut, *save, *paste, *undo, *redo;
|
||||||
|
} toolbar;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -35,9 +43,10 @@ struct _Ecrire_Entry {
|
||||||
|
|
||||||
typedef struct _Ecrire_Entry Ecrire_Entry;
|
typedef struct _Ecrire_Entry Ecrire_Entry;
|
||||||
|
|
||||||
void editor_font_choose(Ecrire_Entry *ent, const char *font, int size);
|
void ecrire_font_set_save(Ecrire_Entry *inst, const char *font, int size);
|
||||||
void editor_save(Ecrire_Entry *ent, void *callback_func);
|
void ecrire_entry_font_set(Ecrire_Entry *inst, const char *font, int font_size);
|
||||||
void save_do(const char *file, Ecrire_Entry *ent);
|
void ecrire_save(Ecrire_Entry *inst, void *callback_func);
|
||||||
|
void ecrire_entry_save(Ecrire_Entry *inst, const char *file);
|
||||||
|
|
||||||
#ifdef ENABLE_NLS
|
#ifdef ENABLE_NLS
|
||||||
# include <libintl.h>
|
# include <libintl.h>
|
|
@ -2,7 +2,7 @@
|
||||||
#include <Efreet.h>
|
#include <Efreet.h>
|
||||||
|
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
#include "mess_header.h"
|
#include "Ecrire.h"
|
||||||
|
|
||||||
Ent_Cfg *_ent_cfg;
|
Ent_Cfg *_ent_cfg;
|
||||||
static Eet_Data_Descriptor * _ent_cfg_descriptor;
|
static Eet_Data_Descriptor * _ent_cfg_descriptor;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "file_utils.h"
|
#include "file_utils.h"
|
||||||
#include "mess_header.h"
|
#include "Ecrire.h"
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
_buf_append(char *buf, const char *str, int *len, int *alloc)
|
_buf_append(char *buf, const char *str, int *len, int *alloc)
|
||||||
|
|
177
src/bin/main.c
177
src/bin/main.c
|
@ -2,7 +2,7 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "mess_header.h"
|
#include "Ecrire.h"
|
||||||
#include "file_utils.h"
|
#include "file_utils.h"
|
||||||
#include "cfg.h"
|
#include "cfg.h"
|
||||||
#include "ui/ui.h"
|
#include "ui/ui.h"
|
||||||
|
@ -10,16 +10,22 @@
|
||||||
static Eina_Unicode plain_utf8 = EINA_TRUE;
|
static Eina_Unicode plain_utf8 = EINA_TRUE;
|
||||||
|
|
||||||
static void print_usage(const char *bin);
|
static void print_usage(const char *bin);
|
||||||
static void editor_font_set(Ecrire_Entry *inst, const char *font, int font_size);
|
|
||||||
|
|
||||||
/* specific log domain to help debug only ecrire */
|
/* specific log domain to help debug only ecrire */
|
||||||
int _ecrire_log_dom = -1;
|
int _ecrire_log_dom = -1;
|
||||||
|
|
||||||
|
static void
|
||||||
|
_win_del_do(void *data)
|
||||||
|
{
|
||||||
|
Ecrire_Entry *inst = data;
|
||||||
|
evas_object_del(inst->win);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_init_entry(Ecrire_Entry *inst)
|
_init_entry(Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
Elm_Entry_Change_Info *inf;
|
Elm_Entry_Change_Info *inf;
|
||||||
editor_font_set(inst, inst->font.name, inst->font.size);
|
ecrire_entry_font_set(inst, inst->font.name, inst->font.size);
|
||||||
|
|
||||||
/* Init the undo stack */
|
/* Init the undo stack */
|
||||||
EINA_LIST_FREE(inst->undo_stack, inf)
|
EINA_LIST_FREE(inst->undo_stack, inf)
|
||||||
|
@ -42,21 +48,17 @@ _init_entry(Ecrire_Entry *inst)
|
||||||
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
||||||
inst->undo_stack_can_merge = EINA_FALSE;
|
inst->undo_stack_can_merge = EINA_FALSE;
|
||||||
|
|
||||||
elm_object_item_disabled_set(inst->undo_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.undo, EINA_TRUE);
|
||||||
elm_object_item_disabled_set(inst->redo_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.redo, EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_alert_if_need_saving(void (*done)(void *data), Ecrire_Entry *inst)
|
_alert_if_need_saving(void (*cb_done)(void *data), Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
if (!elm_object_item_disabled_get(inst->save_item))
|
if (!elm_object_item_disabled_get(inst->menu.save))
|
||||||
{
|
ui_alert_need_saving(inst->entry, cb_done, inst);
|
||||||
ui_alert_need_saving(inst->entry, done, inst);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
cb_done(inst);
|
||||||
done(inst);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -64,8 +66,10 @@ _cb_sel_start(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
elm_object_item_disabled_set(inst->copy_item, EINA_FALSE);
|
elm_object_item_disabled_set(inst->menu.copy, EINA_FALSE);
|
||||||
elm_object_item_disabled_set(inst->cut_item, EINA_FALSE);
|
elm_object_item_disabled_set(inst->menu.cut, EINA_FALSE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.copy, EINA_FALSE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.cut, EINA_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -73,14 +77,16 @@ _cb_sel_clear(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
elm_object_item_disabled_set(inst->copy_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.copy, EINA_TRUE);
|
||||||
elm_object_item_disabled_set(inst->cut_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.cut, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.copy, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.cut, EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_update_cur_file(const char *file, Ecrire_Entry *inst)
|
_update_cur_file(const char *file, Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
const char *saving = (!elm_object_item_disabled_get(inst->save_item)) ?
|
const char *saving = (!elm_object_item_disabled_get(inst->menu.save)) ?
|
||||||
"*" : "";
|
"*" : "";
|
||||||
eina_stringshare_replace(&inst->filename, file);
|
eina_stringshare_replace(&inst->filename, file);
|
||||||
{
|
{
|
||||||
|
@ -131,19 +137,28 @@ _cb_cur_changed_manual(void *data, Evas_Object *obj EINA_UNUSED, void *event_inf
|
||||||
static void
|
static void
|
||||||
_update_undo_redo_items(Ecrire_Entry *inst)
|
_update_undo_redo_items(Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
elm_object_item_disabled_set(inst->undo_item,
|
Eina_Bool disabled;
|
||||||
!eina_list_next(inst->undo_stack_ptr));
|
|
||||||
elm_object_item_disabled_set(inst->redo_item,
|
disabled = !eina_list_next(inst->undo_stack_ptr);
|
||||||
!eina_list_prev(inst->undo_stack_ptr));
|
|
||||||
|
elm_object_item_disabled_set(inst->menu.undo, disabled);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.undo, disabled);
|
||||||
|
|
||||||
|
disabled = !eina_list_prev(inst->undo_stack_ptr);
|
||||||
|
|
||||||
|
elm_object_item_disabled_set(inst->menu.redo, disabled);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.redo, disabled);
|
||||||
|
|
||||||
if (inst->undo_stack_ptr == inst->last_saved_stack_ptr)
|
if (inst->undo_stack_ptr == inst->last_saved_stack_ptr)
|
||||||
{
|
{
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_TRUE);
|
||||||
_update_cur_file(inst->filename, inst);
|
_update_cur_file(inst->filename, inst);
|
||||||
}
|
}
|
||||||
else if (elm_object_item_disabled_get(inst->save_item))
|
else if (elm_object_item_disabled_get(inst->menu.save))
|
||||||
{
|
{
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_FALSE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_FALSE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_FALSE);
|
||||||
_update_cur_file(inst->filename, inst);
|
_update_cur_file(inst->filename, inst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -325,7 +340,8 @@ static void
|
||||||
_cb_ent_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
_cb_ent_changed(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_FALSE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_FALSE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_FALSE);
|
||||||
_update_cur_file(inst->filename, inst);
|
_update_cur_file(inst->filename, inst);
|
||||||
|
|
||||||
/* Undo/redo */
|
/* Undo/redo */
|
||||||
|
@ -355,7 +371,8 @@ _load_to_entry(Ecrire_Entry *inst, const char *file)
|
||||||
elm_object_text_set(inst->entry, "");
|
elm_object_text_set(inst->entry, "");
|
||||||
_init_entry(inst);
|
_init_entry(inst);
|
||||||
elm_entry_entry_append(inst->entry, buf);
|
elm_entry_entry_append(inst->entry, buf);
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_TRUE);
|
||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -381,7 +398,7 @@ _cb_fs_open_done(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
save_do(const char *file, Ecrire_Entry *inst)
|
ecrire_entry_save(Ecrire_Entry *inst, const char *file)
|
||||||
{
|
{
|
||||||
Eina_Bool ok;
|
Eina_Bool ok;
|
||||||
|
|
||||||
|
@ -392,7 +409,8 @@ save_do(const char *file, Ecrire_Entry *inst)
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_TRUE);
|
||||||
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
inst->last_saved_stack_ptr = inst->undo_stack_ptr;
|
||||||
_update_cur_file(file, inst);
|
_update_cur_file(file, inst);
|
||||||
}
|
}
|
||||||
|
@ -400,14 +418,14 @@ save_do(const char *file, Ecrire_Entry *inst)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cb_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_cb_fs_ecrire_entry_save(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info)
|
void *event_info)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
const char *selected = event_info;
|
const char *filename = event_info;
|
||||||
|
|
||||||
if (selected)
|
if (filename)
|
||||||
save_do(selected, inst);
|
ecrire_entry_save(inst, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -432,10 +450,10 @@ _cb_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
editor_save(Ecrire_Entry *inst, void *callback_func)
|
ecrire_save(Ecrire_Entry *inst, void *callback_func)
|
||||||
{
|
{
|
||||||
if (inst->filename)
|
if (inst->filename)
|
||||||
save_do(inst->filename, inst);
|
ecrire_entry_save(inst, inst->filename);
|
||||||
else
|
else
|
||||||
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, callback_func, inst);
|
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, callback_func, inst);
|
||||||
}
|
}
|
||||||
|
@ -444,20 +462,14 @@ static void
|
||||||
_cb_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_cb_save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
editor_save(inst, _cb_fs_save_done);
|
ecrire_save(inst, _cb_fs_ecrire_entry_save);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cb_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
_cb_save_as(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *inst = data;
|
Ecrire_Entry *inst = data;
|
||||||
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, _cb_fs_save_done, inst);
|
ui_file_open_save_dialog_open(inst->win, EINA_TRUE, _cb_fs_ecrire_entry_save, inst);
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_win_del_do(void *data EINA_UNUSED)
|
|
||||||
{
|
|
||||||
elm_exit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -471,7 +483,8 @@ _new_do(void *data)
|
||||||
{
|
{
|
||||||
elm_object_text_set(inst->entry, "");
|
elm_object_text_set(inst->entry, "");
|
||||||
_init_entry(inst);
|
_init_entry(inst);
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
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);
|
_update_cur_file(NULL, inst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -560,8 +573,8 @@ _cb_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
editor_font_set(Ecrire_Entry *inst, const char *font, int font_size)
|
ecrire_entry_font_set(Ecrire_Entry *inst, const char *font, int font_size)
|
||||||
{
|
{
|
||||||
const Evas_Object *tb = elm_entry_textblock_get(inst->entry);
|
const Evas_Object *tb = elm_entry_textblock_get(inst->entry);
|
||||||
Eina_Strbuf *sbuf;
|
Eina_Strbuf *sbuf;
|
||||||
|
@ -592,9 +605,9 @@ editor_font_set(Ecrire_Entry *inst, const char *font, int font_size)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
editor_font_choose(Ecrire_Entry *inst, const char *font, int size)
|
ecrire_font_set_save(Ecrire_Entry *inst, const char *font, int size)
|
||||||
{
|
{
|
||||||
editor_font_set(inst, font, size);
|
ecrire_entry_font_set(inst, font, size);
|
||||||
|
|
||||||
eina_stringshare_replace(&_ent_cfg->font.name, font);
|
eina_stringshare_replace(&_ent_cfg->font.name, font);
|
||||||
_ent_cfg->font.size = size;
|
_ent_cfg->font.size = size;
|
||||||
|
@ -602,6 +615,46 @@ editor_font_choose(Ecrire_Entry *inst, const char *font, int size)
|
||||||
ecrire_cfg_save();
|
ecrire_cfg_save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static Evas_Object *
|
||||||
|
_ecrire_toolbar_add(Ecrire_Entry *inst)
|
||||||
|
{
|
||||||
|
Evas_Object *tb;
|
||||||
|
Elm_Object_Item *it;
|
||||||
|
|
||||||
|
tb = elm_toolbar_add(inst->win);
|
||||||
|
elm_toolbar_align_set(tb, 0);
|
||||||
|
elm_toolbar_horizontal_set(tb, 1);
|
||||||
|
elm_toolbar_icon_size_set(tb, 24);
|
||||||
|
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0);
|
||||||
|
evas_object_show(tb);
|
||||||
|
|
||||||
|
elm_toolbar_item_append(tb, "document-new", _("New"), _cb_new, inst);
|
||||||
|
elm_toolbar_item_append(tb, "document-open", _("Open"), _cb_open, inst);
|
||||||
|
inst->toolbar.save = elm_toolbar_item_append(tb, "document-save", _("Save"), _cb_save, inst);
|
||||||
|
elm_toolbar_item_append(tb, "document-save-as", _("Save As"), _cb_save_as, inst);
|
||||||
|
it = elm_toolbar_item_append(tb, "separator", "", NULL, NULL);
|
||||||
|
elm_toolbar_item_separator_set(it, 1);
|
||||||
|
inst->toolbar.cut = elm_toolbar_item_append(tb, "edit-cut", _("Cut"), _cb_cut, inst);
|
||||||
|
inst->toolbar.copy = elm_toolbar_item_append(tb, "edit-copy", _("Copy"), _cb_copy, inst);
|
||||||
|
inst->toolbar.paste = elm_toolbar_item_append(tb, "edit-paste", _("Paste"), _cb_paste, inst);
|
||||||
|
it = elm_toolbar_item_append(tb, "separator", "", NULL, NULL);
|
||||||
|
elm_toolbar_item_separator_set(it, 1);
|
||||||
|
inst->toolbar.undo = elm_toolbar_item_append(tb, "edit-undo", _("Undo"), _cb_undo, inst);
|
||||||
|
inst->toolbar.redo = elm_toolbar_item_append(tb, "edit-redo", _("Redo"), _cb_redo, inst);
|
||||||
|
elm_toolbar_item_append(tb, "edit-find-replace", _("Find"), _cb_find, inst);
|
||||||
|
elm_toolbar_item_append(tb, "go-jump", _("Go to..."), _cb_goto_line, inst);
|
||||||
|
it = elm_toolbar_item_append(tb, "separator", "", NULL, NULL);
|
||||||
|
elm_toolbar_item_separator_set(it, 1);
|
||||||
|
elm_toolbar_item_append(tb, "preferences-system", _("Settings"), _cb_font_settings, inst);
|
||||||
|
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.copy, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.cut, EINA_TRUE);
|
||||||
|
elm_object_item_disabled_set(inst->toolbar.save, EINA_TRUE);
|
||||||
|
return tb;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecrire_menu_add(Ecrire_Entry *inst)
|
_ecrire_menu_add(Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
|
@ -612,40 +665,42 @@ _ecrire_menu_add(Ecrire_Entry *inst)
|
||||||
it = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL);
|
it = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL);
|
||||||
elm_menu_item_add(menu, it, "document-new", _("New"), _cb_new, inst);
|
elm_menu_item_add(menu, it, "document-new", _("New"), _cb_new, inst);
|
||||||
elm_menu_item_add(menu, it, "document-open", _("Open"), _cb_open, inst);
|
elm_menu_item_add(menu, it, "document-open", _("Open"), _cb_open, inst);
|
||||||
inst->save_item =
|
inst->menu.save =
|
||||||
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", _("Exit"), _cb_exit, inst);
|
||||||
|
|
||||||
it = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL);
|
it = elm_menu_item_add(menu, NULL, NULL, _("Edit"), NULL, NULL);
|
||||||
inst->cut_item =
|
inst->menu.cut =
|
||||||
elm_menu_item_add(menu, it, "edit-cut", _("Cut"), _cb_cut, inst);
|
elm_menu_item_add(menu, it, "edit-cut", _("Cut"), _cb_cut, inst);
|
||||||
inst->copy_item =
|
inst->menu.copy =
|
||||||
elm_menu_item_add(menu, it, "edit-copy", _("Copy"), _cb_copy, inst);
|
elm_menu_item_add(menu, it, "edit-copy", _("Copy"), _cb_copy, inst);
|
||||||
inst->paste_item =
|
inst->menu.paste =
|
||||||
elm_menu_item_add(menu, it, "edit-paste", _("Paste"), _cb_paste, inst);
|
elm_menu_item_add(menu, it, "edit-paste", _("Paste"), _cb_paste, inst);
|
||||||
elm_menu_item_separator_add(menu, it);
|
elm_menu_item_separator_add(menu, it);
|
||||||
inst->undo_item =
|
inst->menu.undo =
|
||||||
elm_menu_item_add(menu, it, "edit-undo", _("Undo"), _cb_undo, inst);
|
elm_menu_item_add(menu, it, "edit-undo", _("Undo"), _cb_undo, inst);
|
||||||
inst->redo_item =
|
inst->menu.redo =
|
||||||
elm_menu_item_add(menu, it, "edit-redo", _("Redo"), _cb_redo, inst);
|
elm_menu_item_add(menu, it, "edit-redo", _("Redo"), _cb_redo, inst);
|
||||||
elm_menu_item_separator_add(menu, it);
|
elm_menu_item_separator_add(menu, it);
|
||||||
elm_menu_item_add(menu, it, "edit-find-replace", _("Find"), _cb_find, inst);
|
elm_menu_item_add(menu, it, "edit-find-replace", _("Find"), _cb_find, inst);
|
||||||
elm_menu_item_add(menu, it, "go-jump", _("Go to line.."), _cb_goto_line, inst);
|
elm_menu_item_add(menu, it, "go-jump", _("Go to line..."), _cb_goto_line, inst);
|
||||||
elm_menu_item_separator_add(menu, it);
|
elm_menu_item_separator_add(menu, it);
|
||||||
elm_menu_item_add(menu, it, "preferences-system", _("Settings"), _cb_font_settings, inst);
|
elm_menu_item_add(menu, it, "preferences-system", _("Settings"), _cb_font_settings, inst);
|
||||||
|
|
||||||
/* We don't have a selection when we start, make the items disabled */
|
/* We don't have a selection when we start, make the items disabled */
|
||||||
elm_object_item_disabled_set(inst->copy_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.copy, EINA_TRUE);
|
||||||
elm_object_item_disabled_set(inst->cut_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.cut, EINA_TRUE);
|
||||||
elm_object_item_disabled_set(inst->save_item, EINA_TRUE);
|
elm_object_item_disabled_set(inst->menu.save, EINA_TRUE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI_MAIN int
|
EAPI_MAIN int
|
||||||
elm_main(int argc, char **argv)
|
elm_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info;
|
Evas_Object *win, *pad, *fr, *bx, *entry, *cur_info;
|
||||||
|
Evas_Object *toolbar;
|
||||||
Evas_Coord w = 600, h = 600;
|
Evas_Coord w = 600, h = 600;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
|
@ -718,6 +773,7 @@ elm_main(int argc, char **argv)
|
||||||
|
|
||||||
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("erire", "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);
|
||||||
|
|
||||||
|
@ -726,6 +782,9 @@ elm_main(int argc, char **argv)
|
||||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_show(bx);
|
evas_object_show(bx);
|
||||||
|
|
||||||
|
toolbar = _ecrire_toolbar_add(inst);
|
||||||
|
elm_box_pack_end(bx, toolbar);
|
||||||
|
|
||||||
inst->frame = fr = elm_frame_add(win);
|
inst->frame = fr = elm_frame_add(win);
|
||||||
evas_object_size_hint_align_set(fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
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_size_hint_weight_set(fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
|
|
@ -4,7 +4,7 @@ executable('ecrire', [
|
||||||
'file_utils.c',
|
'file_utils.c',
|
||||||
'file_utils.h',
|
'file_utils.h',
|
||||||
'main.c',
|
'main.c',
|
||||||
'mess_header.h',
|
'Ecrire.h',
|
||||||
'ui/alerts.c',
|
'ui/alerts.c',
|
||||||
'ui/file_related.c',
|
'ui/file_related.c',
|
||||||
'ui/settings.c',
|
'ui/settings.c',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
static void *done_data;
|
static void *done_data;
|
||||||
static void (*done_cb)(void *data);
|
static void (*done_cb)(void *data);
|
||||||
|
@ -11,19 +11,22 @@ _discard(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecrire_Entry *ent = done_data;
|
Ecrire_Entry *ent = done_data;
|
||||||
|
|
||||||
evas_object_del(data);
|
if (data)
|
||||||
|
evas_object_del(data);
|
||||||
done_cb(ent);
|
done_cb(ent);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_fs_save_done(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_fs_save_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;
|
||||||
|
|
||||||
|
inst = done_data;
|
||||||
if (selected)
|
if (selected)
|
||||||
{
|
{
|
||||||
save_do(selected, done_data);
|
ecrire_entry_save(inst, selected);
|
||||||
done_cb(data);
|
done_cb(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +37,7 @@ _save(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
Ecrire_Entry *ent = done_data;
|
Ecrire_Entry *ent = done_data;
|
||||||
|
|
||||||
evas_object_del(data);
|
evas_object_del(data);
|
||||||
editor_save(ent, _fs_save_done);
|
ecrire_save(ent, _fs_save_done);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
typedef struct _File_Selector_Data
|
typedef struct _File_Selector_Data
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
static Evas_Object *goto_win, *sent;
|
static Evas_Object *goto_popup, *sent;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_goto_do(Evas_Object *entry, const char *text)
|
_goto_do(Evas_Object *entry, const char *text)
|
||||||
|
@ -14,86 +14,93 @@ _goto_do(Evas_Object *entry, const char *text)
|
||||||
|
|
||||||
line = atoi(text);
|
line = atoi(text);
|
||||||
|
|
||||||
|
evas_object_hide(goto_popup);
|
||||||
if (line > 0)
|
if (line > 0)
|
||||||
{
|
{
|
||||||
evas_object_hide(goto_win);
|
evas_textblock_cursor_line_set(mcur, line-1);
|
||||||
evas_textblock_cursor_line_set(mcur, line-1);
|
elm_entry_calc_force(entry);
|
||||||
elm_entry_calc_force(entry);
|
evas_object_smart_callback_call(entry, "cursor,changed", NULL);
|
||||||
|
elm_object_focus_set(entry, EINA_TRUE);
|
||||||
elm_object_focus_set(entry, EINA_TRUE);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_goto_clicked(void *data,
|
_cb_goto_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
||||||
{
|
{
|
||||||
_goto_do(data, elm_object_text_get(sent));
|
_goto_do(data, elm_object_text_get(sent));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_my_win_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
|
_cb_goto_key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||||
|
{
|
||||||
|
Evas_Event_Key_Down *ev;
|
||||||
|
|
||||||
|
ev = event_info;
|
||||||
|
|
||||||
|
if (!strcmp(ev->keyname, "Return"))
|
||||||
|
{
|
||||||
|
_goto_do(data, elm_object_text_get(sent));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_my_parent_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
(void) obj;
|
(void) obj;
|
||||||
(void) event_info;
|
(void) event_info;
|
||||||
/* Reset the stuff that need reseting */
|
/* Reset the stuff that need reseting */
|
||||||
goto_win = NULL;
|
goto_popup = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
ui_goto_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
|
ui_goto_dialog_open(Evas_Object *parent, Ecrire_Entry *ent)
|
||||||
{
|
{
|
||||||
Evas_Object *entry = ent->entry;
|
Evas_Object *entry = ent->entry;
|
||||||
Evas_Object *win, *bg, *bx, *hbx, *btn;
|
Evas_Object *popup, *bx, *hbx, *btn;
|
||||||
|
|
||||||
if (goto_win)
|
if (goto_popup)
|
||||||
{
|
{
|
||||||
evas_object_show(goto_win);
|
evas_object_show(goto_popup);
|
||||||
return goto_win;
|
return goto_popup;
|
||||||
}
|
}
|
||||||
|
|
||||||
goto_win = win = elm_win_add(parent, "jump-to", ELM_WIN_TOOLBAR);
|
goto_popup = popup = elm_popup_add(parent);
|
||||||
elm_win_autodel_set(win, EINA_TRUE);
|
elm_object_part_text_set(popup, "title,text", _("Go to line..."));
|
||||||
elm_win_title_set(win, _("Jump to"));
|
evas_object_smart_callback_add(popup, "dismissed", _my_parent_del, entry);
|
||||||
evas_object_smart_callback_add(win, "delete,request", _my_win_del, entry);
|
|
||||||
|
|
||||||
bg = elm_bg_add(win);
|
bx = elm_box_add(parent);
|
||||||
elm_win_resize_object_add(win, bg);
|
|
||||||
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
||||||
evas_object_show(bg);
|
|
||||||
|
|
||||||
bx = elm_box_add(win);
|
|
||||||
elm_win_resize_object_add(win, bx);
|
|
||||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_show(bx);
|
evas_object_show(bx);
|
||||||
|
|
||||||
hbx = elm_box_add(win);
|
hbx = elm_box_add(parent);
|
||||||
elm_box_horizontal_set(hbx, EINA_TRUE);
|
elm_box_horizontal_set(hbx, EINA_TRUE);
|
||||||
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(hbx, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_show(hbx);
|
evas_object_show(hbx);
|
||||||
elm_box_pack_end(bx, hbx);
|
elm_box_pack_end(bx, hbx);
|
||||||
|
|
||||||
sent = elm_entry_add(win);
|
sent = elm_entry_add(parent);
|
||||||
elm_entry_scrollable_set(sent, EINA_TRUE);
|
elm_entry_scrollable_set(sent, EINA_TRUE);
|
||||||
elm_entry_single_line_set(sent, EINA_TRUE);
|
elm_entry_single_line_set(sent, EINA_TRUE);
|
||||||
|
elm_entry_editable_set(sent, EINA_TRUE);
|
||||||
evas_object_size_hint_align_set(sent, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
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);
|
evas_object_size_hint_weight_set(sent, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
elm_box_pack_end(hbx, sent);
|
elm_box_pack_end(hbx, sent);
|
||||||
evas_object_show(sent);
|
evas_object_show(sent);
|
||||||
|
evas_object_event_callback_add(sent, EVAS_CALLBACK_KEY_DOWN, _cb_goto_key_down, entry);
|
||||||
|
|
||||||
btn = elm_button_add(win);
|
btn = elm_button_add(parent);
|
||||||
elm_object_text_set(btn, _("Go"));
|
elm_object_text_set(btn, _("Go"));
|
||||||
evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 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_size_hint_weight_set(btn, 0.1, EVAS_HINT_EXPAND);
|
||||||
evas_object_show(btn);
|
evas_object_show(btn);
|
||||||
elm_box_pack_end(hbx, btn);
|
elm_box_pack_end(hbx, btn);
|
||||||
evas_object_smart_callback_add(btn, "clicked", _goto_clicked, entry);
|
evas_object_smart_callback_add(btn, "clicked", _cb_goto_clicked, entry);
|
||||||
|
elm_object_content_set(popup, bx);
|
||||||
|
|
||||||
/* Forcing it to be the min height. */
|
elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
|
||||||
evas_object_resize(win, 300, 1);
|
evas_object_show(popup);
|
||||||
evas_object_show(win);
|
|
||||||
|
|
||||||
return win;
|
return popup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
static Evas_Object *search_win, *sent, *rent;
|
static Evas_Object *search_win, *sent, *rent;
|
||||||
static Eina_Bool forward = EINA_TRUE;
|
static Eina_Bool forward = EINA_TRUE;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
Evas_Object *_settings_popup;
|
Evas_Object *_settings_popup;
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ _cb_font_selected(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
return;
|
return;
|
||||||
|
|
||||||
eina_stringshare_replace(&inst->font.name, selected);
|
eina_stringshare_replace(&inst->font.name, selected);
|
||||||
editor_font_choose(inst, inst->font.name, inst->font.size);
|
ecrire_font_set_save(inst, inst->font.name, inst->font.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -84,7 +84,7 @@ _cb_spinner_delay_changed(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
inst->font.size = elm_spinner_value_get(obj);
|
inst->font.size = elm_spinner_value_get(obj);
|
||||||
|
|
||||||
if (inst->font.name)
|
if (inst->font.name)
|
||||||
editor_font_choose(inst, inst->font.name, inst->font.size);
|
ecrire_font_set_save(inst, inst->font.name, inst->font.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -102,11 +102,11 @@ _cb_check_changed(void *data, Evas_Object *obj,
|
||||||
if (enabled)
|
if (enabled)
|
||||||
{
|
{
|
||||||
inst->font.name = NULL;
|
inst->font.name = NULL;
|
||||||
editor_font_choose(inst, NULL, 0);
|
ecrire_font_set_save(inst, NULL, 0);
|
||||||
}
|
}
|
||||||
else if (inst->font.name)
|
else if (inst->font.name)
|
||||||
{
|
{
|
||||||
editor_font_choose(inst, inst->font.name, inst->font.size);
|
ecrire_font_set_save(inst, inst->font.name, inst->font.size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,7 +121,6 @@ _cb_btn_clicked(void *data, Evas_Object *obj,
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
ui_settings_open(Evas_Object *parent, Ecrire_Entry *inst)
|
ui_settings_open(Evas_Object *parent, Ecrire_Entry *inst)
|
||||||
{
|
{
|
||||||
Evas_Object *entry = inst->entry;
|
|
||||||
Evas_Object *pop, *tb, *rec, *bx, *hbx, *btn, *list, *lb, *sp, *ck;
|
Evas_Object *pop, *tb, *rec, *bx, *hbx, *btn, *list, *lb, *sp, *ck;
|
||||||
|
|
||||||
if (_settings_popup)
|
if (_settings_popup)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef _UI_H
|
#ifndef _UI_H
|
||||||
#define _UI_H
|
#define _UI_H
|
||||||
|
|
||||||
#include "../mess_header.h"
|
#include "../Ecrire.h"
|
||||||
|
|
||||||
void ui_file_open_save_dialog_open(Evas_Object *parent, Eina_Bool save, Evas_Smart_Cb func, void *data);
|
void ui_file_open_save_dialog_open(Evas_Object *parent, Eina_Bool save, Evas_Smart_Cb func, void *data);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue