enventor - refacatoring before adding image preview feature.
This commit is contained in:
parent
8fac8ebc85
commit
10c9e81689
|
@ -429,6 +429,38 @@ cur_line_pos_set(edit_data *ed)
|
|||
stats_line_num_update(ed->sd, (y / h) + 1, ed->line_max);
|
||||
}
|
||||
|
||||
static void
|
||||
program_run(edit_data *ed, char *cur)
|
||||
{
|
||||
char *program = parser_name_get(ed->pd, cur);
|
||||
if (program)
|
||||
{
|
||||
view_program_run(ed->vd, program);
|
||||
free(program);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
popup_image_show(edit_data *ed, char *cur)
|
||||
{
|
||||
char *img_path = parser_name_get(ed->pd, cur);
|
||||
if (img_path)
|
||||
{
|
||||
free(img_path);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
candidate_list_show(edit_data *ed, char *text, char *cur, char *selected)
|
||||
{
|
||||
attr_value * attr = parser_attribute_get(ed->pd, text, cur);
|
||||
if (!attr) return;
|
||||
|
||||
int x, y;
|
||||
evas_pointer_output_xy_get(evas_object_evas_get(ed->en_edit), &x, &y);
|
||||
edit_attr_candidate_show(ed, attr, x, y, selected);
|
||||
}
|
||||
|
||||
static void
|
||||
edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
|
||||
void *event_info EINA_UNUSED)
|
||||
|
@ -437,9 +469,9 @@ edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
|
|||
|
||||
if (ed->ctrl_pressed) return;
|
||||
|
||||
const char *selected = elm_entry_selection_get(obj);
|
||||
char *selected = (char *) elm_entry_selection_get(obj);
|
||||
if (!selected) return;
|
||||
selected = parser_markup_escape(ed->pd, selected);
|
||||
selected = elm_entry_markup_to_utf8(selected);
|
||||
|
||||
Evas_Object *textblock = elm_entry_textblock_get(obj);
|
||||
Evas_Textblock_Cursor *cursor = evas_object_textblock_cursor_get(textblock);
|
||||
|
@ -447,28 +479,21 @@ edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
|
|||
char *text = elm_entry_markup_to_utf8(str);
|
||||
char *cur = strstr(text, selected);
|
||||
|
||||
//If the selected text is "program" then just launch the program.
|
||||
if (!strcmp(selected, "program"))
|
||||
{
|
||||
char *prog = parser_program_name_get(ed->pd, cur);
|
||||
if (prog)
|
||||
{
|
||||
view_program_run(ed->vd, prog);
|
||||
free(prog);
|
||||
}
|
||||
program_run(ed, cur);
|
||||
}
|
||||
else if (!strncmp(selected, "image", 5)) //5: sizeof("image")
|
||||
{
|
||||
popup_image_show(ed, cur);
|
||||
}
|
||||
//Show the candidates list.
|
||||
else
|
||||
{
|
||||
attr_value * attr = parser_attribute_get(ed->pd, text, cur);
|
||||
if (!attr) goto end;
|
||||
|
||||
int x, y;
|
||||
evas_pointer_output_xy_get(evas_object_evas_get(obj), &x, &y);
|
||||
edit_attr_candidate_show(ed, attr, x, y, selected);
|
||||
candidate_list_show(ed, text, cur, selected);
|
||||
}
|
||||
end:
|
||||
free(text);
|
||||
if (selected) free(selected);
|
||||
if (text) free(text);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -156,15 +156,12 @@ parser_type_init(parser_data *pd)
|
|||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
}
|
||||
|
||||
char *parser_program_name_get(parser_data *pd EINA_UNUSED, const char *cur)
|
||||
char *parser_name_get(parser_data *pd EINA_UNUSED, const char *cur)
|
||||
{
|
||||
if (!cur) return;
|
||||
|
||||
char *p = (char *) cur;
|
||||
char *end;
|
||||
|
||||
p = strstr(p, "name");
|
||||
if (!p) return NULL;
|
||||
p = strstr(p, "\"");
|
||||
if (!p) return NULL;
|
||||
p++;
|
||||
|
|
|
@ -10,4 +10,4 @@ Eina_Bool parser_type_name_compare(parser_data *pd, const char *str);
|
|||
const char *parser_markup_escape(parser_data *pd EINA_UNUSED, const char *str);
|
||||
attr_value *parser_attribute_get(parser_data *pd, const char *text, const char *cur);
|
||||
const char * parser_paragh_name_get(parser_data *pd, Evas_Object *entry);
|
||||
char *parser_program_name_get(parser_data *pd, const char *cur);
|
||||
char *parser_name_get(parser_data *pd, const char *cur);
|
||||
|
|
Loading…
Reference in New Issue