enventor - clean the views when new edc file is loaded.
This commit is contained in:
parent
52e5e71e7d
commit
6fe5a10817
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue