forked from enlightenment/terminology
be able to configure shine level on the default theme
Was asked about it too many times, so here it is :)
This commit is contained in:
parent
2a78d2fdcd
commit
bb968b968e
|
@ -1,7 +1,13 @@
|
|||
=================
|
||||
Terminology 0.9.1
|
||||
Terminology 1.2.0
|
||||
=================
|
||||
|
||||
Changes since 1.1.1:
|
||||
--------------------
|
||||
|
||||
* In group "terminology/background", "message" with id 2 requires an INT to
|
||||
specify the amount of shine
|
||||
|
||||
Changes since 0.9.1:
|
||||
--------------------
|
||||
|
||||
|
|
|
@ -142,10 +142,11 @@ collections {
|
|||
group { name: "terminology/core";
|
||||
script {
|
||||
public message(Msg_Type:type, id, ...) {
|
||||
|
||||
if (type != MSG_INT)
|
||||
return;
|
||||
if (id == 1) { // fade
|
||||
new r, g, b, a, v;
|
||||
|
||||
if ((type != MSG_INT) || (id != 1)) return;
|
||||
|
||||
v = (getarg(2) * 255) / 100;
|
||||
|
||||
custom_state(PART:"fade", "default", 0.0);
|
||||
|
@ -154,6 +155,7 @@ collections {
|
|||
set_state(PART:"fade", "custom", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
parts {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// background handling
|
||||
|
@ -279,8 +281,9 @@ collections {
|
|||
public message(Msg_Type:type, id, ...) {
|
||||
new r, g, b, a, v;
|
||||
|
||||
if ((type != MSG_INT) || (id != 1)) return;
|
||||
|
||||
if (type != MSG_INT)
|
||||
return;
|
||||
if (id == 1) {
|
||||
v = (getarg(2) * 255) / 100;
|
||||
|
||||
custom_state(PART:"shadow", "default", 0.0);
|
||||
|
@ -292,6 +295,19 @@ collections {
|
|||
get_state_val(PART:"base", STATE_COLOR, r, g, b, a);
|
||||
set_state_val(PART:"base", STATE_COLOR, r, g, b, v);
|
||||
set_state(PART:"base", "custom", 0.0);
|
||||
} else if (id == 2) {
|
||||
v = getarg(2);
|
||||
|
||||
custom_state(PART:"shine_focused", "focused", 0.0);
|
||||
get_state_val(PART:"shine_focused", STATE_COLOR, r, g, b, a);
|
||||
set_state_val(PART:"shine_focused", STATE_COLOR, r, g, b, v);
|
||||
set_state(PART:"shine_focused", "custom", 0.0);
|
||||
|
||||
custom_state(PART:"shine_unfocused", "default", 0.0);
|
||||
get_state_val(PART:"shine_unfocused", STATE_COLOR, r, g, b, a);
|
||||
set_state_val(PART:"shine_unfocused", STATE_COLOR, r, g, b, v/8);
|
||||
set_state(PART:"shine_unfocused", "custom", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
parts {
|
||||
|
@ -697,7 +713,24 @@ collections {
|
|||
visible: 0;
|
||||
}
|
||||
}
|
||||
part { name: "shine";
|
||||
part { name: "shine_focused";
|
||||
mouse_events: 0;
|
||||
description { state: "default" 0.0;
|
||||
rel1.offset: 0 0;
|
||||
rel2.offset: -1 -1;
|
||||
image.normal: "bg_shine";
|
||||
fill.smooth: 0;
|
||||
align: 0.5 0.0;
|
||||
aspect: (256/120) (256/120);
|
||||
aspect_preference: HORIZONTAL;
|
||||
color: 255 255 255 0;
|
||||
}
|
||||
description { state: "focused" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part { name: "shine_unfocused";
|
||||
mouse_events: 0;
|
||||
description { state: "default" 0.0;
|
||||
rel1.offset: 0 0;
|
||||
|
@ -711,7 +744,7 @@ collections {
|
|||
}
|
||||
description { state: "focused" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
color: 255 255 255 255;
|
||||
color: 255 255 255 0;
|
||||
}
|
||||
}
|
||||
part { name: "glintclip"; type: RECT;
|
||||
|
@ -1005,19 +1038,31 @@ collections {
|
|||
action: STATE_SET "focused" 0.0;
|
||||
target: "glint";
|
||||
target: "glow";
|
||||
target: "shine";
|
||||
target: "shine_unfocused";
|
||||
target: "shine_focused";
|
||||
after: "focus_in2";
|
||||
#if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 9)
|
||||
sequence {
|
||||
action: STATE_SET "custom" 0.0;
|
||||
target: "shine_focused";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
program {
|
||||
signal: "focused,set"; source: "terminology";
|
||||
action: STATE_SET "focused" 0.0;
|
||||
target: "glint";
|
||||
target: "shine";
|
||||
target: "shine_focused";
|
||||
target: "shine_unfocused";
|
||||
#if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 9)
|
||||
sequence {
|
||||
action: STATE_SET "focused2" 0.0;
|
||||
target: "glow";
|
||||
}
|
||||
sequence {
|
||||
action: STATE_SET "custom" 0.0;
|
||||
target: "shine_focused";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
program { name: "focus_in2";
|
||||
|
@ -1030,7 +1075,18 @@ collections {
|
|||
action: STATE_SET "default" 0.0;
|
||||
target: "glint";
|
||||
target: "glow";
|
||||
target: "shine";
|
||||
target: "shine_focused";
|
||||
target: "shine_unfocused";
|
||||
#if (EFL_VERSION_MAJOR > 1) || (EFL_VERSION_MINOR >= 9)
|
||||
sequence {
|
||||
action: STATE_SET "focused2" 0.0;
|
||||
target: "glow";
|
||||
}
|
||||
sequence {
|
||||
action: STATE_SET "custom" 0.0;
|
||||
target: "shine_unfocused";
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "col.h"
|
||||
#include "utils.h"
|
||||
|
||||
#define CONF_VER 16
|
||||
#define CONF_VER 17
|
||||
|
||||
#define LIM(v, min, max) {if (v >= max) v = max; else if (v <= min) v = min;}
|
||||
|
||||
|
@ -172,6 +172,8 @@ config_init(void)
|
|||
(edd_base, Config, "ty_escapes", ty_escapes, EET_T_UCHAR);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||
(edd_base, Config, "changedir_to_current", changedir_to_current, EET_T_UCHAR);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||||
(edd_base, Config, "shine", shine, EET_T_INT);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -275,6 +277,7 @@ config_sync(const Config *config_src, Config *config)
|
|||
config->mv_always_show = config_src->mv_always_show;
|
||||
config->ty_escapes = config_src->ty_escapes;
|
||||
config->changedir_to_current = config_src->changedir_to_current;
|
||||
config->shine = config_src->shine;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -541,6 +544,7 @@ config_new(void)
|
|||
}
|
||||
}
|
||||
_add_default_keys(config);
|
||||
config->shine = 255;
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
@ -648,7 +652,10 @@ config_load(const char *key)
|
|||
_add_key(config, "Right", 0, 1, 0, 0, "term_right");
|
||||
EINA_FALLTHROUGH;
|
||||
/*pass through*/
|
||||
case CONF_VER: /* 16 */
|
||||
case 16:
|
||||
config->shine = 255;
|
||||
/*pass through*/
|
||||
case CONF_VER: /* 17 */
|
||||
config->version = CONF_VER;
|
||||
break;
|
||||
default:
|
||||
|
@ -747,6 +754,7 @@ config_fork(const Config *config)
|
|||
CPY(mv_always_show);
|
||||
CPY(ty_escapes);
|
||||
CPY(changedir_to_current);
|
||||
CPY(shine);
|
||||
|
||||
EINA_LIST_FOREACH(config->keys, l, key)
|
||||
{
|
||||
|
|
|
@ -52,6 +52,7 @@ struct _Config
|
|||
double tab_zoom;
|
||||
int vidmod;
|
||||
int opacity;
|
||||
int shine;
|
||||
int cg_width;
|
||||
int cg_height;
|
||||
Eina_Bool jump_on_keypress;
|
||||
|
|
|
@ -21,6 +21,29 @@ struct _Theme
|
|||
static Evas_Object *op_themelist;
|
||||
static Eina_List *themes = NULL;
|
||||
static Ecore_Timer *seltimer = NULL;
|
||||
static Evas_Object *op_shine_slider = NULL;
|
||||
|
||||
static void
|
||||
_cb_op_shine_sel(void *data,
|
||||
Evas_Object *obj,
|
||||
void *_event EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *termio_obj = data;
|
||||
Config *config = termio_config_get(termio_obj);
|
||||
Term *term = termio_term_get(termio_obj);
|
||||
Win *wn = term_win_get(term);
|
||||
int shine = elm_slider_value_get(obj);
|
||||
Eina_List *l, *wn_list;
|
||||
|
||||
if (config->shine == shine)
|
||||
return;
|
||||
|
||||
wn_list = win_terms_get(wn);
|
||||
EINA_LIST_FOREACH(wn_list, l, term)
|
||||
{
|
||||
term_apply_shine(term, shine);
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
_cb_op_theme_text_get(void *data,
|
||||
|
@ -121,10 +144,35 @@ options_theme(Evas_Object *opbox, Evas_Object *term)
|
|||
box = o = elm_box_add(opbox);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_horizontal_set(o, EINA_TRUE);
|
||||
elm_box_horizontal_set(o, EINA_FALSE);
|
||||
elm_object_content_set(fr, o);
|
||||
evas_object_show(o);
|
||||
|
||||
o = elm_label_add(opbox);
|
||||
evas_object_size_hint_weight_set(o, 0.0, 0.0);
|
||||
evas_object_size_hint_align_set(o, 0.0, 0.5);
|
||||
elm_object_text_set(o, _("Shine:"));
|
||||
elm_box_pack_end(box, o);
|
||||
evas_object_show(o);
|
||||
|
||||
op_shine_slider = o = elm_slider_add(opbox);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
|
||||
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 0.5);
|
||||
elm_slider_span_size_set(o, 40);
|
||||
elm_slider_unit_format_set(o, "%1.0f");
|
||||
elm_slider_indicator_format_set(o, "%1.0f");
|
||||
elm_slider_min_max_set(o, 0, 255);
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
elm_slider_step_set(o, 1);
|
||||
#endif
|
||||
elm_slider_value_set(o, config->shine);
|
||||
elm_box_pack_end(box, o);
|
||||
evas_object_show(o);
|
||||
|
||||
evas_object_smart_callback_add(o, "delay,changed",
|
||||
_cb_op_shine_sel, term);
|
||||
|
||||
|
||||
it_class = elm_gengrid_item_class_new();
|
||||
it_class->item_style = "thumb";
|
||||
it_class->func.text_get = _cb_op_theme_text_get;
|
||||
|
|
|
@ -181,6 +181,8 @@ static void _tab_new_cb(void *data, Evas_Object *_obj EINA_UNUSED, void *_event_
|
|||
static Tab_Item* tab_item_new(Tabs *tabs, Term_Container *child);
|
||||
static void _tabs_refresh(Tabs *tabs);
|
||||
static void _term_tabregion_free(Term *term);
|
||||
static void _set_trans(Config *config, Evas_Object *bg, Evas_Object *base);
|
||||
static void _set_shine(Config *config, Evas_Object *bg);
|
||||
|
||||
|
||||
/* {{{ Solo */
|
||||
|
@ -2104,7 +2106,6 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
|
|||
Eina_List *l;
|
||||
int count;
|
||||
double z;
|
||||
Edje_Message_Int msg;
|
||||
Win *wn = tc->wn;
|
||||
Tab_Item *tab_item;
|
||||
Evas_Object *o;
|
||||
|
@ -2122,12 +2123,8 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
|
|||
evas_object_geometry_set(tabs->selector_bg, x, y, w, h);
|
||||
evas_object_hide(o);
|
||||
|
||||
if (wn->config->translucent)
|
||||
msg.val = wn->config->opacity;
|
||||
else
|
||||
msg.val = 100;
|
||||
|
||||
edje_object_message_send(tabs->selector_bg, EDJE_MESSAGE_INT, 1, &msg);
|
||||
_set_trans(wn->config, tabs->selector_bg, NULL);
|
||||
_set_shine(wn->config, tabs->selector_bg);
|
||||
edje_object_signal_emit(tabs->selector_bg, "begin", "terminology");
|
||||
|
||||
tab_item = tabs->current;
|
||||
|
@ -3008,6 +3005,50 @@ _tabs_new(Term_Container *child, Term_Container *parent)
|
|||
/* }}} */
|
||||
/* {{{ Term */
|
||||
|
||||
static void
|
||||
_set_shine(Config *config, Evas_Object *bg)
|
||||
{
|
||||
Edje_Message_Int msg;
|
||||
|
||||
if (config)
|
||||
msg.val = config->shine;
|
||||
else
|
||||
msg.val = 255;
|
||||
|
||||
if (bg)
|
||||
edje_object_message_send(bg, EDJE_MESSAGE_INT, 2, &msg);
|
||||
}
|
||||
|
||||
void
|
||||
term_apply_shine(Term *term, int shine)
|
||||
{
|
||||
Config *config = term->config;
|
||||
|
||||
if (config->shine != shine)
|
||||
{
|
||||
config->shine = shine;
|
||||
_set_shine(config, term->bg);
|
||||
config_save(config, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_set_trans(Config *config, Evas_Object *bg, Evas_Object *base)
|
||||
{
|
||||
Edje_Message_Int msg;
|
||||
|
||||
if (config && config->translucent)
|
||||
msg.val = config->opacity;
|
||||
else
|
||||
msg.val = 100;
|
||||
|
||||
if (bg)
|
||||
edje_object_message_send(bg, EDJE_MESSAGE_INT, 1, &msg);
|
||||
if (base)
|
||||
edje_object_message_send(base, EDJE_MESSAGE_INT, 1, &msg);
|
||||
}
|
||||
|
||||
static void
|
||||
_term_config_set(Term *term, Config *config)
|
||||
{
|
||||
|
@ -4244,18 +4285,12 @@ _cb_tabcount_next(void *data,
|
|||
_cb_next(data, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_term_bg_config(Term *term)
|
||||
{
|
||||
Edje_Message_Int msg;
|
||||
|
||||
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);
|
||||
_set_trans(term->config, term->bg, term->base);
|
||||
_set_shine(term->config, term->bg);
|
||||
|
||||
termio_theme_set(term->termio, term->bg);
|
||||
edje_object_signal_callback_add(term->bg, "popmedia,done", "terminology",
|
||||
|
@ -4490,7 +4525,6 @@ term_new(Win *wn, Config *config, const char *cmd,
|
|||
Term *term;
|
||||
Evas_Object *o;
|
||||
Evas *canvas = evas_object_evas_get(wn->win);
|
||||
Edje_Message_Int msg;
|
||||
|
||||
term = calloc(1, sizeof(Term));
|
||||
if (!term) return NULL;
|
||||
|
@ -4541,16 +4575,12 @@ term_new(Win *wn, Config *config, const char *cmd,
|
|||
|
||||
_term_tabregion_setup(term);
|
||||
|
||||
if (term->config->translucent)
|
||||
msg.val = term->config->opacity;
|
||||
else
|
||||
msg.val = 100;
|
||||
|
||||
if (term->config->mv_always_show)
|
||||
term->miniview_shown = EINA_TRUE;
|
||||
|
||||
edje_object_message_send(term->bg, EDJE_MESSAGE_INT, 1, &msg);
|
||||
edje_object_message_send(term->base, EDJE_MESSAGE_INT, 1, &msg);
|
||||
_set_trans(term->config, term->bg, term->base);
|
||||
_set_shine(term->config, term->bg);
|
||||
|
||||
term->termio = o = termio_add(wn->win, config, cmd, login_shell, cd,
|
||||
size_w, size_h, term, title);
|
||||
|
|
|
@ -74,5 +74,7 @@ typedef Eina_Bool (*For_Each_Term)(Term *term, void *data);
|
|||
Eina_Bool
|
||||
for_each_term_do(Win *wn, For_Each_Term cb, void *data);
|
||||
|
||||
void
|
||||
term_apply_shine(Term *term, int shine);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue