diff --git a/src/bin/utils.c b/src/bin/utils.c index 57cdb1e3..ecd2da35 100644 --- a/src/bin/utils.c +++ b/src/bin/utils.c @@ -49,6 +49,32 @@ theme_apply(Evas_Object *edje, const Config *config, const char *group) return EINA_FALSE; } +Eina_Bool +theme_apply_elm(Evas_Object *layout, const Config *config, const char *group) +{ + const char *errmsg; + Evas_Object *edje; + + EINA_SAFETY_ON_NULL_RETURN_VAL(layout, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(config, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(group, EINA_FALSE); + + if (elm_layout_file_set(layout, config_theme_path_get(config), group)) + return EINA_TRUE; + + edje = elm_layout_edje_get(layout); + errmsg = edje_load_error_str(edje_object_load_error_get(edje)); + INF("Cannot find theme: file=%s group=%s error='%s', trying default...", + config_theme_path_get(config), group, errmsg); + + if (elm_layout_file_set(layout, config_theme_path_default_get(config), group)) + return EINA_TRUE; + + errmsg = edje_load_error_str(edje_object_load_error_get(edje)); + ERR(_("Could not load any theme for group=%s: %s"), group, errmsg); + return EINA_FALSE; +} + Eina_Bool theme_apply_default(Evas_Object *edje, const Config *config, const char *group) { diff --git a/src/bin/utils.h b/src/bin/utils.h index cf253226..73476de9 100644 --- a/src/bin/utils.h +++ b/src/bin/utils.h @@ -5,6 +5,7 @@ #include "config.h" Eina_Bool theme_apply(Evas_Object *edje, const Config *config, const char *group); +Eina_Bool theme_apply_elm(Evas_Object *edje, const Config *config, const char *group); Eina_Bool theme_apply_default(Evas_Object *edje, const Config *config, const char *group); void theme_reload(Evas_Object *edje); void theme_auto_reload_enable(Evas_Object *edje); diff --git a/src/bin/win.c b/src/bin/win.c index 06ba7db2..fd87a8c5 100644 --- a/src/bin/win.c +++ b/src/bin/win.c @@ -385,11 +385,11 @@ _solo_bell(Term_Container *tc, if (!tc->wn->config->disable_visual_bell) { edje_object_signal_emit(term->bg, "bell", "terminology"); - edje_object_signal_emit(term->base, "bell", "terminology"); + elm_layout_signal_emit(term->base, "bell", "terminology"); if (tc->wn->config->bell_rings) { edje_object_signal_emit(term->bg, "bell,ring", "terminology"); - edje_object_signal_emit(term->base, "bell,ring", "terminology"); + elm_layout_signal_emit(term->base, "bell,ring", "terminology"); } } tc->parent->bell(tc->parent, tc); @@ -419,7 +419,7 @@ _solo_unfocus(Term_Container *tc, Term_Container *relative) if (!term->config->disable_focus_visuals) { edje_object_signal_emit(term->bg, "focus,out", "terminology"); - edje_object_signal_emit(term->base, "focus,out", "terminology"); + elm_layout_signal_emit(term->base, "focus,out", "terminology"); } } @@ -454,12 +454,12 @@ _solo_focus(Term_Container *tc, Term_Container *relative) if (term->config->disable_focus_visuals) { edje_object_signal_emit(term->bg, "focused,set", "terminology"); - edje_object_signal_emit(term->base, "focused,set", "terminology"); + elm_layout_signal_emit(term->base, "focused,set", "terminology"); } else { edje_object_signal_emit(term->bg, "focus,in", "terminology"); - edje_object_signal_emit(term->base, "focus,in", "terminology"); + elm_layout_signal_emit(term->base, "focus,in", "terminology"); } if (term->wn->cmdbox) elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); @@ -574,7 +574,7 @@ _cb_win_focus_in(void *data, if (!term->config->disable_focus_visuals) { edje_object_signal_emit(term->bg, "focus,out", "terminology"); - edje_object_signal_emit(term->base, "focus,out", "terminology"); + elm_layout_signal_emit(term->base, "focus,out", "terminology"); } } term = term_mouse; @@ -624,8 +624,6 @@ _win_is_focused(Win *wn) int win_term_set(Win *wn, Term *term) { Term_Container *tc_win = NULL, *tc_child = NULL; - Evas_Object *base = win_base_get(wn); - Evas *evas = evas_object_evas_get(base); tc_child = _solo_new(term, wn); if (!tc_child) @@ -635,7 +633,7 @@ int win_term_set(Win *wn, Term *term) tc_win->swallow(tc_win, NULL, tc_child); - _cb_size_hint(term, evas, term->termio, NULL); + _cb_size_hint(term, NULL, term->termio, NULL); return 0; @@ -645,12 +643,6 @@ bad: } -Evas_Object * -win_base_get(const Win *wn) -{ - return wn->base; -} - Config * win_config_get(const Win *wn) { @@ -673,13 +665,14 @@ static void _win_trans(Win *wn, Term *term, Eina_Bool trans) { Edje_Message_Int msg; + Evas_Object *edje = elm_layout_edje_get(term->base); if (term->config->translucent) msg.val = term->config->opacity; else msg.val = 100; edje_object_message_send(term->bg, EDJE_MESSAGE_INT, 1, &msg); - edje_object_message_send(term->base, EDJE_MESSAGE_INT, 1, &msg); + edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg); if (trans) { @@ -949,24 +942,21 @@ _win_swallow(Term_Container *tc, Term_Container *orig, Term_Container *new_child) { Win *wn; - Evas_Object *base; Evas_Object *o; assert (tc->type == TERM_CONTAINER_TYPE_WIN); wn = (Win*) tc; - base = win_base_get(wn); DBG("orig:%p", orig); if (orig) { - o = orig->get_evas_object(orig); - edje_object_part_unswallow(base, o); + elm_layout_content_unset(wn->base, "terminology.content"); } o = new_child->get_evas_object(new_child); - edje_object_part_swallow(base, "terminology.content", o); + elm_layout_content_set(wn->base, "terminology.content", o); evas_object_show(o); new_child->parent = tc; @@ -1124,8 +1114,6 @@ _win_split(Term_Container *tc, Term_Container *child, Term_Container *tc_split, *tc_solo_new; char *wdir = NULL; char buf[PATH_MAX]; - Evas_Object *base; - Evas_Object *o; // copy the current path to wdir if we should change the directory, // passing wdir NULL otherwise: @@ -1144,9 +1132,7 @@ _win_split(Term_Container *tc, Term_Container *child, tc_solo_new = _solo_new(tm_new, wn); evas_object_data_set(tm_new->termio, "sizedone", tm_new->termio); - base = win_base_get(wn); - o = child->get_evas_object(child); - edje_object_part_unswallow(base, o); + elm_layout_content_unset(wn->base, "terminology.content"); tc_split = _split_new(child, tc_solo_new, is_horizontal); @@ -1686,8 +1672,8 @@ win_new(const char *name, const char *role, const char *title, elm_win_resize_object_add(wn->win, o); evas_object_show(o); - wn->base = o = edje_object_add(evas_object_evas_get(wn->win)); - theme_apply(o, config, "terminology/base"); + wn->base = o = elm_layout_add(wn->win); + theme_apply_elm(o, config, "terminology/base"); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_content_set(wn->conform, o); @@ -2429,10 +2415,11 @@ _cb_size_hint(void *data, { Term *term = data; Evas_Coord mw, mh, rw, rh, w = 0, h = 0; + Evas_Object *edje_base = elm_layout_edje_get(term->base); evas_object_size_hint_min_get(obj, &mw, &mh); evas_object_size_hint_request_get(obj, &rw, &rh); - edje_object_size_min_calc(term->base, &w, &h); + edje_object_size_min_calc(edje_base, &w, &h); evas_object_size_hint_min_set(term->base, w, h); edje_object_size_min_calc(term->bg, &w, &h); evas_object_size_hint_min_set(term->bg, w, h); @@ -3753,8 +3740,10 @@ _set_trans(Config *config, Evas_Object *bg, Evas_Object *base) if (bg) edje_object_message_send(bg, EDJE_MESSAGE_INT, 1, &msg); - if (base) - edje_object_message_send(base, EDJE_MESSAGE_INT, 1, &msg); + if (base) { + Evas_Object *edje = elm_layout_edje_get(base); + edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg); + } } static void @@ -4976,8 +4965,9 @@ _cb_cmd_activated(void *data, Term *term; Term_Container *tc; - if (wn->cmdbox) elm_object_focus_set(wn->cmdbox, EINA_FALSE); - edje_object_signal_emit(wn->base, "cmdbox,hide", "terminology"); + if (wn->cmdbox) + elm_object_focus_set(wn->cmdbox, EINA_FALSE); + elm_layout_signal_emit(wn->base, "cmdbox,hide", "terminology"); tc = (Term_Container *) wn; term = tc->focused_term_get(tc); if (wn->cmdbox) cmd = (char *)elm_entry_entry_get(wn->cmdbox); @@ -5007,8 +4997,9 @@ _cb_cmd_aborted(void *data, { Win *wn = data; - if (wn->cmdbox) elm_object_focus_set(wn->cmdbox, EINA_FALSE); - edje_object_signal_emit(wn->base, "cmdbox,hide", "terminology"); + if (wn->cmdbox) + elm_object_focus_set(wn->cmdbox, EINA_FALSE); + elm_layout_signal_emit(wn->base, "cmdbox,hide", "terminology"); if (wn->cmdbox_focus_timer) { ecore_timer_del(wn->cmdbox_focus_timer); @@ -5055,7 +5046,7 @@ _cb_cmd_hints_changed(void *data, if (wn->cmdbox) { evas_object_show(wn->cmdbox); - edje_object_part_swallow(wn->base, "terminology.cmdbox", wn->cmdbox); + elm_layout_content_set(wn->base, "terminology.cmdbox", wn->cmdbox); } } @@ -5088,9 +5079,9 @@ _cb_cmdbox(void *data, evas_object_smart_callback_add(o, "changed,user", _cb_cmd_changed, wn); evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _cb_cmd_hints_changed, wn); - edje_object_part_swallow(wn->base, "terminology.cmdbox", o); + elm_layout_content_set(wn->base, "terminology.cmdbox", o); } - edje_object_signal_emit(term->wn->base, "cmdbox,show", "terminology"); + elm_layout_signal_emit(term->wn->base, "cmdbox,show", "terminology"); elm_entry_entry_set(term->wn->cmdbox, ""); evas_object_show(term->wn->cmdbox); if (term->wn->cmdbox_focus_timer) @@ -5120,7 +5111,7 @@ _cb_media_del(void *data, if (term->bg) { edje_object_signal_emit(term->bg, "media,off", "terminology"); - edje_object_signal_emit(term->base, "media,off", "terminology"); + elm_layout_signal_emit(term->base, "media,off", "terminology"); } if (!config) return; if (config->temporary) @@ -5148,26 +5139,26 @@ _term_media_update(Term *term, const Config *config) MEDIA_BG, type); evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _cb_media_del, term); - edje_object_part_swallow(term->base, "terminology.background", o); + elm_layout_content_set(term->base, "terminology.background", o); evas_object_show(o); term->mediatype = type; switch (type) { case MEDIA_TYPE_IMG: edje_object_signal_emit(term->bg, "media,image", "terminology"); - edje_object_signal_emit(term->base, "media,image", "terminology"); + elm_layout_signal_emit(term->base, "media,image", "terminology"); break; case MEDIA_TYPE_SCALE: edje_object_signal_emit(term->bg, "media,scale", "terminology"); - edje_object_signal_emit(term->base, "media,scale", "terminology"); + elm_layout_signal_emit(term->base, "media,scale", "terminology"); break; case MEDIA_TYPE_EDJE: edje_object_signal_emit(term->bg, "media,edje", "terminology"); - edje_object_signal_emit(term->base, "media,edje", "terminology"); + elm_layout_signal_emit(term->base, "media,edje", "terminology"); break; case MEDIA_TYPE_MOV: edje_object_signal_emit(term->bg, "media,movie", "terminology"); - edje_object_signal_emit(term->base, "media,movie", "terminology"); + elm_layout_signal_emit(term->base, "media,movie", "terminology"); break; case MEDIA_TYPE_UNKNOWN: default: @@ -5182,7 +5173,7 @@ _term_media_update(Term *term, const Config *config) EVAS_CALLBACK_DEL, _cb_media_del); edje_object_signal_emit(term->bg, "media,off", "terminology"); - edje_object_signal_emit(term->base, "media,off", "terminology"); + elm_layout_signal_emit(term->base, "media,off", "terminology"); evas_object_del(term->media); term->media = NULL; } @@ -5384,7 +5375,7 @@ _term_bg_config(Term *term) _cb_tab_close, term); edje_object_signal_callback_add(term->bg, "tab,title", "terminology", _cb_tab_title, term); - edje_object_part_swallow(term->base, "terminology.content", term->termio); + elm_layout_content_set(term->base, "terminology.content", term->termio); edje_object_part_swallow(term->bg, "terminology.content", term->base); edje_object_part_swallow(term->bg, "terminology.miniview", term->miniview); if (term->popmedia) @@ -5410,24 +5401,24 @@ _term_bg_config(Term *term) } if (term->media) { - edje_object_part_swallow(term->base, "terminology.background", term->media); + elm_layout_content_set(term->base, "terminology.background", term->media); switch (term->mediatype) { case MEDIA_TYPE_IMG: edje_object_signal_emit(term->bg, "media,image", "terminology"); - edje_object_signal_emit(term->base, "media,image", "terminology"); + elm_layout_signal_emit(term->base, "media,image", "terminology"); break; case MEDIA_TYPE_SCALE: edje_object_signal_emit(term->bg, "media,scale", "terminology"); - edje_object_signal_emit(term->base, "media,scale", "terminology"); + elm_layout_signal_emit(term->base, "media,scale", "terminology"); break; case MEDIA_TYPE_EDJE: edje_object_signal_emit(term->bg, "media,edje", "terminology"); - edje_object_signal_emit(term->base, "media,edje", "terminology"); + elm_layout_signal_emit(term->base, "media,edje", "terminology"); break; case MEDIA_TYPE_MOV: edje_object_signal_emit(term->bg, "media,movie", "terminology"); - edje_object_signal_emit(term->base, "media,movie", "terminology"); + elm_layout_signal_emit(term->base, "media,movie", "terminology"); break; case MEDIA_TYPE_UNKNOWN: default: @@ -5441,12 +5432,12 @@ _term_bg_config(Term *term) if (term->config->disable_focus_visuals) { edje_object_signal_emit(term->bg, "focused,set", "terminology"); - edje_object_signal_emit(term->base, "focused,set", "terminology"); + elm_layout_signal_emit(term->base, "focused,set", "terminology"); } else { edje_object_signal_emit(term->bg, "focus,in", "terminology"); - edje_object_signal_emit(term->base, "focus,in", "terminology"); + elm_layout_signal_emit(term->base, "focus,in", "terminology"); } if (term->wn->cmdbox) elm_object_focus_set(term->wn->cmdbox, EINA_FALSE); @@ -5468,8 +5459,8 @@ _cb_tabregion_change(void *data, evas_object_geometry_get(obj, NULL, NULL, &w, &h); evas_object_size_hint_min_set(term->tab_region_base, w, h); - edje_object_part_swallow(term->base, "terminology.tabregion", - term->tab_region_base); + elm_layout_content_set(term->base, "terminology.tabregion", + term->tab_region_base); } static void @@ -5486,7 +5477,7 @@ _term_tabregion_setup(Term *term) term->tab_region_base = o = evas_object_rectangle_add(evas_object_evas_get(term->bg)); evas_object_color_set(o, 0, 0, 0, 0); - edje_object_part_swallow(term->base, "terminology.tabregion", o); + elm_layout_content_set(term->base, "terminology.tabregion", o); } static void @@ -5612,8 +5603,8 @@ term_new(Win *wn, Config *config, const char *cmd, term->hold = hold; term->config = config; - term->base = o = edje_object_add(canvas); - theme_apply(o, term->config, "terminology/core"); + term->base = o = elm_layout_add(wn->win); + theme_apply_elm(o, term->config, "terminology/core"); evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -5664,7 +5655,7 @@ term_new(Win *wn, Config *config, const char *cmd, evas_object_size_hint_fill_set(o, 0, EVAS_HINT_FILL); evas_object_event_callback_add(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _cb_size_hint, term); - edje_object_part_swallow(term->base, "terminology.content", o); + elm_layout_content_set(term->base, "terminology.content", o); edje_object_part_swallow(term->bg, "terminology.content", term->base); edje_object_part_swallow(term->bg, "terminology.miniview", term->miniview); evas_object_smart_callback_add(o, "options", _cb_options, term); diff --git a/src/bin/win.h b/src/bin/win.h index 1152484f..c1b799f2 100644 --- a/src/bin/win.h +++ b/src/bin/win.h @@ -40,7 +40,6 @@ int win_term_set(Win *wn, Term *term); Eina_List * terms_from_win_object(Evas_Object *win); -Evas_Object *win_base_get(const Win *wn); Evas_Object *win_evas_object_get(const Win *win); Eina_List * win_terms_get(const Win *wn); Config *win_config_get(const Win *wn);