Add theme for common profile 97/109697/1
authorWonYoung Choi <wy80.choi@samsung.com>
Wed, 11 Jan 2017 08:00:48 +0000 (17:00 +0900)
committerWonYoung Choi <wy80.choi@samsung.com>
Wed, 11 Jan 2017 08:00:48 +0000 (17:00 +0900)
Change-Id: I04f995148e379e54f6669c6123ee77336b4490f6

15 files changed:
ElmSharp/theme/common/HD-inc.edc [new file with mode: 0644]
ElmSharp/theme/common/HD/images/Assist_Views/README [new file with mode: 0644]
ElmSharp/theme/common/HD/images/Navigation_elements/README [new file with mode: 0644]
ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_01.svg [new file with mode: 0755]
ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_02.svg [new file with mode: 0755]
ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_icon.svg [new file with mode: 0755]
ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_stroke.svg [new file with mode: 0755]
ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_white_bg.svg [new file with mode: 0755]
ElmSharp/theme/common/color_classes.edc [new file with mode: 0644]
ElmSharp/theme/common/elm-sharp-theme-mobile.edc [new file with mode: 0644]
ElmSharp/theme/common/widgets/colorselector.edc [new file with mode: 0644]
ElmSharp/theme/common/widgets/entry.edc [new file with mode: 0644]
ElmSharp/theme/common/widgets/label.edc [new file with mode: 0644]
ElmSharp/theme/common/widgets/layout.edc [new file with mode: 0644]
ElmSharp/theme/common/widgets/radio.edc [new file with mode: 0644]

