summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-03-03 09:52:38 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-03-04 14:34:53 -0500
commitf65d5d6b3f784f14583e126a9ecf48da819067f8 (patch)
treedb8e3a50a0327aea40297483179f5496fc5b9fae
parentda6f1644bf32c2704155f3dda8c8cd474e4e3464 (diff)
theme: add new time gadget themes
-rw-r--r--data/themes/Makefile.am15
-rw-r--r--data/themes/default.edc1
-rw-r--r--data/themes/edc/time.edc1379
-rw-r--r--data/themes/img/digit_0.pngbin0 -> 2526 bytes
-rw-r--r--data/themes/img/digit_1.pngbin0 -> 577 bytes
-rw-r--r--data/themes/img/digit_2.pngbin0 -> 2443 bytes
-rw-r--r--data/themes/img/digit_3.pngbin0 -> 2236 bytes
-rw-r--r--data/themes/img/digit_4.pngbin0 -> 1563 bytes
-rw-r--r--data/themes/img/digit_5.pngbin0 -> 2335 bytes
-rw-r--r--data/themes/img/digit_6.pngbin0 -> 2588 bytes
-rw-r--r--data/themes/img/digit_7.pngbin0 -> 1542 bytes
-rw-r--r--data/themes/img/digit_8.pngbin0 -> 2669 bytes
-rw-r--r--data/themes/img/digit_9.pngbin0 -> 2663 bytes
-rw-r--r--data/themes/img/digit_am.pngbin0 -> 1347 bytes
-rw-r--r--data/themes/img/digit_na.pngbin0 -> 2014 bytes
-rw-r--r--data/themes/img/digit_nm.pngbin0 -> 533 bytes
-rw-r--r--data/themes/img/digit_pm.pngbin0 -> 1224 bytes
17 files changed, 1395 insertions, 0 deletions
diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am
index c026ac43a..319125631 100644
--- a/data/themes/Makefile.am
+++ b/data/themes/Makefile.am
@@ -86,6 +86,7 @@ edc/systray.edc \
86edc/tasks.edc \ 86edc/tasks.edc \
87edc/temperature.edc \ 87edc/temperature.edc \
88edc/textblock.edc \ 88edc/textblock.edc \
89edc/time.edc \
89edc/toolbar.edc \ 90edc/toolbar.edc \
90edc/transitions.edc \ 91edc/transitions.edc \
91edc/wallpaper.edc \ 92edc/wallpaper.edc \
@@ -237,6 +238,20 @@ img/day_single_normal.png \
237img/day_single_press.png \ 238img/day_single_press.png \
238img/day_single_selected.png \ 239img/day_single_selected.png \
239img/diagonal_stripes.png \ 240img/diagonal_stripes.png \
241img/digit_0.png \
242img/digit_1.png \
243img/digit_2.png \
244img/digit_3.png \
245img/digit_4.png \
246img/digit_5.png \
247img/digit_6.png \
248img/digit_7.png \
249img/digit_8.png \
250img/digit_9.png \
251img/digit_am.png \
252img/digit_na.png \
253img/digit_nm.png \
254img/digit_pm.png \
240img/O/digit_0.png \ 255img/O/digit_0.png \
241img/O/digit_1.png \ 256img/O/digit_1.png \
242img/O/digit_2.png \ 257img/O/digit_2.png \
diff --git a/data/themes/default.edc b/data/themes/default.edc
index bab92ba10..2ba757d02 100644
--- a/data/themes/default.edc
+++ b/data/themes/default.edc
@@ -143,6 +143,7 @@ collections {
143#include "edc/bluez4.edc" 143#include "edc/bluez4.edc"
144#include "edc/packagekit.edc" 144#include "edc/packagekit.edc"
145#include "edc/wireless.edc" 145#include "edc/wireless.edc"
146#include "edc/time.edc"
146 147
147// icons 148// icons
148#include "edc/icons.edc" 149#include "edc/icons.edc"
diff --git a/data/themes/edc/time.edc b/data/themes/edc/time.edc
new file mode 100644
index 000000000..31852f3c6
--- /dev/null
+++ b/data/themes/edc/time.edc
@@ -0,0 +1,1379 @@
1color_classes {
2 color_class { "e.clock_color_fg";
3 color: FN_COL_HIGHLIGHT;
4 desc: "Foreground color of the digital clock";
5 }
6 color_class { "e.clock_color_bg";
7 color: 31 31 31 255;
8 desc: "Backgound color of the digital clock";
9 }
10}
11
12group { "e/gadget/clock/digital/advanced"; nomouse;
13 script {
14 public message(Msg_Type:type, id, ...) {
15#define CUSTOM(NAME) \
16 custom_state(PART:NAME, "default", 0.0); \
17 set_state_val(PART:NAME, STATE_COLOR_CLASS, str); \
18 set_state(PART:NAME, "custom", 0.0)
19
20 if ((type == MSG_STRING_INT) && (id == 3)) {
21 new str[128];
22 new on;
23
24 getsarg(2, str, sizeof(str));
25 on = getarg(3);
26 if (on) {
27 CUSTOM("clip");
28 } else {
29 set_state(PART:"clip", "default", 0.0);
30 }
31#undef CUSTOM
32 }
33 }
34 }
35 parts {
36 rect { "clip";
37 desc {
38 color_class: "e.clock_color_fg";
39 }
40 }
41 text { "e.text"; scale; clip: "clip";
42 effect: GLOW;
43 desc { "default";
44 align: 0.5 0;
45 rel1.offset: 2 0;
46 rel2.relative: 1 0;
47 rel2.offset: -3 -1;
48 color: FN_COL_DEFAULT_BASIC;
49 text {
50 font: FN;
51 size: 12;
52 min: 1 1;
53 text_class: "module_normal";
54 ellipsis: -1;
55 }
56 }
57 desc { "only"; inherit;
58 align: 0.5 0.5;
59 rel2.relative: 1 1;
60 text.fit: 0 1;
61 text.font: FNBD;
62 text.text_class: "module_large";
63 }
64 }
65 text { "e.text.sub"; scale; clip: "clip";
66 effect: GLOW;
67 desc { "default";
68 align: 0.5 0;
69 rel1.relative: 0 1;
70 rel1.offset: 2 0;
71 rel1.to_y: "e.text";
72 rel2.offset: -3 -1;
73 color: FN_COL_DEFAULT_BASIC;
74 text {
75 font: FN;
76 size: 9;
77 min: 1 1;
78 text_class: "module_small";
79 ellipsis: -1;
80 }
81 }
82 desc { "only"; hid;
83 max: 0 0;
84 }
85 }
86 spacer { "e.sizer";
87 desc {
88 rel1.to: "e.text";
89 rel2.to: "e.text.sub";
90 }
91 desc { "only";
92 rel.to: "e.text";
93 }
94 }
95 rect { "eventarea"; mouse;
96 desc { color: 0 0 0 0; }
97 }
98 program { signal: "e,state,date,on"; source: "e";
99 action: STATE_SET "default";
100 targets: "e.text" "e.text.sub" "e.sizer";
101 }
102 program { signal: "e,state,date,off"; source: "e";
103 action: STATE_SET "only";
104 targets: "e.text" "e.text.sub" "e.sizer";
105 }
106 }
107}
108group { name: "e/gadget/clock/digital";
109 min: 64 16;
110 max: 512 128;
111 images.image: "digit_na.png" COMP;
112 images.image: "digit_nm.png" COMP;
113 images.image: "digit_0.png" COMP;
114 images.image: "digit_1.png" COMP;
115 images.image: "digit_2.png" COMP;
116 images.image: "digit_3.png" COMP;
117 images.image: "digit_4.png" COMP;
118 images.image: "digit_5.png" COMP;
119 images.image: "digit_6.png" COMP;
120 images.image: "digit_7.png" COMP;
121 images.image: "digit_8.png" COMP;
122 images.image: "digit_9.png" COMP;
123 images.image: "digit_am.png" COMP;
124 images.image: "digit_pm.png" COMP;
125 images.image: "hole_tiny.png" COMP;
126 script {
127 public do_seconds, do_24h, do_date, tick_timer, timezone;
128
129 public message(Msg_Type:type, id, ...) {
130 if ((type == MSG_STRING) && (id == 1)) {
131 new str[128];
132
133 getsarg(2, str, sizeof(str));
134 set_str(timezone, str);
135 reset();
136 } else if ((type == MSG_STRING_INT) && (id == 2)) {
137 new str[128];
138 new on;
139
140 getsarg(2, str, sizeof(str));
141 on = getarg(3);
142 if (on) {
143#define CUSTOM(NAME) \
144 custom_state(PART:NAME, "default", 0.0); \
145 set_state_val(PART:NAME, STATE_COLOR_CLASS, str); \
146 set_state(PART:NAME, "custom", 0.0)
147
148 CUSTOM("bg_color");
149 CUSTOM("bg_color_secclip");
150 CUSTOM("bg_color_ampmclip");
151 } else {
152 set_state(PART:"bg_color", "default", 0.0);
153 set_state(PART:"bg_color_secclip", "default", 0.0);
154 set_state(PART:"bg_color_ampmclip", "default", 0.0);
155 }
156 } else if ((type == MSG_STRING_INT) && (id == 3)) {
157 new str[128];
158 new on;
159
160 getsarg(2, str, sizeof(str));
161 on = getarg(3);
162 if (on) {
163 CUSTOM("fg_color");
164 CUSTOM("fg_color_secclip");
165 CUSTOM("fg_color_ampmclip");
166 } else {
167 set_state(PART:"fg_color", "default", 0.0);
168 set_state(PART:"fg_color_secclip", "default", 0.0);
169 set_state(PART:"fg_color_ampmclip", "default", 0.0);
170 }
171#undef CUSTOM
172 }
173 }
174 evalsize() {
175 new do24h, dosec, v[14], i, tot, mul;
176 new parts[] = {
177 PART:"hours1", PART:"hours1",
178 PART:"hours2", PART:"hours2",
179 PART:"mins1", PART:"mins1",
180 PART:"mins2", PART:"mins2",
181 PART:"secs1", PART:"secs1",
182 PART:"secs2", PART:"secs2",
183 PART:"ampm", PART:"ampm"
184 };
185
186 mul = 4;
187 if (get_int(do_date)) {
188 mul = 3;
189 }
190
191 for (i = 0; i < 14; i += 2) {
192 custom_state(parts[i], "default", 0.0);
193 }
194 v[0] = 0; v[1] = 2; v[2] = 2; v[3] = 4; // hrs
195 v[4] = 5; v[5] = 7; v[6] = 7; v[7] = 9; // mins
196 tot = 9;
197
198 dosec = get_int(do_seconds);
199 do24h = get_int(do_24h);
200 if ((dosec) && (!do24h)) { // sec + ampm
201 tot += 7;
202 v[8] = 10; v[9] = 12; v[10] = 12; v[11] = 14;
203 v[12] = 14; v[13] = 16;
204 }
205 else if ((dosec) && (do24h)) { // sec + -
206 tot += 5;
207 v[8] = 10; v[9] = 12; v[10] = 12; v[11] = 14;
208 v[12] = 0; v[13] = 0;
209 }
210 else if ((!dosec) && (!do24h)) { // - + ampm
211 tot += 2;
212 v[8] = 0; v[9] = 0; v[10] = 0; v[11] = 0;
213 v[12] = 9; v[13] = 11;
214 }
215 else if ((!dosec) && (do24h)) { // - + -
216 tot += 0;
217 v[8] = 0; v[9] = 0; v[10] = 0; v[11] = 0;
218 v[12] = 0; v[13] = 0;
219 }
220 for (i = 0; i < 14; i += 2) {
221 set_state_val(parts[i], STATE_REL1,
222 float(v[i]) / float(tot), 0.0);
223 set_state_val(parts[i + 1], STATE_REL2,
224 float(v[i + 1]) / float(tot), 1.0);
225 }
226 for (i = 0; i < 14; i += 2) {
227 set_state(parts[i], "custom", 0.0);
228 }
229 set_min_size(tot * mul, 16);
230 set_max_size(tot * 8 * mul, 128);
231 emit("e,state,sizing,changed", "");
232 }
233 reset() {
234 new tim;
235
236 evalsize();
237 tim = get_int(tick_timer);
238 if (tim) {
239 cancel_timer(tim);
240 set_int(tick_timer, 0);
241 }
242 clock_cb(0);
243 }
244 valset(name[], v) {
245 new buf[20], i;
246
247 for (i = 0; i < 10; i++) {
248 if (i == v) {
249 snprintf(buf, 20, "show,%s-%i", name, i);
250 }
251 else {
252 snprintf(buf, 20, "hide,%s-%i", name, i);
253 }
254 emit(buf, "c");
255 }
256 }
257 apvalset(id, pm) {
258 if (pm) set_state(id, "active", 0.0);
259 else set_state(id, "default", 0.0);
260 }
261 public clock_cb(val) {
262 new year, month, day, yearday, weekday, hour, minute;
263 new Float:second;
264 new v, dosec, do24h, tim;
265#ifdef EFL_VERSION_1_18
266 new tz[128];
267
268 get_str(timezone, tz, 128);
269 tzdate(tz, year, month, day, yearday, weekday, hour, minute, second);
270#else
271 date(year, month, day, yearday, weekday, hour, minute, second);
272#endif
273 dosec = get_int(do_seconds);
274 if (dosec) {
275 v = round(second);
276 tim = timer(1.0 - (second - v), "clock_cb", 1);
277 // set seconds to v
278 valset("s0", v / 10);
279 valset("s1", v % 10);
280 }
281 else {
282 tim = timer(60.0 - (second), "clock_cb", 1);
283 }
284 set_int(tick_timer, tim);
285
286 // set minutes to minute
287 valset("m0", minute / 10);
288 valset("m1", minute % 10);
289
290 // set hours to hour
291 do24h = get_int(do_24h);
292 if (do24h) {
293 valset("h0", hour / 10);
294 valset("h1", hour % 10);
295 }
296 else {
297 new pm;
298
299 // if 12 or later, its pm
300 if (hour >= 12) {
301 pm = 1;
302 // if we are after 12 (1, 2, 3 etc.) then mod by 12
303 if (hour > 12) hour = hour % 12;
304 }
305 else {
306 pm = 0;
307 // make after midnight be 12:XX AM :)
308 if (hour == 0) hour = 12;
309 }
310 valset("h0", hour / 10);
311 valset("h1", hour % 10);
312 apvalset(PART:"ap", pm);
313 }
314 }
315 }
316
317 parts {
318 rect { "fg_color";
319 desc {
320 color_class: "e.clock_color_fg";
321 }
322 }
323 rect { "bg_color";
324 desc {
325 color_class: "e.clock_color_bg";
326 }
327 }
328 rect { "fg_color_secclip"; clip: "secclip";
329 desc {
330 color_class: "e.clock_color_fg";
331 }
332 }
333 rect { "bg_color_secclip"; clip: "secclip";
334 desc {
335 color_class: "e.clock_color_bg";
336 }
337 }
338 rect { "fg_color_ampmclip"; clip: "ampmclip";
339 desc {
340 color_class: "e.clock_color_fg";
341 }
342 }
343 rect { "bg_color_ampmclip"; clip: "ampmclip";
344 desc {
345 color_class: "e.clock_color_bg";
346 }
347 }
348 part { name: "secclip"; type: RECT;
349 description { state: "default" 0.0;
350 }
351 description { state: "hidden" 0.0;
352 visible: 0;
353 }
354 }
355 part { name: "ampmclip"; type: RECT;
356 description { state: "default" 0.0;
357 }
358 description { state: "hidden" 0.0;
359 visible: 0;
360 }
361 }
362 // XXX: hours1/2, mins1/2, secs1/2 and ampm SHOULD be spacers... but
363 // if they are calculations go weird. this shouldnt happen, but does.
364 part { name: "timearea"; type: RECT;
365 description { state: "default" 0.0;
366 visible: 0;
367 }
368 description { state: "date" 0.0;
369 inherit: "default" 0.0;
370 rel2.relative: 1.0 0.0;
371 rel2.offset: -1 4;
372 rel2.to_y: "e.text.sub";
373 }
374 }
375 part { name: "hours1"; type: RECT;
376 description { state: "default" 0.0;
377 rel1.relative: (0/16) 0.0;
378 rel2.relative: (2/16) 1.0;
379 rel1.to: "timearea";
380 rel2.to: "timearea";
381 visible: 0;
382 }
383 }
384 part { name: "hours2"; type: RECT;
385 description { state: "default" 0.0;
386 rel1.relative: (2/16) 0.0;
387 rel2.relative: (4/16) 1.0;
388 rel1.to: "timearea";
389 rel2.to: "timearea";
390 visible: 0;
391 }
392 }
393 part { name: "mins1"; type: RECT;
394 description { state: "default" 0.0;
395 rel1.relative: (5/16) 0.0;
396 rel2.relative: (7/16) 1.0;
397 rel1.to: "timearea";
398 rel2.to: "timearea";
399 visible: 0;
400 }
401 }
402 part { name: "mins2"; type: RECT;
403 description { state: "default" 0.0;
404 rel1.relative: (7/16) 0.0;
405 rel2.relative: (9/16) 1.0;
406 rel1.to: "timearea";
407 rel2.to: "timearea";
408 visible: 0;
409 }
410 }
411 part { name: "secs1"; type: RECT;
412 description { state: "default" 0.0;
413 rel1.relative: (10/16) 0.0;
414 rel2.relative: (12/16) 1.0;
415 rel1.to: "timearea";
416 rel2.to: "timearea";
417 visible: 0;
418 }
419 }
420 part { name: "secs2"; type: RECT;
421 description { state: "default" 0.0;
422 rel1.relative: (12/16) 0.0;
423 rel2.relative: (14/16) 1.0;
424 rel1.to: "timearea";
425 rel2.to: "timearea";
426 visible: 0;
427 }
428 }
429 part { name: "ampm"; type: RECT;
430 description { state: "default" 0.0;
431 rel1.relative: (14/16) 0.0;
432 rel2.relative: (16/16) 1.0;
433 rel1.to: "timearea";
434 rel2.to: "timearea";
435 visible: 0;
436 }
437 }
438 part { name: "c00";
439 description { state: "default" 0.0;
440 rel1.to: "hours2";
441 rel1.relative: 1.0 0.5;
442 rel1.offset: 0 -2;
443 rel2.to: "mins1";
444 rel2.relative: 0.0 0.5;
445 rel2.offset: 0 -2;
446 align: 0.5 1.0;
447 FIXED_SIZE(4, 4)
448 image.normal: "hole_tiny.png";
449 }
450 }
451 part { name: "c01";
452 description { state: "default" 0.0;
453 rel1.to: "hours2";
454 rel1.relative: 1.0 0.5;
455 rel1.offset: 0 1;
456 rel2.to: "mins1";
457 rel2.relative: 0.0 0.5;
458 rel2.offset: 0 1;
459 align: 0.5 0.0;
460 FIXED_SIZE(4, 4)
461 image.normal: "hole_tiny.png";
462 }
463 }
464 part { name: "c10";
465 clip_to: "secclip";
466 description { state: "default" 0.0;
467 rel1.to: "mins2";
468 rel1.relative: 1.0 0.5;
469 rel1.offset: 0 -2;
470 rel2.to: "secs1";
471 rel2.relative: 0.0 0.5;
472 rel2.offset: 0 -2;
473 align: 0.5 1.0;
474 FIXED_SIZE(4, 4)
475 image.normal: "hole_tiny.png";
476 }
477 }
478 part { name: "c11";
479 clip_to: "secclip";
480 description { state: "default" 0.0;
481 rel1.to: "mins2";
482 rel1.relative: 1.0 0.5;
483 rel1.offset: 0 1;
484 rel2.to: "secs1";
485 rel2.relative: 0.0 0.5;
486 rel2.offset: 0 1;
487 align: 0.5 0.0;
488 FIXED_SIZE(4, 4)
489 image.normal: "hole_tiny.png";
490 }
491 }
492#define ELEM(_NAME, _TO, _DIGIT) \
493 part { name: _NAME; clip: "fg_color"; \
494 description { state: "default" 0.0; \
495 rel1.to: _TO; rel2.to: _TO; \
496 aspect: (52/72) (52/72); aspect_preference: BOTH; \
497 image.normal: "digit_"_DIGIT".png"; \
498 visible: 0; \
499 color: 255 255 255 0; \
500 } \
501 description { state: "active" 0.0; \
502 inherit: "default" 0.0; \
503 visible: 1; \
504 color: 255 255 255 255; \
505 } \
506 }
507#define DIGIT(_NAME, _TO) \
508 ELEM(_NAME"-0", _TO, "0") \
509 ELEM(_NAME"-1", _TO, "1") \
510 ELEM(_NAME"-2", _TO, "2") \
511 ELEM(_NAME"-3", _TO, "3") \
512 ELEM(_NAME"-4", _TO, "4") \
513 ELEM(_NAME"-5", _TO, "5") \
514 ELEM(_NAME"-6", _TO, "6") \
515 ELEM(_NAME"-7", _TO, "7") \
516 ELEM(_NAME"-8", _TO, "8") \
517 ELEM(_NAME"-9", _TO, "9")
518#define ELEMC(_NAME, _TO, _DIGIT, _CLIP) \
519 part { name: _NAME; \
520 clip_to: _CLIP; \
521 description { state: "default" 0.0; \
522 rel1.to: _TO; rel2.to: _TO; \
523 aspect: (52/72) (52/72); aspect_preference: BOTH; \
524 image.normal: "digit_"_DIGIT".png"; \
525 visible: 0; \
526 color: 255 255 255 0; \
527 } \
528 description { state: "active" 0.0; \
529 inherit: "default" 0.0; \
530 visible: 1; \
531 color: 255 255 255 255; \
532 } \
533 }
534#define DIGITC(_NAME, _TO, _CLIP) \
535 ELEMC(_NAME"-0", _TO, "0", _CLIP) \
536 ELEMC(_NAME"-1", _TO, "1", _CLIP) \
537 ELEMC(_NAME"-2", _TO, "2", _CLIP) \
538 ELEMC(_NAME"-3", _TO, "3", _CLIP) \
539 ELEMC(_NAME"-4", _TO, "4", _CLIP) \
540 ELEMC(_NAME"-5", _TO, "5", _CLIP) \
541 ELEMC(_NAME"-6", _TO, "6", _CLIP) \
542 ELEMC(_NAME"-7", _TO, "7", _CLIP) \
543 ELEMC(_NAME"-8", _TO, "8", _CLIP) \
544 ELEMC(_NAME"-9", _TO, "9", _CLIP)
545
546#define TAG(_NAME, _TO, _CLIP) \
547 part { name: _NAME; \
548 clip_to: _CLIP; \
549 description { state: "default" 0.0; \
550 rel1.to: _TO; rel2.to: _TO; \
551 aspect: (48/31) (48/31); aspect_preference: BOTH; \
552 image.normal: "digit_am.png"; \
553 } \
554 description { state: "active" 0.0; \
555 inherit: "default" 0.0; \
556 image.normal: "digit_pm.png"; \
557 } \
558 }
559#define BASE(_NAME, _BASE, _IMG) \
560 part { name: _NAME; clip: "bg_color"; \
561 description { state: "default" 0.0; \
562 rel1.to: _BASE; \
563 rel2.to: _BASE; \
564 image.normal: _IMG; \
565 color: 255 255 255 128; \
566 } \
567 }
568#define BASEC(_NAME, _CLIP, _BASE, _IMG) \
569 part { name: _NAME; \
570 clip_to: _CLIP; \
571 description { state: "default" 0.0; \
572 rel1.to: _BASE; \
573 rel2.to: _BASE; \
574 image.normal: _IMG; \
575 color: 255 255 255 128; \
576 } \
577 }
578
579 BASE ("ha", "h0-0", "digit_na.png")
580 BASE ("hb", "h1-0", "digit_na.png")
581 BASE ("ma", "m0-0", "digit_na.png")
582 BASE ("mb", "m1-0", "digit_na.png")
583
584 BASEC("sa", "bg_color_secclip", "s0-0", "digit_na.png")
585 BASEC("sb", "bg_color_secclip", "s1-0", "digit_na.png")
586 BASEC("aa", "bg_color_ampmclip", "ap", "digit_nm.png")
587
588 DIGIT ("h0", "hours1")
589 DIGIT ("h1", "hours2")
590 DIGIT ("m0", "mins1")
591 DIGIT ("m1", "mins2")
592 DIGITC("s0", "secs1", "fg_color_secclip")
593 DIGITC("s1", "secs2", "fg_color_secclip")
594 TAG("ap", "ampm", "fg_color_ampmclip")
595#undef TAG
596#undef TAG
597#undef ELEM
598#undef ELEMC
599#undef BASE
600#undef BASEC
601#undef DIGIT
602#undef DIGITC
603
604 part { name: "e.text.sub"; type: TEXT;
605 effect: GLOW;
606 scale: 1;
607 description { state: "default" 0.0;
608 rel1.relative: 0.0 1.0;
609 rel1.offset: 0 1;
610 rel2.offset: -1 1;
611 align: 0.5 1.0;
612 color: FN_COL_HIGHLIGHT;
613 text { font: FN; size: 8;
614 text_class: "module_small";
615 align: 0.5 0.5;
616 min: 0 1;
617 }
618 fixed: 0 1;
619 visible: 0;
620 }
621 description { state: "date" 0.0;
622 inherit: "default" 0.0;
623 visible: 1;
624 fixed: 1 1;
625 text.min: 1 1;
626 text.ellipsis: -1;
627 }
628 }
629
630 part { name: "event"; type: RECT;
631 description { state: "default" 0.0;
632 color: 0 0 0 0;
633 }
634 }
635 }
636 programs {
637 program {
638 signal: "load"; source: "";
639 script {
640 reset();
641 }
642 }
643 program {
644 signal: "e,state,date,on"; source: "e";
645 script {
646 set_int(do_date, 1);
647 set_state(PART:"timearea", "date", 0.0);
648 set_state(PART:"e.text.sub", "date", 0.0);
649 reset();
650 }
651 }
652 program {
653 signal: "e,state,date,off"; source: "e";
654 script {
655 set_int(do_date, 0);
656 set_state(PART:"timearea", "default", 0.0);
657 set_state(PART:"e.text.sub", "default", 0.0);
658 reset();
659 }
660 }
661 program {
662 signal: "e,state,seconds,on"; source: "e";
663 script {
664 set_int(do_seconds, 1);
665 set_state(PART:"secclip", "default", 0.0);
666 reset();
667 }
668 }
669 program {
670 signal: "e,state,seconds,off"; source: "e";
671 script {
672 set_int(do_seconds, 0);
673 set_state(PART:"secclip", "hidden", 0.0);
674 reset();
675 }
676 }
677 program {
678 signal: "e,state,24h,on"; source: "e";
679 script {
680 set_int(do_24h, 1);
681 set_state(PART:"ampmclip", "hidden", 0.0);
682 reset();
683 }
684 }
685 program {
686 signal: "e,state,24h,off"; source: "e";
687 script {
688 set_int(do_24h, 0);
689 set_state(PART:"ampmclip", "default", 0.0);
690 reset();
691 }
692 }
693#define DIGPRG(_NAME) \
694 program { \
695 signal: "show,"_NAME; source: "c"; \
696 action: STATE_SET "active" 0.0; \
697 transition: BOUNCE 0.3 0.5 2; \
698 target: _NAME; \
699 } \
700 program { \
701 signal: "hide,"_NAME; source: "c"; \
702 action: STATE_SET "default" 0.0; \
703 transition: DECELERATE 0.3; \
704 target: _NAME; \
705 }
706#define DIGPRGS(_NAME) \
707 DIGPRG(_NAME"-0") \
708 DIGPRG(_NAME"-1") \
709 DIGPRG(_NAME"-2") \
710 DIGPRG(_NAME"-3") \
711 DIGPRG(_NAME"-4") \
712 DIGPRG(_NAME"-5") \
713 DIGPRG(_NAME"-6") \
714 DIGPRG(_NAME"-7") \
715 DIGPRG(_NAME"-8") \
716 DIGPRG(_NAME"-9")
717
718 DIGPRGS("h0")
719 DIGPRGS("h1")
720 DIGPRGS("m0")
721 DIGPRGS("m1")
722 DIGPRGS("s0")
723 DIGPRGS("s1")
724#undef DIGPRG
725#undef DIGPRGS
726 }
727}
728
729group { name: "e/gadget/clock/analog";
730 images.image: "clock_base.png" COMP;
731 images.image: "inset_round_hilight.png" COMP;
732 images.image: "inset_round_shadow.png" COMP;
733 images.image: "inset_round_shading.png" COMP;
734 set { name: "tacho_hand_big";
735 image { image: "tacho_hand_big.png" COMP; size: 73 73 99999 99999; }
736 image { image: "tacho_hand_big2.png" COMP; size: 37 37 72 72; }
737 image { image: "tacho_hand_big3.png" COMP; size: 19 19 36 36; }
738 image { image: "tacho_hand_big4.png" COMP; size: 0 0 18 18; }
739 }
740 images.image: "tacho_hand_big_shadow.png" COMP;
741 images.image: "tacho_hand_small_shadow.png" COMP;
742 set { name: "tacho_hand_small_min";
743 image { image: "tacho_hand_small_min.png" COMP; size: 73 73 99999 99999; }
744 image { image: "tacho_hand_small_min2.png" COMP; size: 37 37 72 72; }
745 image { image: "tacho_hand_small_min3.png" COMP; size: 19 19 36 36; }
746 image { image: "tacho_hand_small_min4.png" COMP; size: 0 0 18 18; }
747 }
748 set { name: "knob";
749 image { image: "knob_sz_24.png" COMP; size: 31 31 32 32; }
750 image { image: "knob_sz_22.png" COMP; size: 29 29 30 30; }
751 image { image: "knob_sz_20.png" COMP; size: 27 27 28 28; }
752 image { image: "knob_sz_18.png" COMP; size: 25 25 26 26; }
753 image { image: "knob_sz_16.png" COMP; size: 23 23 24 24; }
754 image { image: "knob_sz_14.png" COMP; size: 21 21 22 22; }
755 image { image: "knob_sz_12.png" COMP; size: 19 19 20 20; }
756 image { image: "knob_sz_10.png" COMP; size: 17 17 18 18; }
757 image { image: "knob_sz_08.png" COMP; size: 15 15 16 16; }
758 image { image: "knob_sz_06.png" COMP; size: 13 13 14 14; }
759 image { image: "knob_sz_04.png" COMP; size: 0 0 12 12; }
760 }
761 min: 16 16;
762 max: 160 160;
763 script {
764 public do_seconds, tick_timer, timezone;
765 public message(Msg_Type:type, id, ...) {
766 if ((type == MSG_STRING) && (id == 1)) {
767 new str[128];
768
769 getsarg(2, str, sizeof(str));
770 set_str(timezone, str);
771 }
772 }
773
774 public clock_cb(val) {
775 new year, month, day, yearday, weekday, hour, minute;
776 new Float:second;
777 new v, dosec, tim;
778#ifdef EFL_VERSION_1_18
779 new tz[128];
780
781 get_str(timezone, tz, 128);
782 tzdate(tz, year, month, day, yearday, weekday, hour, minute, second);
783#else
784 date(year, month, day, yearday, weekday, hour, minute, second);
785#endif
786 dosec = get_int(do_seconds);
787 if (dosec) {
788 v = round(second);
789 tim = timer(1.0 - (second - v), "clock_cb", 1);
790
791 custom_state(PART:"seconds", "default", 0.0);
792 set_state_val(PART:"seconds", STATE_MAP_ROT_Z, (v * 360.0) / 60.0);
793 set_state(PART:"seconds", "custom", 0.0);
794
795 custom_state(PART:"seconds-sh", "default", 0.0);
796 set_state_val(PART:"seconds-sh", STATE_MAP_ROT_Z, (v * 360.0) / 60.0);
797 set_state(PART:"seconds-sh", "custom", 0.0);
798 }
799 else {
800 tim = timer(60.0 - (second), "clock_cb", 1);
801 }
802 set_int(tick_timer, tim);
803
804 custom_state(PART:"minutes", "default", 0.0);
805 set_state_val(PART:"minutes", STATE_MAP_ROT_Z, (float(minute) * 360.0) / 60.0);
806 set_state(PART:"minutes", "custom", 0.0);
807
808 custom_state(PART:"minutes-sh", "default", 0.0);
809 set_state_val(PART:"minutes-sh", STATE_MAP_ROT_Z, (float(minute) * 360.0) / 60.0);
810 set_state(PART:"minutes-sh", "custom", 0.0);
811
812 custom_state(PART:"hours", "default", 0.0);
813 set_state_val(PART:"hours", STATE_MAP_ROT_Z, ((float(hour) + (float(minute) / 60.0)) * 360.0) / 12.0);
814 set_state(PART:"hours", "custom", 0.0);
815
816 custom_state(PART:"hours-sh", "default", 0.0);
817 set_state_val(PART:"hours-sh", STATE_MAP_ROT_Z, ((float(hour) + (float(minute) / 60.0)) * 360.0) / 12.0);
818 set_state(PART:"hours-sh", "custom", 0.0);
819 }
820 }
821 parts {
822 part { name: "event"; type: RECT;
823 description { state: "default" 0.0;
824 color: 0 0 0 0;
825 }
826 }
827 part { name: "base-sh";
828 description { state: "default" 0.0;
829 rel1.to: "base";
830 rel1.offset: 0 -1;
831 rel2.to: "base";
832 rel2.offset: -1 -2;
833 image.normal: "inset_round_shadow.png";
834 }
835 }
836 part { name: "base-hi";
837 description { state: "default" 0.0;
838 rel1.to: "base";
839 rel1.offset: 0 1;
840 rel2.to: "base";
841 rel2.offset: -1 0;
842 image.normal: "inset_round_hilight.png";
843 }
844 }
845 part { name: "base";
846 description { state: "default" 0.0;
847 rel1.relative: (25/380) (25/380);
848 rel2.relative: (365/380) (365/380);
849 aspect: 1.0 1.0; aspect_preference: BOTH;
850 image.normal: "clock_base.png";
851 }
852 }
853 part { name: "seconds-sh"; mouse_events: 0;
854 description { state: "default" 0.0;
855 image.normal: "tacho_hand_big_shadow.png";
856 rel1.to: "hours-sh";
857 rel2.to: "hours-sh";
858 map {
859 on: 1;
860 rotation.center: "seconds-sh";
861 }
862 }
863 description { state: "hidden" 0.0;
864 inherit: "default" 0.0;
865 visible: 0;
866 }
867 }
868 part { name: "seconds"; mouse_events: 0;
869 description { state: "default" 0.0;
870 image.normal: "tacho_hand_big";
871 color: 255 0 0 255;
872 rel1.to: "base";
873 rel2.to: "base";
874 map {
875 on: 1;
876 rotation.center: "base";
877 }
878 }
879 description { state: "hidden" 0.0;
880 inherit: "default" 0.0;
881 visible: 0;
882 }
883 }
884 part { name: "minutes-sh"; mouse_events: 0;
885 description { state: "default" 0.0;
886 image.normal: "tacho_hand_big_shadow.png";
887 rel1.to: "hours-sh";
888 rel2.to: "hours-sh";
889 map {
890 on: 1;
891 rotation.center: "minutes-sh";
892 }
893 }
894 }
895 part { name: "minutes"; mouse_events: 0;
896 description { state: "default" 0.0000;
897 color: 255 255 255 255;
898 image.normal: "tacho_hand_big";
899 rel1.to: "base";
900 rel2.to: "base";
901 map {
902 on: 1;
903 rotation.center: "base";
904 }
905 }
906 }
907 part { name: "hours-sh"; mouse_events: 0;
908 description { state: "default" 0.0;
909 image.normal: "tacho_hand_small_shadow.png";
910 rel1.to: "hours";
911 rel1.relative: 0.0 (15/380);
912 rel1.offset: 0 1;
913 rel2.to: "hours";
914 rel2.relative: 1.0 (395/380);
915 rel2.offset: -1 0;
916 map {
917 on: 1;
918 rotation.center: "hours-sh";
919 }
920 }
921 }
922 part { name: "hours"; mouse_events: 0;
923 description { state: "default" 0.0;
924 image.normal: "tacho_hand_small_min";
925 color: 255 255 255 255;
926 rel1.to: "base";
927 rel2.to: "base";
928 map {
929 on: 1;
930 rotation.center: "base";
931 }
932 }
933 }
934 part { name: "over"; mouse_events: 0;
935 description { state: "default" 0.0;
936 rel1.to: "base";
937 rel2.to: "base";
938 image.normal: "inset_round_shading.png";
939 }
940 }
941 part { name: "knob"; type: SPACER;
942 description { state: "default" 0.0;
943 rel1.relative: (140/340) (140/340);
944 rel1.to: "base";
945 rel2.relative: (205/340) (205/340);
946 rel2.to: "base";
947 min: 4 4;
948 step: 2 2;
949 max: 24 24;
950 }
951 }
952 part { name: "knob2";
953 description { state: "default" 0.0;
954 rel1.offset: -4 -4;
955 rel1.to: "knob";
956 rel2.offset: 3 3;
957 rel2.to: "knob";
958 min: 12 12;
959 max: 32 32;
960 image.normal: "knob";
961 }
962 }
963 }
964 programs {
965 program {
966 signal: "load"; source: "";
967 script {
968 clock_cb(0);
969 }
970 }
971 program {
972 signal: "e,state,seconds,on"; source: "e";
973 action: STATE_SET "default" 0.0;
974 target: "seconds";
975 target: "seconds-sh";
976 after: "sec2";
977 }
978 program { name: "sec2";
979 script {
980 new tim;
981
982 set_int(do_seconds, 1);
983 tim = get_int(tick_timer);
984 if (tim) {
985 cancel_timer(tim);
986 set_int(tick_timer, 0);
987 }
988 clock_cb(0);
989 }
990 }
991 program {
992 signal: "e,state,seconds,off"; source: "e";
993 action: STATE_SET "hidden" 0.0;
994 target: "seconds";
995 target: "seconds-sh";
996 after: "sec3";
997 }
998 program { name: "sec3";
999 script {
1000 new tim;
1001
1002 set_int(do_seconds, 0);
1003 tim = get_int(tick_timer);
1004 if (tim) {
1005 cancel_timer(tim);
1006 set_int(tick_timer, 0);
1007 }
1008 clock_cb(0);
1009 }
1010 }
1011 }
1012}
1013
1014group { name: "e/gadget/clock/calendar/dayname";
1015 parts {
1016 part { name: "e.text.label"; type: TEXT; mouse_events: 0;
1017 effect: SHADOW BOTTOM;
1018 scale: 1;
1019 description { state: "default" 0.0;
1020 color: FN_COL_DISABLE;
1021 text { font: FN; size: 8;
1022 text: "WWe";
1023 min: 1 1;
1024 ellipsis: -1;
1025 align: 0.5 0.5;
1026 text_class: "module_small";
1027 }
1028 }
1029 description { state: "weekend" 0.0;
1030 inherit: "default" 0.0;
1031 color: 48 48 48 255;
1032 }
1033 }
1034 }
1035 programs {
1036 program {
1037 signal: "e,state,weekend"; source: "e";
1038 action: STATE_SET "weekend" 0.0;
1039 target: "e.text.label";
1040 }
1041 program {
1042 signal: "e,state,weekday"; source: "e";
1043 action: STATE_SET "default" 0.0;
1044 target: "e.text.label";
1045 }
1046 }
1047}
1048
1049group { name: "e/gadget/clock/calendar/day";
1050 script {
1051 public day_state = 0;
1052 evalstate() {
1053 new vv = get_int(day_state);
1054
1055 if (vv & 2)
1056 {
1057 set_state(PART:"e.text.label", "today", 0.0);
1058 set_state(PART:"label2", "today", 0.0);
1059 }
1060 else if (vv & 4)
1061 {
1062 set_state(PART:"e.text.label", "hidden", 0.0);
1063 set_state(PART:"label2", "default", 0.0);
1064 }
1065 else if (vv & 1)
1066 {
1067 set_state(PART:"e.text.label", "weekend", 0.0);
1068 set_state(PART:"label2", "default", 0.0);
1069 }
1070 else
1071 {
1072 set_state(PART:"e.text.label", "default", 0.0);
1073 set_state(PART:"label2", "default", 0.0);
1074 }
1075 }
1076 }
1077 parts {
1078 part { name: "e.text.label"; type: TEXT; mouse_events: 0;
1079 effect: SHADOW BOTTOM;
1080 scale: 1;
1081 description { state: "default" 0.0;
1082 color: FN_COL_DEFAULT;
1083 text { font: FN; size: 10;
1084 text: "00";
1085 min: 1 1;
1086 ellipsis: -1;
1087 align: 0.5 0.5;
1088 }
1089 }
1090 description { state: "today" 0.0;
1091 inherit: "default" 0.0;
1092 visible: 0;
1093 }
1094 description { state: "weekend" 0.0;
1095 inherit: "default" 0.0;
1096 color: FN_COL_MID_GREY;
1097 }
1098 description { state: "hidden" 0.0;
1099 inherit: "default" 0.0;
1100 color: FN_COL_DISABLE;
1101 }
1102 }
1103 part { name: "label2"; type: TEXT; mouse_events: 0;
1104 effect: GLOW;
1105 scale: 1;
1106 description { state: "default" 0.0;
1107 rel1.offset: -3 -3;
1108 rel1.to: "e.text.label";
1109 rel2.offset: 2 1;
1110 rel2.to: "e.text.label";
1111 color: FN_COL_HIGHLIGHT;
1112 text { font: FN; size: 10;
1113 text_source: "e.text.label";
1114 min: 1 1;
1115 ellipsis: -1;
1116 align: 0.5 0.5;
1117 }
1118 visible: 0;
1119 }
1120 description { state: "today" 0.0;
1121 inherit: "default" 0.0;
1122 visible: 1;
1123 }
1124 }
1125 }
1126 programs {
1127 program {
1128 signal: "e,state,weekend"; source: "e";
1129 script {
1130 new vv = get_int(day_state);
1131 set_int(day_state, vv | 1);
1132 evalstate();
1133 }
1134 }
1135 program {
1136 signal: "e,state,weekday"; source: "e";
1137 script {
1138 new vv = get_int(day_state);
1139 set_int(day_state, vv & (~1));
1140 evalstate();
1141 }
1142 }
1143
1144 program {
1145 signal: "e,state,today"; source: "e";
1146 script {
1147 new vv = get_int(day_state);
1148 set_int(day_state, vv | 2);
1149 evalstate();
1150 }
1151 }
1152 program {
1153 signal: "e,state,someday"; source: "e";
1154 script {
1155 new vv = get_int(day_state);
1156 set_int(day_state, vv & (~2));
1157 evalstate();
1158 }
1159 }
1160
1161 program {
1162 signal: "e,state,hidden"; source: "e";
1163 script {
1164 new vv = get_int(day_state);
1165 set_int(day_state, vv | 4);
1166 evalstate();
1167 }
1168 }
1169 program {
1170 signal: "e,state,visible"; source: "e";
1171 script {
1172 new vv = get_int(day_state);
1173 set_int(day_state, vv & (~4));
1174 evalstate();
1175 }
1176 }
1177 }
1178}
1179
1180group { name: "e/gadget/clock/calendar";
1181 images.image: "separator_horiz.png" COMP;
1182 images.image: "sym_left_light_normal.png" COMP;
1183 images.image: "sym_right_light_normal.png" COMP;
1184 images.image: "sym_left_glow_normal.png" COMP;
1185 images.image: "sym_right_glow_normal.png" COMP;
1186 parts {
1187 part { name: "e.text.month"; type: TEXT;
1188 effect: SHADOW BOTTOM;
1189 mouse_events: 1;
1190 scale: 1;
1191 description { state: "default" 0.0;
1192 fixed: 0 1;
1193 align: 0.0 0.0;
1194 rel1.to_x: "prev";
1195 rel1.relative: 1.0 0.0;
1196 rel2.relative: 1.0 0.0;
1197 color: FN_COL_DEFAULT;
1198 text { font: FNBD; size: 10;
1199 text: "000000000000";
1200 align: 0.0 0.5;
1201 min: 0 1;
1202 text_class: "module_normal";
1203 }
1204 }
1205 }
1206 part { name: "e.text.year"; type: TEXT; mouse_events: 0;
1207 effect: SHADOW BOTTOM;
1208 scale: 1;
1209 description { state: "default" 0.0;
1210 fixed: 0 1;
1211 align: 1.0 0.0;
1212 rel1.relative: 0.0 0.0;
1213 rel2.to_x: "next";
1214 rel2.relative: 0.0 0.0;
1215 color: FN_COL_DEFAULT;
1216 text { font: FNBD; size: 10;
1217 text: "0000";
1218 align: 1.0 0.5;
1219 min: 0 1;
1220 text_class: "module_normal";
1221 }
1222 }
1223 }
1224 part { name: "previm"; mouse_events: 0;
1225 description { state: "default" 0.0;
1226 min: 15 15;
1227 max: 15 15;
1228 rel1.to: "prev";
1229 rel2.to: "prev";
1230 image.normal: "sym_left_light_normal.png";
1231 }
1232 description { state: "pressed" 0.0;
1233 inherit: "default" 0.0;
1234 image.normal: "sym_left_glow_normal.png";
1235 }
1236 }
1237 part { name: "prev"; type: RECT;
1238 description { state: "default" 0.0;
1239 align: 0.0 0.5;
1240 color: 0 0 0 0;
1241 aspect: 1.0 1.0; aspect_preference: VERTICAL;
1242 rel1.to_y: "e.text.month";
1243 rel1.relative: 0.0 0.0;
1244 rel2.to_y: "e.text.month";
1245 rel2.relative: 0.0 1.0;
1246 }
1247 program { name: "prev_down";
1248 signal: "mouse,down,1*"; source: "prev";
1249 action: STATE_SET "pressed" 0.0;
1250 target: "previm";
1251 }
1252 program { name: "prev_up";
1253 signal: "mouse,up,1"; source: "prev";
1254 action: STATE_SET "default" 0.0;
1255 target: "previm";
1256 }
1257 program { name: "prev_clicked";
1258 signal: "mouse,clicked,1*"; source: "prev";
1259 action: SIGNAL_EMIT "e,action,prev" "";
1260 }
1261 }
1262 part { name: "nextim"; mouse_events: 0;
1263 description { state: "default" 0.0;
1264 min: 15 15;
1265 max: 15 15;
1266 rel1.to: "next";
1267 rel2.to: "next";
1268 image.normal: "sym_right_light_normal.png";
1269 }
1270 description { state: "pressed" 0.0;
1271 inherit: "default" 0.0;
1272 image.normal: "sym_right_glow_normal.png";
1273 }
1274 }
1275 part { name: "next"; type: RECT;
1276 description { state: "default" 0.0;
1277 align: 1.0 0.5;
1278 color: 0 0 0 0;
1279 aspect: 1.0 1.0; aspect_preference: VERTICAL;
1280 rel1.to_y: "e.text.month";
1281 rel1.relative: 1.0 0.0;
1282 rel2.to_y: "e.text.month";
1283 rel2.relative: 1.0 1.0;
1284 }
1285 program { name: "next_down";
1286 signal: "mouse,down,1"; source: "next";
1287 action: STATE_SET "pressed" 0.0;
1288 target: "nextim";
1289 }
1290 program { name: "next_up";
1291 signal: "mouse,up,1"; source: "next";
1292 action: STATE_SET "default" 0.0;
1293 target: "nextim";
1294 }
1295 program { name: "next_clicked";
1296 signal: "mouse,clicked,1"; source: "next";
1297 action: SIGNAL_EMIT "e,action,next" "";
1298 }
1299 }
1300 part { name: "sel";
1301 description { state: "default" 0.0;
1302 image.normal: "separator_horiz.png";
1303 rel1.relative: 0.0 1.0;
1304 rel1.offset: 0 0;
1305 rel1.to: "e.table.daynames";
1306 rel2.offset: -1 1;
1307 rel2.to: "e.table.daynames";
1308 min: 0 2;
1309 fill.smooth: 0;
1310 }
1311 }
1312
1313 part { name: "e.table.daynames"; type: TABLE;
1314 description { state: "default" 0.0;
1315 fixed: 0 1;
1316 align: 0.5 0.0;
1317 rel1.to_y: "e.text.month";
1318 rel1.relative: 0.0 1.0;
1319 rel1.offset: 2 2;
1320 rel2.to_y: "e.text.month";
1321 rel2.relative: 1.0 1.0;
1322 rel2.offset: -3 2;
1323 step: 7 1;
1324 table { homogeneous: TABLE;
1325 padding: 1 1;
1326 align: 0.5 0.5;
1327 min: 1 1;
1328 }
1329 }
1330 table {
1331 items {
1332#define D(x) \
1333item { \
1334 position: x 0; \
1335 span: 1 1; \
1336 source: "e/gadget/clock/calendar/dayname"; \
1337 weight: 1.0 1.0; \
1338 align: -1.0 -1.0; \
1339}
1340 D(0) D(1) D(2) D(3) D(4) D(5) D(6)
1341#undef D
1342 }
1343 }
1344 }
1345 part { name: "e.table.days"; type: TABLE;
1346 description { state: "default" 0.0;
1347 rel1.to_y: "e.table.daynames";
1348 rel1.relative: 0.0 1.0;
1349 rel1.offset: 2 2;
1350 rel2.offset: -3 -3;
1351 step: 7 5;
1352 table { homogeneous: TABLE;
1353 padding: 1 1;
1354 align: 0.5 0.5;
1355 min: 1 1;
1356 }
1357 }
1358 table {
1359 items {
1360#define D(x, y) \
1361item { \
1362 position: x y; \
1363 span: 1 1; \
1364 source: "e/gadget/clock/calendar/day"; \
1365 weight: 1.0 1.0; \
1366 align: -1.0 -1.0; \
1367}
1368 D(0, 0) D(1, 0) D(2, 0) D(3, 0) D(4, 0) D(5, 0) D(6, 0)
1369 D(0, 1) D(1, 1) D(2, 1) D(3, 1) D(4, 1) D(5, 1) D(6, 1)
1370 D(0, 2) D(1, 2) D(2, 2) D(3, 2) D(4, 2) D(5, 2) D(6, 2)
1371 D(0, 3) D(1, 3) D(2, 3) D(3, 3) D(4, 3) D(5, 3) D(6, 3)
1372 D(0, 4) D(1, 4) D(2, 4) D(3, 4) D(4, 4) D(5, 4) D(6, 4)
1373 D(0, 5) D(1, 5) D(2, 5) D(3, 5) D(4, 5) D(5, 5) D(6, 5)
1374#undef D
1375 }
1376 }
1377 }
1378 }
1379}
diff --git a/data/themes/img/digit_0.png b/data/themes/img/digit_0.png
new file mode 100644
index 000000000..c4c8d093d
--- /dev/null
+++ b/data/themes/img/digit_0.png
Binary files differ
diff --git a/data/themes/img/digit_1.png b/data/themes/img/digit_1.png
new file mode 100644
index 000000000..d79d752b5
--- /dev/null
+++ b/data/themes/img/digit_1.png
Binary files differ
diff --git a/data/themes/img/digit_2.png b/data/themes/img/digit_2.png
new file mode 100644
index 000000000..2e022b2a4
--- /dev/null
+++ b/data/themes/img/digit_2.png
Binary files differ
diff --git a/data/themes/img/digit_3.png b/data/themes/img/digit_3.png
new file mode 100644
index 000000000..6585e721e
--- /dev/null
+++ b/data/themes/img/digit_3.png
Binary files differ
diff --git a/data/themes/img/digit_4.png b/data/themes/img/digit_4.png
new file mode 100644
index 000000000..8a01e4f90
--- /dev/null
+++ b/data/themes/img/digit_4.png
Binary files differ
diff --git a/data/themes/img/digit_5.png b/data/themes/img/digit_5.png
new file mode 100644
index 000000000..254d87122
--- /dev/null
+++ b/data/themes/img/digit_5.png
Binary files differ
diff --git a/data/themes/img/digit_6.png b/data/themes/img/digit_6.png
new file mode 100644
index 000000000..82b7cb4f3
--- /dev/null
+++ b/data/themes/img/digit_6.png
Binary files differ
diff --git a/data/themes/img/digit_7.png b/data/themes/img/digit_7.png
new file mode 100644
index 000000000..90570ee55
--- /dev/null
+++ b/data/themes/img/digit_7.png
Binary files differ
diff --git a/data/themes/img/digit_8.png b/data/themes/img/digit_8.png
new file mode 100644
index 000000000..ff08c92bd
--- /dev/null
+++ b/data/themes/img/digit_8.png
Binary files differ
diff --git a/data/themes/img/digit_9.png b/data/themes/img/digit_9.png
new file mode 100644
index 000000000..b5aceb205
--- /dev/null
+++ b/data/themes/img/digit_9.png
Binary files differ
diff --git a/data/themes/img/digit_am.png b/data/themes/img/digit_am.png
new file mode 100644
index 000000000..fad1bd9f7
--- /dev/null
+++ b/data/themes/img/digit_am.png
Binary files differ
diff --git a/data/themes/img/digit_na.png b/data/themes/img/digit_na.png
new file mode 100644
index 000000000..5b9fc59e2
--- /dev/null
+++ b/data/themes/img/digit_na.png
Binary files differ
diff --git a/data/themes/img/digit_nm.png b/data/themes/img/digit_nm.png
new file mode 100644
index 000000000..8b81f23a0
--- /dev/null
+++ b/data/themes/img/digit_nm.png
Binary files differ
diff --git a/data/themes/img/digit_pm.png b/data/themes/img/digit_pm.png
new file mode 100644
index 000000000..da7c8fdfb
--- /dev/null
+++ b/data/themes/img/digit_pm.png
Binary files differ