discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=f65d5d6b3f784f14583e126a9ecf48da819067f8

commit f65d5d6b3f784f14583e126a9ecf48da819067f8
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Thu Mar 3 09:52:38 2016 -0500

    theme: add new time gadget themes
---
 data/themes/Makefile.am      |   15 +
 data/themes/default.edc      |    1 +
 data/themes/edc/time.edc     | 1379 ++++++++++++++++++++++++++++++++++++++++++
 data/themes/img/digit_0.png  |  Bin 0 -> 2526 bytes
 data/themes/img/digit_1.png  |  Bin 0 -> 577 bytes
 data/themes/img/digit_2.png  |  Bin 0 -> 2443 bytes
 data/themes/img/digit_3.png  |  Bin 0 -> 2236 bytes
 data/themes/img/digit_4.png  |  Bin 0 -> 1563 bytes
 data/themes/img/digit_5.png  |  Bin 0 -> 2335 bytes
 data/themes/img/digit_6.png  |  Bin 0 -> 2588 bytes
 data/themes/img/digit_7.png  |  Bin 0 -> 1542 bytes
 data/themes/img/digit_8.png  |  Bin 0 -> 2669 bytes
 data/themes/img/digit_9.png  |  Bin 0 -> 2663 bytes
 data/themes/img/digit_am.png |  Bin 0 -> 1347 bytes
 data/themes/img/digit_na.png |  Bin 0 -> 2014 bytes
 data/themes/img/digit_nm.png |  Bin 0 -> 533 bytes
 data/themes/img/digit_pm.png |  Bin 0 -> 1224 bytes
 17 files changed, 1395 insertions(+)

diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am
index c026ac4..3191256 100644
--- a/data/themes/Makefile.am
+++ b/data/themes/Makefile.am
@@ -86,6 +86,7 @@ edc/systray.edc \
 edc/tasks.edc \
 edc/temperature.edc \
 edc/textblock.edc \
+edc/time.edc \
 edc/toolbar.edc \
 edc/transitions.edc \
 edc/wallpaper.edc \
@@ -237,6 +238,20 @@ img/day_single_normal.png \
 img/day_single_press.png \
 img/day_single_selected.png \
 img/diagonal_stripes.png \
+img/digit_0.png \
+img/digit_1.png \
+img/digit_2.png \
+img/digit_3.png \
+img/digit_4.png \
+img/digit_5.png \
+img/digit_6.png \
+img/digit_7.png \
+img/digit_8.png \
+img/digit_9.png \
+img/digit_am.png \
+img/digit_na.png \
+img/digit_nm.png \
+img/digit_pm.png \
 img/O/digit_0.png \
 img/O/digit_1.png \
 img/O/digit_2.png \