diff --git a/ElmSharp/theme/common/HD-inc.edc b/ElmSharp/theme/common/HD-inc.edc
new file mode 100644 (file)
index 0000000..c3266bd
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+//****************************************************************************//
+// This file defines the width, height (not color!) for each widgets
+// We can define different INC file by Resolution (HD, qHD, WVGA, HVGA)
+//
+// ************* Naming Rule ************ //
+// {WIDGET}_{GROUP}_{PART}_{STATE}_{TYPE}
+//   WIDGET: NAVIFRAME, LIST, DATETIME, POPUP, etc.
+//   GROUP:  INDEX
+//   PART:   TEXT, ICON, BG, PADDING, DIVIDER, ICON, etc.
+//   STATE:  LEFT, RIGHT, TOP, BOTTOM, MIN, MAX,
+//   TYPE:   HEIGHT, WIDTH, SIZE
+// e.g. LIST_PADDING_LEFT_HEIGHT
+//****************************************************************************//
+
+#define BASE_SCALE_INC 2.6
+
+//****************************************************************************//
+// Colorselector
+//****************************************************************************//
+#define COLORSELECTOR_PALETTE_COLORPLANE_HEIGHT_INC 238
+#define COLORSELECTOR_PALETTE_COLORPLANE_WIDTH_INC 678
+#define COLORSELECTOR_PORTRAIT_HOR_PAD_COLORPLANE_INC "8"
+#define COLORSELECTOR_PORTRAIT_VER_PAD_COLORPLANE_INC "8"
+#define COLORSELECTOR_TOPBOTTOM_PAD_COLORPLANE_INC 24
+
+//****************************************************************************//
+// Entry
+//****************************************************************************//
+#define ENTRY_PREEDIT_BACKGROUND_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_HIGHLIGHT_BACKGROUND_COLOR_INC "#8bd8ff99"
+#define ENTRY_PREEDIT_TEXT_COLOR_INC "#FAFAFA"
+#define ENTRY_PREEDIT_UNDERLINE_COLOR_INC "#000000"
+#define ENTRY_PREEDIT_SUB1_COLOR_INC "#2EA8E1"
+#define ENTRY_PREEDIT_SUB2_COLOR_INC "#9962C3"
+#define ENTRY_PREEDIT_SUB3_COLOR_INC "#76DE37"
+#define ENTRY_PREEDIT_SUB4_COLOR_INC "#999999"
+#define ENTRY_LEFT_RIGHT_MARGIN_INC 5
+#define ENTRY_FONT_SIZE_INC 40
+#define ENTRY_CURSOR_SIZE_INC 3 0
+
+//****************************************************************************//
+// Label
+//****************************************************************************//
+#define LABEL_FONT_SIZE_INC 24
+
+//****************************************************************************//
+// RADIO
+//****************************************************************************//
+#define RADIO_DEFAULT_SIZE_INC 50 50
+#define RADIO_PAD_BEFORE_TEXT_INC 32 0
+
diff --git a/ElmSharp/theme/common/HD/images/Assist_Views/README b/ElmSharp/theme/common/HD/images/Assist_Views/README
new file mode 100644 (file)
index 0000000..1746a11
--- /dev/null
@@ -0,0 +1 @@
+This is reserved directory for mobile images. Please delete this file when any file is added.
diff --git a/ElmSharp/theme/common/HD/images/Navigation_elements/README b/ElmSharp/theme/common/HD/images/Navigation_elements/README
new file mode 100644 (file)
index 0000000..f267efa
--- /dev/null
@@ -0,0 +1 @@
+This is reserved space for mobile images. Please erase this file if any image is added.
diff --git a/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_01.svg b/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_01.svg
new file mode 100755 (executable)
index 0000000..a903fc2
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<path fill="#FFFFFF" d="M25.001,13c-6.617,0-12,5.383-12,12s5.383,12.001,12,12.001C31.617,37,37,31.616,37,24.999
+       S31.617,13,25.001,13z"/>
+</svg>
diff --git a/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_02.svg b/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_bg_02.svg
new file mode 100755 (executable)
index 0000000..4bf9638
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<path fill="#FFFFFF" d="M25.001,2c-12.703,0-23,10.297-23,22.999c0,12.704,10.297,23.001,23,23.001C37.703,48,48,37.703,48,24.999
+       C48,12.297,37.703,2,25.001,2z M25.001,41c-8.822,0-16-7.178-16-16.001c0-8.822,7.178-16,16-16c8.822,0,15.999,7.178,15.999,16
+       C41,33.822,33.823,41,25.001,41z"/>
+</svg>
diff --git a/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_icon.svg b/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_icon.svg
new file mode 100755 (executable)
index 0000000..3170adc
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<circle fill="#FFFFFF" cx="25.001" cy="25" r="23"/>
+</svg>
diff --git a/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_stroke.svg b/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_stroke.svg
new file mode 100755 (executable)
index 0000000..9a8fdab
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<path fill="#FFFFFF" d="M25.001,49c-13.233,0-24-10.767-24-24s10.767-24,24-24s24,10.767,24,24S38.234,49,25.001,49z M25.001,4
+       c-11.58,0-21,9.42-21,21c0,11.579,9.42,21,21,21c11.579,0,21-9.421,21-21C46.001,13.42,36.58,4,25.001,4z"/>
+</svg>
diff --git a/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_white_bg.svg b/ElmSharp/theme/common/HD/images/User_Input_Elements/core_radio_white_bg.svg
new file mode 100755 (executable)
index 0000000..054a779
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+        width="50px" height="50px" viewBox="0 0 50 50" enable-background="new 0 0 50 50" xml:space="preserve">
+<path fill="#FFFFFF" d="M25.001,49c-13.233,0-24-10.766-24-24.001C1.001,11.767,11.768,1,25.001,1C38.234,1,49,11.767,49,24.999
+       C49,38.234,38.234,49,25.001,49z"/>
+</svg>
diff --git a/ElmSharp/theme/common/color_classes.edc b/ElmSharp/theme/common/color_classes.edc
new file mode 100644 (file)
index 0000000..d10c93b
--- /dev/null
@@ -0,0 +1,101 @@
+color_classes {
+   /*
+    * Layout
+    */
+   color_class {
+      name: "layout/background/bg";
+      color: 0 0 0 0;
+   }
+   /*
+    * Colorselector
+    */
+   color_class {
+      name: "colorselector/default/bg";
+      color: 250 250 250 255;
+   }
+   /*
+    * Entry
+    */
+   color_class { "entry/default/text_edit";
+      color: 0 0 0 255;
+   }
+   color_class { "entry/default/text_edit_focused";
+      color: 0 0 0 255;
+   }
+   color_class { "entry/default/text_edit_disabled";
+      color: 0 0 0 110;
+   }
+   color_class { "entry/default/text_guide";
+      color: 0 0 0 145;
+   }
+   color_class { "entry/default/text_guide_focused";
+      color: 0 0 0 145;
+   }
+   color_class { "entry/default/text_guide_disabled";
+      color: 0 0 0 110;
+   }
+   color_class {
+      name: "entry/default/bg";
+      color: 0 0 0 0;
+   }
+   color_class { "entry/default/cursor";
+      color: 0 184 230 110;
+   }
+   /*
+    * Label
+    */
+   color_class {
+      name: "label/default/bg";
+      color: 0 0 0 0;
+   }
+   color_class {
+      name: "label/slide_long/bg";
+      color: 0 0 0 0;
+   }
+   color_class {
+      name: "label/slide_short/bg";
+      color: 0 0 0 0;
+   }
+   color_class {
+      name: "label/slide_roll/bg";
+      color: 0 0 0 0;
+   }
+   color_class {
+      name: "label/slide_bounce/bg";
+      color: 0 0 0 0;
+   }
+
+   /*
+    * Radio
+    */
+   color_class { "radio/default/icon";
+      color: 61 185 204 255;
+   }
+   color_class { "radio/default/bg";
+      color: 250 250 250 51;
+   }
+   color_class { "radio/default/icon_disabled";
+      color: 61 185 204 77;
+   }
+   color_class { "radio/default/bg_disabled";
+      color: 250 250 250 38;
+   }
+   color_class { "radio/default/bg_border_on";
+      color: 250 250 250 77;
+   }
+   color_class { "radio/default/bg_border_on_disabled";
+      color: 250 250 250 38;
+   }
+   color_class { "radio/default/stroke";
+      color: 61 185 204 255;
+   }
+   color_class { "radio/default/stroke_disabled";
+      color: 61 185 204 77;
+   }
+   color_class { "radio/default/bg_on";
+      color: 250 250 250 255;
+   }
+   color_class { "radio/default/bg_on_disabled";
+      color: 250 250 250 255;
+   }
+}
diff --git a/ElmSharp/theme/common/elm-sharp-theme-mobile.edc b/ElmSharp/theme/common/elm-sharp-theme-mobile.edc
new file mode 100644 (file)
index 0000000..d9baad4
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+// LICENSE NOTE:
+// This file (and only this one) is licenses under public-domain. The reason
+// is that this is meant to serve as a template for making your own themes and
+// Elementary's LGPL license is not intended to follow. The images used do come
+// under LGPL, but this file specifically for the structure of your theme is
+// public-domain. This means you can take, use, re-license and otherwise
+// have zero restrictions on using this file as a base for your theme.
+
+//****************************************************************************************//
+// This is theme body including all widget bodys
+// Define shared descriptions (e.g. sound samples, color classes, textblock styles) in here
+// Do not define size(width, height) in here!!!!
+//****************************************************************************************//
+
+// Include INC (e.g. HD-inc.edc, HVGA-inc.edc for each resolution) file
+#include "HD-inc.edc"
+
+externals {
+   external: "elm";
+}
+
+// BUILD_FIX: Add version to edc as 110.
+data.item: "version" "110";
+//
+
+collections {
+   base_scale: BASE_SCALE_INC;
+   plugins {
+      plugin {
+         name: "touch_sound";
+         source: "feedback";
+         param: "FEEDBACK_TYPE_SOUND FEEDBACK_PATTERN_TAP"; // FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP
+
+         /* 2014.06.11 updated from libsvi(feedback)
+          Above plugin will run below external function:
+          int feedback_play_type(feedback_type_e type, feedback_pattern_e pattern);
+
+          param1: feedback_type_e
+          FEEDBACK_TYPE_NONE = 0,
+          FEEDBACK_TYPE_SOUND = 1,
+          FEEDBACK_TYPE_VIBRATION,
+          FEEDBACK_TYPE_LED,
+          FEEDBACK_TYPE_END
+
+          * param2 enumeration:
+          FEEDBACK_PATTERN_TAP = 0,
+          FEEDBACK_PATTERN_SIP,
+          FEEDBACK_PATTERN_SIP_BACKSPACE,
+          FEEDBACK_PATTERN_SIP_FUNCTION,
+          FEEDBACK_PATTERN_SIP_FJKEY,
+          ...
+
+          * For more information please refer libsvi.
+          */
+      }
+   }
+
+#include "color_classes.edc"
+
+#include "widgets/colorselector.edc"
+#include "widgets/entry.edc"
+#include "widgets/label.edc"
+#include "widgets/radio.edc"
+#include "widgets/layout.edc"
+
+}
+
diff --git a/ElmSharp/theme/common/widgets/colorselector.edc b/ElmSharp/theme/common/widgets/colorselector.edc
new file mode 100644 (file)
index 0000000..4ac5725
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+group { "elm/colorselector/palette/colorplane";
+   alias: "elm/colorselector/palette/default";
+   data.item: "horizontal_pad" COLORSELECTOR_PORTRAIT_HOR_PAD_COLORPLANE_INC;
+   data.item: "vertical_pad" COLORSELECTOR_PORTRAIT_VER_PAD_COLORPLANE_INC;
+
+   parts {
+      spacer { "base";
+         scale;
+         desc { "default";
+            min: COLORSELECTOR_PALETTE_COLORPLANE_WIDTH_INC COLORSELECTOR_PALETTE_COLORPLANE_HEIGHT_INC;
+            max: -1 -1;
+         }
+      }
+      rect { "bg";
+         nomouse;
+         desc { "default";
+            rel.to: "base";
+            color_class: "colorselector/default/bg";
+         }
+      }
+      spacer { "padding_top";
+         scale;
+         desc { "default";
+            min: 0 COLORSELECTOR_TOPBOTTOM_PAD_COLORPLANE_INC;
+            fixed: 0 1;
+            rel1 {
+               relative: 0.0 0.0;
+               to: "base";
+            }
+            rel2 {
+               relative: 1.0 0.0;
+               to: "base";
+            }
+            align: 0.0 0.0;
+         }
+      }
+      swallow { "palette";
+         scale;
+         mouse;
+         desc { state: "default";
+            align: 0.5 0.0;
+            fixed: 0 1;
+            rel1 {
+               relative: 0.0 1.0;
+               to_y: "padding_top";
+            }
+            rel2.to_y: "padding_top";
+         }
+      }
+      spacer { "padding_palette";
+         scale;
+         desc { "default";
+            min: 0 COLORSELECTOR_TOPBOTTOM_PAD_COLORPLANE_INC;
+            fixed: 0 1;
+            rel1 {
+               relative: 0.0 1.0;
+               to: "palette";
+            }
+            rel2.to: "palette";
+            align: 0.0 0.0;
+         }
+      }
+   }
+}
+
diff --git a/ElmSharp/theme/common/widgets/entry.edc b/ElmSharp/theme/common/widgets/entry.edc
new file mode 100644 (file)
index 0000000..41f240f
--- /dev/null
@@ -0,0 +1,1077 @@
+/*
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define ENTRY_DEFAULT_TAGS \
+   tag:  "em" "+ font_style=Oblique"; \
+   tag:  "b" "+ font_weight=Bold"; \
+   tag:  "link" "+ color=#800 underline=on underline_color=#8008"; \
+   tag:  "hilight" "+ font_weight=Bold";
+
+#define ENTRY_SINGLELINE_TAGS \
+   tag:  "br" ""; \
+   tag:  "em" "+ font_style=Oblique"; \
+   tag:  "b" "+ font_weight=Bold"; \
+   tag:  "link" "+ color=#800 underline=on underline_color=#8008"; \
+   tag:  "hilight" "+ font_weight=Bold";
+
+#define ENTRY_PREEDIT_TAGS \
+   tag:  "preedit" "+ underline=on underline_color="ENTRY_PREEDIT_UNDERLINE_COLOR_INC; \
+   tag:  "preedit_sel" "+ backing=on backing_color="ENTRY_PREEDIT_BACKGROUND_COLOR_INC" color="ENTRY_PREEDIT_TEXT_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_TEXT_COLOR_INC; \
+   tag:  "preedit_highlight" "+ backing=on backing_color="ENTRY_PREEDIT_HIGHLIGHT_BACKGROUND_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_TEXT_COLOR_INC; \
+   tag:  "preedit_sub1" "+ backing=on backing_color="ENTRY_PREEDIT_SUB1_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_UNDERLINE_COLOR_INC; \
+   tag:  "preedit_sub2" "+ backing=on backing_color="ENTRY_PREEDIT_SUB2_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_UNDERLINE_COLOR_INC; \
+   tag:  "preedit_sub3" "+ backing=on backing_color="ENTRY_PREEDIT_SUB3_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_UNDERLINE_COLOR_INC; \
+   tag:  "preedit_sub4" "+ backing=on backing_color="ENTRY_PREEDIT_SUB4_COLOR_INC" underline=on underline_color="ENTRY_PREEDIT_UNDERLINE_COLOR_INC;
+
+styles {
+   style { "entry_textblock_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_edit";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_edit_focused";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_edit_disabled";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_guide_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_guide";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_textblock_guide_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_guide_focused";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_textblock_guide_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=mixed text_class=entry color_class=entry/default/text_guide_disabled";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_textblock_char_wrap_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_edit";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_char_wrap_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_edit_focused";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_char_wrap_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_edit_disabled";
+      ENTRY_DEFAULT_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_textblock_char_wrap_guide_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_guide";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_textblock_char_wrap_guide_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_guide_focused";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_textblock_char_wrap_guide_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=char text_class=entry color_class=entry/default/text_guide_disabled";
+      ENTRY_DEFAULT_TAGS
+   }
+   style { "entry_single_textblock_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_edit";
+      ENTRY_SINGLELINE_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_single_textblock_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_edit_focused";
+      ENTRY_SINGLELINE_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_single_textblock_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_edit_disabled";
+      ENTRY_SINGLELINE_TAGS
+      ENTRY_PREEDIT_TAGS
+   }
+   style { "entry_single_textblock_guide_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_guide";
+      ENTRY_SINGLELINE_TAGS
+   }
+   style { "entry_single_textblock_guide_focused_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_guide_focused";
+      ENTRY_SINGLELINE_TAGS
+   }
+   style { "entry_single_textblock_guide_disabled_style";
+      base: "font=Tizen:weight=Light font_size="ENTRY_FONT_SIZE_INC" color=#fff left_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" right_margin="ENTRY_LEFT_RIGHT_MARGIN_INC" wrap=none text_class=entry color_class=entry/default/text_guide_disabled";
+      ENTRY_SINGLELINE_TAGS
+   }
+}
+
+group { "elm/entry/event/default";
+   inherit_only: 1;
+   parts {
+      rect { "event";
+         mouse;
+         repeat;
+         desc { "default";
+            color: 0 0 0 0;
+         }
+         desc { "disabled";
+            inherit: "default";
+            hid;
+         }
+      }
+   }
+   programs {
+      program { "clicked";
+         signal: "mouse,clicked,1";
+         source: "event";
+         after: "on_clicked";
+      }
+      program { "load";
+         signal: "load";
+         source: "";
+         after: "on_load";
+      }
+      program { "disabled";
+         signal: "elm,state,disabled";
+         source: "elm";
+         action: STATE_SET "disabled";
+         target: "event";
+         after: "on_disabled";
+      }
+      program { "enabled";
+         signal: "elm,state,disabled";
+         source: "elm";
+         action: STATE_SET "default";
+         target: "event";
+         after: "on_enabled";
+      }
+      program { "focus";
+         signal: "elm,action,focus";
+         source: "elm";
+         after: "on_focus";
+      }
+      program { "unfocus";
+         signal: "elm,action,unfocus";
+         source: "elm";
+         after: "on_unfocus";
+      }
+      program { "disabled_guide";
+         signal: "elm,guide,disabled";
+         source: "elm";
+         after: "on_disabled_guide";
+      }
+      program { "enabled_guide";
+         signal: "elm,guide,enabled";
+         source: "elm";
+         after: "on_enabled_guide";
+      }
+   }
+}
+
+group { "elm/entry/base/template";
+   inherit_only: 1;
+   data.item: "default_font_size" ENTRY_FONT_SIZE_INC;
+   data.item: "focus_highlight" "on";
+   data.item: context_menu_orientation "horizontal";
+   parts {
+      rect { "bg";
+         nomouse;
+         desc { "default";
+            color_class: "entry/default/bg";
+         }
+      }
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text.style: "entry_textblock_guide_style";
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: EDITABLE;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text.style: "entry_textblock_style";
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_disabled_style";
+         }
+      }
+   }
+   inherit: "elm/entry/event/default";
+   script {
+      public focused = 0;
+      public disabled = 0;
+      public guide_disabled = 0;
+   }
+   programs {
+      program { "on_load";
+         action: FOCUS_SET;
+         target: "elm.text";
+      }
+      program { "on_clicked";
+         action: RUN_PLUGIN "touch_sound";
+      }
+      program { "on_focus";
+         script {
+            set_int(focused, 1);
+            if (get_int(disabled) == 0) {
+               set_state(PART:"elm.text", "focused", 0.0);
+               if (get_int(guide_disabled) == 0)
+                  set_state(PART:"elm.guide", "focused", 0.0);
+            }
+         }
+      }
+      program { "on_unfocus";
+         script {
+            set_int(focused, 0);
+            if (get_int(disabled) == 0) {
+               set_state(PART:"elm.text", "default", 0.0);
+               if (get_int(guide_disabled) == 0)
+                  set_state(PART:"elm.guide", "default", 0.0);
+            }
+         }
+      }
+      program { "on_disabled";
+         script {
+            set_int(disabled, 1);
+            set_state(PART:"elm.text", "disabled", 0.0);
+            if (get_int(guide_disabled) == 0)
+               set_state(PART:"elm.guide", "disabled", 0.0);
+         }
+      }
+      program { "on_enabled";
+         script {
+            set_int(disabled, 0);
+            if (get_int(focused))
+               set_state(PART:"elm.text", "focused", 0.0);
+            else
+               set_state(PART:"elm.text", "default", 0.0);
+            if (get_int(guide_disabled) == 0) {
+               if (get_int(focused))
+                  set_state(PART:"elm.guide", "focused", 0.0);
+               else
+                  set_state(PART:"elm.guide", "default", 0.0);
+            }
+         }
+      }
+      program { "on_disabled_guide";
+         script {
+            set_int(guide_disabled, 1);
+            set_state(PART:"elm.guide", "hidden", 0.0);
+         }
+      }
+      program { "on_enabled_guide";
+         script {
+            set_int(guide_disabled, 0);
+            if (get_int(disabled))
+               set_state(PART:"elm.guide", "disabled", 0.0);
+            else if (get_int(focused))
+               set_state(PART:"elm.guide", "focused", 0.0);
+            else
+               set_state(PART:"elm.guide", "default", 0.0);
+         }
+      }
+   }
+}
+
+group { "elm/entry/cursor/event/default";
+   inherit_only: 1;
+   programs {
+      program { "selection_start";
+         signal: "selection,start";
+         source: "elm.text";
+         after: "on_selection_start";
+      }
+      program { "selection_cleared";
+         signal: "selection,cleared";
+         source: "elm.text";
+         after: "on_selection_cleared";
+      }
+      program { "focus";
+         signal: "elm,action,focus";
+         source: "elm";
+         after: "on_focus";
+      }
+      program { "unfocus";
+         signal: "elm,action,unfocus";
+         source: "elm";
+         after: "on_unfocus";
+      }
+      program { "show_cursor";
+         signal: "elm,action,show,cursor";
+         source: "elm";
+         after: "on_show_cursor";
+      }
+   }
+}
+
+group { "elm/entry/cursor/template";
+   inherit: "elm/entry/cursor/event/default";
+   inherit_only: 1;
+   parts {
+      rect { "cursor";
+         clip: "clipper";
+         desc { "default";
+            hid;
+         }
+         desc { "visible";
+            inherit: "default";
+            vis;
+         }
+      }
+      rect { "clipper";
+         desc { "default";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+   }
+   programs {
+      program { "on_selection_start";
+         action: STATE_SET "hidden";
+         target: "clipper";
+      }
+      program { "on_selection_cleared";
+         action: STATE_SET "default";
+         target: "clipper";
+      }
+      program { "on_focus";
+         action: ACTION_STOP;
+         target: "cursor_visible";
+         target: "cursor_hidden";
+         target: "cursor_visible_timer";
+         target: "cursor_hidden_timer";
+         after: "cursor_visible";
+      }
+      program { "on_unfocus";
+         action: ACTION_STOP;
+         target: "cursor_visible";
+         target: "cursor_hidden";
+         target: "cursor_visible_timer";
+         target: "cursor_hidden_timer";
+         after: "cursor_hidden_stop";
+      }
+      program { "on_show_cursor";
+         action: ACTION_STOP;
+         target: "cursor_visible";
+         target: "cursor_hidden";
+         target: "cursor_visible_timer";
+         target: "cursor_hidden_timer";
+         after: "cursor_visible";
+      }
+      program { "cursor_hidden_stop";
+         action: STATE_SET "default";
+         target: "cursor";
+      }
+      program { "cursor_visible";
+         action: STATE_SET "visible";
+         target: "cursor";
+         after: "cursor_visible_timer";
+      }
+      program { "cursor_hidden";
+         action: STATE_SET "default";
+         target: "cursor";
+         after: "cursor_hidden_timer";
+      }
+      program { "cursor_visible_timer";
+         in: 0.6 0.0;
+         after: "cursor_hidden";
+      }
+      program { "cursor_hidden_timer";
+         in: 0.6 0.0;
+         after: "cursor_visible";
+      }
+   }
+}
+
+group { "elm/entry/cursor/default";
+   inherit: "elm/entry/cursor/template";
+   parts {
+      rect { "cursor";
+         nomouse;
+         scale;
+         clip: "clipper";
+         desc { "default";
+            min: ENTRY_CURSOR_SIZE_INC;
+            color_class: "entry/default/cursor";
+            hid;
+         }
+         desc { "visible";
+            inherit: "default";
+            vis;
+         }
+      }
+      rect { "clipper";
+         desc { "default";
+            rel.to: "cursor";
+            fixed: 1 1;
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+   }
+}
+
+group { "elm/entry/base/default";
+   inherit: "elm/entry/base/template";
+   alias: "elm/entry/base-mixedwrap/default";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: EDITABLE;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            fixed: 1 0;
+            text {
+               style: "entry_textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text {
+               style: "entry_textblock_focused_style";
+               min: 0 1;
+            }
+         }
+         desc { "disabled";
+            inherit: "default";
+            text {
+               style: "entry_textblock_disabled_style";
+               min: 0 1;
+            }
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-charwrap/default";
+   alias: "elm/entry/base/char_wrap";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_char_wrap_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: EDITABLE;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            fixed: 1 0;
+            text {
+               style: "entry_textblock_char_wrap_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text {
+               style: "entry_textblock_char_wrap_focused_style";
+               min: 0 1;
+            }
+         }
+         desc { "disabled";
+            inherit: "default";
+            text {
+               style: "entry_textblock_char_wrap_disabled_style";
+               min: 0 1;
+            }
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-nowrap/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: EDITABLE;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text {
+               style: "entry_textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text {
+               style: "entry_textblock_focused_style";
+               min: 1 1;
+            }
+         }
+         desc { "disabled";
+            inherit: "default";
+            text {
+               style: "entry_textblock_disabled_style";
+               min: 0 1;
+            }
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-single/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            fixed: 1 1;
+            rel.to: "elm.text";
+            text {
+               style: "entry_single_textblock_guide_style";
+               min: 0 1;
+               max: 0 0;
+               align: 0.0 0.5;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: EDITABLE;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 0;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text {
+               style: "entry_single_textblock_style";
+               min: 1 1;
+               max: 0 0;
+               align: 0.0 0.5;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-single-noedit/default";
+   inherit: "elm/entry/base/template";
+   alias: "elm/entry/base-single-noedit/vcenter_align";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            fixed: 1 1;
+            rel.to: "elm.text";
+            text {
+               style: "entry_single_textblock_guide_style";
+               min: 0 1;
+               max: 0 1;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PLAIN;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 0;
+         source: "elm/entry/selection/default"; // selection under
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text {
+               style: "entry_single_textblock_style";
+               min: 1 1;
+               max: 0 1;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-noedit/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PLAIN;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            fixed: 1 0;
+            text {
+               style: "entry_textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-noedit-charwrap/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_char_wrap_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PLAIN;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            fixed: 1 0;
+            text {
+               style: "entry_textblock_char_wrap_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_char_wrap_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-noedit-mixedwrap/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      part { "elm.guide";
+         type: TEXTBLOCK;
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PLAIN;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            fixed: 1 0;
+            text {
+               style: "entry_textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-nowrap-noedit/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         type: TEXTBLOCK;
+         nomouse;
+         scale;
+         desc { "default";
+            rel.to: "elm.text";
+            text {
+               style: "entry_textblock_guide_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PLAIN;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 1;
+         source: "elm/entry/selection/default"; // selection under
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text {
+               style: "entry_textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/base-password/default";
+   inherit: "elm/entry/base/template";
+   parts {
+      textblock { "elm.guide";
+         nomouse;
+         scale;
+         desc { "default";
+            fixed: 1 1;
+            rel.to: "elm.text";
+            text {
+               style: "entry_single_textblock_guide_style";
+               min: 0 1;
+               max: 0 1;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_guide_disabled_style";
+         }
+         desc { "hidden";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         mouse;
+         scale;
+         entry_mode: PASSWORD;
+         select_mode: EXPLICIT;
+         cursor_mode: BEFORE;
+         multiline: 0;
+         source: "elm/entry/selection/default"; // selection under
+         source4: "elm/entry/cursor/default"; // cursorover
+         source5: "elm/entry/anchor/default"; // anchor under
+         desc { "default";
+            text {
+               style: "entry_single_textblock_style";
+               repch: "•";
+               min: 1 1;
+               max: 0 1;
+            }
+         }
+         desc { "focused";
+            inherit: "default";
+            text.style: "entry_single_textblock_focused_style";
+         }
+         desc { "disabled";
+            inherit: "default";
+            text.style: "entry_single_textblock_disabled_style";
+         }
+      }
+   }
+}
+
+group { "elm/entry/selection/default";
+   parts {
+      rect { "bg";
+         scale;
+         nomouse;
+         desc { "default";
+            color: 0 221 255 153;
+         }
+      }
+   }
+}
+
+group { "elm/entry/anchor/default";
+   parts {
+      spacer { "bg";
+         desc { "default"; }
+      }
+   }
+}
diff --git a/ElmSharp/theme/common/widgets/label.edc b/ElmSharp/theme/common/widgets/label.edc
new file mode 100644 (file)
index 0000000..5b11efd
--- /dev/null
@@ -0,0 +1,722 @@
+/*
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define SLIDE_SPEED_WEIGHT 0.5
+#define SLIDE_TEXT_GAP 60
+#define SLIDE_TEXT_CHAR_GAP "      " //60 (6 spaces)
+#define SLIDE_TEXT_MAX_LENGTH (2*(1024+6))
+
+styles {
+   style { "textblock_style";
+      base: "font=Tizen:weight=Normal font_size="LABEL_FONT_SIZE_INC" color=#FFF color_class=label/default/text text_class=label";
+      tag:  "br" "\n";
+      tag:  "ps" "ps";
+      tag:  "hilight" "+ font_weight=Bold";
+      tag:  "b" "+ font_weight=Bold";
+      tag:  "tab" "\t";
+   }
+   style { "textblock_charwrap_style";
+      base: "font=Tizen:weight=Normal font_size="LABEL_FONT_SIZE_INC" color=#FFF color_class=label/default/text text_class=label";
+      tag:  "br" "\n";
+      tag:  "ps" "ps";
+      tag:  "hilight" "+ font_weight=Bold";
+      tag:  "b" "+ font_weight=Bold";
+      tag:  "tab" "\t";
+   }
+   style { "textblock_style_marker";
+      base: "font=Tizen:weight=Bold font_size=14 align=center color=#FFF wrap=word color_class=label/default/text text_class=tizen";
+      tag:  "br" "\n";
+      tag:  "ps" "ps";
+      tag:  "hilight" "+ font_weight=Bold";
+      tag:  "b" "+ font_weight=Bold";
+      tag:  "tab" "\t";
+   }
+}
+
+group { "elm/label/event/default";
+   inherit_only: 1;
+   programs {
+      program { "start_slide";
+         source: "elm";
+         signal: "elm,state,slide,start";
+         after: "on_start_slide";
+      }
+      program { "stop_slide";
+         source: "elm";
+         signal: "elm,state,slide,stop";
+         after: "on_stop_slide";
+      }
+   }
+}
+
+group { "elm/label/base/template";
+   inherit: "elm/label/event/default";
+   inherit_only: 1;
+   parts {
+      rect { "bg";
+         desc { "default";
+            color_class: "label/default/bg";
+         }
+      }
+      rect { "clipper";
+         desc { "default";
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         clip: "clipper";
+         desc { "default";
+            text.style: "textblock_style";
+         }
+      }
+   }
+   programs {
+      program { "on_start_slide";
+      }
+      program { "on_stop_slide";
+      }
+   }
+}
+
+group { "elm/label/base/default";
+   inherit: "elm/label/base/template";
+   parts {
+      textblock { "elm.text";
+         scale;
+         clip: "clipper";
+         desc { "default";
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+      }
+   }
+}
+
+/* default label doesn't use it */
+group { "elm/label/base_wrap/default";
+   inherit: "elm/label/base/template";
+   parts {
+      textblock { "elm.text";
+         scale;
+         multiline: 1;
+         desc { "default";
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "charwrap_mode";
+            text {
+               style: "textblock_charwrap_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+      }
+   }
+   programs {
+      program { "default";
+         signal: "elm,state,default";
+         source: "elm";
+         action: STATE_SET "default";
+         target: "elm.text";
+      }
+      program { "charwrap";
+         signal: "elm,state,charwrap";
+         source: "elm";
+         action: STATE_SET "charwrap_mode";
+         target: "elm.text";
+      }
+   }
+}
+
+/* default label doesn't use it */
+group { "elm/label/base_wrap_ellipsis/default";
+   inherit: "elm/label/base/template";
+   parts {
+      textblock { "elm.text";
+         scale;
+         multiline: 1;
+         desc { "default";
+            fixed: 0 1;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "charwrap_mode";
+            fixed: 0 1;
+            text {
+               style: "textblock_charwrap_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+      }
+   }
+   programs {
+      program { "default";
+         signal: "elm,state,default";
+         source: "elm";
+         action: STATE_SET "default";
+         target: "elm.text";
+      }
+      program { "charwrap";
+         signal: "elm,state,charwrap";
+         source: "elm";
+         action: STATE_SET "charwrap_mode";
+         target: "elm.text";
+      }
+   }
+}
+
+group { "elm/label/base/slide_long";
+   inherit: "elm/label/base/template";
+   script {
+      public g_duration = 0, g_stopslide, g_timer_id, g_anim_id;
+
+      public message(Msg_Type:type, id, ...) {
+         if (type == MSG_FLOAT_SET) {
+            new Float:duration;
+            duration = getfarg(2);
+            if (id == 0)
+            set_float(g_duration, duration);
+            else
+            set_float(g_duration, duration / LABEL_FONT_SIZE_INC * SLIDE_SPEED_WEIGHT);
+         }
+      }
+      public slide_to_end_anim(val, Float:pos) {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+         if (pos >= 1.0) {
+            id = timer(0.5, "slide_to_begin", 1);
+            set_int(g_timer_id, id);
+         }
+      }
+      public slide_to_end() {
+         new stopflag;
+         new id;
+         new Float:duration;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         duration = get_float(g_duration);
+         id = anim(duration, "slide_to_end_anim", 1);
+         set_int(g_anim_id, id);
+      }
+      public slide_to_begin() {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_state(PART:"elm.text", "slide_begin", 0.0);
+         id = timer(0.5, "slide_to_end", 1);
+         set_int(g_timer_id, id);
+      }
+      public start_slide() {
+         set_int(g_stopslide, 0);
+         set_state(PART:"elm.text", "slide_begin", 0.0);
+         slide_to_end();
+      }
+      public stop_slide() {
+         new id;
+         set_int(g_stopslide, 1);
+         id = get_int(g_anim_id);
+         cancel_anim(id);
+         id = get_int(g_timer_id);
+         cancel_timer(id);
+         set_state(PART:"elm.text", "default", 0.0);
+      }
+   }
+   parts {
+      rect { "bg";
+         desc { "default";
+            color_class: "label/slide_long/bg";
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         clip: "clipper";
+         desc { "default";
+            align: 0.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "slide_end";
+            inherit: "default";
+            rel2.relative: 0.0 1.0;
+            align: 1.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "slide_begin";
+            inherit: "default";
+            rel1.relative: 1.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+      }
+   }
+   programs {
+      program { "on_start_slide";
+         script {
+            start_slide();
+         }
+      }
+      program { "on_stop_slide";
+         script {
+            stop_slide();
+         }
+      }
+   }
+}
+
+group { "elm/label/base/slide_roll";
+   inherit: "elm/label/base/template";
+   script {
+      public g_duration = 0;
+      public g_stopslide = 0;
+      public g_timer_id = 0;
+      public g_anim_id = 0;
+      public g_tb_w = 0;
+      public g_tb_h = LABEL_FONT_SIZE_INC;
+      public org_text = 0;
+      public message(Msg_Type:type, id, ...) {
+         if (type == MSG_FLOAT_SET) {
+            new Float:duration;
+            duration = getfarg(2);
+            if (id == 0)
+            set_float(g_duration, duration);
+            else
+            set_float(g_duration, duration / get_int(g_tb_h) * SLIDE_SPEED_WEIGHT);
+         }
+      }
+      public get_tb_width() {
+         new x, y, w, h;
+         set_state(PART:"elm.text", "no_ellipsis", 0.0);
+         get_geometry(PART:"elm.text", x, y, w, h);
+         set_int(g_tb_w, w);
+         set_int(g_tb_h, h);
+         set_state(PART:"clipper_elm.text", "default", 0.0);
+         get_geometry(PART:"clipper_elm.text", x, y, w, h);
+         set_int(org_text, w);
+      }
+      public slide_to_end_anim(val, Float:pos) {
+         if (get_int(g_stopslide)) return;
+         set_tween_state(PART:"elm.text.slide", pos*0.5, "slide_begin", 0.0, "slide_end", 0.0);
+         if (pos >= 1.0) {
+            set_int(g_timer_id, timer(1.5, "start_slide", 0));
+         }
+      }
+      public slide_to_end() {
+         if (get_int(g_stopslide)) return;
+         set_int(g_anim_id, anim(get_float(g_duration), "slide_to_end_anim", 0));
+      }
+      public start_slide(val) {
+         new Float:len;
+         set_int(g_stopslide, 0);
+         get_tb_width();
+         if (!get_float(g_duration)) {
+            len = get_int(g_tb_w);
+            set_float(g_duration, len / get_int(g_tb_h) * SLIDE_SPEED_WEIGHT);
+         }
+         if(get_int(g_tb_w) > get_int(org_text)) {
+            run_program(PROGRAM:"slide_text_set");
+            set_state(PART:"elm.text.slide", "slide_begin", 0.0);
+            set_state(PART:"clipper_elm.text", "hide", 0.0);
+            set_state(PART:"clipper_elm.text.slide", "show", 0.0);
+            slide_to_end();
+         }
+      }
+      public stop_slide() {
+         new slide_start_timer;
+         new slide_anim_id;
+         set_int(g_stopslide, 1);
+         set_float(g_duration, 0);
+         slide_start_timer = get_int(g_timer_id);
+         if (slide_start_timer) {
+            cancel_timer(slide_start_timer);
+            set_int(g_timer_id, 0);
+         }
+         slide_anim_id = get_int(g_anim_id);
+         if (slide_anim_id) {
+            cancel_anim(slide_anim_id);
+            set_int(g_anim_id, 0);
+         }
+         set_text(PART:"elm.text.slide", "");
+         set_state(PART:"elm.text", "default", 0.0);
+         set_state(PART:"elm.text.slide", "default", 0.0);
+         set_state(PART:"clipper_elm.text", "default", 0.0);
+         set_state(PART:"clipper_elm.text.slide", "default", 0.0);
+      }
+   }
+   parts {
+      rect { "bg";
+         desc { "default";
+            color_class: "label/slide_roll/bg";
+         }
+      }
+      rect { "clipper_elm.text";
+         nomouse;
+         clip: "clipper";
+         desc { "default";
+         }
+         desc { "hide";
+            inherit: "default";
+            hid;
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         clip: "clipper_elm.text";
+         desc { "default";
+            align: 0.0 0.5;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+            }
+         }
+         desc { "no_ellipsis";
+            inherit: "default";
+            text.min: 1 1;
+         }
+      }
+      rect { "clipper_elm.text.slide";
+         nomouse;
+         clip: "clipper";
+         desc { "default";
+            hid;
+         }
+         desc { "show";
+            inherit: "default";
+            vis;
+         }
+      }
+      spacer { "slide_text_gap";
+         scale;
+         desc { "default";
+            fixed: 1 0;
+            min: SLIDE_TEXT_GAP 0;
+            max: SLIDE_TEXT_GAP -1;
+            align: 1.0 0.5;
+            rel2.relative: 0.0 1.0;
+         }
+      }
+      textblock { "elm.text.slide";
+         scale;
+         clip: "clipper_elm.text.slide";
+         desc { "default";
+            align: 0.0 0.5;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+            }
+         }
+         desc { "slide_begin";
+            inherit: "default";
+            text.min: 1 1;
+            rel2.relative: 0.0 1.0;
+         }
+         desc { "slide_end";
+            inherit: "default";
+            align: 1.0 0.5;
+            text.min: 1 1;
+            text.align: 1.0 0.5;
+            rel.to: "slide_text_gap";
+         }
+      }
+   }
+   programs {
+      program { "slide_text_set";
+         script {
+            new buf[1024];
+            new buffer[SLIDE_TEXT_MAX_LENGTH];
+            get_text(PART:"elm.text", buf, 1024);
+            snprintf(buffer, SLIDE_TEXT_MAX_LENGTH, "%s", buf);
+            strcat(buffer, SLIDE_TEXT_CHAR_GAP);
+            strcat(buffer, buf);
+            strcat(buffer, SLIDE_TEXT_CHAR_GAP);
+            set_text(PART:"elm.text.slide", buffer);
+         }
+      }
+      program { "on_start_slide";
+         script {
+            run_program(PROGRAM:"stop_slide");
+            set_int(g_timer_id, timer(1.5, "start_slide", 0));
+         }
+      }
+      program { "on_stop_slide";
+         script {
+            stop_slide();
+         }
+      }
+   }
+}
+
+group { "elm/label/base/slide_short";
+   inherit: "elm/label/base/template";
+   script {
+      public g_duration = 0, g_stopslide, g_timer_id, g_anim_id;
+
+      public message(Msg_Type:type, id, ...) {
+         if (type == MSG_FLOAT_SET) {
+            new Float:duration;
+            duration = getfarg(2);
+            if (id == 0)
+            set_float(g_duration, duration);
+            else
+            set_float(g_duration, duration / LABEL_FONT_SIZE_INC * SLIDE_SPEED_WEIGHT);
+         }
+      }
+      public slide_to_end_anim(val, Float:pos) {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+         if (pos >= 1.0) {
+            id = timer(0.5, "slide_to_begin", 1);
+            set_int(g_timer_id, id);
+         }
+      }
+      public slide_to_end() {
+         new stopflag;
+         new id;
+         new Float:duration;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         duration = get_float(g_duration);
+         id = anim(duration, "slide_to_end_anim", 1);
+         set_int(g_anim_id, id);
+      }
+      public slide_to_begin() {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_state(PART:"elm.text", "slide_begin", 0.0);
+         id = timer(0.5, "slide_to_end", 1);
+         set_int(g_timer_id, id);
+      }
+      public start_slide() {
+         set_int(g_stopslide, 0);
+         set_state(PART:"elm.text", "slide_begin", 0.0);
+         slide_to_end();
+      }
+      public stop_slide() {
+         new id;
+         set_int(g_stopslide, 1);
+         id = get_int(g_anim_id);
+         cancel_anim(id);
+         id = get_int(g_timer_id);
+         cancel_timer(id);
+         set_state(PART:"elm.text", "default", 0.0);
+      }
+   }
+   parts {
+      rect { "bg";
+         desc { "default";
+            color_class: "label/slide_short/bg";
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         clip: "clipper";
+         desc { "default";
+            align: 0.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "slide_end";
+            inherit: "default";
+            rel1.relative: 1.0 0.0;
+            align: 1.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "slide_begin";
+            inherit: "default";
+            rel2.relative: 0.0 1.0;
+            align: 0.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 1 1;
+               align: 0.0 0.0;
+            }
+         }
+      }
+   }
+   programs {
+      program { "on_start_slide";
+         script {
+            start_slide();
+         }
+      }
+      program { "on_stop_slide";
+         script {
+            stop_slide();
+         }
+      }
+   }
+}
+
+group { "elm/label/base/slide_bounce";
+   inherit: "elm/label/base/template";
+   script {
+      public g_duration = 0, g_stopslide, g_timer_id, g_anim_id;
+
+      public message(Msg_Type:type, id, ...) {
+         if (type == MSG_FLOAT_SET) {
+            new Float:duration;
+            duration = getfarg(2);
+            if (id == 0)
+            set_float(g_duration, duration);
+            else
+            set_float(g_duration, duration / LABEL_FONT_SIZE_INC * SLIDE_SPEED_WEIGHT);
+         }
+      }
+      public slide_to_end_anim(val, Float:pos) {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_tween_state(PART:"elm.text", pos, "slide_begin", 0.0, "slide_end", 0.0);
+         if (pos >= 1.0) {
+            id = timer(0.5, "slide_to_begin", 1);
+            set_int(g_timer_id, id);
+         }
+      }
+      public slide_to_end() {
+         new stopflag;
+         new id;
+         new Float:duration;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         duration = get_float(g_duration);
+         id = anim(duration, "slide_to_end_anim", 1);
+         set_int(g_anim_id, id);
+      }
+      public slide_to_begin_anim(val, Float:pos) {
+         new stopflag;
+         new id;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         set_tween_state(PART:"elm.text", pos, "slide_end", 0.0, "slide_begin", 0.0);
+         if (pos >= 1.0) {
+            id = timer(0.5, "slide_to_end", 1);
+            set_int(g_timer_id, id);
+         }
+      }
+      public slide_to_begin() {
+         new stopflag;
+         new id;
+         new Float:duration;
+         stopflag = get_int(g_stopslide);
+         if (stopflag == 1) return;
+         duration = get_float(g_duration);
+         id = anim(duration, "slide_to_begin_anim", 1);
+         set_int(g_anim_id, id);
+      }
+      public start_slide() {
+         set_int(g_stopslide, 0);
+         set_state(PART:"elm.text", "slide_begin", 0.0);
+         slide_to_end();
+      }
+      public stop_slide() {
+         new id;
+         set_int(g_stopslide, 1);
+         id = get_int(g_anim_id);
+         cancel_anim(id);
+         id = get_int(g_timer_id);
+         cancel_timer(id);
+         set_state(PART:"elm.text", "default", 0.0);
+      }
+   }
+   parts {
+      rect { "bg";
+         desc { "default";
+            color_class: "label/slide_bounce/bg";
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         clip: "clipper";
+         desc { "default";
+            align: 0.0 0.0;
+            text {
+               style: "textblock_style";
+               min: 0 1;
+               align: 0.0 0.0;
+            }
+         }
+         desc { "slide_end";
+            inherit: "default";
+            rel1.relative: 1.0 0.0;
+            align: 1.0 0.0;
+            text.min: 1 1;
+         }
+         desc { "slide_begin";
+            inherit: "default";
+            rel2.relative: 0.0 1.0;
+            text.min: 1 1;
+         }
+      }
+   }
+   programs {
+      program { "on_start_slide";
+         script {
+            start_slide();
+         }
+      }
+      program { "on_stop_slide";
+         script {
+            stop_slide();
+         }
+      }
+   }
+}
diff --git a/ElmSharp/theme/common/widgets/layout.edc b/ElmSharp/theme/common/widgets/layout.edc
new file mode 100644 (file)
index 0000000..4268a9f
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2010 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+group { "elm/layout/background/default";
+   parts {
+      rect { "bg";
+         scale;
+         desc { "default";
+            color_class: "layout/background/bg";
+         }
+      }
+      swallow { "elm.swallow.content";
+         scale;
+         desc { "default"; }
+      }
+   }
+}
diff --git a/ElmSharp/theme/common/widgets/radio.edc b/ElmSharp/theme/common/widgets/radio.edc
new file mode 100644 (file)
index 0000000..9ddf30f
--- /dev/null
@@ -0,0 +1,559 @@
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright notice, this
+ *      list of conditions and the following disclaimer.
+ *   2. Redistributions in binary form must reproduce the above copyright notice,
+ *      this list of conditions and the following disclaimer in the documentation
+ *      and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#define STYLE_TAGS \
+   tag:  "br" "\n";\
+   tag:  "ps" "ps";\
+   tag:  "tab" "\t";\
+   tag:  "b" "+ font_weight=Bold";
+
+styles{
+   style { name: "radio_default";
+      base: "color=#000000FF font=Tizen:weight=Light font_size=40 text_class=tizen ellipsis=1.0";
+      STYLE_TAGS
+   }
+   style { name: "radio_default_dim";
+      base: "color=#000000A3 font=Tizen:weight=Light font_size=40 text_class=tizen ellipsis=1.0";
+      STYLE_TAGS
+   }
+   style { name: "radio_default_press";
+      base: "color=#000000FF font=Tizen:weight=Light font_size=40 text_class=tizen ellipsis=1.0";
+      STYLE_TAGS
+   }
+}
+#undef STYLE_TAGS
+
+group { "elm/radio/event/default";
+   inherit_only: 1;
+   parts {
+      rect { "event";
+         mouse;
+         desc { "default";
+            color: 0 0 0 0 ;
+            rel.to: "base";
+         }
+         desc { "disabled";
+            inherit: "default";
+            hid;
+         }
+      }
+   }
+   programs {
+      program { "clicked";
+         signal: "mouse,clicked,1";
+         source: "event";
+         action: SIGNAL_EMIT "elm,action,click" "";
+         after: "on_clicked";
+      }
+      program { "pressed";
+         signal: "mouse,down,1*";
+         source: "event";
+         action: SIGNAL_EMIT "elm,action,press" "";
+         after: "on_pressed";
+      }
+      program { "unpressed";
+         signal: "mouse,up,1";
+         source: "event";
+         action: SIGNAL_EMIT "elm,action,unpress" "";
+         after: "on_unpressed";
+      }
+      program { "set_radio";
+         signal: "elm,state,radio,on";
+         source: "elm";
+         after: "on_set_radio";
+      }
+      program { "unset_radio";
+         signal: "elm,state,radio,off";
+         source: "elm";
+         after: "on_unset_radio";
+      }
+      program { "disabled";
+         signal: "elm,state,disabled";
+         source: "elm";
+         after: "on_disabled";
+      }
+      program { "enabled";
+         signal: "elm,state,enabled";
+         source: "elm";
+         after: "on_enabled";
+      }
+      program { "enable_event_pass";
+         signal: "elm,event,pass,enabled";
+         source: "elm";
+         script {
+            set_mouse_events(PART:"event", 0);
+         }
+      }
+      program { "disable_event_pass";
+         signal: "elm,event,pass,disabled";
+         source: "elm";
+         script {
+            set_mouse_events(PART:"event", 1);
+         }
+      }
+      program { "enable_event_repeat";
+         signal: "elm,event,repeat,enabled";
+         source: "elm";
+         script {
+            set_repeat_events(PART:"event", 1);
+         }
+      }
+      program { "disable_event_repeat";
+         signal: "elm,event,repeat,disabled";
+         source: "elm";
+         script {
+            set_repeat_events(PART:"event", 0);
+         }
+      }
+   }
+}
+group { "elm/radio/base/template";
+   parts {
+      spacer { "base";
+         desc { "default";
+         }
+      }
+   }
+   inherit: "elm/radio/event/default";
+   programs {
+      program { "on_clicked";
+      }
+      program { "on_pressed";
+      }
+      program { "on_unpressed";
+      }
+      program { "on_disabled";
+      }
+      program { "on_enabled";
+      }
+      program { "on_set_radio";
+      }
+      program { "on_unset_radio";
+      }
+   }
+}
+group { "elm/radio/base/default";
+   images{
+      vector: core_radio_stroke.svg;
+      vector: core_radio_icon.svg;
+      vector: core_radio_bg_01.svg;
+      vector: core_radio_bg_02.svg;
+      vector: core_radio_white_bg.svg;
+   }
+   nomouse;
+   target_group: "vector_group" "clipper_bg_vector" "clipper_icon" "clipper_icon_inner" "clipper_icon_outer" "clipper_icon_stroke";
+   parts {
+      spacer { "base";
+         scale;
+         desc { "default";
+            min: RADIO_DEFAULT_SIZE_INC;
+         }
+      }
+      //bg shape
+      vector { "bg_vector";
+         scale;
+         clip: "clipper_bg_vector";
+         desc { "default";
+            image.normal: "core_radio_white_bg.svg";
+            min: RADIO_DEFAULT_SIZE_INC;
+            rel1.relative: 0 0.5;
+            rel2.relative: 0 0.5;
+            align: 0 0.5;
+            fixed: 1 1;
+         }
+      }
+      rect { "clipper_bg_vector";
+         desc { "default";
+            color_class: "radio/default/bg";
+         }
+         desc { "on";
+            color_class: "radio/default/bg_border_on";
+         }
+         desc { "off";
+            inherit: "default";
+         }
+         desc { "disabled_on";
+            color_class: "radio/default/bg_border_on_disabled";
+         }
+         desc { "disabled_off";
+            color_class: "radio/default/bg_disabled";
+         }
+      }
+      vector { "icon";
+         scale;
+         clip: "clipper_icon";
+         desc { "default";
+            image.normal: "core_radio_icon.svg";
+            rel1.to: "bg_vector";
+            rel2.to: "bg_vector";
+         }
+      }
+      rect { "clipper_icon";
+         desc { "default";
+            color: 250 250 250 0;
+         }
+         desc { "on";
+           color_class: "radio/default/bg_on" ;
+         }
+         desc { "off";
+            inherit: "default";
+         }
+         desc { "disabled_off";
+            inherit: "default";
+         }
+         desc { "disabled_on";
+           color_class: "radio/default/bg_on_disabled" ;
+         }
+      }
+      vector { "icon_inner";
+         scale;
+         clip: "clipper_icon_inner";
+         desc { "default";
+            image.normal: "core_radio_bg_01.svg";
+            rel.to: "bg_vector";
+         }
+      }
+      rect { "clipper_icon_inner";
+         desc { "default";
+            rel1.relative: 0.5 0.5;
+            rel2.relative: 0.5 0.5;
+            rel.to: "bg_vector";
+         }
+         desc { "on";
+            rel.to: "bg_vector";
+            color_class: "radio/default/icon";
+         }
+         desc { "off";
+            inherit: "default";
+         }
+         desc { "disabled_off";
+            inherit: "default";
+         }
+         desc { "disabled_on";
+            rel.to: "bg_vector";
+            color_class: "radio/default/icon_disabled";
+         }
+      }
+      vector { "icon_outer";
+         scale;
+         clip: "clipper_icon_outer";
+         desc { "default";
+            image.normal: "core_radio_bg_02.svg";
+            rel1.to: "bg_vector";
+            rel2.to: "bg_vector";
+         }
+      }
+      rect { "clipper_icon_outer";
+         desc { "default";
+            color: 61 185 204 0;
+         }
+         desc { "on";
+            color_class: "radio/default/icon";
+         }
+         desc { "off";
+            inherit: "default";
+         }
+         desc { "disabled_off";
+            inherit: "default";
+         }
+         desc { "disabled_on";
+            color_class: "radio/default/icon_disabled";
+         }
+      }
+      vector { "icon_stroke";
+         scale;
+         clip: "clipper_icon_stroke";
+         desc { "default";
+            image.normal: "core_radio_stroke.svg";
+            rel1.to: "bg_vector";
+            rel2.to: "bg_vector";
+         }
+      }
+      rect { "clipper_icon_stroke";
+         desc { "default";
+            color_class: "radio/default/stroke";
+         }
+         desc { "on";
+            color: 61 185 204 0;
+         }
+         desc { "off";
+            inherit: "default";
+         }
+         desc { "disabled_off";
+            color_class: "radio/default/stroke_disabled";
+         }
+         desc { "disabled_on";
+            inherit: "on";
+         }
+      }
+      spacer { "padding_before_text";
+         scale;
+         desc { "default";
+            align: 0.0 0.5;
+            min: 0 0;
+            rel1 {
+               to: "bg_vector";
+               relative: 1.0 0.0;
+            }
+            rel2 {
+               to: "bg_vector";
+               relative: 1.0 1.0;
+            }
+         }
+         desc { "visible";
+            inherit: "default" 0.0;
+            min: RADIO_PAD_BEFORE_TEXT_INC;
+            fixed: 1 1;
+         }
+      }
+      textblock { "elm.text";
+         scale;
+         desc { "default";
+            hid;
+            fixed: 0 1;
+            rel1 {
+               relative: 1.0 0.5;
+               to_x: "padding_before_text";
+            }
+            rel2 {
+               relative: 1.0 0.5;
+            }
+            align: 0.0 0.5;
+            text {
+               style: "radio_default";
+               min: 0 0;
+            }
+         }
+         desc { "visible";
+            inherit: "default" 0.0;
+            vis;
+            text.min: 0 1;
+         }
+         desc { "disabled";
+            inherit: "default" 0.0;
+            vis;
+            text {
+               style: "radio_default_dim";
+               min: 0 1;
+            }
+         }
+         desc { "pressed";
+            inherit: "default" 0.0;
+            vis;
+            text {
+               style: "radio_default_press";
+               min: 0 1;
+            }
+         }
+      }
+   }
+   inherit: "elm/radio/event/default";
+   script {
+      public radio_state;
+      public disabled;
+      public text;
+      public animate = 0;
+   }
+   programs {
+      program { "on_clicked";
+         script {
+            if (get_int(disabled) == 1) return;
+            emit("elm,action,radio,toggle", "");
+            run_program(PROGRAM:"touch_sound");
+         }
+      }
+      program { "on_pressed";
+         script {
+            if (get_int(disabled) == 1) return;
+            if (get_int(text) == 1) {
+              set_state(PART:"elm.text", "pressed", 0.0);
+            }
+         }
+      }
+      program { "on_unpressed";
+         script {
+            if (get_int(disabled) == 1) return;
+            if (get_int(radio_state) == 1) {
+                 run_program(PROGRAM:"toggle_on_without_effect");
+            }else {
+                 run_program(PROGRAM:"toggle_off_without_effect");
+            }
+            if (get_int(text) == 1) {
+              set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+      }
+      program { "on_disabled";
+         script {
+            set_int(disabled, 1);
+            if (get_int(radio_state) == 1) {
+                 run_program(PROGRAM:"toggle_disabled_on_without_effect");
+            }else {
+                 run_program(PROGRAM:"toggle_disabled_off_without_effect");
+            }
+            if (get_int(text) == 1) {
+              set_state(PART:"elm.text", "disabled", 0.0);
+            }
+         }
+     }
+      program { "on_enabled";
+         script {
+            set_int(disabled, 0);
+            if (get_int(radio_state) == 1) {
+                 run_program(PROGRAM:"toggle_on_without_effect");
+            } else {
+                 run_program(PROGRAM:"toggle_off_without_effect");
+            }
+            if (get_int(text) == 1) {
+              set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+      }
+      program { "on_set_radio";
+         script {
+            if (get_int(disabled) == 1) {
+               if (get_int(animate) == 0) {
+                 run_program(PROGRAM:"toggle_disabled_on_without_effect");
+               } else {
+                 run_program(PROGRAM:"toggle_disabled_on_with_effect");
+               }
+            }else {
+               if (get_int(animate) == 0) {
+                 run_program(PROGRAM:"toggle_on_without_effect");
+                 emit("elm,radio,state,toggle", "tizen_vg");
+               } else {
+                 run_program(PROGRAM:"toggle_on_with_effect");
+                 emit("elm,radio,action,toggle", "tizen_vg");
+               }
+            }
+            set_int(animate, 0);
+            set_int(radio_state, 1);
+         }
+      }
+      program { "on_unset_radio";
+         script {
+            if (get_int(disabled) == 1) {
+              if (get_int(animate) == 0) {
+                 run_program(PROGRAM:"toggle_disabled_off_without_effect");
+              } else {
+                 run_program(PROGRAM:"toggle_disabled_off_with_effect");
+              }
+            }else {
+              if (get_int(animate) == 0) {
+                 run_program(PROGRAM:"toggle_off_without_effect");
+                 emit("elm,radio,state,toggle", "tizen_vg");
+              } else {
+                 run_program(PROGRAM:"toggle_off_with_effect");
+                 emit("elm,radio,action,toggle", "tizen_vg");
+              }
+            }
+            set_int(animate, 0);
+            set_int(radio_state, 0);
+         }
+      }
+      program { "touch_sound";
+         action: RUN_PLUGIN "touch_sound";
+      }
+      program { "activate_animate_radio";
+         signal: "elm,activate,radio,on";
+         source: "elm";
+         script {
+            set_int(animate, 1);
+         }
+      }
+      program { "deactivate_animate_radio";
+         signal: "elm,activate,radio,off";
+         source: "elm";
+         script {
+            set_int(animate, 1);
+         }
+      }
+      program { "toggle_on_with_effect";
+         action: STATE_SET "on";
+         transition: DECELERATE 0.3;
+         target_groups: "vector_group";
+         after: "finished_animation";
+      }
+      program { "toggle_off_with_effect";
+         action: STATE_SET "default";
+         target_groups: "vector_group";
+         transition: DECELERATE 0.3;
+         after: "finished_animation";
+      }
+      program { "toggle_disabled_on_with_effect";
+         action: STATE_SET "disabled_on";
+         target_groups: "vector_group";
+         transition: DECELERATE 0.3;
+         after: "finished_animation";
+      }
+      program { "toggle_disabled_off_with_effect";
+         action: STATE_SET "disabled_off";
+         target_groups: "vector_group";
+         transition: DECELERATE 0.3;
+         after: "finished_animation";
+      }
+      program { "toggle_on_without_effect";
+         action: STATE_SET "on";
+         target_groups: "vector_group";
+      }
+      program { "toggle_off_without_effect";
+         action: STATE_SET "default";
+         target_groups: "vector_group";
+      }
+      program { "toggle_disabled_on_without_effect";
+         action: STATE_SET "disabled_on";
+         target_groups: "vector_group";
+      }
+      program { "toggle_disabled_off_without_effect";
+         action: STATE_SET "disabled_off";
+         target_groups: "vector_group";
+      }
+      program { "finished_animation";
+         action: SIGNAL_EMIT "animation,finished" "";
+      }
+      program { "visible_text";
+         signal: "elm,state,text,visible";
+         source: "elm";
+         script {
+            set_int(text, 1);
+            set_state(PART:"padding_before_text", "visible", 0.0);
+            if (get_int(disabled) == 1) {
+              set_state(PART:"elm.text", "disabled", 0.0);
+            }else {
+              set_state(PART:"elm.text", "visible", 0.0);
+            }
+         }
+      }
+      program { "hidden_text";
+         signal: "elm,state,text,hidden";
+         source: "elm";
+         script {
+            set_int(text, 0);
+            set_state(PART:"padding_before_text", "default", 0.0);
+            set_state(PART:"elm.text", "default", 0.0);
+         }
+      }
+   }
+}