forked from enlightenment/enventor
++ multi file editing feature implementation.
This commit is contained in:
parent
731d0bed5b
commit
e93ab43319
|
@ -73,19 +73,51 @@ gl_clicked_double_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|||
return;
|
||||
}
|
||||
|
||||
// Open a double clicked edc file.
|
||||
/* Open a double clicked edc file. */
|
||||
|
||||
//skip non edc file.
|
||||
if (!eina_str_has_extension(file->path, "edc")) return;
|
||||
|
||||
int selected_file_len = strlen(file->path);
|
||||
|
||||
//Let's check if the file is already opened or not.
|
||||
Enventor_Item *eit;
|
||||
const char *it_file_path;
|
||||
|
||||
//Case 1. main file.
|
||||
|
||||
//FIXME: Probably file browser item may have boolean info for a collection
|
||||
//data. and just check it is enough.
|
||||
eit = enventor_object_main_item_get(base_enventor_get());
|
||||
if (!eit)
|
||||
{
|
||||
EINA_LOG_ERR("No main item??");
|
||||
return;
|
||||
}
|
||||
|
||||
it_file_path = enventor_item_file_get(eit);
|
||||
if (!it_file_path)
|
||||
{
|
||||
EINA_LOG_ERR("No main item file path??");
|
||||
return;
|
||||
}
|
||||
//Ok, This selected file is already openend, let's activate the item.
|
||||
if (strlen(file->name) == strlen(it_file_path) &&
|
||||
!strcmp(file->name, it_file_path))
|
||||
{
|
||||
facade_it_select(eit);
|
||||
return;
|
||||
}
|
||||
|
||||
//Case 2. sub files.
|
||||
Eina_List *sub_items =
|
||||
(Eina_List *)enventor_object_sub_items_get(base_enventor_get());
|
||||
Eina_List *l;
|
||||
Enventor_Item *eit;
|
||||
EINA_LIST_FOREACH(sub_items, l, eit)
|
||||
{
|
||||
const char *it_file_path = enventor_item_file_get(eit);
|
||||
if (!it_file_path) continue;
|
||||
|
||||
//Let's check if the file is already opened.
|
||||
if (selected_file_len != strlen(it_file_path)) continue;
|
||||
|
||||
//Ok, This selected file is already openend, let's activate the item.
|
||||
|
|
|
@ -26,7 +26,7 @@ void facade_it_select(Enventor_Item *it)
|
|||
|
||||
Enventor_Item *facade_sub_file_add(const char *path)
|
||||
{
|
||||
Enventor_Item *it = enventor_object_sub_file_add(base_enventor_get(), path);
|
||||
Enventor_Item *it = enventor_object_sub_item_add(base_enventor_get(), path);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL);
|
||||
|
||||
file_tab_it_add(it);
|
||||
|
@ -39,7 +39,7 @@ Enventor_Item *facade_sub_file_add(const char *path)
|
|||
|
||||
Enventor_Item *facade_main_file_set(const char *path)
|
||||
{
|
||||
Enventor_Item *it = enventor_object_main_file_set(base_enventor_get(), path);
|
||||
Enventor_Item *it = enventor_object_main_item_set(base_enventor_get(), path);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL);
|
||||
|
||||
file_tab_clear();
|
||||
|
|
|
@ -230,7 +230,7 @@ Eina_Bool
|
|||
goto_close(void)
|
||||
{
|
||||
goto_data *gd = g_gd;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(gd, EINA_FALSE);
|
||||
if (!gd) return EINA_FALSE;
|
||||
|
||||
//Save last state
|
||||
evas_object_geometry_get(gd->win, NULL, NULL, &win_w, &win_h);
|
||||
|
|
|
@ -455,7 +455,7 @@ Eina_Bool
|
|||
search_close(void)
|
||||
{
|
||||
search_data *sd = g_sd;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
|
||||
if (!sd) return EINA_FALSE;
|
||||
|
||||
Enventor_Object *enventor = base_enventor_get();
|
||||
|
||||
|
|
|
@ -265,7 +265,6 @@ Eina_Bool
|
|||
setting_is_opened(void)
|
||||
{
|
||||
setting_data *sd = g_sd;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
|
||||
|
||||
if (!sd) return EINA_FALSE;
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
|
|
@ -3,8 +3,9 @@ typedef struct _Enventor_Item_Data Enventor_Item;
|
|||
EAPI Evas_Object *enventor_object_add(Evas_Object *parent);
|
||||
|
||||
//FIXME: Should be eofied.
|
||||
EAPI Enventor_Item *enventor_object_main_file_set(Evas_Object *obj, const char *file);
|
||||
EAPI Enventor_Item *enventor_object_sub_file_add(Evas_Object *obj, const char *file);
|
||||
EAPI Enventor_Item *enventor_object_main_item_set(Evas_Object *obj, const char *file);
|
||||
EAPI Enventor_Item *enventor_object_sub_item_add(Evas_Object *obj, const char *file);
|
||||
EAPI Enventor_Item *enventor_object_main_item_get(const Evas_Object *obj);
|
||||
EAPI const Eina_List *enventor_object_sub_items_get(const Evas_Object *obj);
|
||||
EAPI Evas_Object *enventor_item_editor_get(const Enventor_Item *it);
|
||||
EAPI const char *enventor_item_file_get(const Enventor_Item *it);
|
||||
|
|
|
@ -62,6 +62,7 @@ struct editor_s
|
|||
Eina_Bool ctrl_pressed : 1;
|
||||
Eina_Bool on_select_recover : 1;
|
||||
Eina_Bool on_save : 1;
|
||||
Eina_Bool main : 1;
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -755,8 +756,9 @@ edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
|
|||
}
|
||||
|
||||
static void
|
||||
cur_name_get_cb(void *data, Eina_Stringshare *state_name, double state_value,
|
||||
Eina_Stringshare *part_name, Eina_Stringshare *group_name)
|
||||
cur_context_name_get_cb(void *data, Eina_Stringshare *state_name,
|
||||
double state_value, Eina_Stringshare *part_name,
|
||||
Eina_Stringshare *group_name)
|
||||
{
|
||||
edit_data *ed = data;
|
||||
|
||||
|
@ -1257,7 +1259,8 @@ edit_syntax_color_partial_apply(edit_data *ed, double interval)
|
|||
void
|
||||
edit_view_sync(edit_data *ed)
|
||||
{
|
||||
parser_cur_state_get(ed->pd, ed->en_edit, cur_name_get_cb, ed);
|
||||
parser_cur_context_get(ed->pd, ed->en_edit, cur_context_name_get_cb, ed,
|
||||
ed->main);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1333,7 +1336,7 @@ edit_cur_indent_depth_get(edit_data *ed)
|
|||
}
|
||||
|
||||
edit_data *
|
||||
edit_init(Enventor_Object *enventor)
|
||||
edit_init(Enventor_Object *enventor, Eina_Bool main)
|
||||
{
|
||||
edit_data *ed = calloc(1, sizeof(edit_data));
|
||||
if (!ed)
|
||||
|
@ -1509,13 +1512,13 @@ edit_cur_paragh_get(edit_data *ed)
|
|||
Eina_Stringshare *
|
||||
edit_cur_prog_name_get(edit_data *ed)
|
||||
{
|
||||
return parser_cur_name_fast_get(ed->en_edit, "program");
|
||||
return parser_cur_context_fast_get(ed->en_edit, "program");
|
||||
}
|
||||
|
||||
Eina_Stringshare *
|
||||
edit_cur_part_name_get(edit_data *ed)
|
||||
{
|
||||
return parser_cur_name_fast_get(ed->en_edit, "part");
|
||||
return parser_cur_context_fast_get(ed->en_edit, "part");
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -31,7 +31,7 @@ typedef struct parser_attr_s
|
|||
attr_value value;
|
||||
} parser_attr;
|
||||
|
||||
typedef struct cur_name_thread_data_s
|
||||
typedef struct cur_context_thread_data_s
|
||||
{
|
||||
Ecore_Thread *thread;
|
||||
char *utf8;
|
||||
|
@ -44,7 +44,8 @@ typedef struct cur_name_thread_data_s
|
|||
Eina_Stringshare *part_name, Eina_Stringshare *group_name);
|
||||
void *cb_data;
|
||||
parser_data *pd;
|
||||
} cur_name_td;
|
||||
Eina_Bool collections: 1; //It contains collections?
|
||||
} cur_context_td;
|
||||
|
||||
typedef struct type_init_thread_data_s
|
||||
{
|
||||
|
@ -69,7 +70,7 @@ typedef struct bracket_thread_data_s
|
|||
struct parser_s
|
||||
{
|
||||
Eina_Inarray *attrs;
|
||||
cur_name_td *cntd;
|
||||
cur_context_td *cntd;
|
||||
type_init_td *titd;
|
||||
bracket_td *btd;
|
||||
Eina_List *macro_list;
|
||||
|
@ -300,15 +301,20 @@ macro_list_free(Eina_List *macro_list)
|
|||
}
|
||||
|
||||
static void
|
||||
cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
#define PART_SYNTAX_CNT 14
|
||||
|
||||
const char *GROUP = "group";
|
||||
const int GROUP_LEN = 5;
|
||||
const char *PARTS = "parts";
|
||||
const int PARTS_LEN = 5;
|
||||
const char *PART[PART_SYNTAX_CNT] = { "part", "image", "textblock",
|
||||
"swallow", "rect", "group", "spacer", "proxy", "text", "gradient",
|
||||
"box", "table", "external", "vector" };
|
||||
const int PART_LEN[PART_SYNTAX_CNT] =
|
||||
{ 4, 5, 9, 6, 4, 5, 6, 5, 4, 8, 3, 5, 8, 6};
|
||||
|
||||
const char *DESC[2] = { "desc", "description" };
|
||||
const int DESC_LEN[2] = { 4, 11 };
|
||||
const char *STATE = "state";
|
||||
|
@ -316,14 +322,14 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
const int DEF_STATE_LEN = 7;
|
||||
|
||||
|
||||
cur_name_td *td = data;
|
||||
cur_context_td *td = data;
|
||||
char *utf8 = td->utf8;
|
||||
int cur_pos = td->cur_pos;
|
||||
char *p = utf8;
|
||||
char *end = utf8 + cur_pos;
|
||||
int i;
|
||||
Eina_Bool inside_parts = EINA_FALSE;
|
||||
|
||||
Eina_Bool collections = td->collections;
|
||||
|
||||
int bracket = 0;
|
||||
const char *group_name = NULL;
|
||||
|
@ -392,17 +398,29 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
bracket--;
|
||||
p++;
|
||||
|
||||
if (bracket == 1) group_name = NULL;
|
||||
else if (bracket == 2 && inside_parts == EINA_TRUE) inside_parts = EINA_FALSE;
|
||||
else if (bracket == 3) part_name = NULL;
|
||||
else if (bracket == 4) desc_name = NULL;
|
||||
|
||||
if (collections)
|
||||
{
|
||||
if (bracket == 1) group_name = NULL;
|
||||
else if (bracket == 2 && inside_parts == EINA_TRUE)
|
||||
inside_parts = EINA_FALSE;
|
||||
else if (bracket == 3) part_name = NULL;
|
||||
else if (bracket == 4) desc_name = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bracket == 0) group_name = NULL;
|
||||
else if (bracket == 1 && inside_parts == EINA_TRUE)
|
||||
inside_parts = EINA_FALSE;
|
||||
else if (bracket == 2) part_name = NULL;
|
||||
else if (bracket == 3) desc_name = NULL;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
//check block "Parts" in
|
||||
if (bracket == 2)
|
||||
if ((collections && (bracket == 2)) ||
|
||||
(!collections && (bracket == 1)))
|
||||
{
|
||||
if (!strncmp(p, PARTS, strlen(PARTS)))
|
||||
if (!strncmp(p, PARTS, PARTS_LEN))
|
||||
{
|
||||
inside_parts = EINA_TRUE;
|
||||
p = strstr(p, "{");
|
||||
|
@ -411,16 +429,14 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
}
|
||||
}
|
||||
//Check Part in
|
||||
if (bracket == 3 && inside_parts == EINA_TRUE)
|
||||
if ((collections && (bracket == 3)) ||
|
||||
(!collections && (bracket == 2)))
|
||||
{
|
||||
int part_idx = -1;
|
||||
int part_len;
|
||||
|
||||
//part ? image ? swallow ? text ? rect ?
|
||||
for (i = 0; i < PART_SYNTAX_CNT; i++)
|
||||
{
|
||||
part_len = strlen(PART[i]);
|
||||
if (!strncmp(p, PART[i], part_len))
|
||||
if (!strncmp(p, PART[i], PART_LEN[i]))
|
||||
{
|
||||
part_idx = i;
|
||||
break;
|
||||
|
@ -430,7 +446,7 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
//we got a part!
|
||||
if (part_idx != -1)
|
||||
{
|
||||
p += part_len;
|
||||
p += PART_LEN[part_idx];
|
||||
char *name_begin = strstr(p, QUOT_UTF8);
|
||||
if (!name_begin) goto end;
|
||||
name_begin += QUOT_UTF8_LEN;
|
||||
|
@ -445,7 +461,8 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
}
|
||||
}
|
||||
//Check Description in
|
||||
if (bracket == 4)
|
||||
if ((collections && (bracket == 4)) ||
|
||||
(!collections && (bracket == 3)))
|
||||
{
|
||||
//description? or desc?
|
||||
int desc_idx = -1;
|
||||
|
@ -455,25 +472,37 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
//we got a description!
|
||||
if (desc_idx != -1)
|
||||
{
|
||||
desc_name = DEF_STATE_NAME; /* By default state will be */
|
||||
desc_name_len = DEF_STATE_LEN; /* recognized as "default" 0.0*/
|
||||
/* By default state will be */
|
||||
desc_name = DEF_STATE_NAME;
|
||||
/* recognized as "default" 0.0*/
|
||||
desc_name_len = DEF_STATE_LEN;
|
||||
value_convert = 0;
|
||||
|
||||
p += DESC_LEN[desc_idx]; /* skip keyword */
|
||||
/* skip keyword */
|
||||
p += DESC_LEN[desc_idx];
|
||||
p = strstr(p, "{");
|
||||
if (!p) goto end;
|
||||
char *end_brace = strstr(p, "}"); /*Limit size of text for processing*/
|
||||
/*Limit size of text for processing*/
|
||||
char *end_brace = strstr(p, "}");
|
||||
if (!end_brace)
|
||||
goto end;
|
||||
|
||||
/* proccessing for "description" keyword with "state" attribute */
|
||||
/* proccessing for "description" keyword with "state"
|
||||
attribute */
|
||||
if (desc_idx == 1)
|
||||
{
|
||||
char *state = strstr(p, STATE);
|
||||
if (!state || state > end_brace) /* if name of state didn't find, */
|
||||
continue; /* description will recognized as default 0.0*/
|
||||
/* if name of state didn't find, */
|
||||
if (!state || state > end_brace)
|
||||
{
|
||||
/* description will recognized as default 0.0*/
|
||||
continue;
|
||||
}
|
||||
else
|
||||
p += 5; /*5 is strlen("state");*/
|
||||
{
|
||||
/*5 is strlen("state");*/
|
||||
p += 5;
|
||||
}
|
||||
}
|
||||
|
||||
char *name_begin = strstr(p, QUOT_UTF8);
|
||||
|
@ -482,15 +511,16 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
char *end_range = strstr(p, ";");
|
||||
if (!end_range) goto end;
|
||||
|
||||
if ((name_begin > end_brace) || /* if string placed outside desc block*/
|
||||
(name_begin > end_range) ||
|
||||
/* if string placed outside desc block*/
|
||||
if ((name_begin > end_brace) || (name_begin > end_range) ||
|
||||
(end_range > end_brace))
|
||||
continue;
|
||||
continue;
|
||||
|
||||
/* Exception cases like: desc {image.normal: "img";} */
|
||||
int alpha_present = 0;
|
||||
char *string_itr;
|
||||
for (string_itr = name_begin; (string_itr > p) && (!alpha_present); string_itr--)
|
||||
for (string_itr = name_begin;
|
||||
(string_itr > p) && (!alpha_present); string_itr--)
|
||||
alpha_present = isalpha((int)*string_itr);
|
||||
|
||||
if (alpha_present && desc_idx == 0)
|
||||
|
@ -529,11 +559,12 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
}
|
||||
}
|
||||
//Check Group in. Probably inside of collections or the most outside.
|
||||
if (bracket < 2)
|
||||
if ((collections && (bracket == 1)) ||
|
||||
(!collections && (bracket == 0)))
|
||||
{
|
||||
if (!strncmp(p, GROUP, strlen(GROUP)))
|
||||
if (!strncmp(p, GROUP, GROUP_LEN))
|
||||
{
|
||||
p += strlen(GROUP);
|
||||
p += GROUP_LEN;
|
||||
|
||||
char *name_end = strstr(p, SEMICOL_UTF8);
|
||||
if (!name_end) goto end;
|
||||
|
@ -568,7 +599,6 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
if (part_name)
|
||||
part_name = eina_stringshare_add_length(part_name, part_name_len);
|
||||
if (desc_name)
|
||||
|
@ -598,9 +628,9 @@ end:
|
|||
}
|
||||
|
||||
static void
|
||||
cur_name_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
cur_context_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
cur_name_td *td = data;
|
||||
cur_context_td *td = data;
|
||||
td->cb(td->cb_data, td->state_name, td->state_value, td->part_name, td->group_name);
|
||||
td->pd->cntd = NULL;
|
||||
eina_stringshare_del(td->state_name);
|
||||
|
@ -610,9 +640,9 @@ cur_name_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
}
|
||||
|
||||
static void
|
||||
cur_name_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
cur_context_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
cur_name_td *td = data;
|
||||
cur_context_td *td = data;
|
||||
if (td->pd) td->pd->cntd = NULL;
|
||||
eina_stringshare_del(td->state_name);
|
||||
eina_stringshare_del(td->part_name);
|
||||
|
@ -1290,7 +1320,7 @@ group_beginning_pos_get(const char* source, const char *group_name)
|
|||
name += quot_len;
|
||||
pos = strstr(name, quot);
|
||||
if (!pos) return NULL;
|
||||
if (!strncmp(name, group_name, strlen(group_name)))
|
||||
if (!strncmp(name, group_name, 5))
|
||||
return pos;
|
||||
pos = strstr(++pos, GROUP_SYNTAX_NAME);
|
||||
}
|
||||
|
@ -1720,7 +1750,7 @@ parser_paragh_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry)
|
|||
}
|
||||
|
||||
Eina_Stringshare*
|
||||
parser_cur_name_fast_get(Evas_Object *entry, const char *scope)
|
||||
parser_cur_context_fast_get(Evas_Object *entry, const char *scope)
|
||||
{
|
||||
const char *quot = QUOT_UTF8;
|
||||
const int quot_len = QUOT_UTF8_LEN;
|
||||
|
@ -1794,11 +1824,12 @@ end:
|
|||
return name;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
parser_cur_state_get(parser_data *pd, Evas_Object *entry,
|
||||
void (*cb)(void *data, Eina_Stringshare *state_name, double state_value,
|
||||
Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data)
|
||||
parser_cur_context_get(parser_data *pd, Evas_Object *entry,
|
||||
void (*cb)(void *data, Eina_Stringshare *state_name,
|
||||
double state_value, Eina_Stringshare *part_name,
|
||||
Eina_Stringshare *group_name), void *data,
|
||||
Eina_Bool collections)
|
||||
{
|
||||
if (pd->cntd) ecore_thread_cancel(pd->cntd->thread);
|
||||
|
||||
|
@ -1808,7 +1839,7 @@ parser_cur_state_get(parser_data *pd, Evas_Object *entry,
|
|||
char *utf8 = elm_entry_markup_to_utf8(text);
|
||||
if (!utf8) return;
|
||||
|
||||
cur_name_td *td = calloc(1, sizeof(cur_name_td));
|
||||
cur_context_td *td = calloc(1, sizeof(cur_context_td));
|
||||
if (!td)
|
||||
{
|
||||
free(utf8);
|
||||
|
@ -1822,10 +1853,11 @@ parser_cur_state_get(parser_data *pd, Evas_Object *entry,
|
|||
td->cur_pos = elm_entry_cursor_pos_get(entry);
|
||||
td->cb = cb;
|
||||
td->cb_data = data;
|
||||
td->collections = collections;
|
||||
|
||||
td->thread = ecore_thread_run(cur_state_thread_blocking,
|
||||
cur_name_thread_end,
|
||||
cur_name_thread_cancel,
|
||||
td->thread = ecore_thread_run(cur_context_thread_blocking,
|
||||
cur_context_thread_end,
|
||||
cur_context_thread_cancel,
|
||||
td);
|
||||
}
|
||||
|
||||
|
|
|
@ -705,7 +705,6 @@ view_part_highlight_set(view_data *vd, const char *part_name)
|
|||
if (vd->idler) vd->part_name = eina_stringshare_add(part_name);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!part_name)
|
||||
{
|
||||
if (vd->part_highlight)
|
||||
|
|
|
@ -106,8 +106,8 @@ Eina_Bool color_ready(color_data *cd);
|
|||
parser_data *parser_init(void);
|
||||
void parser_term(parser_data *pd);
|
||||
Eina_Stringshare *parser_first_group_name_get(parser_data *pd, Evas_Object *entry);
|
||||
void parser_cur_state_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *state_name, double state_value, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
|
||||
Eina_Stringshare *parser_cur_name_fast_get(Evas_Object *entry, const char *scope);
|
||||
void parser_cur_context_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *state_name, double state_value, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data, Eina_Bool collections);
|
||||
Eina_Stringshare *parser_cur_context_fast_get(Evas_Object *entry, const char *scope);
|
||||
Eina_Bool parser_type_name_compare(parser_data *pd, const char *str);
|
||||
attr_value *parser_attribute_get(parser_data *pd, const char *text, const char *cur, const char *selected);
|
||||
void parser_attribute_value_set(attr_value *attr, char *cur);
|
||||
|
@ -236,7 +236,7 @@ void ctxpopup_img_preview_reload(Evas_Object *ctxpopup, const char *imgpath);
|
|||
void edit_font_update(edit_data *ed);
|
||||
Eina_Bool edit_key_down_event_dispatch(edit_data *ed, const char *key);
|
||||
Eina_Bool edit_key_up_event_dispatch(edit_data *ed, const char *key);
|
||||
edit_data *edit_init(Enventor_Object *enventor);
|
||||
edit_data *edit_init(Enventor_Object *enventor, Eina_Bool main);
|
||||
void edit_term(edit_data *ed);
|
||||
Evas_Object *edit_obj_get(edit_data *ed);
|
||||
Eina_Bool edit_changed_get(edit_data *ed);
|
||||
|
|
|
@ -123,6 +123,7 @@ edit_view_sync_cb(void *data, Eina_Stringshare *state_name, double state_value,
|
|||
|
||||
edj_mgr_all_views_reload();
|
||||
|
||||
//Switch group!
|
||||
if (pd->group_name != group_name)
|
||||
{
|
||||
view_data *vd = edj_mgr_view_get(group_name);
|
||||
|
@ -132,6 +133,8 @@ edit_view_sync_cb(void *data, Eina_Stringshare *state_name, double state_value,
|
|||
vd = edj_mgr_view_new(group_name);
|
||||
if (!vd) return;
|
||||
}
|
||||
view_dummy_set(vd, pd->dummy_parts);
|
||||
view_outline_set(vd, pd->outline);
|
||||
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,
|
||||
|
@ -260,7 +263,7 @@ EOLIAN static void
|
|||
_enventor_object_efl_canvas_group_group_del(Evas_Object *obj EINA_UNUSED, Enventor_Object_Data *pd)
|
||||
{
|
||||
eina_stringshare_del(pd->font_name);
|
||||
eina_stringshare_del(pd->font_style);
|
||||
eina_stringshare_del(pd->font_style);
|
||||
eina_stringshare_del(pd->group_name);
|
||||
autocomp_term();
|
||||
ecore_event_handler_del(pd->key_down_handler);
|
||||
|
@ -413,7 +416,7 @@ _enventor_object_linenumber_set(Eo *obj EINA_UNUSED, Enventor_Object_Data *pd,
|
|||
if (pd->linenumber == linenumber) return;
|
||||
|
||||
//Main Item
|
||||
edit_linenumber_set(pd->main_it.ed, linenumber);
|
||||
edit_linenumber_set(pd->focused_it->ed, linenumber);
|
||||
|
||||
pd->linenumber = linenumber;
|
||||
}
|
||||
|
@ -950,7 +953,7 @@ enventor_object_add(Enventor_Object *parent)
|
|||
}
|
||||
|
||||
EAPI Enventor_Item *
|
||||
enventor_object_sub_file_add(Enventor_Object *obj, const char *file)
|
||||
enventor_object_sub_item_add(Enventor_Object *obj, const char *file)
|
||||
{
|
||||
Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
|
||||
|
||||
|
@ -970,24 +973,17 @@ enventor_object_sub_file_add(Enventor_Object *obj, const char *file)
|
|||
pd->sub_its = eina_list_append(pd->sub_its, it);
|
||||
|
||||
it->enventor = obj;
|
||||
it->ed = edit_init(obj);
|
||||
it->ed = edit_init(obj, EINA_FALSE);
|
||||
|
||||
autocomp_target_set(it->ed);
|
||||
edit_load(it->ed, file);
|
||||
edit_changed_set(it->ed, EINA_FALSE);
|
||||
|
||||
//Update Editor State
|
||||
if (pd->linenumber != DEFAULT_LINENUMBER)
|
||||
edit_linenumber_set(it->ed, pd->linenumber);
|
||||
if (pd->font_scale != DEFAULT_FONT_SCALE)
|
||||
edit_font_scale_set(it->ed, pd->font_scale);
|
||||
if (pd->disabled) edit_disabled_set(it->ed, EINA_TRUE);
|
||||
|
||||
return it;
|
||||
}
|
||||
|
||||
EAPI Enventor_Item *
|
||||
enventor_object_main_file_set(Enventor_Object *obj, const char *file)
|
||||
enventor_object_main_item_set(Enventor_Object *obj, const char *file)
|
||||
{
|
||||
Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
|
||||
|
||||
|
@ -997,21 +993,20 @@ enventor_object_main_file_set(Enventor_Object *obj, const char *file)
|
|||
_enventor_main_item_free(pd);
|
||||
|
||||
pd->main_it.enventor = obj;
|
||||
pd->main_it.ed = edit_init(obj);
|
||||
pd->main_it.ed = edit_init(obj, EINA_TRUE);
|
||||
edit_view_sync_cb_set(pd->main_it.ed, edit_view_sync_cb, pd);
|
||||
pd->focused_it = &pd->main_it;
|
||||
|
||||
Eina_Bool ret = efl_file_set(obj, file, NULL);
|
||||
if (!ret) return NULL;
|
||||
|
||||
//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;
|
||||
}
|
||||
|
||||
EAPI Enventor_Item *
|
||||
enventor_object_main_item_get(const Enventor_Object *obj)
|
||||
{
|
||||
Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
|
||||
return &pd->main_it;
|
||||
}
|
||||
|
||||
|
@ -1044,6 +1039,11 @@ enventor_item_focus_set(Enventor_Item *it)
|
|||
|
||||
pd->focused_it = it;
|
||||
|
||||
//Update Editor State
|
||||
edit_linenumber_set(it->ed, pd->linenumber);
|
||||
edit_font_scale_set(it->ed, pd->font_scale);
|
||||
edit_disabled_set(it->ed, pd->disabled);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue