win: use elm_layout for the base objects

This commit is contained in:
Boris Faure 2019-05-22 23:03:03 +02:00
parent 5c0167c5e1
commit 3c12162dcf
4 changed files with 77 additions and 60 deletions

View File

@ -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)
{

View File

@ -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);

View File

@ -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,7 +5459,7 @@ _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",
elm_layout_content_set(term->base, "terminology.tabregion",
term->tab_region_base);
}
@ -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);

View File

@ -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);