Migrating source code to RSA from private. 2.0alpha master 2.0_alpha submit/master/20120920.151119
authorSeunghun Lee <shiin.lee@samsung.com>
Tue, 21 Aug 2012 12:12:51 +0000 (21:12 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Tue, 21 Aug 2012 12:12:51 +0000 (21:12 +0900)
167 files changed:
COPYING
config/Makefile.am [changed mode: 0755->0644]
config/illume/Makefile.am [changed mode: 0755->0644]
config/profile.src [changed mode: 0755->0644]
config/samsung/Makefile.am [changed mode: 0755->0644]
config/samsung/e.src [changed mode: 0755->0644]
config/samsung/icon.png [changed mode: 0755->0644]
config/samsung/profile.desktop [changed mode: 0755->0644]
configure.ac
data/etc/Makefile.am [changed mode: 0755->0644]
data/images/test.svg [changed mode: 0755->0644]
data/themes/Makefile.am [changed mode: 0755->0644]
data/themes/images/added_images/DM_Internet_Address_bg.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_01.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Down.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Increase.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Left_h.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Middle.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Middle_h.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Right_h.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_Up.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Scroll_h_01.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_Title_bg.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_bg.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_icon_Reduction.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_icon_Zoom.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_icon_close.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_icon_next.png [new file with mode: 0644]
data/themes/images/added_images/DM_Internet_icon_previous.png [new file with mode: 0644]
data/themes/images/added_images/DM_mouse_cursor.png [new file with mode: 0644]
data/themes/images/added_images/DM_tab_normal.png [new file with mode: 0644]
data/themes/images/added_images/DM_tab_over.png [new file with mode: 0644]
data/themes/images/added_images/DM_tab_press.png [new file with mode: 0644]
data/themes/images/added_images/e17_ibar_bg_v.png [new file with mode: 0644]
data/themes/images/added_images/e17_ibar_over_v.png [new file with mode: 0644]
data/themes/images/added_images/e17_pointer_mono.png [new file with mode: 0644]
data/themes/images/added_images/e17_scrollbar_hdrag_thumb.png [new file with mode: 0644]
data/themes/images/added_images/e17_scrollbar_vdrag_thumb.png [new file with mode: 0644]
data/themes/images/added_images/focus.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_0.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_1.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_2.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_3.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_4.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_5.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_6.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_7.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_8.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_9.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_AM.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_PM.png [new file with mode: 0644]
data/themes/images/clock/DM_Clock_time_center.png [new file with mode: 0644]
data/themes/images/flip_0b.png [changed mode: 0755->0644]
data/themes/images/flip_0t.png [changed mode: 0755->0644]
data/themes/images/flip_1b.png [changed mode: 0755->0644]
data/themes/images/flip_1t.png [changed mode: 0755->0644]
data/themes/images/flip_2b.png [changed mode: 0755->0644]
data/themes/images/flip_2t.png [changed mode: 0755->0644]
data/themes/images/flip_3b.png [changed mode: 0755->0644]
data/themes/images/flip_3t.png [changed mode: 0755->0644]
data/themes/images/flip_4b.png [changed mode: 0755->0644]
data/themes/images/flip_4t.png [changed mode: 0755->0644]
data/themes/images/flip_5b.png [changed mode: 0755->0644]
data/themes/images/flip_5t.png [changed mode: 0755->0644]
data/themes/images/flip_6b.png [changed mode: 0755->0644]
data/themes/images/flip_6t.png [changed mode: 0755->0644]
data/themes/images/flip_7b.png [changed mode: 0755->0644]
data/themes/images/flip_7t.png [changed mode: 0755->0644]
data/themes/images/flip_8b.png [changed mode: 0755->0644]
data/themes/images/flip_8t.png [changed mode: 0755->0644]
data/themes/images/flip_9b.png [changed mode: 0755->0644]
data/themes/images/flip_9t.png [changed mode: 0755->0644]
data/themes/images/flip_amb.png [changed mode: 0755->0644]
data/themes/images/flip_amt.png [changed mode: 0755->0644]
data/themes/images/flip_b.png [changed mode: 0755->0644]
data/themes/images/flip_base.png [changed mode: 0755->0644]
data/themes/images/flip_base_shad.png [changed mode: 0755->0644]
data/themes/images/flip_colon.png [changed mode: 0755->0644]
data/themes/images/flip_pmb.png [changed mode: 0755->0644]
data/themes/images/flip_pmt.png [changed mode: 0755->0644]
data/themes/images/flip_shad.png [changed mode: 0755->0644]
data/themes/images/flip_t.png [changed mode: 0755->0644]
data/themes/images/icon_gadget.png [changed mode: 0755->0644]
data/themes/images/icon_look.png [changed mode: 0755->0644]
data/themes/images/icon_screenshot.png [changed mode: 0755->0644]
data/themes/images/t0-sh.png [changed mode: 0755->0644]
data/themes/images/t0.png [changed mode: 0755->0644]
data/themes/images/t1-sh.png [changed mode: 0755->0644]
data/themes/images/t1.png [changed mode: 0755->0644]
data/themes/images/t2.png [changed mode: 0755->0644]
data/themes/samsung.edc [changed mode: 0755->0644]
debian/changelog
debian/e17.install
debian/e17.postinst
debian/rules
doc/cache.txt [changed mode: 0755->0644]
doc/illume2.html [changed mode: 0755->0644]
packaging/e17.spec
src/bin/e_border.c
src/bin/e_border.h
src/bin/e_config.c
src/bin/e_config.h
src/bin/e_container.c
src/bin/e_container.h
src/bin/e_desk.c
src/bin/e_desk.h
src/bin/e_fm/e_fm_ipc.h [changed mode: 0755->0644]
src/bin/e_fm/e_fm_main_hal.h [changed mode: 0755->0644]
src/bin/e_fm/e_fm_main_udisks.h [changed mode: 0755->0644]
src/bin/e_gadcon.c
src/bin/e_hints.c
src/bin/e_main.c
src/bin/e_manager.c
src/bin/e_manager.h
src/bin/e_module.c
src/bin/e_utils.c
src/bin/e_utils.h
src/modules/bluez/module.desktop.in [changed mode: 0755->0644]
src/modules/clock/module.desktop.in [changed mode: 0755->0644]
src/modules/conf/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_applications/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_dialogs/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_display/e_int_config_desk.c
src/modules/conf_edgebindings/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_interaction/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_intl/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_keybindings/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_menus/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_paths/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_performance/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_shelves/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_wallpaper2/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_window_manipulation/module.desktop.in [changed mode: 0755->0644]
src/modules/conf_window_remembers/module.desktop.in [changed mode: 0755->0644]
src/modules/connman/module.desktop.in [changed mode: 0755->0644]
src/modules/cpufreq/module.desktop.in [changed mode: 0755->0644]
src/modules/dropshadow/module.desktop.in [changed mode: 0755->0644]
src/modules/everything/module.desktop.in [changed mode: 0755->0644]
src/modules/fileman/module.desktop.in [changed mode: 0755->0644]
src/modules/fileman_opinfo/module.desktop.in [changed mode: 0755->0644]
src/modules/gadman/e_mod_gadman.c
src/modules/ibar/e_mod_config.c
src/modules/ibar/e_mod_main.c
src/modules/ibar/e_mod_main.h
src/modules/illume-keyboard/module.desktop.in [changed mode: 0755->0644]
src/modules/illume-mode-toggle/module.desktop.in [changed mode: 0755->0644]
src/modules/illume-softkey/module.desktop.in [changed mode: 0755->0644]
src/modules/layout/module.desktop.in [changed mode: 0755->0644]
src/modules/msgbus/module.desktop.in [changed mode: 0755->0644]
src/modules/ofono/module.desktop.in [changed mode: 0755->0644]
src/modules/pager/module.desktop.in [changed mode: 0755->0644]
src/modules/shot/.svn/all-wcprops [deleted file]
src/modules/shot/.svn/dir-prop-base [deleted file]
src/modules/shot/.svn/entries [deleted file]
src/modules/shot/.svn/prop-base/e-module-shot.edj.svn-base [deleted file]
src/modules/shot/.svn/text-base/.cvsignore.svn-base [deleted file]
src/modules/shot/.svn/text-base/Makefile.am.svn-base [deleted file]
src/modules/shot/.svn/text-base/e-module-shot.edj.svn-base [deleted file]
src/modules/shot/.svn/text-base/e_mod_main.c.svn-base [deleted file]
src/modules/shot/.svn/text-base/e_mod_main.h.svn-base [deleted file]
src/modules/shot/.svn/text-base/module.desktop.in.svn-base [deleted file]
src/modules/shot/e-module-shot.edj [changed mode: 0755->0644]
src/modules/start/module.desktop.in [changed mode: 0755->0644]
src/modules/syscon/module.desktop.in [changed mode: 0755->0644]
src/modules/systray/module.desktop.in [changed mode: 0755->0644]
src/modules/winlist/module.desktop.in [changed mode: 0755->0644]

diff --git a/COPYING b/COPYING
index 7625f00..4556b54 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
 Copyright notice for Enlightenment:
 
-Copyright (C) 2000-2011 Carsten Haitzler and various contributors (see AUTHORS)
+Copyright (C) 2000-2012 Carsten Haitzler and various contributors (see AUTHORS)
 
 All rights reserved.
 
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 0304d74..e3601d2 100644 (file)
@@ -578,6 +578,11 @@ e_extra_features+="-D_F_COMP_SCREEN_LOCK_ "
 e_extra_features+="-D_F_COMP_INPUT_REGION_SET_ "
 # enable window move lock / unlock
 e_extra_features+="-D_F_COMP_MOVE_LOCK_ "
+# enable composite mode set / get
+e_extra_features+="-D_F_COMP_COMPOSITE_MODE_ "
+# using external elementary dialog util instead of e_dialog to display error message
+e_extra_features+="-D_F_USE_EXTN_DIALOG_ "
+
 
 have_extra_features=no
 AC_ARG_ENABLE(extra_features,
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/data/themes/images/added_images/DM_Internet_Address_bg.png b/data/themes/images/added_images/DM_Internet_Address_bg.png
new file mode 100644 (file)
index 0000000..bd40659
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Address_bg.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_01.png b/data/themes/images/added_images/DM_Internet_Scroll_01.png
new file mode 100644 (file)
index 0000000..2a7aa96
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_01.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Down.png b/data/themes/images/added_images/DM_Internet_Scroll_Down.png
new file mode 100644 (file)
index 0000000..9213af9
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Down.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Increase.png b/data/themes/images/added_images/DM_Internet_Scroll_Increase.png
new file mode 100644 (file)
index 0000000..0cd2072
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Increase.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Left_h.png b/data/themes/images/added_images/DM_Internet_Scroll_Left_h.png
new file mode 100644 (file)
index 0000000..25ec7d3
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Left_h.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Middle.png b/data/themes/images/added_images/DM_Internet_Scroll_Middle.png
new file mode 100644 (file)
index 0000000..ae364c0
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Middle.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Middle_h.png b/data/themes/images/added_images/DM_Internet_Scroll_Middle_h.png
new file mode 100644 (file)
index 0000000..09e8d22
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Middle_h.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Right_h.png b/data/themes/images/added_images/DM_Internet_Scroll_Right_h.png
new file mode 100644 (file)
index 0000000..a2642b5
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Right_h.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_Up.png b/data/themes/images/added_images/DM_Internet_Scroll_Up.png
new file mode 100644 (file)
index 0000000..e41c03b
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_Up.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Scroll_h_01.png b/data/themes/images/added_images/DM_Internet_Scroll_h_01.png
new file mode 100644 (file)
index 0000000..923fad7
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Scroll_h_01.png differ
diff --git a/data/themes/images/added_images/DM_Internet_Title_bg.png b/data/themes/images/added_images/DM_Internet_Title_bg.png
new file mode 100644 (file)
index 0000000..96b0f74
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_Title_bg.png differ
diff --git a/data/themes/images/added_images/DM_Internet_bg.png b/data/themes/images/added_images/DM_Internet_bg.png
new file mode 100644 (file)
index 0000000..73a9334
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_bg.png differ
diff --git a/data/themes/images/added_images/DM_Internet_icon_Reduction.png b/data/themes/images/added_images/DM_Internet_icon_Reduction.png
new file mode 100644 (file)
index 0000000..3295ff1
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_icon_Reduction.png differ
diff --git a/data/themes/images/added_images/DM_Internet_icon_Zoom.png b/data/themes/images/added_images/DM_Internet_icon_Zoom.png
new file mode 100644 (file)
index 0000000..f0606e5
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_icon_Zoom.png differ
diff --git a/data/themes/images/added_images/DM_Internet_icon_close.png b/data/themes/images/added_images/DM_Internet_icon_close.png
new file mode 100644 (file)
index 0000000..80f0a03
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_icon_close.png differ
diff --git a/data/themes/images/added_images/DM_Internet_icon_next.png b/data/themes/images/added_images/DM_Internet_icon_next.png
new file mode 100644 (file)
index 0000000..dfba257
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_icon_next.png differ
diff --git a/data/themes/images/added_images/DM_Internet_icon_previous.png b/data/themes/images/added_images/DM_Internet_icon_previous.png
new file mode 100644 (file)
index 0000000..223ef6b
Binary files /dev/null and b/data/themes/images/added_images/DM_Internet_icon_previous.png differ
diff --git a/data/themes/images/added_images/DM_mouse_cursor.png b/data/themes/images/added_images/DM_mouse_cursor.png
new file mode 100644 (file)
index 0000000..3f64fbc
Binary files /dev/null and b/data/themes/images/added_images/DM_mouse_cursor.png differ
diff --git a/data/themes/images/added_images/DM_tab_normal.png b/data/themes/images/added_images/DM_tab_normal.png
new file mode 100644 (file)
index 0000000..d3daba9
Binary files /dev/null and b/data/themes/images/added_images/DM_tab_normal.png differ
diff --git a/data/themes/images/added_images/DM_tab_over.png b/data/themes/images/added_images/DM_tab_over.png
new file mode 100644 (file)
index 0000000..0822018
Binary files /dev/null and b/data/themes/images/added_images/DM_tab_over.png differ
diff --git a/data/themes/images/added_images/DM_tab_press.png b/data/themes/images/added_images/DM_tab_press.png
new file mode 100644 (file)
index 0000000..0c26875
Binary files /dev/null and b/data/themes/images/added_images/DM_tab_press.png differ
diff --git a/data/themes/images/added_images/e17_ibar_bg_v.png b/data/themes/images/added_images/e17_ibar_bg_v.png
new file mode 100644 (file)
index 0000000..c1288d6
Binary files /dev/null and b/data/themes/images/added_images/e17_ibar_bg_v.png differ
diff --git a/data/themes/images/added_images/e17_ibar_over_v.png b/data/themes/images/added_images/e17_ibar_over_v.png
new file mode 100644 (file)
index 0000000..37007f9
Binary files /dev/null and b/data/themes/images/added_images/e17_ibar_over_v.png differ
diff --git a/data/themes/images/added_images/e17_pointer_mono.png b/data/themes/images/added_images/e17_pointer_mono.png
new file mode 100644 (file)
index 0000000..51f2f45
Binary files /dev/null and b/data/themes/images/added_images/e17_pointer_mono.png differ
diff --git a/data/themes/images/added_images/e17_scrollbar_hdrag_thumb.png b/data/themes/images/added_images/e17_scrollbar_hdrag_thumb.png
new file mode 100644 (file)
index 0000000..4792e25
Binary files /dev/null and b/data/themes/images/added_images/e17_scrollbar_hdrag_thumb.png differ
diff --git a/data/themes/images/added_images/e17_scrollbar_vdrag_thumb.png b/data/themes/images/added_images/e17_scrollbar_vdrag_thumb.png
new file mode 100644 (file)
index 0000000..298dddb
Binary files /dev/null and b/data/themes/images/added_images/e17_scrollbar_vdrag_thumb.png differ
diff --git a/data/themes/images/added_images/focus.png b/data/themes/images/added_images/focus.png
new file mode 100644 (file)
index 0000000..e57f00f
Binary files /dev/null and b/data/themes/images/added_images/focus.png differ
diff --git a/data/themes/images/clock/DM_Clock_time.png b/data/themes/images/clock/DM_Clock_time.png
new file mode 100644 (file)
index 0000000..26987da
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_0.png b/data/themes/images/clock/DM_Clock_time_0.png
new file mode 100644 (file)
index 0000000..7c76721
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_0.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_1.png b/data/themes/images/clock/DM_Clock_time_1.png
new file mode 100644 (file)
index 0000000..a584b57
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_1.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_2.png b/data/themes/images/clock/DM_Clock_time_2.png
new file mode 100644 (file)
index 0000000..b55a61e
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_2.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_3.png b/data/themes/images/clock/DM_Clock_time_3.png
new file mode 100644 (file)
index 0000000..ff72bd4
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_3.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_4.png b/data/themes/images/clock/DM_Clock_time_4.png
new file mode 100644 (file)
index 0000000..992580f
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_4.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_5.png b/data/themes/images/clock/DM_Clock_time_5.png
new file mode 100644 (file)
index 0000000..4e842e5
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_5.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_6.png b/data/themes/images/clock/DM_Clock_time_6.png
new file mode 100644 (file)
index 0000000..9b63e74
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_6.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_7.png b/data/themes/images/clock/DM_Clock_time_7.png
new file mode 100644 (file)
index 0000000..2c56288
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_7.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_8.png b/data/themes/images/clock/DM_Clock_time_8.png
new file mode 100644 (file)
index 0000000..17cfdb2
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_8.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_9.png b/data/themes/images/clock/DM_Clock_time_9.png
new file mode 100644 (file)
index 0000000..e0decf5
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_9.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_AM.png b/data/themes/images/clock/DM_Clock_time_AM.png
new file mode 100644 (file)
index 0000000..fd77f60
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_AM.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_PM.png b/data/themes/images/clock/DM_Clock_time_PM.png
new file mode 100644 (file)
index 0000000..fbde98f
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_PM.png differ
diff --git a/data/themes/images/clock/DM_Clock_time_center.png b/data/themes/images/clock/DM_Clock_time_center.png
new file mode 100644 (file)
index 0000000..568779c
Binary files /dev/null and b/data/themes/images/clock/DM_Clock_time_center.png differ
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index a831ae6..f7af85c
@@ -1,12 +1,17 @@
 // TODO:
-// Add group{} locations to all sections. eg. "widget/preview" is found in Wallpaper selector"
-//     Icons:
-//             EFM - All popup icons ... eg, paste copy delete properties
-//             Icons for Menus modules
-//             Icon for Edge Bindings
-//             Icon for Modes?
+//   Formatting review.
+//   Formatting Process: 1. http://tools.arantius.com/tabifier in C mode
+//                       2. sed 's/\t/   /g' default.edc > formatted.edc
+//                       3. Fix up defines, script{}, comments and other nicknacks.
+//                       4. Replace ":    " with ": " and "//      " with "// " and so on.
+//
+//   Icons:
+//      EFM - All popup icons ... eg, paste copy delete properties
+//      Icons for Menus modules
+//      Icon for Edge Bindings
+//      Icon for Modes?
+//      Replace all (well, most) instances of icon_dummy.png
 //
-
 /*
  * So how do themes work?
  *
  * and make sure you have replaced/provided everything here.
  */
 
-/* Specturm used in all the gradient icons
+/* Spectrum used in all the gradient icons
  * This needs to be defined outside of the collections
  *
  * FIXME: this is bad. namespacing! FIXME!
  */
-/*
+#if 0
 spectra {
-   spectrum { name: "black_to_trans";
+   spectrum {
+      name: "black_to_trans";
       color: 0 0 0 255 1;
       color: 0 0 0 0 1;
    }
 }
-*/
+#endif
+/* color classes are used to control the colors of text and also apply
+ * tints to images. These can be controlled with the colors dialog. Below
+ * are the standard color_class names that the module looks for in a
+ * theme. Consider color classes as a style that can be applied to many
+ * different items without tinkering with the theme.
+ *
+ * color: Font color     (Defaults to black)
+ * color2: Outline color  (Defaults to transparent)
+ * color3: Shadow color   (Defaults to transparent)
+ *
+ */
+
+color_classes {
+   color_class {
+      name: "border_top";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "border_top_hilight";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "border_bottom";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "border_title";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "border_title_active";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "menu_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "menu_title";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "menu_title_active";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "menu_item";
+      color: 0 0 0 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "menu_item_active";
+      color: 255 255 255 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "menu_item_disabled";
+      color: 110 110 110 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "shelf_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "scrollframe_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "winlist_label";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "winlist_item";
+      color: 0 0 0 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "winlist_item_active";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "button_text";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "button_text_disabled";
+      color: 0 0 0 128;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "fileman_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "ilist_item_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "ilist_item_odd_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "ilist_item_header_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "ilist_item_header_odd_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "ilist_item";
+      color: 0 0 0 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "ilist_item_odd";
+      color: 0 0 0 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "ilist_item_selected";
+      color: 255 255 255 255;
+      color3: 0 0 0 64;
+   }
+   color_class {
+      name: "ilist_item_header";
+      color: 224 224 224 255;
+      color3: 0 0 0 32;
+   }
+   color_class {
+      name: "ilist_item_header_odd";
+      color: 224 224 224 255;
+      color3: 0 0 0 32;
+   }
+   color_class {
+      name: "dialog_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "move_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "resize_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "check_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "check_text_disabled";
+      color: 0 0 0 128;
+   }
+   color_class {
+      name: "radio_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "radio_text_disabled";
+      color: 0 0 0 128;
+   }
+   color_class {
+      name: "entry_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "entry_text_disabled";
+      color: 128 128 128 255;
+   }
+   color_class {
+      name: "slider_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "slider_text_disabled";
+      color: 0 0 0 128;
+   }
+   color_class {
+      name: "frame_base";
+      color: 255 255 255 255;
+   }
+   color_class {
+      name: "label_text";
+      color: 0 0 0 255;
+   }
+   color_class {
+      name: "label_text_disabled";
+      color: 0 0 0 128;
+   }
+   color_class {
+      name: "comp_focus-out_color";
+      color: 255 255 255 220;
+   }
+   color_class {
+      name: "tasks_text";
+      color: 0 0 0 255;
+      color3: 0 0 0 0;
+   }
+   color_class {
+      name: "tasks_text_focused";
+      color: 224 224 224 255;
+      color3: 0 0 0 64;
+   }
+}
+
 /*
- * this section defined all the theme elements (a collection of groupings of
+ * this section defines all the theme elements (a collection of groupings of
  * parts (images, text, rects etc.))
  */
-collections { /* begin the collection of edje groups that are in this file */
+
+collections {
+/* begin the collection of edje groups that are in this file */
 
 /////////////////////////////////////////////////////////////////////////////
-   /*** DEFAULT WALLPAPER ***/
-   group { name: "e/desktop/background"; /* the name of the group */
-      /* this section defines that images are to be included and how to
-       * encode them */
-      /* this section actually contains the list of parts from bottom to top
-       * (defining the layering/stacking order) */
+/*** DEFAULT WALLPAPER ***/
+   group {
+      name: "e/desktop/background";
       parts {
-        part { name: "background_image"; /* this is the base background */
+         part {
+            name: "background_image";
             type: RECT;
-           description { state: "default" 0.0; /* its default state */
+            /* this is the base background */
+            description {
+               state: "default" 0.0;
+               /* its default state */
                color: 0 0 0 255;
-           }
-        }
+            }
+         }
       }
    }
-
-   group { name: "e/desktop/background/scrollframe";
+   group {
+      name: "e/desktop/background/scrollframe";
       parts {
-         part { name: "clipper";
+         part {
+            name: "clipper";
             type: RECT;
             mouse_events: 0;
-            description { state: "default" 0.0;
+            description {
+               state: "default" 0.0;
             }
          }
-         part { name: "e.swallow.content";
+         part {
+            name: "e.swallow.content";
             clip_to: "clipper";
             type: SWALLOW;
-            description { state: "default" 0.0;
+            description {
+               state: "default" 0.0;
                rel1.offset: 0 0;
                rel2 {
                   relative: 0.0  0.0;
-                  offset:   -1   -1;
+                  offset: -1   -1;
                }
             }
          }
       }
    }
-
-/////////////////////////////////////////////////////////////////////////////
-   /*** DEFAULT WINDOW BORDER ***/
-   group { name: "e/widgets/border/default/border";
-      alias: "e/widgets/border/shaped/border";
-      alias: "e/widgets/border/noresize/border";
-      alias: "e/widgets/border/dialog/border";
-      alias: "e/widgets/border/noresize_dialog/border";
-      alias: "e/widgets/border/pixel/border";
+   group {
+      name: "e/desktop/background/scrollframe";
       parts {
-        part { name: "top";
-           mouse_events: 0; /* accept no mouse events here */
-            type: RECT;
-           description { state: "default" 0.0;
-               color: 0 0 0 255;
-              rel1 { /* this defines the top-left (rel1) point of the part
-                      * and where it is placed. the below values are
-                      * actually the default values, so there is no need
-                      * to actually declare them. */
-                 relative: 0.0 0.0; /* make this point relative to the top
-                                     * left of the whole eje object (there
-                                     * is no to: section so it's the whole
-                                     * object). note that the point is
-                                     * calculated as:
-                                     *   p.x = obj.width * relative.x
-                                     *   p.y = obj.height * relative.y
-                                     * (as the to item is the whole object)
-                                     */
-                 offset: 0 0; /* and from the relative point, have an offset
-                               * of 0 pixels - i.e. - none */
-              }
-              rel2 {
-                 relative: 1.0 1.0; /* the bottom-right is relative to the
-                                     * base of the title - this way the
-                                     * title region will scale based on font
-                                     * size */
-                 offset: -1 -1; /* relative to the bottom right */
-                 to_y: "title_base"; /* only y is relative to title_base. the
-                                      * rest is relative to the whole object
-                                      * (because its not specified) */
-              }
-           }
-        }
-        part { name: "bottom"; /* this is the bottom of the window */
+         part {
+            name: "clipper";
             type: RECT;
-           mouse_events: 0;
-           description { state: "default" 0.0;
-               color: 0 0 0 255;
-              rel1 {
-                 relative: 0.0 1.0; /* relative to the bottom-left of the edje
-                                     * but 4 pixels up */
-                 offset: 0 -8;
-              }
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -1 -1;
-              }
-           }
-           description { state: "shaded" 0.0; /* when in a shaded state then
-                                               * don't display this part */
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-           description { state: "max" 0.0; /* whem maximised too */
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
-        part { name: "icon_area"; /* this is an invisible rectangle that we
-                                   * use to place icons within. we use this
-                                   * to keep it fixed as the "icone area" so
-                                   * the actual swallow part that swallows
-                                   * the icon can be moved/resized for
-                                   * animations */
-           type: RECT;
-           description { state: "default" 0.0;
-              visible: 0;
-              align: 0.0 0.5; /* alignt to the left, but center vertically */
-              aspect: 1.0 1.0; /* prefer ans aspect of 1.0 (ie width / height
-                                * is 1.0 - i.e. - square. aspect here is
-                                * min and max aspect that will be "allowed"
-                                * (since both min and max are 1.0 respectively
-                                * in order). */
-              aspect_preference: VERTICAL; /* this means that the vertical
-                                            * axis controls aspect and the
-                                            * icon_area part size will be
-                                            * governed by the height of the
-                                            * part (the width simply following
-                                            * along behind) */
-              rel1 { /* rel1 - top-left corner of this part */
-                 relative: 0.0 0.0;
-                 offset: 2 2; /* 2 pixels in from the top-left of the border
-                               * corner */
-              }
-              rel2 {
-                 relative: 0.0 1.0; /* bottom-right of this part is also 2
-                                     * pixels in from the left (but align will
-                                     * mean it goes to the right) and be 2
-                                     * pixels in from the bottom edge of
-                                     * "title_base" (remember rel2 is the
-                                     * pixel immediately OUTSIDE the part.
-                                     * i.e. x + width & y + height). */
-                 offset: 2 -3;
-                 to_y: "title_base";
-              }
-           }
-           description { state: "active" 0.0; /* and an active state */
-              inherit: "default" 0.0;
-              rel1 {
-                 offset: 2 3; /* 1 pixel down from default so it looks like it
-                               * is pressed down a bit */
-              }
-              rel2 {
-                 offset: 2 -2; /* same here - down 1 pixel from "default" */
-              }
-           }
-        }
-        part { name: "icon_area2"; /* this area is another invisible rect
-                                    * that is used for shuffling around parts
-                                    * that are relative to it. the states
-                                    * below are just a few "random" offsets
-                                    * to make it look like whatever is
-                                    * relative to icon_area2 is "jiggling"
-                                    * around */
-           type: RECT;
-           description { state: "default" 0.0;
-              visible: 0;
-              rel1.to: "icon_area";
-              rel2.to: "icon_area";
-           }
-           description { state: "uw0" 0.0; /* jiggle */
-              inherit: "default" 0.0;
-              rel1.offset: -3 -2;
-              rel2.offset: -4 -3;
-           }
-           description { state: "uw1" 0.0; /* jiggle some more */
-              inherit: "default" 0.0;
-              rel1.offset: 5 -2;
-              rel2.offset: 4 -3;
-           }
-           description { state: "uw2" 0.0; /* look at me - jiggling! */
-              inherit: "default" 0.0;
-              rel1.offset: -1 4;
-              rel2.offset: -2 3;
-           }
-           description { state: "uw3" 0.0; /* jiggling about */
-              inherit: "default" 0.0;
-              rel1.offset: -2 -1;
-              rel2.offset: -3 -2;
-           }
-           description { state: "uw4" 0.0; /* one more jiggle for the dummies */
-              inherit: "default" 0.0;
-              rel1.offset: -4 1;
-              rel2.offset: -5 0;
-           }
-        }
-        part { name: "e.swallow.icon"; /* finally a swallow part - this is
-                                        * just a placeholder to SWALLOW
-                                        * other external evas objects into
-                                        * this region and edje will control
-                                        * any object swallowed as if it were
-                                        * this part itself (move, resize,
-                                        * etc.) */
-           type: SWALLOW;
-           description { state: "default" 0.0;
-              aspect: 1.0 1.0;
-              aspect_preference: BOTH;
-              rel1.to: "icon_area2";
-              rel2.to: "icon_area2";
-           }
-           description { state: "shrunk" 0.0;
-              inherit: "default" 0.0;
-              rel1.relative: 0.3 0.3;
-              rel2.relative: 0.7 0.7;
-           }
-        }
-        part { name: "e.text.title"; /* this is a text part - the black
-                                      * text on the white title top image */
-           type: TEXT;
-           mouse_events: 0;
-           scale: 1; /* allow this part to scale by a scale factor (dpi) */
-           description { state: "default" 0.0;
-              visible: 1;
-              align: 0.0 0.0; /* align top and left */
-              rel1 {
-                 relative: 1.0 0.0;
-                 offset: 9 2;
-                 to_x: "icon_area"; /* relative to the right side of the icon
-                                     * area but 9 pixels away */
-              }
-              rel2 {
-                 relative: 1.0 0.0; /* and the bottom right is inset by 8
-                                     * pixels from the right of "title_base"
-                                     * but as its aligned to the top we can
-                                     * keep this at 2 pixels from the top of
-                                     * the whole edje object and let alignment
-                                     * make it extend downward from that point
-                                     * with the text size defining the min size
-                                     * vertically below */
-                 offset: -8 2;
-                 to_x: "title_base";
-              }
-              color: 200 200 200 255; /* black */
-              text {
-                 font: "Sans:style=Bold"; /* Use the Bold style
-                                           * of the Sans font from
-                                           * fontconfig */
-                 size: 10; /* size in pixels - 10 */
-                 min: 0 1; /* the text will not determine minimum horizontal
-                            * size but WILL determine minimal vertical size
-                            * (thus 0 1 - horiz then vert flags) */
-                 align: 0.0 0.0; /* align text to top-left of the region
-                                  * given */
-                 text_class: "title_bar"; /* text class - so font and size
-                                           * can be changed by users */
-              }
-           }
-           description { state: "focused" 0.0; /* when the border is focused
-                                                * then make the text fade out
-                                                * and vanish */
-              inherit: "default" 0.0;
-              color: 255 255 255 255;
-           }
-        }
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            clip_to: "clipper";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 0 0;
+               rel2 {
+                  relative: 0.0  0.0;
+                  offset: -1   -1;
+               }
+            }
+         }
+      }
+   }
 
-        part { name: "bt_close"; /* the close button shadow */
-           mouse_events: 0;
-            type: RECT;
-           description { state: "default" 0.0;
-               color: 255 0 0 255;
-              align: 1.0 0.5;
-              min: 20 20; /* min and max size are the same, so never
-                           * resize this */
-              aspect: 1.0 1.0; /* square - always */
-              aspect_preference: VERTICAL; /* the vetical axis controls size
-                                            * when applying the aspect ratio
-                                            * hint above */
-              rel1 {
-                 relative: 1.0 0.0;
-                 offset: -2 1;
-                 to_x: "top";
-                 to_y: "top";
-              }
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -2 -2;
-                 to_x: "top";
-                 to_y: "top";
-              }
-           }
-        }
-        part { name: "bt_max"; /* maximize button shadow */
-           mouse_events: 0;
-            type: RECT;
-           description { state: "default" 0.0;
-               color: 255 128 0 255;
-              align: 1.0 0.5;
-              min: 20 20;
-              aspect: 1.0 1.0;
-              aspect_preference: VERTICAL;
-              rel1 {
-                 relative: 0.0 0.0;
-                 offset: -2 1;
-                 to_x: "bt_close"; /* left of the close button */
-                 to_y: "top";
-              }
-              rel2 {
-                 relative: 0.0 1.0;
-                 offset: -2 -2;
-                 to_x: "bt_close"; /* left of the close button */
-                 to_y: "top";
-              }
-           }
-        }
-        part { name: "bt_min"; /* minimize button shadow */
-           mouse_events: 0;
+/////////////////////////////////////////////////////////////////////////////
+/*** DEFAULT WINDOW BORDER ***/
+   group {
+      name: "e/widgets/border/default/border";
+      /* more images - for the border specifically. remember each images {}
+       * section fills a global images namespace, so if you re-use an image
+       * between sections, only 1 copy is kept, so names here are unique. if
+       * different image {} sections specify the same image but use different
+       * compression specifications, the compression scheme is undefined and
+       * may use any one of the schemes requested, so make sure you use the
+       * same compression scheme */
+      images {
+         image: "added_images/DM_Internet_Title_bg.png" COMP;
+         image: "added_images/DM_Internet_icon_close.png" COMP;
+         image: "added_images/DM_Internet_icon_Reduction.png" COMP;
+         image: "added_images/DM_Internet_icon_Zoom.png" COMP;
+         image: "added_images/DM_Internet_bg.png" COMP;
+         image: "added_images/DM_Internet_Address_bg.png" COMP;
+         image: "added_images/DM_Internet_Title_bg.png" COMP;
+         image: "bd_top.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_bottom.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+         image: "bd_resize_b.png" COMP;
+         image: "busy-1.png" COMP;
+         image: "busy-2.png" COMP;
+         image: "busy-3.png" COMP;
+         image: "busy-4.png" COMP;
+         image: "busy-5.png" COMP;
+         image: "busy-6.png" COMP;
+         image: "busy-7.png" COMP;
+         image: "busy-8.png" COMP;
+         image: "busy-9.png" COMP;
+         image: "exclam.png" COMP;
+         image: "bd_button_close_shadow.png" COMP;
+         image: "bd_button_close_focused.png" COMP;
+         image: "bd_button_close_unfocused.png" COMP;
+         image: "bd_button_max_shadow.png" COMP;
+         image: "bd_button_max_focused.png" COMP;
+         image: "bd_button_max_unfocused.png" COMP;
+         image: "bd_button_min_shadow.png" COMP;
+         image: "bd_button_min_focused.png" COMP;
+         image: "bd_button_min_unfocused.png" COMP;
+      }
+      /* this would tell E that the border is not a solid rectanle, but is
+       * shaped (has transparent sections) and so would follow a different
+       * code path for such borders. the default is not shaped, so this is
+       * not enabled here, but left commented out for illustration purposes */
+      //      data.item: "shaped" "1";
+      parts {
+         part {
+            name: "top";
+            mouse_events: 0;
+            /* accept no mouse events here */
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  /* this defines the top-left (rel1) point of the part
+                   * and where it is placed. the below values are
+                   * actually the default values, so there is no need
+                   * to actually declare them. */
+                  relative: 0.0 0.0;
+                  /* make this point relative to the top
+                   * left of the whole eje object (there
+                   * is no to: section so it's the whole
+                   * object). note that the point is
+                   * calculated as:
+                   *   p.x = obj.width * relative.x
+                   *   p.y = obj.height * relative.y
+                   * (as the to item is the whole object)
+                   */
+                  offset: 0 0;
+                  /* and from the relative point, have an offset
+                   * of 0 pixels - i.e. - none */
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  /* the bottom-right is relative to the
+                   * base of the title - this way the
+                   * title region will scale based on font
+                   * size */
+                  to_y: "title_base";
+                  /* only y is relative to title_base. the
+                   * rest is relative to the whole object
+                   * (because its not specified) */
+               }
+               color_class: "border_top";
+               image {
+                  /* define the image to use */
+                  normal: "added_images/DM_Internet_Title_bg.png";
+                  /* the image */
+               }
+            }
+         }
+         part {
+            name: "bottom";
+            /* this is the bottom of the window */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               color_class: "border_bottom";
+            }
+            description {
+               state: "shaded" 0.0;
+               /* when in a shaded state then
+                * don't display this part */
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "max" 0.0;
+               /* whem maximised too */
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_area";
+            /* this is an invisible rectangle that we
+             * use to place icons within. we use this
+             * to keep it fixed as the "icone area" so
+             * the actual swallow part that swallows
+             * the icon can be moved/resized for
+             * animations */
             type: RECT;
-           description { state: "default" 0.0;
-               color: 255 255 0 255;
-              align: 1.0 0.5;
-              min: 20 20;
-              aspect: 1.0 1.0;
-              aspect_preference: VERTICAL;
-              rel1 {
-                 relative: 0.0 0.0;
-                 offset: -2 1;
-                 to_x: "bt_max"; /* left of the maximize button */
-                 to_y: "top";
-              }
-              rel2 {
-                 relative: 0.0 1.0;
-                 offset: -2 -2;
-                 to_x: "bt_max"; /* left of the maximize button */
-                 to_y: "top";
-              }
-           }
-        }
-
-        part { name: "title_base"; /* an invisible rect part/object used for
-                                    * layout purposes */
-           type: RECT;
-           mouse_events:  0;
-           description { state: "default" 0.0;
-              visible: 0;
-              rel1 {
-                 relative: 1.0 0.0;
-                 offset: 0 0;
-                 to_x: "icon_area";
-              }
-              rel2 {
-                 relative: 0.0 1.0;
-                 offset: -3 4;
-                 to_y: "e.text.title";
-                 to_x: "bt_min";
-              }
-           }
-        }
-        part { name: "bottom_clip";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "bottom";
-              rel2.to: "bottom";
-              color: 255 255 255 255;
-           }
-        }
-        part { name: "resize_b";
-           mouse_events:  0;
-           clip_to: "bottom_clip";
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.0;
+               /* alignt to the left, but center vertically */
+               aspect: 1.0 1.0;
+               /* prefer ans aspect of 1.0 (ie width / height
+                * is 1.0 - i.e. - square. aspect here is
+                * min and max aspect that will be "allowed"
+                * (since both min and max are 1.0 respectively
+                * in order). */
+               aspect_preference: VERTICAL;
+               /* this means that the vertical
+                * axis controls aspect and the
+                * icon_area part size will be
+                * governed by the height of the
+                * part (the width simply following
+                * along behind) */
+               rel1 {
+                  /* rel1 - top-left corner of this part */
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+               }
+            }
+         }
+         part {
+            name: "icon_area2";
+            /* this area is another invisible rect
+             * that is used for shuffling around parts
+             * that are relative to it. the states
+             * below are just a few "random" offsets
+             * to make it look like whatever is
+             * relative to icon_area2 is "jiggling"
+             * around */
             type: RECT;
-           description { state: "default" 0.0;
-               color: 0 0 0 255;
-              min: 20 10;
-              max: 20 10;
-              rel1 {
-                 to: "bottom";
-                 relative: 0.5 0.0;
-                 offset: 0 -10;
-              }
-              rel2 {
-                 to: "bottom";
-                 relative: 0.5 0.0;
-                 offset: 0 -1;
-              }
-           }
-           description { state: "past" 0.0;
-              inherit: "default" 0.0;
-              rel1 {
-                 relative: 0.5 1.0;
-                 offset: 0 0;
-              }
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+            }
+            description {
+               state: "uw0" 0.0;
+               /* jiggle */
+               inherit: "default" 0.0;
+               rel1.offset: -3 -2;
+               rel2.offset: -4 -3;
+            }
+            description {
+               state: "uw1" 0.0;
+               /* jiggle some more */
+               inherit: "default" 0.0;
+               rel1.offset: 5 -2;
+               rel2.offset: 4 -3;
+            }
+            description {
+               state: "uw2" 0.0;
+               /* look at me - jiggling! */
+               inherit: "default" 0.0;
+               rel1.offset: -1 4;
+               rel2.offset: -2 3;
+            }
+            description {
+               state: "uw3" 0.0;
+               /* jiggling about */
+               inherit: "default" 0.0;
+               rel1.offset: -2 -1;
+               rel2.offset: -3 -2;
+            }
+            description {
+               state: "uw4" 0.0;
+               /* one more jiggle for the dummies */
+               inherit: "default" 0.0;
+               rel1.offset: -4 1;
+               rel2.offset: -5 0;
+            }
+         }
+         part {
+            name: "busy";
+            /* this is an animation to spin a wheel when the app
+             * seems too busy to respond to pings */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               /* nomrally the busy part is not visible */
+               color: 255 255 255 0;
+               /* and its alpha is 0 - se will fade it
+                * inm later so alpha to 0 (but 255 255
+                * 255 for white so we dont also go from
+                * dark to white while fading) */
+               max: 32 32;
+               /* no bigger than 32x32 - but allow it to be
+                * smaller if needed */
+               aspect: 1.0 1.0;
+               /* square aspect */
+               aspect_preference: BOTH;
+               /* both axes determine aspect. that
+                * means that the icon area may
+                * be 100x50, but the aspect is 1.0
+                * so therefore it will be 50x50 as the
+                * max size. if the area is 50x100 it
+                * will still be 50x50 as it must fit
+                * WITHIN the bounds of BOTH axes */
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image {
+                  tween: "busy-1.png";
+                  tween: "busy-2.png";
+                  tween: "busy-3.png";
+                  tween: "busy-4.png";
+                  tween: "busy-5.png";
+                  tween: "busy-6.png";
+                  tween: "busy-7.png";
+                  tween: "busy-8.png";
+                  normal: "busy-9.png";
+                  /* and we use image tweening. that
+                   * means that we flip through a series
+                   * of images when moving TO this state
+                   * over the transition time. it's like
+                   * specifying multiple frames of an
+                   * animatin sequence. the "final"
+                   * state is "normal". the images
+                   * between are the "tween" images
+                   * listed in order working towards
+                   * the "normal" image */
+               }
+            }
+            description {
+               state: "visible" 0.0;
+               /* the visible state - inherit the
+                * default one as its all the same, but
+                * its visible and faded in */
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            /* finally a swallow part - this is
+             * just a placeholder to SWALLOW
+             * other external evas objects into
+             * this region and edje will control
+             * any object swallowed as if it were
+             * this part itself (move, resize,
+             * etc.) */
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area2";
+               rel2.to: "icon_area2";
+            }
+            description {
+               state: "shrunk" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.3 0.3;
+               rel2.relative: 0.7 0.7;
+            }
+         }
+         part {
+            name: "urgent";
+            /* this is the urgnt part it is normally not
+             * visible, but when the window is in an
+             * urgent state (the app has set the urgency
+             * hint) then we go to the visible state */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               /* and in the visible state put the
+                * exlamation image on top of the icon */
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "urgent2";
+            /* this is another urgent element. it is actually
+             * zoomed out to be larger and faded out at the
+             * same time to give a "pulsating" look to the
+             * exclamation mark to bring attention to it */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "faded" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 -1.0;
+               rel2.relative: 2.0 2.0;
+               visible: 1;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.text.title";
+            /* this is a text part - the black
+             * text on the white title top image */
+            type: TEXT;
+            mouse_events: 0;
+            /* allow this part to scale by a scale factor (dpi) */
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               align: 0.5 0.0;
+               /* align top and left */
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 9 2;
+                  to_x: "icon_area";
+                  /* relative to the right side of the icon
+                   * area but 9 pixels away */
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  /* and the bottom right is inset by 8
+                   * pixels from the right of "title_base"
+                   * but as its aligned to the top we can
+                   * keep this at 2 pixels from the top of
+                   * the whole edje object and let alignment
+                   * make it extend downward from that point
+                   * with the text size defining the min size
+                   * vertically below */
+                  offset: -8 2;
+                  to_x: "title_base";
+               }
+               color: 255 255 255 255;
+               /* give it a color class so people
+                * can re-color it if they want */
+               text {
+                  font: "Sans";
+                  /* Use the Bold style
+                   * of the Sans font from
+                   * fontconfig */
+                  size: 14;
+                  /* size in pixels - 10 */
+                  min: 0 1;
+                  /* the text will not determine minimum horizontal
+                   * size but WILL determine minimal vertical size
+                   * (thus 0 1 - horiz then vert flags) */
+                  align: 0.5 0.0;
+                  /* align text to top-left of the region
+                   * given */
+                  text_class: "title_bar";
+                  /* text class - so font and size
+                   * can be changed by users */
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               /* when the border is focused
+                * then make the text fade out
+                * and vanish */
+               inherit: "default" 0.0;
+               visible: 0;
+               align: 0.5 0.0;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "bt_close";
+            /* the close button shadow */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 14 14;
+               /* min and max size are the same, so never
+                * resize this */
+               max: 14 14;
+               aspect: 1.0 1.0;
+               /* square - always */
+               aspect_preference: VERTICAL;
+               /* the vetical axis controls size
+                * when applying the aspect ratio
+                * hint above */
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -28 1;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -14 -2;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+         }
+         part {
+            name: "bt_max";
+            /* maximize button shadow */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_close";
+                  /* left of the close button */
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_close";
+                  /* left of the close button */
+                  to_y: "top";
+               }
+               image.normal: "added_images/DM_Internet_icon_Zoom.png";
+            }
+         }
+         part {
+            name: "bt_min";
+            /* minimize button shadow */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_max";
+                  /* left of the maximize button */
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_max";
+                  /* left of the maximize button */
+                  to_y: "top";
+               }
+               image.normal: "added_images/DM_Internet_icon_Reduction.png";
+            }
+         }
+         part {
+            name: "top_hilight";
+            /* an overlayed image to give the top of
+             * a border a shiny look - very subtle */
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+                  to: "top";
+               }
+               color_class: "border_top_hilight";
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "buttons_unfoc";
+            /* this is a rect part used to clip &
+             * thus control the visibility of a group
+             * of other parts (the images for the
+             * buttons themselves) with just 1 part
+             * doing the control as it acts as a
+             * master switch for all things clipped
+             * to this part */
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               /* visible and solid */
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               /* invisible and transparent */
+            }
+         }
+         part {
+            name: "bt_close_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            /* clipping (thus visible region and
+             * color + alpah is controlled by the
+             * clip object */
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "added_images/DM_Internet_icon_Zoom.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "added_images/DM_Internet_icon_Reduction.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "buttons_foc";
+            /* another rect object for clipping */
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "bt_close_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            /* controlled by the other clip object */
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "added_images/DM_Internet_icon_Zoom.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "added_images/DM_Internet_icon_Reduction.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "title_base";
+            /* an invisible rect part/object used for
+             * layout purposes */
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+                  to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -3 4;
+                  to_y: "e.text.title";
+                  to_x: "bt_min";
+               }
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "title_base";
+               }
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 0.0;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part {
+            name: "title2";
+            /* this is interesting. it's another text part
+             * that also displays the title text, but
+             * normally is not visible. it is only made
+             * visibile when the window becomes focused.
+             * what is interesting is we tell it to source
+             * the text content from another part - i.e.
+             * the master "title" part which E sets the
+             * text of. when that changes this part also
+             * changes its text. this is a good way to
+             * use multiple text objects for effects and
+             * other things that can copy/mimic the content
+             * of another part */
+            type: TEXT;
+            mouse_events: 0;
+            effect: SOFT_SHADOW;
+            /* different style to before - because its
+             * focused */
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 1.0;
+               rel1 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 0.0 1.0;
+                  offset: -1 0;
+               }
+               rel2 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+               }
+               color_class: "border_title_active";
+               text {
+                  text_source: "e.text.title";
+                  /* and here is the magic. tell
+                   * the text to be sourced from
+                   * another part */
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.5 0.0;
+                  min: 0 1;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bottom_clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bottom";
+               rel2.to: "bottom";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "resize_b";
+            mouse_events: 0;
+            clip_to: "bottom_clip";
+            description {
+               state: "default" 0.0;
+               min: 20 10;
+               max: 20 10;
+               rel1 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -10;
+               }
+               rel2 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -1;
+               }
+            }
+            description {
+               state: "past" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 0 9;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            /* this determines where the actual
+             * client window will be placed in
+             * the border design */
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+         }
+         /* these transparent rect parts are used for catching events in a way
+          * here objects for design don't affect the events. these parts
+          * are named speciifcally because E has config listening for specific
+          * signals (events) coming from these named parts and based on those
+          * will perform certain actions. these are actually all configurable
+          * by the user, so if they want, clicking the logical "titlebar" could
+          * close the window, not move it, and so on. the user decides this.
+          * the theme designer simply indicates the "logcal" use of the theme
+          * elements they have created */
+         part {
+            name: "e.event.titlebar";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "title_base";
+               rel2.to: "title_base";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.resize.t";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 3;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.b";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -4;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 15 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tr";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -16 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.bl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -16;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 15 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.br";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: -16 -16;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.icon";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.close";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.minimize";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.maximize";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               color: 0 0 0 0;
+            }
+         }
+      }
+      /* programs - these are basically snippets of simple logic to respond to
+       * incoming signals (generated by signal emisions by code or events) */
+      programs {
+         program {
+            name: "focus_in";
+            /* name of the program. must be unique
+             * within the list of programs attached
+             * to a group of parts */
+            signal: "e,state,focused";
+            /* what signal triggers this program,
+             * if any. this can also be a glob like
+             * "mouse,down,*" for example. note
+             * that globs are slower to match
+             * and empty strings are literal matches
+             * too */
+            source: "e";
+            /* the source of the signal - this must also match for
+             * the program to be run */
+            action: STATE_SET "default" 0.0;
+            /* the action the program will
+             * perform. in this case
+             * it will set the state to
+             * "focused" @ value 0.0 */
+            target: "title_back";
+            /* these are the targets for the action.
+             * i.e. which parts will have their state
+             * set to "focused" over 0.2 seconds */
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "focus_out";
+            /* this program is run when focus is
+             * removed from a window border */
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "title_back";
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "urgent";
+            /* this program is run when the border is
+             * meant to display an "urgent" state
+             * (the application has something
+             * important to show the user) */
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: DECELERATE 0.5;
+            /* instead of a linear transition
+             * this will vary from state A to B
+             * but slow down towards the end */
+            target: "urgent";
+            target: "urgent2";
+            after: "urgent2";
+            /* when this program and its transition are
+             * finished then chain (run) the "urgent2"
+             * program below. this way a series of actions
+             * and trnasitions can be chained together one
+             * after the other */
+         }
+         program {
+            name: "urgent2";
+            action: STATE_SET "faded" 0.0;
+            transition: LINEAR 0.5;
+            target: "urgent2";
+            after: "urgent3";
+         }
+         program {
+            name: "urgent3";
+            action: STATE_SET "visible" 0.0;
+            target: "urgent2";
+            /* notice - no transition. when not specified
+             * it is assumed that the action should happen
+             * immediately with no transition over time */
+            after: "urgent2";
+         }
+         program {
+            name: "urgentw0";
+            /* these ae a list of icon "wobble"
+             * programs to indicate urgency */
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: DECELERATE 0.1;
+            target: "icon_area2";
+            after: "urgentw1";
+         }
+         program {
+            name: "urgentw1";
+            action: STATE_SET "uw1" 0.0;
+            transition: DECELERATE 0.1;
+            target: "icon_area2";
+            after: "urgentw2";
+         }
+         program {
+            name: "urgentw2";
+            action: STATE_SET "uw2" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw3";
+         }
+         program {
+            name: "urgentw3";
+            action: STATE_SET "uw3" 0.0;
+            transition: DECELERATE 0.1;
+            target: "icon_area2";
+            after: "urgentw4";
+         }
+         program {
+            name: "urgentw4";
+            action: STATE_SET "uw4" 0.0;
+            transition: DECELERATE 0.1;
+            target: "icon_area2";
+            after: "urgentw0";
+         }
+         program {
+            name: "not_urgent";
+            /* run when the window stops being
+             * urgent */
+            signal: "e,state,not_urgent";
+            source: "e";
+            action: ACTION_STOP;
+            /* this action will stop other running programs
+             * that are currently active. the programs to
+             * stop are named in the targets below */
+            target: "urgentw0";
+            target: "urgentw1";
+            target: "urgentw2";
+            target: "urgentw3";
+            target: "urgentw4";
+            target: "urgent";
+            target: "urgent2";
+            target: "urgent3";
+            after: "not_urgent2";
+         }
+         program {
+            name: "not_urgent2";
+            action: STATE_SET "default" 0.0;
+            target: "urgent";
+            target: "urgent2";
+            target: "icon_area2";
+         }
+         program {
+            name: "hung";
+            /* run when an app is known to be hung/not
+             * responding to ping requests */
+            signal: "e,state,hung";
+            source: "e";
+            action: STATE_SET "shrunk" 0.0;
+            target: "e.swallow.icon";
+            transition: DECELERATE 0.5;
+         }
+         program {
+            name: "unhung";
+            /* when an app was hung but has started to
+             * respond again, this is run */
+            signal: "e,state,unhung";
+            source: "e";
+            action: ACTION_STOP;
+            target: "busy_anim";
+         }
+         program {
+            name: "unhung2";
+            signal: "e,state,unhung";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "e.swallow.icon";
+            target: "busy";
+            transition: ACCELERATE 0.5;
+         }
+         program {
+            name: "busy_anim";
+            /* multiple programs can be triggered
+             * from the same signals so this is
+             * also run when an app becomes "hung" */
+            signal: "e,state,hung";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.3333;
+            target: "busy";
+            after: "busy_anim";
+         }
+         // don't have states/anim for a generic iconify action
+         //    program { name: "xx";
+         //       signal: "e,action,iconify";
+         //       source: "e";
+         //    }
+         // don't have states/anim for a generic uniconify action
+         //    program { name: "xx";
+         //       signal: "e,action,uniconify";
+         //       source: "e";
+         //    }
+         // don't have states/anim for a generic maximize action
+         //    program { name: "xx";
+         //       signal: "e,action,maximize";
+         //       source: "e";
+         //    }
+         // don't have states/anim for a generic unmaximize action
+         //    program { name: "xx";
+         //       signal: "e,action,unmaximize";
+         //       source: "e";
+         //    }
+         program {
+            name: "max_full";
+            /* run on fullscreen maximize */
+            signal: "e,action,maximize,fullscreen";
+            source: "e";
+            action: STATE_SET "max" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "unmax_full";
+            /* run on unmaximize from fullscreen */
+            signal: "e,action,unmaximize,fullscreen";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         // don't have any animation or stat change to do at the start of shading
+         //    program { name: "xx";
+         //       signal: "e,state,shading";
+         //       source: "e";
+         //    }
+         program {
+            name: "shade_end";
+            /* run when the window finishes its
+             * shading animation */
+            signal: "e,state,shaded";
+            source: "e";
+            action: STATE_SET "shaded" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         program {
+            name: "unshade_start";
+            /* run when the window starts
+             * unshading itself */
+            signal: "e,state,unshading";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         // don't have any animation or stat change to do at the end of unshading
+         //    program { name: "xx";
+         //       signal: "e,state,unshaded";
+         //       source: "e";
+         //    }
+         program {
+            name: "resize_b_on";
+            signal: "mouse,in";
+            /* on mouse enter... */
+            source: "e.event.resize.b";
+            /* in this named part */
+            action: ACTION_STOP;
+            /* stop the following programs */
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+            after: "resize_b_on2";
+            /* then run... */
+         }
+         program {
+            name: "resize_b_on2";
+            action: STATE_SET "default" 0.0;
+            target: "resize_b";
+            after: "resize_b_on3";
+         }
+         program {
+            name: "resize_b_on3";
+            action: STATE_SET "past" 0.0;
+            transition: LINEAR 0.5;
+            target: "resize_b";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_off";
+            signal: "mouse,out";
+            /* on mouse leave... */
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on";
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+         }
+         program {
+            name: "icon_down";
+            signal: "mouse,down,*";
+            /* if any mouse button is pressed... */
+            source: "e.event.icon";
+            action: STATE_SET "active" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "icon_up";
+            signal: "mouse,up,*";
+            /* if any mouse button is released... */
+            source: "e.event.icon";
+            action: STATE_SET "default" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "bt_close_down";
+            signal: "mouse,down,*";
+            source: "e.event.close";
+            action: STATE_SET "active" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_close_up";
+            signal: "mouse,up,*";
+            source: "e.event.close";
+            action: STATE_SET "default" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_max_down";
+            signal: "mouse,down,*";
+            source: "e.event.maximize";
+            action: STATE_SET "active" 0.0;
+            target: "bt_max_unfoc";
+            target: "bt_max_foc";
+         }
+         program {
+            name: "bt_max_up";
+            signal: "mouse,up,*";
+            source: "e.event.maximize";
+            action: STATE_SET "default" 0.0;
+            target: "bt_max_unfoc";
+            target: "bt_max_foc";
+         }
+         program {
+            name: "bt_min_down";
+            signal: "mouse,down,*";
+            source: "e.event.minimize";
+            action: STATE_SET "active" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+         program {
+            name: "bt_min_up";
+            signal: "mouse,up,*";
+            source: "e.event.minimize";
+            action: STATE_SET "default" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+      }
+   }
+   /* more border types - see comments in the default border for information */
+   /*** SHAPED WINDOW BORDER ***/
+   group {
+      name: "e/widgets/border/shaped/border";
+      images {
+         image: "bd_top.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_bottom.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+         image: "bd_resize_b.png" COMP;
+         image: "busy-1.png" COMP;
+         image: "busy-2.png" COMP;
+         image: "busy-3.png" COMP;
+         image: "busy-4.png" COMP;
+         image: "busy-5.png" COMP;
+         image: "busy-6.png" COMP;
+         image: "busy-7.png" COMP;
+         image: "busy-8.png" COMP;
+         image: "busy-9.png" COMP;
+         image: "exclam.png" COMP;
+         image: "bd_button_close_shadow.png" COMP;
+         image: "bd_button_close_focused.png" COMP;
+         image: "bd_button_close_unfocused.png" COMP;
+         image: "bd_button_max_shadow.png" COMP;
+         image: "bd_button_max_focused.png" COMP;
+         image: "bd_button_max_unfocused.png" COMP;
+         image: "bd_button_min_shadow.png" COMP;
+         image: "bd_button_min_focused.png" COMP;
+         image: "bd_button_min_unfocused.png" COMP;
+      }
+      data.item: "shaped" "1";
+      parts {
+         part {
+            name: "top";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "title_base";
+               }
+               color_class: "border_top";
+               image {
+                  normal: "bd_top.png";
+                  border: 2 2 2 2;
+               }
+            }
+         }
+         part {
+            name: "bottom";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -4;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color_class: "border_bottom";
+               image {
+                  normal: "bd_bottom.png";
+                  border: 2 2 0 0;
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "icon_area";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 2 -3;
+                  to_y: "title_base";
+               }
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  offset: 2 3;
+               }
+               rel2 {
+                  offset: 2 -2;
+               }
+            }
+         }
+         part {
+            name: "icon_area2";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+            }
+            description {
+               state: "uw0" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -3 -2;
+               rel2.offset: -4 -3;
+            }
+            description {
+               state: "uw1" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 5 -2;
+               rel2.offset: 4 -3;
+            }
+            description {
+               state: "uw2" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -1 4;
+               rel2.offset: -2 3;
+            }
+            description {
+               state: "uw3" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -2 -1;
+               rel2.offset: -3 -2;
+            }
+            description {
+               state: "uw4" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -4 1;
+               rel2.offset: -5 0;
+            }
+         }
+         part {
+            name: "busy";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               max: 32 32;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image {
+                  tween: "busy-1.png";
+                  tween: "busy-2.png";
+                  tween: "busy-3.png";
+                  tween: "busy-4.png";
+                  tween: "busy-5.png";
+                  tween: "busy-6.png";
+                  tween: "busy-7.png";
+                  tween: "busy-8.png";
+                  normal: "busy-9.png";
+               }
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area2";
+               rel2.to: "icon_area2";
+            }
+            description {
+               state: "shrunk" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.3 0.3;
+               rel2.relative: 0.7 0.7;
+            }
+         }
+         part {
+            name: "urgent";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "urgent2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "faded" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 -1.0;
+               rel2.relative: 2.0 2.0;
+               visible: 1;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.text.title";
+            type: TEXT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 9 2;
+                  to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -8 2;
+                  to_x: "title_base";
+               }
+               color_class: "border_title";
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 0 1;
+                  align: 0.0 0.0;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "bt_close";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -28 1;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_close_shadow.png";
+            }
+         }
+         part {
+            name: "bt_max";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 22 22;
+               max: 22 22;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_close";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_close";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_max_shadow.png";
+            }
+         }
+         part {
+            name: "bt_min";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 22 22;
+               max: 22 22;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_max";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_max";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_min_shadow.png";
+            }
+         }
+         part {
+            name: "top_hilight";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+                  to: "top";
+               }
+               color_class: "border_top_hilight";
+               image {
+                  normal: "bd_top_hilight.png";
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "buttons_unfoc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "bt_close_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "bd_button_close_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "bd_button_max_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "bd_button_min_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "buttons_foc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "bt_close_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "bd_button_close_focused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "bd_button_max_focused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "bd_button_min_focused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "title_base";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+                  to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -3 4;
+                  to_y: "e.text.title";
+                  to_x: "bt_min";
+               }
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "title_base";
+               }
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 0.0;
+               }
+               image {
+                  normal: "bd_title_bg.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part {
+            name: "title2";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SOFT_SHADOW;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 1.0;
+               rel1 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 0.0 1.0;
+                  offset: -1 0;
+               }
+               rel2 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 1.0 1.0;
+                  offset: 0 1;
+               }
+               color_class: "border_title_active";
+               text {
+                  text_source: "e.text.title";
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.0 0.0;
+                  min: 0 1;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               image {
+                  normal: "bd_title_over.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bottom_clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bottom";
+               rel2.to: "bottom";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "resize_b";
+            mouse_events: 0;
+            clip_to: "bottom_clip";
+            description {
+               state: "default" 0.0;
+               min: 20 10;
+               max: 20 10;
+               rel1 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -10;
+               }
+               rel2 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -1;
+               }
+               image {
+                  normal: "bd_resize_b.png";
+               }
+            }
+            description {
+               state: "past" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 0 9;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+         }
+         part {
+            name: "e.event.titlebar";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "title_base";
+               rel2.to: "title_base";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.resize.t";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 3;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.b";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -4;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 15 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tr";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -16 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.bl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -16;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 15 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.br";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: -16 -16;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.icon";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.close";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.minimize";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.maximize";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "focus_in";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "focused" 0.0;
+            transition: LINEAR 0.2;
+            target: "title_back";
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "focus_out";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "title_back";
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "urgent";
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            target: "urgent";
+            target: "urgent2";
+            transition: DECELERATE 0.5;
+            after: "urgent2";
+         }
+         program {
+            name: "urgent2";
+            action: STATE_SET "faded" 0.0;
+            target: "urgent2";
+            transition: LINEAR 0.5;
+            after: "urgent3";
+         }
+         program {
+            name: "urgent3";
+            action: STATE_SET "visible" 0.0;
+            target: "urgent2";
+            after: "urgent2";
+         }
+         program {
+            name: "urgentw0";
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw1";
+         }
+         program {
+            name: "urgentw1";
+            action: STATE_SET "uw1" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw2";
+         }
+         program {
+            name: "urgentw2";
+            action: STATE_SET "uw2" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw3";
+         }
+         program {
+            name: "urgentw3";
+            action: STATE_SET "uw3" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw4";
+         }
+         program {
+            name: "urgentw4";
+            action: STATE_SET "uw4" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw0";
+         }
+         program {
+            name: "not_urgent";
+            signal: "e,state,not_urgent";
+            source: "e";
+            action: ACTION_STOP;
+            target: "urgentw0";
+            target: "urgentw1";
+            target: "urgentw2";
+            target: "urgentw3";
+            target: "urgentw4";
+            target: "urgent";
+            target: "urgent2";
+            target: "urgent3";
+            after: "not_urgent2";
+         }
+         program {
+            name: "not_urgent2";
+            action: STATE_SET "default" 0.0;
+            target: "urgent";
+            target: "urgent2";
+            target: "icon_area2";
+         }
+         program {
+            name: "hung";
+            signal: "e,state,hung";
+            source: "e";
+            /* FIXME: */
+            action: STATE_SET "shrunk" 0.0;
+            target: "e.swallow.icon";
+            transition: DECELERATE 0.5;
+         }
+         program {
+            name: "unhung";
+            signal: "e,state,unhung";
+            source: "e";
+            /* FIXME: */
+            action: ACTION_STOP;
+            target: "busy_anim";
+         }
+         program {
+            name: "unhung2";
+            signal: "e,state,unhung";
+            source: "e";
+            /* FIXME: */
+            action: STATE_SET "default" 0.0;
+            target: "e.swallow.icon";
+            target: "busy";
+            transition: ACCELERATE 0.5;
+         }
+         program {
+            name: "busy_anim";
+            signal: "e,state,hung";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.3333;
+            target: "busy";
+            after: "busy_anim";
+         }
+         program {
+            name: "max_full";
+            signal: "e,action,maximize,fullscreen";
+            source: "e";
+            action: STATE_SET "max" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "unmax_full";
+            signal: "e,action,unmaximize,fullscreen";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "shade_end";
+            signal: "e,state,shaded";
+            source: "e";
+            action: STATE_SET "shaded" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         program {
+            name: "unshade_start";
+            signal: "e,state,unshading";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         program {
+            name: "resize_b_on";
+            signal: "mouse,in";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_on2";
+            action: STATE_SET "default" 0.0;
+            target: "resize_b";
+            after: "resize_b_on3";
+         }
+         program {
+            name: "resize_b_on3";
+            action: STATE_SET "past" 0.0;
+            transition: LINEAR 0.5;
+            target: "resize_b";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_off";
+            signal: "mouse,out";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on";
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+         }
+         program {
+            name: "icon_down";
+            signal: "mouse,down,*";
+            source: "e.event.icon";
+            action: STATE_SET "active" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "icon_up";
+            signal: "mouse,up,*";
+            source: "e.event.icon";
+            action: STATE_SET "default" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "bt_close_down";
+            signal: "mouse,down,*";
+            source: "e.event.close";
+            action: STATE_SET "active" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_close_up";
+            signal: "mouse,up,*";
+            source: "e.event.close";
+            action: STATE_SET "default" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_max_down";
+            signal: "mouse,down,*";
+            source: "e.event.maximize";
+            action: STATE_SET "active" 0.0;
+            target: "bt_max_unfoc";
+            target: "bt_max_foc";
+         }
+         program {
+            name: "bt_max_up";
+            signal: "mouse,up,*";
+            source: "e.event.maximize";
+            action: STATE_SET "default" 0.0;
+            target: "bt_max_unfoc";
+            target: "bt_max_foc";
+         }
+         program {
+            name: "bt_min_down";
+            signal: "mouse,down,*";
+            source: "e.event.minimize";
+            action: STATE_SET "active" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+         program {
+            name: "bt_min_up";
+            signal: "mouse,up,*";
+            source: "e.event.minimize";
+            action: STATE_SET "default" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+      }
+   }
+   /*** NORESIZE WINDOW BORDER ***/
+   group {
+      name: "e/widgets/border/noresize/border";
+      images {
+         image: "bd_top.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+         image: "busy-1.png" COMP;
+         image: "busy-2.png" COMP;
+         image: "busy-3.png" COMP;
+         image: "busy-4.png" COMP;
+         image: "busy-5.png" COMP;
+         image: "busy-6.png" COMP;
+         image: "busy-7.png" COMP;
+         image: "busy-8.png" COMP;
+         image: "busy-9.png" COMP;
+         image: "exclam.png" COMP;
+         image: "bd_button_close_shadow.png" COMP;
+         image: "bd_button_close_focused.png" COMP;
+         image: "bd_button_close_unfocused.png" COMP;
+         image: "bd_button_max_shadow.png" COMP;
+         image: "bd_button_max_unfocused.png" COMP;
+         image: "bd_button_min_shadow.png" COMP;
+         image: "bd_button_min_focused.png" COMP;
+         image: "bd_button_min_unfocused.png" COMP;
+      }
+      parts {
+         part {
+            name: "top";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "title_base";
+               }
+               color_class: "border_top";
+               image {
+                  normal: "bd_top.png";
+                  border: 2 2 2 2;
+               }
+            }
+         }
+         part {
+            name: "icon_area";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 2 -3;
+                  to_y: "title_base";
+               }
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  offset: 2 3;
+               }
+               rel2 {
+                  offset: 2 -2;
+               }
+            }
+         }
+         part {
+            name: "icon_area2";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+            }
+            description {
+               state: "uw0" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -3 -2;
+               rel2.offset: -4 -3;
+            }
+            description {
+               state: "uw1" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 5 -2;
+               rel2.offset: 4 -3;
+            }
+            description {
+               state: "uw2" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -1 4;
+               rel2.offset: -2 3;
+            }
+            description {
+               state: "uw3" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -2 -1;
+               rel2.offset: -3 -2;
+            }
+            description {
+               state: "uw4" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: -4 1;
+               rel2.offset: -5 0;
+            }
+         }
+         part {
+            name: "busy";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               max: 32 32;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image {
+                  tween: "busy-1.png";
+                  tween: "busy-2.png";
+                  tween: "busy-3.png";
+                  tween: "busy-4.png";
+                  tween: "busy-5.png";
+                  tween: "busy-6.png";
+                  tween: "busy-7.png";
+                  tween: "busy-8.png";
+                  normal: "busy-9.png";
+               }
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area2";
+               rel2.to: "icon_area2";
+            }
+            description {
+               state: "shrunk" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.3 0.3;
+               rel2.relative: 0.7 0.7;
+            }
+         }
+         part {
+            name: "urgent";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "urgent2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               image.normal: "exclam.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "faded" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -1.0 -1.0;
+               rel2.relative: 2.0 2.0;
+               visible: 1;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.text.title";
+            type: TEXT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               align: 0.0 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 9 2;
+                  to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -8 2;
+                  to_x: "title_base";
+               }
+               color_class: "border_title";
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 0 1;
+                  align: 0.0 0.0;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "bt_close";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -28 1;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_close_shadow.png";
+            }
+         }
+         part {
+            name: "bt_max";
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 22 22;
+               max: 22 22;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_close";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_close";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_max_shadow.png";
+            }
+         }
+         part {
+            name: "bt_min";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               min: 22 22;
+               max: 22 22;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 1;
+                  to_x: "bt_max";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -2 -2;
+                  to_x: "bt_max";
+                  to_y: "top";
+               }
+               image.normal: "bd_button_min_shadow.png";
+            }
+         }
+         part {
+            name: "top_hilight";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+                  to: "top";
+               }
+               color_class: "border_top_hilight";
+               image {
+                  normal: "bd_top_hilight.png";
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "buttons_unfoc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "bt_close_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "bd_button_close_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_unfoc";
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "bd_button_max_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "bd_button_min_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "buttons_foc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "bt_close_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "bd_button_close_focused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_max_foc";
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_max";
+               rel2.to: "bt_max";
+               image.normal: "bd_button_max_unfocused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "bt_min_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               image.normal: "bd_button_min_focused.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "title_base";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+                  to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -3 4;
+                  to_y: "e.text.title";
+                  to_x: "bt_min";
+               }
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "title_base";
+               }
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 0.0;
+               }
+               image {
+                  normal: "bd_title_bg.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part {
+            name: "title2";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SOFT_SHADOW;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 1.0;
+               rel1 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 0.0 1.0;
+                  offset: -1 0;
+               }
+               rel2 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 1.0 1.0;
+                  offset: 0 1;
+               }
+               color_class: "border_title_active";
+               text {
+                  text_source: "e.text.title";
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.0 0.0;
+                  min: 0 1;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               image {
+                  normal: "bd_title_over.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+            }
+         }
+         part {
+            name: "e.event.titlebar";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "title_base";
+               rel2.to: "title_base";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.icon";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "icon_area";
+               rel2.to: "icon_area";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.close";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.minimize";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_min";
+               rel2.to: "bt_min";
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "focus_in";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "focused" 0.0;
+            transition: LINEAR 0.2;
+            target: "title_back";
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "focus_out";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "title_back";
+            target: "title2";
+            target: "title_over";
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+            target: "e.text.title";
+         }
+         program {
+            name: "urgent";
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            target: "urgent";
+            target: "urgent2";
+            transition: DECELERATE 0.5;
+            after: "urgent2";
+         }
+         program {
+            name: "urgent2";
+            action: STATE_SET "faded" 0.0;
+            target: "urgent2";
+            transition: LINEAR 0.5;
+            after: "urgent3";
+         }
+         program {
+            name: "urgent3";
+            action: STATE_SET "visible" 0.0;
+            target: "urgent2";
+            after: "urgent2";
+         }
+         program {
+            name: "urgentw0";
+            signal: "e,state,urgent";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw1";
+         }
+         program {
+            name: "urgentw1";
+            action: STATE_SET "uw1" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw2";
+         }
+         program {
+            name: "urgentw2";
+            action: STATE_SET "uw2" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw3";
+         }
+         program {
+            name: "urgentw3";
+            action: STATE_SET "uw3" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw4";
+         }
+         program {
+            name: "urgentw4";
+            action: STATE_SET "uw4" 0.0;
+            target: "icon_area2";
+            transition: DECELERATE 0.1;
+            after: "urgentw0";
+         }
+         program {
+            name: "not_urgent";
+            signal: "e,state,not_urgent";
+            source: "e";
+            action: ACTION_STOP;
+            target: "urgentw0";
+            target: "urgentw1";
+            target: "urgentw2";
+            target: "urgentw3";
+            target: "urgentw4";
+            target: "urgent";
+            target: "urgent2";
+            target: "urgent3";
+            after: "not_urgent2";
+         }
+         program {
+            name: "not_urgent2";
+            action: STATE_SET "default" 0.0;
+            target: "urgent";
+            target: "urgent2";
+            target: "icon_area2";
+         }
+         program {
+            name: "hung";
+            signal: "e,state,hung";
+            source: "e";
+            /* FIXME: */
+            action: STATE_SET "shrunk" 0.0;
+            target: "e.swallow.icon";
+            transition: DECELERATE 0.5;
+         }
+         program {
+            name: "unhung";
+            signal: "e,state,unhung";
+            source: "e";
+            /* FIXME: */
+            action: ACTION_STOP;
+            target: "busy_anim";
+         }
+         program {
+            name: "unhung2";
+            signal: "e,state,unhung";
+            source: "e";
+            /* FIXME: */
+            action: STATE_SET "default" 0.0;
+            target: "e.swallow.icon";
+            target: "busy";
+            transition: ACCELERATE 0.5;
+         }
+         program {
+            name: "busy_anim";
+            signal: "e,state,hung";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.3333;
+            target: "busy";
+            after: "busy_anim";
+         }
+         program {
+            name: "shade_end";
+            signal: "e,state,shaded";
+            source: "e";
+            action: STATE_SET "shaded" 0.0;
+            target: "e.swallow.client";
+         }
+         program {
+            name: "unshade_start";
+            signal: "e,state,unshading";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "e.swallow.client";
+         }
+         program {
+            name: "icon_down";
+            signal: "mouse,down,*";
+            source: "e.event.icon";
+            action: STATE_SET "active" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "icon_up";
+            signal: "mouse,up,*";
+            source: "e.event.icon";
+            action: STATE_SET "default" 0.0;
+            target: "icon_area";
+         }
+         program {
+            name: "bt_close_down";
+            signal: "mouse,down,*";
+            source: "e.event.close";
+            action: STATE_SET "active" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_close_up";
+            signal: "mouse,up,*";
+            source: "e.event.close";
+            action: STATE_SET "default" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_min_down";
+            signal: "mouse,down,*";
+            source: "e.event.minimize";
+            action: STATE_SET "active" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+         program {
+            name: "bt_min_up";
+            signal: "mouse,up,*";
+            source: "e.event.minimize";
+            action: STATE_SET "default" 0.0;
+            target: "bt_min_unfoc";
+            target: "bt_min_foc";
+         }
+      }
+   }
+   /*** DIALOG WINDOW BORDER ***/
+   group {
+      name: "e/widgets/border/dialog/border";
+      images {
+         image: "added_images/DM_Internet_Title_bg.png" COMP;
+         image: "added_images/DM_Internet_icon_close.png" COMP;
+         image: "bd_top.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_bottom.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+         image: "bd_resize_b.png" COMP;
+         image: "busy-1.png" COMP;
+         image: "busy-2.png" COMP;
+         image: "busy-3.png" COMP;
+         image: "busy-4.png" COMP;
+         image: "busy-5.png" COMP;
+         image: "busy-6.png" COMP;
+         image: "busy-7.png" COMP;
+         image: "busy-8.png" COMP;
+         image: "busy-9.png" COMP;
+         image: "exclam.png" COMP;
+         image: "bd_button_close_shadow.png" COMP;
+         image: "bd_button_close_focused.png" COMP;
+         image: "bd_button_close_unfocused.png" COMP;
+      }
+      parts {
+         part {
+            name: "top";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_y: "title_base";
+               }
+               color_class: "border_top";
+               image {
+                  normal: "added_images/DM_Internet_Title_bg.png";
+               }
+            }
+         }
+         part {
+            name: "bottom";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               color_class: "border_bottom";
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.text.title";
+            type: TEXT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               align: 0.5 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 9 2;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -8 2;
+                  to_x: "title_base";
+               }
+               color: 255 255 255 255;
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 0 1;
+                  align: 0.5 0.0;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bt_close";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -28 1;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+         }
+         part {
+            name: "top_hilight";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+                  to: "top";
+               }
+               color_class: "border_top_hilight";
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "buttons_unfoc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "bt_close_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "buttons_foc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "bt_close_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "title_base";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  //to_x: "icon_area";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -3 4;
+                  to_y: "e.text.title";
+                  to_x: "bt_close";
+               }
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "title_base";
+               }
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 0.0;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part {
+            name: "title2";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SOFT_SHADOW;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 1.0;
+               rel1 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 0.0 1.0;
+                  offset: -1 0;
+               }
+               rel2 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+               }
+               color_class: "border_title_active";
+               text {
+                  text_source: "e.text.title";
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.5 0.0;
+                  min: 0 1;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bottom_clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bottom";
+               rel2.to: "bottom";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "resize_b";
+            mouse_events: 0;
+            clip_to: "bottom_clip";
+            description {
+               state: "default" 0.0;
+               min: 20 10;
+               max: 20 10;
+               rel1 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -10;
+               }
+               rel2 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -1;
+               }
+               image {
+                  normal: "bd_resize_b.png";
+               }
+            }
+            description {
+               state: "past" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 0 9;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+         }
+         part {
+            name: "e.event.titlebar";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "title_base";
+               rel2.to: "title_base";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.resize.t";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 3;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.b";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -4;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 15 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.tr";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -16 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 15;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.bl";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -16;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 15 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.resize.br";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 1.0;
+                  offset: -16 -16;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 0;
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.event.close";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "focus_in";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "focused" 0.0;
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+         }
+         program {
+            name: "focus_out";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+         }
+         program {
+            name: "max_full";
+            signal: "e,action,maximize,fullscreen";
+            source: "e";
+            action: STATE_SET "max" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "unmax_full";
+            signal: "e,action,unmaximize,fullscreen";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "shade_end";
+            signal: "e,state,shaded";
+            source: "e";
+            action: STATE_SET "shaded" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         program {
+            name: "unshade_start";
+            signal: "e,state,unshading";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+            target: "e.event.resize.tl";
+            target: "e.event.resize.tr";
+            target: "e.event.resize.bl";
+            target: "e.event.resize.br";
+            target: "e.event.resize.t";
+            target: "e.event.resize.b";
+         }
+         program {
+            name: "resize_b_on";
+            signal: "mouse,in";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_on2";
+            action: STATE_SET "default" 0.0;
+            target: "resize_b";
+            after: "resize_b_on3";
+         }
+         program {
+            name: "resize_b_on3";
+            action: STATE_SET "past" 0.0;
+            transition: LINEAR 0.5;
+            target: "resize_b";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_off";
+            signal: "mouse,out";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on";
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+         }
+         program {
+            name: "bt_close_down";
+            signal: "mouse,down,*";
+            source: "e.event.close";
+            action: STATE_SET "active" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_close_up";
+            signal: "mouse,up,*";
+            source: "e.event.close";
+            action: STATE_SET "default" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+      }
+   }
+   /*** NORESIZE DIALOG WINDOW BORDER ***/
+   group {
+      name: "e/widgets/border/noresize_dialog/border";
+      images {
+         image: "added_images/DM_Internet_Title_bg.png" COMP;
+         image: "added_images/DM_Internet_icon_close.png" COMP;
+         image: "bd_top.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_bottom.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+         image: "bd_resize_b.png" COMP;
+         image: "busy-1.png" COMP;
+         image: "busy-2.png" COMP;
+         image: "busy-3.png" COMP;
+         image: "busy-4.png" COMP;
+         image: "busy-5.png" COMP;
+         image: "busy-6.png" COMP;
+         image: "busy-7.png" COMP;
+         image: "busy-8.png" COMP;
+         image: "busy-9.png" COMP;
+         image: "exclam.png" COMP;
+         image: "bd_button_close_shadow.png" COMP;
+         image: "bd_button_close_focused.png" COMP;
+         image: "bd_button_close_unfocused.png" COMP;
+      }
+      parts {
+         part {
+            name: "top";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_y: "title_base";
+               }
+               color_class: "border_top";
+               image {
+                  normal: "added_images/DM_Internet_Title_bg.png";
+               }
+            }
+         }
+         part {
+            name: "bottom";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+               color_class: "border_bottom";
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "e.text.title";
+            type: TEXT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               align: 0.5 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 9 2;
+                  //to_x: "title_base";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -8 2;
+                  to_x: "title_base";
+               }
+               color: 255 255 255 255;
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 0 1;
+                  align: 0.5 0.0;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bt_close";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 14 14;
+               max: 14 14;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -28 2;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  to_x: "top";
+                  to_y: "top";
+               }
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+         }
+         part {
+            name: "top_hilight";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+                  to: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+                  to: "top";
+               }
+               color_class: "border_top_hilight";
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "buttons_unfoc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "bt_close_unfoc";
+            mouse_events: 0;
+            clip_to: "buttons_unfoc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "buttons_foc";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "bt_close_foc";
+            mouse_events: 0;
+            clip_to: "buttons_foc";
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               image.normal: "added_images/DM_Internet_icon_close.png";
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel1.offset: 0 1;
+               rel2.offset: -1 0;
+            }
+         }
+         part {
+            name: "title_base";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: -3 4;
+                  to_y: "e.text.title";
+                  to_x: "bt_close";
+               }
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "title_base";
+               }
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 0.0;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel2 {
+                  to: "title_base";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part {
+            name: "title2";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SOFT_SHADOW;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               align: 0.0 1.0;
+               rel1 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 0.0 1.0;
+                  offset: -1 0;
+               }
+               rel2 {
+                  to_x: "e.text.title";
+                  to_y: "title_back";
+                  relative: 1.0 1.0;
+                  offset: 0 0;
+               }
+               color_class: "border_title_active";
+               text {
+                  text_source: "e.text.title";
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.5 0.0;
+                  min: 0 1;
+                  text_class: "title_bar";
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               fill.smooth: 0;
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "bottom_clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bottom";
+               rel2.to: "bottom";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "resize_b";
+            mouse_events: 0;
+            clip_to: "bottom_clip";
+            description {
+               state: "default" 0.0;
+               min: 20 10;
+               max: 20 10;
+               rel1 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -10;
+               }
+               rel2 {
+                  to: "bottom";
+                  relative: 0.5 0.0;
+                  offset: 0 -1;
+               }
+               image {
+                  normal: "bd_resize_b.png";
+               }
+            }
+            description {
+               state: "past" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 0 9;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "shaded" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+            description {
+               state: "max" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+                  to_y: "top";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+                  to_y: "bottom";
+               }
+            }
+         }
+         part {
+            name: "e.event.titlebar";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "title_base";
+               rel2.to: "title_base";
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.event.close";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "bt_close";
+               rel2.to: "bt_close";
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "focus_in";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "focused" 0.0;
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+         }
+         program {
+            name: "focus_out";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "buttons_foc";
+            target: "buttons_unfoc";
+         }
+         program {
+            name: "max_full";
+            signal: "e,action,maximize,fullscreen";
+            source: "e";
+            action: STATE_SET "max" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "unmax_full";
+            signal: "e,action,unmaximize,fullscreen";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bottom";
+            target: "e.swallow.client";
+         }
+         program {
+            name: "resize_b_on";
+            signal: "mouse,in";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_on2";
+            action: STATE_SET "default" 0.0;
+            target: "resize_b";
+            after: "resize_b_on3";
+         }
+         program {
+            name: "resize_b_on3";
+            action: STATE_SET "past" 0.0;
+            transition: LINEAR 0.5;
+            target: "resize_b";
+            after: "resize_b_on2";
+         }
+         program {
+            name: "resize_b_off";
+            signal: "mouse,out";
+            source: "e.event.resize.b";
+            action: ACTION_STOP;
+            target: "resize_b_on";
+            target: "resize_b_on2";
+            target: "resize_b_on3";
+         }
+         program {
+            name: "bt_close_down";
+            signal: "mouse,down,*";
+            source: "e.event.close";
+            action: STATE_SET "active" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+         program {
+            name: "bt_close_up";
+            signal: "mouse,up,*";
+            source: "e.event.close";
+            action: STATE_SET "default" 0.0;
+            target: "bt_close_unfoc";
+            target: "bt_close_foc";
+         }
+      }
+   }
+   /*** BONUS BORDERS TO CHOOSE FROM ***/
+   group {
+      name: "e/widgets/border/pixel/border";
+      parts {
+         part {
+            name: "px1";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 0;
+               }
+               color: 0 0 0 255;
+            }
+         }
+         part {
+            name: "px2";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 -1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               color: 0 0 0 255;
+            }
+         }
+         part {
+            name: "px3";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 1;
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 0 -2;
+               }
+               color: 0 0 0 255;
+            }
+         }
+         part {
+            name: "px4";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: -1 1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -2;
+               }
+               color: 0 0 0 255;
+            }
+         }
+         part {
+            name: "e.swallow.client";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 1 1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -2 -2;
+               }
+            }
+         }
+      }
+   }
+/////////////////////////////////////////////////////////////////////////////
+/*** THE DEFAULT MOUSE CURSOR - MONOCHROME. REALLY BORING ***/
+   /* This pointer is used if the Xserver does not support full ARGB color
+    * pointers. This can happen if X is old or the driver or libxcursor did
+    * not exist when ecore was compiled. since the cursor will be literally
+    * reduced down to black and white with a single transparency mask,
+    * colors other than black and whigte will be lost (and be approximated
+    * with dithering) and any translucency other than completely opaque or
+    * completely transparent pixels will also be lost. it then makes sense
+    * to have a special black and white only image with no semi-transparency
+    * so when this is displayed it will look directly as intended by the
+    * artist */
+
+   group {
+      name: "e/pointer/enlightenment/default/mono";
+      images {
+         image: "added_images/e17_pointer_mono.png" COMP;
+      }
+      parts {
+         part {
+            name: "e/pointer";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "added_images/e17_pointer_mono.png";
+               }
+            }
+         }
+         part {
+            name: "hotspot";
+            /* this cursor also has a hotspot */
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 1 1;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 1 1;
+               }
+            }
+         }
+      }
+   }
+/////////////////////////////////////////////////////////////////////////////
+/*** TOOLBAR ****/
+
+   group {
+      name: "e/widgets/toolbar";
+      images {
+         image: "bt_dis_base.png" COMP;
+         image: "bt_dis_hilight.png" COMP;
+         image: "bt_dis_shine.png" COMP;
+         image: "icon_left_arrow.png" COMP;
+         image: "icon_right_arrow.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2 2;
+               }
+               rel2.offset: -3 -3;
+               image {
+                  normal: "bt_dis_base.png";
+                  border: 4 4 4 4;
+               }
+            }
+         }
+         part {
+            name: "clipper";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "base";
+                  offset: 2 2;
+               }
+               rel2 {
+                  to: "base";
+                  offset: -3 -3;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            clip_to: "clipper";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1.to: "clipper";
+               rel2.to: "clipper";
+            }
+         }
+         part {
+            name: "over2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               image {
+                  normal: "bt_dis_shine.png";
+                  border: 4 4 4 4;
+               }
+            }
+         }
+         part {
+            name: "over1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               rel2.relative: 1.0 0.5;
+               image {
+                  normal: "bt_dis_hilight.png";
+                  border: 4 4 4 0;
+               }
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "left_arrow";
+            mouse_events: 1;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               image.normal: "icon_left_arrow.png";
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 0.0 0.5;
+               min: 32 32;
+               max: 32 32;
+            }
+            description {
+               state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "right_arrow";
+            mouse_events: 1;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               image.normal: "icon_right_arrow.png";
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 1.0 0.5;
+               min: 32 32;
+               max: 32 32;
+            }
+            description {
+               state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.dragable.hbar";
+            mouse_events: 0;
+            dragable {
+               x: 1 1 0;
+               y: 0 0 0;
+               confine: "base";
+            }
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "base";
+               rel2.to: "base";
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sb_hbar_show";
+            signal: "e,action,show,hbar";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.5;
+            target: "left_arrow";
+            target: "right_arrow";
+         }
+         program {
+            name: "sb_hbar_hide";
+            signal: "e,action,hide,hbar";
+            source: "e";
+            action: STATE_SET "hidden" 0.0;
+            target: "left_arrow";
+            target: "right_arrow";
+            transition: LINEAR 0.5;
+         }
+         program {
+            name: "sb_left";
+            signal: "mouse,down,1";
+            source: "left_arrow";
+            action: SIGNAL_EMIT "e,action,prev" "e";
+         }
+         program {
+            name: "sb_right";
+            signal: "mouse,down,1";
+            source: "right_arrow";
+            action: SIGNAL_EMIT "e,action,next" "e";
+         }
+      }
+   }
+   group {
+      name: "e/widgets/toolbar/item";
+      images {
+         image: "toolbar_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "label2";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               fixed: 0 1;
+               rel1.to: "e.text.label";
+               rel2.to: "e.text.label";
+               color: 0 0 0 255;
+               text {
+                  font: "Sans";
+                  text_source: "e.text.label";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "fileman_icon";
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               image {
+                  normal: "toolbar_sel.png";
+                  border: 3 3 0 0;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  to_y: "e.text.label";
+                  relative: 1.0 0.0;
+                  offset: -3 -1;
+               }
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               fixed: 0 1;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 0 2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               visible: 0;
+               color: 224 224 224 255;
+               color3: 0 0 0 32;
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "fileman_icon";
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            mouse_events: 1;
+            ignore_flags: ON_HOLD;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "bg";
+            target: "e.text.label";
+            target: "label2";
+            transition: LINEAR 0.2;
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "e.text.label";
+            target: "label2";
+            transition: LINEAR 0.1;
+         }
+         program {
+            name: "go";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "e,action,click" "e";
+         }
+      }
+   }
+
+
+/////////////////////////////////////////////////////////////////////////////
+/*** MENUS ***/
+
+   /* this is the background for all menus. it also may optionally display a
+    * title for the menu. this is wrapped around all the menu items that are
+    * laid out in a vertical list from top to bottom */
+
+   group {
+      name: "e/widgets/menu/default/background";
+      images {
+         image: "base_bg.png" COMP;
+         image: "bd_top_hilight.png" COMP;
+         image: "bd_title_bg.png" COMP;
+         image: "bd_title_over.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.0;
+               color_class: "menu_base";
+               image {
+                  normal: "base_bg.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+               /* note - a shortcut for avoiding doing
+                * fill { smooth: 0; } */
+            }
+         }
+         part {
+            name: "top_hilight";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 15;
+               }
+               image.normal: "bd_top_hilight.png";
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "title_back";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 4 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -5 0;
+               }
+               image {
+                  normal: "bd_title_bg.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 4 0;
+               }
+               rel2 {
+                  to_y: "e.text.title";
+                  relative: 1.0 1.0;
+                  offset: -5 -4;
+               }
+            }
+         }
+         part {
+            name: "e.text.title";
+            /* e sets the text of this to the title
+             * if there is any */
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            effect: SOFT_SHADOW;
+            description {
+               state: "default" 0.0;
+               fixed: 1 1;
+               visible: 0;
+               align: 0.5 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -1 0;
+               }
+               color_class: "menu_title";
+               text {
+                  text_source: "e.text.title";
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  align: 0.5 0.0;
+                  min: 0 0;
+                  text_class: "menu_title";
+               }
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color_class: "menu_title_active";
+               text.min: 1 1;
+            }
+         }
+         part {
+            name: "title_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               rel1.to: "title_back";
+               rel2.to: "title_back";
+               image {
+                  normal: "bd_title_over.png";
+                  border: 7 7 2 7;
+               }
+               fill.smooth: 0;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            /* this swallow part determines
+             * where in the menu the vertical
+             * list of menu items is put */
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to_y: "e.text.title";
+                  relative: 0.0 1.0;
+                  offset: 2 1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -3 -3;
+               }
+            }
+         }
+      }
+      programs {
+         program {
+            name: "on";
+            /* this program is run when e emits a signal
+             * to display a title. e will also set the
+             * title text */
+            signal: "e,action,show,title";
+            source: "e";
+            action: STATE_SET "active" 0.0;
+            target: "title_back";
+            target: "e.text.title";
+            target: "title_over";
+         }
+         program {
+            name: "off";
+            /* run when the title is removed */
+            signal: "e,action,hide,title";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "title_back";
+            target: "e.text.title";
+            target: "title_over";
+         }
+      }
+   }
+   /* this is placed as a horizontal separator between menu items in the
+    * vertical menu item list. it has no functionality other than being
+    * a visual separator */
+   group {
+      name: "e/widgets/menu/default/separator";
+      images {
+         image: "menu_sep.png" COMP;
+      }
+      parts {
+         part {
+            name: "separator";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 16 2;
+               rel1.offset: 2 2;
+               rel2.offset: -3 -3;
+               image {
+                  normal: "menu_sep.png";
+                  border: 2 2 0 0;
+               }
+               fill.smooth: 0;
+            }
+         }
+      }
+   }
+   /* this is used for regular menu items. this is what swallows/holds the
+    * whole line of the menu item, icon, check/radio mark, label and submenu
+    * indicator, where applicable */
+   group {
+      name: "e/widgets/menu/default/item_bg";
+      /* this is idential to the regular menu item above, but used only for
+       * items that have a submenu. this is to allow for a possible different
+       * look for submenu holding items. here this is identical to to the
+       * normal menu item, thus we are making use of the alias directive that
+       * gives a group the ability to go by manu names */
+      alias: "e/widgets/menu/default/submenu_bg";
+      images {
+         image: "menu_sel_bg.png" COMP;
+         image: "menu_sel_fg.png" COMP;
+      }
+      parts {
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -5 -3;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 4 5;
+               }
+               image {
+                  normal: "menu_sel_bg.png";
+                  border: 8 8 5 9;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 1 2;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            /* all item content will go here */
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.0;
+               rel1.offset: 2 1;
+               rel2.offset: -3 -2;
+            }
+         }
+         part {
+            name: "fg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               image {
+                  normal: "menu_sel_fg.png";
+                  border: 8 8 5 9;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sel";
+            /* when the menu item is selected (hilighted)
+             * this program is run to give the whole item
+             * an overall selected look */
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            transition: LINEAR 0.2;
+            target: "bg";
+            target: "fg";
+         }
+         program {
+            name: "unsel";
+            /* when selection is removed from the menu
+             * item */
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.1;
+            target: "bg";
+            target: "fg";
+         }
+      }
+   }
+   /* this group holds a menu icon. here we just use it to add padding around
+    * the icon. And to gray-out when disabled */
+   group {
+      name: "e/widgets/menu/default/icon";
+      parts {
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               min: 10 10;
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "disabled" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            /* icon is swallowed here */
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 24 24;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -3 -3;
+               }
+            }
+         }
+      }
+      programs {
+         program {
+            name: "enable";
+            /* enable */
+            signal: "e,state,enable";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "clip";
+         }
+         program {
+            name: "disable";
+            /* disable */
+            signal: "e,state,disable";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "clip";
+         }
+      }
+   }
+   /* this is the actual text label for the menu item */
+   group {
+      name: "e/widgets/menu/default/label";
+      parts {
+         part {
+            name: "e.text.label";
+            /* e sets the text of this */
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 1 -1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 1;
+               }
+               color_class: "menu_item";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "menu_item";
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color_class: "menu_item_active";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "menu_item_disabled";
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sel";
+            /* when the menu item is actually selected */
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            transition: LINEAR 0.2;
+            target: "e.text.label";
+         }
+         program {
+            name: "unsel";
+            /* on de-select */
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.3;
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            /* enable */
+            signal: "e,state,enable";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.3;
+            target: "e.text.label";
+         }
+         program {
+            name: "disable";
+            /* disable */
+            signal: "e,state,disable";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            //transition: LINEAR 0.3;
+            target: "e.text.label";
+         }
+      }
+   }
+   /* this is a small arrow on the right of the menu item to indicate that it
+    * has a submenu after it */
+   group {
+      name: "e/widgets/menu/default/submenu";
+      images {
+         image: "menu_arrow_normal.png" COMP;
+         image: "menu_arrow_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "arrow";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 9 12;
+               max: 9 12;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 4 1;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -3 -1;
+               }
+               image.normal: "menu_arrow_normal.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "menu_arrow_sel.png";
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sel";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "arrow";
+         }
+         program {
+            name: "unsel";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "arrow";
+         }
+      }
+   }
+   /* this is placed left of the icon in a menu item (if any icon) or left
+    * of the label if no icon is present. this is a checkbox to indicate if
+    * the menu item is enabled or disabled */
+   group {
+      name: "e/widgets/menu/default/check";
+      images {
+         image: "check_base.png" COMP;
+         image: "check_on.png" COMP;
+         image: "check_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               image.normal: "check_base.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "check_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "check_sel.png";
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sel";
+            /* on selection of the menu item */
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "mark";
+         }
+         program {
+            name: "unsel";
+            /* de-select */
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+         }
+         program {
+            name: "on";
+            /* if the checkmark is to be displayed */
+            signal: "e,state,on";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            /* check mark is not to be displayed */
+            signal: "e,state,off";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+      }
+   }
+   /* for a radio menu item - same as check, but only one of a group of radio
+    * menu item can be selected at any one time */
+   group {
+      name: "e/widgets/menu/default/radio";
+      images {
+         image: "radio_base.png" COMP;
+         image: "radio_on.png" COMP;
+         image: "radio_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               image.normal: "radio_base.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "menu_arrow_sel.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "radio_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "radio_sel.png";
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sel";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "mark";
+         }
+         program {
+            name: "unsel";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+         }
+         program {
+            name: "on";
+            signal: "e,state,on";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            signal: "e,state,off";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+      }
+   }
+
+
+/////////////////////////////////////////////////////////////////////////////
+/*** SHELF ***/
+
+   /* Shelves are "panels" that  are placed around the edges of the screen
+    * to hold useful gadgets to control things - like switch desktops
+    * (the pager module and its gadget), launch programs, and anything else
+    * someone wants to put in there. The way to add gadgets to a shelf is to
+    * write a module that places a gadget there. This means that it might end
+    * up containing all sorts of things and the artist needs to be aware of
+    * that and make sure the shelf border and background etc. won't interfere
+    * with all manner of things that may get placed there */
+
+   group {
+      name: "e/shelf/default/base";
+      data {
+         /* this tells e the shelf is shaped, not rectangular */
+         //    item: "shaped" "1";
+         /* this tells e the number of pixels of the shelf to leave "exposed"
+          * when auto-hiding the shelf */
+         item: "hidden_state_size" "1";
+         /* This makes the border hide instantly after the given amount of
+          * seconds - in this case 3 seconds. This means there will be no
+          * visible part of the shelf after this time at all as it will be
+          * totally hidden */
+         //    item: "instant_delay" "3.0";
+      }
+      images {
+         image: "base_bg.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "shelf_base";
+               image.normal: "base_bg.png";
+               image.border: 2 2 2 2;
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 3 3;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -4 -4;
+               }
+            }
+         }
+      }
+      programs {
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top_left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top_right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom_left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom_right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left_top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left_bottom";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right_top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right_bottom";
+         //    source: "e";
+         //      }
+         // tell us we became a visible shelf. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,visible";
+         //    source: "e";
+         //      }
+         // tell us we became a hidden shelf. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,hidden";
+         //    source: "e";
+         //      }
+      }
+   }
+   /* This is put around gadgets in the shelf if they ask for an "inset" style
+    * framing. This puts some sort of bordering around them to make them look
+    * "inset" into the shelf or screen. this is meant to go with the default
+    * shelf style as implied in the group name */
+   group {
+      name: "e/shelf/default/inset";
+      images {
+         image: "inset_sunk.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "inset";
+                  offset: 1 1;
+               }
+               rel2 {
+                  to: "inset";
+                  offset: -2 -2;
+               }
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "base";
+                  offset: 1 1;
+               }
+               rel2 {
+                  to: "base";
+                  offset: -2 -2;
+               }
+            }
+         }
+         part {
+            name: "inset";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 1 1;
+               rel2.offset: -2 -2;
+               image.normal: "inset_sunk.png";
+               image.middle: 0;
+               /* here we say the "middle" part of the image
+                * between the borders is not filled - it's
+                * empty, so don't draw it - ignore it */
+               image.border: 7 7 7 7;
+               fill.smooth: 0;
+            }
+         }
+      }
+      programs {
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top_left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,top_right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom_left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,bottom_right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left_top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,left_bottom";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right_top";
+         //    source: "e";
+         //      }
+         // tell us what oriantation we are in. not used here
+         //      program { name: "xx";
+         //    signal: "e,state,orientation,right_bottom";
+         //    source: "e";
+         //      }
+      }
+   }
+   /* Same as inset, but meant to be with no decorations that are visible. here
+    * we simply make the content swallow inset a bit from the edges to align
+    * with any plain style inset boxes */
+   group {
+      name: "e/shelf/default/plain";
+      parts {
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1.offset: 1 1;
+               rel2.offset: -2 -2;
+            }
+         }
+      }
+   }
+   /* This is the "invisible" shelf. Yes. Even it has visual config in edje.
+    * The idea is that it will remain invisible, BUT will allow the designer
+    * to do some layout and padding. This gets the same signals as the
+    * default shelf and can provide the same data items */
+   group {
+      name: "e/shelf/invisible/base";
+      data.item: "shaped" "1";
+      parts {
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+            }
+         }
+      }
+   }
+   group {
+      name: "e/shelf/invisible/inset";
+      images {
+         image: "inset_sunk_dark.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "inset";
+                  offset: 1 1;
+               }
+               rel2 {
+                  to: "inset";
+                  offset: -2 -2;
+               }
+               color: 0 0 0 32;
+            }
+         }
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "base";
+                  offset: 1 1;
+               }
+               rel2 {
+                  to: "base";
+                  offset: -2 -2;
+               }
+            }
+         }
+         part {
+            name: "inset";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 1 1;
+               rel2.offset: -2 -2;
+               image.normal: "inset_sunk_dark.png";
+               image.middle: 0;
+               image.border: 7 7 7 7;
+               fill.smooth: 0;
+            }
+         }
+      }
+   }
+   group {
+      name: "e/shelf/invisible/plain";
+      parts {
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1.offset: 1 1;
+               rel2.offset: -2 -2;
+            }
+         }
+      }
+   }
+   /* This is the alternate shelf. It provides a stylistic alternative to
+    * make the shelf more dynamic to your tastes and wallpaper. It is
+    * selected in the Shelf Configuration. More alternative shelfs can
+    * be provided by using more group names. eg, "e/shelf/black/base" */
+   group {
+      name: "e/shelf/alternate/base";
+      images {
+         image: "shelf_alt_bg.png" COMP;
+         //     image: "shelf_alt_bg_left.png" COMP;
+         //     image: "shelf_alt_bg_right.png" COMP;
+         image: "shelf_alt_over.png" COMP;
+         //     image: "shelf_alt_over_left.png" COMP;
+         //     image: "shelf_alt_over_right.png" COMP;
+         image: "shelf_alt_shine.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "shelf_base";
+               image.normal: "shelf_alt_bg.png";
+               fill.smooth: 0;
+            }
+            //        description { state: "left" 0.0;
+            //           image.normal: "shelf_alt_bg_left.png";
+            //           fill.smooth: 0;
+            //        }
+            //        description { state: "right" 0.0;
+            //           image.normal: "shelf_alt_bg_right.png";
+            //           fill.smooth: 0;
+            //        }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 3 3;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -4 -4;
+               }
+            }
+         }
+         part {
+            name: "shine";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image.normal: "shelf_alt_shine.png";
+               rel2.relative: 1.0 0.5;
+               fill.smooth: 0;
+            }
+            //        description { state: "left" 0.0;
+            //           inherit: "default" 0.0;
+            //           color: 255 255 255 0;
+            //        }
+            //        description { state: "right" 0.0;
+            //           inherit: "default" 0.0;
+            //           color: 255 255 255 0;
+            //        }
+         }
+         part {
+            name: "over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image.normal: "shelf_alt_over.png";
+               image.border: 5 5 5 5;
+               image.middle: 0;
+               fill.smooth: 0;
+            }
+            //        description { state: "left" 0.0;
+            //           image.normal: "shelf_alt_over_left.png";
+            //           image.border: 5 5 5 5;
+            //           image.middle: 0;
+            //           fill.smooth: 0;
+            //        }
+            //        description { state: "right" 0.0;
+            //           image.normal: "shelf_alt_over_right.png";
+            //           image.border: 5 5 5 5;
+            //           image.middle: 0;
+            //           fill.smooth: 0;
+            //        }
+         }
+      }
+      /* Because programs can not respond to 2 different types of signals,
+       * the programs are split into individual programs that point towards
+       * the base program for its orientation. */
+      programs {
+         /* Left orientation */
+         //     program { name: "left";
+         //        signal: "e,state,orientation,left";
+         //        source: "e";
+         //        action: STATE_SET "left" 0.0;
+         //        target: "base";
+         //        target: "over";
+         //        target: "shine";
+         //     }
+         //     program { name: "left_top";
+         //        signal: "e,state,orientation,left_top";
+         //        source: "e";
+         //        after: "left";
+         //     }
+         //     program { name: "left_bottom";
+         //        signal: "e,state,orientation,left_bottom";
+         //        source: "e";
+         //        after: "left";
+         //     }
+         //     /* Right orientation */
+         //     program { name: "right";
+         //        signal: "e,state,orientation,right";
+         //        source: "e";
+         //        action: STATE_SET "right" 0.0;
+         //        target: "base";
+         //        target: "over";
+         //        target: "shine";
+         //     }
+         //     program { name: "right_top";
+         //        signal: "e,state,orientation,right_top";
+         //        source: "e";
+         //        after: "right";
+         //     }
+         //     program { name: "right_bottom";
+         //        signal: "e,state,orientation,right_bottom";
+         //        source: "e";
+         //        after: "right";
+         //     }
+      }
+   }
+   /* This is the alternate shelf. It provides a stylistic alternative to
+    * make the shelf more dynamic to your tastes and wallpaper. It is
+    * selected in the Shelf Configuration. More alternative shelfs can
+    * be provided by using more group names. eg, "e/shelf/black/base" */
+   group { name: "e/shelf/alternate_vertical/base";
+      images {
+        image: "shelf_alt_vert_bg.png" COMP;
+//      image: "shelf_alt_bg_left.png" COMP;
+//      image: "shelf_alt_bg_right.png" COMP;
+        image: "shelf_alt_over.png" COMP;
+//      image: "shelf_alt_over_left.png" COMP;
+//      image: "shelf_alt_over_right.png" COMP;
+      }
+      parts {
+        part { name: "base";
+           mouse_events: 0;
+           description { state: "default" 0.0;
+               color_class: "shelf_base";
+              image.normal: "shelf_alt_vert_bg.png";
+              fill.smooth: 0;
+           }
+//         description { state: "left" 0.0;
+//            image.normal: "shelf_alt_bg_left.png";
+//            fill.smooth: 0;
+//         }
+//         description { state: "right" 0.0;
+//            image.normal: "shelf_alt_bg_right.png";
+//            fill.smooth: 0;
+//         }
+        }
+        part { name: "e.swallow.content";
+           type: SWALLOW;
+           description { state: "default" 0.0;
+              rel1 {
+                 relative: 0.0 0.0;
+                 offset: 3 3;
+              }
               rel2 {
-                 relative: 0.5 1.0;
-                 offset: 0 9;
+                 relative: 1.0 1.0;
+                 offset: -4 -4;
               }
            }
         }
+        part { name: "over";
+           mouse_events: 0;
+           description { state: "default" 0.0;
+              image.normal: "shelf_alt_over.png";
+              image.border: 5 5 5 5;
+              image.middle: 0;
+              fill.smooth: 0;
+           }
+//         description { state: "left" 0.0;
+//            image.normal: "shelf_alt_over_left.png";
+//            image.border: 5 5 5 5;
+//            image.middle: 0;
+//            fill.smooth: 0;
+//         }
+//         description { state: "right" 0.0;
+//            image.normal: "shelf_alt_over_right.png";
+//            image.border: 5 5 5 5;
+//            image.middle: 0;
+//            fill.smooth: 0;
+//         }
+        }
+      }
+      /* Because programs can not respond to 2 different types of signals,
+       * the programs are split into individual programs that point towards
+       * the base program for its orientation. */
+      programs {
+        /* Left orientation */
+//      program { name: "left";
+//         signal: "e,state,orientation,left";
+//         source: "e";
+//         action: STATE_SET "left" 0.0;
+//         target: "base";
+//         target: "over";
+//         target: "shine";
+//      }
+//      program { name: "left_top";
+//         signal: "e,state,orientation,left_top";
+//         source: "e";
+//         after: "left";
+//      }
+//      program { name: "left_bottom";
+//         signal: "e,state,orientation,left_bottom";
+//         source: "e";
+//         after: "left";
+//      }
+//      /* Right orientation */
+//      program { name: "right";
+//         signal: "e,state,orientation,right";
+//         source: "e";
+//         action: STATE_SET "right" 0.0;
+//         target: "base";
+//         target: "over";
+//         target: "shine";
+//      }
+//      program { name: "right_top";
+//         signal: "e,state,orientation,right_top";
+//         source: "e";
+//         after: "right";
+//      }
+//      program { name: "right_bottom";
+//         signal: "e,state,orientation,right_bottom";
+//         source: "e";
+//         after: "right";
+//      }
+      }
+   }
+   group {
+      name: "e/shelf/alternate/inset";
+      images {
+         image: "inset_raised.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "inset";
+                  offset: 4 4;
+               }
+               rel2 {
+                  to: "inset";
+                  offset: -5 -5;
+               }
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               rel1.to: "base";
+               rel2.to: "base";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "base";
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "base";
+                  offset: -1 -1;
+               }
+            }
+         }
+         part {
+            name: "inset";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.offset: -1 -1;
+               rel2.offset: 0 0;
+               image.normal: "inset_raised.png";
+               image.middle: 0;
+               image.border: 7 7 7 7;
+               fill.smooth: 0;
+            }
+         }
+      }
+   }
+   group {
+      name: "e/shelf/alternate/plain";
+      parts {
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               rel1.offset: 1 1;
+               rel2.offset: -2 -2;
+            }
+         }
+      }
+   }
+
+/////////////////////////////////////////////////////////////////////////////
+/*** MOD: CLOCK ***/
+
+images {
+   image: "clock/DM_Clock_time.png" COMP;
+   image: "clock/DM_Clock_time_0.png" COMP;
+   image: "clock/DM_Clock_time_1.png" COMP;
+   image: "clock/DM_Clock_time_2.png" COMP;
+   image: "clock/DM_Clock_time_3.png" COMP;
+   image: "clock/DM_Clock_time_4.png" COMP;
+   image: "clock/DM_Clock_time_5.png" COMP;
+   image: "clock/DM_Clock_time_6.png" COMP;
+   image: "clock/DM_Clock_time_7.png" COMP;
+   image: "clock/DM_Clock_time_8.png" COMP;
+   image: "clock/DM_Clock_time_9.png" COMP;
+   image: "clock/DM_Clock_time_AM.png" COMP;
+   image: "clock/DM_Clock_time_PM.png" COMP;
+   image: "clock/DM_Clock_time_center.png" COMP;
+}
+
+#define DIGIT_WIDTH  0.25
+#define DIGIT_10_WIDTH  0.1
+#define DIGIT_Y      0.2
+#define DIGIT_HEIGHT 0.8
+#define HOUR_10_XOFF 0.0
+#define WEEKDAY_XOFF 0.0
+#define DAY_XOFF     0.15
+#define DAY_HEIGHT   0.2
+#define MONTH_XOFF   0.25
+#define HOUR_1_XOFF  0.1
+#define COLON_XOFF   0.32
+#define COLON_WIDTH  0.05
+#define MIN_10_XOFF  0.34
+#define MIN_1_XOFF   0.54
+#define AM_PM_XOFF   0.78
+#define AM_PM_WIDTH  0.15
+
+#define BASE_DESCR(XOFF)                 \
+description { state: "default" 0.0;             \
+   image.normal: "clock/DM_Clock_time_0.png";   \
+   visible: 1;                                  \
+   rel1 {                                       \
+      to: "whole";                              \
+      relative: XOFF DIGIT_Y;                       \
+      offset: 0 0;                              \
+   }                                            \
+   rel2 {                                       \
+      to: "whole";                              \
+      relative: (XOFF+DIGIT_WIDTH) (DIGIT_Y+DIGIT_HEIGHT);         \
+      offset: -1 -1;                            \
+   }                                            \
+   color: 255 255 255 0;                        \
+}                                               \
+description { state: "reset" 0.0;               \
+   inherit: "default" 0.0;                      \
+   color: 255 255 255 255;                      \
+}
+
+#define DIGIT_DESCR_10HOUR(IDX,NUM, X)          \
+description { state: "default" 0.0;             \
+   image.normal: "clock/DM_Clock_time.png";     \
+   visible: 0;                                  \
+   rel1 {                                       \
+      to: "whole";                              \
+      relative: HOUR_10_XOFF DIGIT_Y;           \
+      offset: 0 0;                              \
+   }                                            \
+   rel2 {                                       \
+      to: "whole";                              \
+      relative: (HOUR_10_XOFF+DIGIT_10_WIDTH) (DIGIT_Y+DIGIT_HEIGHT);         \
+      offset: -1 -1;                            \
+   }                                            \
+   color: 255 255 255 0;                        \
+}                                               \
+description { state: "digit" 0.0;               \
+   inherit: "default" 0.0;                      \
+   visible: 0;                                  \
+   color: 255 255 255 255;                      \
+}                                               \
+description { state: "digit" 0.1;               \
+   inherit: "default" 0.0;                      \
+   visible: 1;                                  \
+   color: 255 255 255 255;                      \
+}
+
+#define DIGIT_DESCR(IDX,NUM, X)                         \
+description { state: "digit" IDX;                       \
+   inherit: "default" 0.0;                              \
+   image.normal: "clock/DM_Clock_time_"NUM".png";       \
+   rel1 {                                               \
+      relative: X DIGIT_Y;                              \
+      offset: 0 0;                                      \
+   }                                                    \
+   rel2 {                                               \
+      relative: (X+DIGIT_WIDTH) (DIGIT_Y+DIGIT_HEIGHT); \
+      offset: 0 0;                                      \
+   }                                                    \
+   color: 255 255 255 255;                              \
+}
+#define BASE_DESCR_AM_PM(XOFF)                  \
+description { state: "default" 0.0;             \
+   image.normal: "clock/DM_Clock_time_0.png";   \
+   visible: 1;                                  \
+   rel1 {                                       \
+      to: "whole";                              \
+      relative: XOFF 0.0;                       \
+      offset: 0 0;                              \
+   }                                            \
+   rel2 {                                       \
+      to: "whole";                              \
+      relative: (XOFF+AM_PM_WIDTH) 1.0;         \
+      offset: -1 -1;                            \
+   }                                            \
+   color: 255 255 255 0;                        \
+}                                               \
+description { state: "reset" 0.0;               \
+   inherit: "default" 0.0;                      \
+   color: 255 255 255 255;                      \
+}
+
+#define DIGIT_DESCR_AM_PM(IDX,NUM, X)                   \
+description { state: "digit" IDX;                       \
+   inherit: "default" 0.0;                              \
+   image.normal: "clock/DM_Clock_time_"NUM".png";       \
+   rel1 {                                               \
+      relative: X 0.6;                                  \
+      offset: 0 0;                                      \
+   }                                                    \
+   rel2 {                                               \
+      relative: (X+AM_PM_WIDTH) 0.9;                    \
+      offset: 0 0;                                      \
+   }                                                    \
+   color: 255 255 255 255;                              \
+}
+
+#define BASE_DESCR_WD_MD(XOFF)                  \
+description { state: "default" 0.0;             \
+   visible: 1;                                  \
+   rel1 {                                       \
+      to: "whole";                              \
+      relative: XOFF 0.0;                       \
+      offset: 0 0;                              \
+   }                                            \
+   rel2 {                                       \
+      to: "whole";                              \
+      relative: (XOFF+0.5) 0.3;                 \
+      offset: -1 -1;                            \
+   }                                            \
+   color: 255 255 255 255;                      \
+   text {                                       \
+               text: "";                        \
+               font: "Helvetica";               \
+               size: 16;                        \
+               min: 1 1;                        \
+               align: 0.5 0.5;                  \
+               text_class: "configure";         \
+            }                                   \
+}                                               \
+description { state: "reset" 0.0;               \
+   inherit: "default" 0.0;                      \
+   color: 255 255 255 255;                      \
+}
+
+
+#define DIGIT_DESCR_WD_MD(IDX,DAY, X)                   \
+description { state: "digit" IDX;                       \
+   inherit: "default" 0.0;                              \
+   rel1 {                                               \
+      relative: X 0.0;                                  \
+      offset: 0 0;                                      \
+   }                                                    \
+   rel2 {                                               \
+      relative: (X+0.5) DAY_HEIGHT;                     \
+      offset: -1 -1;                                    \
+   }                                                    \
+   color: 255 255 255 255;                              \
+   color2: 110 133 140 192;                                                \
+   color3: 0 0 0 192;                                                          \
+   text {                                               \
+               text: DAY;                               \
+               font: "Helvetica";                       \
+               size: 20;                                \
+               min: 1 1;                                \
+               align: 0.0 0.0;                          \
+               text_class: "configure";                 \
+            }                                           \
+}
+
+#define BASE_DESCR_DAY(XOFF)                    \
+description { state: "default" 0.0;             \
+   visible: 1;                                  \
+   rel1 {                                       \
+      to: "whole";                              \
+      relative: XOFF 0.0;                       \
+      offset: 0 0;                              \
+   }                                            \
+   rel2 {                                       \
+      to: "whole";                              \
+      relative: (XOFF+0.5) DAY_HEIGHT;          \
+      offset: -1 -1;                            \
+   }                                            \
+   color: 255 255 255 255;                      \
+    color2: 110 133 140 192;                                   \
+    color3: 0 0 0 192;                                                 \
+   text {                                       \
+               text: "??";                      \
+               font: "Helvetica";               \
+               size: 20;                        \
+               min: 1 1;                        \
+               align: 0.0 0.0;                  \
+               text_class: "configure";         \
+            }                                   \
+}                                               \
+description { state: "reset" 0.0;               \
+   inherit: "default" 0.0;                      \
+   color: 255 255 255 255;                      \
+}
+
+// This sets the digit transition type and length
+#define DIGITRANS SINUSOIDAL 0
+
+#define CELL_TRANS(NAME,IDX,TARGET)             \
+   program { name: NAME;                        \
+   action: STATE_SET "digit" IDX;               \
+   transition: DIGITRANS;                       \
+   target: TARGET;                              \
+}
+#define HOUR_10_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"hour_10")
+#define HOUR_1_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"hour_1")
+#define MINUTE_10_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"min_10")
+#define MINUTE_1_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"min_1")
+#define WEEKDAY_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"weekday")
+#define MONTH_TRANS(NAME,IDX) CELL_TRANS(NAME,IDX,"month")
+
+styles
+{
+   style {
+      name: "text_style";
+      base: "font=Helvetica font_size=50 align=left color=#000 style=shadow shadow_color=#ffffff80 wrap=word";
+
+      tag: "br" "\n";
+      tag: "hilight" "+ font=Sans:style=Bold style=glow color=#fff glow2_color=#fe87 glow_color=#fa14";
+      tag: "title" "+ font_size=12 font=Sans:style=Bold style=soft_shadow color=#fff shadow_color=#00000020";
+      tag: "/title" "- \n \n";
+   }
+}
+
+group { name: "e/modules/clock/main";
+
+   script {
+      public cur_hour_;
+      public m_10_;
+      public clock_cb(unused) {
+         new year, month, day, yearday, weekday, hour, minute;
+         new Float:second;
+         new h;
+         new m_mod, m_tmp;
+         new pm;
+         new text[5];
+
+         date(year, month, day, yearday, weekday, hour, minute, second);
+
+         // It is my preference not to have a second hand so the
+         // the timer is set to go off at the top of the minute.
+         timer(61.0 - second, "clock_cb", 1);
+         snprintf(text, 5, "%d%d", day/10,day%10);
+
+         set_text(PART:"day", text);
+         h = get_int(cur_hour_)
+         if (hour != h) {
+            set_int(cur_hour_, hour);
+
+            if (hour > 12) pm = 1;
+            else if (hour == 12) pm = 0;
+
+             if(pm == 1)       run_program(PROGRAM:"pm");
+             else if(pm == 0)  run_program(PROGRAM:"am");
+
+#ifndef HOURS24
+            if (hour > 12) hour = hour - 12;
+            if (hour == 0) hour = 12;
+#endif
+            new htmp = hour / 10;
+            if (htmp == 0)      run_program(PROGRAM:"hour_10_0");
+            else if (htmp == 1) run_program(PROGRAM:"hour_10_1");
+            else if (htmp == 2) run_program(PROGRAM:"hour_10_2");
+
+            //
+            htmp = hour % 10;
+            if (htmp == 0)      run_program(PROGRAM:"hour_1_0");
+            else if (htmp == 1) run_program(PROGRAM:"hour_1_1");
+            else if (htmp == 2) run_program(PROGRAM:"hour_1_2");
+            else if (htmp == 3) run_program(PROGRAM:"hour_1_3");
+            else if (htmp == 4) run_program(PROGRAM:"hour_1_4");
+            else if (htmp == 5) run_program(PROGRAM:"hour_1_5");
+            else if (htmp == 6) run_program(PROGRAM:"hour_1_6");
+            else if (htmp == 7) run_program(PROGRAM:"hour_1_7");
+            else if (htmp == 8) run_program(PROGRAM:"hour_1_8");
+            else if (htmp == 9) run_program(PROGRAM:"hour_1_9");
+         }
+
+         m_mod = minute % 10;
+         m_tmp = (minute - m_mod) / 10;
+         if (m_10_ != m_tmp) {
+            m_10_ = m_tmp;
+            // value from 0-5
+            if (m_10_ == 0)      run_program(PROGRAM:"min_10_0");
+            else if (m_10_ == 1) run_program(PROGRAM:"min_10_1");
+            else if (m_10_ == 2) run_program(PROGRAM:"min_10_2");
+            else if (m_10_ == 3) run_program(PROGRAM:"min_10_3");
+            else if (m_10_ == 4) run_program(PROGRAM:"min_10_4");
+            else if (m_10_ == 5) run_program(PROGRAM:"min_10_5");
+         }
+         // minutes digit is 0 .. 9
+         if (m_mod == 0)      run_program(PROGRAM:"min_1_0");
+         else if (m_mod == 1) run_program(PROGRAM:"min_1_1");
+         else if (m_mod == 2) run_program(PROGRAM:"min_1_2");
+         else if (m_mod == 3) run_program(PROGRAM:"min_1_3");
+         else if (m_mod == 4) run_program(PROGRAM:"min_1_4");
+         else if (m_mod == 5) run_program(PROGRAM:"min_1_5");
+         else if (m_mod == 6) run_program(PROGRAM:"min_1_6");
+         else if (m_mod == 7) run_program(PROGRAM:"min_1_7");
+         else if (m_mod == 8) run_program(PROGRAM:"min_1_8");
+         else if (m_mod == 9) run_program(PROGRAM:"min_1_9");
+
+         if(weekday == 0)           run_program(PROGRAM:"weekday_0");
+         else if(weekday == 1)      run_program(PROGRAM:"weekday_1");
+         else if(weekday == 2)      run_program(PROGRAM:"weekday_2");
+         else if(weekday == 3)      run_program(PROGRAM:"weekday_3");
+         else if(weekday == 4)      run_program(PROGRAM:"weekday_4");
+         else if(weekday == 5)      run_program(PROGRAM:"weekday_5");
+         else if(weekday == 6)      run_program(PROGRAM:"weekday_6");
+
+         if(month == 1)           run_program(PROGRAM:"month_1");
+         else if(month == 2)      run_program(PROGRAM:"month_2");
+         else if(month == 3)      run_program(PROGRAM:"month_3");
+         else if(month == 4)      run_program(PROGRAM:"month_4");
+         else if(month == 5)      run_program(PROGRAM:"month_5");
+         else if(month == 6)      run_program(PROGRAM:"month_6");
+         else if(month == 7)      run_program(PROGRAM:"month_7");
+         else if(month == 8)      run_program(PROGRAM:"month_8");
+         else if(month == 9)      run_program(PROGRAM:"month_9");
+         else if(month == 10)      run_program(PROGRAM:"month_10");
+         else if(month == 11)      run_program(PROGRAM:"month_11");
+         else if(month == 12)      run_program(PROGRAM:"month_12");
+      }
+   }
+   parts {
+      part { name: "whole";
+         type: RECT;
+         mouse_events: 1;
+         description {
+            state: "default" 0.0;
+            color: 255 255 255 0;
+            rel1 {
+               relative: 0.0 0.1;
+               offset: 0 0;
+            }
+            rel2 {
+               relative: 1.0 0.9;
+               offset: -1 -1;
+            }
+         }
+      }
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description {
+            rel1 {
+               to: "whole";
+               relative: 0.0 0.0;
+               offset: 0 0;
+            }
+            rel2 {
+               to: "whole";
+               relative: 1.0 1.0;
+               offset: -1 -1;
+            }
+         }
+      }
+      part { name: "hour_10";
+         type: IMAGE;
+         clip_to: "clipper";
+         DIGIT_DESCR_10HOUR(0.0,0, HOUR_10_XOFF);
+         DIGIT_DESCR_10HOUR(0.1,1, HOUR_10_XOFF);
+         DIGIT_DESCR_10HOUR(0.2,2, HOUR_10_XOFF); /* only used in 24-hour clock */
+      }
+      part { name: "hour_1";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(HOUR_1_XOFF);
+         DIGIT_DESCR(0.0,0, HOUR_1_XOFF);
+         DIGIT_DESCR(0.1,1, HOUR_1_XOFF);
+         DIGIT_DESCR(0.2,2, HOUR_1_XOFF);
+         DIGIT_DESCR(0.3,3, HOUR_1_XOFF);
+         DIGIT_DESCR(0.4,4, HOUR_1_XOFF);
+         DIGIT_DESCR(0.5,5, HOUR_1_XOFF);
+         DIGIT_DESCR(0.6,6, HOUR_1_XOFF);
+         DIGIT_DESCR(0.7,7, HOUR_1_XOFF);
+         DIGIT_DESCR(0.8,8, HOUR_1_XOFF);
+         DIGIT_DESCR(0.9,9, HOUR_1_XOFF);
+      }
+      part { name: "colon";
+         type: IMAGE;
+         clip_to: "clipper";
+         description {
+            state: "default" 0.0;
+            image.normal: "clock/DM_Clock_time_center.png";
+            visible: 1;
+            rel1 {
+               to: "whole";
+               relative: COLON_XOFF DIGIT_Y;
+               offset: 0 0;
+            }
+            rel2 {
+               to: "whole";
+               relative: (COLON_XOFF+COLON_WIDTH) (DIGIT_Y+DIGIT_HEIGHT);
+               offset: 0 0;
+            }
+            color: 255 255 255 255;
+         }
+      }
+      part { name: "min_10";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(MIN_10_XOFF);
+         DIGIT_DESCR(0.0,0, MIN_10_XOFF);
+         DIGIT_DESCR(0.1,1, MIN_10_XOFF);
+         DIGIT_DESCR(0.2,2, MIN_10_XOFF);
+         DIGIT_DESCR(0.3,3, MIN_10_XOFF);
+         DIGIT_DESCR(0.4,4, MIN_10_XOFF);
+         DIGIT_DESCR(0.5,5, MIN_10_XOFF);
+      }
+
+      part { name: "min_1";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(MIN_1_XOFF);
+         DIGIT_DESCR(0.0,0, MIN_1_XOFF);
+         DIGIT_DESCR(0.1,1, MIN_1_XOFF);
+         DIGIT_DESCR(0.2,2, MIN_1_XOFF);
+         DIGIT_DESCR(0.3,3, MIN_1_XOFF);
+         DIGIT_DESCR(0.4,4, MIN_1_XOFF);
+         DIGIT_DESCR(0.5,5, MIN_1_XOFF);
+         DIGIT_DESCR(0.6,6, MIN_1_XOFF);
+         DIGIT_DESCR(0.7,7, MIN_1_XOFF);
+         DIGIT_DESCR(0.8,8, MIN_1_XOFF);
+         DIGIT_DESCR(0.9,9, MIN_1_XOFF);
+      }
+      part { name: "am_pm";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR_AM_PM(AM_PM_XOFF);
+         DIGIT_DESCR_AM_PM(0.0,AM, AM_PM_XOFF);
+         DIGIT_DESCR_AM_PM(0.1,PM, AM_PM_XOFF);
+      }
+      part { name: "weekday";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         BASE_DESCR_WD_MD(WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.0,Mon., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.1,Tue., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.2,Wed., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.3,Tur., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.4,Fri., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.5,Sat., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.6,Sun., WEEKDAY_XOFF);
+      }
+      part { name: "day";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         BASE_DESCR_DAY(DAY_XOFF);
+      }
+
+      part { name: "month";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         BASE_DESCR_WD_MD(MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.01,Jan, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.02,Feb, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.03,Mar, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.04,Apr, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.05,May, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.06,Jun, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.07,Jul, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.08,Aug, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.09,Sep, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.10,Oct, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.11,Nov, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.12,Dec, MONTH_XOFF);
+      }
+
+      part { name: "main";
+         type: RECT;
+         mouse_events: 1;
+         description {
+            state: "default" 0.0;
+            rel1 {
+               to: "whole";
+               relative: 0.0 0.0;
+               offset: 0 2;
+            }
+            rel2 {
+               to: "whole";
+               relative: 1.0 1.0;
+               offset: -1 -2;
+            }
+            color: 255 255 255 0;
+         }
+      }
+   }
+
+   programs {
+      program { name: "init";
+         signal: "load";
+         source: "";
+         script {
+            set_int(cur_hour_,-1);
+            set_int(m_10_,-1);
+            clock_cb(0);
+         }
+      }
+
+      /* Each transition happens in a similar manner. The only quirk
+       * is that on a transition to 0 a transition to "reset" is made
+       * before the actual change so that rolling always goes the same
+       * direction. (It would be simpler and still work if I didn't do
+       * this, but it looks odd on minute transitions like 19->20
+       * where '1' would roll one way to '2' and '9' would roll
+       * backwards to '0'.)
+       */
+
+      /* The tens of hours transitions */
+         program { name: "am";
+         action: STATE_SET "digit" 0.0;
+         target: "am_pm";
+      }
+      program { name: "pm";
+         action: STATE_SET "digit" 0.1;
+         target: "am_pm";
+      }
+      program { name: "hour_10_0";
+         action: STATE_SET "reset" 0.0;
+         target: "hour_10";
+         after: "hour_10_to_zero";
+      }
+      program { name: "hour_10_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "hour_10";
+      }
+      HOUR_10_TRANS("hour_10_1", 0.1);
+      HOUR_10_TRANS("hour_10_2", 0.2); /* only used in 24-hour clock */
+
+      /* The hours transitions */
+      program { name: "hour_1_0";
+         action: STATE_SET "reset" 0.0;
+         target: "hour_1";
+         after: "hour_1_to_zero";
+      }
+      program { name: "hour_1_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "hour_1";
+      }
+      HOUR_1_TRANS("hour_1_1", 0.1);
+      HOUR_1_TRANS("hour_1_2", 0.2);
+      HOUR_1_TRANS("hour_1_3", 0.3);
+      HOUR_1_TRANS("hour_1_4", 0.4);
+      HOUR_1_TRANS("hour_1_5", 0.5);
+      HOUR_1_TRANS("hour_1_6", 0.6);
+      HOUR_1_TRANS("hour_1_7", 0.7);
+      HOUR_1_TRANS("hour_1_8", 0.8);
+      HOUR_1_TRANS("hour_1_9", 0.9);
+
+      /* The tens of minutes transitions */
+      program { name: "min_10_0";
+         action: STATE_SET "reset" 0.0;
+         target: "min_10";
+         after: "min_10_to_zero";
+      }
+      program { name: "min_10_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "min_10";
+      }
+      MINUTE_10_TRANS("min_10_1", 0.1);
+      MINUTE_10_TRANS("min_10_2", 0.2);
+      MINUTE_10_TRANS("min_10_3", 0.3);
+      MINUTE_10_TRANS("min_10_4", 0.4);
+      MINUTE_10_TRANS("min_10_5", 0.5);
+
+      /* The minute transitions */
+      program { name: "min_1_0";
+         action: STATE_SET "reset" 0.0;
+         target: "min_1";
+         after: "min_1_to_zero";
+      }
+      program { name: "min_1_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "min_1";
+      }
+      MINUTE_1_TRANS("min_1_1", 0.1);
+      MINUTE_1_TRANS("min_1_2", 0.2);
+      MINUTE_1_TRANS("min_1_3", 0.3);
+      MINUTE_1_TRANS("min_1_4", 0.4);
+      MINUTE_1_TRANS("min_1_5", 0.5);
+      MINUTE_1_TRANS("min_1_6", 0.6);
+      MINUTE_1_TRANS("min_1_7", 0.7);
+      MINUTE_1_TRANS("min_1_8", 0.8);
+      MINUTE_1_TRANS("min_1_9", 0.9);
+
+      WEEKDAY_TRANS("weekday_0",0.0);
+      WEEKDAY_TRANS("weekday_1",0.1);
+      WEEKDAY_TRANS("weekday_2",0.2);
+      WEEKDAY_TRANS("weekday_3",0.3);
+      WEEKDAY_TRANS("weekday_4",0.4);
+      WEEKDAY_TRANS("weekday_5",0.5);
+      WEEKDAY_TRANS("weekday_6",0.6);
+
+      MONTH_TRANS("month_1",0.01);
+      MONTH_TRANS("month_2",0.02);
+      MONTH_TRANS("month_3",0.03);
+      MONTH_TRANS("month_4",0.04);
+      MONTH_TRANS("month_5",0.05);
+      MONTH_TRANS("month_6",0.06);
+      MONTH_TRANS("month_7",0.07);
+      MONTH_TRANS("month_8",0.08);
+      MONTH_TRANS("month_9",0.09);
+      MONTH_TRANS("month_10",0.10);
+      MONTH_TRANS("month_11",0.11);
+      MONTH_TRANS("month_12",0.12);
+
+     }
+}
+group { name: "e/modules/clock/digital";
+
+   script {
+      public cur_hour_;
+      public m_10_;
+      public clock_cb(unused) {
+         new year, month, day, yearday, weekday, hour, minute;
+         new Float:second;
+         new h;
+         new m_mod, m_tmp;
+         new pm;
+         new text[5];
+
+         date(year, month, day, yearday, weekday, hour, minute, second);
+
+         // It is my preference not to have a second hand so the
+         // the timer is set to go off at the top of the minute.
+         timer(61.0 - second, "clock_cb", 1);
+         snprintf(text, 5, "%d%d", day/10,day%10);
+
+         set_text(PART:"day", text);
+         h = get_int(cur_hour_)
+         if (hour != h) {
+            set_int(cur_hour_, hour);
+
+            if (hour > 12) pm = 1;
+            else if (hour == 12) pm = 0;
+
+             if(pm == 1)       run_program(PROGRAM:"pm");
+             else if(pm == 0)  run_program(PROGRAM:"am");
+
+#ifndef HOURS24
+            if (hour > 12) hour = hour - 12;
+            if (hour == 0) hour = 12;
+#endif
+            new htmp = hour / 10;
+            if (htmp == 0)      run_program(PROGRAM:"hour_10_0");
+            else if (htmp == 1) run_program(PROGRAM:"hour_10_1");
+            else if (htmp == 2) run_program(PROGRAM:"hour_10_2");
+
+            //
+            htmp = hour % 10;
+            if (htmp == 0)      run_program(PROGRAM:"hour_1_0");
+            else if (htmp == 1) run_program(PROGRAM:"hour_1_1");
+            else if (htmp == 2) run_program(PROGRAM:"hour_1_2");
+            else if (htmp == 3) run_program(PROGRAM:"hour_1_3");
+            else if (htmp == 4) run_program(PROGRAM:"hour_1_4");
+            else if (htmp == 5) run_program(PROGRAM:"hour_1_5");
+            else if (htmp == 6) run_program(PROGRAM:"hour_1_6");
+            else if (htmp == 7) run_program(PROGRAM:"hour_1_7");
+            else if (htmp == 8) run_program(PROGRAM:"hour_1_8");
+            else if (htmp == 9) run_program(PROGRAM:"hour_1_9");
+         }
+
+         m_mod = minute % 10;
+         m_tmp = (minute - m_mod) / 10;
+         if (m_10_ != m_tmp) {
+            m_10_ = m_tmp;
+            // value from 0-5
+            if (m_10_ == 0)      run_program(PROGRAM:"min_10_0");
+            else if (m_10_ == 1) run_program(PROGRAM:"min_10_1");
+            else if (m_10_ == 2) run_program(PROGRAM:"min_10_2");
+            else if (m_10_ == 3) run_program(PROGRAM:"min_10_3");
+            else if (m_10_ == 4) run_program(PROGRAM:"min_10_4");
+            else if (m_10_ == 5) run_program(PROGRAM:"min_10_5");
+         }
+         // minutes digit is 0 .. 9
+         if (m_mod == 0)      run_program(PROGRAM:"min_1_0");
+         else if (m_mod == 1) run_program(PROGRAM:"min_1_1");
+         else if (m_mod == 2) run_program(PROGRAM:"min_1_2");
+         else if (m_mod == 3) run_program(PROGRAM:"min_1_3");
+         else if (m_mod == 4) run_program(PROGRAM:"min_1_4");
+         else if (m_mod == 5) run_program(PROGRAM:"min_1_5");
+         else if (m_mod == 6) run_program(PROGRAM:"min_1_6");
+         else if (m_mod == 7) run_program(PROGRAM:"min_1_7");
+         else if (m_mod == 8) run_program(PROGRAM:"min_1_8");
+         else if (m_mod == 9) run_program(PROGRAM:"min_1_9");
+
+         if(weekday == 0)           run_program(PROGRAM:"weekday_0");
+         else if(weekday == 1)      run_program(PROGRAM:"weekday_1");
+         else if(weekday == 2)      run_program(PROGRAM:"weekday_2");
+         else if(weekday == 3)      run_program(PROGRAM:"weekday_3");
+         else if(weekday == 4)      run_program(PROGRAM:"weekday_4");
+         else if(weekday == 5)      run_program(PROGRAM:"weekday_5");
+         else if(weekday == 6)      run_program(PROGRAM:"weekday_6");
+
+         if(month == 1)           run_program(PROGRAM:"month_1");
+         else if(month == 2)      run_program(PROGRAM:"month_2");
+         else if(month == 3)      run_program(PROGRAM:"month_3");
+         else if(month == 4)      run_program(PROGRAM:"month_4");
+         else if(month == 5)      run_program(PROGRAM:"month_5");
+         else if(month == 6)      run_program(PROGRAM:"month_6");
+         else if(month == 7)      run_program(PROGRAM:"month_7");
+         else if(month == 8)      run_program(PROGRAM:"month_8");
+         else if(month == 9)      run_program(PROGRAM:"month_9");
+         else if(month == 10)      run_program(PROGRAM:"month_10");
+         else if(month == 11)      run_program(PROGRAM:"month_11");
+         else if(month == 12)      run_program(PROGRAM:"month_12");
+      }
+   }
+   parts {
+      part { name: "whole";
+         type: RECT;
+         mouse_events: 1;
+         description {
+            state: "default" 0.0;
+            color: 255 255 255 0;
+            rel1 {
+               relative: 0.0 0.1;
+               offset: 0 0;
+            }
+            rel2 {
+               relative: 1.0 0.9;
+               offset: -1 -1;
+            }
+         }
+      }
+      part { name: "clipper";
+         type: RECT;
+         mouse_events: 0;
+         description {
+            rel1 {
+               to: "whole";
+               relative: 0.0 0.0;
+               offset: 0 0;
+            }
+            rel2 {
+               to: "whole";
+               relative: 1.0 1.0;
+               offset: -1 -1;
+            }
+         }
+      }
+      part { name: "hour_10";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(HOUR_10_XOFF);
+         DIGIT_DESCR(0.0,0, HOUR_10_XOFF);
+         DIGIT_DESCR(0.1,1, HOUR_10_XOFF);
+         DIGIT_DESCR(0.2,2, HOUR_10_XOFF); /* only used in 24-hour clock */
+      }
+      part { name: "hour_1";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(HOUR_1_XOFF);
+         DIGIT_DESCR(0.0,0, HOUR_1_XOFF);
+         DIGIT_DESCR(0.1,1, HOUR_1_XOFF);
+         DIGIT_DESCR(0.2,2, HOUR_1_XOFF);
+         DIGIT_DESCR(0.3,3, HOUR_1_XOFF);
+         DIGIT_DESCR(0.4,4, HOUR_1_XOFF);
+         DIGIT_DESCR(0.5,5, HOUR_1_XOFF);
+         DIGIT_DESCR(0.6,6, HOUR_1_XOFF);
+         DIGIT_DESCR(0.7,7, HOUR_1_XOFF);
+         DIGIT_DESCR(0.8,8, HOUR_1_XOFF);
+         DIGIT_DESCR(0.9,9, HOUR_1_XOFF);
+      }
+      part { name: "colon";
+         type: IMAGE;
+         clip_to: "clipper";
+         description {
+            state: "default" 0.0;
+            image.normal: "clock/DM_Clock_time_center.png";
+            visible: 1;
+            rel1 {
+               to: "whole";
+               relative: COLON_XOFF DIGIT_Y;
+               offset: 0 0;
+            }
+            rel2 {
+               to: "whole";
+               relative: (COLON_XOFF+.1) 1.0;
+               offset: 0 0;
+            }
+            color: 255 255 255 255;
+         }
+      }
+      part { name: "min_10";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(MIN_10_XOFF);
+         DIGIT_DESCR(0.0,0, MIN_10_XOFF);
+         DIGIT_DESCR(0.1,1, MIN_10_XOFF);
+         DIGIT_DESCR(0.2,2, MIN_10_XOFF);
+         DIGIT_DESCR(0.3,3, MIN_10_XOFF);
+         DIGIT_DESCR(0.4,4, MIN_10_XOFF);
+         DIGIT_DESCR(0.5,5, MIN_10_XOFF);
+      }
+
+      part { name: "min_1";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR(MIN_1_XOFF);
+         DIGIT_DESCR(0.0,0, MIN_1_XOFF);
+         DIGIT_DESCR(0.1,1, MIN_1_XOFF);
+         DIGIT_DESCR(0.2,2, MIN_1_XOFF);
+         DIGIT_DESCR(0.3,3, MIN_1_XOFF);
+         DIGIT_DESCR(0.4,4, MIN_1_XOFF);
+         DIGIT_DESCR(0.5,5, MIN_1_XOFF);
+         DIGIT_DESCR(0.6,6, MIN_1_XOFF);
+         DIGIT_DESCR(0.7,7, MIN_1_XOFF);
+         DIGIT_DESCR(0.8,8, MIN_1_XOFF);
+         DIGIT_DESCR(0.9,9, MIN_1_XOFF);
+      }
+      part { name: "am_pm";
+         type: IMAGE;
+         clip_to: "clipper";
+         BASE_DESCR_AM_PM(AM_PM_XOFF);
+         DIGIT_DESCR_AM_PM(0.0,AM, AM_PM_XOFF);
+         DIGIT_DESCR_AM_PM(0.1,PM, AM_PM_XOFF);
+      }
+      part { name: "weekday";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         BASE_DESCR_WD_MD(WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.0,Mon., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.1,Tue., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.2,Wed., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.3,Tur., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.4,Fri., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.5,Sat., WEEKDAY_XOFF);
+         DIGIT_DESCR_WD_MD(0.6,Sun., WEEKDAY_XOFF);
+      }
+      part { name: "day";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         scale: 1;
+         BASE_DESCR_DAY(DAY_XOFF);
+      }
+
+      part { name: "month";
+         type: TEXT;
+         effect: OUTLINE_SOFT_SHADOW;
+         BASE_DESCR_WD_MD(MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.01,Jan, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.02,Feb, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.03,Mar, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.04,Apr, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.05,May, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.06,Jun, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.07,Jul, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.08,Aug, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.09,Sep, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.10,Oct, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.11,Nov, MONTH_XOFF);
+         DIGIT_DESCR_WD_MD(0.12,Dec, MONTH_XOFF);
+      }
+
+      part { name: "main";
+         type: RECT;
+         mouse_events: 1;
+         description {
+            state: "default" 0.0;
+            rel1 {
+               to: "whole";
+               relative: 0.0 0.0;
+               offset: 0 2;
+            }
+            rel2 {
+               to: "whole";
+               relative: 1.0 1.0;
+               offset: -1 -2;
+            }
+            color: 255 255 255 0;
+         }
+      }
+   }
+
+   programs {
+      program { name: "init";
+         signal: "load";
+         source: "";
+         script {
+            set_int(cur_hour_,-1);
+            set_int(m_10_,-1);
+            clock_cb(0);
+         }
+      }
+
+      /* Each transition happens in a similar manner. The only quirk
+       * is that on a transition to 0 a transition to "reset" is made
+       * before the actual change so that rolling always goes the same
+       * direction. (It would be simpler and still work if I didn't do
+       * this, but it looks odd on minute transitions like 19->20
+       * where '1' would roll one way to '2' and '9' would roll
+       * backwards to '0'.)
+       */
+
+      /* The tens of hours transitions */
+         program { name: "am";
+         action: STATE_SET "digit" 0.0;
+         target: "am_pm";
+      }
+      program { name: "pm";
+         action: STATE_SET "digit" 0.1;
+         target: "am_pm";
+      }
+      program { name: "hour_10_0";
+         action: STATE_SET "reset" 0.0;
+         target: "hour_10";
+         after: "hour_10_to_zero";
+      }
+      program { name: "hour_10_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "hour_10";
+      }
+      HOUR_10_TRANS("hour_10_1", 0.1);
+      HOUR_10_TRANS("hour_10_2", 0.2); /* only used in 24-hour clock */
+
+      /* The hours transitions */
+
+      program { name: "hour_1_0";
+         action: STATE_SET "reset" 0.0;
+         target: "hour_1";
+         after: "hour_1_to_zero";
+      }
+      program { name: "hour_1_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "hour_1";
+      }
+      HOUR_1_TRANS("hour_1_1", 0.1);
+      HOUR_1_TRANS("hour_1_2", 0.2);
+      HOUR_1_TRANS("hour_1_3", 0.3);
+      HOUR_1_TRANS("hour_1_4", 0.4);
+      HOUR_1_TRANS("hour_1_5", 0.5);
+      HOUR_1_TRANS("hour_1_6", 0.6);
+      HOUR_1_TRANS("hour_1_7", 0.7);
+      HOUR_1_TRANS("hour_1_8", 0.8);
+      HOUR_1_TRANS("hour_1_9", 0.9);
+
+      /* The tens of minutes transitions */
+
+      program { name: "min_10_0";
+         action: STATE_SET "reset" 0.0;
+         target: "min_10";
+         after: "min_10_to_zero";
+      }
+      program { name: "min_10_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "min_10";
+      }
+      MINUTE_10_TRANS("min_10_1", 0.1);
+      MINUTE_10_TRANS("min_10_2", 0.2);
+      MINUTE_10_TRANS("min_10_3", 0.3);
+      MINUTE_10_TRANS("min_10_4", 0.4);
+      MINUTE_10_TRANS("min_10_5", 0.5);
+
+      /* The minute transitions */
+
+      program { name: "min_1_0";
+         action: STATE_SET "reset" 0.0;
+         target: "min_1";
+         after: "min_1_to_zero";
+      }
+      program { name: "min_1_to_zero";
+         action: STATE_SET "digit" 0.0;
+         transition: DIGITRANS;
+         target: "min_1";
+      }
+      /* */
+      MINUTE_1_TRANS("min_1_1", 0.1);
+      MINUTE_1_TRANS("min_1_2", 0.2);
+      MINUTE_1_TRANS("min_1_3", 0.3);
+      MINUTE_1_TRANS("min_1_4", 0.4);
+      MINUTE_1_TRANS("min_1_5", 0.5);
+      MINUTE_1_TRANS("min_1_6", 0.6);
+      MINUTE_1_TRANS("min_1_7", 0.7);
+      MINUTE_1_TRANS("min_1_8", 0.8);
+      MINUTE_1_TRANS("min_1_9", 0.9);
+
+      WEEKDAY_TRANS("weekday_0",0.0);
+      WEEKDAY_TRANS("weekday_1",0.1);
+      WEEKDAY_TRANS("weekday_2",0.2);
+      WEEKDAY_TRANS("weekday_3",0.3);
+      WEEKDAY_TRANS("weekday_4",0.4);
+      WEEKDAY_TRANS("weekday_5",0.5);
+      WEEKDAY_TRANS("weekday_6",0.6);
+
+      MONTH_TRANS("month_1",0.01);
+      MONTH_TRANS("month_2",0.02);
+      MONTH_TRANS("month_3",0.03);
+      MONTH_TRANS("month_4",0.04);
+      MONTH_TRANS("month_5",0.05);
+      MONTH_TRANS("month_6",0.06);
+      MONTH_TRANS("month_7",0.07);
+      MONTH_TRANS("month_8",0.08);
+      MONTH_TRANS("month_9",0.09);
+      MONTH_TRANS("month_10",0.10);
+      MONTH_TRANS("month_11",0.11);
+      MONTH_TRANS("month_12",0.12);
+
+     }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/*** MOD: IBOX / IBAR ***/
+
+   group {
+      name: "e/modules/ibox/icon";
+      alias: "e/modules/ibar/icon";
+      data {
+      // This didn't seem to work ...
+      item: "raise_on_hilight" "0"; // 1 or 0 if u want an icon holder
+                                    // to raise when the mouse (or
+                                    // keyboard) hilights it
+         // item: "item_list" "item item2 item3";
+      }
+      parts {
+         part {
+            name: "item_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "item_clip";
+            description {
+               state: "default" 0.0;
+            rel1 {
+               relative: 0.35 0.25;
+               offset: 2 2;
+            }
+            rel2 {
+               relative: 0.65 0.55;
+               offset: -2 -2;
+            }
+         }
+            description {
+               state: "smaller" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  offset: 5 5;
+               }
+               rel2 {
+                  offset: -5 -5;
+               }
+            }
+         }
+         part {
+            name: "over";
+            type: RECT;
+            repeat_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "hover_down";
+            signal: "mouse,down,1";
+            source: "over";
+            action: STATE_SET "smaller" 0.0;
+            transition: LINEAR 0.2;
+            target: "e.swallow.content";
+         }
+         program {
+            name: "hover_up";
+            signal: "mouse,up,1";
+            source: "over";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "e.swallow.content";
+         }
+         program {
+            name: "exec_start";
+            signal: "e,action,start";
+            source: "e";
+            action: STATE_SET "faded" 0.0;
+            transition: LINEAR 0.5;
+            target: "item_clip";
+         }
+         program {
+            name: "exec_exec";
+            signal: "e,action,exec";
+            source: "e";
+            action: STATE_SET "faded" 0.0;
+            transition: LINEAR 0.5;
+            target: "item_clip";
+            after: "exec_stop";
+         }
+         program {
+            name: "exec_stop";
+            signal: "e,action,stop";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "item_clip";
+         }
+      }
+   }
+   group {
+      name: "e/modules/ibox/icon_overlay";
+      alias: "e/modules/ibar/icon_overlay";
+      data {
+         // item: "item_list", "item item2 item3";
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "background";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            rel1 {
+               to: "base";
+            }
+            rel2 {
+               to: "base";
+            }
+               color: 255 255 255 0;
+            }
+            description {
+               state: "visible" 0.0;
+               visible: 1;
+            rel1 {
+               to: "base";
+               offset: 0 -5;
+            }
+            rel2 {
+               to: "base";
+               offset: 0 -5;
+            }
+               color: 255 255 255 255;
+            }
+            description {
+               state: "hidden" 0.0;
+               visible: 1;
+               rel1 {
+                  relative: -0.3 -0.3;
+                  offset: 0 -5;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 1.3 1.3;
+                  offset: 0 -5;
+                  to: "base";
+               }
+               color: 255 255 255 0;
+            }
+            description {
+               state: "huge" 0.0;
+               visible: 1;
+               rel1 {
+                  relative: -2.0  -2.0;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 3.0  3.0;
+                  to: "base";
+               }
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "background";
+            description {
+               state: "default" 0.0;
+            rel1 {
+               to: "background";
+            }
+            rel2 {
+               to: "background";
+            }
+         }
+         }
+      // Smoke ibar text doesn't "fade away" it rolls up
+         part {
+            name: "text_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "base";
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 0 0;
+               }
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            clip_to: "text_clip";
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.0 0.45;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0  0.9;
+                  offset: 0 0;
+               }
+               color: 255 255 255 255;
+               color3: 0 0 0 42;
+               color_class: "module_label";
+               text {
+                  text: "";
+                  font: "Sans";
+                  size: 14;
+                  min: 0 0;
+                  align: 0.5 0.5;
+                  elipsis: 0.0;
+                  text_class: "module_normal";
+               }
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            target: "background";
+            after: "go_active2";
+         }
+         program {
+            name: "go_activeB";
+            signal: "e,action,show,label";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "e.text.label";
+            after: "go_activeB2";
+         }
+            program {
+               name: "go_activeB2";
+               signal: "";
+               source: "";
+               action: STATE_SET "visible" 0.0;
+               target: "e.text.label";
+            }
+         program {
+            name: "go_active2";
+            signal: "";
+            source: "";
+            action: STATE_SET "hidden" 0.0;
+            target: "background";
+            after: "go_active";
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: ACTION_STOP;
+            target: "go_active";
+            target: "go_active2";
+            after: "go_passive2";
+         }
+         program {
+            name: "go_passiveB";
+            signal: "e,action,hide,label";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            target: "e.text.label";
+            after: "go_passiveB2";
+         }
+         program {
+            name: "go_passiveB2";
+            signal: "";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "e.text.label";
+         }
+         program {
+            name: "go_passive2";
+            signal: "";
+            source: "";
+            action: STATE_SET "default" 0.0;
+            target: "background";
+         }
+         program {
+            name: "go_big";
+            action: STATE_SET "visible" 0.0;
+            target: "background";
+            after: "go_big2";
+         }
+         program {
+            name: "go_big2";
+            action: STATE_SET "huge" 0.0;
+            target: "background";
+         }
+         program {
+            name: "exec_start";
+            signal: "e,action,start";
+            source: "e";
+            action: ACTION_STOP;
+            target: "go_active";
+            target: "go_active2";
+            target: "go_passive";
+            target: "go_passive2";
+            target: "go_big";
+            target: "go_big2";
+            after: "go_big";
+         }
+         program {
+            name: "exec_exec";
+            signal: "e,action,exec";
+            source: "e";
+            after: "exec_start";
+         }
+         program {
+            name: "exec_stop";
+            signal: "e,action,stop";
+            source: "e";
+         }
+      }
+   }
+   group {
+      name: "e/modules/ibox/drop";
+      alias: "e/modules/ibar/drop";
+      images.image: "inset_raised.png" COMP;
+      parts {
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "inset_raised.png";
+                  border: 7 7 7 7;
+                  middle: 0;
+               }
+            }
+         }
+      }
+   }
+   group {
+      name: "e/modules/ibox/drop_overlay";
+      alias: "e/modules/ibar/drop_overlay";
+      images {
+         image: "gadman_top.png" COMP;
+         image: "gadman_bottom.png" COMP;
+         image: "gadman_left.png" COMP;
+         image: "gadman_right.png" COMP;
+      }
+      parts {
+         part {
+            name: "left_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1.relative: -1.0 0.5;
+               rel2.relative: -1.0 0.5;
+               image.normal: "gadman_right.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -0.8 0.2;
+               rel2.relative: -0.7 0.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 0.5;
+               rel2.relative: 0.2 0.5;
+            }
+         }
+         part {
+            name: "left_arrow2";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1.relative: -1.0 0.5;
+               rel2.relative: -1.0 0.5;
+               image.normal: "gadman_right.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -0.8 0.2;
+               rel2.relative: -0.7 0.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 0.5;
+               rel2.relative: 0.2 0.5;
+            }
+         }
+         part {
+            name: "right_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1.relative: 2.0 0.5;
+               rel2.relative: 2.0 0.5;
+               image.normal: "gadman_left.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.8 0.2;
+               rel2.relative: 1.7 0.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.8 0.5;
+               rel2.relative: 0.8 0.5;
+            }
+         }
+         part {
+            name: "right_arrow2";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1.relative: 2.0 0.5;
+               rel2.relative: 2.0 0.5;
+               image.normal: "gadman_left.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 1.8 0.2;
+               rel2.relative: 1.7 0.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.8 0.5;
+               rel2.relative: 0.8 0.5;
+            }
+         }
+         part {
+            name: "top_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1.relative: 0.5 -1.0;
+               rel2.relative: 0.5 -1.0;
+               image.normal: "gadman_bottom.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 -0.8;
+               rel2.relative: 0.8 -0.7;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.5 0.2;
+               rel2.relative: 0.5 0.2;
+            }
+         }
+         part {
+            name: "top_arrow2";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1.relative: 0.5 -1.0;
+               rel2.relative: 0.5 -1.0;
+               image.normal: "gadman_bottom.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 -0.8;
+               rel2.relative: 0.8 -0.7;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.5 0.2;
+               rel2.relative: 0.5 0.2;
+            }
+         }
+         part {
+            name: "bottom_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1.relative: 0.5 2.0;
+               rel2.relative: 0.5 2.0;
+               image.normal: "gadman_top.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 1.7;
+               rel2.relative: 0.8 1.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.5 0.8;
+               rel2.relative: 0.5 0.8;
+            }
+         }
+         part {
+            name: "bottom_arrow2";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1.relative: 0.5 2.0;
+               rel2.relative: 0.5 2.0;
+               image.normal: "gadman_top.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.2 1.7;
+               rel2.relative: 0.8 1.8;
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.5 0.8;
+               rel2.relative: 0.5 0.8;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "start1";
+            signal: "show";
+            source: "";
+            after: "left1_1";
+            after: "right1_1";
+            after: "top1_1";
+            after: "bottom1_1";
+         }
+         program {
+            name: "start2";
+            signal: "show";
+            source: "";
+            in: 0.4 0.0;
+            after: "left2_1";
+            after: "right2_1";
+            after: "top2_1";
+            after: "bottom2_1";
+         }
+         // LEFT ARROW
+         program {
+            name: "left1_1";
+            action: STATE_SET "1" 0.0;
+            target: "left_arrow1";
+            transition: LINEAR 0.4;
+            after: "left1_2";
+         }
+         program {
+            name: "left1_2";
+            action: STATE_SET "2" 0.0;
+            target: "left_arrow1";
+            transition: LINEAR 0.4;
+            after: "left1_r";
+         }
+         program {
+            name: "left1_r";
+            action: STATE_SET "default" 0.0;
+            target: "left_arrow1";
+            after: "left1_1";
+         }
+         program {
+            name: "left2_1";
+            action: STATE_SET "1" 0.0;
+            target: "left_arrow2";
+            transition: LINEAR 0.4;
+            after: "left2_2";
+         }
+         program {
+            name: "left2_2";
+            action: STATE_SET "2" 0.0;
+            target: "left_arrow2";
+            transition: LINEAR 0.4;
+            after: "left2_r";
+         }
+         program {
+            name: "left2_r";
+            action: STATE_SET "default" 0.0;
+            target: "left_arrow2";
+            after: "left2_1";
+         }
+         // RIGHT ARROW
+         program {
+            name: "right1_1";
+            action: STATE_SET "1" 0.0;
+            target: "right_arrow1";
+            transition: LINEAR 0.4;
+            after: "right1_2";
+         }
+         program {
+            name: "right1_2";
+            action: STATE_SET "2" 0.0;
+            target: "right_arrow1";
+            transition: LINEAR 0.4;
+            after: "right1_r";
+         }
+         program {
+            name: "right1_r";
+            action: STATE_SET "default" 0.0;
+            target: "right_arrow1";
+            after: "right1_1";
+         }
+         program {
+            name: "right2_1";
+            action: STATE_SET "1" 0.0;
+            target: "right_arrow2";
+            transition: LINEAR 0.4;
+            after: "right2_2";
+         }
+         program {
+            name: "right2_2";
+            action: STATE_SET "2" 0.0;
+            target: "right_arrow2";
+            transition: LINEAR 0.4;
+            after: "right2_r";
+         }
+         program {
+            name: "right2_r";
+            action: STATE_SET "default" 0.0;
+            target: "right_arrow2";
+            after: "right2_1";
+         }
+         // TOP ARROW
+         program {
+            name: "top1_1";
+            action: STATE_SET "1" 0.0;
+            target: "top_arrow1";
+            transition: LINEAR 0.4;
+            after: "top1_2";
+         }
+         program {
+            name: "top1_2";
+            action: STATE_SET "2" 0.0;
+            target: "top_arrow1";
+            transition: LINEAR 0.4;
+            after: "top1_r";
+         }
+         program {
+            name: "top1_r";
+            action: STATE_SET "default" 0.0;
+            target: "top_arrow1";
+            after: "top1_1";
+         }
+         program {
+            name: "top2_1";
+            action: STATE_SET "1" 0.0;
+            target: "top_arrow2";
+            transition: LINEAR 0.4;
+            after: "top2_2";
+         }
+         program {
+            name: "top2_2";
+            action: STATE_SET "2" 0.0;
+            target: "top_arrow2";
+            transition: LINEAR 0.4;
+            after: "top2_r";
+         }
+         program {
+            name: "top2_r";
+            action: STATE_SET "default" 0.0;
+            target: "top_arrow2";
+            after: "top2_1";
+         }
+         // BOTTOM ARROW
+         program {
+            name: "bottom1_1";
+            action: STATE_SET "1" 0.0;
+            target: "bottom_arrow1";
+            transition: LINEAR 0.4;
+            after: "bottom1_2";
+         }
+         program {
+            name: "bottom1_2";
+            action: STATE_SET "2" 0.0;
+            target: "bottom_arrow1";
+            transition: LINEAR 0.4;
+            after: "bottom1_r";
+         }
+         program {
+            name: "bottom1_r";
+            action: STATE_SET "default" 0.0;
+            target: "bottom_arrow1";
+            after: "bottom1_1";
+         }
+         program {
+            name: "bottom2_1";
+            action: STATE_SET "1" 0.0;
+            target: "bottom_arrow2";
+            transition: LINEAR 0.4;
+            after: "bottom2_2";
+         }
+         program {
+            name: "bottom2_2";
+            action: STATE_SET "2" 0.0;
+            target: "bottom_arrow2";
+            transition: LINEAR 0.4;
+            after: "bottom2_r";
+         }
+         program {
+            name: "bottom2_r";
+            action: STATE_SET "default" 0.0;
+            target: "bottom_arrow2";
+            after: "bottom2_1";
+         }
+      }
+   }
+
+/////////////////////////////////////////////////////////////////////////////
+/*** DIALOG ***/
+/* Used in all dialogs eg; Wallpaper selector */
+
+   group {
+      name: "e/widgets/dialog/main";
+      images {
+         image: "dia_grad.png" COMP;
+         image: "dia_topshad.png" COMP;
+         image: "dia_botshad.png" COMP;
+         image: "menu_sep.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "dialog_base";
+               image.normal: "dia_grad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "shadow";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.offset: -1 31;
+               image.normal: "dia_topshad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "shadow2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.offset: 0 -4;
+               image.normal: "dia_botshad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 2  2;
+               }
+               rel2 {
+                  relative: 0.0 0.0;
+                  offset: 2  -5;
+                  to_y: "e.swallow.buttons";
+               }
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset: 2   2;
+                  to_x: "e.swallow.icon";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -3  -5;
+                  to_y: "e.swallow.buttons";
+               }
+            }
+         }
+         part {
+            name: "separator";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 16 2;
+               rel1 {
+                  relative: 0.0  1.0;
+                  offset: 4    -1;
+                  to_y: "e.swallow.content";
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5   0;
+                  to_y: "e.swallow.content";
+               }
+               image {
+                  normal: "menu_sep.png";
+                  border: 2 2 0 0;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "e.swallow.buttons";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               fixed: 0 1;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset: 4   -5;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -5  -5;
+               }
+            }
+         }
+      }
+   }
+   group {
+      name: "e/widgets/dialog/text";
+      styles {
+         style {
+            name: "dialog_style";
+            base: "font=Sans font_size=10 text_class=tb_plain align=center color=#000 style=shadow shadow_color=#ffffff80 wrap=word";
+            tag: "br" "\n";
+            tag: "hilight" "+ font=Sans:style=Bold text_class=tb_light";
+         }
+      }
+      parts {
+         part {
+            name: "e.textblock.message";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 4 4;
+               rel2.offset: -5 -5;
+               text {
+                  style: "dialog_style";
+                  min: 1 1;
+               }
+            }
+         }
+      }
+   }
+
+
+/////////////////////////////////////////////////////////////////////////////
+/*** CONFIGURATION PANEL ***/
+
+   group {
+      name: "e/widgets/configure/main";
+      images {
+         image: "dia_grad.png" COMP;
+         image: "dia_topshad.png" COMP;
+         image: "dia_botshad.png" COMP;
+         image: "menu_sep.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "dialog_base";
+               image.normal: "dia_grad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "shadow";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel2.relative: 1.0 0.0;
+               rel2.offset: -1 31;
+               image.normal: "dia_topshad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "shadow2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.offset: 0 -4;
+               image.normal: "dia_botshad.png";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "separator";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 16 2;
+               rel1 {
+                  relative: 0.0  1.0;
+                  offset: 4    -1;
+                  to_y: "e.swallow.content";
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5   0;
+                  to_y: "e.swallow.content";
+               }
+               image {
+                  normal: "menu_sep.png";
+                  border: 2 2 0 0;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.5;
+               min: 100 200;
+               rel1.offset: 2 2;
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -3 -5;
+                  to_y: "e.swallow.button";
+               }
+            }
+         }
+         part {
+            name: "e.swallow.button";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               fixed: 1 1;
+               rel1.relative: 0.5 1.0;
+               rel2.relative: 0.5 1.0;
+            }
+         }
+      }
+   }
 
 
-        part { name: "e.swallow.client"; /* this determines where the actual
-                                          * client window will be placed in
-                                          * the border design */
-           type: SWALLOW;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 0.0 1.0;
-                 offset: 0 0;
-                 to_y: "top";
-              }
-              rel2 {
-                 relative: 1.0 0.0;
-                 offset: -1 -1;
-                 to_y: "bottom";
-              }
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -1 -1;
-                 to_y: "bottom";
-              }
-           }
-           description { state: "max" 0.0;
-              inherit: "default" 0.0;
-              rel1 {
-                 relative: 0.0 1.0;
-                 offset: 0 0;
-                 to_y: "top";
-              }
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -1 -1;
-                 to_y: "bottom";
-              }
-           }
-        }
+/////////////////////////////////////////////////////////////////////////////
+/*** MOVE/RESIZE BOX ***/
 
-        /* these transparent rect parts are used for catching events in a way
-         * here objects for design don't affect the events. these parts
-         * are named speciifcally because E has config listening for specific
-         * signals (events) coming from these named parts and based on those
-         * will perform certain actions. these are actually all configurable
-         * by the user, so if they want, clicking the logical "titlebar" could
-         * close the window, not move it, and so on. the user decides this.
-         * the theme designer simply indicates the "logcal" use of the theme
-         * elements they have created */
-        part { name: "e.event.titlebar";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "title_base";
-              rel2.to: "title_base";
-              color: 0 0 0 0;
-           }
-        }
+   group {
+      name: "e/widgets/border/default/move";
+      images {
+         image: "base_bg.png" COMP;
+         image: "icon_win_move.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "base_bg.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "icon";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               min: 21 21;
+               max: 21 21;
+               fixed: 1 1;
+               rel1.offset: 2 2;
+               rel2.relative: 0.0 1.0;
+               rel2.offset: 2 -3;
+               image.normal: "icon_win_move.png";
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.to_x: "icon";
+               rel1.offset: 2 4;
+               rel1.relative: 1.0 0.0;
+               rel2.offset: -5 -5;
+               color_class: "move_text";
+               text {
+                  text: "X Y";
+                  font: "Sans";
+                  size: 10;
+                  align: 0.5 0.5;
+                  min: 1 1;
+                  text_class: "move_text";
+               }
+            }
+         }
+      }
+   }
+   group {
+      name: "e/widgets/border/default/resize";
+      images {
+         image: "base_bg.png" COMP;
+         image: "icon_win_resize.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.0;
+               image {
+                  normal: "base_bg.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "icon";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               min: 21 21;
+               max: 21 21;
+               fixed: 1 1;
+               rel1.offset: 2 2;
+               rel2.relative: 0.0 1.0;
+               rel2.offset: 2 -3;
+               image.normal: "icon_win_resize.png";
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.to_x: "icon";
+               rel1.offset: 2 4;
+               rel1.relative: 1.0 0.0;
+               rel2.offset: -5 -5;
+               color_class: "resize_text";
+               text {
+                  text: "WxH";
+                  font: "Sans";
+                  size: 10;
+                  align: 0.5 0.5;
+                  min: 1 1;
+                  text_class: "resize_text";
+               }
+            }
+         }
+      }
+   }
 
-        part { name: "e.event.resize.t";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 0.0 0.0;
-                 offset: 0 0;
-              }
-              rel2 {
-                 relative: 1.0 0.0;
-                 offset: -1 3;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
-        part { name: "e.event.resize.b";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 0.0 1.0;
-                 offset: 0 -4;
-              }
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -1 -1;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
 
-        part { name: "e.event.resize.tl";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 0.0 0.0;
-                 offset: 0 0;
-              }
-              rel2 {
-                 relative: 0.0 0.0;
-                 offset: 15 15;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
-        part { name: "e.event.resize.tr";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 1.0 0.0;
-                 offset: -16 0;
-              }
-              rel2 {
-                 relative: 1.0 0.0;
-                 offset: -1 15;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
-        part { name: "e.event.resize.bl";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 0.0 1.0;
-                 offset: 0 -16;
-              }
-              rel2 {
-                 relative: 0.0 1.0;
-                 offset: 15 -1;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
-        part { name: "e.event.resize.br";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1 {
-                 relative: 1.0 1.0;
-                 offset: -16 -16;
-              }
-              rel2 {
-                 relative: 1.0 1.0;
-                 offset: -1 -1;
-              }
-              color: 0 0 0 0;
-           }
-           description { state: "shaded" 0.0;
-              inherit: "default" 0.0;
-              visible: 0;
-           }
-        }
+/////////////////////////////////////////////////////////////////////////////
+/*** WIDGETS ***/
+
+   group {
+      name: "e/widgets/check";
+      images {
+         image: "check_base.png" COMP;
+         image: "check_on.png" COMP;
+         image: "check_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               align: 0.0 0.5;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 2    2;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 2   -3;
+               }
+               image.normal: "check_base.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "check_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "check_sel.png";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+               color_class: "check_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "check_button";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "check_text_disabled";
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "on";
+            /* if the checkmark is to be displayed */
+            signal: "e,state,checked";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            /* check mark is not to be displayed */
+            signal: "e,state,unchecked";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+         program {
+            name: "click";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "e,action,toggle" "";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+      }
+   }
+   group {
+      name: "e/widgets/check_icon";
+      images {
+         image: "check_base.png" COMP;
+         image: "check_on.png" COMP;
+         image: "check_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               align: 0.0 0.5;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 2    2;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 2   -3;
+               }
+               image.normal: "check_base.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "check_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "check_sel.png";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            clip_to: "icon_clip";
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+            }
+            description {
+               state: "label_visible" 0.0;
+               inherit: "default" 0.0;
+               min: 16 16;
+               rel2 {
+                  to_y: "base";
+                  relative: 1.0  0.0;
+                  offset: -2 -2;
+               }
+            }
+         }
+         part {
+            name: "icon_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "label_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "label_visible" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "label_clip";
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+               color_class: "check_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "check_button";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "check_text_disabled";
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "on";
+            /* if the checkmark is to be displayed */
+            signal: "e,state,checked";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            /* check mark is not to be displayed */
+            signal: "e,state,unchecked";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+         program {
+            name: "click";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "e,action,toggle" "";
+         }
+         program {
+            name: "label_on";
+            signal: "e,state,labeled";
+            source: "e";
+            action: STATE_SET "label_visible" 0.0;
+            target: "e.swallow.icon";
+            target: "label_clip";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+      }
+   }
+   /* for a radio menu item - same as check, but only one of a group of radio
+    * menu item can be selected at any one time */
+   group {
+      name: "e/widgets/radio";
+      images {
+         image: "radio_base.png" COMP;
+         image: "radio_on.png" COMP;
+         image: "radio_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               align: 0.0 0.5;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 2    2;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 2   -3;
+               }
+               image.normal: "radio_base.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "radio_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "radio_sel.png";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+               color_class: "radio_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "radio_button";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "radio_text_disabled";
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "on";
+            /* if the checkmark is to be displayed */
+            signal: "e,state,on";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            /* check mark is not to be displayed */
+            signal: "e,state,off";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+         program {
+            name: "click";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "e,action,toggle" "";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+      }
+   }
+   group {
+      name: "e/widgets/radio_icon";
+      images {
+         image: "radio_base.png" COMP;
+         image: "radio_on.png" COMP;
+         image: "radio_sel.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               max: 16 16;
+               align: 0.0 0.5;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 2    2;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 2   -3;
+               }
+               image.normal: "radio_base.png";
+            }
+         }
+         part {
+            name: "mark";
+            mouse_events: 0;
+            clip_to: "mark_hold";
+            description {
+               state: "default" 0.0;
+               rel1.to: "mark_hold";
+               rel2.to: "mark_hold";
+               image.normal: "radio_on.png";
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "radio_sel.png";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "mark_hold";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  to: "base";
+                  offset: -5 -5;
+               }
+               rel2 {
+                  to: "base";
+                  offset: 4 4;
+               }
+            }
+            description {
+               state: "on" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1.offset: 0 0;
+               rel2.offset: -1 -1;
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            clip_to: "icon_clip";
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.0;
+                  offset: 2 2;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+            }
+            description {
+               state: "label_visible" 0.0;
+               inherit: "default" 0.0;
+               min: 16 16;
+               rel2 {
+                  to_y: "e.text.label";
+                  relative: 1.0  0.0;
+                  offset: -2 -2;
+               }
+            }
+         }
+         part {
+            name: "icon_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "label_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "label_visible" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "label_clip";
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "base";
+                  relative: 1.0  0.5;
+                  offset: 2 1;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -2 -2;
+               }
+               color_class: "radio_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "radio_button";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "radio_text_disabled";
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            ignore_flags: ON_HOLD;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "on";
+            /* if the radiomark is to be displayed */
+            signal: "e,state,on";
+            source: "e";
+            action: STATE_SET "on" 0.0;
+            transition: LINEAR 0.15;
+            target: "mark_hold";
+         }
+         program {
+            name: "off";
+            /* radio mark is not to be displayed */
+            signal: "e,state,off";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.2;
+            target: "mark_hold";
+         }
+         program {
+            name: "click";
+            signal: "mouse,up,1";
+            source: "event";
+            action: SIGNAL_EMIT "e,action,toggle" "";
+         }
+         program {
+            name: "label_on";
+            signal: "e,state,labeled";
+            source: "e";
+            action: STATE_SET "label_visible" 0.0;
+            target: "e.swallow.icon";
+            target: "label_clip";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "mark";
+            target: "event";
+            target: "e.text.label";
+         }
+      }
+   }
+   group {
+      name: "e/widgets/button";
+      images {
+         image: "bt_base1.png" COMP;
+         image: "bt_base2.png" COMP;
+         image: "bt_hilight.png" COMP;
+         image: "bt_shine.png" COMP;
+         image: "bt_glow.png" COMP;
+         image: "bt_dis_base.png" COMP;
+         image: "bt_dis_hilight.png" COMP;
+      }
+      parts {
+         part {
+            name: "button_image";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               min: 32 16;
+               image {
+                  normal: "bt_base2.png";
+                  border: 7 7 7 7;
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "bt_base1.png";
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "bt_dis_base.png";
+                  border: 4 4 4 4;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 3   3;
+                  to: "button_image";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 3  -4;
+                  to: "button_image";
+               }
+            }
+            description {
+               state: "combo" 0.0;
+               inherit: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               align: 0.0 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 3  3;
+                  to: "button_image";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset: 3   -4;
+                  to: "button_image";
+               }
+            }
+            description {
+               state: "icon" 0.0;
+               inherit: "default" 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: BOTH;
+               align: 0.5 0.5;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 3  3;
+                  to: "button_image";
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -4   -4;
+                  to: "button_image";
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: 2    3;
+                  to_x: "e.swallow.icon";
+                  to_y: "button_image";
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -4   -4;
+                  to: "button_image";
+               }
+               color_class: "button_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "button";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "button_text_disabled";
+            }
+            description {
+               state: "icon" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "over1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel2.relative: 1.0 0.5;
+               image {
+                  normal: "bt_hilight.png";
+                  border: 7 7 7 0;
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "bt_dis_hilight.png";
+                  border: 4 4 4 0;
+               }
+            }
+         }
+         part {
+            name: "over2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "bt_shine.png";
+                  border: 7 7 7 7;
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part {
+            name: "over3";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               image {
+                  normal: "bt_glow.png";
+                  border: 7 7 9 9;
+               }
+               fill.smooth : 0;
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "disabler";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               visible: 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "button_click";
+            signal: "mouse,down,1";
+            source: "button_image";
+            action: STATE_SET "clicked" 0.0;
+            target: "button_image";
+            target: "over3";
+         }
+         program {
+            name: "button_unclick";
+            signal: "mouse,up,1";
+            source: "button_image";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "over3";
+         }
+         program {
+            name: "button_unclick2";
+            signal: "mouse,clicked,1";
+            source: "button_image";
+            action: SIGNAL_EMIT "e,action,click" "";
+         }
+         program {
+            name: "text_state";
+            signal: "e,state,text";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "e.swallow.icon";
+            target: "e.text.label";
+         }
+         program {
+            name: "icon_state";
+            signal: "e,state,icon";
+            source: "e";
+            action: STATE_SET "icon" 0.0;
+            target: "e.swallow.icon";
+            target: "e.text.label";
+         }
+         program {
+            name: "combo_state";
+            signal: "e,state,combo";
+            source: "e";
+            action: STATE_SET "combo" 0.0;
+            target: "e.swallow.icon";
+            target: "e.text.label";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "button_image";
+            target: "over1";
+            target: "e.text.label";
+            target: "disabler";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "button_image";
+            target: "over1";
+            target: "e.text.label";
+            target: "disabler";
+         }
+      }
+   }
+   /* e/widgets/scrollframe is used in the Wallpaper selector dialog */
+   group {
+      name: "e/widgets/scrollframe";
+      images {
+         image: "added_images/e17_ibar_bg_v.png" COMP;
+         image: "added_images/e17_ibar_over_v.png" COMP;
+         image: "added_images/e17_scrollbar_hdrag_thumb.png" COMP;
+         image: "added_images/e17_scrollbar_vdrag_thumb.png" COMP;
+         image: "added_images/focus.png" COMP;
+         image: "sb_thumb.png" COMP;
+         image: "added_images/DM_Internet_Scroll_01.png" COMP;
+         image: "added_images/DM_Internet_Scroll_h_01.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Up.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Middle.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Down.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Left_h.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Middle_h.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Right_h.png" COMP;
+         image: "added_images/DM_Internet_Scroll_Increase.png" COMP;
+      }
+      parts {
+         part {
+            name: "bg";
+            mouse_events:  0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "added_images/e17_ibar_bg_v.png";
+                  border: 7 7 7 7;
+               }
+               fill {
+                  smooth : 0;
+               }
+            }
+         }
+         part {
+            name: "clipper";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "bg";
+                  offset: 4 4;
+               }
+               rel2 {
+                  to: "bg";
+                  offset: -5  -5;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            clip_to: "clipper";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  offset: 4 4;
+               }
+              rel2 {
+                  relative: 0.0  0.0;
+                  offset: -1   -1;
+                  to_x: "sb_vbar";
+                  to_y: "sb_hbar";
+              }
+            }
+         }
+         part {
+            name: "conf_over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "bg";
+               }
+               rel2 {
+                  to: "bg";
+               }
+               image {
+                  normal: "added_images/e17_ibar_over_v.png";
+                  border: 13 13 13 13;
+                  middle: 0;
+               }
+               fill {
+                  smooth : 0;
+               }
+            }
+         }
+         part {
+            name: "sb_vbar";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               align: 1.0 0.0;
+               rel1 {
+                  to: "bg";
+                  relative: 1.0 0.0;
+                  offset: -5 4;
+               }
+               rel2 {
+                  to: "bg";
+                  relative: 1.0 0.0;
+                  offset: -5 -1;
+                  to_y: "sb_hbar";
+               }
+            }
+            description {
+               state: "hidden" 0.0;
+               visible: 0;
+               max: 0 99999;
+               rel1 {
+                  to: "bg";
+                  relative: 1.0 0.0;
+                  offset: -4 4;
+               }
+               rel2 {
+                  to: "bg";
+                  relative: 1.0 0.0;
+                  offset: -4 -1;
+                  to_y: "sb_hbar";
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_base";
+            type: RECT;
+            clip_to: "sb_vbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 0.0  1.0;
+                  offset: 0    0;
+                  to: "sb_vbar_a1";
+               }
+               rel2 {
+                  relative: 1.0  0.0;
+                  offset: -1   -1;
+                  to: "sb_vbar_a2";
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_runner";
+            clip_to: "sb_vbar";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "sb_vbar_base";
+               }
+               rel2 {
+                  to: "sb_vbar_base";
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Middle.png";
+               }
+               fill {
+                  smooth: 0;
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_p1";
+            type: RECT;
+            clip_to: "sb_vbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset:   0   0;
+                  to: "sb_vbar_a1";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset:   -1  -1;
+                  to: "e.dragable.vbar";
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_p2";
+            type: RECT;
+            clip_to: "sb_vbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  offset:   0   0;
+                  to: "e.dragable.vbar";
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset:   -1  -1;
+                  to: "sb_vbar_a2";
+               }
+            }
+         }
+         part {
+            name: "e.dragable.vbar";
+            clip_to: "sb_vbar";
+            mouse_events: 1;
+            dragable {
+               x: 0 0 0;
+               y: 1 1 0;
+               confine: "sb_vbar_base";
+            }
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  relative: 0.5  0.5;
+                  offset: 0    0;
+                  to: "sb_vbar_base";
+               }
+               rel2 {
+                  relative: 0.5  0.5;
+                  offset: 0    0;
+                  to: "sb_vbar_base";
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_01.png";
+                  border: 5 5 5 5;
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_01.png";
+               }
+            }
+         }
+         part {
+            name: "vbar_bar_thumb";
+            clip_to: "sb_vbar";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               max: 8 8;
+               min: 8 8;
+               rel1 {
+                  to: "e.dragable.vbar";
+               }
+               rel2 {
+                  to: "e.dragable.vbar";
+               }
+               image {
+                  normal: "added_images/e17_scrollbar_vdrag_thumb.png";
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_a1";
+            type: IMAGE;
+            mouse_events: 1;
+            clip_to: "sb_vbar";
+            description {
+               state: "default" 0.0;
+               align: 0.5 0.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1 {
+                  to: "sb_vbar";
+                  relative: 0.0  0.0;
+                  offset: 0    0;
+               }
+               rel2 {
+                  to: "sb_vbar";
+                  relative: 1.0  0.0;
+                  offset: -1   0;
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Up.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Up.png";
+               }
+            }
+         }
+         part {
+            name: "sb_vbar_a2";
+            type: IMAGE;
+            mouse_events: 1;
+            clip_to: "sb_vbar";
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1 {
+                  to: "sb_vbar";
+                  relative: 0.0  1.0;
+                  offset:   0    -1;
+               }
+               rel2 {
+                  to: "sb_vbar";
+                  relative: 1.0  1.0;
+                  offset:   -1   -1;
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Down.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Down.png";
+               }
+            }
+         }
+         part {
+            name: "sb_increase";
+            type: IMAGE;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.5 1.0;
+               aspect: 1.0 1.0;
+               aspect_preference: HORIZONTAL;
+               rel1 {
+                  to: "sb_hbar_a2";
+                  relative: 1.0  0.0;
+                  offset: 0 2;
+               }
+               rel2 {
+                  to: "sb_vbar_a2";
+                  relative: 1.0  2.0;
+                  offset: -1 -1;
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Increase.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Increase.png";
+               }
+            }
+            description {
+               state: "hidden" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "sb_hbar_a2";
+                  relative: 1.0  0.0;
+                  offset: 0 2;
+               }
+               rel2 {
+                  to: "sb_vbar_a2";
+                  relative: 1.0  2.0;
+                  offset: -1 -1;
+               }
+            }
+         }
+         part {
+            name: "sb_hbar";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               align: 0.0 1.0;
+               rel1 {
+                  to: "bg";
+                  relative: 0.0 1.0;
+                  offset: 4 -5;
+               }
+               rel2 {
+                  to: "bg";
+                  relative: 0.0 1.0;
+                  offset: -1 -5;
+                  to_x: "sb_vbar";
+               }
+            }
+            description {
+               state: "hidden" 0.0;
+               visible: 0;
+               rel1 {
+                  to: "bg";
+                  relative: 0.0  1.0;
+                  offset: 0    -4;
+               }
+               rel2 {
+                  to: "bg";
+                  relative: 0.0  1.0;
+                  offset: -1   -4;
+                  to_x: "sb_vbar";
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_base";
+            type: RECT;
+            clip_to: "sb_hbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: 0    0;
+                  to: "sb_hbar_a1";
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: -1   -1;
+                  to: "sb_hbar_a2";
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_runner";
+            clip_to: "sb_hbar";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "sb_hbar_base";
+               }
+               rel2 {
+                  to: "sb_hbar_base";
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Middle_h.png";
+               }
+               fill {
+                  smooth: 0;
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_p1";
+            type: RECT;
+            clip_to: "sb_hbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset:   0   0;
+                  to: "sb_hbar_a1";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset:   -1  -1;
+                  to: "e.dragable.hbar";
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_p2";
+            type: RECT;
+            clip_to: "sb_hbar";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  offset:   0   0;
+                  to: "e.dragable.hbar";
+               }
+               rel2 {
+                  relative: 0.0 1.0;
+                  offset:   -1  -1;
+                  to: "sb_hbar_a2";
+               }
+            }
+         }
+         part {
+            name: "e.dragable.hbar";
+            clip_to: "sb_hbar";
+            mouse_events: 1;
+            dragable {
+               x: 1 1 0;
+               y: 0 0 0;
+               confine: "sb_hbar_base";
+            }
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  relative: 0.5  0.5;
+                  offset: 0    0;
+                  to: "sb_hbar_base";
+               }
+               rel2 {
+                  relative: 0.5  0.5;
+                  offset: 0    0;
+                  to: "sb_hbar_base";
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_h_01.png";
+                  border: 5 5 5 5;
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_h_01.png";
+               }
+            }
+         }
+         part {
+            name: "hbar_bar_thumb";
+            clip_to: "sb_hbar";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               max: 8 8;
+               min: 8 8;
+               rel1 {
+                  to: "e.dragable.hbar";
+               }
+               rel2 {
+                  to: "e.dragable.hbar";
+               }
+               image {
+                  normal: "added_images/e17_scrollbar_hdrag_thumb.png";
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_a1";
+            type: IMAGE;
+            mouse_events: 1;
+            clip_to: "sb_hbar";
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  to: "sb_hbar";
+                  relative: 0.0  0.0;
+                  offset: 0    0;
+               }
+               rel2 {
+                  to: "sb_hbar";
+                  relative: 0.0  1.0;
+                  offset: 0   -1;
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Left_h.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Left_h.png";
+               }
+            }
+         }
+         part {
+            name: "sb_hbar_a2";
+            type: IMAGE;
+            mouse_events: 1;
+            clip_to: "sb_hbar";
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  to: "sb_hbar";
+                  relative: 1.0  0.0;
+                  offset: -1    0;
+               }
+               rel2 {
+                  to: "sb_hbar";
+                  relative: 1.0  1.0;
+                  offset: -1   -1;
+               }
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Right_h.png";
+               }
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "added_images/DM_Internet_Scroll_Right_h.png";
+               }
+            }
+         }
+         part {
+            name: "focus";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               image {
+                  normal: "added_images/focus.png";
+                  border: 7 7 7 7;
+                  middle: 0;
+               }
+               fill {
+                  smooth: 0;
+               }
+            }
+            description {
+               state: "focused" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 255;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sb_vbar_show";
+            signal: "e,action,show,vbar";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "sb_vbar";
+            target: "sb_increase";
+         }
+         program {
+            name: "sb_vbar_hide";
+            signal: "e,action,hide,vbar";
+            source: "e";
+            action: STATE_SET "hidden" 0.0;
+            target: "sb_vbar";
+            target: "sb_increase";
+         }
+         program {
+            name: "sb_hbar_show";
+            signal: "e,action,show,hbar";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "sb_hbar";
+            target: "sb_increase";
+         }
+         program {
+            name: "sb_hbar_hide";
+            signal: "e,action,hide,hbar";
+            source: "e";
+            action: STATE_SET "hidden" 0.0;
+            target: "sb_hbar";
+            target: "sb_increase";
+         }
+         program {
+            name: "sb_vbar_a1_down";
+            signal: "mouse,down,1";
+            source: "sb_vbar_a1";
+            action: STATE_SET "clicked" 0.0;
+            target: "sb_vbar_a1";
+         }
+         program {
+            name: "sb_vbar_a1_down2";
+            signal: "mouse,down,1";
+            source: "sb_vbar_a1";
+            action: DRAG_VAL_STEP 0.0 -1.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_vbar_a1_up";
+            signal: "mouse,up,1";
+            source: "sb_vbar_a1";
+            action: STATE_SET "default" 0.0;
+            target: "sb_vbar_a1";
+         }
+         program {
+            name: "sb_vbar_a2_down";
+            signal: "mouse,down,1";
+            source: "sb_vbar_a2";
+            action: STATE_SET "clicked" 0.0;
+            target: "sb_vbar_a2";
+         }
+         program {
+            name: "sb_vbar_a2_down2";
+            signal: "mouse,down,1";
+            source: "sb_vbar_a2";
+            action: DRAG_VAL_STEP 0.0 1.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_vbar_a2_up";
+            signal: "mouse,up,1";
+            source: "sb_vbar_a2";
+            action: STATE_SET "default" 0.0;
+            target: "sb_vbar_a2";
+         }
+         program {
+            name: "sb_vbar_p1_down";
+            signal: "mouse,down,1";
+            source: "sb_vbar_p1";
+            action: DRAG_VAL_PAGE 0.0 -1.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_vbar_p2_down";
+            signal: "mouse,down,1";
+            source: "sb_vbar_p2";
+            action: DRAG_VAL_PAGE  0.0 1.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_vbar_down";
+            signal: "mouse,down,1";
+            source: "e.dragable.vbar";
+            action: STATE_SET "clicked" 0.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_vbar_up";
+            signal: "mouse,up,1";
+            source: "e.dragable.vbar";
+            action: STATE_SET "default" 0.0;
+            target: "e.dragable.vbar";
+         }
+         program {
+            name: "sb_hbar_a1_down";
+            signal: "mouse,down,1";
+            source: "sb_hbar_a1";
+            action: STATE_SET "clicked" 0.0;
+            target: "sb_hbar_a1";
+         }
+         program {
+            name: "sb_hbar_a1_down2";
+            signal: "mouse,down,1";
+            source: "sb_hbar_a1";
+            action: DRAG_VAL_STEP -1.0 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "sb_hbar_a1_up";
+            signal: "mouse,up,1";
+            source: "sb_hbar_a1";
+            action: STATE_SET "default" 0.0;
+            target: "sb_hbar_a1";
+         }
+         program {
+            name: "sb_hbar_a2_down";
+            signal: "mouse,down,1";
+            source: "sb_hbar_a2";
+            action: STATE_SET "clicked" 0.0;
+            target: "sb_hbar_a2";
+         }
+         program {
+            name: "sb_hbar_a2_down2";
+            signal: "mouse,down,1";
+            source: "sb_hbar_a2";
+            action: DRAG_VAL_STEP 1.0 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "sb_hbar_a2_up";
+            signal: "mouse,up,1";
+            source: "sb_hbar_a2";
+            action: STATE_SET "default" 0.0;
+            target: "sb_hbar_a2";
+         }
+         program {
+            name: "sb_hbar_p1_down";
+            signal: "mouse,down,1";
+            source: "sb_hbar_p1";
+            action: DRAG_VAL_PAGE -1.0 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "sb_hbar_p2_down";
+            signal: "mouse,down,1";
+            source: "sb_hbar_p2";
+            action: DRAG_VAL_PAGE  1.0 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "sb_hbar_down";
+            signal: "mouse,down,1";
+            source: "e.dragable.hbar";
+            action: STATE_SET "clicked" 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "sb_hbar_up";
+            signal: "mouse,up,1";
+            source: "e.dragable.hbar";
+            action: STATE_SET "default" 0.0;
+            target: "e.dragable.hbar";
+         }
+         program {
+            name: "focus_in";
+            signal: "e,state,focused";
+            source: "e";
+            action: STATE_SET "focused" 0.0;
+            transition: DECELERATE 0.2;
+            target: "focus";
+         }
+         program {
+            name: "focus_out";
+            signal: "e,state,unfocused";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: ACCELERATE 0.5;
+            target: "focus";
+         }
+      }
+   }
+   /* e/widgets/ilist is used in the Module Config Dialog for the module list */
+   group {
+      name: "e/widgets/ilist";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      images {
+         image: "bt_sm_base1.png" COMP;
+         image: "bt_sm_shine.png" COMP;
+         image: "bt_sm_hilight.png" COMP;
+         image: "ilist_1.png" COMP;
+         image: "ilist_item_shadow.png" COMP;
+      }
+      parts {
+         part {
+            name: "base_sh";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.0;
+               min: 0 10;
+               rel1 {
+                  to: "base";
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "base";
+                  relative: 1.0 1.0;
+                  offset: -1 0;
+               }
+               image {
+                  normal: "ilist_item_shadow.png";
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "ilist_item_base";
+               image {
+                  normal: "ilist_1.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -5 -5;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 4 4;
+               }
+               image {
+                  normal: "bt_sm_base1.png";
+                  border: 6 6 6 6;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 -2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 1 1;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 4    4;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 4   -5;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "e.swallow.icon";
+                  relative: 1.0  0.0;
+                  offset: 4 4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5 -5;
+               }
+               color_class: "ilist_item";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "ilist_item";
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color_class: "ilist_item_selected";
+            }
+         }
+         part {
+            name: "e.swallow.end";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: -5    4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5   -5;
+               }
+            }
+         }
+         part {
+            name: "fg1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.relative: 1.0 0.5;
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_hilight.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "fg2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_shine.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+            transition: LINEAR 0.1;
+         }
+      }
+   }
+   group {
+      name: "e/widgets/ilist_odd";
+      data.item: "stacking" "below";
+      data.item: "selectraise" "on";
+      images {
+         image: "bt_sm_base1.png" COMP;
+         image: "bt_sm_shine.png" COMP;
+         image: "bt_sm_hilight.png" COMP;
+         image: "ilist_2.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "ilist_item_odd_base";
+               image {
+                  normal: "ilist_2.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -5 -5;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 4 4;
+               }
+               image {
+                  normal: "bt_sm_base1.png";
+                  border: 6 6 6 6;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 -2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 1 1;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 4    4;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 4   -5;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "e.swallow.icon";
+                  relative: 1.0  0.0;
+                  offset: 4 4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5 -5;
+               }
+               color_class: "ilist_item_odd";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "ilist_item";
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               color_class: "ilist_item_selected";
+            }
+         }
+         part {
+            name: "e.swallow.end";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 1.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: -5    4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5   -5;
+               }
+            }
+         }
+         part {
+            name: "fg1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.relative: 1.0 0.5;
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_hilight.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "fg2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_shine.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+            transition: LINEAR 0.1;
+         }
+      }
+   }
+   group {
+      name: "e/widgets/ilist_header";
+      data.item: "stacking" "above";
+      data.item: "selectraise" "on";
+      images {
+         image: "bt_sm_base1.png" COMP;
+         image: "bt_sm_shine.png" COMP;
+         image: "bt_sm_hilight.png" COMP;
+         image: "ilist_header_1.png" COMP;
+         image: "ilist_item_shadow.png" COMP;
+      }
+      parts {
+         part {
+            name: "base_sh";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               fixed: 1 1;
+               align: 0.0 0.0;
+               min: 0 10;
+               rel1 {
+                  to: "base";
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "base";
+                  relative: 1.0 1.0;
+                  offset: -1 0;
+               }
+               image {
+                  normal: "ilist_item_shadow.png";
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "ilist_item_header_base";
+               image {
+                  normal: "ilist_header_1.png";
+                  border: 2 2 2 2;
+               }
+            }
+         }
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -5 -5;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 4 4;
+               }
+               image {
+                  normal: "bt_sm_base1.png";
+                  border: 6 6 6 6;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 -2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 1 1;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 4    4;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 4   -5;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "e.swallow.icon";
+                  relative: 1.0  0.0;
+                  offset: 4 4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5 -5;
+               }
+               color_class: "ilist_item_header";
+               text {
+                  font: "Sans:style=Bold";
+                  size: 16;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "ilist_item";
+               }
+            }
+         }
+         part {
+            name: "fg1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.relative: 1.0 0.5;
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_hilight.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "fg2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_shine.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+            transition: LINEAR 0.1;
+         }
+      }
+   }
+   group {
+      name: "e/widgets/ilist_header_odd";
+      data.item: "stacking" "below";
+      data.item: "selectraise" "on";
+      images {
+         image: "bt_sm_base1.png" COMP;
+         image: "bt_sm_shine.png" COMP;
+         image: "bt_sm_hilight.png" COMP;
+         image: "ilist_header_2.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "ilist_item_header_odd_base";
+               image {
+                  normal: "ilist_header_2.png";
+                  border: 2 2 2 2;
+               }
+            }
+         }
+         part {
+            name: "bg";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -5 -5;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 4 4;
+               }
+               image {
+                  normal: "bt_sm_base1.png";
+                  border: 6 6 6 6;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: -2 -2;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: 1 1;
+               }
+            }
+         }
+         part {
+            name: "e.swallow.icon";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 4    4;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 4   -5;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            effect: SOFT_SHADOW;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 16 16;
+               rel1 {
+                  to_x: "e.swallow.icon";
+                  relative: 1.0  0.0;
+                  offset: 4 4;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -5 -5;
+               }
+               color_class: "ilist_item_header_odd";
+               text {
+                  font: "Sans:style=Bold";
+                  size: 16;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "ilist_item";
+               }
+            }
+         }
+         part {
+            name: "fg1";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.relative: 1.0 0.5;
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_hilight.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "fg2";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 255 255 255 0;
+               rel1.to: "bg";
+               rel2.to: "bg";
+               image {
+                  normal: "bt_sm_shine.png";
+                  border: 6 6 6 0;
+               }
+            }
+            description {
+               state: "selected" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_active";
+            signal: "e,state,selected";
+            source: "e";
+            action: STATE_SET "selected" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+         }
+         program {
+            name: "go_passive";
+            signal: "e,state,unselected";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg";
+            target: "fg1";
+            target: "fg2";
+            target: "e.text.label";
+            transition: LINEAR 0.1;
+         }
+      }
+   }
+   group {
+      name: "e/widgets/ilist/toggle_end";
+      images {
+         image: "icon_active.png" COMP;
+      }
+      parts {
+         part {
+            name: "icon";
+            type: IMAGE;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 0;
+               visible: 0;
+               align: 1.0 0.5;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 4    4;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 4   -5;
+               }
+               image.normal: "icon_active.png";
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program {
+            signal: "e,state,checked";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            target: "icon";
+            transition: LINEAR 0.1;
+         }
+         program {
+            signal: "e,state,unchecked";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "icon";
+            transition: LINEAR 0.1;
+         }
+      }
+   }
+   /* Used to display RGB/HSV values via sliders
+      in Wallpaper Gradient Dialog               */
+   group {
+      name: "e/widgets/cslider";
+      images.image: "inset_sunk.png" COMP;
+      parts {
+         part {
+            name: "content_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.to: "e.swallow.content";
+               rel2.to: "e.swallow.content";
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "content_clip";
+            description {
+               state: "default" 0.0;
+               min: 50 20;
+               rel1.offset: 4    4;
+               rel2.offset: -5    -5;
+            }
+            description {
+               state: "vertical" 0.0;
+               inherit: "default" 0.0;
+               min: 20 50;
+            }
+         }
+         part {
+            name: "border";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "e.swallow.content";
+                  offset: -1 -1;
+               }
+               rel2 {
+                  to: "e.swallow.content";
+                  offset: 0 0;
+               }
+               image {
+                  normal: "inset_sunk.png";
+                  border: 7 7 7 7;
+                  middle: 0;
+               }
+               fill.smooth : 0;
+            }
+         }
+         part {
+            name: "e.dragable.cursor";
+            type: RECT;
+            clip_to: "content_clip";
+            dragable {
+               confine: "e.swallow.content";
+               x: 1 1 0;
+               y: -1 1 0;
+            }
+            description {
+               state: "default" 0.0;
+               min: 1 24;
+               max: 1 9999;
+               fixed: 1 1;
+               rel1 {
+                  to: "e.swallow.content";
+                  relative: 0.5 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "e.swallow.content";
+                  relative: 0.5 1.0;
+                  offset: 0 -1;
+               }
+               color: 255 255 255 150;
+            }
+            description {
+               state: "vertical" 0.0;
+               min: 24 1;
+               max: 9999 1;
+               fixed: 1 1;
+               rel1 {
+                  to: "e.swallow.content";
+                  relative: 0.0 0.5 ;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "e.swallow.content";
+                  relative: 1.0 0.5;
+                  offset: -1 0;
+               }
+               color: 255 255 255 150;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "go_vertical";
+            signal: "e,state,direction,v";
+            source: "e";
+            action: STATE_SET "vertical" 0.0;
+            target: "e.dragable.cursor";
+            target: "e.swallow.content";
+         }
+      }
+   }
+   /* e/widgets/slider* is used in the Virtual Desktops Config dialog */
+   group {
+      name: "e/widgets/slider_vertical";
+      images {
+         image: "slider.png" COMP;
+         image: "slider_clicked.png" COMP;
+         image: "sb_runnerv.png" COMP;
+         image: "inset_sunk.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               min: 22 0;
+               rel1.offset: 2 2;
+               rel2.offset: -3 -3;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  to_y: "label";
+                  relative: 1.0  0.0;
+                  offset: -3   -1;
+               }
+            }
+         }
+         part {
+            name: "runner";
+            mouse_events: 0;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               max: 3 99999;
+               rel1.to: "base";
+               rel2.to: "base";
+               image {
+                  normal: "sb_runnerv.png";
+                  border: 0 0 4 4;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "label_base";
+            clip_to: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 0;
+               visible: 0;
+               rel1.to: "label";
+               rel1.offset: 1 1;
+               rel2.to: "label";
+               rel2.offset: -2 -2;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "label";
+            mouse_events: 0;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "active" 0.0;
+               rel1 {
+                  to: "e.text.label";
+                  offset: -4  -2;
+               }
+               rel2 {
+                  to: "e.text.label";
+                  offset: 3  1;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            clip_to: "clip";
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "active" 0.0;
+               align: 0.5 1.0;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.0  1.0;
+                  offset: 7    -8;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -8  -8;
+               }
+               color_class: "slider_text";
+               text {
+                  text: "0.0";
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "slider";
+               }
+            }
+         }
+         part {
+            name: "sld_p1";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel2 {
+                  relative: 1.0 0.0;
+                  to: "e.dragable.slider";
+               }
+            }
+         }
+         part {
+            name: "sld_p2";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 0.0 1.0;
+                  to: "e.dragable.slider";
+               }
+            }
+         }
+         part {
+            name: "e.swallow.bar";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1 {
+                  to_x: "e.dragable.slider";
+                  to_y: "base";
+                  offset: 0 5;
+               }
+               rel2 {
+                  to_x: "e.dragable.slider";
+                  to_y: "base";
+                  offset: -1 -6;
+               }
+            }
+         }
+         part {
+            name: "e.dragable.slider";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            dragable {
+               x: 0 0 0;
+               y: -1 1 0;
+               confine: "base";
+            }
+            description {
+               state: "default" 0.0;
+               min: 11 11;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.5  0.5;
+                  offset: -1    0;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 0.5  0.5;
+                  offset: -1    -1;
+                  to: "base";
+               }
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "button";
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 22 22;
+               fixed: 1 1;
+               rel1.to: "e.dragable.slider";
+               rel2.to: "e.dragable.slider";
+               image.normal: "slider.png";
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "slider_clicked.png";
+            }
+         }
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sld_p1_down";
+            signal: "mouse,down,1";
+            source: "sld_p1";
+            action: DRAG_VAL_PAGE 0.0 -1.0;
+            target: "e.dragable.slider";
+         }
+         program {
+            name: "sld_p2_down";
+            signal: "mouse,down,1";
+            source: "sld_p2";
+            action: DRAG_VAL_PAGE  0.0 1.0;
+            target: "e.dragable.slider";
+         }
+         program {
+            name: "button_down";
+            signal: "mouse,down,1";
+            source: "e.dragable.slider";
+            action: STATE_SET "clicked" 0.0;
+            target: "button";
+         }
+         program {
+            name: "button_up";
+            signal: "mouse,up,1";
+            source: "e.dragable.slider";
+            action: STATE_SET "default" 0.0;
+            target: "button";
+         }
+         program {
+            name: "show_label";
+            signal: "e,action,show,label";
+            source: "e";
+            action: STATE_SET "active" 0.0;
+            target: "base";
+            target: "label";
+            target: "label_base";
+            target: "e.text.label";
+         }
+         program {
+            name: "hide_label";
+            signal: "e,action,hide,label";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            target: "label";
+            target: "label_base";
+            target: "e.text.label";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "clip";
+            target: "event";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "clip";
+            target: "event";
+         }
+      }
+   }
+   group {
+      name: "e/widgets/slider_horizontal";
+      images {
+         image: "slider.png" COMP;
+         image: "slider_clicked.png" COMP;
+         image: "sb_runnerh.png" COMP;
+         image: "inset_sunk.png" COMP;
+      }
+      parts {
+         part {
+            name: "base";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               min: 0 22;
+               rel1.offset: 2 2;
+               rel2.offset: -3 -3;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               rel2 {
+                  to_x: "label";
+                  relative: 0.0  1.0;
+                  offset: -1   -3;
+               }
+            }
+         }
+         part {
+            name: "runner";
+            mouse_events: 0;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               max: 99999 3;
+               rel1.to: "base";
+               rel2.to: "base";
+               image {
+                  normal: "sb_runnerh.png";
+                  border: 4 4 0 0;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "label_base";
+            clip_to: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 0;
+               visible: 0;
+               rel1.to: "label";
+               rel1.offset: 1 1;
+               rel2.to: "label";
+               rel2.offset: -2 -2;
+            }
+            description {
+               state: "active" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "label";
+            mouse_events: 0;
+            clip_to: "clip";
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "active" 0.0;
+               min: 20 0;
+               rel1 {
+                  to: "e.text.label";
+                  offset: -4 -2;
+               }
+               rel2 {
+                  to: "e.text.label";
+                  offset: 2   1;
+               }
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            clip_to: "clip";
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+            }
+            description {
+               state: "active" 0.0;
+               align: 1.0 0.5;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: -8   7;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset: -8 -8;
+               }
+               color_class: "slider_text";
+               text {
+                  text: "0.0";
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "slider";
+               }
+            }
+         }
+         part {
+            name: "sld_p1";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel2 {
+                  relative: 0.0 1.0;
+                  to: "e.dragable.slider";
+               }
+            }
+         }
+         part {
+            name: "sld_p2";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+               rel1 {
+                  relative: 1.0 0.0;
+                  to: "e.dragable.slider";
+               }
+            }
+         }
+         part {
+            name: "e.swallow.bar";
+            type: SWALLOW;
+            description { state: "default" 0.0;
+               rel1 {
+                  to_x: "base";
+                  to_y: "e.dragable.slider";
+                  offset: 5 0;
+               }
+               rel2 {
+                  to_x: "base";
+                  to_y: "e.dragable.slider";
+                  offset: -6 -1;
+               }
+            }
+         }
+         part {
+            name: "e.dragable.slider";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            dragable {
+               x: 1 1 0;
+               y: 0 0 0;
+               confine: "base";
+            }
+            description {
+               state: "default" 0.0;
+               min: 11 11;
+               fixed: 1 1;
+               rel1 {
+                  relative: 0.5  0.5;
+                  to: "base";
+               }
+               rel2 {
+                  relative: 0.5  0.5;
+                  offset: 0    0;
+                  to: "base";
+               }
+               color: 0 0 0 0;
+            }
+         }
+         part {
+            name: "slider";
+            mouse_events: 0;
+            clip_to: "clip";
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 22 22;
+               fixed: 1 1;
+               rel1.to: "e.dragable.slider";
+               rel2.to: "e.dragable.slider";
+               image.normal: "slider.png";
+            }
+            description {
+               state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               image.normal: "slider_clicked.png";
+            }
+         }
+         part {
+            name: "clip";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 128;
+            }
+         }
+         part {
+            name: "event";
+            type: RECT;
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               visible: 0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "sld_p1_down";
+            signal: "mouse,down,1";
+            source: "sld_p1";
+            action: DRAG_VAL_PAGE -1.0 0.0;
+            target: "e.dragable.slider";
+         }
+         program {
+            name: "sld_p2_down";
+            signal: "mouse,down,1";
+            source: "sld_p2";
+            action: DRAG_VAL_PAGE  1.0 0.0;
+            target: "e.dragable.slider";
+         }
+         program {
+            name: "sld_down";
+            signal: "mouse,down,1";
+            source: "e.dragable.slider";
+            action: STATE_SET "clicked" 0.0;
+            target: "slider";
+         }
+         program {
+            name: "sld_up";
+            signal: "mouse,up,1";
+            source: "e.dragable.slider";
+            action: STATE_SET "default" 0.0;
+            target: "slider";
+         }
+         program {
+            name: "show_label";
+            signal: "e,action,show,label";
+            source: "e";
+            action: STATE_SET "active" 0.0;
+            target: "base";
+            target: "label";
+            target: "label_base";
+            target: "e.text.label";
+         }
+         program {
+            name: "hide_label";
+            signal: "e,action,hide,label";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "base";
+            target: "label";
+            target: "label_base";
+            target: "e.text.label";
+         }
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "clip";
+            target: "event";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "clip";
+            target: "event";
+         }
+      }
+   }
+   /* e/widgets/frame is used in the Config Dialog
+      to outline the content                       */
+   group {
+      name: "e/widgets/frame";
+      images {
+         image: "frame_1.png" COMP;
+         image: "frame_2.png" COMP;
+         image: "dia_grad.png" COMP;
+      }
+      parts {
+         part {
+            name: "base0";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color_class: "frame_base";
+               image.normal: "dia_grad.png";
+               rel1.to: "over";
+               rel2.to: "over";
+               fill {
+                  smooth: 0;
+                  size {
+                     relative: 0.0 1.0;
+                     offset: 64 0;
+                  }
+               }
+            }
+         }
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "frame_2.png";
+                  border: 5 5 32 26;
+                  middle: 0;
+               }
+               fill.smooth : 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to_y: "e.text.label";
+                  relative: 0.0 1.0;
+                  offset: 8 2;
+               }
+               rel2.offset: -9 -9;
+            }
+         }
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               align: 0.0 0.0;
+               fixed: 0 1;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 6 6;
+               }
+               rel2 {
+                  relative: 1.0 0.0;
+                  offset: -7 6;
+               }
+               color: 0 0 0 64;
+               text {
+                  font: "Sans:style=Bold";
+                  size: 10;
+                  min: 1 1;
+                  max: 1 1;
+                  align: 0.0 0.0;
+                  text_class: "frame";
+               }
+            }
+         }
+         part {
+            name: "over";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 4 4;
+               rel2.offset: -5 -5;
+               image {
+                  normal: "frame_1.png";
+                  border: 2 2 28 22;
+                  middle: 0;
+               }
+               fill.smooth : 0;
+            }
+         }
+      }
+   }
+   group {
+      name: "e/widgets/label";
+      parts {
+         part {
+            name: "e.text.label";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 2 2;
+               rel2.offset: -3 -3;
+               color_class: "label_text";
+               text {
+                  font: "Sans";
+                  size: 10;
+                  min: 1 1;
+                  align: 0.0 0.5;
+                  text_class: "label";
+               }
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color_class: "label_text_disabled";
+            }
+         }
+      }
+      programs {
+         program {
+            name: "disable";
+            signal: "e,state,disabled";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "e.text.label";
+         }
+         program {
+            name: "enable";
+            signal: "e,state,enabled";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "e.text.label";
+         }
+      }
+   }
+
+   /* e/widgets/textblock is used in the description
+      of modules in Module Config dialog             */
+   group {
+      name: "e/widgets/textblock";
+      styles {
+         style {
+            name: "textblock_style";
+            base: "font=Sans font_size=10 align=left color=#000 style=shadow shadow_color=#ffffff80 wrap=word";
+            tag: "title" "+ font=Sans:style=Bold font_size=12 style=soft_shadow color=#fff shadow_color=#00000021";
+            tag: "hilight" "+ font=Sans:style=Bold style=glow color=#fff glow2_color=#333333be glow_color=#0000005a";
+            tag: "urgent" "+ font=Sans:style=Bold style=glow color=#fff glow2_color=#333 glow_color=#b01010";
+            tag: "b" "+ font=Sans:style=Bold";
+            tag: "br" "\n";
+         }
+      }
+      parts {
+         part {
+            name: "e.textblock.text";
+            type: TEXTBLOCK;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 4 4;
+               rel2.offset: -5 -5;
+               text {
+                  style: "textblock_style";
+                  min: 1 1;
+               }
+            }
+         }
+      }
+   }
 
-        part { name: "e.event.icon";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "icon_area";
-              rel2.to: "icon_area";
-              color: 0 0 0 0;
-           }
-        }
+/////////////////////////////////////////////////////////////////////////////
+/*** GADMAN ***/
 
-        part { name: "e.event.close";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "bt_close";
-              rel2.to: "bt_close";
-              color: 0 0 0 0;
-           }
-        }
-        part { name: "e.event.minimize";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "bt_min";
-              rel2.to: "bt_min";
-              color: 0 0 0 0;
-           }
-        }
-        part { name: "e.event.maximize";
-           type: RECT;
-           description { state: "default" 0.0;
-              rel1.to: "bt_max";
-              rel2.to: "bt_max";
-              color: 0 0 0 0;
-           }
-        }
+   group {
+      name: "e/gadman/popup";
+      images.image: "base_bg.png" COMP;
+      parts {
+         part {
+            name: "base";
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "base_bg.png";
+                  border: 2 2 2 2;
+               }
+               fill.smooth: 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            description {
+               state: "default" 0.0;
+               rel1.offset: 3 3;
+               rel2.offset: -4 -4;
+            }
+         }
+      }
+   }
+   group {
+      name: "e/gadman/full_bg";
+      parts {
+         part {
+            name: "bg";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+            description {
+               state: "visible" 0.0;
+               color: 0 0 0 128;
+            }
+         }
+         part {
+            name: "custom_bg";
+            type: RECT;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 0;
+            }
+            description {
+               state: "visible" 0.0;
+               color: 255 255 255 200;
+            }
+         }
+         part {
+            name: "e.swallow.bg";
+            type: SWALLOW;
+            clip_to: "custom_bg";
+            description {
+               state: "default" 0.0;
+            }
+         }
+         part {
+            name: "grabber";
+            type: RECT;
+            mouse_events: 1;
+            repeat_events: 1;
+            description {
+               state: "default" 0.0;
+               color: 0 0 0 0;
+            }
+         }
+      }
+      programs {
+         program {
+            name: "show";
+            signal: "e,state,visibility,show";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.4;
+            target: "bg";
+         }
+         program {
+            name: "show_now";
+            signal: "e,state,visibility,show,now";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.0;
+            target: "bg";
+         }
+         program {
+            name: "hide";
+            signal: "e,state,visibility,hide";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.4;
+            target: "bg";
+            after: "hide_stop";
+         }
+         program {
+            name: "hide_now";
+            signal: "e,state,visibility,hide,now";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.0;
+            target: "bg";
+            after: "hide_stop";
+         }
+         program {
+            name: "show_custom";
+            signal: "e,state,visibility,show,custom";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.4;
+            target: "custom_bg";
+         }
+         program {
+            name: "show_custom_now";
+            signal: "e,state,visibility,show,custom,now";
+            source: "e";
+            action: STATE_SET "visible" 0.0;
+            transition: LINEAR 0.0;
+            target: "custom_bg";
+         }
+         program {
+            name: "hide_custom";
+            signal: "e,state,visibility,hide,custom";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.4;
+            target: "custom_bg";
+            after: "hide_stop";
+         }
+         program {
+            name: "hide_custom_now";
+            signal: "e,state,visibility,hide,custom,now";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.0;
+            target: "custom_bg";
+            after: "hide_stop";
+         }
+         program {
+            name: "hide_stop";
+            action: SIGNAL_EMIT "e,action,hide,stop" "";
+         }
+      }
+   }
+   group {
+      name: "e/gadman/frame";
+      images.image: "inset_raised.png" COMP;
+      parts {
+         part {
+            name: "bg_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1.to: "overlay";
+               rel2.to: "overlay";
+               color: 255 255 255 255;
+            }
+            description {
+               state: "plain" 0.0;
+               rel1.relative: 0.0 0.0;
+               rel2.relative: 0.0 0.0;
+               color: 255 255 255 255;
+            }
+         }
+         part {
+            name: "items_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "overlay";
+                  offset: 4  4;
+               }
+               rel2 {
+                  to: "overlay";
+                  offset: -5  -5;
+               }
+               color: 255 255 255 255;
+            }
+            description {
+               state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "e.swallow.content";
+            type: SWALLOW;
+            clip_to: "items_clip";
+            description {
+               state: "default" 0.0;
+               rel1.offset: 4  4;
+               rel2.offset: -5  -5;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "hidden" 0.0;
+               rel1.relative: 0.5 0.5;
+               rel2.relative: 0.5 0.5;
+               color: 255 255 255 0;
+            }
+         }
+         part {
+            name: "overlay";
+            mouse_events: 0;
+            clip_to: "bg_clip";
+            description {
+               state: "default" 0.0;
+               image {
+                  normal: "inset_raised.png";
+                  border: 7 7 7 7;
+                  middle: 0;
+               }
+               fill.smooth: 0;
+               color: 255 255 255 255;
+            }
+            description {
+               state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: 0.5 0.5;
+               rel2.relative: 0.5 0.5;
+               color: 255 255 255 0;
+            }
+         }
       }
-      /* programs - these are basically snippets of simple logic to respond to
-       * incoming signals (generated by signal emisions by code or events) */
       programs {
-        program { name: "focus_in"; /* name of the program. must be unique
-                                     * within the list of programs attached
-                                     * to a group of parts */
-           signal: "e,state,focused"; /* what signal triggers this program,
-                                       * if any. this can also be a glob like
-                                       * "mouse,down,*" for example. note
-                                       * that globs are slower to match
-                                       * and empty strings are literal matches
-                                       * too */
-           source: "e"; /* the source of the signal - this must also match for
-                         * the program to be run */
-           action: STATE_SET "focused" 0.0; /* the action the program will
-                                             * perform. in this case
-                                             * it will set the state to
-                                             * "focused" @ value 0.0 */
-           target: "e.text.title";
-        }
-        program { name: "focus_out"; /* this program is run when focus is
-                                      * removed from a window border */
-           signal: "e,state,unfocused";
-           source: "e";
-           action: STATE_SET "default" 0.0;
-           target: "e.text.title";
-        }
-
-        program { name: "max_full"; /* run on fullscreen maximize */
-           signal: "e,action,maximize,fullscreen";
-           source: "e";
-           action: STATE_SET "max" 0.0;
-           target: "bottom";
-           target: "e.swallow.client";
-        }
-        program { name: "unmax_full"; /* run on unmaximize from fullscreen */
-           signal: "e,action,unmaximize,fullscreen";
-           source: "e";
-           action: STATE_SET "default" 0.0;
-           target: "bottom";
-           target: "e.swallow.client";
-        }
-
-// don't have any animation or stat change to do at the start of shading
-//      program { name: "xx";
-//         signal: "e,state,shading";
-//         source: "e";
-//      }
-        program { name: "shade_end"; /* run when the window finishes its
-                                      * shading animation */
-           signal: "e,state,shaded";
-           source: "e";
-           action: STATE_SET "shaded" 0.0;
-           target: "bottom";
-           target: "e.swallow.client";
-           target: "e.event.resize.tl";
-           target: "e.event.resize.tr";
-           target: "e.event.resize.bl";
-           target: "e.event.resize.br";
-           target: "e.event.resize.t";
-           target: "e.event.resize.b";
-        }
-        program { name: "unshade_start"; /* run when the window starts
-                                          * unshading itself */
-           signal: "e,state,unshading";
-           source: "e";
-           action: STATE_SET "default" 0.0;
-           target: "bottom";
-           target: "e.swallow.client";
-           target: "e.event.resize.tl";
-           target: "e.event.resize.tr";
-           target: "e.event.resize.bl";
-           target: "e.event.resize.br";
-           target: "e.event.resize.t";
-           target: "e.event.resize.b";
-        }
-// don't have any animation or stat change to do at the end of unshading
-//      program { name: "xx";
-//         signal: "e,state,unshaded";
-//         source: "e";
-//      }
-        program { name: "resize_b_on";
-           signal: "mouse,in"; /* on mouse enter... */
-           source: "e.event.resize.b"; /* in this named part */
-           action: ACTION_STOP; /* stop the following programs */
-           target: "resize_b_on2";
-           target: "resize_b_on3";
-           after: "resize_b_on2"; /* then run... */
-        }
-        program { name: "resize_b_on2";
-           action: STATE_SET "default" 0.0;
-           target: "resize_b";
-           after: "resize_b_on3";
-        }
-        program { name: "resize_b_on3";
-           action: STATE_SET "past" 0.0;
-           transition: LINEAR 0.5;
-           target: "resize_b";
-           after: "resize_b_on2";
-        }
-        program { name: "resize_b_off";
-           signal: "mouse,out"; /* on mouse leave... */
-           source: "e.event.resize.b";
-           action: ACTION_STOP;
-           target: "resize_b_on";
-           target: "resize_b_on2";
-           target: "resize_b_on3";
-        }
+         program {
+            name: "inset";
+            signal: "e,state,visibility,inset";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "bg_clip";
+         }
+         program {
+            name: "plain";
+            signal: "e,state,visibility,plain";
+            source: "e";
+            action: STATE_SET "plain" 0.0;
+            target: "bg_clip";
+         }
+         program {
+            name: "hide";
+            signal: "e,state,visibility,hide";
+            source: "e";
+            action: STATE_SET "hidden" 0.0;
+            transition: ACCELERATE 0.4;
+            target: "items_clip";
+            target: "overlay";
+            target: "e.swallow.content";
+         }
+         program {
+            name: "hide_now";
+            signal: "e,state,visibility,hide,now";
+            source: "e";
+            action: STATE_SET "hidden" 0.0;
+            transition: LINEAR 0.0;
+            target: "items_clip";
+            target: "overlay";
+            target: "e.swallow.content";
+         }
+         program {
+            name: "show";
+            signal: "e,state,visibility,show";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: DECELERATE 0.4;
+            target: "items_clip";
+            target: "overlay";
+            target: "e.swallow.content";
+         }
+         program {
+            name: "show_now";
+            signal: "e,state,visibility,show,now";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            transition: LINEAR 0.0;
+            target: "items_clip";
+            target: "overlay";
+            target: "e.swallow.content";
+         }
       }
    }
-
-/////////////////////////////////////////////////////////////////////////////
-/*** DIALOG ***/
-/* Used in all dialogs eg; Wallpaper selector */
-
    group {
-      name: "e/widgets/dialog/main";
+      name: "e/gadman/control";
       images {
-         image: "dia_grad.png" COMP;
-         image: "dia_topshad.png" COMP;
-         image: "dia_botshad.png" COMP;
-         image: "menu_sep.png" COMP;
+         image: "gadman_frame.png" COMP;
+         image: "gadman_border.png" COMP;
+         image: "gadman_top.png" COMP;
+         image: "gadman_bottom.png" COMP;
+         image: "gadman_left.png" COMP;
+         image: "gadman_right.png" COMP;
       }
       parts {
          part {
-            name: "base";
+            name: "hclip";
             mouse_events: 0;
+            type: RECT;
             description {
                state: "default" 0.0;
-               color_class: "dialog_base";
-               image.normal: "dia_grad.png";
-               fill {
-                  smooth: 0;
-                  size {
-                     relative: 0.0 1.0;
-                     offset: 64 0;
-                  }
-               }
+               visible: 1;
+               rel1.offset: -85 -85;
+               rel2.offset: 74 74;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible : 0;
             }
          }
          part {
-            name: "shadow";
+            name: "vclip";
             mouse_events: 0;
+            type: RECT;
             description {
                state: "default" 0.0;
-               rel2.relative: 1.0 0.0;
-               rel2.offset: -1 31;
-               image.normal: "dia_topshad.png";
-               fill {
-                  smooth: 0;
-                  size {
-                     relative: 0.0 1.0;
-                     offset: 64 0;
-                  }
+               visible: 1;
+               rel1.offset: -85 -85;
+               rel2.offset: 84 84;
+            }
+            description {
+               state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible : 0;
+            }
+         }
+         part {
+            name: "overlay";
+            mouse_events: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "border";
+                  offset: 4 4;
+               }
+               rel2 {
+                  to: "border";
+                  offset: -5 -5;
                }
+               image.normal: "gadman_frame.png";
+               fill.size.relative: 0 0;
+               fill.size.offset: 24 24;
             }
          }
          part {
-            name: "shadow2";
-            mouse_events: 0;
+            name: "left_arrow1";
             description {
                state: "default" 0.0;
-               rel1.relative: 0.0 1.0;
-               rel1.offset: 0 -4;
-               image.normal: "dia_botshad.png";
-               fill {
-                  smooth: 0;
-                  size {
-                     relative: 0.0 1.0;
-                     offset: 64 0;
-                  }
+               aspect: 1.0 1.0;
+               max: 12 24;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: 3 0;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: 3 -1;
+               }
+               image.normal: "gadman_left.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: -32 -12;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: -18 11;
+               }
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: -24 -6;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: -10 5;
                }
             }
          }
          part {
-            name: "e.swallow.icon";
-            type: SWALLOW;
+            name: "left_arrow2";
             description {
                state: "default" 0.0;
-               align: 0.0 0.5;
-               fixed: 1 0;
+               aspect: 1.0 1.0;
+               max: 12 24;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: 3 0;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: 3 -1;
+               }
+               image.normal: "gadman_left.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: -32 -12;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: -18 11;
+               }
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.5;
+                  offset: -24 -6;
+               }
+               rel2 {
+                  relative: 0.0 0.5;
+                  offset: -10 5;
+               }
+            }
+         }
+         part {
+            name: "right_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               max: 12 24;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: -3 0;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -3 -1;
+               }
+               image.normal: "gadman_right.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 32 -12;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: 18 11;
+               }
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 24 -6;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: 10 5;
+               }
+            }
+         }
+         part {
+            name: "right_arrow2";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               max: 12 24;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: -3 0;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: -3 -1;
+               }
+               image.normal: "gadman_right.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 32 -12;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: 18 11;
+               }
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 1.0 0.5;
+                  offset: 24 -6;
+               }
+               rel2 {
+                  relative: 1.0 0.5;
+                  offset: 10 5;
+               }
+            }
+         }
+         part {
+            name: "top_arrow1";
+            description {
+               state: "default" 0.0;
+               aspect: 1.0 1.0;
+               max: 24 12;
+               rel1 {
+                  relative: 0.5 0.0;
+                  offset: 0 3;
+               }
+               rel2 {
+                  relative: 0.5 0.0;
+                  offset: -1 3;
+               }
+               image.normal: "gadman_top.png";
+            }
+            description {
+               state: "1" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  relative: 0.5 0.0;
+                  offset: -12 -32;
+               }
+               rel2 {
+                  relative: 0.5 0.0;
+                  offset: 11 -18;
+               }
+            }
+            description {
+               state: "2" 0.0;
+               inherit: "default" 0.0;
                rel1 {
-                  relative: 0.0 0.0;
-                  offset: 2  2;
+                  relative: 0.5 0.0;
+                  offset: -6 -24;
                }
                rel2 {
-                  relative: 0.0 0.0;
-                  offset: 2  -5;
-                  to_y: "e.swallow.buttons";
+                  relative: 0.5 0.0;
+                  offset: 5 -9;
                }
             }
          }
          part {
-            name: "e.swallow.content";
-            type: SWALLOW;
+            name: "top_arrow2";
             description {
                state: "default" 0.0;
+               aspect: 1.0 1.0;
+               max: 24 12;
                rel1 {
-                  relative: 1.0 0.0;
-                  offset: 2   2;
-                  to_x: "e.swallow.icon";
+                  relative: 0.5 0.0;
+                  offset: 0 3;
                }
                rel2 {
-                  relative: 1.0 0.0;
-                  offset: -3  -5;
-                  to_y: "e.swallow.buttons";
+                  relative: 0.5 0.0;
+                  offset: -1 3;
                }
+               image.normal: "gadman_top.png";
             }
-         }
-         part {
-            name: "separator";
-            mouse_events: 0;
             description {
-               state: "default" 0.0;
-               min: 16 2;
+               state: "1" 0.0;
+               inherit: "default" 0.0;
                rel1 {
-                  relative: 0.0  1.0;
-                  offset: 4    -1;
-                  to_y: "e.swallow.content";
+                  relative: 0.5 0.0;
+                  offset: -12 -32;
                }
                rel2 {
-                  relative: 1.0  1.0;
-                  offset: -5   0;
-                  to_y: "e.swallow.content";
-               }
-               image {
-                  normal: "menu_sep.png";
-                  border: 2 2 0 0;
+                  relative: 0.5 0.0;
+                  offset: 11 -18;
                }
-               fill.smooth: 0;
             }
-         }
-         part {
-            name: "e.swallow.buttons";
-            type: SWALLOW;
             description {
-               state: "default" 0.0;
-               align: 0.5 1.0;
-               fixed: 0 1;
+               state: "2" 0.0;
+               inherit: "default" 0.0;
                rel1 {
-                  relative: 0.0 1.0;
-                  offset: 4   -5;
+                  relative: 0.5 0.0;
+                  offset: -6 -24;
                }
                rel2 {
-                  relative: 1.0 1.0;
-                  offset: -5  -5;
+                  relative: 0.5 0.0;
+                  offset: 5 -9;
                }
             }
          }
-      }
-   }
-   group {
-      name: "e/widgets/dialog/text";
-      styles {
-         style {
-            name: "dialog_style";
-            base: "font=Sans font_size=10 text_class=tb_plain align=center color=#000 style=shadow shadow_color=#ffffff80 wrap=word";
-            tag: "br" "\n";
-            tag: "hilight" "+ font=Sans:style=Bold text_class=tb_light";
-         }
-      }
-      parts {
          part {
-            name: "e.textblock.message";
-            type: TEXTBLOCK;
-            mouse_events: 0;
-            scale: 1;
+            name: "bottom_arrow1";
             description {
                state: "default" 0.0;
-               rel1.offset: 4 4;
-               rel2.offset: -5 -5;
-               text {
-                  style: "dialog_style";
-                  min: 1 1;
+               aspect: 1.0 1.0;
+               max: 24 12;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: 0 -3;
                }
-            }
-         }
-      }
-   }
-
-   group {
-      name: "e/widgets/button";
-      images {
-         image: "bt_base1.png" COMP;
-         image: "bt_base2.png" COMP;
-         image: "bt_hilight.png" COMP;
-         image: "bt_shine.png" COMP;
-         image: "bt_glow.png" COMP;
-         image: "bt_dis_base.png" COMP;
-         image: "bt_dis_hilight.png" COMP;
-      }
-      parts {
-         part {
-            name: "button_image";
-            mouse_events: 1;
-            description {
-               state: "default" 0.0;
-               min: 32 16;
-               image {
-                  normal: "bt_base2.png";
-                  border: 7 7 7 7;
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: -1 -3;
                }
+               image.normal: "gadman_bottom.png";
             }
             description {
-               state: "clicked" 0.0;
+               state: "1" 0.0;
                inherit: "default" 0.0;
-               image.normal: "bt_base1.png";
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: -12 18;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 11 31;
+               }
             }
             description {
-               state: "disabled" 0.0;
+               state: "2" 0.0;
                inherit: "default" 0.0;
-               image {
-                  normal: "bt_dis_base.png";
-                  border: 4 4 4 4;
+               rel1 {
+                  relative: 0.5 1.0;
+                  offset: -6 10;
+               }
+               rel2 {
+                  relative: 0.5 1.0;
+                  offset: 5 24;
                }
             }
          }
          part {
-            name: "e.swallow.icon";
-            type: SWALLOW;
-            mouse_events: 0;
+            name: "bottom_arrow2";
             description {
                state: "default" 0.0;
-               align: 0.0 0.5;
+               aspect: 1.0 1.0;
+               max: 24 12;
                rel1 {
-                  relative: 0.0 0.0;
-                  offset: 3   3;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: 0 -3;
                }
                rel2 {
-                  relative: 0.0 1.0;
-                  offset: 3  -4;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: -1 -3;
                }
+               image.normal: "gadman_bottom.png";
             }
             description {
-               state: "combo" 0.0;
+               state: "1" 0.0;
                inherit: "default" 0.0;
-               aspect: 1.0 1.0;
-               aspect_preference: VERTICAL;
-               align: 0.0 0.5;
                rel1 {
-                  relative: 0.0 0.0;
-                  offset: 3  3;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: -12 18;
                }
                rel2 {
-                  relative: 0.0 1.0;
-                  offset: 3   -4;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: 11 31;
                }
             }
             description {
-               state: "icon" 0.0;
+               state: "2" 0.0;
                inherit: "default" 0.0;
-               aspect: 1.0 1.0;
-               aspect_preference: BOTH;
-               align: 0.5 0.5;
                rel1 {
-                  relative: 0.0 0.0;
-                  offset: 3  3;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: -6 10;
                }
                rel2 {
-                  relative: 1.0 1.0;
-                  offset: -4   -4;
-                  to: "button_image";
+                  relative: 0.5 1.0;
+                  offset: 5 24;
                }
             }
          }
          part {
-            name: "e.text.label";
-            type: TEXT;
-            effect: SOFT_SHADOW;
-            mouse_events: 0;
-            scale: 1;
+            name: "v1";
+            mouse_events: 1;
+            clip_to: "vclip";
             description {
                state: "default" 0.0;
-               rel1 {
-                  relative: 1.0  0.0;
-                  offset: 2    3;
-                  to_x: "e.swallow.icon";
-                  to_y: "button_image";
-               }
-               rel2 {
-                  relative: 1.0  1.0;
-                  offset: -4   -4;
-                  to: "button_image";
-               }
-               color_class: "button_text";
-               text {
-                  font: "Sans";
-                  size: 10;
-                  min: 1 1;
-                  align: 0.5 0.5;
-                  text_class: "button";
-               }
+               rel2.relative: 1.0 0.0;
+               rel2.offset: -1 9;
             }
+         }
+         part {
+            name: "v2";
+            mouse_events: 1;
+            clip_to: "vclip";
             description {
-               state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color_class: "button_text_disabled";
+               state: "default" 0.0;
+               rel1.relative: 0.0 1.0;
+               rel1.offset: 0 -8;
             }
+         }
+         part {
+            name: "h1";
+            mouse_events: 1;
+            clip_to: "hclip";
             description {
-               state: "icon" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
+               state: "default" 0.0;
+               rel2.relative: 0.0 1.0;
+               rel2.offset: 9 -1;
             }
          }
          part {
-            name: "over1";
-            mouse_events: 0;
+            name: "h2";
+            mouse_events: 1;
+            clip_to: "hclip";
             description {
                state: "default" 0.0;
-               rel2.relative: 1.0 0.5;
-               image {
-                  normal: "bt_hilight.png";
-                  border: 7 7 7 0;
-               }
+               rel1.relative: 1.0 0.0;
+               rel1.offset: -8 0;
             }
+         }
+         part {
+            name: "border";
+            mouse_events: 1;
+            repeat_events: 1;
             description {
-               state: "disabled" 0.0;
-               inherit: "default" 0.0;
+               state: "default" 0.0;
                image {
-                  normal: "bt_dis_hilight.png";
-                  border: 4 4 4 0;
+                  normal: "gadman_border.png";
+                  border: 10 10 10 10;
+                  middle: 0;
                }
+               fill.smooth: 0;
             }
          }
-         part {
-            name: "over2";
-            mouse_events: 0;
-            description {
-               state: "default" 0.0;
-               image {
-                  normal: "bt_shine.png";
-                  border: 7 7 7 7;
-               }
-            }
-            description {
-               state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 0;
-            }
+      }
+      programs {
+         program {
+            name: "api_hsize_on";
+            signal: "e,state,hsize,on";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "hclip";
+         }
+         program {
+            name: "api_hsize_off";
+            signal: "e,state,hsize,off";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "hclip";
+         }
+         program {
+            name: "api_vsize_on";
+            signal: "e,state,vsize,on";
+            source: "e";
+            action: STATE_SET "default" 0.0;
+            target: "vclip";
+         }
+         program {
+            name: "api_vsize_off";
+            signal: "e,state,vsize,off";
+            source: "e";
+            action: STATE_SET "disabled" 0.0;
+            target: "vclip";
+         }
+         /*
+         program {
+            name: "api_move_on";
+            signal: "e,state,move,on";
+            source: "e";
+         }
+         program {
+            name: "api_move_off";
+            signal: "e,state,move,off";
+            source: "e";
+         }
+         program {
+            name: "api_active";
+            signal: "e,state,focused";
+            source: "e";
+         }
+         program {
+            name: "api_inactive";
+            signal: "e,state,unfocused";
+            source: "e";
+         }
+         */
+         // MOVE PROGRAMS
+         program {
+            name: "mv_down";
+            signal: "mouse,down,1";
+            source: "overlay";
+            action: SIGNAL_EMIT "e,action,move,start" "";
+         }
+         program {
+            name: "mv_up";
+            signal: "mouse,up,1";
+            source: "overlay";
+            action: SIGNAL_EMIT "e,action,move,stop" "";
+         }
+         program {
+            name: "mv_move";
+            signal: "mouse,move";
+            source: "overlay";
+            action: SIGNAL_EMIT "e,action,move,go" "";
+         }
+         program {
+            name: "h1_down1";
+            signal: "mouse,down,1";
+            source: "h1";
+            action: STATE_SET "clicked" 0.0;
+            target: "h1";
+         }
+         program {
+            name: "h1_up1";
+            signal: "mouse,up,1";
+            source: "h1";
+            action: STATE_SET "default" 0.0;
+            target: "h1";
+         }
+         program {
+            name: "h1_down2";
+            signal: "mouse,down,1";
+            source: "h1";
+            action: SIGNAL_EMIT "e,action,resize,left,start" "";
+         }
+         program {
+            name: "h1_up2";
+            signal: "mouse,up,1";
+            source: "h1";
+            action: SIGNAL_EMIT "e,action,resize,left,stop" "";
+         }
+         program {
+            name: "h1_move";
+            signal: "mouse,move";
+            source: "h1";
+            action: SIGNAL_EMIT "e,action,resize,left,go" "";
+         }
+         program {
+            name: "h2_down1";
+            signal: "mouse,down,1";
+            source: "h2";
+            action: STATE_SET "clicked" 0.0;
+            target: "h2";
+         }
+         program {
+            name: "h2_up1";
+            signal: "mouse,up,1";
+            source: "h2";
+            action: STATE_SET "default" 0.0;
+            target: "h2";
+         }
+         program {
+            name: "h2_down2";
+            signal: "mouse,down,1";
+            source: "h2";
+            action: SIGNAL_EMIT "e,action,resize,right,start" "";
          }
-         part {
-            name: "over3";
-            mouse_events: 0;
-            description {
-               state: "default" 0.0;
-               visible: 0;
-               color: 255 255 255 0;
-               image {
-                  normal: "bt_glow.png";
-                  border: 7 7 9 9;
-               }
-               fill.smooth : 0;
-            }
-            description {
-               state: "clicked" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-               color: 255 255 255 255;
-            }
+         program {
+            name: "h2_up2";
+            signal: "mouse,up,1";
+            source: "h2";
+            action: SIGNAL_EMIT "e,action,resize,right,stop" "";
          }
-         part {
-            name: "disabler";
-            type: RECT;
-            description {
-               state: "default" 0.0;
-               color: 0 0 0 0;
-               visible: 0;
-            }
-            description {
-               state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               visible: 1;
-            }
+         program {
+            name: "h2_move";
+            signal: "mouse,move";
+            source: "h2";
+            action: SIGNAL_EMIT "e,action,resize,right,go" "";
          }
-      }
-      programs {
          program {
-            name: "button_click";
+            name: "v1_down1";
             signal: "mouse,down,1";
-            source: "button_image";
+            source: "v1";
             action: STATE_SET "clicked" 0.0;
-            target: "button_image";
-            target: "over3";
+            target: "v1";
          }
          program {
-            name: "button_unclick";
+            name: "v1_up1";
             signal: "mouse,up,1";
-            source: "button_image";
+            source: "v1";
             action: STATE_SET "default" 0.0;
-            target: "button_image";
-            target: "over3";
+            target: "v1";
          }
          program {
-            name: "button_unclick2";
-            signal: "mouse,clicked,1";
-            source: "button_image";
-            action: SIGNAL_EMIT "e,action,click" "";
+            name: "v1_down2";
+            signal: "mouse,down,1";
+            source: "v1";
+            action: SIGNAL_EMIT "e,action,resize,up,start" "";
          }
          program {
-            name: "text_state";
-            signal: "e,state,text";
-            source: "e";
+            name: "v1_up2";
+            signal: "mouse,up,1";
+            source: "v1";
+            action: SIGNAL_EMIT "e,action,resize,up,stop" "";
+         }
+         program {
+            name: "v1_move";
+            signal: "mouse,move";
+            source: "v1";
+            action: SIGNAL_EMIT "e,action,resize,up,go" "";
+         }
+         program {
+            name: "v2_down1";
+            signal: "mouse,down,1";
+            source: "v2";
+            action: STATE_SET "clicked" 0.0;
+            target: "v2";
+         }
+         program {
+            name: "v2_up1";
+            signal: "mouse,up,1";
+            source: "v2";
             action: STATE_SET "default" 0.0;
-            target: "e.swallow.icon";
-            target: "e.text.label";
+            target: "v2";
          }
          program {
-            name: "icon_state";
-            signal: "e,state,icon";
-            source: "e";
-            action: STATE_SET "icon" 0.0;
-            target: "e.swallow.icon";
-            target: "e.text.label";
+            name: "v2_down2";
+            signal: "mouse,down,1";
+            source: "v2";
+            action: SIGNAL_EMIT "e,action,resize,down,start" "";
          }
          program {
-            name: "combo_state";
-            signal: "e,state,combo";
-            source: "e";
-            action: STATE_SET "combo" 0.0;
-            target: "e.swallow.icon";
-            target: "e.text.label";
+            name: "v2_up2";
+            signal: "mouse,up,1";
+            source: "v2";
+            action: SIGNAL_EMIT "e,action,resize,down,stop" "";
          }
          program {
-            name: "disable";
-            signal: "e,state,disabled";
-            source: "e";
-            action: STATE_SET "disabled" 0.0;
-            target: "button_image";
-            target: "over1";
-            target: "e.text.label";
-            target: "disabler";
+            name: "v2_move";
+            signal: "mouse,move";
+            source: "v2";
+            action: SIGNAL_EMIT "e,action,resize,down,go" "";
          }
+         // LEFT ARROW
          program {
-            name: "enable";
-            signal: "e,state,enabled";
-            source: "e";
+            name: "start_left1";
+            signal: "mouse,in";
+            source: "h1";
+            after: "left1_1";
+         }
+         program {
+            name: "start_left2";
+            signal: "mouse,in";
+            source: "h1";
+            in: 0.4 0.0;
+            after: "left2_1";
+         }
+         program {
+            name: "left1_1";
+            action: STATE_SET "1" 0.0;
+            target: "left_arrow1";
+            transition: LINEAR 0.4;
+            after: "left1_2";
+         }
+         program {
+            name: "left1_2";
+            action: STATE_SET "2" 0.0;
+            target: "left_arrow1";
+            transition: LINEAR 0.4;
+            after: "left1_r";
+         }
+         program {
+            name: "left1_r";
             action: STATE_SET "default" 0.0;
-            target: "button_image";
-            target: "over1";
-            target: "e.text.label";
-            target: "disabler";
+            target: "left_arrow1";
+            after: "left1_1";
          }
-      }
-   }
-
-   group {
-      name: "e/widgets/label";
-      parts {
-         part {
-            name: "e.text.label";
-            type: TEXT;
-            mouse_events: 0;
-            scale: 1;
-            description {
-               state: "default" 0.0;
-               rel1.offset: 2 2;
-               rel2.offset: -3 -3;
-               color: 0 0 0 255;
-               text {
-                  font: "Sans";
-                  size: 10;
-                  min: 1 1;
-                  align: 0.0 0.5;
-                  text_class: "label";
-               }
-            }
-            description {
-               state: "disabled" 0.0;
-               inherit: "default" 0.0;
-               color: 0 0 0 128;
-            }
+         program {
+            name: "left2_1";
+            action: STATE_SET "1" 0.0;
+            target: "left_arrow2";
+            transition: LINEAR 0.4;
+            after: "left2_2";
          }
-      }
-      programs {
          program {
-            name: "disable";
-            signal: "e,state,disabled";
-            source: "e";
-            action: STATE_SET "disabled" 0.0;
-            target: "e.text.label";
+            name: "left2_2";
+            action: STATE_SET "2" 0.0;
+            target: "left_arrow2";
+            transition: LINEAR 0.4;
+            after: "left2_r";
          }
          program {
-            name: "enable";
-            signal: "e,state,enabled";
-            source: "e";
+            name: "left2_r";
             action: STATE_SET "default" 0.0;
-            target: "e.text.label";
+            target: "left_arrow2";
+            after: "left2_1";
+         }
+         program {
+            name: "stop_left1";
+            signal: "mouse,out";
+            source: "h1";
+            action: ACTION_STOP;
+            target: "left1_1";
+            target: "left1_2";
+            target: "left1_r";
+            target: "left2_1";
+            target: "left2_2";
+            target: "left2_r";
+            target: "start_left2";
+            after: "stop_left2";
+         }
+         program {
+            name: "stop_left2";
+            action: STATE_SET "default" 0.0;
+            target: "left_arrow1";
+            target: "left_arrow2";
+         }
+         // RIGHT ARROW
+         program {
+            name: "start_right1";
+            signal: "mouse,in";
+            source: "h2";
+            after: "right1_1";
+         }
+         program {
+            name: "start_right2";
+            signal: "mouse,in";
+            source: "h2";
+            in: 0.4 0.0;
+            after: "right2_1";
+         }
+         program {
+            name: "right1_1";
+            action: STATE_SET "1" 0.0;
+            target: "right_arrow1";
+            transition: LINEAR 0.4;
+            after: "right1_2";
+         }
+         program {
+            name: "right1_2";
+            action: STATE_SET "2" 0.0;
+            target: "right_arrow1";
+            transition: LINEAR 0.4;
+            after: "right1_r";
+         }
+         program {
+            name: "right1_r";
+            action: STATE_SET "default" 0.0;
+            target: "right_arrow1";
+            after: "right1_1";
+         }
+         program {
+            name: "right2_1";
+            action: STATE_SET "1" 0.0;
+            target: "right_arrow2";
+            transition: LINEAR 0.4;
+            after: "right2_2";
+         }
+         program {
+            name: "right2_2";
+            action: STATE_SET "2" 0.0;
+            target: "right_arrow2";
+            transition: LINEAR 0.4;
+            after: "right2_r";
+         }
+         program {
+            name: "right2_r";
+            action: STATE_SET "default" 0.0;
+            target: "right_arrow2";
+            after: "right2_1";
+         }
+         program {
+            name: "stop_right1";
+            signal: "mouse,out";
+            source: "h2";
+            action: ACTION_STOP;
+            target: "right1_1";
+            target: "right1_2";
+            target: "right1_r";
+            target: "right2_1";
+            target: "right2_2";
+            target: "right2_r";
+            target: "start_right2";
+            after: "stop_right2";
+         }
+         program {
+            name: "stop_right2";
+            action: STATE_SET "default" 0.0;
+            target: "right_arrow1";
+            target: "right_arrow2";
+         }
+         // TOP ARROW
+         program {
+            name: "start_top1";
+            signal: "mouse,in";
+            source: "v1";
+            after: "top1_1";
+         }
+         program {
+            name: "start_top2";
+            signal: "mouse,in";
+            source: "v1";
+            in: 0.4 0.0;
+            after: "top2_1";
+         }
+         program {
+            name: "top1_1";
+            action: STATE_SET "1" 0.0;
+            target: "top_arrow1";
+            transition: LINEAR 0.4;
+            after: "top1_2";
+         }
+         program {
+            name: "top1_2";
+            action: STATE_SET "2" 0.0;
+            target: "top_arrow1";
+            transition: LINEAR 0.4;
+            after: "top1_r";
+         }
+         program {
+            name: "top1_r";
+            action: STATE_SET "default" 0.0;
+            target: "top_arrow1";
+            after: "top1_1";
+         }
+         program {
+            name: "top2_1";
+            action: STATE_SET "1" 0.0;
+            target: "top_arrow2";
+            transition: LINEAR 0.4;
+            after: "top2_2";
+         }
+         program {
+            name: "top2_2";
+            action: STATE_SET "2" 0.0;
+            target: "top_arrow2";
+            transition: LINEAR 0.4;
+            after: "top2_r";
+         }
+         program {
+            name: "top2_r";
+            action: STATE_SET "default" 0.0;
+            target: "top_arrow2";
+            after: "top2_1";
+         }
+         program {
+            name: "stop_top1";
+            signal: "mouse,out";
+            source: "v1";
+            action: ACTION_STOP;
+            target: "top1_1";
+            target: "top1_2";
+            target: "top1_r";
+            target: "top2_1";
+            target: "top2_2";
+            target: "top2_r";
+            target: "start_top2";
+            after: "stop_top2";
+         }
+         program {
+            name: "stop_top2";
+            action: STATE_SET "default" 0.0;
+            target: "top_arrow1";
+            target: "top_arrow2";
+         }
+         // BOTTOM ARROW
+         program {
+            name: "start_bottom1";
+            signal: "mouse,in";
+            source: "v2";
+            after: "bottom1_1";
+         }
+         program {
+            name: "start_bottom2";
+            signal: "mouse,in";
+            source: "v2";
+            in: 0.4 0.0;
+            after: "bottom2_1";
+         }
+         program {
+            name: "bottom1_1";
+            action: STATE_SET "1" 0.0;
+            target: "bottom_arrow1";
+            transition: LINEAR 0.4;
+            after: "bottom1_2";
+         }
+         program {
+            name: "bottom1_2";
+            action: STATE_SET "2" 0.0;
+            target: "bottom_arrow1";
+            transition: LINEAR 0.4;
+            after: "bottom1_r";
+         }
+         program {
+            name: "bottom1_r";
+            action: STATE_SET "default" 0.0;
+            target: "bottom_arrow1";
+            after: "bottom1_1";
+         }
+         program {
+            name: "bottom2_1";
+            action: STATE_SET "1" 0.0;
+            target: "bottom_arrow2";
+            transition: LINEAR 0.4;
+            after: "bottom2_2";
+         }
+         program {
+            name: "bottom2_2";
+            action: STATE_SET "2" 0.0;
+            target: "bottom_arrow2";
+            transition: LINEAR 0.4;
+            after: "bottom2_r";
+         }
+         program {
+            name: "bottom2_r";
+            action: STATE_SET "default" 0.0;
+            target: "bottom_arrow2";
+            after: "bottom2_1";
+         }
+         program {
+            name: "stop_bottom1";
+            signal: "mouse,out";
+            source: "v2";
+            action: ACTION_STOP;
+            target: "bottom1_1";
+            target: "bottom1_2";
+            target: "bottom1_r";
+            target: "bottom2_1";
+            target: "bottom2_2";
+            target: "bottom2_r";
+            target: "start_bottom2";
+            after: "stop_bottom2";
+         }
+         program {
+            name: "stop_bottom2";
+            action: STATE_SET "default" 0.0;
+            target: "bottom_arrow1";
+            target: "bottom_arrow2";
          }
       }
    }
-   
-   group { name: "e/widgets/slidesel";
+
+   group {
+      name: "e/widgets/slidesel";
       alias: "e/pointer/enlightenment/default/mono";
-      alias: "e/widgets/toolbar";
-      alias: "e/widgets/menu/default/submenu_bg";
       alias: "e/modules/connman/network";
-      alias: "e/modules/ibar/icon";
-      alias: "e/modules/ibar/icon_overlay";
-      alias: "e/modules/ibar/drop";
-      alias: "e/modules/ibar/drop_overlay";
       alias: "e/fileman/default/list/drop_between";
       alias: "e/fileman/desktop/list/drop_in";
       alias: "e/fileman/desktop/list/drop_between";
@@ -1268,24 +13929,6 @@ collections { /* begin the collection of edje groups that are in this file */
       alias: "e/sys/suspend";
       alias: "e/sys/hibernate";
       alias:  "e/widgets/gradpreview";
-      alias: "e/widgets/toolbar/item";
-      alias: "e/widgets/menu/default/background";
-      alias: "e/widgets/menu/default/separator";
-      alias: "e/widgets/menu/default/item_bg";
-      alias: "e/widgets/menu/default/icon";
-      alias: "e/widgets/menu/default/label";
-      alias: "e/widgets/menu/default/submenu";
-      alias: "e/widgets/menu/default/check";
-      alias: "e/widgets/menu/default/radio";
-      alias: "e/shelf/default/base";
-      alias: "e/shelf/default/inset";
-      alias: "e/shelf/default/plain";
-      alias: "e/shelf/invisible/base";
-      alias: "e/shelf/invisible/inset";
-      alias: "e/shelf/invisible/plain";
-      alias: "e/shelf/alternate/base";
-      alias: "e/shelf/alternate/inset";
-      alias: "e/shelf/alternate/plain";
       alias: "e/modules/connman/main";
       alias: "e/modules/conf_edgebindings/selection";
       alias: "e/modules/start/main";
@@ -1297,10 +13940,6 @@ collections { /* begin the collection of edje groups that are in this file */
       alias: "e/modules/temperature/main";
       alias: "e/modules/clock/main";
       alias: "e/modules/cpufreq/main";
-      alias: "e/modules/ibox/icon";
-      alias: "e/modules/ibox/icon_overlay";
-      alias: "e/modules/ibox/drop";
-      alias: "e/modules/ibox/drop_overlay";
       alias: "e/widgets/winlist/main";
       alias: "e/widgets/winlist/item";
       alias: "e/widgets/exebuf/main";
@@ -1324,23 +13963,10 @@ collections { /* begin the collection of edje groups that are in this file */
       alias: "e/fileman/default/list/fixed";
       alias: "e/fileman/default/list_odd/fixed";
       alias: "e/sys/logout";
-      alias: "e/widgets/configure/main";
-      alias: "e/widgets/border/default/move";
-      alias: "e/widgets/border/default/resize";
-      alias: "e/toolbar/default/base";
       alias: "e/transpreview/0";
       alias: "e/transpreview/1";
       alias: "e/transitions/crossfade";
       alias: "e/transitions/vswipe";
-      alias: "e/widgets/check";
-      alias: "e/widgets/check_icon";
-      alias: "e/widgets/radio";
-      alias: "e/widgets/radio_icon";
-      alias: "e/widgets/scrollframe";
-      alias: "e/widgets/ilist";
-      alias: "e/widgets/ilist_odd";
-      alias: "e/widgets/ilist_header";
-      alias: "e/widgets/ilist_header_odd";
       alias: "e/widgets/entry";
       alias: "e/widgets/entry/text";
       alias: "e/widgets/entry/cursor";
@@ -1349,18 +13975,9 @@ collections { /* begin the collection of edje groups that are in this file */
       alias: "e/widgets/deskpreview/desk";
       alias: "e/widgets/color_well";
       alias: "e/widgets/spectrum";
-      alias: "e/widgets/cslider";
-      alias: "e/widgets/slider_vertical";
-      alias: "e/widgets/slider_horizontal";
-      alias: "e/widgets/frame";
       alias: "e/widgets/fontpreview";
-      alias: "e/widgets/textblock";
       alias: "e/desklock/background";
       alias: "e/desklock/login_box";
-      alias: "e/gadman/popup";
-      alias: "e/gadman/full_bg";
-      alias: "e/gadman/frame";
-      alias: "e/gadman/control";
       alias: "e/wizard/extra";
       alias: "e/wizard/main";
       alias: "e/widgets/about/main";
@@ -1385,13 +14002,15 @@ collections { /* begin the collection of edje groups that are in this file */
       alias: "e/widgets/everything/main";
       alias: "e/widgets/everything/item";
       parts {
-        part { name: "base";
-           mouse_events: 0;
+         part {
+            name: "base";
+            mouse_events: 0;
             type: RECT;
-           description { state: "default" 0.0;
+            description {
+               state: "default" 0.0;
                color: 0 0 0 0;
-           }
-        }
+            }
+         }
       }
    }
 }
index 6e7ad63..ba48b09 100644 (file)
@@ -1,3 +1,189 @@
+e17 (1:1.0.0.001+svn.68441slp2+build23) unstable; urgency=low
+
+  * Change auto-focus policy
+    - Skip the app-in-app mode window while finding next focused window
+    [OBS] e17-1.0.0.001+svn.68441slp2+build23-slp.1.1
+  * Git: framework/uifw/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build23
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Sun, 19 Aug 2012 15:27:29 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build22) unstable; urgency=low
+
+  * [E_Gadcon] Add code to remove E_Gadcon from the custom_populate_request list
+               when the E_Gadcon is removed
+    [OBS] e17-1.0.0.001+svn.68441slp2+build22-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build22
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 08 Aug 2012 23:21:15 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build21) unstable; urgency=low
+
+  * [E_Border] Changed _e_border_eval0 to show border on the proper E_Desk.
+       Border which specifies E_PROFILE_LIST shouldn't appear on the screen
+       due to incorrect border events at _e_border_eval0. Thus it has been
+       changed to set desk after creating E_BORDER_ADD event.
+        - Previous Incorrect Border Events: BORDER_SHOW -> BORDER_ADD
+        - Changed Border Events: BORDER_ADD -> BORDER_SHOW
+    [OBS] e17-1.0.0.001+svn.68441slp2+build21-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build21
+
+ -- Gwanglim <gl77.lee@samsung.com>  Sun, 05 Aug 2012 18:06:14 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build20) unstable; urgency=low
+
+  * [E_Util] add feature - external elementary dialog show
+      Using external elementary dialog util instead of e_dialog to display error
+      or warning messages. It is a temporary solution for supporting consistent
+      UX theme. The external dialog is a simple EFL application which is based on
+      elementary. Thus window manager can display message using elementary UX theme,
+      along with other system popup.
+    [OBS] e17-1.0.0.001+svn.68441slp2+build20-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build20
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Tue, 24 Jul 2012 23:06:28 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build19) unstable; urgency=low
+
+  * [E_Manager] add feature - composite mode set / get
+    [OBS] e17-1.0.0.001+svn.68441slp2+build19-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build19
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Wed, 18 Jul 2012 15:22:50 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build18) unstable; urgency=low
+
+  * [Theme] Change samsung.edc theme file according to UX guide
+    [OBS] e17-1.0.0.001+svn.68441slp2+build18-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build18
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Tue, 17 Jul 2012 21:18:07 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build17) unstable; urgency=low
+
+  * [gadman] bug fix - calculate gadget's relative geometry using zone's geometry
+    [OBS] e17-1.0.0.001+svn.68441slp2+build17-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build17
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 12 Jul 2012 17:19:22 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build16) unstable; urgency=low
+
+  * [ibar] add feature - lock to move icon
+    [OBS] e17-1.0.0.001+svn.68441slp2+build16-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build16
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Sat, 30 Jun 2012 13:40:39 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build15) unstable; urgency=low
+
+  * 1. Install clock module
+    2. Added per-window profile to support multi-head display
+    3. Remove _F_SUPPORT_DESKTOP_MODE_ environment variable feature
+    4. Apply new UX theme
+    [OBS] e17-1.0.0.001+svn.68441slp2+build15-slp.1.1
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build15
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 20 Jun 2012 20:14:21 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build14) unstable; urgency=low
+
+  * [gadman] Add code to handle gadget list when a zone is added or deleted
+    [theme ] Add script to handle gadgets in samsung.edj theme
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build14
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 13 Jun 2012 20:41:12 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build13) unstable; urgency=low
+
+  * [ibar] change ELM_SCALE environment value to "extension"
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build13
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 4 Jun 2012 14:26:26 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build12) unstable; urgency=low
+
+  * [ibar] Add code to set ELM_SCALE environment value for desktop mode
+    [featuring] Add feature - _F_SUPPORT_DESKTOP_MODE_ : support desktop mode
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build12
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Thu, 24 May 2012 15:20:20 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build11) unstable; urgency=low
+
+  * Change debian/e17.postinst file
+    - Remove libtool files
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build11
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 18 May 2012 13:39:42 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build10) unstable; urgency=low
+
+  * [Theme] change the samsung.edc theme file to support various border type
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build10
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Sun, 13 May 2012 17:37:08 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build09) unstable; urgency=low
+
+  * Change environment to support desktop mode
+    - change debian/rules and debian/e17.install to install some modules
+      (ibar, ibox, gadman, conf_applications, conf_theme)
+    - change the samsung.edc theme file
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build09
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 09 May 2012 10:14:39 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build08) unstable; urgency=low
+
+  * Bug fix - Checking the geometry of a window while the e finding the next 
+              focused window when it gets active request message
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build08
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Fri, 04 May 2012 18:01:34 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build07) unstable; urgency=low
+
+  * Rollback e_container.c file to rev.70439
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build07
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 25 Apr 2012 17:49:37 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build06) unstable; urgency=low
+
+  * Patch e_container.c file(rev.70442) - this contains below change
+    - if screens dynamically come and go ONLy free zones we no longer need
+      and ONLy new zones we now do need, dont free all and new existing set
+      + new ones.
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build06
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Wed, 25 Apr 2012 08:14:22 +0900
+
+e17 (1:1.0.0.001+svn.68441slp2+build05) unstable; urgency=low
+
+  * Update COPYING file
+  * Git: slp/pkgs/e/e17
+  * Tag: e17_1.0.0.001+svn.68441slp2+build05
+
+ -- Doyoun Kang <doyoun.kang@samsung.com>  Mon, 09 Apr 2012 15:45:11 +0900
+
 e17 (1:1.0.0.001+svn.68441slp2+build04) unstable; urgency=low
 
   * [E_Zone] There is a bug doesn't send E_EVENT_ZONE_DEL event when the zone
index 555b5d9..29a9e18 100644 (file)
@@ -5,3 +5,4 @@ debian/tmp/usr/bin/enlightenment_imc
 #debian/tmp/usr/lib/enlightenment/utils/enlightenment_*
 debian/tmp/etc/enlightenment/sysactions.conf
 debian/tmp/usr/lib/enlightenment/preload/e_precache.so
+debian/tmp/usr/lib/enlightenment/modules/*
index b7502ab..e985d0c 100644 (file)
@@ -7,4 +7,6 @@ wm=enlightenment_start
 #update-alternatives  --install /usr/bin/x-window-manager x-window-manager \
 #    /usr/bin/$wm 90
 
+find /usr/lib/enlightenment/modules -name *.la -exec rm -f {} \;
+
 #DEBHELPER#
index 51b2490..da375f3 100755 (executable)
@@ -8,7 +8,7 @@ DEB_FIXPERMS_EXCLUDE := enlightenment_sys freqset tempget batget
 DEB_MAKE_CLEAN_TARGET := distclean
 DEB_INSTALL_MANPAGES_e17 := $(DEB_SRCDIR)/debian/enlightenment.1 $(DEB_SRCDIR)/debian/enlightenment_*.1
 DEB_DH_STRIP_ARGS := --dbg-package=e17-dbg
-DEB_CONFIGURE_EXTRA_FLAGS := --enable-extra-features --disable-clock --disable-temperature --disable-mixer --disable-everything --disable-ibar --disable-dropshadow --disable-pager --disable-battery --disable-cpufreq --disable-ibox --disable-start --disable-exebuf --disable-winlist --disable-fileman --disable-fileman-opinfo --disable-wizard --disable-conf --disable-conf-wallpaper --disable-conf-wallpaper2 --disable-conf-theme --disable-conf-colors --disable-conf-fonts --disable-conf-borders --disable-conf-icon-theme --disable-conf-mouse-cursor --disable-conf-transitions --disable-conf-startup --disable-conf-intl --disable-conf-imc --disable-conf-profiles --disable-msgbus-lang --disable-conf-engine --disable-conf-applications --disable-conf-desks --disable-conf-desk --disable-conf-display --disable-conf-desklock --disable-conf-screensaver --disable-conf-dpms --disable-conf-shelves --disable-conf-shelves --disable-conf-keybindings --disable-conf-mousebindings --disable-conf-edgebindings --disable-conf-mouse --disable-conf-window-display --disable-conf-window-focus --disable-conf-window-remembers --disable-conf-window-manipulation --disable-conf-menus --disable-conf-clientlist --disable-conf-dialogs --disable-conf-performance --disable-conf-winlist --disable-conf-exebuf --disable-conf-paths --disable-conf-mime --disable-conf-interaction --disable-conf-scale --disable-gadman --disable-mixel --disable-connman --disable-illume --disable-syscon --disable-bluez --disable-ofono --disable-msgbus --disable-systray --disable-conf_acpibindings --disable-everything-apps --disable-everything-aspell --disable-everything-calc --disable-everything-files --disable-everything-settings --disable-everything-windows --disable-illume-bluetooth --disable-illume-home --disable-illume-toggle --disable-illume-indicator --disable-illume-kbd-toggle --disable-illume-keyboard --disable-illume-mode-toggle --disable-illume-softkey --disable-comp --disable-illume2 --disable-notification --disable-conf_randr --disable-tasks --disable-backlight --disable-shot
+DEB_CONFIGURE_EXTRA_FLAGS := --enable-extra-features --disable-temperature --disable-mixer --disable-everything --disable-dropshadow --disable-pager --disable-battery --disable-cpufreq --disable-start --disable-exebuf --disable-winlist --disable-fileman --disable-fileman-opinfo --disable-wizard --disable-conf --disable-conf-wallpaper --disable-conf-wallpaper2 --disable-conf-colors --disable-conf-fonts --disable-conf-borders --disable-conf-icon-theme --disable-conf-mouse-cursor --disable-conf-transitions --disable-conf-startup --disable-conf-intl --disable-conf-imc --disable-conf-profiles --disable-msgbus-lang --disable-conf-engine --disable-conf-desks --disable-conf-desk --disable-conf-display --disable-conf-desklock --disable-conf-screensaver --disable-conf-dpms --disable-conf-shelves --disable-conf-shelves --disable-conf-keybindings --disable-conf-mousebindings --disable-conf-edgebindings --disable-conf-mouse --disable-conf-window-display --disable-conf-window-focus --disable-conf-window-remembers --disable-conf-window-manipulation --disable-conf-menus --disable-conf-clientlist --disable-conf-dialogs --disable-conf-performance --disable-conf-winlist --disable-conf-exebuf --disable-conf-paths --disable-conf-mime --disable-conf-interaction --disable-conf-scale --disable-mixel --disable-connman --disable-illume --disable-syscon --disable-bluez --disable-ofono --disable-msgbus --disable-systray --disable-conf_acpibindings --disable-everything-apps --disable-everything-aspell --disable-everything-calc --disable-everything-files --disable-everything-settings --disable-everything-windows --disable-illume-bluetooth --disable-illume-home --disable-illume-toggle --disable-illume-indicator --disable-illume-kbd-toggle --disable-illume-keyboard --disable-illume-mode-toggle --disable-illume-softkey --disable-comp --disable-illume2 --disable-notification --disable-conf_randr --disable-tasks --disable-backlight --disable-shot
 CFLAGS += -fvisibility=hidden -fPIC 
 LDFLAGS += -fvisibility=hidden -Wl,--hash-style=both -Wl,--as-needed
 
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index ee4400c..4a8bedb 100644 (file)
@@ -1,6 +1,7 @@
+#sbs-git:slp/pkgs/e/e17 e17 1.0.0.001+svn.68441slp2+build21
 Name:       e17
 Summary:    The Enlightenment window manager
-Version:    1.0.0.001+svn.68441slp2
+Version:    1.0.0.001+svn.68441slp2+build21
 Release:    1
 Group:      System/GUI/Other
 License:    BSD
@@ -75,16 +76,13 @@ export LDFLAGS+=" -fvisibility=hidden -Wl,--hash-style=both -Wl,--as-needed"
 
 %autogen --disable-static
 LIBS='-ledbus' ./configure --prefix=/usr --disable-static \
-    --disable-clock \
     --disable-temperature \
     --disable-mixer \
     --disable-everything \
-    --disable-ibar \
     --disable-dropshadow \
     --disable-pager \
     --disable-battery \
     --disable-cpufreq \
-    --disable-ibox \
     --disable-start \
     --disable-exebuf \
     --disable-winlist \
@@ -94,7 +92,6 @@ LIBS='-ledbus' ./configure --prefix=/usr --disable-static \
     --disable-conf \
     --disable-conf-wallpaper \
     --disable-conf-wallpaper2 \
-    --disable-conf-theme \
     --disable-conf-colors \
     --disable-conf-fonts \
     --disable-conf-borders \
@@ -107,7 +104,6 @@ LIBS='-ledbus' ./configure --prefix=/usr --disable-static \
     --disable-conf-profiles \
     --disable-msgbus-lang \
     --disable-conf-engine \
-    --disable-conf-applications \
     --disable-conf-desks \
     --disable-conf-desk \
     --disable-conf-display \
@@ -134,7 +130,6 @@ LIBS='-ledbus' ./configure --prefix=/usr --disable-static \
     --disable-conf-mime \
     --disable-conf-interaction \
     --disable-conf-scale \
-    --disable-gadman \
     --disable-mixel \
     --disable-connman \
     --disable-illume \
@@ -179,6 +174,7 @@ rm -rf %{buildroot}
 /usr/bin/enlightenment_imc
 /usr/bin/enlightenment_remote
 /usr/bin/enlightenment_start
+/usr/lib/enlightenment/modules
 /usr/lib/enlightenment/preload/*
 /usr/etc/enlightenment/sysactions.conf
 
index 10128ce..4d8b2a0 100644 (file)
@@ -124,6 +124,9 @@ static Eina_Bool _e_border_cb_grab_replay(void *data,
                                           void *event);
 static void _e_border_cb_drag_finished(E_Drag *drag,
                                        int     dropped);
+static Eina_Bool _e_border_cb_desk_window_profile_change(void *data,
+                                                         int   ev_type,
+                                                         void *ev);
 
 static void      _e_border_eval(E_Border *bd);
 static void      _e_border_eval0(E_Border *bd);
@@ -299,6 +302,7 @@ e_border_init(void)
    handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, _e_border_cb_efreet_cache_update, NULL));
    handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_ICON_CACHE_UPDATE, _e_border_cb_efreet_cache_update, NULL));
    handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_CONFIG_ICON_THEME, _e_border_cb_config_icon_theme, NULL));
+   handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_DESK_WINDOW_PROFILE_CHANGE, _e_border_cb_desk_window_profile_change, NULL));
 
    if (!borders_hash) borders_hash = eina_hash_string_superfast_new(NULL);
 
@@ -600,6 +604,9 @@ e_border_new(E_Container   *con,
                     video_parent = EINA_TRUE;
                   else if (atoms[i] == ECORE_X_ATOM_E_VIDEO_POSITION)
                     video_position = EINA_TRUE;
+     /* loop to check for window profile list atom */
+                  else if (atoms[i] == ECORE_X_ATOM_E_PROFILE_LIST)
+                    bd->client.e.fetch.profile_list = 1;
               }
             if (video_position && video_parent)
               {
@@ -675,6 +682,12 @@ e_border_new(E_Container   *con,
    desk[0] = deskx;
    desk[1] = desky;
    ecore_x_window_prop_card32_set(win, E_ATOM_DESK, desk, 2);
+   if (strcmp(bd->desk->window_profile,
+              e_config->desktop_default_window_profile) != 0)
+     {
+        ecore_x_e_window_profile_set(bd->client.win,
+                                     bd->desk->window_profile);
+     }
 
    focus_stack = eina_list_append(focus_stack, bd);
 
@@ -4371,6 +4384,7 @@ e_border_resize_limit(E_Border *bd,
 static void
 _e_border_free(E_Border *bd)
 {
+   const char *str;
    if (bd->client.e.state.video_parent)
      {
         Eina_List *l;
@@ -4533,6 +4547,14 @@ _e_border_free(E_Border *bd)
    if (bd->internal_icon) eina_stringshare_del(bd->internal_icon);
    if (bd->internal_icon_key) eina_stringshare_del(bd->internal_icon_key);
    if (bd->icon_object) evas_object_del(bd->icon_object);
+   EINA_LIST_FREE(bd->client.e.state.profiles, str)
+     {
+        if (str) eina_stringshare_del(str);
+     }
+   bd->client.e.state.profiles = NULL;
+   if (bd->client.e.state.profile)
+     eina_stringshare_del(bd->client.e.state.profile);
+   bd->client.e.state.profile = NULL;
    evas_object_del(bd->bg_object);
    e_canvas_del(bd->bg_ecore_evas);
    ecore_evas_free(bd->bg_ecore_evas);
@@ -5366,6 +5388,11 @@ _e_border_cb_window_property(void *data  __UNUSED__,
         bd->client.e.fetch.video_parent = 1;
         bd->changed = 1;
      }
+   else if (e->atom == ECORE_X_ATOM_E_PROFILE_LIST)
+     {
+        bd->client.e.fetch.profile_list = 1;
+        bd->changed = 1;
+     }
 
    return ECORE_CALLBACK_PASS_ON;
 }
@@ -6407,6 +6434,27 @@ _e_border_cb_drag_finished(E_Drag     *drag,
 }
 
 static Eina_Bool
+_e_border_cb_desk_window_profile_change(void *data  __UNUSED__,
+                                        int ev_type __UNUSED__,
+                                        void       *ev)
+{
+   E_Event_Desk_Window_Profile_Change *e;
+   Eina_List *l;
+   E_Border *bd;
+
+   e = ev;
+   EINA_LIST_FOREACH(borders, l, bd)
+     {
+        if ((bd) && (!e_object_is_del(E_OBJECT(bd))))
+          {
+             bd->client.e.fetch.profile_list = 1;
+             bd->changed = 1;
+          }
+     }
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
 _e_border_post_move_resize_job(void *data)
 {
    E_Border *bd;
@@ -6500,6 +6548,7 @@ _e_border_eval0(E_Border *bd)
 {
    int change_urgent = 0;
    int rem_change = 0;
+   Eina_Bool need_desk_set = EINA_FALSE;
 
    if (e_object_is_del(E_OBJECT(bd)))
      {
@@ -6626,6 +6675,52 @@ _e_border_eval0(E_Border *bd)
         bd->client.e.fetch.state = 0;
         rem_change = 1;
      }
+   if (bd->client.e.fetch.profile_list)
+     {
+        const char **profiles = NULL;
+        const char *str;
+        int num, i;
+
+        if (bd->client.e.state.profile)
+          eina_stringshare_del(bd->client.e.state.profile);
+        EINA_LIST_FREE(bd->client.e.state.profiles, str)
+          {
+             if (str) eina_stringshare_del(str);
+          }
+        bd->client.e.state.profile = NULL;
+        bd->client.e.state.profiles = NULL;
+        bd->client.e.state.profile_list = 0;
+
+        if (ecore_x_e_window_profile_list_get(bd->client.win,
+                                              &profiles, &num))
+          {
+             bd->client.e.state.profile_list = 1;
+             for (i = 0; i < num; i++)
+               {
+                  str = eina_stringshare_add(profiles[i]);
+                  bd->client.e.state.profiles = eina_list_append(bd->client.e.state.profiles, str);
+               }
+
+             /* We should set desk to contain given border after creating E_BORDER_ADD event.
+              * If not, e will have an E_BORDER_SHOW event before E_BORDER_ADD event.
+              */
+             need_desk_set = EINA_TRUE;
+          }
+        else
+          {
+             if (strcmp(bd->desk->window_profile,
+                        e_config->desktop_default_window_profile) != 0)
+               {
+                  ecore_x_e_window_profile_set(bd->client.win,
+                                               bd->desk->window_profile);
+               }
+          }
+
+        if (profiles)
+          free(profiles);
+
+        bd->client.e.fetch.profile_list = 0;
+     }
    if (bd->client.netwm.fetch.type)
      {
         e_hints_window_type_get(bd);
@@ -7236,6 +7331,29 @@ _e_border_eval0(E_Border *bd)
           bd->client.border.changed = 1;
      }
 
+   if (need_desk_set)
+     {
+        E_Container *con = bd->zone->container;
+        E_Desk *desk = NULL;
+        Eina_List *l;
+        const char *str;
+        EINA_LIST_FOREACH(bd->client.e.state.profiles, l, str)
+          {
+             desk = e_container_desk_window_profile_get(con, str);
+             if (desk)
+               {
+                  if (bd->desk != desk)
+                    {
+                       bd->client.e.state.profile = eina_stringshare_add(str);
+                       if (bd->zone != desk->zone)
+                         e_border_zone_set(bd, desk->zone);
+                       e_border_desk_set(bd, desk);
+                    }
+                  break;
+               }
+          }
+     }
+
    /* PRE_POST_FETCH calls e_remember apply for new client */
    _e_border_hook_call(E_BORDER_HOOK_EVAL_PRE_POST_FETCH, bd);
    _e_border_hook_call(E_BORDER_HOOK_EVAL_POST_FETCH, bd);
@@ -7460,7 +7578,6 @@ _e_border_eval0(E_Border *bd)
 static void
 _e_border_latest_stacked_focus (E_Border* bd)
 {
-   Eina_List *l = NULL;
    E_Border *temp_bd;
    int root_w, root_h;
 
@@ -7473,6 +7590,7 @@ _e_border_latest_stacked_focus (E_Border* bd)
      {
         if ((temp_bd->x >= root_w) || (temp_bd->y >= root_h)) continue;
         if (((temp_bd->x + temp_bd->w) <= 0) || ((temp_bd->y + temp_bd->h) <= 0)) continue;
+        if (temp_bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
 
         if ((!temp_bd->iconic) && (temp_bd->visible) && (temp_bd->desk == bd->desk) &&
            (temp_bd->client.icccm.accepts_focus || temp_bd->client.icccm.take_focus) &&
@@ -7501,7 +7619,6 @@ _e_border_latest_stacked_focus (E_Border* bd)
 static void
 _e_border_check_stack (E_Border *bd)
 {
-   Eina_List* l = NULL;
    E_Border* temp_bd = NULL;;
    E_Border* top_bd = NULL;
    int passed_focus = 0;
@@ -7515,6 +7632,7 @@ _e_border_check_stack (E_Border *bd)
      {
         if ((temp_bd->x >= root_w) || (temp_bd->y >= root_h)) continue;
         if (((temp_bd->x + temp_bd->w) <= 0) || ((temp_bd->y + temp_bd->h) <= 0)) continue;
+        if (temp_bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
 
         if ((!temp_bd->iconic) && (temp_bd->visible) && (temp_bd->desk == bd->desk) &&
            (temp_bd->client.icccm.accepts_focus || temp_bd->client.icccm.take_focus) &&
@@ -7570,9 +7688,8 @@ _e_border_check_stack (E_Border *bd)
 }
 
 static void
-_e_border_focus_top_stack_set (E_Border* bd)
+_e_border_focus_top_stack_set(E_Border* bd)
 {
-   Eina_List *l = NULL;
    E_Border *temp_bd;
    int root_w, root_h;
 
@@ -7585,6 +7702,7 @@ _e_border_focus_top_stack_set (E_Border* bd)
      {
         if ((temp_bd->x >= root_w) || (temp_bd->y >= root_h)) continue;
         if (((temp_bd->x + temp_bd->w) <= 0) || ((temp_bd->y + temp_bd->h) <= 0)) continue;
+        if (temp_bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
 
         if ((!temp_bd->iconic) && (temp_bd->visible) && (temp_bd->desk == bd->desk) &&
            (temp_bd->client.icccm.accepts_focus || temp_bd->client.icccm.take_focus) &&
index ab1bd3d..86f0843 100644 (file)
@@ -355,15 +355,19 @@ struct _E_Border
             Ecore_X_Window video_parent;
             E_Border *video_parent_border;
             Eina_List *video_child;
+            const char *profile;
+            Eina_List *profiles;
 
             unsigned char centered : 1;
             unsigned char video : 1;
+            unsigned char profile_list : 1;
          } state;
 
          struct {
             unsigned char state : 1;
             unsigned char video_parent : 1;
             unsigned char video_position : 1;
+            unsigned char profile_list : 1;
          } fetch;
       } e;
       
index 7f9cfe5..ffc2d46 100644 (file)
@@ -40,6 +40,7 @@ static E_Config_DD *_e_config_bindings_acpi_edd = NULL;
 static E_Config_DD *_e_config_path_append_edd = NULL;
 static E_Config_DD *_e_config_desktop_bg_edd = NULL;
 static E_Config_DD *_e_config_desktop_name_edd = NULL;
+static E_Config_DD *_e_config_desktop_window_profile_edd = NULL;
 static E_Config_DD *_e_config_remember_edd = NULL;
 static E_Config_DD *_e_config_color_class_edd = NULL;
 static E_Config_DD *_e_config_gadcon_edd = NULL;
@@ -276,6 +277,17 @@ e_config_init(void)
    E_CONFIG_VAL(D, T, desk_y, INT);
    E_CONFIG_VAL(D, T, name, STR);
 
+   _e_config_desktop_window_profile_edd = E_CONFIG_DD_NEW("E_Config_Desktop_Window_Profile", E_Config_Desktop_Window_Profile);
+#undef T
+#undef D
+#define T E_Config_Desktop_Window_Profile
+#define D _e_config_desktop_window_profile_edd
+   E_CONFIG_VAL(D, T, container, INT);
+   E_CONFIG_VAL(D, T, zone, INT);
+   E_CONFIG_VAL(D, T, desk_x, INT);
+   E_CONFIG_VAL(D, T, desk_y, INT);
+   E_CONFIG_VAL(D, T, profile, STR);
+
    _e_config_path_append_edd = E_CONFIG_DD_NEW("E_Path_Dir", E_Path_Dir);
 #undef T
 #undef D
@@ -625,8 +637,10 @@ e_config_init(void)
    E_CONFIG_VAL(D, T, init_default_theme, STR); /**/
    E_CONFIG_VAL(D, T, desktop_default_background, STR); /**/
    E_CONFIG_VAL(D, T, desktop_default_name, STR); /**/
+   E_CONFIG_VAL(D, T, desktop_default_window_profile, STR); /**/
    E_CONFIG_LIST(D, T, desktop_backgrounds, _e_config_desktop_bg_edd); /**/
    E_CONFIG_LIST(D, T, desktop_names, _e_config_desktop_name_edd); /**/
+   E_CONFIG_LIST(D, T, desktop_window_profiles, _e_config_desktop_window_profile_edd); /**/
    E_CONFIG_VAL(D, T, menus_scroll_speed, DOUBLE); /**/
    E_CONFIG_VAL(D, T, menus_fast_mouse_move_threshhold, DOUBLE); /**/
    E_CONFIG_VAL(D, T, menus_click_drag_timeout, DOUBLE); /**/
@@ -925,6 +939,7 @@ e_config_shutdown(void)
    E_CONFIG_DD_FREE(_e_config_path_append_edd);
    E_CONFIG_DD_FREE(_e_config_desktop_bg_edd);
    E_CONFIG_DD_FREE(_e_config_desktop_name_edd);
+   E_CONFIG_DD_FREE(_e_config_desktop_window_profile_edd);
    E_CONFIG_DD_FREE(_e_config_remember_edd);
    E_CONFIG_DD_FREE(_e_config_gadcon_edd);
    E_CONFIG_DD_FREE(_e_config_gadcon_client_edd);
@@ -1559,6 +1574,20 @@ e_config_domain_system_load(const char *domain, E_Config_DD *edd)
 static void
 _e_config_mv_error(const char *from, const char *to)
 {
+#if _F_USE_EXTN_DIALOG_
+   char buf[8192];
+   snprintf(buf, sizeof(buf),
+            _("Enlightenment has had an error while moving config files<br>"
+              "from:<br>"
+              "%s<br>"
+              "<br>"
+              "to:<br>"
+              "%s<br>"
+              "<br>"
+              "The rest of the write has been aborted for safety.<br>"),
+            from, to);
+   e_util_extn_dialog_show(_("Enlightenment Settings Write Problems"), buf);
+#else
    if (!_e_config_error_dialog)
      {
         E_Dialog *dia;
@@ -1591,6 +1620,7 @@ _e_config_mv_error(const char *from, const char *to)
              _e_config_error_dialog = dia;
           }
      }
+#endif
 }
 
 EAPI int
@@ -2010,6 +2040,7 @@ _e_config_free(E_Config *ecf)
    if (ecf->init_default_theme) eina_stringshare_del(ecf->init_default_theme);
    if (ecf->desktop_default_background) eina_stringshare_del(ecf->desktop_default_background);
    if (ecf->desktop_default_name) eina_stringshare_del(ecf->desktop_default_name);
+   if (ecf->desktop_default_window_profile) eina_stringshare_del(ecf->desktop_default_window_profile);
    if (ecf->language) eina_stringshare_del(ecf->language);
    if (ecf->transition_start) eina_stringshare_del(ecf->transition_start);
    if (ecf->transition_desk) eina_stringshare_del(ecf->transition_desk);
@@ -2132,6 +2163,20 @@ _e_config_eet_close_handle(Eet_File *ef, char *file)
      {
        /* delete any partially-written file */
        ecore_file_unlink(file);
+#if _F_USE_EXTN_DIALOG_
+        char buf[8192];
+        snprintf(buf, sizeof(buf),
+                 _("Enlightenment has had an error while writing<br>"
+                   "its config file.<br>"
+                   "%s<br>"
+                   "<br>"
+                   "The file where the error occurred was:<br>"
+                   "%s<br>"
+                   "<br>"
+                   "This file has been deleted to avoid corrupt data.<br>"),
+                 erstr, file);
+        e_util_extn_dialog_show(_("Enlightenment Settings Write Problems"), buf);
+#else
         /* only show dialog for first error - further ones are likely */
         /* more of the same error */
        if (!_e_config_error_dialog)
@@ -2166,6 +2211,7 @@ _e_config_eet_close_handle(Eet_File *ef, char *file)
                  _e_config_error_dialog = dia;
               }
          }
+#endif
        return 0;
      }
    return 1;
index 86e278f..5f7bc27 100644 (file)
@@ -2,25 +2,26 @@
 
 #define E_CONFIG_LIMIT(v, min, max) {if (v > max) v = max; else if (v < min) v = min;}
 
-typedef struct _E_Config                    E_Config;
-typedef struct _E_Config_Module             E_Config_Module;
-typedef struct _E_Config_Theme              E_Config_Theme;
-typedef struct _E_Config_Binding_Mouse      E_Config_Binding_Mouse;
-typedef struct _E_Config_Binding_Key        E_Config_Binding_Key;
-typedef struct _E_Config_Binding_Edge       E_Config_Binding_Edge;
-typedef struct _E_Config_Binding_Signal     E_Config_Binding_Signal;
-typedef struct _E_Config_Binding_Wheel      E_Config_Binding_Wheel;
-typedef struct _E_Config_Binding_Acpi       E_Config_Binding_Acpi;
-typedef struct _E_Config_Desktop_Background E_Config_Desktop_Background;
-typedef struct _E_Config_Desktop_Name       E_Config_Desktop_Name;
-typedef struct _E_Config_Gadcon             E_Config_Gadcon;
-typedef struct _E_Config_Gadcon_Client      E_Config_Gadcon_Client;
-typedef struct _E_Config_Shelf              E_Config_Shelf;
-typedef struct _E_Config_Shelf_Desk         E_Config_Shelf_Desk;
-typedef struct _E_Config_Mime_Icon          E_Config_Mime_Icon;
-typedef struct _E_Config_Syscon_Action      E_Config_Syscon_Action;
-typedef struct _E_Config_Env_Var            E_Config_Env_Var;
-typedef struct _E_Event_Config_Icon_Theme   E_Event_Config_Icon_Theme;
+typedef struct _E_Config                        E_Config;
+typedef struct _E_Config_Module                 E_Config_Module;
+typedef struct _E_Config_Theme                  E_Config_Theme;
+typedef struct _E_Config_Binding_Mouse          E_Config_Binding_Mouse;
+typedef struct _E_Config_Binding_Key            E_Config_Binding_Key;
+typedef struct _E_Config_Binding_Edge           E_Config_Binding_Edge;
+typedef struct _E_Config_Binding_Signal         E_Config_Binding_Signal;
+typedef struct _E_Config_Binding_Wheel          E_Config_Binding_Wheel;
+typedef struct _E_Config_Binding_Acpi           E_Config_Binding_Acpi;
+typedef struct _E_Config_Desktop_Background     E_Config_Desktop_Background;
+typedef struct _E_Config_Desktop_Name           E_Config_Desktop_Name;
+typedef struct _E_Config_Desktop_Window_Profile E_Config_Desktop_Window_Profile;
+typedef struct _E_Config_Gadcon                 E_Config_Gadcon;
+typedef struct _E_Config_Gadcon_Client          E_Config_Gadcon_Client;
+typedef struct _E_Config_Shelf                  E_Config_Shelf;
+typedef struct _E_Config_Shelf_Desk             E_Config_Shelf_Desk;
+typedef struct _E_Config_Mime_Icon              E_Config_Mime_Icon;
+typedef struct _E_Config_Syscon_Action          E_Config_Syscon_Action;
+typedef struct _E_Config_Env_Var                E_Config_Env_Var;
+typedef struct _E_Event_Config_Icon_Theme       E_Event_Config_Icon_Theme;
 
 #else
 #ifndef E_CONFIG_H
@@ -44,7 +45,9 @@ struct _E_Config
    const char *desktop_default_background; // GUI
    Eina_List  *desktop_backgrounds; // GUI
    const char *desktop_default_name;
+   const char *desktop_default_window_profile;
    Eina_List  *desktop_names; // GUI
+   Eina_List  *desktop_window_profiles; // GUI
    double      menus_scroll_speed; // GUI
    double      menus_fast_mouse_move_threshhold; // GUI
    double      menus_click_drag_timeout; // GUI
@@ -449,6 +452,15 @@ struct _E_Config_Desktop_Name
    const char    *name;
 };
 
+struct _E_Config_Desktop_Window_Profile
+{
+   int            container;
+   int            zone;
+   int            desk_x;
+   int            desk_y;
+   const char    *profile;
+};
+
 struct _E_Config_Gadcon
 {
    const char *name;
index 3f71fe8..46d422a 100644 (file)
@@ -86,12 +86,12 @@ e_container_new(E_Manager *man)
    if (!getenv("EVAS_RENDER_MODE"))
      {
         int have_comp = 0;
-        Eina_List *l;
+        Eina_List *ll;
         E_Config_Module *em;
         
         // FIXME: major hack. checking in advance for comp. eventully comp
         // will be rolled into e17 core and this won't be needed
-        EINA_LIST_FOREACH(e_config->modules, l, em)
+        EINA_LIST_FOREACH(e_config->modules, ll, em)
           {
              if (!strcmp(em->name, "comp"))
                {
@@ -363,6 +363,36 @@ e_container_zone_id_get(E_Container *con, int id)
    return NULL;
 }
 
+EAPI E_Desk *
+e_container_desk_window_profile_get(E_Container *con,
+                                    const char  *profile)
+{
+   Eina_List *l = NULL;
+   E_Zone *zone = NULL;
+   int x, y;
+
+   E_OBJECT_CHECK_RETURN(con, NULL);
+   E_OBJECT_TYPE_CHECK_RETURN(con, E_CONTAINER_TYPE, NULL);
+
+   EINA_LIST_FOREACH(con->zones, l, zone)
+     {
+        for (x = 0; x < zone->desk_x_count; x++)
+          {
+             for (y = 0; y < zone->desk_y_count; y++)
+               {
+                  E_Desk *desk = e_desk_at_xy_get(zone, x, y);
+                  if ((desk->window_profile) &&
+                      strcmp(desk->window_profile, profile) == 0)
+                    {
+                       return desk;
+                    }
+               }
+          }
+     }
+
+   return NULL;
+}
+
 EAPI E_Container_Shape *
 e_container_shape_add(E_Container *con)
 {
@@ -1116,7 +1146,7 @@ static void
 _e_container_resize_handle(E_Container *con)
 {
    E_Event_Container_Resize *ev;
-   Eina_List *l, *screens, *zones = NULL;
+   Eina_List *l, *screens, *zones = NULL, *ll;
    E_Zone *zone;
    E_Screen *scr;
    int i;
@@ -1135,8 +1165,14 @@ _e_container_resize_handle(E_Container *con)
         con->zones = NULL;
        EINA_LIST_FOREACH(screens, l, scr)
          {
+             zone = NULL;
+             
              printf("@@@ SCREENS: %i %i | %i %i %ix%i\n", scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h);
-            zone = e_container_zone_id_get(con, scr->escreen);
+             EINA_LIST_FOREACH(zones, ll, zone)
+               {
+                  if (zone->id == scr->escreen) break;
+                  zone = NULL;
+               }
             if (zone)
               {
                   printf("@@@ FOUND ZONE %i %i\n", zone->num, zone->id);
@@ -1151,7 +1187,7 @@ _e_container_resize_handle(E_Container *con)
                  Eina_List *ll;
                  E_Config_Shelf *cf_es;
 
-                  printf("@@@ container resize handle\n");
+                  printf("@@@ container resize handle - new zone\n");
                  zone = e_zone_new(con, scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h);
                  /* find any shelves configured for this zone and add them in */
                  EINA_LIST_FOREACH(e_config->shelves, ll, cf_es)
@@ -1164,17 +1200,12 @@ _e_container_resize_handle(E_Container *con)
        if (zones)
          {
             E_Zone *spare_zone = NULL;
-            Eina_List *ll;
 
-            EINA_LIST_FOREACH(con->zones, ll, spare_zone)
-              {
-                 if (eina_list_data_find(zones, spare_zone))
-                   spare_zone = NULL;
-                 else break;
-              }
+             if (con->zones) spare_zone = con->zones->data;
+             
             EINA_LIST_FREE(zones, zone)
               {
-                 Eina_List *shelves, *ll, *del_shelves;
+                 Eina_List *shelves, *ll2, *del_shelves;
                  E_Shelf *es;
                  E_Border_List *bl;
                  E_Border *bd;
@@ -1182,7 +1213,7 @@ _e_container_resize_handle(E_Container *con)
                  /* delete any shelves on this zone */
                  shelves = e_shelf_list();
                  del_shelves = NULL;
-                 EINA_LIST_FOREACH(shelves, ll, es)
+                 EINA_LIST_FOREACH(shelves, ll2, es)
                    {
                       if (es->zone == zone)
                         del_shelves = eina_list_append(del_shelves, es);
@@ -1207,11 +1238,14 @@ _e_container_resize_handle(E_Container *con)
      }
    else
      {
-       E_Zone *zone;
+       E_Zone *z;
 
-       zone = e_container_zone_number_get(con, 0);
-       e_zone_move_resize(zone, 0, 0, con->w, con->h);
-       e_shelf_zone_move_resize_handle(zone);  
+       z = e_container_zone_number_get(con, 0);
+        if (z)
+          {
+             e_zone_move_resize(z, 0, 0, con->w, con->h);
+             e_shelf_zone_move_resize_handle(z);
+          }
      }
 
    ecore_event_add(E_EVENT_CONTAINER_RESIZE, ev, _e_container_event_container_resize_free, NULL);
index 2c6dbaf..58fa91d 100644 (file)
@@ -110,6 +110,8 @@ EAPI E_Zone      *e_container_zone_at_point_get(E_Container *con, int x, int y);
 EAPI E_Zone      *e_container_zone_number_get(E_Container *con, int num);
 EAPI E_Zone      *e_container_zone_id_get(E_Container *con, int id);
 
+EAPI E_Desk            *e_container_desk_window_profile_get(E_Container *con, const char *profile);
+
 EAPI E_Container_Shape *e_container_shape_add(E_Container *con);
 EAPI void               e_container_shape_show(E_Container_Shape *es);
 EAPI void               e_container_shape_hide(E_Container_Shape *es);
index 70ae582..6006e71 100644 (file)
@@ -11,6 +11,7 @@ static void _e_desk_event_desk_before_show_free(void *data, void *ev);
 static void _e_desk_event_desk_after_show_free(void *data, void *ev);
 static void _e_desk_event_desk_deskshow_free(void *data, void *ev);
 static void _e_desk_event_desk_name_change_free(void *data, void *ev);
+static void _e_desk_event_desk_window_profile_change_free(void *data, void *ev);
 static void _e_desk_show_begin(E_Desk *desk, int mode, int x, int dy);
 static void _e_desk_show_end(E_Desk *desk);
 static Eina_Bool _e_desk_show_animator(void *data);
@@ -23,6 +24,7 @@ EAPI int E_EVENT_DESK_BEFORE_SHOW = 0;
 EAPI int E_EVENT_DESK_AFTER_SHOW = 0;
 EAPI int E_EVENT_DESK_DESKSHOW = 0;
 EAPI int E_EVENT_DESK_NAME_CHANGE = 0;
+EAPI int E_EVENT_DESK_WINDOW_PROFILE_CHANGE = 0;
 
 EINTERN int
 e_desk_init(void)
@@ -32,6 +34,7 @@ e_desk_init(void)
    E_EVENT_DESK_AFTER_SHOW = ecore_event_type_new();
    E_EVENT_DESK_DESKSHOW = ecore_event_type_new();
    E_EVENT_DESK_NAME_CHANGE = ecore_event_type_new();
+   E_EVENT_DESK_WINDOW_PROFILE_CHANGE = ecore_event_type_new();
    return 1;
 }
 
@@ -47,6 +50,7 @@ e_desk_new(E_Zone *zone, int x, int y)
    E_Desk *desk;
    Eina_List *l;
    E_Config_Desktop_Name *cfname;
+   E_Config_Desktop_Window_Profile *cfprof;
    char name[40];
    int ok = 0;
 
@@ -80,6 +84,27 @@ e_desk_new(E_Zone *zone, int x, int y)
        desk->name = eina_stringshare_add(name);
      }
 
+   /* Get window profile name for current desktop */
+   ok = 0;
+   EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
+     {
+        if ((cfprof->container >= 0) &&
+            ((int)zone->container->num != cfprof->container)) continue;
+        if ((cfprof->zone >= 0) &&
+            ((int)zone->num != cfprof->zone)) continue;
+        if ((cfprof->desk_x != desk->x) || (cfprof->desk_y != desk->y))
+          continue;
+        desk->window_profile = eina_stringshare_add(cfprof->profile);
+        ok = 1;
+        break;
+     }
+
+   if (!ok)
+     {
+        desk->window_profile = eina_stringshare_add
+          (e_config->desktop_default_window_profile);
+     }
+
    return desk;
 }
 
@@ -517,6 +542,119 @@ e_desk_prev(E_Zone *zone)
    e_desk_show(e_desk_at_xy_get(zone, x, y));
 }
 
+EAPI void
+e_desk_window_profile_set(E_Desk     *desk,
+                          const char *profile)
+{
+   E_Event_Desk_Window_Profile_Change *ev;
+
+   E_OBJECT_CHECK(desk);
+   E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
+
+   eina_stringshare_replace(&desk->window_profile, profile);
+
+   ev = E_NEW(E_Event_Desk_Window_Profile_Change, 1);
+   ev->desk = desk;
+   e_object_ref(E_OBJECT(desk));
+   ecore_event_add(E_EVENT_DESK_WINDOW_PROFILE_CHANGE, ev,
+                   _e_desk_event_desk_window_profile_change_free, NULL);
+}
+
+EAPI void
+e_desk_window_profile_add(int         container,
+                          int         zone,
+                          int         desk_x,
+                          int         desk_y,
+                          const char *profile)
+{
+   E_Config_Desktop_Window_Profile *cfprof;
+
+   e_desk_window_profile_del(container, zone, desk_x, desk_y);
+
+   cfprof = E_NEW(E_Config_Desktop_Window_Profile, 1);
+   cfprof->container = container;
+   cfprof->zone = zone;
+   cfprof->desk_x = desk_x;
+   cfprof->desk_y = desk_y;
+   if (profile) cfprof->profile = eina_stringshare_add(profile);
+   else cfprof->profile = NULL;
+   e_config->desktop_window_profiles = eina_list_append(e_config->desktop_window_profiles, cfprof);
+}
+
+EAPI void
+e_desk_window_profile_del(int container,
+                          int zone,
+                          int desk_x,
+                          int desk_y)
+{
+   Eina_List *l = NULL;
+   E_Config_Desktop_Window_Profile *cfprof = NULL;
+
+   EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
+     {
+        if (!((cfprof->container == container) &&
+              (cfprof->zone == zone) &&
+              (cfprof->desk_x == desk_x) &&
+              (cfprof->desk_y == desk_y)))
+          continue;
+
+        e_config->desktop_window_profiles =
+          eina_list_remove_list(e_config->desktop_window_profiles, l);
+        if (cfprof->profile) eina_stringshare_del(cfprof->profile);
+        E_FREE(cfprof);
+        break;
+     }
+}
+
+EAPI void
+e_desk_window_profile_update(void)
+{
+   Eina_List *m, *c, *z, *l;
+   E_Manager *man;
+   E_Container *con;
+   E_Zone *zone;
+   E_Desk *desk;
+   E_Config_Desktop_Window_Profile *cfprof;
+   int d_x, d_y, ok;
+
+   EINA_LIST_FOREACH(e_manager_list(), m, man)
+     {
+        EINA_LIST_FOREACH(man->containers, c, con)
+          {
+             EINA_LIST_FOREACH(con->zones, z, zone)
+               {
+                  for (d_x = 0; d_x < zone->desk_x_count; d_x++)
+                    {
+                       for (d_y = 0; d_y < zone->desk_y_count; d_y++)
+                         {
+                            desk = zone->desks[d_x + zone->desk_x_count * d_y];
+                            ok = 0;
+
+                            EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
+                              {
+                                 if ((cfprof->container >= 0) &&
+                                     ((int)con->num != cfprof->container)) continue;
+                                 if ((cfprof->zone >= 0) &&
+                                     ((int)zone->num != cfprof->zone)) continue;
+                                 if ((cfprof->desk_x != d_x) ||
+                                     (cfprof->desk_y != d_y)) continue;
+                                 e_desk_window_profile_set(desk, cfprof->profile);
+                                 ok = 1;
+                                 break;
+                              }
+
+                            if (!ok)
+                              {
+                                 e_desk_window_profile_set
+                                   (desk, e_config->desktop_default_window_profile);
+                              }
+                         }
+                    }
+               }
+          }
+     }
+}
+
 static void
 _e_desk_free(E_Desk *desk)
 {
@@ -578,6 +716,16 @@ _e_desk_event_desk_name_change_free(void *data __UNUSED__, void *event)
 }
 
 static void
+_e_desk_event_desk_window_profile_change_free(void *data __UNUSED__,
+                                              void      *event)
+{
+   E_Event_Desk_Window_Profile_Change *ev;
+   ev = event;
+   e_object_unref(E_OBJECT(ev->desk));
+   E_FREE(ev);
+}
+
+static void
 _e_desk_show_begin(E_Desk *desk, int mode, int dx, int dy)
 {
    E_Border_List *bl;
index 9ee9547..bbe4355 100644 (file)
@@ -6,6 +6,7 @@ typedef struct _E_Event_Desk_Before_Show E_Event_Desk_Before_Show;
 typedef struct _E_Event_Desk_After_Show E_Event_Desk_After_Show;
 typedef struct _E_Event_Desk_DeskShow E_Event_Desk_DeskShow;
 typedef struct _E_Event_Desk_Name_Change E_Event_Desk_Name_Change;
+typedef struct _E_Event_Desk_Window_Profile_Change E_Event_Desk_Window_Profile_Change;
 
 #else
 #ifndef E_DESK_H
@@ -19,6 +20,7 @@ struct _E_Desk
 
    E_Zone              *zone;
    const char          *name;
+   const char          *window_profile;
    int                  x, y;
    unsigned char        visible : 1;
    unsigned int         deskshow_toggle : 1;
@@ -50,6 +52,11 @@ struct _E_Event_Desk_Name_Change
    E_Desk   *desk;
 };
 
+struct _E_Event_Desk_Window_Profile_Change
+{
+   E_Desk   *desk;
+};
+
 EINTERN int          e_desk_init(void);
 EINTERN int          e_desk_shutdown(void);
 EAPI E_Desk      *e_desk_new(E_Zone *zone, int x, int y);
@@ -70,12 +77,17 @@ EAPI void         e_desk_row_add(E_Zone *zone);
 EAPI void         e_desk_row_remove(E_Zone *zone);
 EAPI void         e_desk_col_add(E_Zone *zone);
 EAPI void         e_desk_col_remove(E_Zone *zone);
+EAPI void         e_desk_window_profile_set(E_Desk *desk, const char *profile);
+EAPI void         e_desk_window_profile_add(int container, int zone, int desk_x, int desk_y, const char *profile);
+EAPI void         e_desk_window_profile_del(int container, int zone, int desk_x, int desk_y);
+EAPI void         e_desk_window_profile_update(void);
 
 extern EAPI int E_EVENT_DESK_SHOW;
 extern EAPI int E_EVENT_DESK_BEFORE_SHOW;
 extern EAPI int E_EVENT_DESK_AFTER_SHOW;
 extern EAPI int E_EVENT_DESK_DESKSHOW;
 extern EAPI int E_EVENT_DESK_NAME_CHANGE;
+extern EAPI int E_EVENT_DESK_WINDOW_PROFILE_CHANGE;
 
 #endif
 #endif
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index a76d6ba..a05c52f 100644 (file)
@@ -279,6 +279,10 @@ e_gadcon_custom_del(E_Gadcon *gc)
 {
    E_OBJECT_CHECK(gc);
    E_OBJECT_TYPE_CHECK(gc, E_GADCON_TYPE);
+
+   if (eina_list_data_find(custom_populate_requests, gc))
+     custom_populate_requests = eina_list_remove(custom_populate_requests, gc);
+
    gadcons = eina_list_remove(gadcons, gc);
 }
 
index 30ebb35..d88f11b 100644 (file)
@@ -1421,6 +1421,13 @@ e_hints_window_desktop_set(E_Border *bd)
      deskpos[1] = bd->desk->y;
      ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_DESK, deskpos, 2);
 
+     if (strcmp(bd->desk->window_profile,
+                e_config->desktop_default_window_profile) != 0)
+       {
+          ecore_x_e_window_profile_set(bd->client.win,
+                                       bd->desk->window_profile);
+       }
+
 #if 0
      ecore_x_netwm_desktop_set(bd->client.win, current);
 #endif
index 5ec0880..76b3452 100644 (file)
@@ -134,7 +134,9 @@ main(int argc, char **argv)
    Eina_Bool after_restart = EINA_FALSE;
    double t = 0.0, tstart = 0.0;
    char *s = NULL, buff[32];
+#ifndef _F_DO_NOT_USE_SIG_HANDLER_
    struct sigaction action;
+#endif
 #ifdef TS_DO
    t0 = t1 = t2 = ecore_time_unix_get();
 #endif
index 8451fcf..917dc7e 100644 (file)
@@ -673,6 +673,30 @@ e_manager_comp_src_move_unlock(E_Manager *man, E_Manager_Comp_Source *src)
 }
 #endif
 
+#ifdef _F_COMP_COMPOSITE_MODE_
+EAPI void
+e_manager_comp_composite_mode_set(E_Manager *man, E_Zone *zone, Eina_Bool set)
+{
+   E_OBJECT_CHECK(man);
+   E_OBJECT_CHECK(zone);
+   E_OBJECT_TYPE_CHECK(man, E_MANAGER_TYPE);
+   E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
+   if (!man->comp) return;
+   man->comp->func.composite_mode_set(man->comp->data, man, zone, set);
+}
+
+EAPI Eina_Bool
+e_manager_comp_composite_mode_get(E_Manager *man, E_Zone *zone)
+{
+   E_OBJECT_CHECK_RETURN(man, EINA_FALSE);
+   E_OBJECT_CHECK_RETURN(zone, EINA_FALSE);
+   E_OBJECT_TYPE_CHECK_RETURN(man, E_MANAGER_TYPE, EINA_FALSE);
+   E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, EINA_FALSE);
+   if (!man->comp) return EINA_FALSE;
+   return man->comp->func.composite_mode_get(man->comp->data, man, zone);
+}
+#endif /* _F_COMP_COMPOSITE_MODE_ */
+
 EAPI void
 e_manager_comp_event_resize_send(E_Manager *man)
 {
@@ -1039,9 +1063,7 @@ _e_manager_windows_group_raise (E_Border* bd)
         leader_win = bd->client.icccm.client_leader;
         if (leader_win)
           {
-             Eina_List* border_list;
              Eina_List* restack_list;
-             Eina_List *l;   
              E_Border *temp_bd;
              E_Border *top_bd;
              E_Border_List *bl;
@@ -1199,13 +1221,16 @@ _e_manager_cb_client_message(void *data __UNUSED__, int ev_type __UNUSED__, void
                          e_border_focus_set(bd, 1, 1);
                        else
                          {
-                            Eina_List* l = NULL;
                             E_Border* temp_bd = NULL;
                             E_Border_List *bl;
 
                             bl = e_container_border_list_last(bd->zone->container);
                             while ((temp_bd = e_container_border_list_prev(bl)))
                               {
+                                 if ((temp_bd->x >= bd->zone->w) || (temp_bd->y >= bd->zone->h)) continue;
+                                 if (((temp_bd->x + temp_bd->w) <= 0) || ((temp_bd->y + temp_bd->h) <= 0)) continue;
+                                 if (temp_bd->client.illume.win_state.state == ECORE_X_ILLUME_WINDOW_STATE_FLOATING) continue;
+
                                  if ((!temp_bd->iconic) && (temp_bd->visible) && (temp_bd->desk == bd->desk) &&
                                      (temp_bd->client.icccm.accepts_focus || temp_bd->client.icccm.take_focus) &&
                                      (temp_bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) &&
index 916c6cd..83b3d87 100644 (file)
@@ -56,6 +56,10 @@ struct _E_Manager_Comp
     Eina_Bool          (*src_move_lock)        (void *data, E_Manager *man, E_Manager_Comp_Source *src);
     Eina_Bool          (*src_move_unlock)      (void *data, E_Manager *man, E_Manager_Comp_Source *src);
 #endif
+#ifdef _F_COMP_COMPOSITE_MODE_
+    void               (*composite_mode_set)   (void *data, E_Manager *man, E_Zone *zone, Eina_Bool set);
+    Eina_Bool          (*composite_mode_get)   (void *data, E_Manager *man, E_Zone *zone);
+#endif
   } func;
   void                   *data;
 };
@@ -151,5 +155,14 @@ EAPI Eina_Bool        e_manager_comp_src_input_region_set(E_Manager *man, E_Mana
 EAPI Eina_Bool        e_manager_comp_src_move_lock(E_Manager *man, E_Manager_Comp_Source *src);
 EAPI Eina_Bool        e_manager_comp_src_move_unlock(E_Manager *man, E_Manager_Comp_Source *src);
 #endif
+#ifdef _F_COMP_COMPOSITE_MODE_
+// set the composite rendering state of a zone.
+// if set is EINA_TRUE, then composite module will be running with composite rendering mode.
+// if set is EINA_FALSE, then composite module may be running with nocomposite mode on given zone.
+EAPI void             e_manager_comp_composite_mode_set(E_Manager *man, E_Zone *zone, Eina_Bool set);
+// get the composite rendering state of a zone.
+// if return value is EINA_TRUE, zone is rendered with composite mode.
+EAPI Eina_Bool        e_manager_comp_composite_mode_get(E_Manager *man, E_Zone *zone);
+#endif
 #endif
 #endif
index 633f96d..fc9a404 100644 (file)
@@ -501,6 +501,16 @@ _e_module_free(E_Module *m)
    free(m);
 }
 
+#if _F_USE_EXTN_DIALOG_
+static void
+_e_module_dialog_disable_show(const char *title,
+                              const char *body,
+                              E_Module *m __UNUSED__)
+{
+   printf("MODULE ERR:\n%s\n", body);
+   e_util_extn_dialog_show(title, body);
+}
+#else
 static void
 _e_module_dialog_disable_show(const char *title, const char *body, E_Module *m)
 {
@@ -523,6 +533,7 @@ _e_module_dialog_disable_show(const char *title, const char *body, E_Module *m)
    e_win_centered_set(dia->win, 1);
    e_dialog_show(dia);
 }
+#endif
 
 static void
 _e_module_cb_dialog_disable(void *data, E_Dialog *dia)
index b5128b9..ba357a4 100644 (file)
@@ -1637,3 +1637,24 @@ e_util_fullscreen_any(void)
      }
    return EINA_FALSE;
 }
+
+#if _F_USE_EXTN_DIALOG_
+/**
+ * Using external elementary dialog util instead of e_dialog to display error or warning
+ * messages. It is a temporary solution for supporting consistent UX theme. The external
+ * dialog is a simple EFL application which is based on elementary. Thus window manager
+ * can display message using elementary UX theme, along with other system popup.
+ */
+EAPI void
+e_util_extn_dialog_show(const char *title,
+                        const char *txt)
+{
+   Ecore_Exe *exe;
+   char cmd[4096];
+
+   /* external_dialog_name, icccm_name, icccm_class, popup_title, popup_contents */
+   snprintf(cmd, sizeof(cmd), "/usr/bin/extndialog E _extn_dialog \'%s\' \'%s\'", title, txt);
+   exe = ecore_exe_run(cmd, NULL);
+   if (exe) ecore_exe_free(exe);
+}
+#endif
index 835f0d0..9070315 100644 (file)
@@ -103,5 +103,9 @@ EAPI int e_util_container_desk_count_get(E_Container *con);
 EAPI Eina_Bool e_util_fullscreen_curreny_any(void);
 EAPI Eina_Bool e_util_fullscreen_any(void);
 
+#if _F_USE_EXTN_DIALOG_
+EAPI void         e_util_extn_dialog_show(const char *title, const char *txt);
+#endif
+
 #endif
 #endif
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index cb2f457..d546ee6 100644 (file)
@@ -15,6 +15,7 @@ struct _E_Config_Dialog_Data
    int desk_y;
    char *bg;
    char *name;
+   char *profile;
    
    Evas_Object *preview;
    Ecore_Event_Handler *hdl;
@@ -61,6 +62,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
    const char *bg;
    char name[40];
    int ok = 0;
+   E_Config_Desktop_Window_Profile *prof;
    
    bg = e_bg_file_get(cfdata->con_num, cfdata->zone_num, cfdata->desk_x, cfdata->desk_y);
    if (!bg)
@@ -88,6 +90,23 @@ _fill_data(E_Config_Dialog_Data *cfdata)
        snprintf(name, sizeof(name), _(e_config->desktop_default_name), cfdata->desk_x, cfdata->desk_y);
        cfdata->name = strdup(name);
      }
+
+   EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, prof)
+     {
+        if (!((prof->container == cfdata->con_num) &&
+              (prof->zone == cfdata->zone_num) &&
+              (prof->desk_x == cfdata->desk_x) &&
+              (prof->desk_y == cfdata->desk_y)))
+          continue;
+
+        if (prof->profile)
+          cfdata->profile = strdup(prof->profile);
+        ok = 1;
+        break;
+     }
+
+   if (!ok)
+     cfdata->profile = strdup(e_config->desktop_default_window_profile);
 }
 
 static void *
@@ -110,6 +129,8 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
      E_FREE(cfdata->bg);
    if (cfdata->name)
      E_FREE(cfdata->name);
+   if (cfdata->profile)
+     E_FREE(cfdata->profile);
    E_FREE(cfdata);
 }
 
@@ -125,11 +146,20 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
        cfdata->name = strdup(name);
      }
 
+   if (!cfdata->profile[0]) 
+     cfdata->profile = strdup(e_config->desktop_default_window_profile); 
+
    e_desk_name_del(cfdata->con_num, cfdata->zone_num, 
                    cfdata->desk_x, cfdata->desk_y);
    e_desk_name_add(cfdata->con_num, cfdata->zone_num, 
                    cfdata->desk_x, cfdata->desk_y, cfdata->name);
    e_desk_name_update();
+
+   e_desk_window_profile_del(cfdata->con_num, cfdata->zone_num, 
+                             cfdata->desk_x, cfdata->desk_y);
+   e_desk_window_profile_add(cfdata->con_num, cfdata->zone_num, 
+                             cfdata->desk_x, cfdata->desk_y, cfdata->profile);
+   e_desk_window_profile_update();
    
    e_bg_del(cfdata->con_num, cfdata->zone_num, cfdata->desk_x, cfdata->desk_y);
    e_bg_add(cfdata->con_num, cfdata->zone_num, 
@@ -156,6 +186,13 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
    ob = e_widget_entry_add(evas, &(cfdata->name), NULL, NULL, NULL);
    e_widget_frametable_object_append(of, ob, 1, 0, 2, 1, 1, 1, 1, 0);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   of = e_widget_frametable_add(evas, _("Desktop Window Profile"), 0);
+   ob = e_widget_label_add(evas, _("Profile Name:"));
+   e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 0);
+   ob = e_widget_entry_add(evas, &(cfdata->profile), NULL, NULL, NULL);
+   e_widget_frametable_object_append(of, ob, 1, 0, 2, 1, 1, 1, 1, 0);
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
    
    of = e_widget_frametable_add(evas, _("Desktop Wallpaper"), 0);
    ob = e_widget_preview_add(evas, 240, (240 * zone->h) / zone->w);
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 80cddb8..cdef849 100644 (file)
@@ -42,9 +42,15 @@ static void on_menu_add(void *data, E_Menu *m, E_Menu_Item *mi);
 static int _e_gadman_client_add (void *data __UNUSED__, const E_Gadcon_Client_Class *cc);
 static void _e_gadman_client_remove (void *data __UNUSED__, E_Gadcon_Client *gcc);
 
+static void _e_gadman_handlers_add(void);
+static void _e_gadman_handler_del(void);
+static Eina_Bool _e_gadman_cb_zone_add(void *data __UNUSED__, int type __UNUSED__, void *event);
+static Eina_Bool _e_gadman_cb_zone_del(void *data __UNUSED__, int type __UNUSED__, void *event);
+
 E_Gadcon_Client *current = NULL;
 Manager *Man = NULL;
 static E_Gadcon_Location *location = NULL;
+static Eina_List *_gadman_hdls = NULL;
 
 /* Implementation */
 void
@@ -90,6 +96,8 @@ gadman_init(E_Module *m)
             Man->gadcons[layer] = eina_list_append(Man->gadcons[layer], gc);
          }
      }
+
+   _e_gadman_handlers_add();
 }
 
 void
@@ -98,6 +106,8 @@ gadman_shutdown(void)
    E_Gadcon *gc;
    unsigned int layer;
 
+   _e_gadman_handler_del();
+
    e_gadcon_location_unregister(location);
    e_container_shape_change_callback_del(Man->container, on_shape_change, NULL);
 
@@ -667,14 +677,14 @@ _apply_widget_position(E_Gadcon_Client *gcc)
    int x, y, w, h;
    E_Zone *zone;
 
-   x = gcc->cf->geom.pos_x * Man->width;
-   y = gcc->cf->geom.pos_y * Man->height;
-   w = gcc->cf->geom.size_w * Man->width;
-   h = gcc->cf->geom.size_h * Man->height;
-
    /* Obtain zone from parent gadcon */
    zone = gcc->gadcon->zone;
 
+   x = (gcc->cf->geom.pos_x * zone->w) + zone->x;
+   y = (gcc->cf->geom.pos_y * zone->h) + zone->y;
+   w = gcc->cf->geom.size_w * zone->w;
+   h = gcc->cf->geom.size_h * zone->h;
+
    /* Respect min sizes */
    if (h < gcc->min.h) h = gcc->min.h;
    if (w < gcc->min.w) w = gcc->min.w;
@@ -873,10 +883,11 @@ _get_bind_text(const char* action)
 static void
 on_shape_change(void *data __UNUSED__, E_Container_Shape *es, E_Container_Shape_Change ch __UNUSED__)
 {
-   const Eina_List *l, *g;
+   const Eina_List *l, *g, *ll;
    E_Gadcon *gc;
    E_Config_Gadcon_Client *cf_gcc;
    E_Container  *con;
+   E_Gadcon_Client *gcc;
    unsigned int layer;
 
    con = e_container_shape_container_get(es);
@@ -890,12 +901,18 @@ on_shape_change(void *data __UNUSED__, E_Container_Shape *es, E_Container_Shape_
 
    for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
      {
-       EINA_LIST_FOREACH(Man->gadcons[layer], g, gc)
-         {
-            e_gadcon_unpopulate(gc);
-            EINA_LIST_FOREACH(gc->cf->clients, l, cf_gcc)
-              gadman_gadget_place(cf_gcc, layer, gc->zone);
-         }
+        EINA_LIST_FOREACH(Man->gadcons[layer], g, gc)
+          {
+             EINA_LIST_FOREACH(gc->clients, ll, gcc)
+               {
+                  Man->gadgets[layer] = eina_list_remove(Man->gadgets[layer], gcc);
+                  if (gcc->gadcon->editing) gadman_gadget_edit_end(NULL, NULL, NULL, NULL);
+               }
+
+             e_gadcon_unpopulate(gc);
+             EINA_LIST_FOREACH(gc->cf->clients, l, cf_gcc)
+               gadman_gadget_place(cf_gcc, layer, gc->zone);
+          }
      }
 }
 
@@ -1365,3 +1382,102 @@ _e_gadman_client_remove(void *data __UNUSED__, E_Gadcon_Client *gcc)
 {
    gadman_gadget_del(gcc);
 }
+
+static void
+_e_gadman_handlers_add(void)
+{
+   _gadman_hdls =
+     eina_list_append(_gadman_hdls,
+                      ecore_event_handler_add(E_EVENT_ZONE_ADD,
+                                              _e_gadman_cb_zone_add,
+                                              NULL));
+   _gadman_hdls =
+     eina_list_append(_gadman_hdls,
+                      ecore_event_handler_add(E_EVENT_ZONE_DEL,
+                                              _e_gadman_cb_zone_del,
+                                              NULL));
+}
+
+static void
+_e_gadman_handler_del(void)
+{
+   Ecore_Event_Handler *hdl;
+
+   /* remove the ecore event handlers */
+   EINA_LIST_FREE(_gadman_hdls, hdl)
+     ecore_event_handler_del(hdl);
+}
+
+static Eina_Bool
+_e_gadman_cb_zone_add(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Zone_Add *ev;
+   E_Zone* zone;
+   E_Gadcon *gc;
+   Eina_List *l;
+   unsigned int layer;
+
+   ev = event;
+   zone = ev->zone;
+
+   for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
+     {
+        EINA_LIST_FOREACH(Man->gadcons[layer], l, gc)
+          if (gc->zone == zone) return ECORE_CALLBACK_PASS_ON;
+     }
+
+   // Not exist, then add
+   /* iterating through zones - and making gadmans on each */
+   const char *layer_name[] = {"gadman", "gadman_top"};
+
+   for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
+     {
+        E_Gadcon *gc;
+
+        gc = _gadman_gadcon_new(layer_name[layer], layer, zone, location);
+        Man->gadcons[layer] = eina_list_append(Man->gadcons[layer], gc);
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool
+_e_gadman_cb_zone_del(void *data __UNUSED__, int type __UNUSED__, void *event)
+{
+   E_Event_Zone_Del *ev;
+   E_Zone* zone;
+   Eina_List *l, *ll;
+   E_Gadcon *gc;
+   E_Gadcon_Client *gcc;
+   unsigned int layer;
+
+   ev = event;
+   zone = ev->zone;
+
+   for (layer = 0; layer < GADMAN_LAYER_COUNT; layer++)
+     {
+        EINA_LIST_FOREACH(Man->gadcons[layer], l, gc)
+          {
+             if (gc->zone != zone) continue;
+
+             Man->gadcons[layer] = eina_list_remove(Man->gadcons[layer], gc);
+
+             EINA_LIST_FOREACH(gc->clients, ll, gcc)
+               {
+                  Man->gadgets[layer] = eina_list_remove(Man->gadgets[layer], gcc);
+                  if (gcc->gadcon->editing) gadman_gadget_edit_end(NULL, NULL, NULL, NULL);
+               }
+
+             e_gadcon_unpopulate(gc);
+             e_gadcon_custom_del(gc);
+
+             eina_stringshare_del(gc->name);
+             if (gc->config_dialog) e_object_del(E_OBJECT(gc->config_dialog));
+
+             E_FREE(gc);
+          }
+     }
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
index 8e4264a..cf3cec6 100644 (file)
@@ -5,6 +5,7 @@ struct _E_Config_Dialog_Data
 {
    const char *dir;
    int show_label, eap_label;
+   int lock_move;
 
    Evas_Object *tlist;
    Evas_Object *radio_name;
@@ -26,6 +27,7 @@ static void _cb_confirm_dialog_yes(void *data);
 static void _cb_confirm_dialog_destroy(void *data);
 static void _load_tlist(E_Config_Dialog_Data *cfdata);
 static void _show_label_cb_change(void *data, Evas_Object *obj);
+static void _lock_move_cb_change(void *data, Evas_Object *obj);
 
 void 
 _config_ibar_module(Config_Item *ci)
@@ -64,6 +66,7 @@ _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
      cfdata->dir = eina_stringshare_add("");
    cfdata->show_label = ci->show_label;
    cfdata->eap_label = ci->eap_label;
+   cfdata->lock_move = ci->lock_move;
 }
 
 static void *
@@ -136,6 +139,14 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial
    if (!cfdata->show_label) e_widget_disabled_set(cfdata->radio_generic, 1);
 
    e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   of = e_widget_framelist_add(evas, _("Icon Movement"), 0);
+   ob = e_widget_check_add(evas, _("Lock Icon Move"), &(cfdata->lock_move));
+   e_widget_on_change_hook_set(ob, _lock_move_cb_change, cfdata);
+   e_widget_framelist_object_append(of, ob);
+
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
    return o;
 }
 
@@ -148,8 +159,10 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
    if (ci->dir) eina_stringshare_del(ci->dir);
    ci->dir = NULL;
    if (cfdata->dir) ci->dir = eina_stringshare_ref(cfdata->dir);
+
    ci->show_label = cfdata->show_label;
    ci->eap_label = cfdata->eap_label;
+   ci->lock_move = cfdata->lock_move;
    _ibar_config_update(ci);
    e_config_save_queue();
    return 1;
@@ -305,3 +318,13 @@ _show_label_cb_change(void *data, Evas_Object *obj __UNUSED__)
    e_widget_disabled_set(cfdata->radio_comment, !cfdata->show_label);
    e_widget_disabled_set(cfdata->radio_generic, !cfdata->show_label);   
 }
+
+static void
+_lock_move_cb_change(void *data, Evas_Object *obj __UNUSED__)
+{
+   E_Config_Dialog_Data *cfdata;
+
+   cfdata = data;
+   if (!cfdata) return;
+}
+
index 7d4ddd9..322cce0 100644 (file)
@@ -442,6 +442,8 @@ _ibar_config_item_get(const char *id)
    ci->dir = eina_stringshare_add("default");
    ci->show_label = 1;
    ci->eap_label = 0;
+   ci->lock_move= 0;
+
    ibar_config->items = eina_list_append(ibar_config->items, ci);
    return ci;
 }
@@ -746,11 +748,11 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS
    ic = data;
    if (ev->button == 1)
      {
-       ic->drag.x = ev->output.x;
-       ic->drag.y = ev->output.y;
-       ic->drag.start = 1;
-       ic->drag.dnd = 0;
-       ic->mouse_down = 1;
+        ic->drag.x = ev->output.x;
+        ic->drag.y = ev->output.y;
+        ic->drag.start = 1;
+        ic->drag.dnd = 0;
+        ic->mouse_down = 1;
      }
    else if ((ev->button == 3) && (!ibar_config->menu))
      {
@@ -827,28 +829,31 @@ _ibar_cb_icon_mouse_up(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *e
 
    ev = event_info;
    ic = data;
-   if ((ev->button == 1) && (!ic->drag.dnd) && (ic->mouse_down == 1))
-     {
-       if (ic->app->type == EFREET_DESKTOP_TYPE_APPLICATION)
-         e_exec(ic->ibar->inst->gcc->gadcon->zone, ic->app, NULL, NULL, "ibar");
-       else if (ic->app->type == EFREET_DESKTOP_TYPE_LINK)
-         {
-            if (!strncasecmp(ic->app->url, "file:", 5))
-              {
-                 E_Action *act;
-
-                 act = e_action_find("fileman");
-                 if (act) act->func.go(E_OBJECT(obj), ic->app->url + 5);
-              }
-         }
 
-       ic->drag.start = 0;
-       ic->drag.dnd = 0;
-       ic->mouse_down = 0;
-       /* TODO: bring back "e,action,start|stop" for the startup_notify apps
-        *       when startup_notify is used again
-        */
-       _ibar_icon_signal_emit(ic, "e,action,exec", "e");
+   if ((ev->button == 1) && (ic->mouse_down == 1))
+     {
+        if (!ic->drag.dnd)
+          {
+             if (ic->app->type == EFREET_DESKTOP_TYPE_APPLICATION)
+               e_exec(ic->ibar->inst->gcc->gadcon->zone, ic->app, NULL, NULL, "ibar");
+             else if (ic->app->type == EFREET_DESKTOP_TYPE_LINK)
+               {
+                  if (!strncasecmp(ic->app->url, "file:", 5))
+                    {
+                       E_Action *act;
+
+                       act = e_action_find("fileman");
+                       if (act) act->func.go(E_OBJECT(obj), ic->app->url + 5);
+                    }
+               }
+             /* TODO: bring back "e,action,start|stop" for the startup_notify apps
+              *       when startup_notify is used again
+              */
+             _ibar_icon_signal_emit(ic, "e,action,exec", "e");
+          }
+        ic->drag.start = 0;
+        ic->drag.dnd = 0;
+        ic->mouse_down = 0;
      }
 }
 
@@ -879,6 +884,8 @@ _ibar_cb_icon_mouse_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS
             ic->drag.dnd = 1;
             ic->drag.start = 0;
 
+            if (ic->ibar->inst->ci->lock_move) return;
+
             evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h);
             d = e_drag_new(ic->ibar->inst->gcc->gadcon->zone->container,
                            x, y, drag_types, 1,
@@ -1162,6 +1169,7 @@ e_modapi_init(E_Module *m)
    E_CONFIG_VAL(D, T, dir, STR);
    E_CONFIG_VAL(D, T, show_label, INT);
    E_CONFIG_VAL(D, T, eap_label, INT);
+   E_CONFIG_VAL(D, T, lock_move, INT);
 
    conf_edd = E_CONFIG_DD_NEW("IBar_Config", Config);
 #undef T
@@ -1183,6 +1191,8 @@ e_modapi_init(E_Module *m)
        ci->dir = eina_stringshare_add("default");
        ci->show_label = 1;
        ci->eap_label = 0;
+       ci->lock_move= 0;
+
        ibar_config->items = eina_list_append(ibar_config->items, ci);
      }
  
index 0811876..dd32910 100644 (file)
@@ -22,6 +22,7 @@ struct _Config_Item
    const char *dir;
    int show_label;
    int eap_label;
+   int lock_move;
 };
 
 EAPI extern E_Module_Api e_modapi;
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/src/modules/shot/.svn/all-wcprops b/src/modules/shot/.svn/all-wcprops
deleted file mode 100755 (executable)
index 997dc22..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-K 25
-svn:wc:ra_dav:version-url
-V 46
-/svn/e/!svn/ver/59941/trunk/e/src/modules/shot
-END
-module.desktop.in
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/e/!svn/ver/59829/trunk/e/src/modules/shot/module.desktop.in
-END
-e-module-shot.edj
-K 25
-svn:wc:ra_dav:version-url
-V 64
-/svn/e/!svn/ver/59797/trunk/e/src/modules/shot/e-module-shot.edj
-END
-e_mod_main.c
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/e/!svn/ver/59792/trunk/e/src/modules/shot/e_mod_main.c
-END
-Makefile.am
-K 25
-svn:wc:ra_dav:version-url
-V 58
-/svn/e/!svn/ver/59766/trunk/e/src/modules/shot/Makefile.am
-END
-.cvsignore
-K 25
-svn:wc:ra_dav:version-url
-V 57
-/svn/e/!svn/ver/59766/trunk/e/src/modules/shot/.cvsignore
-END
-e_mod_main.h
-K 25
-svn:wc:ra_dav:version-url
-V 59
-/svn/e/!svn/ver/59766/trunk/e/src/modules/shot/e_mod_main.h
-END
diff --git a/src/modules/shot/.svn/dir-prop-base b/src/modules/shot/.svn/dir-prop-base
deleted file mode 100755 (executable)
index feed959..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-K 10
-svn:ignore
-V 42
-Makefile
-Makefile.in
-.deps
-module.desktop
-
-END
diff --git a/src/modules/shot/.svn/entries b/src/modules/shot/.svn/entries
deleted file mode 100755 (executable)
index 83c070f..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-10
-
-dir
-60234
-https://svn.enlightenment.org/svn/e/trunk/e/src/modules/shot
-https://svn.enlightenment.org/svn/e
-
-
-
-2011-06-04T01:21:47.218159Z
-59941
-raster
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-7cbeb6ba-43b4-40fd-8cce-4c39aea84d33
-\f
-module.desktop.in
-file
-
-
-
-
-2011-06-12T06:33:50.000000Z
-2576a4fa15a98341d07ed5eae5f1c276
-2011-05-31T00:55:25.015330Z
-59829
-seoz
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-382
-\f
-e-module-shot.edj
-file
-
-
-
-
-2011-06-12T06:33:50.000000Z
-a3ebb37b918859a4ee1a960092700b3c
-2011-05-30T05:35:45.697661Z
-59797
-raster
-has-props
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-9475
-\f
-e_mod_main.c
-file
-
-
-
-
-2011-06-12T06:33:50.000000Z
-cb66237d4e2373a5dd7fd8405a58cc33
-2011-05-29T23:45:40.227255Z
-59792
-raster
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-23589
-\f
-Makefile.am
-file
-
-
-
-
-2011-05-29T06:47:52.000000Z
-da54f69937931d923395364370e0e776
-2011-05-28T06:53:44.881572Z
-59766
-raster
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-982
-\f
-.cvsignore
-file
-
-
-
-
-2011-05-29T06:47:52.000000Z
-30ebe381b2db35c06ea554373a095af7
-2011-05-28T06:53:44.881572Z
-59766
-raster
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-63
-\f
-e_mod_main.h
-file
-
-
-
-
-2011-05-29T06:47:52.000000Z
-b027d70ec5e628a1b3c5e7891c153218
-2011-05-28T06:53:44.881572Z
-59766
-raster
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-219
-\f
diff --git a/src/modules/shot/.svn/prop-base/e-module-shot.edj.svn-base b/src/modules/shot/.svn/prop-base/e-module-shot.edj.svn-base
deleted file mode 100755 (executable)
index 5e9587e..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-K 13
-svn:mime-type
-V 24
-application/octet-stream
-END
diff --git a/src/modules/shot/.svn/text-base/.cvsignore.svn-base b/src/modules/shot/.svn/text-base/.cvsignore.svn-base
deleted file mode 100755 (executable)
index 06d064a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-module.la
-module.desktop
diff --git a/src/modules/shot/.svn/text-base/Makefile.am.svn-base b/src/modules/shot/.svn/text-base/Makefile.am.svn-base
deleted file mode 100755 (executable)
index 3bf6d94..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-MAINTAINERCLEANFILES = Makefile.in
-MODULE = shot
-
-# data files for the module
-filesdir = $(libdir)/enlightenment/modules/$(MODULE)
-files_DATA = \
-e-module-$(MODULE).edj module.desktop
-
-EXTRA_DIST = $(files_DATA)
-
-# the module .so file
-INCLUDES               = -I. \
-                         -I$(top_srcdir) \
-                         -I$(top_srcdir)/src/modules/$(MODULE) \
-                         -I$(top_srcdir)/src/bin \
-                         -I$(top_builddir)/src/bin \
-                         -I$(top_srcdir)/src/modules \
-                         @e_cflags@
-pkgdir                 = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
-pkg_LTLIBRARIES        = module.la
-module_la_SOURCES      = e_mod_main.c \
-                         e_mod_main.h
-module_la_LIBADD       = @e_libs@ @dlopen_libs@
-module_la_LDFLAGS      = -module -avoid-version
-module_la_DEPENDENCIES = $(top_builddir)/config.h
-
-uninstall:
-       rm -rf $(DESTDIR)$(libdir)/enlightenment/modules/$(MODULE)
diff --git a/src/modules/shot/.svn/text-base/e-module-shot.edj.svn-base b/src/modules/shot/.svn/text-base/e-module-shot.edj.svn-base
deleted file mode 100755 (executable)
index a507906..0000000
Binary files a/src/modules/shot/.svn/text-base/e-module-shot.edj.svn-base and /dev/null differ
diff --git a/src/modules/shot/.svn/text-base/e_mod_main.c.svn-base b/src/modules/shot/.svn/text-base/e_mod_main.c.svn-base
deleted file mode 100755 (executable)
index f4a85c7..0000000
+++ /dev/null
@@ -1,839 +0,0 @@
-#include "e.h"
-#include "e_mod_main.h"
-
-static E_Module *shot_module = NULL;
-
-static E_Action *act = NULL;
-static E_Int_Menu_Augmentation *maug = NULL;
-static Ecore_Timer *timer = NULL;
-static E_Win *win = NULL;
-static Evas_Object *o_bg = NULL, *o_box = NULL, *o_content = NULL;
-static Evas_Object *o_event = NULL, *o_img = NULL, *o_hlist = NULL;
-static E_Manager *sman = NULL;
-static E_Container *scon = NULL;
-static int quality = 90;
-static int screen = -1;
-#define MAXZONES 64
-static Evas_Object *o_rectdim[MAXZONES] = { NULL };
-static Evas_Object *o_radio_all = NULL;
-static Evas_Object *o_radio[MAXZONES] = { NULL };
-static Evas_Object *o_fsel = NULL;
-static Evas_Object *o_label = NULL;
-static Evas_Object *o_entry = NULL;
-static unsigned char *fdata = NULL;
-static int fsize = 0;
-static Ecore_Con_Url *url_up = NULL;
-static Eina_List *handlers = NULL;
-static char *url_ret = NULL;
-
-static void
-_win_delete_cb(E_Win *w __UNUSED__)
-{
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-}
-
-static void
-_win_resize_cb(E_Win *w __UNUSED__)
-{
-   evas_object_resize(o_bg, win->w, win->h);
-}
-
-static void
-_on_focus_cb(void *data __UNUSED__, Evas_Object *obj)
-{
-   if (obj == o_content) e_widget_focused_object_clear(o_box);
-   else if (o_content) e_widget_focused_object_clear(o_content);
-}
-
-static void
-_key_down_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event)
-{
-   Evas_Event_Key_Down *ev = event;
-   
-   if (!strcmp(ev->keyname, "Tab"))
-     {
-        if (evas_key_modifier_is_set(evas_key_modifier_get(e_win_evas_get(win)), "Shift"))
-          {
-             if (e_widget_focus_get(o_box))
-               {
-                  if (!e_widget_focus_jump(o_box, 0))
-                    {
-                       e_widget_focus_set(o_content, 0);
-                       if (!e_widget_focus_get(o_content))
-                          e_widget_focus_set(o_box, 0);
-                    }
-               }
-             else
-               {
-                  if (!e_widget_focus_jump(o_content, 0))
-                     e_widget_focus_set(o_box, 0);
-               }
-          }
-        else
-          {
-             if (e_widget_focus_get(o_box))
-               {
-                  if (!e_widget_focus_jump(o_box, 1))
-                    {
-                       e_widget_focus_set(o_content, 1);
-                       if (!e_widget_focus_get(o_content))
-                          e_widget_focus_set(o_box, 1);
-                    }
-               }
-             else
-               {
-                  if (!e_widget_focus_jump(o_content, 1))
-                     e_widget_focus_set(o_box, 1);
-               }
-          }
-     }
-   else if (((!strcmp(ev->keyname, "Return")) ||
-             (!strcmp(ev->keyname, "KP_Enter")) ||
-             (!strcmp(ev->keyname, "space"))))
-     {
-        Evas_Object *o = NULL;
-        
-        if ((o_content) && (e_widget_focus_get(o_content)))
-           o = e_widget_focused_object_get(o_content);
-        else
-           o = e_widget_focused_object_get(o_box);
-        if (o) e_widget_activate(o);
-     }            
-}            
-
-static void
-_screen_change_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Eina_List *l;
-   E_Zone *z;
-   
-   EINA_LIST_FOREACH(scon->zones, l, z)
-     {
-        if (screen == -1)
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 0);
-        else if (screen == (int)z->num)
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 0);
-        else
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 200);
-     }
-}
-
-static void
-_save_to(const char *file)
-{
-   char *extn = strrchr(file, '.');
-   char opts[256];
-   
-   if (!extn) 
-     {
-        e_util_dialog_show
-           (_("Error - Unknown format"),
-               _("File has an unspecified extension.<br>"
-                 "Please use '.jpg' or '.png' extensions<br>"
-                 "only as other formats are not<br>"
-                 "supported currently."));
-        return;
-     }
-   if (!((!strcasecmp(extn, ".png")) ||
-         (!strcasecmp(extn, ".jpg")) ||
-         (!strcasecmp(extn, ".jpeg"))))
-     {
-        e_util_dialog_show
-           (_("Error - Unknown format"),
-               _("File has an unrecognized extension.<br>"
-                 "Please use '.jpg' or '.png' extensions<br>"
-                 "only as other formats are not<br>"
-                 "supported currently."));
-        return;
-     }
-   if (!strcasecmp(extn, ".png"))
-      snprintf(opts, sizeof(opts), "compress=%i", 9);
-   else
-      snprintf(opts, sizeof(opts), "quality=%i", quality);
-   if (screen == -1)
-     {
-        evas_object_image_save(o_img, file, NULL, opts);
-     }
-   else
-     {
-        Evas_Object *o;
-        Eina_List *l;
-        E_Zone *z = NULL;
-        
-        EINA_LIST_FOREACH(scon->zones, l, z)
-          {
-             if (screen == (int)z->num) break;
-             z = NULL;
-          }
-        if (z)
-          {
-             unsigned char *src, *dst, *s, *d;
-             int sstd, dstd, y;
-             
-             o = evas_object_image_add(evas_object_evas_get(o_img));
-             evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888);
-             evas_object_image_alpha_set(o, EINA_FALSE);
-             evas_object_image_size_set(o, z->w, z->h);
-             src = evas_object_image_data_get(o_img, EINA_FALSE);
-             sstd = evas_object_image_stride_get(o_img);
-             dst = evas_object_image_data_get(o, EINA_TRUE);
-             dstd = evas_object_image_stride_get(o);
-             d = dst;
-             for (y = 0; y < z->h; y++)
-               {
-                  s = src + (sstd * y) + (z->x * 4);
-                  memcpy(d, s, z->w * 4);
-                  d += z->w * 4;
-               }
-             evas_object_image_save(o, file, NULL, opts);
-             evas_object_del(o);
-          }
-     }
-}
-
-static void
-_file_select_ok_cb(void *data __UNUSED__, E_Dialog *dia)
-{
-   const char *file;
-
-   file = e_widget_fsel_selection_path_get(o_fsel);
-   if (file) _save_to(file);
-   if (dia) e_util_defer_object_del(E_OBJECT(dia));
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-}
-
-static void
-_file_select_cancel_cb(void *data __UNUSED__, E_Dialog *dia)
-{
-   if (dia) e_util_defer_object_del(E_OBJECT(dia));
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-}
-
-static void
-_win_save_cb(void *data __UNUSED__, void *data2 __UNUSED__)
-{ 
-   E_Dialog *dia;
-   Evas_Object *o;
-   Evas_Coord mw, mh;
-  
-   dia = e_dialog_new(scon, "E", "_e_shot_fsel");
-   e_dialog_title_set(dia, _("Select screenshot save location"));
-   o = e_widget_fsel_add(dia->win->evas, "~/", "/", NULL, NULL,
-                         NULL, NULL,
-                         NULL, NULL, 1);
-   o_fsel = o;
-   evas_object_show(o);
-   e_widget_size_min_get(o, &mw, &mh);
-   e_dialog_content_set(dia, o, mw, mh);
-   e_dialog_button_add(dia, _("OK"), NULL,
-                       _file_select_ok_cb, NULL);
-   e_dialog_button_add(dia, _("Cancel"), NULL,
-                       _file_select_cancel_cb, NULL);
-   e_dialog_resizable_set(dia, 1);
-   e_win_centered_set(dia->win, 1);
-   e_dialog_show(dia);
-}
-
-static void
-_share_done(void)
-{
-   Ecore_Event_Handler *h;
-
-   EINA_LIST_FREE(handlers, h) ecore_event_handler_del(h);
-   o_label = NULL;
-   if (url_ret)
-     {
-        free(url_ret);
-        url_ret = NULL;
-     }
-   if (url_up)
-     {
-        ecore_con_url_free(url_up);
-        url_up = NULL;
-     }
-   ecore_con_url_shutdown();
-}
-
-static void
-_upload_ok_cb(void *data __UNUSED__, E_Dialog *dia)
-{
-   // ok just hides dialog and does background upload
-   o_label = NULL;
-   if (dia) e_util_defer_object_del(E_OBJECT(dia));
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-   _share_done();
-}
-
-static void
-_upload_cancel_cb(void *data __UNUSED__, E_Dialog *dia)
-{
-   if (dia) e_util_defer_object_del(E_OBJECT(dia));
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-}
-
-static Eina_Bool
-_upload_data_cb(void *data __UNUSED__, int ev_type __UNUSED__, void *event)
-{
-   Ecore_Con_Event_Url_Data *ev = event;
-   if (ev->url_con != url_up) return EINA_TRUE;
-   if ((o_label) && (ev->size < 1024))
-     {
-        char *txt = alloca(ev->size + 1);
-
-        memcpy(txt, ev->data, ev->size);
-        txt[ev->size] = 0;
-/*        
-        printf("GOT %i bytes: '%s'\n", ev->size, txt);
-        int i;
-        for (i = 0; i < ev->size; i++) printf("%02x.", ev->data[i]);
-        printf("\n");
- */
-        if (!url_ret) url_ret = strdup(txt);
-        else
-          {
-             char *n;
-             
-             n = malloc(strlen(url_ret) + ev->size + 1);
-             if (n)
-               {
-                  free(url_ret);
-                  strcpy(n, url_ret);
-                  strcat(n, txt);
-                  url_ret = n;
-               }
-          }
-     }
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_upload_progress_cb(void *data __UNUSED__, int ev_type __UNUSED__, void *event)
-{
-   Ecore_Con_Event_Url_Progress *ev = event;
-   if (ev->url_con != url_up) return EINA_TRUE;
-   if (o_label)
-     {
-        char buf[1024];
-        
-        snprintf(buf, sizeof(buf),
-                 "Uploaded %1.1fKB / %1.1fKB", 
-                 ev->up.now / 1024, 
-                 ev->up.total / 1024);
-        e_widget_label_text_set(o_label, buf);
-     }
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_upload_complete_cb(void *data __UNUSED__, int ev_type __UNUSED__, void *event)
-{
-   Ecore_Con_Event_Url_Complete *ev = event;
-   if (ev->url_con != url_up) return EINA_TRUE;
-   if (ev->status != 200)
-     {
-        e_util_dialog_show
-           (_("Error - Upload Failed"),
-               _("Upload failed with status code:<br>"
-                 "%i"),
-               ev->status);
-        _share_done();
-        return EINA_FALSE;
-     }
-   if ((o_entry) && (url_ret))
-      e_widget_entry_text_set(o_entry, url_ret);
-   _share_done();
-   return EINA_FALSE;
-}
-
-static void
-_win_share_cb(void *data __UNUSED__, void *data2 __UNUSED__)
-{
-   E_Dialog *dia;
-   Evas_Object *o, *ol;
-   Evas_Coord mw, mh;
-   char buf[PATH_MAX];
-   FILE *f;
-   
-   if (quality == 100) snprintf(buf, sizeof(buf), "/tmp/e-shot-XXXXXX.png");
-   else snprintf(buf, sizeof(buf), "/tmp/e-shot-XXXXXX.jpg");
-   if (!mkstemp(buf))
-     {
-        e_util_dialog_show
-           (_("Error - Can't create File"),
-               _("Cannot create temporary file:\n"
-                 "%s"),
-               buf);
-        if (win)
-          {
-             e_object_del(E_OBJECT(win));
-             win = NULL;
-          }
-        return;
-     }
-   _save_to(buf);
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-   f = fopen(buf, "rb");
-   if (!f)
-     {
-        // FIXME: error disp
-        return;
-     }
-   fseek(f, 0, SEEK_END);
-   fsize = ftell(f);
-   if (fsize < 1)
-     {
-        // FIXME: error disp
-        fclose(f);
-        return;
-     }
-   rewind(f);
-   if (fdata) free(fdata);
-   fdata = malloc(fsize);
-   if (!fdata)
-     {
-        // FIXME: error disp
-        fclose(f);
-        return;
-     }
-   if (fread(fdata, fsize, 1, f) != 1)
-     {
-        // FIXME: error disp
-        free(fdata);
-        fdata = NULL;
-        fclose(f);
-        return;
-     }
-   fclose(f);
-   ecore_file_unlink(buf);
-   
-   _share_done();
-   
-   if (!ecore_con_url_init())
-     {
-        // FIXME: error disp
-        free(fdata);
-        fdata = NULL;
-        return;
-     }
-   
-   handlers = eina_list_append
-      (handlers, ecore_event_handler_add
-          (ECORE_CON_EVENT_URL_DATA, _upload_data_cb, NULL));
-   handlers = eina_list_append
-      (handlers, ecore_event_handler_add
-          (ECORE_CON_EVENT_URL_PROGRESS, _upload_progress_cb, NULL));
-   handlers = eina_list_append
-      (handlers, ecore_event_handler_add
-          (ECORE_CON_EVENT_URL_COMPLETE, _upload_complete_cb, NULL));
-   
-   url_up = ecore_con_url_new("http://www.enlightenment.org/shot.php");
-   ecore_con_url_post(url_up, fdata, fsize, "application/x-e-shot");
-   
-   dia = e_dialog_new(scon, "E", "_e_shot_share");
-   e_dialog_title_set(dia, _("Uploading screenshot"));
-   
-   o = e_widget_list_add(dia->win->evas, 0, 0);
-   ol = o;
-   
-   o = e_widget_label_add(dia->win->evas, _("Uploading ..."));
-   o_label = o;
-   e_widget_list_object_append(ol, o, 0, 0, 0.5);
-   
-   o = e_widget_label_add(dia->win->evas, 
-                          _("Screenshot is available at this location:"));
-   e_widget_list_object_append(ol, o, 0, 0, 0.5);
-   
-   o = e_widget_entry_add(dia->win->evas, NULL, NULL, NULL, NULL);
-   o_entry = o;
-   e_widget_list_object_append(ol, o, 1, 0, 0.5);
-      
-   e_widget_size_min_get(ol, &mw, &mh);
-   e_dialog_content_set(dia, ol, mw, mh);
-   e_dialog_button_add(dia, _("OK"), NULL, _upload_ok_cb, NULL);
-   e_dialog_button_add(dia, _("Cancel"), NULL, _upload_cancel_cb, NULL);
-   e_dialog_resizable_set(dia, 1);
-   e_win_centered_set(dia->win, 1);
-   e_dialog_show(dia);
-}
-
-static void
-_win_cancel_cb(void *data __UNUSED__, void *data2 __UNUSED__)
-{
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-}
-
-static void
-_rect_down_cb(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
-{
-   Evas_Event_Mouse_Down *ev = event_info;
-   Eina_List *l;
-   E_Zone *z;
-   
-   if (ev->button != 1) return;
-   
-   e_widget_radio_toggle_set(o_radio_all, 0);
-   EINA_LIST_FOREACH(scon->zones, l, z)
-     {
-        if (obj == o_rectdim[z->num])
-          {
-             screen = z->num;
-             e_widget_radio_toggle_set(o_radio[z->num], 1);
-          }
-        else
-           e_widget_radio_toggle_set(o_radio[z->num], 0);
-     }
-   
-   EINA_LIST_FOREACH(scon->zones, l, z)
-     {
-        if (screen == -1)
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 0);
-        else if (screen == (int)z->num)
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 0);
-        else
-           evas_object_color_set(o_rectdim[z->num], 0, 0, 0, 200);
-     }
-}
-
-static void
-_shot_now(E_Zone *zone)
-{
-   Ecore_X_Image *img;
-   Ecore_X_Window_Attributes att;
-   unsigned char *src;
-   unsigned int *dst;
-   int bpl = 0, rows = 0, bpp = 0;
-   Evas *evas, *evas2;
-   Evas_Object *o, *oa, *op, *ol;
-   Evas_Coord w, h;
-   Evas_Modifier_Mask mask;
-   E_Radio_Group *rg;
-   
-   sman = zone->container->manager;
-   scon = zone->container;
-   memset(&att, 0, sizeof(Ecore_X_Window_Attributes));
-   ecore_x_window_attributes_get(sman->root, &att);
-   img = ecore_x_image_new(sman->w, sman->h, att.visual, att.depth);
-   ecore_x_image_get(img, sman->root, 0, 0, 0, 0, sman->w, sman->h);
-   src = ecore_x_image_data_get(img, &bpl, &rows, &bpp);
-   if (!ecore_x_image_is_argb32_get(img))
-     {
-        dst = malloc(sman->w * sman->h * sizeof(int));
-        ecore_x_image_to_argb_convert(src, bpp, bpl, att.colormap, att.visual,
-                                      0, 0, sman->w, sman->h,
-                                      dst, (sman->w * sizeof(int)), 0, 0);
-     }
-   else
-      dst = (unsigned int *)src;
-   
-   if (win) e_object_del(E_OBJECT(win));
-   win = e_win_new(e_container_current_get(e_manager_current_get()));
-   
-   evas = e_win_evas_get(win);
-   e_win_title_set(win, _("Where to put Screenshot..."));
-   e_win_delete_callback_set(win, _win_delete_cb);
-   e_win_resize_callback_set(win, _win_resize_cb);
-   e_win_dialog_set(win, 1);
-   e_win_centered_set(win, 1);
-   e_win_name_class_set(win, "E", "_shot_dialog");
-   
-   o = edje_object_add(evas);
-   o_bg = o;;
-   e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/main");
-   evas_object_move(o, 0, 0);
-   evas_object_show(o);
-   
-   o = e_widget_list_add(evas, 0, 0);
-   o_content = o;
-   e_widget_size_min_get(o, &w, &h);
-   edje_extern_object_min_size_set(o, w, h);
-   edje_object_part_swallow(o_bg, "e.swallow.content", o);
-   evas_object_show(o);
-
-   w = sman->w / 4;
-   if (w < 220) w = 220;
-   h = (w * sman->h) / sman->w;
-   
-   o = e_widget_aspect_add(evas, w, h);
-   oa = o;
-   o = e_widget_preview_add(evas, w, h);
-   op = o;
-
-   evas2 = e_widget_preview_evas_get(op);
-   
-   o = evas_object_image_filled_add(evas2);
-   o_img = o;
-   evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888);
-   evas_object_image_alpha_set(o, EINA_FALSE);
-   evas_object_image_size_set(o, sman->w, sman->h);
-   evas_object_image_data_copy_set(o, dst);
-   if (dst != (unsigned int *)src) free(dst);
-   ecore_x_image_free(img);
-   evas_object_image_data_update_add(o, 0, 0, sman->w, sman->h);
-   e_widget_preview_extern_object_set(op, o);
-   evas_object_show(o);
-
-   evas_object_show(op);
-   evas_object_show(oa);
-   
-   e_widget_aspect_child_set(oa, op);
-   e_widget_list_object_append(o_content, oa, 0, 0, 0.5);
-   
-   o = e_widget_list_add(evas, 1, 1);
-   o_hlist = o;
-
-   o = e_widget_framelist_add(evas, _("Quality"), 0);
-   ol = o;
-
-   rg = e_widget_radio_group_new(&quality);
-   o = e_widget_radio_add(evas, _("Perfect"), 100, rg);
-   e_widget_framelist_object_append(ol, o);
-   o = e_widget_radio_add(evas, _("High"), 90, rg);
-   e_widget_framelist_object_append(ol, o);
-   o = e_widget_radio_add(evas, _("Medium"), 70, rg);
-   e_widget_framelist_object_append(ol, o);
-   o = e_widget_radio_add(evas, _("Low"), 50, rg);
-   e_widget_framelist_object_append(ol, o);
-   
-   e_widget_list_object_append(o_hlist, ol, 1, 0, 0.5);
-
-   screen = -1;
-   if (eina_list_count(scon->zones) > 1)
-     {
-        Eina_List *l;
-        E_Zone *z;
-        int i;
-        
-        o = e_widget_framelist_add(evas, _("Screen"), 0);
-        ol = o;
-        
-        rg = e_widget_radio_group_new(&screen);
-        o = e_widget_radio_add(evas, _("All"), -1, rg);
-        o_radio_all = o;
-        evas_object_smart_callback_add(o, "changed", _screen_change_cb, NULL);
-        e_widget_framelist_object_append(ol, o);
-        i = 0;
-        EINA_LIST_FOREACH(scon->zones, l, z)
-          {
-             char buf[32];
-
-             if (z->num >= MAXZONES) continue;
-             snprintf(buf, sizeof(buf), "%i", z->num);
-             o = e_widget_radio_add(evas, buf, z->num, rg);
-             o_radio[z->num] = o;
-             evas_object_smart_callback_add(o, "changed", _screen_change_cb, NULL);
-             e_widget_framelist_object_append(ol, o);
-             
-             o = evas_object_rectangle_add(evas2);
-             evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
-                                            _rect_down_cb, NULL);
-             o_rectdim[z->num] = o;
-             evas_object_color_set(o, 0, 0, 0, 0);
-             evas_object_show(o);
-             evas_object_geometry_get(o_img, NULL, NULL, &w, &h);
-             evas_object_move(o, 
-                              (z->x * w) / sman->w,
-                              (z->y * h) / sman->h);
-             evas_object_resize(o, 
-                                (z->w * w) / sman->w,
-                                (z->h * h) / sman->h);
-             i++;
-          }
-        
-        e_widget_list_object_append(o_hlist, ol, 1, 0, 0.5);
-     }
-   
-   e_widget_list_object_append(o_content, o_hlist, 0, 0, 0.5);
-
-   o = o_content;
-   e_widget_size_min_get(o, &w, &h);
-   edje_extern_object_min_size_set(o, w, h);
-   edje_object_part_swallow(o_bg, "e.swallow.content", o);
-   evas_object_show(o);
-   
-   ///////////////////////////////////////////////////////////////////////
-   
-   o = e_widget_list_add(evas, 1, 1);
-   o_box = o;
-   e_widget_on_focus_hook_set(o, _on_focus_cb, NULL);
-   edje_object_part_swallow(o_bg, "e.swallow.buttons", o);
-
-   o = e_widget_button_add(evas, _("Save"), NULL, _win_save_cb, win, NULL);
-   e_widget_list_object_append(o_box, o, 1, 0, 0.5);
-   o = e_widget_button_add(evas, _("Share"), NULL, _win_share_cb, win, NULL);
-   e_widget_list_object_append(o_box, o, 1, 0, 0.5);
-   o = e_widget_button_add(evas, _("Cancel"), NULL, _win_cancel_cb, win, NULL);
-   e_widget_list_object_append(o_box, o, 1, 0, 0.5);
-   
-   o = o_box;
-   e_widget_size_min_get(o, &w, &h);
-   edje_extern_object_min_size_set(o, w, h);
-   edje_object_part_swallow(o_bg, "e.swallow.buttons", o);
-   
-   o = evas_object_rectangle_add(evas);
-   o_event = o;
-   mask = 0;
-   if (!evas_object_key_grab(o, "Tab", mask, ~mask, 0)) printf("grab err\n");
-   mask = evas_key_modifier_mask_get(evas, "Shift");
-   if (!evas_object_key_grab(o, "Tab", mask, ~mask, 0)) printf("grab err\n");
-   mask = 0;
-   if (!evas_object_key_grab(o, "Return", mask, ~mask, 0)) printf("grab err\n");
-   mask = 0;
-   if (!evas_object_key_grab(o, "KP_Enter", mask, ~mask, 0)) printf("grab err\n");
-   evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _key_down_cb, NULL);
-   
-   edje_object_size_min_calc(o_bg, &w, &h);
-   evas_object_resize(o_bg, w, h);
-   e_win_resize(win, w, h);
-   e_win_size_min_set(win, w, h);
-   e_win_size_max_set(win, 99999, 99999);
-   e_win_show(win);
-   e_win_border_icon_set(win, "enlightenment/shot");
-   
-   if (!e_widget_focus_get(o_bg)) e_widget_focus_set(o_box, 1);
-}
-
-static Eina_Bool
-_shot_delay(void *data)
-{
-   timer = NULL;
-   _shot_now(data);
-   return EINA_FALSE;
-}
-
-static void
-_shot(E_Zone *zone)
-{
-   if (timer) ecore_timer_del(timer);
-   timer = ecore_timer_add(1.0, _shot_delay, zone);
-}
-
-static void
-_e_mod_menu_cb(void *data __UNUSED__, E_Menu *m, E_Menu_Item *mi __UNUSED__)
-{
-   if (m->zone) _shot(m->zone);
-}
-
-static void
-_e_mod_action_cb(E_Object *obj, const char *params __UNUSED__)
-{
-   E_Zone *zone = NULL;
-   
-   if (obj)
-     {
-        if (obj->type == E_MANAGER_TYPE)
-           zone = e_util_zone_current_get((E_Manager *)obj);
-        else if (obj->type == E_CONTAINER_TYPE)
-           zone = e_util_zone_current_get(((E_Container *)obj)->manager);
-        else if (obj->type == E_ZONE_TYPE)
-           zone = ((E_Zone *)obj);
-        else
-           zone = e_util_zone_current_get(e_manager_current_get());
-     }
-   if (!zone) zone = e_util_zone_current_get(e_manager_current_get());
-   if (!zone) return;
-   if (timer)
-      {
-         ecore_timer_del(timer);
-         timer = NULL;
-      }
-   _shot_now(zone);
-}
-
-static void
-_e_mod_menu_add(void *data __UNUSED__, E_Menu *m)
-{
-   E_Menu_Item *mi;
-   
-   mi = e_menu_item_new(m);
-   e_menu_item_label_set(mi, _("Take Screenshot"));
-   e_util_menu_item_theme_icon_set(mi, "screenshot");
-   e_menu_item_callback_set(mi, _e_mod_menu_cb, NULL);
-}
-
-/* module setup */
-EAPI E_Module_Api e_modapi =
-{
-   E_MODULE_API_VERSION,
-     "Shot"
-};
-
-EAPI void *
-e_modapi_init(E_Module *m)
-{
-   e_module_delayed_set(m, 1);
-   
-   shot_module = m;
-   act = e_action_add("shot");
-   if (act)
-     {
-        act->func.go = _e_mod_action_cb;
-        e_action_predef_name_set(_("Screen"), _("Take Screenshot"),
-                                 "shot", NULL, NULL, 0);
-     }
-   maug = e_int_menus_menu_augmentation_add_sorted
-      ("main/2",  _("Take Screenshot"), _e_mod_menu_add, NULL, NULL, NULL);
-   return m;
-}
-
-EAPI int
-e_modapi_shutdown(E_Module *m __UNUSED__)
-{
-   _share_done();
-   if (win)
-     {
-        e_object_del(E_OBJECT(win));
-        win = NULL;
-     }
-   if (timer)
-     {
-        ecore_timer_del(timer);
-        timer = NULL;
-     }
-   if (maug)
-     {
-        e_int_menus_menu_augmentation_del("main/2", maug);
-        maug = NULL;
-     }
-   if (act)
-     {
-        e_action_predef_name_del(_("Screen"), _("Take Screenshot"));
-        e_action_del("shot");
-        act = NULL;
-     }
-   shot_module = NULL;
-   return 1;
-}
-
-EAPI int
-e_modapi_save(E_Module *m __UNUSED__)
-{
-   return 1;
-}
diff --git a/src/modules/shot/.svn/text-base/e_mod_main.h.svn-base b/src/modules/shot/.svn/text-base/e_mod_main.h.svn-base
deleted file mode 100755 (executable)
index 4adf2f1..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef E_MOD_MAIN_H
-#define E_MOD_MAIN_H
-
-EAPI extern E_Module_Api e_modapi;
-
-EAPI void *e_modapi_init     (E_Module *m);
-EAPI int   e_modapi_shutdown (E_Module *m);
-EAPI int   e_modapi_save     (E_Module *m);
-
-#endif
diff --git a/src/modules/shot/.svn/text-base/module.desktop.in.svn-base b/src/modules/shot/.svn/text-base/module.desktop.in.svn-base
deleted file mode 100755 (executable)
index d13feb9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Type=Link
-Name=Shot
-Name[fr]=Déclic
-Name[ko]=스크린샷
-Icon=e-module-shot
-X-Enlightenment-ModuleType=utils
-Comment=Simple screenshot+save/upload module
-Comment[fr]=Module pour faire des captures d'écran et les partager.
-Comment[it]=Semplice modulo per il salvataggio e l'upload di istantanee del desktop.
-Comment[ko]=간단한 스크린샷 저장/공유 모듈
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)