multi-file: support live editor.

Additional implementation.
Now it works for live editing.
This commit is contained in:
Hermet Park 2016-07-04 17:53:54 +09:00
parent 3840ab3f5e
commit 193ec29fa0
6 changed files with 39 additions and 39 deletions

View File

@ -222,7 +222,9 @@ view_obj_get(live_data *ld)
{
//This is a trick! we got the actual view object from the live edit.
Evas_Object *o = view_scroller_get(ld);
if (!o) return NULL;
Evas_Object *o2 = elm_object_content_get(o);
if (!o2) return NULL;
return elm_object_part_content_get(o2, "elm.swallow.content");
}
@ -1959,7 +1961,7 @@ rel_to_values_reset(live_data *ld)
ld->rel_to_info.min_h = 0;
}
static void
static Eina_Bool
live_edit_layer_set(live_data *ld)
{
//Keygrabber
@ -1995,7 +1997,15 @@ live_edit_layer_set(live_data *ld)
//Create Live View Layout
Evas_Object *layout = elm_layout_add(ld->live_view);
Evas_Object *view_obj = view_obj_get(ld);
if (!view_obj)
{
stats_info_msg_update("Live Edit is not avaiable here. A base group is required!");
live_edit_cancel(EINA_FALSE);
return EINA_FALSE;
}
evas_object_smart_member_add(layout, view_obj);
//Live Edit layout should be more than spacer and dummies.
evas_object_layer_set(layout, EVAS_LAYER_MAX);
elm_layout_file_set(layout, EDJE_PATH, "live_edit_layout");
evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN,
layout_mouse_down_cb, ld);
@ -2024,6 +2034,8 @@ live_edit_layer_set(live_data *ld)
ld->last_cp = Ctrl_Pt_Cnt;
panes_live_edit_fixed_bar_visible_set(EINA_TRUE);
return EINA_TRUE;
}
static void
@ -2041,7 +2053,7 @@ live_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
ld->live_view = enventor_object_live_view_get(base_enventor_get());
ld->on = EINA_TRUE;
live_edit_layer_set(ld);
if (!live_edit_layer_set(ld)) return;
stats_info_msg_update(_("Double click part to confirm."
"(Esc = cancel, Direction Key ="

View File

@ -146,22 +146,25 @@ dummy_objs_update(dummy_obj *dummy)
}
if (!obj)
{
//Trick!. set smart members of actual live view object.
Evas_Object *scroller = view_obj_get(VIEW_DATA);
Evas_Object *scroller_edje = elm_layout_edje_get(scroller);
Evas_Object *clipper =
(Evas_Object *)edje_object_part_object_get(scroller_edje,
"clipper");
obj = elm_layout_add(scroller);
elm_layout_file_set(obj, EDJE_PATH, "spacer");
evas_object_smart_member_add(obj, scroller);
if (!scroller) continue;
Evas_Object *o = elm_object_content_get(scroller);
if (!o) continue;
Evas_Object *o2 =
elm_object_part_content_get(o, "elm.swallow.content");
if (!o2) continue;
obj = edje_object_add(evas);
edje_object_file_set(obj, EDJE_PATH, "spacer");
evas_object_layer_set(obj, EVAS_LAYER_MAX - 1);
evas_object_smart_member_add(obj, o2);
po = malloc(sizeof(part_obj));
po->obj = obj;
po->name = eina_stringshare_add(part_name);
dummy->spacers = eina_list_append(dummy->spacers, po);
evas_object_show(obj);
evas_object_clip_set(obj, clipper);
evas_object_data_set(obj, EDIT_LAYOUT_KEY, dummy->layout);
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_DOWN,

View File

@ -1427,6 +1427,7 @@ edit_init(Enventor_Object *enventor, Enventor_Item *it)
ed->pd = parser_init();
ed->rd = redoundo_init(ed, enventor);
ed->sh = syntax_init(ed);
ed->main = (enventor_object_main_item_get(ed->enventor) == ed->it);
return ed;
}
@ -1843,7 +1844,7 @@ edit_text_get(edit_data *ed)
Eina_Bool
edit_is_main_file(edit_data *ed)
{
return (enventor_object_main_item_get(ed->enventor) == ed->it);
return ed->main;
}
Eina_Bool

View File

@ -321,7 +321,6 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
const char *DEF_STATE_NAME = "default";
const int DEF_STATE_LEN = 7;
cur_context_td *td = data;
char *utf8 = td->utf8;
int cur_pos = td->cur_pos;
@ -346,6 +345,8 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
int cur_line = 1;
Eina_List *macro_list = NULL;
if (!collections) bracket = 1;
if (td->pd->macro_update)
{
parser_macro_list_set(td->pd, (const char *) utf8);
@ -397,28 +398,15 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
{
bracket--;
p++;
if (collections)
{
if (bracket == 1) group_name = NULL;
else if (bracket == 2 && inside_parts == EINA_TRUE)
inside_parts = EINA_FALSE;
else if (bracket == 3) part_name = NULL;
else if (bracket == 4) desc_name = NULL;
}
else
{
if (bracket == 0) group_name = NULL;
else if (bracket == 1 && inside_parts == EINA_TRUE)
inside_parts = EINA_FALSE;
else if (bracket == 2) part_name = NULL;
else if (bracket == 3) desc_name = NULL;
}
if (bracket == 1) group_name = NULL;
else if (bracket == 2 && inside_parts == EINA_TRUE)
inside_parts = EINA_FALSE;
else if (bracket == 3) part_name = NULL;
else if (bracket == 4) desc_name = NULL;
continue;
}
//check block "Parts" in
if ((collections && (bracket == 2)) ||
(!collections && (bracket == 1)))
if (bracket == 2)
{
if (!strncmp(p, PARTS, PARTS_LEN))
{
@ -429,8 +417,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
}
}
//Check Part in
if ((collections && (bracket == 3)) ||
(!collections && (bracket == 2)))
if (bracket == 3)
{
int part_idx = -1;
//part ? image ? swallow ? text ? rect ?
@ -461,8 +448,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
}
}
//Check Description in
if ((collections && (bracket == 4)) ||
(!collections && (bracket == 3)))
if (bracket == 4)
{
//description? or desc?
int desc_idx = -1;
@ -559,8 +545,7 @@ cur_context_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
}
}
//Check Group in. Probably inside of collections or the most outside.
if ((collections && (bracket == 1)) ||
(!collections && (bracket == 0)))
if (bracket == 1)
{
if (!strncmp(p, GROUP, GROUP_LEN))
{

View File

@ -168,7 +168,6 @@ edj_mgr_view_switch_to(view_data *vd)
elm_object_part_content_unset(em->layout, "elm.swallow.content");
elm_object_part_content_set(em->layout, "elm.swallow.content",
view_obj_get(vd));
view_scale_set(vd, em->view_scale);
//Switching effect

View File

@ -767,7 +767,7 @@ _enventor_object_template_part_insert(Eo *obj EINA_UNUSED,
rel2_x_to = buf;
}
return template_part_insert(pd->main_it.ed, part, insert_type,
return template_part_insert(pd->focused_it->ed, part, insert_type,
fixed_w, fixed_h,
rel1_x_to, rel1_y_to,
rel2_x_to, rel2_y_to,