diff --git a/data/themes/default.edc b/data/themes/default.edc
index bab92ba..2ba757d 100644
--- a/data/themes/default.edc
+++ b/data/themes/default.edc
@@ -143,6 +143,7 @@ collections {
 #include "edc/bluez4.edc"
 #include "edc/packagekit.edc"
 #include "edc/wireless.edc"
+#include "edc/time.edc"
 
 // icons
 #include "edc/icons.edc"
diff --git a/data/themes/edc/time.edc b/data/themes/edc/time.edc
new file mode 100644
index 0000000..31852f3
--- /dev/null
+++ b/data/themes/edc/time.edc
@@ -0,0 +1,1379 @@
+color_classes {
+    color_class { "e.clock_color_fg";
+       color: FN_COL_HIGHLIGHT;
+       desc: "Foreground color of the digital clock";
+    }
+    color_class { "e.clock_color_bg";
+       color: 31 31 31 255;
+       desc: "Backgound color of the digital clock";
+    }
+}
+
+group { "e/gadget/clock/digital/advanced"; nomouse;
+   script {
+      public message(Msg_Type:type, id, ...) {
+#define CUSTOM(NAME) \
+                custom_state(PART:NAME, "default", 0.0); \
+                set_state_val(PART:NAME, STATE_COLOR_CLASS, str); \
+                set_state(PART:NAME, "custom", 0.0)
+
+         if ((type == MSG_STRING_INT) && (id == 3)) {
+            new str[128];
+            new on;
+
+            getsarg(2, str, sizeof(str));
+            on = getarg(3);
+            if (on) {
+                CUSTOM("clip");
+            } else {
+                set_state(PART:"clip", "default", 0.0);
+            }
+#undef CUSTOM
+         }
+      }
+   }
+   parts {
+      rect { "clip";
+         desc {
+             color_class: "e.clock_color_fg";
+         }
+      }
+      text { "e.text"; scale; clip: "clip";
+          effect: GLOW;
+          desc { "default";
+              align: 0.5 0;
+              rel1.offset: 2 0;
+              rel2.relative: 1 0;
+              rel2.offset: -3 -1;
+              color: FN_COL_DEFAULT_BASIC;
+              text {
+                  font: FN;
+                  size: 12;
+                  min: 1 1;
+                  text_class: "module_normal";
+                  ellipsis: -1;
+              }
+          }
+          desc { "only"; inherit;
+             align: 0.5 0.5;
+             rel2.relative: 1 1;
+             text.fit: 0 1;
+             text.font: FNBD;
+             text.text_class: "module_large";
+          }
+      }
+      text { "e.text.sub"; scale; clip: "clip";
+          effect: GLOW;
+          desc { "default";
+              align: 0.5 0;
+              rel1.relative: 0 1;
+              rel1.offset: 2 0;
+              rel1.to_y: "e.text";
+              rel2.offset: -3 -1;
+              color: FN_COL_DEFAULT_BASIC;
+              text {
+                  font: FN;
+                  size: 9;
+                  min: 1 1;
+                  text_class: "module_small";
+                  ellipsis: -1;
+              }
+          }
+          desc { "only"; hid;
+             max: 0 0;
+          }
+      }
+      spacer { "e.sizer";
+         desc {
+            rel1.to: "e.text";
+            rel2.to: "e.text.sub";
+         }
+         desc { "only";
+            rel.to: "e.text";
+         }
+      }
+      rect { "eventarea"; mouse;
+         desc { color: 0 0 0 0; }
+      }
+      program { signal: "e,state,date,on"; source: "e";
+         action: STATE_SET "default";
+         targets: "e.text" "e.text.sub" "e.sizer";
+      }
+      program { signal: "e,state,date,off"; source: "e";
+         action: STATE_SET "only";
+         targets: "e.text" "e.text.sub" "e.sizer";
+      }
+   }
+}
+group { name: "e/gadget/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, timezone;
+
+      public message(Msg_Type:type, id, ...) {
+         if ((type == MSG_STRING) && (id == 1)) {
+             new str[128];
+
+             getsarg(2, str, sizeof(str));
+             set_str(timezone, str);
+             reset();
+         } else if ((type == MSG_STRING_INT) && (id == 2)) {
+            new str[128];
+            new on;
+
+            getsarg(2, str, sizeof(str));
+            on = getarg(3);
+            if (on) {
+#define CUSTOM(NAME) \
+                custom_state(PART:NAME, "default", 0.0); \
+                set_state_val(PART:NAME, STATE_COLOR_CLASS, str); \
+                set_state(PART:NAME, "custom", 0.0)
+
+                CUSTOM("bg_color");
+                CUSTOM("bg_color_secclip");
+                CUSTOM("bg_color_ampmclip");
+            } else {
+                set_state(PART:"bg_color", "default", 0.0);
+                set_state(PART:"bg_color_secclip", "default", 0.0);
+                set_state(PART:"bg_color_ampmclip", "default", 0.0);
+            }
+         } else if ((type == MSG_STRING_INT) && (id == 3)) {
+            new str[128];
+            new on;
+
+            getsarg(2, str, sizeof(str));
+            on = getarg(3);
+            if (on) {
+                CUSTOM("fg_color");
+                CUSTOM("fg_color_secclip");
+                CUSTOM("fg_color_ampmclip");
+            } else {
+                set_state(PART:"fg_color", "default", 0.0);
+                set_state(PART:"fg_color_secclip", "default", 0.0);
+                set_state(PART:"fg_color_ampmclip", "default", 0.0);
+            }
+#undef CUSTOM
+         }
+      }
+      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;
+#ifdef EFL_VERSION_1_18
+         new tz[128];
+
+         get_str(timezone, tz, 128);
+         tzdate(tz, year, month, day, yearday, weekday, hour, minute, second);
+#else
+         date(year, month, day, yearday, weekday, hour, minute, second);
+#endif         
+         dosec = get_int(do_seconds);
+         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 {
+      rect { "fg_color";
+         desc {
+            color_class: "e.clock_color_fg";
+         }
+      }
+      rect { "bg_color";
+         desc {
+            color_class: "e.clock_color_bg";
+         }
+      }
+      rect { "fg_color_secclip"; clip: "secclip";
+         desc {
+            color_class: "e.clock_color_fg";
+         }
+      }
+      rect { "bg_color_secclip"; clip: "secclip";
+         desc {
+            color_class: "e.clock_color_bg";
+         }
+      }
+      rect { "fg_color_ampmclip"; clip: "ampmclip";
+         desc {
+            color_class: "e.clock_color_fg";
+         }
+      }
+      rect { "bg_color_ampmclip"; clip: "ampmclip";
+         desc {
+            color_class: "e.clock_color_bg";
+         }
+      }
+      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.sub";
+         }
+      }
+      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; clip: "fg_color"; \
+      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; clip: "bg_color"; \
+      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", "bg_color_secclip", "s0-0", "digit_na.png")
+      BASEC("sb", "bg_color_secclip", "s1-0", "digit_na.png")
+      BASEC("aa", "bg_color_ampmclip", "ap", "digit_nm.png")
+        
+      DIGIT ("h0", "hours1")
+      DIGIT ("h1", "hours2")
+      DIGIT ("m0", "mins1")
+      DIGIT ("m1", "mins2")
+      DIGITC("s0", "secs1", "fg_color_secclip")
+      DIGITC("s1", "secs2", "fg_color_secclip")
+      TAG("ap", "ampm", "fg_color_ampmclip")
+#undef TAG
+#undef TAG
+#undef ELEM
+#undef ELEMC
+#undef BASE
+#undef BASEC
+#undef DIGIT
+#undef DIGITC
+
+       part { name: "e.text.sub"; type: TEXT;
+          effect: GLOW;
+          scale: 1;
+          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: FN_COL_HIGHLIGHT;
+             text { font: FN; size: 8;
+                text_class: "module_small";
+                align: 0.5 0.5;
+                min: 0 1;
+             }
+             fixed: 0 1;
+             visible: 0;
+          }
+          description { state: "date" 0.0;
+             inherit: "default" 0.0;
+             visible: 1;
+             fixed: 1 1;
+             text.min: 1 1;
+             text.ellipsis: -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);
+            set_state(PART:"e.text.sub", "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);
+            set_state(PART:"e.text.sub", "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/gadget/clock/analog";
+   images.image: "clock_base.png" COMP;
+   images.image: "inset_round_hilight.png" COMP;
+   images.image: "inset_round_shadow.png" COMP;
+   images.image: "inset_round_shading.png" COMP;
+   set { name: "tacho_hand_big";
+      image { image: "tacho_hand_big.png" COMP; size: 73 73 99999 99999; }
+      image { image: "tacho_hand_big2.png" COMP; size: 37 37 72 72; }
+      image { image: "tacho_hand_big3.png" COMP; size: 19 19 36 36; }
+      image { image: "tacho_hand_big4.png" COMP; size: 0 0 18 18; }
+   }
+   images.image: "tacho_hand_big_shadow.png" COMP;
+   images.image: "tacho_hand_small_shadow.png" COMP;
+   set { name: "tacho_hand_small_min";
+      image { image: "tacho_hand_small_min.png" COMP; size: 73 73 99999 99999; 
}
+      image { image: "tacho_hand_small_min2.png" COMP; size: 37 37 72 72; }
+      image { image: "tacho_hand_small_min3.png" COMP; size: 19 19 36 36; }
+      image { image: "tacho_hand_small_min4.png" COMP; size: 0 0 18 18; }
+   }
+   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, timezone;
+      public message(Msg_Type:type, id, ...) {
+         if ((type == MSG_STRING) && (id == 1)) {
+             new str[128];
+
+             getsarg(2, str, sizeof(str));
+             set_str(timezone, str);
+         }
+      }
+      
+         public clock_cb(val) {
+            new year, month, day, yearday, weekday, hour, minute;
+            new Float:second;
+            new v, dosec, tim;
+#ifdef EFL_VERSION_1_18
+            new tz[128];
+
+            get_str(timezone, tz, 128);
+            tzdate(tz, year, month, day, yearday, weekday, hour, minute, 
second);
+#else
+            date(year, month, day, yearday, weekday, hour, minute, second);
+#endif
+            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-sh";
+         description { state: "default" 0.0;
+            rel1.to: "base";
+            rel1.offset: 0 -1;
+            rel2.to: "base";
+            rel2.offset: -1 -2;
+            image.normal: "inset_round_shadow.png";
+         }
+      }
+      part { name: "base-hi";
+         description { state: "default" 0.0;
+            rel1.to: "base";
+            rel1.offset: 0 1;
+            rel2.to: "base";
+            rel2.offset: -1 0;
+            image.normal: "inset_round_hilight.png";
+         }
+      }
+      part { name: "base";
+         description { state: "default" 0.0;
+            rel1.relative: (25/380) (25/380);
+            rel2.relative: (365/380) (365/380);
+            aspect: 1.0 1.0; aspect_preference: BOTH;
+            image.normal: "clock_base.png";
+         }
+      }
+      part { name: "seconds-sh"; mouse_events: 0;
+         description { state: "default" 0.0;
+            image.normal: "tacho_hand_big_shadow.png";
+            rel1.to: "hours-sh";
+            rel2.to: "hours-sh";
+            map {
+               on: 1;
+               rotation.center: "seconds-sh";
+            }
+         }
+         description { state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "seconds"; mouse_events: 0;
+         description { state: "default" 0.0;
+            image.normal: "tacho_hand_big";
+            color: 255 0 0 255;
+            rel1.to: "base";
+            rel2.to: "base";
+            map {
+               on: 1;
+               rotation.center: "base";
+            }
+         }
+         description { state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            visible: 0;
+         }
+      }
+      part { name: "minutes-sh"; mouse_events: 0;
+         description { state: "default" 0.0;
+            image.normal: "tacho_hand_big_shadow.png";
+            rel1.to: "hours-sh";
+            rel2.to: "hours-sh";
+            map {
+               on: 1;
+               rotation.center: "minutes-sh";
+            }
+         }
+      }
+      part { name: "minutes"; mouse_events: 0;
+         description { state: "default" 0.0000;
+            color: 255 255 255 255;
+            image.normal: "tacho_hand_big";
+            rel1.to: "base";
+            rel2.to: "base";
+            map {
+               on: 1;
+               rotation.center: "base";
+            }
+         }
+      }
+      part { name: "hours-sh"; mouse_events: 0;
+         description { state: "default" 0.0;
+            image.normal: "tacho_hand_small_shadow.png";
+            rel1.to: "hours";
+            rel1.relative: 0.0 (15/380);
+            rel1.offset: 0 1;
+            rel2.to: "hours";
+            rel2.relative: 1.0 (395/380);
+            rel2.offset: -1 0;
+            map {
+               on: 1;
+               rotation.center: "hours-sh";
+            }
+         }
+      }
+      part { name: "hours"; mouse_events: 0;
+         description { state: "default" 0.0;
+            image.normal: "tacho_hand_small_min";
+            color: 255 255 255 255;
+            rel1.to: "base";
+            rel2.to: "base";
+            map {
+               on: 1;
+               rotation.center: "base";
+            }
+         }
+      }
+      part { name: "over"; mouse_events: 0;
+         description { state: "default" 0.0;
+            rel1.to: "base";
+            rel2.to: "base";
+            image.normal: "inset_round_shading.png";
+         }
+      }
+      part { name: "knob"; type: SPACER;
+         description { state: "default" 0.0;
+            rel1.relative: (140/340) (140/340);
+            rel1.to: "base";
+            rel2.relative: (205/340) (205/340);
+            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/gadget/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: FN_COL_DISABLE;
+            text { font: FN; size: 8;
+               text: "WWe";
+               min: 1 1;
+               ellipsis: -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/gadget/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: FN_COL_DEFAULT;
+            text { font: FN; size: 10;
+               text: "00";
+               min: 1 1;
+               ellipsis: -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: FN_COL_MID_GREY;
+         }
+         description { state: "hidden" 0.0;
+            inherit: "default" 0.0;
+            color: FN_COL_DISABLE;
+         }
+      }
+      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: FN_COL_HIGHLIGHT;
+            text { font: FN; size: 10;
+               text_source: "e.text.label";
+               min: 1 1;
+               ellipsis: -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/gadget/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: FN_COL_DEFAULT;
+            text { font: FNBD; 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: FN_COL_DEFAULT;
+            text { font: FNBD; 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/gadget/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/gadget/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
+            }
+         }
+      }
+   }
+}
diff --git a/data/themes/img/digit_0.png b/data/themes/img/digit_0.png
new file mode 100644
index 0000000..c4c8d09
Binary files /dev/null and b/data/themes/img/digit_0.png differ
diff --git a/data/themes/img/digit_1.png b/data/themes/img/digit_1.png
new file mode 100644
index 0000000..d79d752
Binary files /dev/null and b/data/themes/img/digit_1.png differ
diff --git a/data/themes/img/digit_2.png b/data/themes/img/digit_2.png
new file mode 100644
index 0000000..2e022b2
Binary files /dev/null and b/data/themes/img/digit_2.png differ
diff --git a/data/themes/img/digit_3.png b/data/themes/img/digit_3.png
new file mode 100644
index 0000000..6585e72
Binary files /dev/null and b/data/themes/img/digit_3.png differ
diff --git a/data/themes/img/digit_4.png b/data/themes/img/digit_4.png
new file mode 100644
index 0000000..8a01e4f
Binary files /dev/null and b/data/themes/img/digit_4.png differ
diff --git a/data/themes/img/digit_5.png b/data/themes/img/digit_5.png
new file mode 100644
index 0000000..254d871
Binary files /dev/null and b/data/themes/img/digit_5.png differ
diff --git a/data/themes/img/digit_6.png b/data/themes/img/digit_6.png
new file mode 100644
index 0000000..82b7cb4
Binary files /dev/null and b/data/themes/img/digit_6.png differ
diff --git a/data/themes/img/digit_7.png b/data/themes/img/digit_7.png
new file mode 100644
index 0000000..90570ee
Binary files /dev/null and b/data/themes/img/digit_7.png differ
diff --git a/data/themes/img/digit_8.png b/data/themes/img/digit_8.png
new file mode 100644
index 0000000..ff08c92
Binary files /dev/null and b/data/themes/img/digit_8.png differ
diff --git a/data/themes/img/digit_9.png b/data/themes/img/digit_9.png
new file mode 100644
index 0000000..b5aceb2
Binary files /dev/null and b/data/themes/img/digit_9.png differ
diff --git a/data/themes/img/digit_am.png b/data/themes/img/digit_am.png
new file mode 100644
index 0000000..fad1bd9
Binary files /dev/null and b/data/themes/img/digit_am.png differ
diff --git a/data/themes/img/digit_na.png b/data/themes/img/digit_na.png
new file mode 100644
index 0000000..5b9fc59
Binary files /dev/null and b/data/themes/img/digit_na.png differ
diff --git a/data/themes/img/digit_nm.png b/data/themes/img/digit_nm.png
new file mode 100644
index 0000000..8b81f23
Binary files /dev/null and b/data/themes/img/digit_nm.png differ
diff --git a/data/themes/img/digit_pm.png b/data/themes/img/digit_pm.png
new file mode 100644
index 0000000..da7c8fd
Binary files /dev/null and b/data/themes/img/digit_pm.png differ

-- 


Reply via email to