enventor - applied view switching effect.

This commit is contained in:
ChunEon Park 2013-09-19 17:44:51 +09:00
parent 7a23ac221f
commit eb38a5da4d
11 changed files with 130 additions and 27 deletions

View File

@ -1,9 +1,72 @@
styles {
style { name: "entry_statusbar_style";
base: "font="FN" font_size=11 color=#000000 text_class=entry color=#606060";
base: "font="FN" font_size=11 color=#000000 text_class=entry color=#606060 align=center";
}
}
group { name: "viewer_layout";
parts {
part { name: "prev_clipper";
type: RECT;
description { state: "default" 0.0;
}
description { state: "switched" 0.0;
color: 255 255 255 0;
}
}
part { name: "cur_clipper";
type: RECT;
description { state: "default" 0.0;
rel1.relative: -1 0;
rel2.relative: 0 1;
color: 255 255 255 0;
}
description { state: "switched" 0.0;
rel1.relative: 0 0;
rel2.relative: 1 1;
color: 255 255 255 255;
}
}
part { name: "elm.swallow.prev";
type: SWALLOW;
clip_to: "prev_clipper";
description { state: "default" 0.0;
}
}
part { name: "elm.swallow.content";
type: SWALLOW;
clip_to: "cur_clipper";
description { state: "default" 0.0;
rel1.to: "cur_clipper";
rel2.to: "cur_clipper";
}
}
}
programs {
program { name: "switch_instant";
signal: "elm,view,switch,instant";
source: "";
action: STATE_SET "switched" 0.0;
target: "prev_clipper";
target: "cur_clipper";
}
program { name: "switch";
signal: "elm,view,switch";
source: "";
action: STATE_SET "default" 0.0;
target: "prev_clipper";
target: "cur_clipper";
after: "switched";
}
program { name: "switched";
action: STATE_SET "switched" 0.0;
target: "prev_clipper";
target: "cur_clipper";
transition: DECELERATE 0.25;
}
}
}
group { name: "preview_layout";
parts {
part { name: "bg";

View File

@ -7,12 +7,17 @@ struct edj_mgr_s
{
Eina_List *vds;
view_data *vd;
Evas_Object *layout;
};
edj_mgr *
edj_mgr_init()
edj_mgr_init(Evas_Object *parent)
{
edj_mgr *em = calloc(1, sizeof(edj_mgr));
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;
}
@ -29,6 +34,7 @@ edj_mgr_term(edj_mgr *em)
view_data *vd;
EINA_LIST_FREE(em->vds, vd)
view_term(vd);
evas_object_del(em->layout);
free(em);
}
@ -52,29 +58,45 @@ edj_mgr_view_get(edj_mgr *em, Eina_Stringshare *group)
}
view_data *
edj_mgr_view_new(edj_mgr *em, Evas_Object *parent, const char *group,
stats_data *sd, config_data *cd)
edj_mgr_view_new(edj_mgr *em, const char *group, stats_data *sd,
config_data *cd)
{
view_data *vd = edj_mgr_view_get(em, group);
if (!vd) vd = view_init(parent, group, sd, cd);
if (!vd) vd = view_init(em->layout, group, sd, cd);
if (!vd) return NULL;
if (em->vd) evas_object_hide(view_obj_get(em->vd));
edj_mgr_view_switch_to(em, vd);
em->vds = eina_list_append(em->vds, vd);
em->vd = vd;
return vd;
}
view_data *
edj_mgr_view_switch_to(edj_mgr *em, const char *group)
edj_mgr_view_switch_to(edj_mgr *em, view_data *vd)
{
view_data *vd = edj_mgr_view_get(em, group);
if (!vd) return NULL;
Evas_Object *prev =
elm_object_part_content_unset(em->layout, "elm.swallow.content");
elm_object_part_content_set(em->layout, "elm.swallow.content",
view_obj_get(vd));
if (prev && (prev != view_obj_get(vd)))
{
elm_object_part_content_set(em->layout, "elm.swallow.prev", prev);
elm_object_signal_emit(em->layout, "elm,view,switch", "");
}
else
{
elm_object_signal_emit(em->layout, "elm,view,switch,instant", "");
}
em->vd = vd;
return vd;
}
Evas_Object *
edj_mgr_obj_get(edj_mgr *em)
{
return em->layout;
}

View File

@ -407,14 +407,12 @@ static void
edc_view_set(app_data *ad, config_data *cd, stats_data *sd,
Eina_Stringshare *group)
{
const char *LEFT_PART = "left";
view_data *vd = edj_mgr_view_switch_to(ad->em, group);
if (!vd) vd = edj_mgr_view_new(ad->em, ad->panes, group, sd, cd);
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, cd);
if (!vd) return;
Evas_Object *o = elm_object_part_content_unset(ad->panes, LEFT_PART);
elm_object_part_content_set(ad->panes, LEFT_PART, view_obj_get(vd));
evas_object_hide(o);
stats_edc_file_set(sd, group);
}
@ -423,7 +421,8 @@ view_sync_cb(void *data, Eina_Stringshare *part_name,
Eina_Stringshare *group_name)
{
app_data *ad = data;
edc_view_set(ad, ad->cd, ad->sd, group_name);
if (stats_group_name_get(ad->sd) != group_name)
edc_view_set(ad, ad->cd, ad->sd, group_name);
view_part_highlight_set(VIEW_DATA, part_name);
}
@ -591,6 +590,13 @@ menu_close_cb(void *data)
ad->menu_opened = EINA_FALSE;
}
static void
edj_mgr_set(app_data *ad)
{
ad->em = edj_mgr_init(ad->panes);
elm_object_part_content_set(ad->panes, "left", edj_mgr_obj_get(ad->em));
}
static Eina_Bool
init(app_data *ad, int argc, char **argv)
{
@ -608,7 +614,7 @@ 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();
edj_mgr_set(ad);
statusbar_set(ad, ad->cd);
edc_edit_set(ad, ad->sd, ad->cd);
edc_view_set(ad, ad->cd, ad->sd, stats_group_name_get(ad->sd));

View File

@ -9,4 +9,5 @@ EXTRA_DIST = common.h \
menu.h \
panes.h \
statusbar.h \
syntax_color.h
edj_mgr.h \
syntax_color.h

View File

@ -13,6 +13,7 @@ typedef struct attr_value_s attr_value;
typedef struct dummy_obj_s dummy_obj;
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"
@ -26,6 +27,7 @@ typedef struct indent_s indent_data;
#include "dummy_obj.h"
#include "ctxpopup.h"
#include "indent.h"
#include "edj_mgr.h"
#include "globals.h"
#endif

View File

@ -8,11 +8,9 @@ void edit_changed_set(edit_data *ed, Eina_Bool changed);
void edit_line_number_toggle(edit_data *ed);
void edit_editable_set(edit_data *ed, Eina_Bool editable);
Eina_Bool edit_save(edit_data *ed);
const char *edit_group_name_get(edit_data *ed);
void edit_new(edit_data* ed);
void edit_part_changed_cb_set(edit_data *ed, void (*cb)(void *data, const char *part_name), void *data);
void edit_cur_part_update(edit_data *ed);
void edit_view_sync_cb_set(edit_data *ed, void (*cb)(void *data, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
void edit_view_sync(edit_data *ed);
void edit_font_size_update(edit_data *ed, Eina_Bool msg);
void edit_template_insert(edit_data *ed);
void edit_template_part_insert(edit_data *ed, Edje_Part_Type type);
void edit_vd_set(edit_data *ed, view_data *vd);

View File

@ -4,8 +4,8 @@
parser_data *parser_init();
void parser_term(parser_data *pd);
Eina_Stringshare *parser_group_name_get(parser_data *pd, Evas_Object *entry);
void parser_part_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name), void *data);
Eina_Stringshare *parser_first_group_name_get(parser_data *pd, Evas_Object *entry);
void parser_cur_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
Eina_Bool parser_type_name_compare(parser_data *pd, const char *str);
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);

8
src/include/edj_mgr.h Normal file
View File

@ -0,0 +1,8 @@
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, config_data *cd);
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);

View File

@ -7,4 +7,4 @@ 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);

View File

@ -1,4 +1,6 @@
menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd, view_data *vd, void (*close_cb)(void *data), void *data);
#define VIEW_DATA edj_mgr_view_get(NULL, NULL)
menu_data *menu_init(Evas_Object *win, edit_data *ed, config_data *cd, void (*close_cb)(void *data), void *data);
void menu_term(menu_data *md);
Eina_Bool menu_toggle();
void menu_ctxpopup_register(Evas_Object *ctxpopup);

View File

@ -6,4 +6,5 @@ void stats_info_msg_update(stats_data *sd, const char *msg);
void stats_line_num_update(stats_data *sd, int cur_line, int max_line);
Evas_Object *stats_obj_get(stats_data *sd);
void stats_edc_file_set(stats_data *sd, const char *group_name);
Eina_Stringshare *stats_group_name_get(stats_data *sd);