2014-02-15 15:17:40 -08:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <libgen.h>
|
|
|
|
|
|
|
|
#include <Eina.h>
|
2014-02-15 16:29:00 -08:00
|
|
|
#include <Eio.h>
|
2014-02-15 15:17:40 -08:00
|
|
|
|
|
|
|
#include "edi_mainview.h"
|
|
|
|
|
|
|
|
#include "edi_private.h"
|
|
|
|
|
2014-03-14 06:44:09 -07:00
|
|
|
static Evas_Object *nf, *tb, *_main_win;
|
2014-03-14 03:30:36 -07:00
|
|
|
static Evas_Object *_edi_mainview_choose_popup;
|
|
|
|
static const char *_edi_mainview_choose_path;
|
2014-02-15 15:17:40 -08:00
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static Eina_List *_edi_mainview_items = NULL;
|
|
|
|
|
2014-02-15 16:29:00 -08:00
|
|
|
static void
|
|
|
|
dummy()
|
|
|
|
{}
|
|
|
|
|
2014-03-26 09:48:21 -07:00
|
|
|
EAPI void
|
|
|
|
_edi_mainview_item_prev()
|
|
|
|
{
|
|
|
|
Eina_List *item;
|
|
|
|
Elm_Object_Item *current;
|
|
|
|
Edi_Mainview_Item *it, *prev;
|
|
|
|
|
|
|
|
current = elm_naviframe_top_item_get(nf);
|
|
|
|
|
|
|
|
EINA_LIST_FOREACH(_edi_mainview_items, item, it)
|
|
|
|
{
|
|
|
|
if (it && it->view == current)
|
|
|
|
{
|
|
|
|
edi_mainview_item_select(prev);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
prev = it;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
_edi_mainview_item_next()
|
|
|
|
{
|
|
|
|
Eina_List *item;
|
|
|
|
Elm_Object_Item *current;
|
|
|
|
Edi_Mainview_Item *it;
|
|
|
|
Eina_Bool open_next = EINA_FALSE;
|
|
|
|
|
|
|
|
current = elm_naviframe_top_item_get(nf);
|
|
|
|
|
|
|
|
EINA_LIST_FOREACH(_edi_mainview_items, item, it)
|
|
|
|
{
|
|
|
|
if (it && open_next)
|
|
|
|
{
|
|
|
|
edi_mainview_item_select(it);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (it && it->view == current)
|
|
|
|
open_next = EINA_TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
edi_mainview_item_select(Edi_Mainview_Item *item)
|
|
|
|
{
|
|
|
|
if (item->win)
|
|
|
|
{
|
|
|
|
elm_win_raise(item->win);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
elm_naviframe_item_promote(item->view);
|
|
|
|
elm_toolbar_item_selected_set(item->tab, EINA_TRUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-02-15 15:17:40 -08:00
|
|
|
static void
|
|
|
|
_promote(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
elm_naviframe_item_promote(data);
|
|
|
|
}
|
|
|
|
|
2014-02-26 01:13:28 -08:00
|
|
|
static Edi_Mainview_Item *
|
2014-02-15 16:29:00 -08:00
|
|
|
_get_item_for_path(const char *path)
|
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
Eina_List *item;
|
|
|
|
Edi_Mainview_Item *it;
|
2014-02-15 16:31:10 -08:00
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
EINA_LIST_FOREACH(_edi_mainview_items, item, it)
|
2014-02-15 16:29:00 -08:00
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
if (it && !strcmp(it->path, path))
|
|
|
|
return it;
|
2014-02-15 16:29:00 -08:00
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2014-02-26 01:13:28 -08:00
|
|
|
static Edi_Mainview_Item *
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_item_add(const char *path, Elm_Object_Item *tab, Evas_Object *view,
|
|
|
|
Evas_Object *win)
|
2014-02-26 01:13:28 -08:00
|
|
|
{
|
|
|
|
Edi_Mainview_Item *item;
|
|
|
|
|
|
|
|
item = malloc(sizeof(Edi_Mainview_Item));
|
|
|
|
item->path = path;
|
|
|
|
item->tab = tab;
|
|
|
|
item->view = view;
|
2014-03-13 11:31:24 -07:00
|
|
|
item->win = win;
|
|
|
|
|
|
|
|
_edi_mainview_items = eina_list_append(_edi_mainview_items, item);
|
2014-02-26 01:13:28 -08:00
|
|
|
|
|
|
|
return item;
|
|
|
|
}
|
|
|
|
|
2014-03-26 09:48:21 -07:00
|
|
|
static void
|
|
|
|
_smart_cb_key_down(void *data, Evas *e EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED, void *event)
|
|
|
|
{
|
|
|
|
Eina_Bool ctrl, alt, shift;
|
|
|
|
Evas_Event_Key_Down *ev = event;
|
|
|
|
|
|
|
|
ctrl = evas_key_modifier_is_set(ev->modifiers, "Control");
|
|
|
|
alt = evas_key_modifier_is_set(ev->modifiers, "Alt");
|
|
|
|
shift = evas_key_modifier_is_set(ev->modifiers, "Shift");
|
|
|
|
|
|
|
|
if ((!alt) && (ctrl) && (!shift))
|
|
|
|
{
|
|
|
|
if (!strcmp(ev->key, "Prior"))
|
|
|
|
{
|
|
|
|
_edi_mainview_item_prev();
|
|
|
|
}
|
|
|
|
else if (!strcmp(ev->key, "Next"))
|
|
|
|
{
|
|
|
|
_edi_mainview_item_next();
|
|
|
|
}
|
|
|
|
else if (!strcmp(ev->key, "s"))
|
|
|
|
{
|
|
|
|
edi_mainview_save();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static Evas_Object *
|
|
|
|
_edi_mainview_content_text_create(const char *path, Evas_Object *parent)
|
2014-02-15 15:17:40 -08:00
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
2014-03-26 09:48:21 -07:00
|
|
|
Evas_Modifier_Mask ctrl, shift, alt;
|
|
|
|
Evas *e;
|
2014-02-26 01:13:28 -08:00
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
txt = elm_entry_add(parent);
|
2014-02-26 02:06:54 -08:00
|
|
|
elm_entry_editable_set(txt, EINA_TRUE);
|
2014-02-15 15:17:40 -08:00
|
|
|
elm_entry_scrollable_set(txt, EINA_TRUE);
|
2014-02-23 12:22:47 -08:00
|
|
|
elm_entry_text_style_user_push(txt, "DEFAULT='font=Monospace font_size=12'");
|
2014-02-15 15:17:40 -08:00
|
|
|
elm_entry_file_set(txt, path, ELM_TEXT_FORMAT_PLAIN_UTF8);
|
2014-02-16 09:09:55 -08:00
|
|
|
elm_entry_autosave_set(txt, EDI_CONTENT_AUTOSAVE);
|
2014-02-15 15:17:40 -08:00
|
|
|
evas_object_size_hint_weight_set(txt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(txt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
evas_object_show(txt);
|
|
|
|
|
2014-03-26 09:48:21 -07:00
|
|
|
evas_object_event_callback_add(txt, EVAS_CALLBACK_KEY_DOWN,
|
|
|
|
_smart_cb_key_down, txt);
|
|
|
|
|
|
|
|
e = evas_object_evas_get(txt);
|
|
|
|
ctrl = evas_key_modifier_mask_get(e, "Control");
|
|
|
|
alt = evas_key_modifier_mask_get(e, "Alt");
|
|
|
|
shift = evas_key_modifier_mask_get(e, "Shift");
|
|
|
|
|
|
|
|
evas_object_key_grab(txt, "Prior", ctrl, shift | alt, 1);
|
|
|
|
evas_object_key_grab(txt, "Next", ctrl, shift | alt, 1);
|
|
|
|
evas_object_key_grab(txt, "s", ctrl, shift | alt, 1);
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
return txt;
|
2014-02-15 15:17:40 -08:00
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static Evas_Object *
|
|
|
|
_edi_mainview_content_image_create(const char *path, Evas_Object *parent)
|
2014-02-21 16:16:56 -08:00
|
|
|
{
|
|
|
|
Evas_Object *img, *scroll;
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
scroll = elm_scroller_add(parent);
|
2014-02-21 16:16:56 -08:00
|
|
|
evas_object_size_hint_weight_set(scroll, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(scroll, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
evas_object_show(scroll);
|
|
|
|
img = elm_image_add(scroll);
|
|
|
|
elm_image_file_set(img, path, NULL);
|
|
|
|
elm_image_no_scale_set(img, EINA_TRUE);
|
|
|
|
elm_object_content_set(scroll, img);
|
|
|
|
evas_object_show(img);
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
return scroll;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Evas_Object *
|
|
|
|
_edi_mainview_content_create(const char *path, const char *type, Evas_Object *parent)
|
|
|
|
{
|
|
|
|
if (!strcmp(type, "text"))
|
|
|
|
{
|
|
|
|
return _edi_mainview_content_text_create(path, parent);
|
|
|
|
}
|
|
|
|
else if (!strcmp(type, "image"))
|
|
|
|
{
|
|
|
|
return _edi_mainview_content_image_create(path, parent);
|
|
|
|
}
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_edi_mainview_item_tab_add(const char *path, const char *type)
|
|
|
|
{
|
|
|
|
Evas_Object *content;
|
|
|
|
Elm_Object_Item *it, *tab;
|
|
|
|
Edi_Mainview_Item *item;
|
|
|
|
|
|
|
|
content = _edi_mainview_content_create(path, type, nf);
|
|
|
|
|
|
|
|
it = elm_naviframe_item_simple_push(nf, content);
|
2014-02-21 16:16:56 -08:00
|
|
|
elm_naviframe_item_style_set(it, "overlap");
|
|
|
|
tab = elm_toolbar_item_append(tb, NULL, basename(path), _promote, it);
|
|
|
|
elm_toolbar_item_selected_set(tab, EINA_TRUE);
|
2014-02-26 01:13:28 -08:00
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
item = _edi_mainview_item_add(path, tab, it, NULL);
|
2014-02-26 01:13:28 -08:00
|
|
|
elm_object_item_data_set(it, item);
|
2014-02-21 16:16:56 -08:00
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static void
|
|
|
|
_edi_mainview_win_exit(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
Edi_Mainview_Item *it;
|
|
|
|
|
|
|
|
evas_object_hide(obj);
|
|
|
|
|
|
|
|
it = evas_object_data_get(obj, "edi_mainview_item");
|
|
|
|
_edi_mainview_items = eina_list_remove(_edi_mainview_items, it);
|
2014-03-31 14:24:56 -07:00
|
|
|
eina_stringshare_del(it->path);
|
2014-03-13 11:31:24 -07:00
|
|
|
free(it);
|
|
|
|
}
|
|
|
|
|
2014-03-13 11:48:28 -07:00
|
|
|
static char *
|
|
|
|
_edi_mainview_win_title_get(const char *path)
|
|
|
|
{
|
|
|
|
char *winname, *filename;
|
|
|
|
|
|
|
|
filename = basename(path);
|
|
|
|
winname = malloc((8 + strlen(filename)) * sizeof(char));
|
|
|
|
snprintf(winname, 8 + strlen(filename), "Edi :: %s", filename);
|
|
|
|
|
|
|
|
return winname;
|
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static void
|
|
|
|
_edi_mainview_item_win_add(const char *path, const char *type)
|
|
|
|
{
|
|
|
|
Evas_Object *win, *content;
|
|
|
|
Edi_Mainview_Item *item;
|
|
|
|
|
2014-03-13 11:48:28 -07:00
|
|
|
win = elm_win_util_standard_add("mainview", _edi_mainview_win_title_get(path));
|
2014-03-13 11:31:24 -07:00
|
|
|
if (!win) return;
|
|
|
|
|
|
|
|
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
|
|
|
|
evas_object_smart_callback_add(win, "delete,request", _edi_mainview_win_exit, NULL);
|
|
|
|
item = _edi_mainview_item_add(path, NULL, NULL, win);
|
|
|
|
evas_object_data_set(win, "edi_mainview_item", item);
|
|
|
|
|
|
|
|
content = _edi_mainview_content_create(path, type, win);
|
|
|
|
elm_win_resize_object_add(win, content);
|
|
|
|
|
|
|
|
evas_object_resize(win, 380, 260);
|
|
|
|
evas_object_show(win);
|
|
|
|
}
|
|
|
|
|
2014-03-14 03:30:36 -07:00
|
|
|
static void
|
|
|
|
_edi_mainview_choose_type_tab_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
evas_object_del(_edi_mainview_choose_popup);
|
|
|
|
edi_mainview_open_path(_edi_mainview_choose_path, (const char *) data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_edi_mainview_choose_type_win_cb(void *data,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
evas_object_del(_edi_mainview_choose_popup);
|
|
|
|
edi_mainview_open_window_path(_edi_mainview_choose_path, (const char *) data);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_edi_mainview_choose_type_close_cb(void *data EINA_UNUSED,
|
|
|
|
Evas_Object *obj EINA_UNUSED,
|
|
|
|
void *event_info EINA_UNUSED)
|
|
|
|
{
|
|
|
|
evas_object_del(_edi_mainview_choose_popup);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_edi_mainview_choose_type(Evas_Object *parent, const char *path, void *cb)
|
|
|
|
{
|
2014-03-14 04:42:08 -07:00
|
|
|
Evas_Object *popup, *cancel, *icon;
|
2014-03-14 03:30:36 -07:00
|
|
|
|
2014-03-14 06:44:09 -07:00
|
|
|
popup = elm_popup_add(_main_win);
|
2014-03-14 03:30:36 -07:00
|
|
|
_edi_mainview_choose_popup = popup;
|
|
|
|
_edi_mainview_choose_path = path;
|
|
|
|
|
|
|
|
// popup title
|
|
|
|
elm_object_part_text_set(popup, "title,text",
|
|
|
|
"Unrecognied file type");
|
|
|
|
|
2014-03-14 04:42:08 -07:00
|
|
|
icon = elm_icon_add(popup);
|
|
|
|
elm_icon_standard_set(icon, "txt");
|
|
|
|
elm_popup_item_append(popup, "text", icon, cb, "text");
|
|
|
|
icon = elm_icon_add(popup);
|
|
|
|
elm_icon_standard_set(icon, "image");
|
|
|
|
elm_popup_item_append(popup, "image", icon, cb, "image");
|
2014-03-14 03:30:36 -07:00
|
|
|
|
|
|
|
|
|
|
|
cancel = elm_button_add(popup);
|
|
|
|
elm_object_text_set(cancel, "cancel");
|
|
|
|
elm_object_part_content_set(popup, "button1", cancel);
|
|
|
|
evas_object_smart_callback_add(cancel, "clicked",
|
|
|
|
_edi_mainview_choose_type_close_cb, NULL);
|
|
|
|
|
|
|
|
// popup show should be called after adding all the contents and the buttons
|
|
|
|
// of popup to set the focus into popup's contents correctly.
|
|
|
|
evas_object_show(popup);
|
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
static void
|
|
|
|
_edi_mainview_tab_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *stat)
|
|
|
|
{
|
|
|
|
const char *path, *mime;
|
|
|
|
|
|
|
|
path = data;
|
|
|
|
if (S_ISREG(stat->mode))
|
|
|
|
{
|
|
|
|
mime = efreet_mime_type_get(path);
|
|
|
|
if (!strcasecmp(mime, "text/plain") || !strcasecmp(mime, "application/x-shellscript"))
|
|
|
|
_edi_mainview_item_tab_add(path, "text");
|
|
|
|
else if (!strcasecmp(mime, "text/x-chdr") || !strcasecmp(mime, "text/x-csrc"))
|
|
|
|
_edi_mainview_item_tab_add(path, "text"); // TODO make a code view
|
|
|
|
else if (!strncasecmp(mime, "image/", 6))
|
|
|
|
_edi_mainview_item_tab_add(path, "image");
|
|
|
|
else
|
2014-03-14 03:30:36 -07:00
|
|
|
_edi_mainview_choose_type(nf, path, _edi_mainview_choose_type_tab_cb);
|
2014-03-13 11:31:24 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
eina_stringshare_del(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
_edi_mainview_win_stat_done(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *stat)
|
2014-02-15 16:29:00 -08:00
|
|
|
{
|
2014-02-19 11:24:50 -08:00
|
|
|
const char *path, *mime;
|
2014-02-15 16:31:10 -08:00
|
|
|
|
2014-02-15 16:29:00 -08:00
|
|
|
path = data;
|
|
|
|
if (S_ISREG(stat->mode))
|
|
|
|
{
|
2014-02-19 11:24:50 -08:00
|
|
|
mime = efreet_mime_type_get(path);
|
|
|
|
if (!strcasecmp(mime, "text/plain") || !strcasecmp(mime, "application/x-shellscript"))
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_item_win_add(path, "text");
|
2014-02-19 11:24:50 -08:00
|
|
|
else if (!strcasecmp(mime, "text/x-chdr") || !strcasecmp(mime, "text/x-csrc"))
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_item_win_add(path, "text"); // TODO make a code view
|
2014-02-21 16:16:56 -08:00
|
|
|
else if (!strncasecmp(mime, "image/", 6))
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_item_win_add(path, "image");
|
2014-02-19 11:24:50 -08:00
|
|
|
else
|
2014-03-14 03:30:36 -07:00
|
|
|
_edi_mainview_choose_type(nf, path, _edi_mainview_choose_type_win_cb);
|
2014-02-15 16:29:00 -08:00
|
|
|
}
|
2014-02-15 16:31:10 -08:00
|
|
|
|
2014-02-15 16:29:00 -08:00
|
|
|
eina_stringshare_del(path);
|
|
|
|
}
|
|
|
|
|
2014-02-25 23:28:24 -08:00
|
|
|
EAPI void
|
2014-02-26 00:17:44 -08:00
|
|
|
edi_mainview_open_path(const char *path, const char *type)
|
2014-02-25 23:28:24 -08:00
|
|
|
{
|
2014-02-26 01:13:28 -08:00
|
|
|
Edi_Mainview_Item *it;
|
2014-02-25 23:28:24 -08:00
|
|
|
|
2014-03-31 14:24:56 -07:00
|
|
|
path = eina_stringshare_add(path);
|
2014-02-25 23:28:24 -08:00
|
|
|
it = _get_item_for_path(path);
|
|
|
|
if (it)
|
|
|
|
{
|
2014-03-26 09:48:21 -07:00
|
|
|
edi_mainview_item_select(it);
|
2014-03-31 14:24:56 -07:00
|
|
|
eina_stringshare_del(path);
|
2014-02-25 23:28:24 -08:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2014-02-26 00:17:44 -08:00
|
|
|
if (type == NULL)
|
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
eio_file_direct_stat(path, _edi_mainview_tab_stat_done, dummy,
|
2014-02-26 00:17:44 -08:00
|
|
|
eina_stringshare_add(path));
|
|
|
|
}
|
2014-03-13 11:31:24 -07:00
|
|
|
else
|
2014-02-25 23:28:24 -08:00
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_item_tab_add(path, type);
|
2014-02-25 23:28:24 -08:00
|
|
|
}
|
2014-03-13 11:31:24 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
edi_mainview_open_window_path(const char *path, const char *type)
|
|
|
|
{
|
|
|
|
Edi_Mainview_Item *it;
|
|
|
|
|
|
|
|
it = _get_item_for_path(path);
|
|
|
|
if (it)
|
|
|
|
{
|
2014-03-26 09:48:21 -07:00
|
|
|
edi_mainview_item_select(it);
|
2014-03-13 11:31:24 -07:00
|
|
|
elm_naviframe_item_pop(nf);
|
|
|
|
elm_object_item_del(elm_toolbar_selected_item_get(tb));
|
|
|
|
_edi_mainview_items = eina_list_remove(_edi_mainview_items, it);
|
|
|
|
free(it);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (type == NULL)
|
2014-02-25 23:28:24 -08:00
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
eio_file_direct_stat(path, _edi_mainview_win_stat_done, dummy,
|
|
|
|
eina_stringshare_add(path));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_edi_mainview_item_win_add(path, type);
|
2014-02-25 23:28:24 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-02-16 09:09:55 -08:00
|
|
|
EAPI void
|
|
|
|
edi_mainview_save()
|
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
|
|
|
it = elm_naviframe_top_item_get(nf);
|
|
|
|
txt = elm_object_item_content_get(it);
|
|
|
|
if (txt)
|
|
|
|
elm_entry_file_save(txt);
|
|
|
|
}
|
|
|
|
|
2014-03-13 11:31:24 -07:00
|
|
|
EAPI void
|
|
|
|
edi_mainview_new_window()
|
|
|
|
{
|
|
|
|
Edi_Mainview_Item *item;
|
|
|
|
|
|
|
|
item = elm_object_item_data_get(elm_naviframe_top_item_get(nf));
|
|
|
|
if (!item)
|
|
|
|
return;
|
|
|
|
|
|
|
|
edi_mainview_open_window_path(item->path, NULL);
|
|
|
|
}
|
|
|
|
|
2014-02-16 09:09:55 -08:00
|
|
|
EAPI void
|
|
|
|
edi_mainview_close()
|
|
|
|
{
|
2014-03-13 11:31:24 -07:00
|
|
|
Edi_Mainview_Item *it;
|
|
|
|
|
|
|
|
it = elm_object_item_data_get(elm_naviframe_top_item_get(nf));
|
|
|
|
if (!it)
|
2014-02-16 09:09:55 -08:00
|
|
|
return;
|
|
|
|
|
|
|
|
elm_naviframe_item_pop(nf);
|
|
|
|
elm_object_item_del(elm_toolbar_selected_item_get(tb));
|
2014-03-13 11:31:24 -07:00
|
|
|
_edi_mainview_items = eina_list_remove(_edi_mainview_items, it);
|
2014-03-31 14:24:56 -07:00
|
|
|
eina_stringshare_del(it->path);
|
2014-03-13 11:31:24 -07:00
|
|
|
free(it);
|
2014-02-16 09:09:55 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
edi_mainview_cut()
|
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
|
|
|
it = elm_naviframe_top_item_get(nf);
|
|
|
|
txt = elm_object_item_content_get(it);
|
|
|
|
if (txt)
|
|
|
|
elm_entry_selection_cut(txt);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
edi_mainview_copy()
|
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
|
|
|
it = elm_naviframe_top_item_get(nf);
|
|
|
|
txt = elm_object_item_content_get(it);
|
|
|
|
if (txt)
|
|
|
|
elm_entry_selection_copy(txt);
|
|
|
|
}
|
|
|
|
|
|
|
|
EAPI void
|
|
|
|
edi_mainview_paste()
|
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
|
|
|
it = elm_naviframe_top_item_get(nf);
|
|
|
|
txt = elm_object_item_content_get(it);
|
|
|
|
if (txt)
|
|
|
|
elm_entry_selection_paste(txt);
|
|
|
|
}
|
|
|
|
|
2014-04-30 15:06:16 -07:00
|
|
|
EAPI void
|
|
|
|
edi_mainview_search()
|
|
|
|
{
|
|
|
|
Evas_Object *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
|
|
|
it = elm_naviframe_top_item_get(nf);
|
|
|
|
txt = elm_object_item_content_get(it);
|
|
|
|
if (txt)
|
|
|
|
edi_editor_search(txt);
|
|
|
|
}
|
|
|
|
|
2014-02-15 15:17:40 -08:00
|
|
|
EAPI void
|
2014-03-14 06:44:09 -07:00
|
|
|
edi_mainview_add(Evas_Object *parent, Evas_Object *win)
|
2014-02-15 15:17:40 -08:00
|
|
|
{
|
|
|
|
Evas_Object *box, *txt;
|
|
|
|
Elm_Object_Item *it;
|
|
|
|
|
2014-03-14 06:44:09 -07:00
|
|
|
_main_win = win;
|
|
|
|
|
2014-02-15 15:17:40 -08:00
|
|
|
box = elm_box_add(parent);
|
|
|
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
evas_object_show(box);
|
|
|
|
elm_box_pack_end(parent, box);
|
|
|
|
|
|
|
|
tb = elm_toolbar_add(parent);
|
|
|
|
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, 0.0);
|
|
|
|
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
elm_toolbar_homogeneous_set(tb, EINA_FALSE);
|
|
|
|
elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_SCROLL);
|
|
|
|
elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_ALWAYS);
|
|
|
|
elm_box_pack_end(box, tb);
|
|
|
|
evas_object_show(tb);
|
|
|
|
|
|
|
|
nf = elm_naviframe_add(parent);
|
|
|
|
evas_object_size_hint_weight_set(nf, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(nf, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
elm_box_pack_end(box, nf);
|
|
|
|
evas_object_show(nf);
|
|
|
|
|
|
|
|
txt = elm_label_add(parent);
|
|
|
|
elm_object_text_set(txt, "Welcome - tap a file to edit");
|
|
|
|
evas_object_size_hint_weight_set(txt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
|
|
evas_object_size_hint_align_set(txt, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
|
|
evas_object_show(txt);
|
|
|
|
|
|
|
|
it = elm_naviframe_item_simple_push(nf, txt);
|
2014-02-15 16:29:00 -08:00
|
|
|
elm_naviframe_item_style_set(it, "overlap");
|
2014-02-15 15:17:40 -08:00
|
|
|
elm_toolbar_item_append(tb, NULL, "Welcome", _promote, it);
|
|
|
|
}
|