forked from enlightenment/enventor
enventor - now user run the program instantly by double click the "program" keyword.
This commit is contained in:
parent
18b0268170
commit
1ed8b1ba79
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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/>",
|
||||
"}",
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue