enventor - introducing edj manager

This commit is contained in:
ChunEon Park 2013-09-19 13:42:34 +09:00
parent cdbfb514f8
commit 82515d3c30
5 changed files with 47 additions and 30 deletions

View File

@ -18,7 +18,6 @@ struct editor_s
stats_data *sd;
config_data *cd;
parser_data *pd;
view_data *vd;
int cur_line;
int line_max;
@ -36,13 +35,6 @@ struct editor_s
static Eina_Bool image_preview_show(edit_data *ed, char *cur, Evas_Coord x, Evas_Coord y);
void
edit_vd_set(edit_data *ed, view_data *vd)
{
ed->vd = vd;
}
static void
line_increase(edit_data *ed)
{
@ -427,7 +419,9 @@ program_run(edit_data *ed, char *cur)
char *program = parser_name_get(ed->pd, cur);
if (program)
{
view_program_run(ed->vd, program);
edj_mgr *em = edj_mgr_get();
view_data *vd = edj_mgr_view_get(em, NULL);
view_program_run(vd, program);
free(program);
}
}

View File

@ -1,17 +1,24 @@
#include <Elementary.h>
#include "common.h"
static edj_mgr *em;
struct edj_mgr_s
{
Eina_List *vds;
view_data *vd;
};
edj_mgr *
edj_mgr_init()
{
edj_mgr *em = calloc(1, sizeof(edj_mgr));
em = calloc(1, sizeof(edj_mgr));
return em;
}
edj_mgr *
edj_mgr_get()
{
return em;
}
@ -27,12 +34,17 @@ edj_mgr_term(edj_mgr *em)
view_data *
edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
{
view_data *vd = NULL;
if (!group) return em->vd;
view_data *vd;
Eina_List *l;
EINA_LIST_FOREACH(em->vds, l, vd)
{
if (view_group_name_get(vd) == group)
return vd;
{
em->vd = vd;
return vd;
}
}
return NULL;
}
@ -45,6 +57,7 @@ edj_mgr_view_new(edj_mgr *em, Evas_Object *parent, const char *group,
if (!vd) return NULL;
em->vds = eina_list_append(em->vds, vd);
em->vd = vd;
return vd;
}

View File

@ -256,6 +256,7 @@ view_obj_get(view_data *vd)
void
view_program_run(view_data *vd, const char *program)
{
if (!vd) return;
if (!program || !vd->layout) return;
edje_edit_program_run(vd->layout, program);
char buf[256];

View File

@ -8,7 +8,7 @@ int main(int argc, char **argv);
struct app_s
{
edit_data *ed;
view_data *vd;
edj_mgr *em;
menu_data *md;
stats_data *sd;
config_data *cd;
@ -184,7 +184,11 @@ part_highlight_toggle(app_data *ad, Eina_Bool msg)
{
Eina_Bool highlight = config_part_highlight_get(ad->cd);
if (highlight) edit_view_sync(ad->ed);
else view_part_highlight_set(ad->vd, NULL);
else
{
view_data *vd = edj_mgr_view_get(ad->em, NULL);
view_part_highlight_set(vd, NULL);
}
if (!msg) return;
@ -281,7 +285,8 @@ ctrl_func(app_data *ad, const char *keyname)
if (!strcmp(keyname, "w") || !strcmp(keyname, "W"))
{
config_dummy_swallow_set(ad->cd, !config_dummy_swallow_get(ad->cd));
view_dummy_toggle(ad->vd, EINA_TRUE);
view_data *vd = edj_mgr_view_get(ad->em, NULL);
view_dummy_toggle(vd, EINA_TRUE);
return ECORE_CALLBACK_DONE;
}
//Full Edit View
@ -408,7 +413,8 @@ view_sync_cb(void *data, Eina_Stringshare *part_name,
Eina_Stringshare *group_name)
{
app_data *ad = data;
view_part_highlight_set(ad->vd, part_name);
view_data *vd = edj_mgr_view_get(ad->em, NULL);
view_part_highlight_set(vd, part_name);
}
static void
@ -425,9 +431,8 @@ static void
edc_view_set(app_data *ad, config_data *cd, stats_data *sd)
{
const char *group = stats_group_name_get(ad->sd);
view_data *vd = view_init(ad->panes, group, sd, cd);
view_data *vd = edj_mgr_view_new(ad->em, ad->panes, group, sd, cd);
elm_object_part_content_set(ad->panes, "left", view_obj_get(vd));
ad->vd = vd;
}
static void
@ -450,14 +455,16 @@ config_update_cb(void *data, config_data *cd)
edit_font_size_update(ad->ed, EINA_FALSE);
statusbar_toggle(ad);
part_highlight_toggle(ad, EINA_FALSE);
view_dummy_toggle(ad->vd, EINA_FALSE);
view_data *vd = edj_mgr_view_get(ad->em, NULL);
view_dummy_toggle(vd, EINA_FALSE);
//previous build was failed, Need to rebuild then reload the edj.
if (view_reload_need_get(ad->vd))
if (view_reload_need_get(vd))
{
rebuild_edc();
edit_changed_set(ad->ed, EINA_FALSE);
view_new(ad->vd, stats_group_name_get(ad->sd));
view_new(vd, stats_group_name_get(ad->sd));
view_sync_cb(ad, NULL, NULL);
if (ad->edc_monitor) eio_monitor_del(ad->edc_monitor);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));
@ -600,11 +607,11 @@ init(app_data *ad, int argc, char **argv)
if (!edc_proto_setup(ad->cd)) return EINA_FALSE;
if (!base_gui_construct(ad)) return EINA_FALSE;
ad->em = edj_mgr_init();
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->md = menu_init(ad->win, ad->ed, ad->cd, menu_close_cb, ad);
ad->edc_monitor = eio_monitor_add(config_edc_path_get(ad->cd));
ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, edc_changed_cb, ad);
@ -616,8 +623,8 @@ static void
term(app_data *ad)
{
menu_term(ad->md);
view_term(ad->vd);
edit_term(ad->ed);
edj_mgr_term(ad->em);
stats_term(ad->sd);
config_term(ad->cd);

View File

@ -27,7 +27,6 @@ struct menu_s
config_data *cd;
edit_data *ed;
view_data *vd;
Eina_Bool menu_open : 1;
};
@ -693,7 +692,9 @@ 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(md->vd, EINA_TRUE);
edj_mgr *em = edj_mgr_get();
view_data *vd = edj_mgr_view_get(em, NULL);
view_reload_need_set(vd, EINA_TRUE);
config_apply(md->cd);
}
@ -785,7 +786,9 @@ fileselector_save_done_cb(void *data, Evas_Object *obj EINA_UNUSED,
return;
}
view_reload_need_set(md->vd, EINA_TRUE);
edj_mgr *em = edj_mgr_get();
view_data *vd = edj_mgr_view_get(em, NULL);
view_reload_need_set(vd, EINA_TRUE);
config_apply(md->cd);
fileselector_close(md);
@ -1048,14 +1051,13 @@ menu_open(menu_data *md)
}
menu_data *
menu_init(Evas_Object *win, edit_data *ed, config_data *cd, view_data *vd,
menu_init(Evas_Object *win, edit_data *ed, config_data *cd,
void (*close_cb)(void *data), void *data)
{
menu_data *md = calloc(1, sizeof(menu_data));
md->win = win;
md->ed = ed;
md->cd = cd;
md->vd = vd;
md->close_cb = close_cb;
md->close_cb_data = data;
g_md = md;