enventor - now user run the program instantly by double click the "program" keyword.

This commit is contained in:
ChunEon Park 2013-09-08 15:27:23 +09:00
parent 18b0268170
commit 1ed8b1ba79
8 changed files with 50 additions and 17 deletions

View File

@ -18,6 +18,7 @@ struct editor_s
stats_data *sd;
config_data *cd;
parser_data *pd;
view_data *vd;
menu_data *md;
int line_max;
@ -34,6 +35,12 @@ struct editor_s
Eina_Bool ctrl_pressed : 1;
};
void
edit_vd_set(edit_data *ed, view_data *vd)
{
ed->vd = vd;
}
static int
indent_space_get(edit_data *ed)
{
@ -441,14 +448,26 @@ edit_cursor_double_clicked_cb(void *data, Evas_Object *obj,
char *text = elm_entry_markup_to_utf8(str);
char *cur = strstr(text, selected);
//Get the attribute values
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);
//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);
}
}
//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);
}
end:
free(text);
}

View File

@ -156,6 +156,23 @@ 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)
{
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++;
end = strstr(p, "\"");
if (!end) return NULL;
return strndup(p, (end - p));
}
attr_value *
parser_attribute_get(parser_data *pd, const char *text, const char *cur)
{

View File

@ -255,7 +255,7 @@ view_obj_get(view_data *vd)
}
void
view_program_signal_emit(view_data *vd, const char *program)
view_program_run(view_data *vd, const char *program)
{
if (!program || !vd->layout) return;
edje_edit_program_run(vd->layout, program);

View File

@ -390,11 +390,6 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev)
statusbar_toggle(ad);
return ECORE_CALLBACK_DONE;
}
if (!strcmp(event->keyname, "F7"))
{
view_program_signal_emit(ad->vd, "test");
return ECORE_CALLBACK_DONE;
}
//Setting
if (!strcmp(event->keyname, "F12"))
{
@ -604,6 +599,7 @@ init(app_data *ad, int argc, char **argv)
statusbar_set(ad, ad->cd);
edc_edit_set(ad, ad->sd, ad->cd);
edc_view_set(ad, ad->cd, ad->sd);
edit_vd_set(ad->ed, ad->vd);
ad->md = menu_init(ad->win, ad->ed, ad->cd, ad->vd, menu_close_cb, ad);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));

View File

@ -16,3 +16,5 @@ void edit_cur_part_update(edit_data *ed);
void edit_font_size_update(edit_data *ed, Eina_Bool msg);
void edit_template_insert(edit_data *ed);
void edit_template_part_insert(edit_data *ed, Edje_Part_Type type);
void edit_vd_set(edit_data *ed, view_data *vd);

View File

@ -10,5 +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);

View File

@ -7,5 +7,5 @@ void view_part_highlight_set(view_data *vd, const char *part_name);
Eina_Bool view_reload_need_get(view_data *vd);
void view_reload_need_set(view_data *vd, Eina_Bool reload);
void view_dummy_toggle(view_data *vd, Eina_Bool msg);
void view_program_signal_emit(view_data *vd, const char *program);
void view_program_run(view_data *vd, const char *program);

View File

@ -140,7 +140,7 @@ const char *TEMPLATE_DESC[TEMPLATE_DESC_LINE_CNT] =
" fixed: 0 0;<br/>",
" min: 0 0;<br/>",
" visible: 1;<br/>",
" image.normal: \"logo.png\";<br/>",
" //image.normal: \"logo.png\";<br/>",
" //aspect: 1 1;<br/>",
"}",
};