forked from enlightenment/enlightenment
1139 lines
34 KiB
Plaintext
1139 lines
34 KiB
Plaintext
group { name: "e/modules/clock/digital";
|
|
min: 64 16;
|
|
max: 512 128;
|
|
images.image: "digit_na.png" COMP;
|
|
images.image: "digit_nm.png" COMP;
|
|
images.image: "digit_0.png" COMP;
|
|
images.image: "digit_1.png" COMP;
|
|
images.image: "digit_2.png" COMP;
|
|
images.image: "digit_3.png" COMP;
|
|
images.image: "digit_4.png" COMP;
|
|
images.image: "digit_5.png" COMP;
|
|
images.image: "digit_6.png" COMP;
|
|
images.image: "digit_7.png" COMP;
|
|
images.image: "digit_8.png" COMP;
|
|
images.image: "digit_9.png" COMP;
|
|
images.image: "digit_am.png" COMP;
|
|
images.image: "digit_pm.png" COMP;
|
|
images.image: "hole_tiny.png" COMP;
|
|
script {
|
|
public do_seconds, do_24h, do_date, tick_timer;
|
|
|
|
evalsize() {
|
|
new do24h, dosec, v[14], i, tot, mul;
|
|
new parts[] = {
|
|
PART:"hours1", PART:"hours1",
|
|
PART:"hours2", PART:"hours2",
|
|
PART:"mins1", PART:"mins1",
|
|
PART:"mins2", PART:"mins2",
|
|
PART:"secs1", PART:"secs1",
|
|
PART:"secs2", PART:"secs2",
|
|
PART:"ampm", PART:"ampm"
|
|
};
|
|
|
|
mul = 4;
|
|
if (get_int(do_date)) {
|
|
mul = 3;
|
|
}
|
|
|
|
for (i = 0; i < 14; i += 2) {
|
|
custom_state(parts[i], "default", 0.0);
|
|
}
|
|
v[0] = 0; v[1] = 2; v[2] = 2; v[3] = 4; // hrs
|
|
v[4] = 5; v[5] = 7; v[6] = 7; v[7] = 9; // mins
|
|
tot = 9;
|
|
|
|
dosec = get_int(do_seconds);
|
|
do24h = get_int(do_24h);
|
|
if ((dosec) && (!do24h)) { // sec + ampm
|
|
tot += 7;
|
|
v[8] = 10; v[9] = 12; v[10] = 12; v[11] = 14;
|
|
v[12] = 14; v[13] = 16;
|
|
}
|
|
else if ((dosec) && (do24h)) { // sec + -
|
|
tot += 5;
|
|
v[8] = 10; v[9] = 12; v[10] = 12; v[11] = 14;
|
|
v[12] = 0; v[13] = 0;
|
|
}
|
|
else if ((!dosec) && (!do24h)) { // - + ampm
|
|
tot += 2;
|
|
v[8] = 0; v[9] = 0; v[10] = 0; v[11] = 0;
|
|
v[12] = 9; v[13] = 11;
|
|
}
|
|
else if ((!dosec) && (do24h)) { // - + -
|
|
tot += 0;
|
|
v[8] = 0; v[9] = 0; v[10] = 0; v[11] = 0;
|
|
v[12] = 0; v[13] = 0;
|
|
}
|
|
for (i = 0; i < 14; i += 2) {
|
|
set_state_val(parts[i], STATE_REL1,
|
|
float(v[i]) / float(tot), 0.0);
|
|
set_state_val(parts[i + 1], STATE_REL2,
|
|
float(v[i + 1]) / float(tot), 1.0);
|
|
}
|
|
for (i = 0; i < 14; i += 2) {
|
|
set_state(parts[i], "custom", 0.0);
|
|
}
|
|
set_min_size(tot * mul, 16);
|
|
set_max_size(tot * 8 * mul, 128);
|
|
emit("e,state,sizing,changed", "");
|
|
}
|
|
reset() {
|
|
new tim;
|
|
|
|
evalsize();
|
|
tim = get_int(tick_timer);
|
|
if (tim) {
|
|
cancel_timer(tim);
|
|
set_int(tick_timer, 0);
|
|
}
|
|
clock_cb(0);
|
|
}
|
|
valset(name[], v) {
|
|
new buf[20], i;
|
|
|
|
for (i = 0; i < 10; i++) {
|
|
if (i == v) {
|
|
snprintf(buf, 20, "show,%s-%i", name, i);
|
|
}
|
|
else {
|
|
snprintf(buf, 20, "hide,%s-%i", name, i);
|
|
}
|
|
emit(buf, "c");
|
|
}
|
|
}
|
|
apvalset(id, pm) {
|
|
if (pm) set_state(id, "active", 0.0);
|
|
else set_state(id, "default", 0.0);
|
|
}
|
|
public clock_cb(val) {
|
|
new year, month, day, yearday, weekday, hour, minute;
|
|
new Float:second;
|
|
new v, dosec, do24h, tim;
|
|
|
|
date(year, month, day, yearday, weekday, hour, minute, second);
|
|
dosec = get_int(do_seconds);
|
|
dosec = 1;
|
|
if (dosec) {
|
|
v = round(second);
|
|
tim = timer(1.0 - (second - v), "clock_cb", 1);
|
|
// set seconds to v
|
|
valset("s0", v / 10);
|
|
valset("s1", v % 10);
|
|
}
|
|
else {
|
|
tim = timer(60.0 - (second), "clock_cb", 1);
|
|
}
|
|
set_int(tick_timer, tim);
|
|
|
|
// set minutes to minute
|
|
valset("m0", minute / 10);
|
|
valset("m1", minute % 10);
|
|
|
|
// set hours to hour
|
|
do24h = get_int(do_24h);
|
|
if (do24h) {
|
|
valset("h0", hour / 10);
|
|
valset("h1", hour % 10);
|
|
}
|
|
else {
|
|
new pm;
|
|
|
|
// if 12 or later, its pm
|
|
if (hour >= 12) {
|
|
pm = 1;
|
|
// if we are after 12 (1, 2, 3 etc.) then mod by 12
|
|
if (hour > 12) hour = hour % 12;
|
|
}
|
|
else {
|
|
pm = 0;
|
|
// make after midnight be 12:XX AM :)
|
|
if (hour == 0) hour = 12;
|
|
}
|
|
valset("h0", hour / 10);
|
|
valset("h1", hour % 10);
|
|
apvalset(PART:"ap", pm);
|
|
}
|
|
}
|
|
}
|
|
parts {
|
|
part { name: "secclip"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
}
|
|
description { state: "hidden" 0.0;
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "ampmclip"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
}
|
|
description { state: "hidden" 0.0;
|
|
visible: 0;
|
|
}
|
|
}
|
|
// XXX: hours1/2, mins1/2, secs1/2 and ampm SHOULD be spacers... but
|
|
// if they are calculations go weird. this shouldnt happen, but does.
|
|
part { name: "timearea"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
visible: 0;
|
|
}
|
|
description { state: "date" 0.0;
|
|
inherit: "default" 0.0;
|
|
rel2.relative: 1.0 0.0;
|
|
rel2.offset: -1 4;
|
|
rel2.to_y: "e.text.today";
|
|
}
|
|
}
|
|
part { name: "hours1"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (0/16) 0.0;
|
|
rel2.relative: (2/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "hours2"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (2/16) 0.0;
|
|
rel2.relative: (4/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "mins1"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (5/16) 0.0;
|
|
rel2.relative: (7/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "mins2"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (7/16) 0.0;
|
|
rel2.relative: (9/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "secs1"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (10/16) 0.0;
|
|
rel2.relative: (12/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "secs2"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (12/16) 0.0;
|
|
rel2.relative: (14/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "ampm"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (14/16) 0.0;
|
|
rel2.relative: (16/16) 1.0;
|
|
rel1.to: "timearea";
|
|
rel2.to: "timearea";
|
|
visible: 0;
|
|
}
|
|
}
|
|
part { name: "c00";
|
|
description { state: "default" 0.0;
|
|
rel1.to: "hours2";
|
|
rel1.relative: 1.0 0.5;
|
|
rel1.offset: 0 -2;
|
|
rel2.to: "mins1";
|
|
rel2.relative: 0.0 0.5;
|
|
rel2.offset: 0 -2;
|
|
align: 0.5 1.0;
|
|
FIXED_SIZE(4, 4)
|
|
image.normal: "hole_tiny.png";
|
|
}
|
|
}
|
|
part { name: "c01";
|
|
description { state: "default" 0.0;
|
|
rel1.to: "hours2";
|
|
rel1.relative: 1.0 0.5;
|
|
rel1.offset: 0 1;
|
|
rel2.to: "mins1";
|
|
rel2.relative: 0.0 0.5;
|
|
rel2.offset: 0 1;
|
|
align: 0.5 0.0;
|
|
FIXED_SIZE(4, 4)
|
|
image.normal: "hole_tiny.png";
|
|
}
|
|
}
|
|
part { name: "c10";
|
|
clip_to: "secclip";
|
|
description { state: "default" 0.0;
|
|
rel1.to: "mins2";
|
|
rel1.relative: 1.0 0.5;
|
|
rel1.offset: 0 -2;
|
|
rel2.to: "secs1";
|
|
rel2.relative: 0.0 0.5;
|
|
rel2.offset: 0 -2;
|
|
align: 0.5 1.0;
|
|
FIXED_SIZE(4, 4)
|
|
image.normal: "hole_tiny.png";
|
|
}
|
|
}
|
|
part { name: "c11";
|
|
clip_to: "secclip";
|
|
description { state: "default" 0.0;
|
|
rel1.to: "mins2";
|
|
rel1.relative: 1.0 0.5;
|
|
rel1.offset: 0 1;
|
|
rel2.to: "secs1";
|
|
rel2.relative: 0.0 0.5;
|
|
rel2.offset: 0 1;
|
|
align: 0.5 0.0;
|
|
FIXED_SIZE(4, 4)
|
|
image.normal: "hole_tiny.png";
|
|
}
|
|
}
|
|
#define ELEM(_NAME, _TO, _DIGIT) \
|
|
part { name: _NAME; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: _TO; rel2.to: _TO; \
|
|
aspect: (52/72) (52/72); aspect_preference: BOTH; \
|
|
image.normal: "digit_"_DIGIT".png"; \
|
|
visible: 0; \
|
|
color: 255 255 255 0; \
|
|
} \
|
|
description { state: "active" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 1; \
|
|
color: 255 255 255 255; \
|
|
} \
|
|
}
|
|
#define DIGIT(_NAME, _TO) \
|
|
ELEM(_NAME"-0", _TO, "0") \
|
|
ELEM(_NAME"-1", _TO, "1") \
|
|
ELEM(_NAME"-2", _TO, "2") \
|
|
ELEM(_NAME"-3", _TO, "3") \
|
|
ELEM(_NAME"-4", _TO, "4") \
|
|
ELEM(_NAME"-5", _TO, "5") \
|
|
ELEM(_NAME"-6", _TO, "6") \
|
|
ELEM(_NAME"-7", _TO, "7") \
|
|
ELEM(_NAME"-8", _TO, "8") \
|
|
ELEM(_NAME"-9", _TO, "9")
|
|
#define ELEMC(_NAME, _TO, _DIGIT, _CLIP) \
|
|
part { name: _NAME; \
|
|
clip_to: _CLIP; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: _TO; rel2.to: _TO; \
|
|
aspect: (52/72) (52/72); aspect_preference: BOTH; \
|
|
image.normal: "digit_"_DIGIT".png"; \
|
|
visible: 0; \
|
|
color: 255 255 255 0; \
|
|
} \
|
|
description { state: "active" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 1; \
|
|
color: 255 255 255 255; \
|
|
} \
|
|
}
|
|
#define DIGITC(_NAME, _TO, _CLIP) \
|
|
ELEMC(_NAME"-0", _TO, "0", _CLIP) \
|
|
ELEMC(_NAME"-1", _TO, "1", _CLIP) \
|
|
ELEMC(_NAME"-2", _TO, "2", _CLIP) \
|
|
ELEMC(_NAME"-3", _TO, "3", _CLIP) \
|
|
ELEMC(_NAME"-4", _TO, "4", _CLIP) \
|
|
ELEMC(_NAME"-5", _TO, "5", _CLIP) \
|
|
ELEMC(_NAME"-6", _TO, "6", _CLIP) \
|
|
ELEMC(_NAME"-7", _TO, "7", _CLIP) \
|
|
ELEMC(_NAME"-8", _TO, "8", _CLIP) \
|
|
ELEMC(_NAME"-9", _TO, "9", _CLIP)
|
|
|
|
#define TAG(_NAME, _TO, _CLIP) \
|
|
part { name: _NAME; \
|
|
clip_to: _CLIP; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: _TO; rel2.to: _TO; \
|
|
aspect: (48/31) (48/31); aspect_preference: BOTH; \
|
|
image.normal: "digit_am.png"; \
|
|
} \
|
|
description { state: "active" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
image.normal: "digit_pm.png"; \
|
|
} \
|
|
}
|
|
#define BASE(_NAME, _BASE, _IMG) \
|
|
part { name: _NAME; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: _BASE; \
|
|
rel2.to: _BASE; \
|
|
image.normal: _IMG; \
|
|
color: 255 255 255 128; \
|
|
} \
|
|
}
|
|
#define BASEC(_NAME, _CLIP, _BASE, _IMG) \
|
|
part { name: _NAME; \
|
|
clip_to: _CLIP; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: _BASE; \
|
|
rel2.to: _BASE; \
|
|
image.normal: _IMG; \
|
|
color: 255 255 255 128; \
|
|
} \
|
|
}
|
|
|
|
BASE ("ha", "h0-0", "digit_na.png")
|
|
BASE ("hb", "h1-0", "digit_na.png")
|
|
BASE ("ma", "m0-0", "digit_na.png")
|
|
BASE ("mb", "m1-0", "digit_na.png")
|
|
|
|
BASEC("sa", "secclip", "s0-0", "digit_na.png")
|
|
BASEC("sb", "secclip", "s1-0", "digit_na.png")
|
|
BASEC("aa", "ampmclip", "ap", "digit_nm.png")
|
|
|
|
DIGIT ("h0", "hours1")
|
|
DIGIT ("h1", "hours2")
|
|
DIGIT ("m0", "mins1")
|
|
DIGIT ("m1", "mins2")
|
|
DIGITC("s0", "secs1", "secclip")
|
|
DIGITC("s1", "secs2", "secclip")
|
|
TAG("ap", "ampm", "ampmclip")
|
|
#undef TAG
|
|
#undef TAG
|
|
#undef ELEM
|
|
#undef ELEMC
|
|
#undef BASE
|
|
#undef BASEC
|
|
#undef DIGIT
|
|
#undef DIGITC
|
|
|
|
part { name: "e.text.today"; type: TEXT;
|
|
effect: GLOW;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: 0.0 1.0;
|
|
rel1.offset: 0 1;
|
|
rel2.offset: -1 1;
|
|
align: 0.5 1.0;
|
|
color: 51 153 255 255;
|
|
color2: 51 153 255 24;
|
|
color3: 51 153 255 18;
|
|
text { font: "Sans"; size: 8;
|
|
text_class: "module_small";
|
|
align: 0.5 0.5;
|
|
min: 0 1;
|
|
}
|
|
fixed: 0 1;
|
|
}
|
|
}
|
|
|
|
part { name: "event"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
color: 0 0 0 0;
|
|
}
|
|
}
|
|
}
|
|
programs {
|
|
program {
|
|
signal: "load"; source: "";
|
|
script {
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,date,on"; source: "e";
|
|
script {
|
|
set_int(do_date, 1);
|
|
set_state(PART:"timearea", "date", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,date,off"; source: "e";
|
|
script {
|
|
set_int(do_date, 0);
|
|
set_state(PART:"timearea", "default", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,seconds,on"; source: "e";
|
|
script {
|
|
set_int(do_seconds, 1);
|
|
set_state(PART:"secclip", "default", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,seconds,off"; source: "e";
|
|
script {
|
|
set_int(do_seconds, 0);
|
|
set_state(PART:"secclip", "hidden", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,24h,on"; source: "e";
|
|
script {
|
|
set_int(do_24h, 1);
|
|
set_state(PART:"ampmclip", "hidden", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,24h,off"; source: "e";
|
|
script {
|
|
set_int(do_24h, 0);
|
|
set_state(PART:"ampmclip", "default", 0.0);
|
|
reset();
|
|
}
|
|
}
|
|
#define DIGPRG(_NAME) \
|
|
program { \
|
|
signal: "show,"_NAME; source: "c"; \
|
|
action: STATE_SET "active" 0.0; \
|
|
transition: BOUNCE 0.3 0.5 2; \
|
|
target: _NAME; \
|
|
} \
|
|
program { \
|
|
signal: "hide,"_NAME; source: "c"; \
|
|
action: STATE_SET "default" 0.0; \
|
|
transition: DECELERATE 0.3; \
|
|
target: _NAME; \
|
|
}
|
|
#define DIGPRGS(_NAME) \
|
|
DIGPRG(_NAME"-0") \
|
|
DIGPRG(_NAME"-1") \
|
|
DIGPRG(_NAME"-2") \
|
|
DIGPRG(_NAME"-3") \
|
|
DIGPRG(_NAME"-4") \
|
|
DIGPRG(_NAME"-5") \
|
|
DIGPRG(_NAME"-6") \
|
|
DIGPRG(_NAME"-7") \
|
|
DIGPRG(_NAME"-8") \
|
|
DIGPRG(_NAME"-9")
|
|
|
|
DIGPRGS("h0")
|
|
DIGPRGS("h1")
|
|
DIGPRGS("m0")
|
|
DIGPRGS("m1")
|
|
DIGPRGS("s0")
|
|
DIGPRGS("s1")
|
|
#undef DIGPRG
|
|
#undef DIGPRGS
|
|
}
|
|
}
|
|
|
|
group { name: "e/modules/clock/main";
|
|
images {
|
|
image: "hole_tiny.png" COMP;
|
|
image: "hole_pixel.png" COMP;
|
|
#define SET(_NAME) \
|
|
set { name: _NAME; \
|
|
image { image: _NAME".png" COMP; size: 26 83 99999 99999; } \
|
|
image { image: _NAME"2.png" COMP; size: 23 71 26 82; } \
|
|
image { image: _NAME"3.png" COMP; size: 19 58 22 70; } \
|
|
image { image: _NAME"4.png" COMP; size: 15 45 18 57; } \
|
|
image { image: _NAME"5.png" COMP; size: 11 33 14 44; } \
|
|
image { image: _NAME"6.png" COMP; size: 7 20 10 32; } \
|
|
image { image: _NAME"7.png" COMP; size: 0 0 6 19; } \
|
|
}
|
|
SET("clock_h")
|
|
SET("clock_hs")
|
|
SET("clock_m")
|
|
SET("clock_ms")
|
|
SET("clock_s")
|
|
SET("clock_ss")
|
|
#undef SET
|
|
set { name: "knob";
|
|
image { image: "knob_sz_24.png" COMP; size: 31 31 32 32; }
|
|
image { image: "knob_sz_22.png" COMP; size: 29 29 30 30; }
|
|
image { image: "knob_sz_20.png" COMP; size: 27 27 28 28; }
|
|
image { image: "knob_sz_18.png" COMP; size: 25 25 26 26; }
|
|
image { image: "knob_sz_16.png" COMP; size: 23 23 24 24; }
|
|
image { image: "knob_sz_14.png" COMP; size: 21 21 22 22; }
|
|
image { image: "knob_sz_12.png" COMP; size: 19 19 20 20; }
|
|
image { image: "knob_sz_10.png" COMP; size: 17 17 18 18; }
|
|
image { image: "knob_sz_08.png" COMP; size: 15 15 16 16; }
|
|
image { image: "knob_sz_06.png" COMP; size: 13 13 14 14; }
|
|
image { image: "knob_sz_04.png" COMP; size: 0 0 12 12; }
|
|
}
|
|
}
|
|
min: 16 16;
|
|
max: 160 160;
|
|
script {
|
|
public do_seconds, tick_timer;
|
|
|
|
public clock_cb(val) {
|
|
new year, month, day, yearday, weekday, hour, minute;
|
|
new Float:second;
|
|
new v, dosec, tim;
|
|
|
|
date(year, month, day, yearday, weekday, hour, minute, second);
|
|
dosec = get_int(do_seconds);
|
|
if (dosec) {
|
|
v = round(second);
|
|
tim = timer(1.0 - (second - v), "clock_cb", 1);
|
|
|
|
custom_state(PART:"seconds", "default", 0.0);
|
|
set_state_val(PART:"seconds", STATE_MAP_ROT_Z, (v * 360.0) / 60.0);
|
|
set_state(PART:"seconds", "custom", 0.0);
|
|
|
|
custom_state(PART:"seconds-sh", "default", 0.0);
|
|
set_state_val(PART:"seconds-sh", STATE_MAP_ROT_Z, (v * 360.0) / 60.0);
|
|
set_state(PART:"seconds-sh", "custom", 0.0);
|
|
}
|
|
else {
|
|
tim = timer(60.0 - (second), "clock_cb", 1);
|
|
}
|
|
set_int(tick_timer, tim);
|
|
|
|
custom_state(PART:"minutes", "default", 0.0);
|
|
set_state_val(PART:"minutes", STATE_MAP_ROT_Z, (float(minute) * 360.0) / 60.0);
|
|
set_state(PART:"minutes", "custom", 0.0);
|
|
|
|
custom_state(PART:"minutes-sh", "default", 0.0);
|
|
set_state_val(PART:"minutes-sh", STATE_MAP_ROT_Z, (float(minute) * 360.0) / 60.0);
|
|
set_state(PART:"minutes-sh", "custom", 0.0);
|
|
|
|
custom_state(PART:"hours", "default", 0.0);
|
|
set_state_val(PART:"hours", STATE_MAP_ROT_Z, ((float(hour) + (float(minute) / 60.0)) * 360.0) / 12.0);
|
|
set_state(PART:"hours", "custom", 0.0);
|
|
|
|
custom_state(PART:"hours-sh", "default", 0.0);
|
|
set_state_val(PART:"hours-sh", STATE_MAP_ROT_Z, ((float(hour) + (float(minute) / 60.0)) * 360.0) / 12.0);
|
|
set_state(PART:"hours-sh", "custom", 0.0);
|
|
}
|
|
}
|
|
parts {
|
|
part { name: "event"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
color: 0 0 0 0;
|
|
}
|
|
}
|
|
part { name: "base"; type: SPACER;
|
|
description { state: "default" 0.0;
|
|
rel1.offset: -1 -1;
|
|
rel2.offset: 0 0;
|
|
aspect: 1.0 1.0;
|
|
}
|
|
}
|
|
part { name: "base-sh"; type: SPACER;
|
|
description { state: "default" 0.0;
|
|
rel1.offset: 0 1;
|
|
rel1.to: "base";
|
|
rel2.offset: -1 0;
|
|
rel2.to: "base";
|
|
}
|
|
}
|
|
#define POINT(_NAME, _SZ, _IMG, _X, _Y) \
|
|
part { name: _NAME; \
|
|
description { state: "default" 0.0; \
|
|
rel1.relative: _X _Y; \
|
|
rel1.to: "base"; \
|
|
rel2.relative: _X _Y; \
|
|
rel2.to: "base"; \
|
|
min: _SZ _SZ; \
|
|
max: _SZ _SZ; \
|
|
fixed: 1 1; \
|
|
image.normal: "hole_"_IMG".png"; \
|
|
} \
|
|
}
|
|
POINT("h-12", 4, "tiny", 0.500, 0.100)
|
|
POINT("h-01", 3, "pixel", 0.700, 0.154)
|
|
POINT("h-02", 3, "pixel", 0.846, 0.300)
|
|
POINT("h-03", 4, "tiny", 0.900, 0.500)
|
|
POINT("h-04", 3, "pixel", 0.846, 0.700)
|
|
POINT("h-05", 3, "pixel", 0.700, 0.846)
|
|
POINT("h-06", 4, "tiny", 0.500, 0.900)
|
|
POINT("h-07", 3, "pixel", 0.300, 0.846)
|
|
POINT("h-08", 3, "pixel", 0.154, 0.700)
|
|
POINT("h-09", 4, "tiny", 0.100, 0.500)
|
|
POINT("h-10", 3, "pixel", 0.154, 0.300)
|
|
POINT("h-11", 3, "pixel", 0.300, 0.154)
|
|
#undef POINT
|
|
#define HAND(_NAME, _IMG) \
|
|
part { name: _NAME"-sh"; mouse_events: 0; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: "base-sh"; \
|
|
rel1.relative: (65/160) 0; \
|
|
rel2.to: "base-sh"; \
|
|
rel2.relative: (95/160) (95/160); \
|
|
image.normal: _IMG"s"; \
|
|
map.on: 1; \
|
|
map.rotation.center: "base-sh"; \
|
|
color: 255 255 255 128; \
|
|
} \
|
|
description { state: "hidden" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 0; \
|
|
} \
|
|
} \
|
|
part { name: _NAME; mouse_events: 0; \
|
|
description { state: "default" 0.0; \
|
|
rel1.to: "base"; \
|
|
rel1.relative: (65/160) 0; \
|
|
rel2.to: "base"; \
|
|
rel2.relative: (95/160) (95/160); \
|
|
image.normal: _IMG; \
|
|
map.on: 1; \
|
|
map.rotation.center: "base"; \
|
|
} \
|
|
description { state: "hidden" 0.0; \
|
|
inherit: "default" 0.0; \
|
|
visible: 0; \
|
|
} \
|
|
}
|
|
HAND("seconds", "clock_s")
|
|
HAND("minutes", "clock_m")
|
|
HAND("hours", "clock_h")
|
|
#undef HAND
|
|
part { name: "knob"; type: SPACER;
|
|
description { state: "default" 0.0;
|
|
rel1.relative: (18/40) (18/40);
|
|
rel1.to: "base";
|
|
rel2.relative: (22/40) (22/40);
|
|
rel2.to: "base";
|
|
min: 4 4;
|
|
step: 2 2;
|
|
max: 24 24;
|
|
}
|
|
}
|
|
part { name: "knob2";
|
|
description { state: "default" 0.0;
|
|
rel1.offset: -4 -4;
|
|
rel1.to: "knob";
|
|
rel2.offset: 3 3;
|
|
rel2.to: "knob";
|
|
min: 12 12;
|
|
max: 32 32;
|
|
image.normal: "knob";
|
|
}
|
|
}
|
|
}
|
|
programs {
|
|
program {
|
|
signal: "load"; source: "";
|
|
script {
|
|
clock_cb(0);
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,seconds,on"; source: "e";
|
|
action: STATE_SET "default" 0.0;
|
|
target: "seconds";
|
|
target: "seconds-sh";
|
|
after: "sec2";
|
|
}
|
|
program { name: "sec2";
|
|
script {
|
|
new tim;
|
|
|
|
set_int(do_seconds, 1);
|
|
tim = get_int(tick_timer);
|
|
if (tim) {
|
|
cancel_timer(tim);
|
|
set_int(tick_timer, 0);
|
|
}
|
|
clock_cb(0);
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,seconds,off"; source: "e";
|
|
action: STATE_SET "hidden" 0.0;
|
|
target: "seconds";
|
|
target: "seconds-sh";
|
|
after: "sec3";
|
|
}
|
|
program { name: "sec3";
|
|
script {
|
|
new tim;
|
|
|
|
set_int(do_seconds, 0);
|
|
tim = get_int(tick_timer);
|
|
if (tim) {
|
|
cancel_timer(tim);
|
|
set_int(tick_timer, 0);
|
|
}
|
|
clock_cb(0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
group { name: "e/modules/clock/calendar/dayname";
|
|
parts {
|
|
part { name: "e.text.label"; type: TEXT; mouse_events: 0;
|
|
effect: SHADOW BOTTOM;
|
|
scale: 1;
|
|
description { state: "default" 0.0;
|
|
color: 21 21 21 255;
|
|
color3: 255 255 255 25;
|
|
text { font: "Sans"; size: 8;
|
|
text: "WWe";
|
|
min: 1 1;
|
|
align: 0.5 0.5;
|
|
text_class: "module_small";
|
|
}
|
|
}
|
|
description { state: "weekend" 0.0;
|
|
inherit: "default" 0.0;
|
|
color: 48 48 48 255;
|
|
}
|
|
}
|
|
}
|
|
programs {
|
|
program {
|
|
signal: "e,state,weekend"; source: "e";
|
|
action: STATE_SET "weekend" 0.0;
|
|
target: "e.text.label";
|
|
}
|
|
program {
|
|
signal: "e,state,weekday"; source: "e";
|
|
action: STATE_SET "default" 0.0;
|
|
target: "e.text.label";
|
|
}
|
|
}
|
|
}
|
|
|
|
group { name: "e/modules/clock/calendar/day";
|
|
script {
|
|
public day_state = 0;
|
|
evalstate() {
|
|
new vv = get_int(day_state);
|
|
|
|
if (vv & 2)
|
|
{
|
|
set_state(PART:"e.text.label", "today", 0.0);
|
|
set_state(PART:"label2", "today", 0.0);
|
|
}
|
|
else if (vv & 4)
|
|
{
|
|
set_state(PART:"e.text.label", "hidden", 0.0);
|
|
set_state(PART:"label2", "default", 0.0);
|
|
}
|
|
else if (vv & 1)
|
|
{
|
|
set_state(PART:"e.text.label", "weekend", 0.0);
|
|
set_state(PART:"label2", "default", 0.0);
|
|
}
|
|
else
|
|
{
|
|
set_state(PART:"e.text.label", "default", 0.0);
|
|
set_state(PART:"label2", "default", 0.0);
|
|
}
|
|
}
|
|
}
|
|
parts {
|
|
part { name: "e.text.label"; type: TEXT; mouse_events: 0;
|
|
effect: SHADOW BOTTOM;
|
|
scale: 1;
|
|
description { state: "default" 0.0;
|
|
color: 255 255 255 255;
|
|
color3: 0 0 0 128;
|
|
text { font: "Sans"; size: 10;
|
|
text: "00";
|
|
min: 1 1;
|
|
align: 0.5 0.5;
|
|
}
|
|
}
|
|
description { state: "today" 0.0;
|
|
inherit: "default" 0.0;
|
|
visible: 0;
|
|
}
|
|
description { state: "weekend" 0.0;
|
|
inherit: "default" 0.0;
|
|
color: 128 128 128 255;
|
|
}
|
|
description { state: "hidden" 0.0;
|
|
inherit: "default" 0.0;
|
|
color: 21 21 21 255;
|
|
color3: 255 255 255 25;
|
|
}
|
|
}
|
|
part { name: "label2"; type: TEXT; mouse_events: 0;
|
|
effect: GLOW;
|
|
scale: 1;
|
|
description { state: "default" 0.0;
|
|
rel1.offset: -3 -3;
|
|
rel1.to: "e.text.label";
|
|
rel2.offset: 2 1;
|
|
rel2.to: "e.text.label";
|
|
color: 51 153 255 255;
|
|
color2: 51 153 255 24;
|
|
color3: 51 153 255 18;
|
|
text { font: "Sans"; size: 10;
|
|
text_source: "e.text.label";
|
|
min: 1 1;
|
|
align: 0.5 0.5;
|
|
}
|
|
visible: 0;
|
|
}
|
|
description { state: "today" 0.0;
|
|
inherit: "default" 0.0;
|
|
visible: 1;
|
|
}
|
|
}
|
|
}
|
|
programs {
|
|
program {
|
|
signal: "e,state,weekend"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv | 1);
|
|
evalstate();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,weekday"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv & (~1));
|
|
evalstate();
|
|
}
|
|
}
|
|
|
|
program {
|
|
signal: "e,state,today"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv | 2);
|
|
evalstate();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,someday"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv & (~2));
|
|
evalstate();
|
|
}
|
|
}
|
|
|
|
program {
|
|
signal: "e,state,hidden"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv | 4);
|
|
evalstate();
|
|
}
|
|
}
|
|
program {
|
|
signal: "e,state,visible"; source: "e";
|
|
script {
|
|
new vv = get_int(day_state);
|
|
set_int(day_state, vv & (~4));
|
|
evalstate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
group { name: "e/modules/clock/calendar";
|
|
images.image: "separator_horiz.png" COMP;
|
|
images.image: "sym_left_light_normal.png" COMP;
|
|
images.image: "sym_right_light_normal.png" COMP;
|
|
images.image: "sym_left_glow_normal.png" COMP;
|
|
images.image: "sym_right_glow_normal.png" COMP;
|
|
parts {
|
|
part { name: "e.text.month"; type: TEXT;
|
|
effect: SHADOW BOTTOM;
|
|
mouse_events: 1;
|
|
scale: 1;
|
|
description { state: "default" 0.0;
|
|
fixed: 0 1;
|
|
align: 0.0 0.0;
|
|
rel1.to_x: "prev";
|
|
rel1.relative: 1.0 0.0;
|
|
rel2.relative: 1.0 0.0;
|
|
color: 255 255 255 255;
|
|
color3: 0 0 0 128;
|
|
text { font: "Sans:style=Bold"; size: 10;
|
|
text: "000000000000";
|
|
align: 0.0 0.5;
|
|
min: 0 1;
|
|
text_class: "module_normal";
|
|
}
|
|
}
|
|
}
|
|
part { name: "e.text.year"; type: TEXT; mouse_events: 0;
|
|
effect: SHADOW BOTTOM;
|
|
scale: 1;
|
|
description { state: "default" 0.0;
|
|
fixed: 0 1;
|
|
align: 1.0 0.0;
|
|
rel1.relative: 0.0 0.0;
|
|
rel2.to_x: "next";
|
|
rel2.relative: 0.0 0.0;
|
|
color: 255 255 255 255;
|
|
color3: 0 0 0 128;
|
|
text { font: "Sans:style=Bold"; size: 10;
|
|
text: "0000";
|
|
align: 1.0 0.5;
|
|
min: 0 1;
|
|
text_class: "module_normal";
|
|
}
|
|
}
|
|
}
|
|
part { name: "previm"; mouse_events: 0;
|
|
description { state: "default" 0.0;
|
|
min: 15 15;
|
|
max: 15 15;
|
|
rel1.to: "prev";
|
|
rel2.to: "prev";
|
|
image.normal: "sym_left_light_normal.png";
|
|
}
|
|
description { state: "pressed" 0.0;
|
|
inherit: "default" 0.0;
|
|
image.normal: "sym_left_glow_normal.png";
|
|
}
|
|
}
|
|
part { name: "prev"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
align: 0.0 0.5;
|
|
color: 0 0 0 0;
|
|
aspect: 1.0 1.0; aspect_preference: VERTICAL;
|
|
rel1.to_y: "e.text.month";
|
|
rel1.relative: 0.0 0.0;
|
|
rel2.to_y: "e.text.month";
|
|
rel2.relative: 0.0 1.0;
|
|
}
|
|
program { name: "prev_down";
|
|
signal: "mouse,down,1*"; source: "prev";
|
|
action: STATE_SET "pressed" 0.0;
|
|
target: "previm";
|
|
}
|
|
program { name: "prev_up";
|
|
signal: "mouse,up,1"; source: "prev";
|
|
action: STATE_SET "default" 0.0;
|
|
target: "previm";
|
|
}
|
|
program { name: "prev_clicked";
|
|
signal: "mouse,clicked,1*"; source: "prev";
|
|
action: SIGNAL_EMIT "e,action,prev" "";
|
|
}
|
|
}
|
|
part { name: "nextim"; mouse_events: 0;
|
|
description { state: "default" 0.0;
|
|
min: 15 15;
|
|
max: 15 15;
|
|
rel1.to: "next";
|
|
rel2.to: "next";
|
|
image.normal: "sym_right_light_normal.png";
|
|
}
|
|
description { state: "pressed" 0.0;
|
|
inherit: "default" 0.0;
|
|
image.normal: "sym_right_glow_normal.png";
|
|
}
|
|
}
|
|
part { name: "next"; type: RECT;
|
|
description { state: "default" 0.0;
|
|
align: 1.0 0.5;
|
|
color: 0 0 0 0;
|
|
aspect: 1.0 1.0; aspect_preference: VERTICAL;
|
|
rel1.to_y: "e.text.month";
|
|
rel1.relative: 1.0 0.0;
|
|
rel2.to_y: "e.text.month";
|
|
rel2.relative: 1.0 1.0;
|
|
}
|
|
program { name: "next_down";
|
|
signal: "mouse,down,1"; source: "next";
|
|
action: STATE_SET "pressed" 0.0;
|
|
target: "nextim";
|
|
}
|
|
program { name: "next_up";
|
|
signal: "mouse,up,1"; source: "next";
|
|
action: STATE_SET "default" 0.0;
|
|
target: "nextim";
|
|
}
|
|
program { name: "next_clicked";
|
|
signal: "mouse,clicked,1"; source: "next";
|
|
action: SIGNAL_EMIT "e,action,next" "";
|
|
}
|
|
}
|
|
part { name: "sel";
|
|
description { state: "default" 0.0;
|
|
image.normal: "separator_horiz.png";
|
|
rel1.relative: 0.0 1.0;
|
|
rel1.offset: 0 0;
|
|
rel1.to: "e.table.daynames";
|
|
rel2.offset: -1 1;
|
|
rel2.to: "e.table.daynames";
|
|
min: 0 2;
|
|
fill.smooth: 0;
|
|
}
|
|
}
|
|
|
|
part { name: "e.table.daynames"; type: TABLE;
|
|
description { state: "default" 0.0;
|
|
fixed: 0 1;
|
|
align: 0.5 0.0;
|
|
rel1.to_y: "e.text.month";
|
|
rel1.relative: 0.0 1.0;
|
|
rel1.offset: 2 2;
|
|
rel2.to_y: "e.text.month";
|
|
rel2.relative: 1.0 1.0;
|
|
rel2.offset: -3 2;
|
|
step: 7 1;
|
|
table { homogeneous: TABLE;
|
|
padding: 1 1;
|
|
align: 0.5 0.5;
|
|
min: 1 1;
|
|
}
|
|
}
|
|
table {
|
|
items {
|
|
#define D(x) \
|
|
item { \
|
|
position: x 0; \
|
|
span: 1 1; \
|
|
source: "e/modules/clock/calendar/dayname"; \
|
|
weight: 1.0 1.0; \
|
|
align: -1.0 -1.0; \
|
|
}
|
|
D(0) D(1) D(2) D(3) D(4) D(5) D(6)
|
|
#undef D
|
|
}
|
|
}
|
|
}
|
|
part { name: "e.table.days"; type: TABLE;
|
|
description { state: "default" 0.0;
|
|
rel1.to_y: "e.table.daynames";
|
|
rel1.relative: 0.0 1.0;
|
|
rel1.offset: 2 2;
|
|
rel2.offset: -3 -3;
|
|
step: 7 5;
|
|
table { homogeneous: TABLE;
|
|
padding: 1 1;
|
|
align: 0.5 0.5;
|
|
min: 1 1;
|
|
}
|
|
}
|
|
table {
|
|
items {
|
|
#define D(x, y) \
|
|
item { \
|
|
position: x y; \
|
|
span: 1 1; \
|
|
source: "e/modules/clock/calendar/day"; \
|
|
weight: 1.0 1.0; \
|
|
align: -1.0 -1.0; \
|
|
}
|
|
D(0, 0) D(1, 0) D(2, 0) D(3, 0) D(4, 0) D(5, 0) D(6, 0)
|
|
D(0, 1) D(1, 1) D(2, 1) D(3, 1) D(4, 1) D(5, 1) D(6, 1)
|
|
D(0, 2) D(1, 2) D(2, 2) D(3, 2) D(4, 2) D(5, 2) D(6, 2)
|
|
D(0, 3) D(1, 3) D(2, 3) D(3, 3) D(4, 3) D(5, 3) D(6, 3)
|
|
D(0, 4) D(1, 4) D(2, 4) D(3, 4) D(4, 4) D(5, 4) D(6, 4)
|
|
D(0, 5) D(1, 5) D(2, 5) D(3, 5) D(4, 5) D(5, 5) D(6, 5)
|
|
#undef D
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|