multi-file: support edc navigator.
This commit is contained in:
parent
505ea04e28
commit
eda850d9db
|
@ -1368,8 +1368,9 @@ edc_navigator_group_update(const char *cur_group)
|
||||||
|
|
||||||
//Cancel item selection if group was not indicated.
|
//Cancel item selection if group was not indicated.
|
||||||
if (!cur_group) navigator_item_deselect(nd);
|
if (!cur_group) navigator_item_deselect(nd);
|
||||||
|
Eina_List *group_list =
|
||||||
|
enventor_item_group_list_get(file_mgr_focused_item_get());
|
||||||
|
|
||||||
Eina_List *group_list = edje_file_collection_list(config_output_path_get());
|
|
||||||
unsigned int cur_group_len = 0;
|
unsigned int cur_group_len = 0;
|
||||||
group_it *git;
|
group_it *git;
|
||||||
Eina_List *l, *ll;
|
Eina_List *l, *ll;
|
||||||
|
@ -1449,7 +1450,7 @@ edc_navigator_group_update(const char *cur_group)
|
||||||
group_update(nd, git);
|
group_update(nd, git);
|
||||||
}
|
}
|
||||||
|
|
||||||
edje_file_collection_list_free(group_list);
|
EINA_LIST_FREE(group_list, name) eina_stringshare_del(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
|
|
|
@ -31,6 +31,6 @@ Eina_Bool enventor_item_template_insert(Enventor_Item *it, char *syntax, size_t
|
||||||
Eina_Bool enventor_item_template_part_insert(Enventor_Item *it, Edje_Part_Type part, Enventor_Template_Insert_Type insert_type, 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, float rel1_x, float rel1_y, float rel2_x,float rel2_y, char *syntax, size_t n);
|
Eina_Bool enventor_item_template_part_insert(Enventor_Item *it, Edje_Part_Type part, Enventor_Template_Insert_Type insert_type, 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, float rel1_x, float rel1_y, float rel2_x,float rel2_y, char *syntax, size_t n);
|
||||||
EAPI Eina_Bool enventor_item_redo(Enventor_Item *it);
|
EAPI Eina_Bool enventor_item_redo(Enventor_Item *it);
|
||||||
EAPI Eina_Bool enventor_item_undo(Enventor_Item *it);
|
EAPI Eina_Bool enventor_item_undo(Enventor_Item *it);
|
||||||
|
EAPI Eina_List *enventor_item_group_list_get(Enventor_Item *it);
|
||||||
|
|
||||||
#include "enventor_object.eo.legacy.h"
|
#include "enventor_object.eo.legacy.h"
|
||||||
|
|
|
@ -1861,3 +1861,13 @@ edit_focus_get(edit_data *ed)
|
||||||
{
|
{
|
||||||
return elm_object_focus_get(ed->en_edit);
|
return elm_object_focus_get(ed->en_edit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Eina_List *
|
||||||
|
edit_group_list_get(edit_data *ed)
|
||||||
|
{
|
||||||
|
if (!ed) return NULL;
|
||||||
|
|
||||||
|
return parser_group_list_get(ed->pd, ed->en_edit);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ typedef struct bracket_thread_data_s
|
||||||
|
|
||||||
} bracket_td;
|
} bracket_td;
|
||||||
|
|
||||||
|
|
||||||
struct parser_s
|
struct parser_s
|
||||||
{
|
{
|
||||||
Eina_Inarray *attrs;
|
Eina_Inarray *attrs;
|
||||||
|
@ -1981,6 +1982,7 @@ parser_first_group_name_get(parser_data *pd, Evas_Object *entry)
|
||||||
{
|
{
|
||||||
const char *markup = elm_entry_entry_get(entry);
|
const char *markup = elm_entry_entry_get(entry);
|
||||||
char *utf8 = elm_entry_markup_to_utf8(markup);
|
char *utf8 = elm_entry_markup_to_utf8(markup);
|
||||||
|
int utf8_len = strlen(utf8);
|
||||||
char *p = utf8;
|
char *p = utf8;
|
||||||
|
|
||||||
const char *quot = QUOT_UTF8;
|
const char *quot = QUOT_UTF8;
|
||||||
|
@ -1995,7 +1997,7 @@ parser_first_group_name_get(parser_data *pd, Evas_Object *entry)
|
||||||
parser_macro_list_set(pd, (const char *) utf8);
|
parser_macro_list_set(pd, (const char *) utf8);
|
||||||
Eina_List *macro_list = parser_macro_list_get(pd);
|
Eina_List *macro_list = parser_macro_list_get(pd);
|
||||||
|
|
||||||
while (p < (utf8 + strlen(utf8)))
|
while (p < (utf8 + utf8_len))
|
||||||
{
|
{
|
||||||
if (*p == '\n') cur_line++;
|
if (*p == '\n') cur_line++;
|
||||||
|
|
||||||
|
@ -2013,6 +2015,54 @@ parser_first_group_name_get(parser_data *pd, Evas_Object *entry)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Skip comments: /* ~ */
|
||||||
|
if ((*p == '/') && (*(++p) == '*'))
|
||||||
|
{
|
||||||
|
p = strstr(p, "*/");
|
||||||
|
if (!p) goto end;
|
||||||
|
p += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip comments: //
|
||||||
|
if ((*p == '/') && (*(++p) == '/'))
|
||||||
|
{
|
||||||
|
p = strstr(p, "\n");
|
||||||
|
if (!p) goto end;
|
||||||
|
p++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip #if ~ #endif
|
||||||
|
if (!strncmp(p, "#if", 3))
|
||||||
|
{
|
||||||
|
p = strstr(p, "#endif");
|
||||||
|
if (!p) goto end;
|
||||||
|
p++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip #define
|
||||||
|
if (!strncmp(p, "#define", 7))
|
||||||
|
{
|
||||||
|
//escape "\", "ie, #define .... \"
|
||||||
|
p += 7; //strlen(#define)
|
||||||
|
|
||||||
|
while (p < (utf8 + utf8_len))
|
||||||
|
{
|
||||||
|
char *slash = strstr(p, "\\");
|
||||||
|
if (!slash) break;
|
||||||
|
|
||||||
|
char *eol = strstr(p, "\"");
|
||||||
|
if (!eol) goto end;
|
||||||
|
|
||||||
|
if (eol < slash) break;
|
||||||
|
|
||||||
|
p = eol + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//group?
|
||||||
if (!strncmp(p, group, group_len))
|
if (!strncmp(p, group, group_len))
|
||||||
{
|
{
|
||||||
p += group_len;
|
p += group_len;
|
||||||
|
@ -2269,3 +2319,113 @@ parser_bracket_find(parser_data *pd, Evas_Object *entry,
|
||||||
bracket_thread_cancel,
|
bracket_thread_cancel,
|
||||||
btd);
|
btd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Eina_List *
|
||||||
|
parser_group_list_get(parser_data *pd, Evas_Object *entry)
|
||||||
|
{
|
||||||
|
const char *markup = elm_entry_entry_get(entry);
|
||||||
|
char *utf8 = elm_entry_markup_to_utf8(markup);
|
||||||
|
int utf8_len = strlen(utf8);
|
||||||
|
char *p = utf8;
|
||||||
|
|
||||||
|
const char *quot = QUOT_UTF8;
|
||||||
|
const char *group = "group";
|
||||||
|
const int quot_len = QUOT_UTF8_LEN;
|
||||||
|
const int group_len = 5; //strlen("group");
|
||||||
|
const char *group_name = NULL;
|
||||||
|
Eina_List *group_list = NULL;
|
||||||
|
|
||||||
|
while (p < (utf8 + utf8_len))
|
||||||
|
{
|
||||||
|
//Skip "" range
|
||||||
|
if (!strncmp(p, quot, quot_len))
|
||||||
|
{
|
||||||
|
p += quot_len;
|
||||||
|
p = strstr(p, quot);
|
||||||
|
if (!p) goto end;
|
||||||
|
p += quot_len;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip comments: /* ~ */
|
||||||
|
if ((*p == '/') && (*(++p) == '*'))
|
||||||
|
{
|
||||||
|
p = strstr(p, "*/");
|
||||||
|
if (!p) goto end;
|
||||||
|
p += 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip comments: //
|
||||||
|
if ((*p == '/') && (*(++p) == '/'))
|
||||||
|
{
|
||||||
|
p = strstr(p, "\n");
|
||||||
|
if (!p) goto end;
|
||||||
|
p++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip #if ~ #endif
|
||||||
|
if (!strncmp(p, "#if", 3))
|
||||||
|
{
|
||||||
|
p = strstr(p, "#endif");
|
||||||
|
if (!p) goto end;
|
||||||
|
p++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Skip #define
|
||||||
|
if (!strncmp(p, "#define", 7))
|
||||||
|
{
|
||||||
|
//escape "\", "ie, #define .... \"
|
||||||
|
p += 7; //strlen(#define)
|
||||||
|
|
||||||
|
while (p < (utf8 + utf8_len))
|
||||||
|
{
|
||||||
|
char *slash = strstr(p, "\\");
|
||||||
|
if (!slash) break;
|
||||||
|
|
||||||
|
char *eol = strstr(p, "\"");
|
||||||
|
if (!eol) goto end;
|
||||||
|
|
||||||
|
if (eol < slash) break;
|
||||||
|
|
||||||
|
p = eol + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//group?
|
||||||
|
if (!strncmp(p, group, group_len))
|
||||||
|
{
|
||||||
|
p += group_len;
|
||||||
|
|
||||||
|
if (((*p != ' ') && (*p != '{') && (*p != '\n') && (*p != '\t')))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
p++;
|
||||||
|
|
||||||
|
//We found a group
|
||||||
|
p = strstr(p, quot);
|
||||||
|
if (!p) goto end;
|
||||||
|
|
||||||
|
p++;
|
||||||
|
char *name_begin = p;
|
||||||
|
|
||||||
|
p = strstr(p, quot);
|
||||||
|
if (!p) goto end;
|
||||||
|
|
||||||
|
char *name_end = p;
|
||||||
|
|
||||||
|
group_name = eina_stringshare_add_length(name_begin,
|
||||||
|
name_end - name_begin);
|
||||||
|
if (group_name)
|
||||||
|
group_list = eina_list_append(group_list, group_name);
|
||||||
|
}
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
free(utf8);
|
||||||
|
|
||||||
|
return group_list;
|
||||||
|
}
|
||||||
|
|
|
@ -127,6 +127,7 @@ void parser_macro_update(parser_data *pd, Eina_Bool macro_update);
|
||||||
typedef void (*Bracket_Update_Cb)(void *data, int left, int right);
|
typedef void (*Bracket_Update_Cb)(void *data, int left, int right);
|
||||||
void parser_bracket_find(parser_data *pd, Evas_Object *entry, Bracket_Update_Cb func, void *data);
|
void parser_bracket_find(parser_data *pd, Evas_Object *entry, Bracket_Update_Cb func, void *data);
|
||||||
void parser_bracket_cancel(parser_data *pd);
|
void parser_bracket_cancel(parser_data *pd);
|
||||||
|
Eina_List *parser_group_list_get(parser_data *pd, Evas_Object *entry);
|
||||||
|
|
||||||
/* syntax helper */
|
/* syntax helper */
|
||||||
syntax_helper *syntax_init(edit_data *ed);
|
syntax_helper *syntax_init(edit_data *ed);
|
||||||
|
@ -285,6 +286,7 @@ const char *edit_selection_get(edit_data *ed);
|
||||||
Eina_Bool edit_is_main_file(edit_data *ed);
|
Eina_Bool edit_is_main_file(edit_data *ed);
|
||||||
Eina_Bool edit_focus_get(edit_data *ed);
|
Eina_Bool edit_focus_get(edit_data *ed);
|
||||||
void edit_focus_set(edit_data *ed, Eina_Bool focus);
|
void edit_focus_set(edit_data *ed, Eina_Bool focus);
|
||||||
|
Eina_List *edit_group_list_get(edit_data *ed);
|
||||||
|
|
||||||
/* util */
|
/* util */
|
||||||
void mem_fail_msg(void);
|
void mem_fail_msg(void);
|
||||||
|
|
|
@ -1173,5 +1173,12 @@ enventor_item_undo(Enventor_Item *it)
|
||||||
return edit_redoundo(it->ed, EINA_TRUE);
|
return edit_redoundo(it->ed, EINA_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_List *
|
||||||
|
enventor_item_group_list_get(Enventor_Item *it)
|
||||||
|
{
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(it, NULL);
|
||||||
|
|
||||||
|
return edit_group_list_get(it->ed);
|
||||||
|
}
|
||||||
|
|
||||||
#include "enventor_object.eo.c"
|
#include "enventor_object.eo.c"
|
||||||
|
|
Loading…
Reference in New Issue