enventor - clean the views when new edc file is loaded.

This commit is contained in:
ChunEon Park 2013-09-19 21:42:42 +09:00
parent 52e5e71e7d
commit 6fe5a10817
7 changed files with 51 additions and 36 deletions

View File

@ -16,8 +16,26 @@ struct edj_mgr_s
Eina_List *edjs;
edj_data *edj;
Evas_Object *layout;
Eina_Bool reload_need : 1;
};
void
edj_mgr_clear(edj_mgr *em)
{
edj_data *edj;
EINA_LIST_FREE(em->edjs, edj)
{
if (edj->timer) ecore_timer_del(edj->timer);
view_term(edj->vd);
free(edj);
}
em->edjs = NULL;
em->edj = NULL;
em->reload_need = EINA_FALSE;
}
edj_mgr *
edj_mgr_init(Evas_Object *parent)
{
@ -39,13 +57,7 @@ edj_mgr_get()
void
edj_mgr_term(edj_mgr *em)
{
edj_data *edj;
EINA_LIST_FREE(em->edjs, edj)
{
if (edj->timer) ecore_timer_del(edj->timer);
view_term(edj->vd);
}
edj_mgr_clear(em);
evas_object_del(em->layout);
free(em);
}
@ -159,3 +171,15 @@ edj_mgr_obj_get(edj_mgr *em)
{
return em->layout;
}
void
edj_mgr_reload_need_set(edj_mgr *em, Eina_Bool reload)
{
em->reload_need = reload;
}
Eina_Bool
edj_mgr_reload_need_get(edj_mgr *em)
{
return em->reload_need;
}

View File

@ -21,7 +21,6 @@ struct viewer_s
void *data;
Eina_Bool view_reload;
Eina_Bool dummy_on;
};
@ -153,7 +152,8 @@ view_obj_create(view_data *vd, const char *file_path, const char *group)
{
Evas *e = evas_object_evas_get(vd->scroller);
Evas_Object *layout = edje_edit_object_add(e);
vd->view_reload = !edje_object_file_set(layout, file_path, group);
if (!edje_object_file_set(layout, file_path, group))
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_event_callback_add(layout, EVAS_CALLBACK_RESIZE,
@ -201,26 +201,6 @@ view_dummy_toggle(view_data *vd, Eina_Bool msg)
vd->dummy_on = dummy_on;
}
void
view_new(view_data *vd, const char *group)
{
eina_stringshare_replace(&vd->group_name, group);
ecore_idler_add(view_obj_idler_cb, vd);
view_part_highlight_set(vd, NULL);
}
void
view_reload_need_set(view_data *vd, Eina_Bool reload)
{
vd->view_reload = reload;
}
Eina_Bool
view_reload_need_get(view_data *vd)
{
return vd->view_reload;
}
view_data *
view_init(Evas_Object *parent, const char *group, stats_data *sd,
config_data *cd)
@ -232,7 +212,9 @@ view_init(Evas_Object *parent, const char *group, stats_data *sd,
vd->scroller = view_scroller_create(parent);
vd->dummy_on = config_dummy_swallow_get(cd);
view_new(vd, group);
eina_stringshare_replace(&vd->group_name, group);
ecore_idler_add(view_obj_idler_cb, vd);
view_part_highlight_set(vd, NULL);
return vd;
}
@ -248,6 +230,9 @@ view_term(view_data *vd)
if (vd->part_obj)
evas_object_event_callback_del(vd->part_obj, EVAS_CALLBACK_DEL,
part_obj_del_cb);
evas_object_del(vd->scroller);
free(vd);
}

View File

@ -460,11 +460,12 @@ config_update_cb(void *data, config_data *cd)
view_dummy_toggle(VIEW_DATA, EINA_FALSE);
//previous build was failed, Need to rebuild then reload the edj.
if (view_reload_need_get(VIEW_DATA))
if (edj_mgr_reload_need_get(ad->em))
{
rebuild_edc();
edit_changed_set(ad->ed, EINA_FALSE);
view_new(VIEW_DATA, stats_group_name_get(ad->sd));
edj_mgr_clear(ad->em);
edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd));
if (ad->edc_monitor) eio_monitor_del(ad->edc_monitor);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));
}

View File

@ -692,7 +692,7 @@ edc_reload(menu_data *md, const char *edc_path)
{
config_edc_path_set(md->cd, edc_path);
edit_new(md->ed);
view_reload_need_set(VIEW_DATA, EINA_TRUE);
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
config_apply(md->cd);
}
@ -784,7 +784,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj EINA_UNUSED,
return;
}
view_reload_need_set(VIEW_DATA, EINA_TRUE);
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
config_apply(md->cd);
fileselector_close(md);

View File

@ -11,3 +11,4 @@ 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_name_get(parser_data *pd, const char *cur);
void parser_cancel(parser_data *pd);

View File

@ -6,3 +6,9 @@ view_data *edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group);
Evas_Object * edj_mgr_obj_get(edj_mgr *em);
view_data *edj_mgr_view_switch_to(edj_mgr *em, view_data *vd);
void edj_mgr_view_del(edj_mgr *em, view_data *vd);
void edj_mgr_reload_need_set(edj_mgr *em, Eina_Bool reload);
Eina_Bool edj_mgr_reload_need_get(edj_mgr *em);
void edj_mgr_clear(edj_mgr *em);

View File

@ -3,8 +3,6 @@ void view_term(view_data *vd);
Evas_Object *view_obj_get(view_data *vd);
void view_new(view_data *vd, const char *group);
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_run(view_data *vd, const char *program);
Eina_Stringshare *view_group_name_get(view_data *vd);