2014-09-30 07:56:16 -07:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define ELM_INTERNAL_API_ARGESFSDFEFC 1
|
|
|
|
|
|
|
|
#include <Enventor.h>
|
|
|
|
#include <Eio.h>
|
|
|
|
#include <elm_widget.h>
|
|
|
|
#include "enventor_private.h"
|
|
|
|
|
|
|
|
#define MY_CLASS_NAME_LEGACY "enventor_object"
|
|
|
|
|
|
|
|
#ifdef MY_CLASS
|
|
|
|
#undef MY_CLASS
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define MY_CLASS ENVENTOR_OBJECT_CLASS
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
#define DEFAULT_LINENUMBER EINA_TRUE
|
|
|
|
#define DEFAULT_FONT_SCALE 1
|
|
|
|
#define DEFAULT_AUTO_INDENT EINA_TRUE
|
|
|
|
#define DEFAULT_PART_HIGHLIGHT EINA_TRUE
|
2016-05-07 10:34:31 -07:00
|
|
|
#define DEFAULT_SMART_UNDO_REDO EINA_FALSE
|
2016-05-07 11:16:46 -07:00
|
|
|
#define DEFAULT_CTXPOPUP EINA_TRUE
|
2016-05-07 07:14:45 -07:00
|
|
|
|
2016-05-07 01:35:07 -07:00
|
|
|
typedef struct _Enventor_Object_Data Enventor_Object_Data;
|
|
|
|
typedef struct _Enventor_Item_Data Enventor_Item_Data;
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
struct _Enventor_Item_Data
|
|
|
|
{
|
|
|
|
edit_data *ed;
|
|
|
|
Enventor_Object *enventor;
|
|
|
|
};
|
|
|
|
|
2016-05-07 01:35:07 -07:00
|
|
|
struct _Enventor_Object_Data
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
Enventor_Object *obj;
|
|
|
|
Enventor_Item_Data main_it;
|
2014-09-30 07:56:16 -07:00
|
|
|
|
|
|
|
Eina_Stringshare *group_name;
|
|
|
|
|
2015-08-26 08:58:01 -07:00
|
|
|
Ecore_Event_Handler *key_down_handler;
|
|
|
|
Ecore_Event_Handler *key_up_handler;
|
|
|
|
|
2016-05-07 01:35:07 -07:00
|
|
|
double font_scale;
|
2016-05-17 07:32:34 -07:00
|
|
|
Eina_Stringshare *font_name;
|
|
|
|
Eina_Stringshare *font_style;
|
2016-05-07 01:35:07 -07:00
|
|
|
|
2016-01-01 21:06:59 -08:00
|
|
|
Eina_Bool dummy_parts : 1;
|
2016-06-27 22:20:57 -07:00
|
|
|
Eina_Bool outline : 1;
|
2016-05-07 07:14:45 -07:00
|
|
|
Eina_Bool disabled : 1;
|
2016-03-24 21:30:33 -07:00
|
|
|
Eina_Bool mirror_mode : 1;
|
2016-05-07 01:35:07 -07:00
|
|
|
Eina_Bool linenumber : 1;
|
|
|
|
Eina_Bool auto_indent : 1;
|
|
|
|
Eina_Bool part_highlight : 1;
|
2016-05-07 10:34:31 -07:00
|
|
|
Eina_Bool smart_undo_redo : 1;
|
2016-05-07 11:16:46 -07:00
|
|
|
Eina_Bool ctxpopup : 1;
|
2016-05-07 01:35:07 -07:00
|
|
|
};
|
2014-10-18 22:30:15 -07:00
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
|
|
|
|
{SIG_CURSOR_LINE_CHANGED, ""},
|
|
|
|
{SIG_CURSOR_GROUP_CHANGED, ""},
|
|
|
|
{SIG_LIVE_VIEW_CURSOR_MOVED, ""},
|
|
|
|
{SIG_LIVE_VIEW_RESIZED, ""},
|
2015-06-30 03:47:33 -07:00
|
|
|
{SIG_LIVE_VIEW_LOADED, ""},
|
2015-06-30 09:25:04 -07:00
|
|
|
{SIG_LIVE_VIEW_UPDATED, ""},
|
2014-09-30 07:56:16 -07:00
|
|
|
{SIG_MAX_LINE_CHANGED, ""},
|
|
|
|
{SIG_COMPILE_ERROR, ""},
|
2015-06-30 09:25:04 -07:00
|
|
|
{SIG_CTXPOPUP_CHANGED, ""},
|
2014-09-30 07:56:16 -07:00
|
|
|
{SIG_CTXPOPUP_DISMISSED, ""},
|
2016-02-09 00:50:34 -08:00
|
|
|
{SIG_CTXPOPUP_ACTIVATED, ""},
|
2014-10-23 00:39:31 -07:00
|
|
|
{SIG_EDC_MODIFIED, ""},
|
2014-11-01 02:20:21 -07:00
|
|
|
{SIG_FOCUSED, ""},
|
2014-09-30 07:56:16 -07:00
|
|
|
{NULL, NULL}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*****************************************************************************/
|
|
|
|
/* Internal method implementation */
|
|
|
|
/*****************************************************************************/
|
2016-05-07 07:14:45 -07:00
|
|
|
|
2016-05-01 06:05:20 -07:00
|
|
|
static void
|
2016-05-07 07:14:45 -07:00
|
|
|
_enventor_main_item_free(Enventor_Object_Data *pd)
|
2016-05-01 06:05:20 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_term(pd->main_it.ed);
|
2016-05-01 06:05:20 -07:00
|
|
|
}
|
|
|
|
|
2015-08-26 08:58:01 -07:00
|
|
|
static Eina_Bool
|
2016-05-07 10:55:46 -07:00
|
|
|
key_up_cb(void *data, int type EINA_UNUSED, void *ev)
|
2015-08-26 08:58:01 -07:00
|
|
|
{
|
|
|
|
Enventor_Object_Data *pd = data;
|
2016-05-07 10:55:46 -07:00
|
|
|
Ecore_Event_Key *event = ev;
|
|
|
|
|
2016-05-07 11:11:04 -07:00
|
|
|
edit_key_up_event_dispatch(pd->main_it.ed, event->key);
|
2016-05-07 10:55:46 -07:00
|
|
|
|
2015-09-15 10:39:51 -07:00
|
|
|
return ECORE_CALLBACK_DONE;
|
2015-08-26 08:58:01 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static Eina_Bool
|
|
|
|
key_down_cb(void *data, int type EINA_UNUSED, void *ev)
|
|
|
|
{
|
|
|
|
Enventor_Object_Data *pd = data;
|
|
|
|
Ecore_Event_Key *event = ev;
|
2016-05-07 11:11:04 -07:00
|
|
|
Eina_Bool ret = enventor_object_focus_get(pd->obj);
|
2015-08-26 08:58:01 -07:00
|
|
|
if (!ret) return ECORE_CALLBACK_PASS_ON;
|
|
|
|
|
2016-05-07 10:55:46 -07:00
|
|
|
if (edit_key_down_event_dispatch(pd->main_it.ed, event->key))
|
|
|
|
return ECORE_CALLBACK_DONE;
|
|
|
|
|
|
|
|
if (autocomp_event_dispatch(event->key))
|
|
|
|
return ECORE_CALLBACK_DONE;
|
|
|
|
|
2015-08-26 08:58:01 -07:00
|
|
|
return ECORE_CALLBACK_PASS_ON;
|
|
|
|
}
|
2015-07-03 03:58:20 -07:00
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
static void
|
2015-05-13 06:47:11 -07:00
|
|
|
edit_view_sync_cb(void *data, Eina_Stringshare *state_name, double state_value,
|
|
|
|
Eina_Stringshare *part_name, Eina_Stringshare *group_name)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
|
|
|
Enventor_Object_Data *pd = data;
|
2015-05-28 02:23:11 -07:00
|
|
|
|
|
|
|
edj_mgr_all_views_reload();
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
if (pd->group_name != group_name)
|
|
|
|
{
|
|
|
|
view_data *vd = edj_mgr_view_get(group_name);
|
|
|
|
if (vd) edj_mgr_view_switch_to(vd);
|
|
|
|
else
|
|
|
|
{
|
|
|
|
vd = edj_mgr_view_new(group_name);
|
|
|
|
if (!vd) return;
|
|
|
|
}
|
2014-10-31 04:48:39 -07:00
|
|
|
eina_stringshare_del(pd->group_name);
|
|
|
|
pd->group_name = eina_stringshare_add(group_name);
|
|
|
|
evas_object_smart_callback_call(pd->obj, SIG_CURSOR_GROUP_CHANGED,
|
|
|
|
(void *) group_name);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
2016-06-02 03:33:47 -07:00
|
|
|
if (pd->part_highlight && !pd->disabled)
|
2015-05-13 06:47:11 -07:00
|
|
|
view_part_highlight_set(VIEW_DATA, part_name);
|
2015-09-15 08:41:08 -07:00
|
|
|
else
|
|
|
|
view_part_highlight_set(VIEW_DATA, NULL);
|
2015-05-13 06:47:11 -07:00
|
|
|
|
2016-01-01 06:39:11 -08:00
|
|
|
//reset previous part's state
|
2015-05-13 06:47:11 -07:00
|
|
|
if (!state_name)
|
|
|
|
{
|
2016-01-01 06:39:11 -08:00
|
|
|
view_part_state_set(VIEW_DATA, NULL, NULL, 0);
|
2015-05-13 06:47:11 -07:00
|
|
|
return;
|
|
|
|
}
|
2015-08-10 21:18:07 -07:00
|
|
|
|
2015-05-13 06:47:11 -07:00
|
|
|
view_part_state_set(VIEW_DATA, part_name, state_name, state_value);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
build_err_noti_cb(void *data, const char *msg)
|
|
|
|
{
|
2015-08-10 21:18:07 -07:00
|
|
|
Enventor_Object_Data *pd = data;
|
|
|
|
|
2015-12-28 17:33:36 -08:00
|
|
|
int line_num = 0;
|
2015-08-10 21:18:07 -07:00
|
|
|
Eina_Stringshare *target = NULL;
|
|
|
|
char *ptr = NULL;
|
|
|
|
char *utf8 = evas_textblock_text_markup_to_utf8(NULL, msg);
|
|
|
|
|
|
|
|
if (!utf8) goto call_error;
|
|
|
|
|
|
|
|
if ((ptr = strstr(utf8, ".edc")))
|
|
|
|
{
|
|
|
|
ptr += strlen(".edc");
|
|
|
|
if (!ptr || (ptr[0] != ':')) goto call_error;
|
2016-03-06 19:02:09 -08:00
|
|
|
if (!(++ptr)) goto call_error;
|
2015-08-10 21:18:07 -07:00
|
|
|
line_num = atoi(ptr);
|
|
|
|
}
|
|
|
|
else if ((ptr = strstr(utf8, "image")) ||
|
|
|
|
(ptr = strstr(utf8, "group")) ||
|
|
|
|
(ptr = strstr(utf8, "part")))
|
|
|
|
{
|
|
|
|
ptr = strchr(ptr, '\"');
|
|
|
|
if (!ptr || !(ptr++)) goto call_error;
|
|
|
|
char *ptr2 = strchr(ptr, '\"');
|
|
|
|
if (!ptr2) goto call_error;
|
|
|
|
int length = ptr2 - ptr;
|
|
|
|
target = eina_stringshare_add_length(ptr, length);
|
|
|
|
}
|
|
|
|
|
|
|
|
call_error:
|
|
|
|
free(utf8);
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_error_set(pd->main_it.ed, line_num - 1, target);
|
2015-08-10 21:18:07 -07:00
|
|
|
if (line_num || target)
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_syntax_color_full_apply(pd->main_it.ed, EINA_TRUE);
|
2015-12-29 01:15:12 -08:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
redoundo_data *rd = edit_redoundo_get(pd->main_it.ed);
|
2016-02-22 01:41:22 -08:00
|
|
|
|
2015-12-29 01:15:12 -08:00
|
|
|
// When msg == NULL it mean, that needed to reset error state
|
2015-12-28 18:34:59 -08:00
|
|
|
if (msg)
|
2015-12-29 01:15:12 -08:00
|
|
|
{
|
2016-02-22 01:41:22 -08:00
|
|
|
// Ctxpopup should be dismissed only in cases when error happens
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_ctxpopup_dismiss(pd->main_it.ed);
|
2016-02-22 01:41:22 -08:00
|
|
|
evas_object_smart_callback_call(pd->obj, SIG_COMPILE_ERROR, (char *)msg);
|
|
|
|
redoundo_diff_buildable(rd, EINA_FALSE);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
redoundo_diff_buildable(rd, EINA_TRUE);
|
2015-12-29 01:15:12 -08:00
|
|
|
}
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2015-12-21 16:25:53 -08:00
|
|
|
static void
|
|
|
|
_enventor_part_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *ei)
|
|
|
|
{
|
|
|
|
Enventor_Object_Data *pd = (Enventor_Object_Data *)data;
|
2016-05-07 07:14:45 -07:00
|
|
|
if (pd->disabled) return;
|
2015-12-21 16:25:53 -08:00
|
|
|
const char *part_name = (const char *)ei;
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_part_cursor_set(pd->main_it.ed, view_group_name_get(VIEW_DATA),
|
|
|
|
part_name);
|
2015-12-21 16:25:53 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
/*****************************************************************************/
|
|
|
|
/* Internal Eo object required routines */
|
|
|
|
/*****************************************************************************/
|
2014-10-31 09:15:58 -07:00
|
|
|
EOLIAN static void
|
2014-09-30 07:56:16 -07:00
|
|
|
_enventor_object_class_constructor(Eo_Class *klass)
|
|
|
|
{
|
|
|
|
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_add(Eo *obj, Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
|
|
|
pd->obj = obj;
|
|
|
|
|
|
|
|
elm_widget_sub_object_parent_add(obj);
|
2016-06-18 20:44:09 -07:00
|
|
|
efl_canvas_group_add(eo_super(obj, MY_CLASS));
|
2014-09-30 07:56:16 -07:00
|
|
|
|
|
|
|
build_init();
|
|
|
|
autocomp_init();
|
|
|
|
edj_mgr_init(obj);
|
2015-08-10 21:18:07 -07:00
|
|
|
build_err_noti_cb_set(build_err_noti_cb, pd);
|
2014-09-30 07:56:16 -07:00
|
|
|
|
|
|
|
elm_widget_can_focus_set(obj, EINA_FALSE);
|
|
|
|
|
2015-08-26 08:58:01 -07:00
|
|
|
pd->key_down_handler =
|
|
|
|
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_down_cb, pd);
|
|
|
|
pd->key_up_handler =
|
2016-05-07 11:11:04 -07:00
|
|
|
ecore_event_handler_add(ECORE_EVENT_KEY_UP, key_up_cb, pd);
|
2015-12-21 16:25:53 -08:00
|
|
|
|
2015-12-31 08:12:48 -08:00
|
|
|
evas_object_smart_callback_add(pd->obj, "part,clicked",
|
|
|
|
_enventor_part_clicked_cb, pd);
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
pd->font_scale = DEFAULT_FONT_SCALE;
|
|
|
|
pd->linenumber = DEFAULT_LINENUMBER;
|
|
|
|
pd->auto_indent = DEFAULT_AUTO_INDENT;
|
|
|
|
pd->part_highlight = DEFAULT_PART_HIGHLIGHT;
|
2016-05-07 10:34:31 -07:00
|
|
|
pd->smart_undo_redo = DEFAULT_SMART_UNDO_REDO;
|
2016-05-07 11:16:46 -07:00
|
|
|
pd->ctxpopup = DEFAULT_CTXPOPUP;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_del(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-17 07:32:34 -07:00
|
|
|
eina_stringshare_del(pd->font_name);
|
2016-06-06 01:32:37 -07:00
|
|
|
eina_stringshare_del(pd->font_style);
|
2016-05-01 05:21:40 -07:00
|
|
|
eina_stringshare_del(pd->group_name);
|
|
|
|
autocomp_term();
|
|
|
|
ecore_event_handler_del(pd->key_down_handler);
|
|
|
|
ecore_event_handler_del(pd->key_up_handler);
|
|
|
|
edj_mgr_term();
|
|
|
|
build_term();
|
2016-05-01 06:05:20 -07:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
_enventor_main_item_free(pd);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_member_add(Eo *obj, Enventor_Object_Data *pd EINA_UNUSED, Evas_Object *child)
|
2016-05-07 07:14:45 -07:00
|
|
|
{
|
2016-06-18 20:44:09 -07:00
|
|
|
efl_canvas_group_member_add(eo_super(obj, MY_CLASS), child);
|
2016-05-07 07:14:45 -07:00
|
|
|
|
|
|
|
if (evas_object_visible_get(obj)) evas_object_show(child);
|
|
|
|
else evas_object_hide(child);
|
|
|
|
|
|
|
|
Evas_Coord x, y, w, h;
|
|
|
|
evas_object_geometry_get(obj, &x, &y, &w, &h);
|
|
|
|
evas_object_move(child, x, y);
|
|
|
|
evas_object_resize(child, w, h);
|
|
|
|
|
|
|
|
evas_object_clip_set(child, evas_object_clip_get(obj));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_move(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd, Evas_Coord x, Evas_Coord y)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_move(o, x, y);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_resize(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd, Evas_Coord w, Evas_Coord h)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_resize(o, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_show(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_show(o);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_hide(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_hide(o);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_clip_set(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd, Evas_Object *clip)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_clip_set(o, clip);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-06-18 20:44:09 -07:00
|
|
|
_enventor_object_efl_canvas_group_group_clip_unset(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
Evas_Object *o = edit_obj_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
evas_object_clip_unset(o);
|
|
|
|
}
|
|
|
|
|
2015-05-24 02:18:12 -07:00
|
|
|
EOLIAN static Eo *
|
2014-09-30 07:56:16 -07:00
|
|
|
_enventor_object_eo_base_constructor(Eo *obj,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
2016-06-06 01:32:37 -07:00
|
|
|
obj = eo_constructor(eo_super(obj, MY_CLASS));
|
2016-06-21 01:13:38 -07:00
|
|
|
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
|
2016-06-18 20:44:09 -07:00
|
|
|
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
|
2015-05-24 02:18:12 -07:00
|
|
|
|
|
|
|
return obj;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_efl_file_file_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
const char *file,
|
|
|
|
const char *group EINA_UNUSED)
|
|
|
|
{
|
|
|
|
build_edc_path_set(file);
|
2016-05-07 07:14:45 -07:00
|
|
|
autocomp_target_set(pd->main_it.ed);
|
2016-03-25 01:22:06 -07:00
|
|
|
if (!file) goto err;
|
|
|
|
|
|
|
|
/* Create empty file*/
|
|
|
|
if (!ecore_file_exists(file))
|
|
|
|
{
|
|
|
|
FILE *fp = fopen(file, "w");
|
|
|
|
fclose(fp);
|
|
|
|
}
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_load(pd->main_it.ed, file);
|
2014-09-30 07:56:16 -07:00
|
|
|
build_edc();
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_changed_set(pd->main_it.ed, EINA_FALSE);
|
2014-09-30 07:56:16 -07:00
|
|
|
|
|
|
|
return EINA_TRUE;
|
|
|
|
|
|
|
|
err:
|
|
|
|
build_edc_path_set(NULL);
|
|
|
|
return EINA_FALSE;
|
|
|
|
}
|
|
|
|
|
2016-02-29 00:24:49 -08:00
|
|
|
EOLIAN static Eina_List *
|
|
|
|
_enventor_object_programs_list_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
return view_programs_list_get(VIEW_DATA);
|
|
|
|
}
|
|
|
|
|
2016-02-26 05:22:29 -08:00
|
|
|
EOLIAN static Eina_List *
|
|
|
|
_enventor_object_part_states_list_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
const char *part)
|
|
|
|
{
|
|
|
|
return view_part_states_list_get(VIEW_DATA, part);
|
|
|
|
}
|
|
|
|
|
2016-02-27 00:31:12 -08:00
|
|
|
EOLIAN static Edje_Part_Type
|
|
|
|
_enventor_object_part_type_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
const char *part_name)
|
|
|
|
{
|
|
|
|
return view_part_type_get(VIEW_DATA, part_name);
|
|
|
|
}
|
|
|
|
|
2016-02-26 05:22:29 -08:00
|
|
|
EOLIAN static Eina_List *
|
|
|
|
_enventor_object_parts_list_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
return view_parts_list_get(VIEW_DATA);
|
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_linenumber_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool linenumber)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
linenumber = !!linenumber;
|
|
|
|
|
|
|
|
if (pd->linenumber == linenumber) return;
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
edit_linenumber_set(pd->main_it.ed, linenumber);
|
2016-05-07 01:35:07 -07:00
|
|
|
|
|
|
|
pd->linenumber = linenumber;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_linenumber_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
return pd->linenumber;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2015-12-09 17:53:12 -08:00
|
|
|
EOLIAN static void
|
2016-05-07 07:14:45 -07:00
|
|
|
_enventor_object_smart_undo_redo_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
2015-12-09 17:53:12 -08:00
|
|
|
Eina_Bool smart_undo_redo)
|
|
|
|
{
|
2016-05-07 10:34:31 -07:00
|
|
|
smart_undo_redo = !!smart_undo_redo;
|
|
|
|
pd->smart_undo_redo = smart_undo_redo;
|
2015-12-09 17:53:12 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_smart_undo_redo_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 10:34:31 -07:00
|
|
|
return pd->smart_undo_redo;
|
2015-12-09 17:53:12 -08:00
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_auto_indent_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool auto_indent)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
pd->auto_indent = !!auto_indent;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_auto_indent_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
return pd->auto_indent;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_auto_complete_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Eina_Bool auto_complete)
|
|
|
|
{
|
|
|
|
autocomp_enabled_set(auto_complete);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_auto_complete_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
return autocomp_enabled_get();
|
|
|
|
}
|
|
|
|
|
2015-06-21 22:34:52 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_auto_complete_list_show(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
autocomp_list_show();
|
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_modified_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool modified)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
edit_changed_set(pd->main_it.ed, modified);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_modified_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
return edit_changed_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_path_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Enventor_Path_Type type, const Eina_List *pathes)
|
|
|
|
{
|
2015-02-28 09:00:19 -08:00
|
|
|
//edj file is changed
|
2015-06-30 20:04:48 -07:00
|
|
|
if (type == ENVENTOR_PATH_TYPE_EDJ)
|
2015-02-28 09:00:19 -08:00
|
|
|
{
|
|
|
|
const char *path = eina_list_data_get(pathes);
|
|
|
|
const char *ppath = build_edj_path_get();
|
|
|
|
if (path && ppath && strcmp(path, ppath))
|
|
|
|
{
|
|
|
|
edj_mgr_clear();
|
|
|
|
eina_stringshare_del(pd->group_name);
|
|
|
|
pd->group_name = NULL;
|
|
|
|
}
|
|
|
|
}
|
2014-09-30 07:56:16 -07:00
|
|
|
return build_path_set(type, pathes);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static const Eina_List *
|
|
|
|
_enventor_object_path_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Enventor_Path_Type type)
|
|
|
|
{
|
|
|
|
return build_path_get(type);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_live_view_scale_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
double scale)
|
|
|
|
{
|
|
|
|
edj_mgr_view_scale_set(scale);
|
|
|
|
}
|
|
|
|
|
2014-11-25 04:08:29 -08:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_live_view_size_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Evas_Coord w, Evas_Coord h)
|
|
|
|
{
|
|
|
|
view_size_set(VIEW_DATA, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_live_view_size_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Evas_Coord *w, Evas_Coord *h)
|
|
|
|
{
|
|
|
|
view_size_get(VIEW_DATA, w, h);
|
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static double
|
|
|
|
_enventor_object_live_view_scale_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
return edj_mgr_view_scale_get();
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
2016-01-01 21:06:59 -08:00
|
|
|
_enventor_object_dummy_parts_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool dummy_parts)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-01-01 21:06:59 -08:00
|
|
|
dummy_parts = !!dummy_parts;
|
|
|
|
if (pd->dummy_parts == dummy_parts) return;
|
2014-10-18 22:30:15 -07:00
|
|
|
|
2016-01-01 21:06:59 -08:00
|
|
|
view_dummy_set(VIEW_DATA, dummy_parts);
|
|
|
|
pd->dummy_parts = dummy_parts;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_ctxpopup_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 11:16:46 -07:00
|
|
|
return pd->ctxpopup;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_ctxpopup_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
2014-11-02 20:43:13 -08:00
|
|
|
Eina_Bool ctxpopup)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-07 11:16:46 -07:00
|
|
|
ctxpopup = !!ctxpopup;
|
|
|
|
pd->ctxpopup = ctxpopup;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2014-11-02 19:19:33 -08:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_ctxpopup_visible_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return edit_ctxpopup_visible_get(pd->main_it.ed);
|
2014-11-02 19:19:33 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_ctxpopup_dismiss(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_ctxpopup_dismiss(pd->main_it.ed);
|
2014-11-02 19:19:33 -08:00
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static Eina_Bool
|
2016-01-01 21:06:59 -08:00
|
|
|
_enventor_object_dummy_parts_get(Eo *obj EINA_UNUSED,
|
2014-10-18 22:30:15 -07:00
|
|
|
Enventor_Object_Data *pd)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-01-01 21:06:59 -08:00
|
|
|
return pd->dummy_parts;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-06-27 22:20:57 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_parts_outline_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool outline)
|
|
|
|
{
|
|
|
|
outline = !!outline;
|
|
|
|
|
|
|
|
view_outline_set(VIEW_DATA, outline);
|
|
|
|
pd->outline = outline;
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_parts_outline_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
|
|
|
return pd->outline;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_part_highlight_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool part_highlight)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
part_highlight = !!part_highlight;
|
|
|
|
if (pd->part_highlight == part_highlight) return;
|
|
|
|
pd->part_highlight = part_highlight;
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
if (part_highlight) edit_view_sync(pd->main_it.ed);
|
2016-05-07 01:35:07 -07:00
|
|
|
else view_part_highlight_set(VIEW_DATA, NULL);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_part_highlight_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
return pd->part_highlight;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-03-24 21:30:33 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_mirror_mode_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool mirror_mode)
|
|
|
|
{
|
|
|
|
pd->mirror_mode = !!mirror_mode;
|
2016-03-25 00:33:38 -07:00
|
|
|
view_mirror_mode_update(VIEW_DATA);
|
2016-03-24 21:30:33 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_mirror_mode_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd)
|
|
|
|
{
|
|
|
|
return pd->mirror_mode;
|
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_focus_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
|
|
|
Eina_Bool focus)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
elm_object_focus_set(edit_entry_get(pd->main_it.ed), focus);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_focus_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return elm_object_focus_get(edit_entry_get(pd->main_it.ed));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static const char *
|
|
|
|
_enventor_object_text_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return elm_entry_entry_get(edit_entry_get(pd->main_it.ed));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static int
|
|
|
|
_enventor_object_cursor_pos_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return elm_entry_cursor_pos_get(edit_entry_get(pd->main_it.ed));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2015-01-25 20:27:46 -08:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_cursor_pos_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
int position)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
elm_entry_cursor_pos_set(edit_entry_get(pd->main_it.ed), position);
|
2015-01-25 20:27:46 -08:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static const char *
|
|
|
|
_enventor_object_selection_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return elm_entry_selection_get(edit_entry_get(pd->main_it.ed));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_select_none(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
elm_entry_select_none(edit_entry_get(pd->main_it.ed));
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_text_insert(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
const char *text)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_text_insert(pd->main_it.ed, text);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_select_region_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd, int start, int end)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_selection_clear(pd->main_it.ed);
|
2016-06-19 21:10:36 -07:00
|
|
|
edit_selection_region_center_set(pd->main_it.ed, start, end);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_font_scale_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
double font_scale)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
if (pd->font_scale == font_scale) return;
|
|
|
|
pd->font_scale = font_scale;
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
//Main Item
|
|
|
|
edit_font_scale_set(pd->main_it.ed, font_scale);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static double
|
|
|
|
_enventor_object_font_scale_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 01:35:07 -07:00
|
|
|
return pd->font_scale;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2015-02-26 03:36:51 -08:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_font_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
const char *font_name, const char *font_style)
|
|
|
|
{
|
2016-05-17 07:32:34 -07:00
|
|
|
if (!font_name) return;
|
|
|
|
|
|
|
|
eina_stringshare_replace(&pd->font_name, font_name);
|
|
|
|
eina_stringshare_replace(&pd->font_style, font_style);
|
|
|
|
|
|
|
|
char *font = NULL;
|
2016-05-18 07:38:18 -07:00
|
|
|
if (font_name) font = elm_font_fontconfig_name_get(font_name, font_style);
|
2016-05-17 07:32:34 -07:00
|
|
|
elm_config_font_overlay_set("enventor_entry", font, -100);
|
|
|
|
elm_config_font_overlay_apply();
|
|
|
|
elm_config_save();
|
2016-05-07 07:14:45 -07:00
|
|
|
|
2016-05-17 07:32:34 -07:00
|
|
|
elm_font_fontconfig_name_free(font);
|
2016-05-18 07:38:18 -07:00
|
|
|
|
2016-05-17 07:32:34 -07:00
|
|
|
//Main Item
|
2016-05-18 07:38:18 -07:00
|
|
|
edit_font_update(pd->main_it.ed);
|
2015-02-26 03:36:51 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_font_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
const char **font_name, const char **font_style)
|
|
|
|
{
|
2016-05-17 07:32:34 -07:00
|
|
|
if (font_name) *font_name = pd->font_name;
|
|
|
|
if (font_style) *font_style = pd->font_style;
|
2015-02-26 03:36:51 -08:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static int
|
|
|
|
_enventor_object_max_line_get(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return edit_max_line_get(pd->main_it.ed);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_line_goto(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
int line)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_goto(pd->main_it.ed, line);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2015-01-04 20:26:58 -08:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_syntax_color_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Enventor_Syntax_Color_Type color_type,
|
|
|
|
const char *val)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_syntax_color_set(pd->main_it.ed, color_type, val);
|
2015-01-04 20:26:58 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static const char *
|
|
|
|
_enventor_object_syntax_color_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Enventor_Syntax_Color_Type color_type)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return edit_syntax_color_get(pd->main_it.ed, color_type);
|
2015-01-04 20:26:58 -08:00
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_syntax_color_full_apply(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool force)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_syntax_color_full_apply(pd->main_it.ed, force);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_syntax_color_partial_apply(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
double interval)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_syntax_color_partial_apply(pd->main_it.ed, interval);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Might need for items
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_save(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
const char *file)
|
|
|
|
{
|
2015-02-28 21:23:31 -08:00
|
|
|
//Update edc file and try to save if the edc path is different.
|
2016-05-07 07:14:45 -07:00
|
|
|
if (build_edc_path_get() != file)
|
|
|
|
edit_changed_set(pd->main_it.ed, EINA_TRUE);
|
2015-08-26 11:49:12 -07:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
Eina_Bool saved = edit_save(pd->main_it.ed, file);
|
2016-03-02 04:25:59 -08:00
|
|
|
if (saved) build_edc();
|
2015-02-28 21:34:03 -08:00
|
|
|
return saved;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2014-09-30 07:56:16 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_line_delete(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
edit_line_delete(pd->main_it.ed);
|
2015-06-22 18:21:22 -07:00
|
|
|
//Close auto-completion popup if it's shown.
|
|
|
|
autocomp_reset();
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eo *
|
|
|
|
_enventor_object_live_view_get(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
|
|
|
{
|
|
|
|
return edj_mgr_obj_get();
|
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_template_insert(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|
|
|
char *syntax, size_t n)
|
|
|
|
{
|
2016-06-04 21:09:52 -07:00
|
|
|
return template_insert(pd->main_it.ed, syntax, n);
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_template_part_insert(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
2014-11-11 23:44:19 -08:00
|
|
|
Edje_Part_Type part,
|
|
|
|
Enventor_Template_Insert_Type insert_type,
|
2016-05-11 05:57:51 -07:00
|
|
|
Eina_Bool fixed_w, Eina_Bool fixed_h,
|
|
|
|
char *rel1_x_to, char *rel1_y_to,
|
|
|
|
char *rel2_x_to, char *rel2_y_to,
|
|
|
|
float align_x, float align_y,
|
|
|
|
int min_w, int min_h,
|
2016-05-18 07:38:18 -07:00
|
|
|
float rel1_x, float rel1_y,
|
|
|
|
float rel2_x,float rel2_y,
|
2016-05-11 05:57:51 -07:00
|
|
|
char *syntax, size_t n)
|
|
|
|
{
|
|
|
|
// if mirror mode, exchange properties about left and right
|
2016-03-29 03:38:54 -07:00
|
|
|
if (pd->mirror_mode)
|
|
|
|
{
|
|
|
|
float x1, x2;
|
|
|
|
x1 = 1.0 - rel2_x;
|
|
|
|
x2 = 1.0 - rel1_x;
|
|
|
|
rel1_x = x1;
|
|
|
|
rel2_x = x2;
|
2016-05-11 05:57:51 -07:00
|
|
|
|
|
|
|
if (align_x == 0.0)
|
|
|
|
align_x = 1.0;
|
|
|
|
else if (align_x == 1.0)
|
|
|
|
align_x = 0.0;
|
|
|
|
|
2016-05-16 07:28:30 -07:00
|
|
|
char *buf;
|
|
|
|
buf = rel1_x_to;
|
|
|
|
rel1_x_to = rel2_x_to;
|
|
|
|
rel2_x_to = buf;
|
2016-03-29 03:38:54 -07:00
|
|
|
}
|
|
|
|
|
2016-05-11 05:57:51 -07:00
|
|
|
return template_part_insert(pd->main_it.ed, part, insert_type,
|
|
|
|
fixed_w, fixed_h,
|
|
|
|
rel1_x_to, rel1_y_to,
|
|
|
|
rel2_x_to, rel2_y_to,
|
|
|
|
align_x, align_y, min_w, min_h,
|
|
|
|
rel1_x, rel1_y, rel2_x, rel2_y,
|
|
|
|
NULL, syntax, n);
|
2014-11-11 23:44:19 -08:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Might need for items
|
2014-11-11 23:44:19 -08:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_disabled_set(Eo *obj EINA_UNUSED,
|
|
|
|
Enventor_Object_Data *pd,
|
|
|
|
Eina_Bool disabled)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
disabled = !!disabled;
|
|
|
|
if (pd->disabled == disabled) return;
|
|
|
|
|
|
|
|
edit_disabled_set(pd->main_it.ed, disabled);
|
2015-12-31 08:12:48 -08:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
pd->disabled = !!disabled;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2015-02-25 21:31:06 -08:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_redo(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return edit_redoundo(pd->main_it.ed, EINA_FALSE);
|
2015-02-25 21:31:06 -08:00
|
|
|
}
|
|
|
|
|
2016-05-01 06:26:12 -07:00
|
|
|
//TODO: Itemize
|
2015-02-25 21:31:06 -08:00
|
|
|
EOLIAN static Eina_Bool
|
|
|
|
_enventor_object_undo(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
|
|
|
{
|
2016-05-07 07:14:45 -07:00
|
|
|
return edit_redoundo(pd->main_it.ed, EINA_TRUE);
|
2015-02-25 21:31:06 -08:00
|
|
|
}
|
2014-09-30 07:56:16 -07:00
|
|
|
|
2016-04-22 03:31:07 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_program_run(Eo *obj EINA_UNUSED,
|
2016-05-17 02:00:09 -07:00
|
|
|
Enventor_Object_Data *pd EINA_UNUSED,
|
2016-04-22 03:31:07 -07:00
|
|
|
const char *program)
|
|
|
|
{
|
|
|
|
view_program_run(VIEW_DATA, program);
|
|
|
|
}
|
|
|
|
|
2016-04-22 21:14:49 -07:00
|
|
|
EOLIAN static void
|
|
|
|
_enventor_object_programs_stop(Eo *obj EINA_UNUSED,
|
2016-05-17 02:00:09 -07:00
|
|
|
Enventor_Object_Data *pd EINA_UNUSED)
|
2016-04-22 21:14:49 -07:00
|
|
|
{
|
|
|
|
view_programs_stop(VIEW_DATA);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
/*****************************************************************************/
|
|
|
|
/* Externally accessible calls */
|
|
|
|
/*****************************************************************************/
|
2016-05-01 04:27:08 -07:00
|
|
|
EAPI Enventor_Object *
|
|
|
|
enventor_object_add(Enventor_Object *parent)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
|
2016-03-11 04:42:09 -08:00
|
|
|
Evas_Object *obj = eo_add(MY_CLASS, parent);
|
2014-09-30 07:56:16 -07:00
|
|
|
return obj;
|
|
|
|
}
|
|
|
|
|
2016-05-01 05:16:31 -07:00
|
|
|
EAPI Enventor_Item *
|
|
|
|
enventor_object_main_file_set(Enventor_Object *obj, const char *file)
|
2014-09-30 07:56:16 -07:00
|
|
|
{
|
2016-05-01 06:05:20 -07:00
|
|
|
Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
|
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
//FIXME:...
|
|
|
|
autocomp_target_set(NULL);
|
2016-05-01 06:05:20 -07:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
_enventor_main_item_free(pd);
|
2016-05-01 05:16:31 -07:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
pd->main_it.enventor = obj;
|
|
|
|
pd->main_it.ed = edit_init(obj);
|
|
|
|
edit_view_sync_cb_set(pd->main_it.ed, edit_view_sync_cb, pd);
|
2016-05-01 05:16:31 -07:00
|
|
|
|
2016-06-06 01:32:37 -07:00
|
|
|
Eina_Bool ret = efl_file_set(obj, file, NULL);
|
|
|
|
if (!ret) return NULL;
|
2016-05-01 05:16:31 -07:00
|
|
|
|
2016-05-07 07:14:45 -07:00
|
|
|
//Update Editor State
|
|
|
|
if (pd->linenumber != DEFAULT_LINENUMBER)
|
|
|
|
edit_linenumber_set(pd->main_it.ed, pd->linenumber);
|
|
|
|
if (pd->font_scale != DEFAULT_FONT_SCALE)
|
|
|
|
edit_font_scale_set(pd->main_it.ed, pd->font_scale);
|
|
|
|
if (pd->disabled)
|
|
|
|
edit_disabled_set(pd->main_it.ed, EINA_TRUE);
|
|
|
|
|
|
|
|
return &pd->main_it;
|
2014-09-30 07:56:16 -07:00
|
|
|
}
|
|
|
|
|
2016-05-18 07:38:18 -07:00
|
|
|
Evas_Object *
|
|
|
|
enventor_item_editor_get(const Enventor_Item *it)
|
|
|
|
{
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL);
|
|
|
|
|
|
|
|
if (!it->ed) return NULL;
|
|
|
|
|
|
|
|
return edit_obj_get(it->ed);
|
|
|
|
}
|
|
|
|
|
2014-09-30 07:56:16 -07:00
|
|
|
#include "enventor_object.eo.c"
|