forked from enlightenment/enventor
edj_mgr - refactoring.
removed edj_mgr instance handling outside of the edj_mgr. edj_mgr is also singleton instance. don't need to handle the instant unnecessarily.
This commit is contained in:
parent
542e2a9075
commit
d72b0756d2
|
@ -414,8 +414,7 @@ program_run(edit_data *ed, char *cur)
|
|||
char *program = parser_name_get(ed->pd, cur);
|
||||
if (program)
|
||||
{
|
||||
edj_mgr *em = edj_mgr_get();
|
||||
view_data *vd = edj_mgr_view_get(em, NULL);
|
||||
view_data *vd = edj_mgr_view_get(NULL);
|
||||
view_program_run(vd, program);
|
||||
free(program);
|
||||
}
|
||||
|
|
|
@ -3,27 +3,49 @@
|
|||
|
||||
const double VIEW_CACHING_TIME = 60 * 30;
|
||||
|
||||
static edj_mgr *g_em;
|
||||
|
||||
typedef struct edj_data_s
|
||||
{
|
||||
view_data *vd;
|
||||
Ecore_Timer *timer;
|
||||
} edj_data;
|
||||
|
||||
struct edj_mgr_s
|
||||
typedef struct edj_mgr_s
|
||||
{
|
||||
Eina_List *edjs;
|
||||
edj_data *edj;
|
||||
Evas_Object *layout;
|
||||
|
||||
Eina_Bool reload_need : 1;
|
||||
};
|
||||
} edj_mgr;
|
||||
|
||||
static edj_mgr *g_em = NULL;
|
||||
|
||||
static void
|
||||
view_del_cb(void *data)
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
edj_data *edj = data;
|
||||
em->edjs = eina_list_remove(em->edjs, edj);
|
||||
if (edj->timer) ecore_timer_del(edj->timer);
|
||||
if (em->edj == edj) em->edj = NULL;
|
||||
free(edj);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
view_del_timer_cb(void *data)
|
||||
{
|
||||
view_data *vd = data;
|
||||
edj_data *edj = view_data_get(vd);
|
||||
edj->timer = NULL;
|
||||
edj_mgr_view_del(vd);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
void
|
||||
edj_mgr_clear(edj_mgr *em)
|
||||
edj_mgr_clear()
|
||||
{
|
||||
edj_data *edj;
|
||||
edj_mgr *em = g_em;
|
||||
|
||||
EINA_LIST_FREE(em->edjs, edj)
|
||||
{
|
||||
|
@ -36,36 +58,34 @@ edj_mgr_clear(edj_mgr *em)
|
|||
em->reload_need = EINA_FALSE;
|
||||
}
|
||||
|
||||
edj_mgr *
|
||||
void
|
||||
edj_mgr_init(Evas_Object *parent)
|
||||
{
|
||||
edj_mgr *em = calloc(1, sizeof(edj_mgr));
|
||||
g_em = em;
|
||||
|
||||
Evas_Object *layout = elm_layout_add(parent);
|
||||
elm_layout_file_set(layout, EDJE_PATH, "viewer_layout");
|
||||
evas_object_show(layout);
|
||||
em->layout = layout;
|
||||
g_em = em;
|
||||
return em;
|
||||
}
|
||||
|
||||
edj_mgr *
|
||||
edj_mgr_get()
|
||||
{
|
||||
return g_em;
|
||||
}
|
||||
|
||||
void
|
||||
edj_mgr_term(edj_mgr *em)
|
||||
edj_mgr_term()
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
|
||||
edj_mgr_clear(em);
|
||||
evas_object_del(em->layout);
|
||||
free(em);
|
||||
}
|
||||
|
||||
view_data *
|
||||
edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
|
||||
edj_mgr_view_get(Eina_Stringshare *group)
|
||||
{
|
||||
if (!em) em = g_em;
|
||||
edj_mgr *em = g_em;
|
||||
if (!em) return NULL;
|
||||
|
||||
if (!group && em->edj) return em->edj->vd;
|
||||
|
||||
edj_data *edj;
|
||||
|
@ -79,8 +99,9 @@ edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
|
|||
}
|
||||
|
||||
void
|
||||
edj_mgr_view_del(edj_mgr *em, view_data *vd)
|
||||
edj_mgr_view_del(view_data *vd)
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
edj_data *edj = view_data_get(vd);
|
||||
em->edjs = eina_list_remove(em->edjs, edj);
|
||||
if (edj->timer) ecore_timer_del(edj->timer);
|
||||
|
@ -88,20 +109,11 @@ edj_mgr_view_del(edj_mgr *em, view_data *vd)
|
|||
free(edj);
|
||||
}
|
||||
|
||||
static void
|
||||
view_del_cb(void *data)
|
||||
view_data *
|
||||
edj_mgr_view_new(const char *group, stats_data *sd)
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
edj_data *edj = data;
|
||||
em->edjs = eina_list_remove(em->edjs, edj);
|
||||
if (edj->timer) ecore_timer_del(edj->timer);
|
||||
if (em->edj == edj) em->edj = NULL;
|
||||
free(edj);
|
||||
}
|
||||
|
||||
view_data *
|
||||
edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd)
|
||||
{
|
||||
edj_data *edj = calloc(1, sizeof(edj_data));
|
||||
if (!edj) return NULL;
|
||||
|
||||
|
@ -113,26 +125,18 @@ edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd)
|
|||
}
|
||||
|
||||
edj->vd = vd;
|
||||
edj_mgr_view_switch_to(em, vd);
|
||||
edj_mgr_view_switch_to(vd);
|
||||
|
||||
em->edjs = eina_list_append(em->edjs, edj);
|
||||
|
||||
return vd;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
view_del_timer_cb(void *data)
|
||||
{
|
||||
view_data *vd = data;
|
||||
edj_data *edj = view_data_get(vd);
|
||||
edj->timer = NULL;
|
||||
edj_mgr_view_del(g_em, vd);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
view_data *
|
||||
edj_mgr_view_switch_to(edj_mgr *em, view_data *vd)
|
||||
edj_mgr_view_switch_to(view_data *vd)
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
|
||||
if (em->edj && (em->edj->vd == vd)) return vd;
|
||||
|
||||
//Switch views
|
||||
|
@ -178,19 +182,22 @@ edj_mgr_view_switch_to(edj_mgr *em, view_data *vd)
|
|||
}
|
||||
|
||||
Evas_Object *
|
||||
edj_mgr_obj_get(edj_mgr *em)
|
||||
edj_mgr_obj_get()
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
return em->layout;
|
||||
}
|
||||
|
||||
void
|
||||
edj_mgr_reload_need_set(edj_mgr *em, Eina_Bool reload)
|
||||
edj_mgr_reload_need_set(Eina_Bool reload)
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
em->reload_need = reload;
|
||||
}
|
||||
|
||||
Eina_Bool
|
||||
edj_mgr_reload_need_get(edj_mgr *em)
|
||||
edj_mgr_reload_need_get()
|
||||
{
|
||||
edj_mgr *em = g_em;
|
||||
return em->reload_need;
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ file_set_timer_cb(void *data)
|
|||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
|
||||
edj_mgr_reload_need_set(EINA_TRUE);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
typedef struct app_s
|
||||
{
|
||||
edit_data *ed;
|
||||
edj_mgr *em;
|
||||
stats_data *sd;
|
||||
|
||||
Eio_Monitor *edc_monitor;
|
||||
|
@ -312,7 +311,7 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void *ev)
|
|||
if (!ad->ctrl_pressed) return ECORE_CALLBACK_PASS_ON;
|
||||
|
||||
//Scale up/down layout
|
||||
view_data *vd = edj_mgr_view_get(ad->em, NULL);
|
||||
view_data *vd = edj_mgr_view_get(NULL);
|
||||
double scale = config_view_scale_get();
|
||||
|
||||
if (event->z < 0) scale += 0.1;
|
||||
|
@ -332,9 +331,9 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void *ev)
|
|||
static void
|
||||
edc_view_set(app_data *ad, stats_data *sd, Eina_Stringshare *group)
|
||||
{
|
||||
view_data *vd = edj_mgr_view_get(ad->em, group);
|
||||
if (vd) edj_mgr_view_switch_to(ad->em, vd);
|
||||
else vd = edj_mgr_view_new(ad->em, group, sd);
|
||||
view_data *vd = edj_mgr_view_get(group);
|
||||
if (vd) edj_mgr_view_switch_to(vd);
|
||||
else vd = edj_mgr_view_new(group, sd);
|
||||
|
||||
if (!vd) return;
|
||||
|
||||
|
@ -385,11 +384,11 @@ config_update_cb(void *data)
|
|||
view_dummy_toggle(VIEW_DATA, EINA_FALSE);
|
||||
|
||||
//previous build was failed, Need to rebuild then reload the edj.
|
||||
if (edj_mgr_reload_need_get(ad->em))
|
||||
if (edj_mgr_reload_need_get())
|
||||
{
|
||||
build_edc();
|
||||
edit_changed_set(ad->ed, EINA_FALSE);
|
||||
edj_mgr_clear(ad->em);
|
||||
edj_mgr_clear();
|
||||
edc_view_set(ad, 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());
|
||||
|
@ -400,7 +399,7 @@ config_update_cb(void *data)
|
|||
edit_changed_set(ad->ed, EINA_FALSE);
|
||||
}
|
||||
|
||||
view_scale_set(edj_mgr_view_get(ad->em, NULL), config_view_scale_get());
|
||||
view_scale_set(edj_mgr_view_get(NULL), config_view_scale_get());
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -511,8 +510,8 @@ elm_setup()
|
|||
static void
|
||||
edj_mgr_set(app_data *ad)
|
||||
{
|
||||
ad->em = edj_mgr_init(base_layout_get());
|
||||
base_left_view_set(edj_mgr_obj_get(ad->em));
|
||||
edj_mgr_init(base_layout_get());
|
||||
base_left_view_set(edj_mgr_obj_get());
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -559,7 +558,7 @@ term(app_data *ad)
|
|||
build_term();
|
||||
menu_term();
|
||||
edit_term(ad->ed);
|
||||
edj_mgr_term(ad->em);
|
||||
edj_mgr_term();
|
||||
stats_term(ad->sd);
|
||||
base_gui_term();
|
||||
config_term();
|
||||
|
|
|
@ -675,7 +675,7 @@ edc_reload(menu_data *md, const char *edc_path)
|
|||
{
|
||||
config_edc_path_set(edc_path);
|
||||
edit_new(md->ed);
|
||||
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
|
||||
edj_mgr_reload_need_set(EINA_TRUE);
|
||||
config_apply();
|
||||
}
|
||||
|
||||
|
@ -769,7 +769,7 @@ fileselector_save_done_cb(void *data, Evas_Object *obj, void *event_info)
|
|||
return;
|
||||
}
|
||||
|
||||
edj_mgr_reload_need_set(edj_mgr_get(), EINA_TRUE);
|
||||
edj_mgr_reload_need_set(EINA_TRUE);
|
||||
config_apply();
|
||||
|
||||
fileselector_close(md);
|
||||
|
|
|
@ -9,7 +9,6 @@ typedef struct parser_s parser_data;
|
|||
typedef struct attr_value_s attr_value;
|
||||
typedef struct syntax_helper_s syntax_helper;
|
||||
typedef struct indent_s indent_data;
|
||||
typedef struct edj_mgr_s edj_mgr;
|
||||
|
||||
#include "edc_editor.h"
|
||||
#include "menu.h"
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
edj_mgr *edj_mgr_get();
|
||||
edj_mgr *edj_mgr_init(Evas_Object *parent);
|
||||
void edj_mgr_term(edj_mgr *em);
|
||||
view_data * edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd);
|
||||
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);
|
||||
#define VIEW_DATA edj_mgr_view_get(NULL)
|
||||
|
||||
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);
|
||||
void edj_mgr_init(Evas_Object *parent);
|
||||
void edj_mgr_term();
|
||||
view_data * edj_mgr_view_new(const char *group, stats_data *sd);
|
||||
view_data *edj_mgr_view_get(Eina_Stringshare *group);
|
||||
Evas_Object * edj_mgr_obj_get();
|
||||
view_data *edj_mgr_view_switch_to(view_data *vd);
|
||||
void edj_mgr_view_del(view_data *vd);
|
||||
void edj_mgr_reload_need_set(Eina_Bool reload);
|
||||
Eina_Bool edj_mgr_reload_need_get();
|
||||
void edj_mgr_clear();
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
#define VIEW_DATA edj_mgr_view_get(NULL, NULL)
|
||||
|
||||
void menu_init(edit_data *ed);
|
||||
void menu_term();
|
||||
void menu_toggle();
|
||||
|
|
Loading…
Reference in New Issue