enventor - refacatoring before adding image preview feature.

This commit is contained in:
ChunEon Park 2013-09-08 16:26:11 +09:00
parent 8fac8ebc85
commit 10c9e81689
3 changed files with 44 additions and 22 deletions

View File

@ -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

View File

@ -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++;

View File

@ -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);