From da657a5ef0c9d2b780cbd7e26880058fe09acf4a Mon Sep 17 00:00:00 2001 From: Seunghun Lee Date: Tue, 21 Aug 2012 21:12:51 +0900 Subject: [PATCH] Migrating source code to RSA from private. --- COPYING | 2 +- config/Makefile.am | 0 config/illume/Makefile.am | 0 config/profile.src | 0 config/samsung/Makefile.am | 0 config/samsung/e.src | 0 config/samsung/icon.png | Bin config/samsung/profile.desktop | 0 configure.ac | 5 + data/etc/Makefile.am | 0 data/images/test.svg | 0 data/themes/Makefile.am | 0 .../images/added_images/DM_Internet_Address_bg.png | Bin 0 -> 3706 bytes .../images/added_images/DM_Internet_Scroll_01.png | Bin 0 -> 2884 bytes .../added_images/DM_Internet_Scroll_Down.png | Bin 0 -> 3020 bytes .../added_images/DM_Internet_Scroll_Increase.png | Bin 0 -> 2880 bytes .../added_images/DM_Internet_Scroll_Left_h.png | Bin 0 -> 2957 bytes .../added_images/DM_Internet_Scroll_Middle.png | Bin 0 -> 2829 bytes .../added_images/DM_Internet_Scroll_Middle_h.png | Bin 0 -> 2827 bytes .../added_images/DM_Internet_Scroll_Right_h.png | Bin 0 -> 2967 bytes .../images/added_images/DM_Internet_Scroll_Up.png | Bin 0 -> 2953 bytes .../added_images/DM_Internet_Scroll_h_01.png | Bin 0 -> 2886 bytes .../images/added_images/DM_Internet_Title_bg.png | Bin 0 -> 2855 bytes data/themes/images/added_images/DM_Internet_bg.png | Bin 0 -> 3902 bytes .../added_images/DM_Internet_icon_Reduction.png | Bin 0 -> 2819 bytes .../images/added_images/DM_Internet_icon_Zoom.png | Bin 0 -> 2846 bytes .../images/added_images/DM_Internet_icon_close.png | Bin 0 -> 2872 bytes .../images/added_images/DM_Internet_icon_next.png | Bin 0 -> 2964 bytes .../added_images/DM_Internet_icon_previous.png | Bin 0 -> 2980 bytes .../themes/images/added_images/DM_mouse_cursor.png | Bin 0 -> 3293 bytes data/themes/images/added_images/DM_tab_normal.png | Bin 0 -> 2916 bytes data/themes/images/added_images/DM_tab_over.png | Bin 0 -> 2910 bytes data/themes/images/added_images/DM_tab_press.png | Bin 0 -> 2911 bytes data/themes/images/added_images/e17_ibar_bg_v.png | Bin 0 -> 168 bytes .../themes/images/added_images/e17_ibar_over_v.png | Bin 0 -> 906 bytes .../images/added_images/e17_pointer_mono.png | Bin 0 -> 2922 bytes .../added_images/e17_scrollbar_hdrag_thumb.png | Bin 0 -> 113 bytes .../added_images/e17_scrollbar_vdrag_thumb.png | Bin 0 -> 101 bytes data/themes/images/added_images/focus.png | Bin 0 -> 622 bytes data/themes/images/clock/DM_Clock_time.png | Bin 0 -> 3692 bytes data/themes/images/clock/DM_Clock_time_0.png | Bin 0 -> 7303 bytes data/themes/images/clock/DM_Clock_time_1.png | Bin 0 -> 3805 bytes data/themes/images/clock/DM_Clock_time_2.png | Bin 0 -> 7129 bytes data/themes/images/clock/DM_Clock_time_3.png | Bin 0 -> 7753 bytes data/themes/images/clock/DM_Clock_time_4.png | Bin 0 -> 6198 bytes data/themes/images/clock/DM_Clock_time_5.png | Bin 0 -> 7073 bytes data/themes/images/clock/DM_Clock_time_6.png | Bin 0 -> 8285 bytes data/themes/images/clock/DM_Clock_time_7.png | Bin 0 -> 5548 bytes data/themes/images/clock/DM_Clock_time_8.png | Bin 0 -> 9046 bytes data/themes/images/clock/DM_Clock_time_9.png | Bin 0 -> 8244 bytes data/themes/images/clock/DM_Clock_time_AM.png | Bin 0 -> 5668 bytes data/themes/images/clock/DM_Clock_time_PM.png | Bin 0 -> 5386 bytes data/themes/images/clock/DM_Clock_time_center.png | Bin 0 -> 3937 bytes data/themes/images/flip_0b.png | Bin data/themes/images/flip_0t.png | Bin data/themes/images/flip_1b.png | Bin data/themes/images/flip_1t.png | Bin data/themes/images/flip_2b.png | Bin data/themes/images/flip_2t.png | Bin data/themes/images/flip_3b.png | Bin data/themes/images/flip_3t.png | Bin data/themes/images/flip_4b.png | Bin data/themes/images/flip_4t.png | Bin data/themes/images/flip_5b.png | Bin data/themes/images/flip_5t.png | Bin data/themes/images/flip_6b.png | Bin data/themes/images/flip_6t.png | Bin data/themes/images/flip_7b.png | Bin data/themes/images/flip_7t.png | Bin data/themes/images/flip_8b.png | Bin data/themes/images/flip_8t.png | Bin data/themes/images/flip_9b.png | Bin data/themes/images/flip_9t.png | Bin data/themes/images/flip_amb.png | Bin data/themes/images/flip_amt.png | Bin data/themes/images/flip_b.png | Bin data/themes/images/flip_base.png | Bin data/themes/images/flip_base_shad.png | Bin data/themes/images/flip_colon.png | Bin data/themes/images/flip_pmb.png | Bin data/themes/images/flip_pmt.png | Bin data/themes/images/flip_shad.png | Bin data/themes/images/flip_t.png | Bin data/themes/images/icon_gadget.png | Bin data/themes/images/icon_look.png | Bin data/themes/images/icon_screenshot.png | Bin data/themes/images/t0-sh.png | Bin data/themes/images/t0.png | Bin data/themes/images/t1-sh.png | Bin data/themes/images/t1.png | Bin data/themes/images/t2.png | Bin data/themes/samsung.edc | 14779 +++++++++++++++++-- debian/changelog | 186 + debian/e17.install | 1 + debian/e17.postinst | 2 + debian/rules | 2 +- doc/cache.txt | 0 doc/illume2.html | 0 packaging/e17.spec | 10 +- src/bin/e_border.c | 126 +- src/bin/e_border.h | 4 + src/bin/e_config.c | 46 + src/bin/e_config.h | 50 +- src/bin/e_container.c | 70 +- src/bin/e_container.h | 2 + src/bin/e_desk.c | 148 + src/bin/e_desk.h | 12 + src/bin/e_fm/e_fm_ipc.h | 0 src/bin/e_fm/e_fm_main_hal.h | 0 src/bin/e_fm/e_fm_main_udisks.h | 0 src/bin/e_gadcon.c | 4 + src/bin/e_hints.c | 7 + src/bin/e_main.c | 2 + src/bin/e_manager.c | 31 +- src/bin/e_manager.h | 13 + src/bin/e_module.c | 11 + src/bin/e_utils.c | 21 + src/bin/e_utils.h | 4 + src/modules/bluez/module.desktop.in | 0 src/modules/clock/module.desktop.in | 0 src/modules/conf/module.desktop.in | 0 src/modules/conf_applications/module.desktop.in | 0 src/modules/conf_dialogs/module.desktop.in | 0 src/modules/conf_display/e_int_config_desk.c | 37 + src/modules/conf_edgebindings/module.desktop.in | 0 src/modules/conf_interaction/module.desktop.in | 0 src/modules/conf_intl/module.desktop.in | 0 src/modules/conf_keybindings/module.desktop.in | 0 src/modules/conf_menus/module.desktop.in | 0 src/modules/conf_paths/module.desktop.in | 0 src/modules/conf_performance/module.desktop.in | 0 src/modules/conf_shelves/module.desktop.in | 0 src/modules/conf_wallpaper2/module.desktop.in | 0 .../conf_window_manipulation/module.desktop.in | 0 .../conf_window_remembers/module.desktop.in | 0 src/modules/connman/module.desktop.in | 0 src/modules/cpufreq/module.desktop.in | 0 src/modules/dropshadow/module.desktop.in | 0 src/modules/everything/module.desktop.in | 0 src/modules/fileman/module.desktop.in | 0 src/modules/fileman_opinfo/module.desktop.in | 0 src/modules/gadman/e_mod_gadman.c | 140 +- src/modules/ibar/e_mod_config.c | 23 + src/modules/ibar/e_mod_main.c | 62 +- src/modules/ibar/e_mod_main.h | 1 + src/modules/illume-keyboard/module.desktop.in | 0 src/modules/illume-mode-toggle/module.desktop.in | 0 src/modules/illume-softkey/module.desktop.in | 0 src/modules/layout/module.desktop.in | 0 src/modules/msgbus/module.desktop.in | 0 src/modules/ofono/module.desktop.in | 0 src/modules/pager/module.desktop.in | 0 src/modules/shot/.svn/all-wcprops | 41 - src/modules/shot/.svn/dir-prop-base | 9 - src/modules/shot/.svn/entries | 232 - .../shot/.svn/prop-base/e-module-shot.edj.svn-base | 5 - .../shot/.svn/text-base/.cvsignore.svn-base | 7 - .../shot/.svn/text-base/Makefile.am.svn-base | 28 - .../shot/.svn/text-base/e-module-shot.edj.svn-base | Bin 9475 -> 0 bytes .../shot/.svn/text-base/e_mod_main.c.svn-base | 839 -- .../shot/.svn/text-base/e_mod_main.h.svn-base | 10 - .../shot/.svn/text-base/module.desktop.in.svn-base | 11 - src/modules/shot/e-module-shot.edj | Bin src/modules/start/module.desktop.in | 0 src/modules/syscon/module.desktop.in | 0 src/modules/systray/module.desktop.in | 0 src/modules/winlist/module.desktop.in | 0 167 files changed, 14630 insertions(+), 2353 deletions(-) mode change 100755 => 100644 config/Makefile.am mode change 100755 => 100644 config/illume/Makefile.am mode change 100755 => 100644 config/profile.src mode change 100755 => 100644 config/samsung/Makefile.am mode change 100755 => 100644 config/samsung/e.src mode change 100755 => 100644 config/samsung/icon.png mode change 100755 => 100644 config/samsung/profile.desktop mode change 100755 => 100644 data/etc/Makefile.am mode change 100755 => 100644 data/images/test.svg mode change 100755 => 100644 data/themes/Makefile.am create mode 100644 data/themes/images/added_images/DM_Internet_Address_bg.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_01.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Down.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Increase.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Left_h.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Middle.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Middle_h.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Right_h.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_Up.png create mode 100644 data/themes/images/added_images/DM_Internet_Scroll_h_01.png create mode 100644 data/themes/images/added_images/DM_Internet_Title_bg.png create mode 100644 data/themes/images/added_images/DM_Internet_bg.png create mode 100644 data/themes/images/added_images/DM_Internet_icon_Reduction.png create mode 100644 data/themes/images/added_images/DM_Internet_icon_Zoom.png create mode 100644 data/themes/images/added_images/DM_Internet_icon_close.png create mode 100644 data/themes/images/added_images/DM_Internet_icon_next.png create mode 100644 data/themes/images/added_images/DM_Internet_icon_previous.png create mode 100644 data/themes/images/added_images/DM_mouse_cursor.png create mode 100644 data/themes/images/added_images/DM_tab_normal.png create mode 100644 data/themes/images/added_images/DM_tab_over.png create mode 100644 data/themes/images/added_images/DM_tab_press.png create mode 100644 data/themes/images/added_images/e17_ibar_bg_v.png create mode 100644 data/themes/images/added_images/e17_ibar_over_v.png create mode 100644 data/themes/images/added_images/e17_pointer_mono.png create mode 100644 data/themes/images/added_images/e17_scrollbar_hdrag_thumb.png create mode 100644 data/themes/images/added_images/e17_scrollbar_vdrag_thumb.png create mode 100644 data/themes/images/added_images/focus.png create mode 100644 data/themes/images/clock/DM_Clock_time.png create mode 100644 data/themes/images/clock/DM_Clock_time_0.png create mode 100644 data/themes/images/clock/DM_Clock_time_1.png create mode 100644 data/themes/images/clock/DM_Clock_time_2.png create mode 100644 data/themes/images/clock/DM_Clock_time_3.png create mode 100644 data/themes/images/clock/DM_Clock_time_4.png create mode 100644 data/themes/images/clock/DM_Clock_time_5.png create mode 100644 data/themes/images/clock/DM_Clock_time_6.png create mode 100644 data/themes/images/clock/DM_Clock_time_7.png create mode 100644 data/themes/images/clock/DM_Clock_time_8.png create mode 100644 data/themes/images/clock/DM_Clock_time_9.png create mode 100644 data/themes/images/clock/DM_Clock_time_AM.png create mode 100644 data/themes/images/clock/DM_Clock_time_PM.png create mode 100644 data/themes/images/clock/DM_Clock_time_center.png mode change 100755 => 100644 data/themes/images/flip_0b.png mode change 100755 => 100644 data/themes/images/flip_0t.png mode change 100755 => 100644 data/themes/images/flip_1b.png mode change 100755 => 100644 data/themes/images/flip_1t.png mode change 100755 => 100644 data/themes/images/flip_2b.png mode change 100755 => 100644 data/themes/images/flip_2t.png mode change 100755 => 100644 data/themes/images/flip_3b.png mode change 100755 => 100644 data/themes/images/flip_3t.png mode change 100755 => 100644 data/themes/images/flip_4b.png mode change 100755 => 100644 data/themes/images/flip_4t.png mode change 100755 => 100644 data/themes/images/flip_5b.png mode change 100755 => 100644 data/themes/images/flip_5t.png mode change 100755 => 100644 data/themes/images/flip_6b.png mode change 100755 => 100644 data/themes/images/flip_6t.png mode change 100755 => 100644 data/themes/images/flip_7b.png mode change 100755 => 100644 data/themes/images/flip_7t.png mode change 100755 => 100644 data/themes/images/flip_8b.png mode change 100755 => 100644 data/themes/images/flip_8t.png mode change 100755 => 100644 data/themes/images/flip_9b.png mode change 100755 => 100644 data/themes/images/flip_9t.png mode change 100755 => 100644 data/themes/images/flip_amb.png mode change 100755 => 100644 data/themes/images/flip_amt.png mode change 100755 => 100644 data/themes/images/flip_b.png mode change 100755 => 100644 data/themes/images/flip_base.png mode change 100755 => 100644 data/themes/images/flip_base_shad.png mode change 100755 => 100644 data/themes/images/flip_colon.png mode change 100755 => 100644 data/themes/images/flip_pmb.png mode change 100755 => 100644 data/themes/images/flip_pmt.png mode change 100755 => 100644 data/themes/images/flip_shad.png mode change 100755 => 100644 data/themes/images/flip_t.png mode change 100755 => 100644 data/themes/images/icon_gadget.png mode change 100755 => 100644 data/themes/images/icon_look.png mode change 100755 => 100644 data/themes/images/icon_screenshot.png mode change 100755 => 100644 data/themes/images/t0-sh.png mode change 100755 => 100644 data/themes/images/t0.png mode change 100755 => 100644 data/themes/images/t1-sh.png mode change 100755 => 100644 data/themes/images/t1.png mode change 100755 => 100644 data/themes/images/t2.png mode change 100755 => 100644 data/themes/samsung.edc mode change 100755 => 100644 doc/cache.txt mode change 100755 => 100644 doc/illume2.html mode change 100755 => 100644 src/bin/e_fm/e_fm_ipc.h mode change 100755 => 100644 src/bin/e_fm/e_fm_main_hal.h mode change 100755 => 100644 src/bin/e_fm/e_fm_main_udisks.h mode change 100755 => 100644 src/modules/bluez/module.desktop.in mode change 100755 => 100644 src/modules/clock/module.desktop.in mode change 100755 => 100644 src/modules/conf/module.desktop.in mode change 100755 => 100644 src/modules/conf_applications/module.desktop.in mode change 100755 => 100644 src/modules/conf_dialogs/module.desktop.in mode change 100755 => 100644 src/modules/conf_edgebindings/module.desktop.in mode change 100755 => 100644 src/modules/conf_interaction/module.desktop.in mode change 100755 => 100644 src/modules/conf_intl/module.desktop.in mode change 100755 => 100644 src/modules/conf_keybindings/module.desktop.in mode change 100755 => 100644 src/modules/conf_menus/module.desktop.in mode change 100755 => 100644 src/modules/conf_paths/module.desktop.in mode change 100755 => 100644 src/modules/conf_performance/module.desktop.in mode change 100755 => 100644 src/modules/conf_shelves/module.desktop.in mode change 100755 => 100644 src/modules/conf_wallpaper2/module.desktop.in mode change 100755 => 100644 src/modules/conf_window_manipulation/module.desktop.in mode change 100755 => 100644 src/modules/conf_window_remembers/module.desktop.in mode change 100755 => 100644 src/modules/connman/module.desktop.in mode change 100755 => 100644 src/modules/cpufreq/module.desktop.in mode change 100755 => 100644 src/modules/dropshadow/module.desktop.in mode change 100755 => 100644 src/modules/everything/module.desktop.in mode change 100755 => 100644 src/modules/fileman/module.desktop.in mode change 100755 => 100644 src/modules/fileman_opinfo/module.desktop.in mode change 100755 => 100644 src/modules/illume-keyboard/module.desktop.in mode change 100755 => 100644 src/modules/illume-mode-toggle/module.desktop.in mode change 100755 => 100644 src/modules/illume-softkey/module.desktop.in mode change 100755 => 100644 src/modules/layout/module.desktop.in mode change 100755 => 100644 src/modules/msgbus/module.desktop.in mode change 100755 => 100644 src/modules/ofono/module.desktop.in mode change 100755 => 100644 src/modules/pager/module.desktop.in delete mode 100755 src/modules/shot/.svn/all-wcprops delete mode 100755 src/modules/shot/.svn/dir-prop-base delete mode 100755 src/modules/shot/.svn/entries delete mode 100755 src/modules/shot/.svn/prop-base/e-module-shot.edj.svn-base delete mode 100755 src/modules/shot/.svn/text-base/.cvsignore.svn-base delete mode 100755 src/modules/shot/.svn/text-base/Makefile.am.svn-base delete mode 100755 src/modules/shot/.svn/text-base/e-module-shot.edj.svn-base delete mode 100755 src/modules/shot/.svn/text-base/e_mod_main.c.svn-base delete mode 100755 src/modules/shot/.svn/text-base/e_mod_main.h.svn-base delete mode 100755 src/modules/shot/.svn/text-base/module.desktop.in.svn-base mode change 100755 => 100644 src/modules/shot/e-module-shot.edj mode change 100755 => 100644 src/modules/start/module.desktop.in mode change 100755 => 100644 src/modules/syscon/module.desktop.in mode change 100755 => 100644 src/modules/systray/module.desktop.in mode change 100755 => 100644 src/modules/winlist/module.desktop.in diff --git a/COPYING b/COPYING index 7625f00..4556b54 100644 --- 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. diff --git a/config/Makefile.am b/config/Makefile.am old mode 100755 new mode 100644 diff --git a/config/illume/Makefile.am b/config/illume/Makefile.am old mode 100755 new mode 100644 diff --git a/config/profile.src b/config/profile.src old mode 100755 new mode 100644 diff --git a/config/samsung/Makefile.am b/config/samsung/Makefile.am old mode 100755 new mode 100644 diff --git a/config/samsung/e.src b/config/samsung/e.src old mode 100755 new mode 100644 diff --git a/config/samsung/icon.png b/config/samsung/icon.png old mode 100755 new mode 100644 diff --git a/config/samsung/profile.desktop b/config/samsung/profile.desktop old mode 100755 new mode 100644 diff --git a/configure.ac b/configure.ac index 0304d74..e3601d2 100644 --- a/configure.ac +++ b/configure.ac @@ -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, diff --git a/data/etc/Makefile.am b/data/etc/Makefile.am old mode 100755 new mode 100644 diff --git a/data/images/test.svg b/data/images/test.svg old mode 100755 new mode 100644 diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am old mode 100755 new mode 100644 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 index 0000000000000000000000000000000000000000..bd40659a3f11bfa4b760fc3d6d84ee619dba8aa4 GIT binary patch literal 3706 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 Y09e{rjvZ6UF8}}l07*qoM6N<$g6!1fRsaA1 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..2a7aa963fd3308a1f56057ee21be8799f5a02eeb GIT binary patch literal 2884 zcmV-K3%m4*P)00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001QNklqa8Ph|KmETu|8Qu|5Q-P2WP zRF#~wvPg{4n3R$_=kVSmBJ?iw{$`AU$ibZRlUkqb`-=xa2w`c(+6~~6e&v>K>5EiK iSt_?y0Wkku;~W4^ax|$-Gx^m30000004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGf6951U69E94oEQKA0R2fs zK~y+TjZ(P{gfI{sULgnpiG+ZRfC$k5$} zaU3H}QxrvkEXz=qr4W2KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0001MNklG5BR e0U{a|{s91}xPMo><2pJ30000{P)A00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0002ENkl#cpX?WnAQ&j-WOhkMy5fKpp0OolHAR_GH;|}NCIF4mm zUYi_>VHm2avetg0X_|_nsOvh*vUkMHecxMa^E^+IKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000uNklKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000sNklQMfNjpH1kZNX-b52zy39{Bgx*LsOyzk@Q di|oDe3;>&W3J&>Oo`wJb002ovPDHLkV1hw;KTQAt literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..a2642b55dd0020975c70997450bdeb2c7f1f3d61 GIT binary patch literal 2967 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 N002ovPDHLkV1lFefSUjS literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..e41c03b921c60f860c02824c7eee4728716a259b GIT binary patch literal 2953 zcmV;43wHF0P)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHz3$DNjUR8-d%htIutdZEoQ0#b(FyTAa_ zdy`&8VVD_UC<6{NG_fI~0ue<-nj%P0#DLLIBvwSR5EN9f2P6n6F&ITuEN@2Ei>|D^ z_ww@lRz|vC zuzLs)$;-`!o*{AqUjza0dRV*yaMRE;fKCVhpQKsoe1Yhg01=zBIT!&C1$=TK@rP|Ibo3vKKm@PqnO#LJhq6%Ij6Hz*<$V$@wQAMN5qJ)hzm2h zoGcOF60t^#FqJFfH{#e-4l@G)6iI9sa9D{VHW4w29}?su;^hF~NC{tY+*d5%WDCTX za!E_i;d2ub1#}&jF5T4HnnCyEWTkKf0>c0%E1Ah>(_PY1)0w;+02c53Su*0<(nUqK zG_|(0G&D0Z{i;y^b@OjZ+}lNZ8Th$p5Uu}MTtq^NHl*T1?CO*}7&0ztZsv2j*bmJyf3G7=Z`5B*PvzoDiKdLpOAxi2$L0#SX*@cY z_n(^h55xYX#km%V()bZjV~l{*bt*u9?FT3d5g^g~#a;iSZ@&02Abxq_DwB(I|L-^b zXThc7C4-yrInE_0gw7K3GZ**7&k~>k0Z0NWkO#^@9q0fwx1%qj zZ=)yBuQ3=54Wo^*!gyjLF-e%Um=erBOdIALW)L%unZshS@>qSW9o8Sq#0s#5*edK% z>{;v(b^`kbN5rY%%y90wC>#%$kE_5P!JWYk;U;klcqzOl-UjcFXXA75rT9jCH~u<) z0>40zCTJ7v2qAyk54cquI@7b&LHdZ`+zlTss6bJ7%PQ)z$cROu4wBhpu-r)01) zS~6}jY?%U?gEALn#wiFzo#H}aQ8rT=DHkadR18&{>P1bW7E`~Y4p3)hWn`DhhRJ5j z*2tcg9i<^OEt(fCg;q*CP8+7ZTcWhYX$fb^_9d-LhL+6BEtPYWVlfKTBusSTASKKb%HuWJzl+By+?gkLq)?+BTu761 zjmyXF)a;mc^>(B7bo*HQ1NNg1st!zt28YLv>W*y3CdWx9U8f|cqfXDAO`Q48?auQq zHZJR2&bcD49Ip>EY~kKEPV6Wm+eXFV)D)_R=tM0@&p?(!V*Qu1PXHG9o^ zTY0bZ?)4%01p8F`JoeS|<@=<@RE7GY07EYX@lwd>4oW|Yi!o+Su@M`;WuSK z8LKk71XR(_RKHM1xJ5XYX`fk>`6eqY>qNG6HZQwBM=xi4&Sb88?zd}EYguc1@>KIS z<&CX#T35dwS|7K*XM_5Nf(;WJJvJWRMA($P>8E^?{IdL4o5MGE7bq2MEEwP7v8AO@ zqL5!WvekBL-8R%V?zVyL=G&{be=K4bT`e{#t|)$A!YaA?jp;X)-+bB;zhj`(vULAW z%ue3U;av{94wp%n<(7@__S@Z2PA@Mif3+uO&y|X06?J#oSi8M;ejj_^(0<4Lt#wLu#dYrva1Y$6_o(k^&}yhSh&h;f@JVA>W8b%o zZ=0JGnu?n~9O4}sJsfnnx7n(>`H13?(iXTy*fM=I`sj`CT)*pTHEgYKqqP+u1IL8N zo_-(u{qS+0<2@%BCt82d{Gqm;(q7a7b>wu+b|!X?c13m#p7cK1({0<`{-e>4hfb-U zsyQuty7Ua;Ou?B?XLHZaol8GAb3Wnxcu!2v{R_`T4=x`(GvqLI{-*2AOSimk zUAw*F_TX^n@STz9kDQ z$NC=!KfXWC8h`dn#xL(D3Z9UkR7|Q&Hcy#Notk!^zVUSB(}`#4&lYA1f0h2V_PNgU zAAWQEt$#LRcH#y9#i!p(Udq2b^lI6wp1FXzN3T;~FU%Lck$-deE#qz9yYP3D3t8{6 z?<+s(e(3(_^YOu_)K8!O1p}D#{JO;G(*OVf32;bRa{vGf6951U69E94oEQKA0J=#; zK~y+T-I7rXgdh-xf42lr5E1m^qaMoZL{A+e=n@{ITXcaS)ZGzW+RTT2*q0p`Mo0c{ z#!fk literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..923fad7bd3d79e305b672728f7a905eb809ddaa1 GIT binary patch literal 2886 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..96b0f74eceadd7a51171644b81c43add3089a36d GIT binary patch literal 2855 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 FV1fckOA`P9 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..73a93348bb75909ae1176e13aa246f6a0795a3b5 GIT binary patch literal 3902 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 M07*qoM6N<$g5;)7Qvd(} literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..3295ff1cfac640f3120da6c1d98bb1b55171ebda GIT binary patch literal 2819 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..80f0a0360812b0cfb600cf2cb2de9b18548d0d8f GIT binary patch literal 2872 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 KMNUMnLSTYDD|?Fo literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..223ef6b77675c5eb39ebae4956a4d0fd3ed89e36 GIT binary patch literal 2980 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..d3daba9653cd2584fecf39d20c06a419645c2e71 GIT binary patch literal 2916 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..0c26875a65cec5a8a138e9882c6dc45c1e6db267 GIT binary patch literal 2911 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 JPDHLkV1k8-WwihR literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..c1288d66f556497de8a9c061fa39649b12c7106f GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^20-kGV6ZSJlhEuOA^F6*2UngB8oDP8~o literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..37007f9dfb5eb2a71eed654c07a0bd106763e80b GIT binary patch literal 906 zcmV;519kj~P)jO`?)Razo8QITNRMYmm52&vD}O}Bjkc1Sz~ zh;=2Np(|Fr0PO}LA+;-5phEu$X<`qH+<~cylN3l|Q;&4z#2F{&+t3kFe22<8 zuO$MRqo(lNc7k(OBK2Y<0R=?BGH?%Q0`Wg4;Q);~S|E}4UEl)vD#yN0)MUOq0@}b6 z-~{*te3OfkOcv~n)Zr4k2)qzn{b3adBbt6^}C0MhnKDjCNsGyvgr!=3yJS?uAkBAw6pIj zV8n|_tJPZE+uLhwZ*QMvB~%ACfd^87Qz_NC_`oMH>k2pmjW7)RM@L6VyWM^_%*0AS zUP;zF0{&76BoedqfLqf00KHz%)M~YrVXKfUSt65ro{4=UXH9IUwEB>dki%=zG_B<= zqX@Uw12zo9U>pHIk|F1&mHliLYzC8)uNg(a-@@}^+QW{(f>J83Oyz-j63|-Tt_r9EfmhiL zIJn`3MF3xZ50sq%{0BR6C83JI-w+6bK$qRbVc8{A`afvG%EZ-1R_y~NCSa|tDo~mD zwwt)Rm6+?$THn5hyG468dLs`M?b&GgJy6|FmyJNFo{ic9lW-W)KOs<>n>kx%54bf} zrKt8{1WZD1Jr``plV%inUCeDv*8=1*~=>j!=_35~7DgV6>T+JZ!{%;#b^h%@* zIs;q4XZg&J)SEYtb{hl42L}gt@(A<=_%hI7(5V$mxGq7>{2HEWK)klL_J~0PR&E8J z13SP1@WBIbm`}@@mL%4WkB>hZV_pHT^Hvrm4qpOR>h=0kr_<3~Z+A%<-l&=m`FxTl z*L2Kxr~CW+jjgS%O=HYc;34o>DfM>PDr6b7mVE(EH#Ro(?(Xj5>gwu3v)PQJD2j|R zu`#9|MNt%nVWgCbl~R#XDmKQ1K&+H<(u=j$p(n-2S{rMvBlp^y7cpq9{5jWq9m@jq g2H0`nt5JmU0|3u6z4Int@&Et;07*qoM6N<$f+i=R&j0`b literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..51f2f45baa045d3539a3d02f76e88b66d602bde9 GIT binary patch literal 2922 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 U9m};Z(*OVf07*qoM6N<$f}DzJy#N3J literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..4792e25d262d9435f20a58e03ce63c5b3130b30f GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#VfO|M>$aPE<%p&+eSS+3a)>DDY4wCx?NXLBzgOSD^@~hr!d;&t;uc GLK6V410Poa literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..298dddb93aba32fb1f3cb958706ae50b59be09ef GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf055Qd+bU7ciGA15SGP~ixi6fRSw(r*hU{` z#sm}x3<3*ZB>5tpZf8@RBgd9QTx80f*@vBd-x-NNzZ?|rShb*3o)zA3jRji! zh6`Uk!M~z5ct_G5v&pWpe2G~J5}yV{LDi%CO=@YM;^vgi^n=HWLz3>8P?Rh_XRK#) zEanL7r#aM7*{9ws>5Nm7?wIxWLr++>*eo*^pRSpoXKeB*AQZJ)4ec_zQ&e_fV<_z^ugL zErDwYXN2M-b*6-LMXD7jGsR^Mat62r0zE9YF>3=Sjd*cy$Q~&?~07*qo IM6N<$f`P#eN&o-= literal 0 HcmV?d00001 diff --git a/data/themes/images/clock/DM_Clock_time.png b/data/themes/images/clock/DM_Clock_time.png new file mode 100644 index 0000000000000000000000000000000000000000..26987da78febd12dc281f1b5563e2f49be245fad GIT binary patch literal 3692 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 KMNUMnLSTXpSKR0T literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..7c767215833a1cb28d33bec8d43fca7e7d837e35 GIT binary patch literal 7303 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..a584b57cfdcdf8e8b2861137ee9589500cc29784 GIT binary patch literal 3805 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 LNkvXXu0mjfsQ806 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..9b63e74996b488d00f85d3d239d0ddaad78fd8a7 GIT binary patch literal 8285 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 bm;WCCh08kmKQP<600000NkvXXu0mjf9K7A5 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..2c56288510b7bdaeee926d014d520358f099b022 GIT binary patch literal 5548 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..e0decf5f81055a2b75f9b8df9e688801747b3da7 GIT binary patch literal 8244 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 literal 0 HcmV?d00001 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 index 0000000000000000000000000000000000000000..568779cdbbe1d7a6c47d89d15dbca550c3bc3615 GIT binary patch literal 3937 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 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? * @@ -36,1227 +41,13883 @@ * 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; - } - } + } + } } } } diff --git a/debian/changelog b/debian/changelog index 6e7ad63..ba48b09 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 diff --git a/debian/e17.install b/debian/e17.install index 555b5d9..29a9e18 100644 --- a/debian/e17.install +++ b/debian/e17.install @@ -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/* diff --git a/debian/e17.postinst b/debian/e17.postinst index b7502ab..e985d0c 100644 --- a/debian/e17.postinst +++ b/debian/e17.postinst @@ -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# diff --git a/debian/rules b/debian/rules index 51b2490..da375f3 100755 --- a/debian/rules +++ b/debian/rules @@ -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 diff --git a/doc/cache.txt b/doc/cache.txt old mode 100755 new mode 100644 diff --git a/doc/illume2.html b/doc/illume2.html old mode 100755 new mode 100644 diff --git a/packaging/e17.spec b/packaging/e17.spec index ee4400c..4a8bedb 100644 --- a/packaging/e17.spec +++ b/packaging/e17.spec @@ -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 diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 10128ce..4d8b2a0 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -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) && diff --git a/src/bin/e_border.h b/src/bin/e_border.h index ab1bd3d..86f0843 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -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; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 7f9cfe5..ffc2d46 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -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
" + "from:
" + "%s
" + "
" + "to:
" + "%s
" + "
" + "The rest of the write has been aborted for safety.
"), + 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
" + "its config file.
" + "%s
" + "
" + "The file where the error occurred was:
" + "%s
" + "
" + "This file has been deleted to avoid corrupt data.
"), + 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; diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 86e278f..5f7bc27 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -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; diff --git a/src/bin/e_container.c b/src/bin/e_container.c index 3f71fe8..46d422a 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -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); diff --git a/src/bin/e_container.h b/src/bin/e_container.h index 2c6dbaf..58fa91d 100644 --- a/src/bin/e_container.h +++ b/src/bin/e_container.h @@ -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); diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 70ae582..6006e71 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -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; diff --git a/src/bin/e_desk.h b/src/bin/e_desk.h index 9ee9547..bbe4355 100644 --- a/src/bin/e_desk.h +++ b/src/bin/e_desk.h @@ -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 diff --git a/src/bin/e_fm/e_fm_ipc.h b/src/bin/e_fm/e_fm_ipc.h old mode 100755 new mode 100644 diff --git a/src/bin/e_fm/e_fm_main_hal.h b/src/bin/e_fm/e_fm_main_hal.h old mode 100755 new mode 100644 diff --git a/src/bin/e_fm/e_fm_main_udisks.h b/src/bin/e_fm/e_fm_main_udisks.h old mode 100755 new mode 100644 diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index a76d6ba..a05c52f 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -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); } diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 30ebb35..d88f11b 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -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 diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 5ec0880..76b3452 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -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 diff --git a/src/bin/e_manager.c b/src/bin/e_manager.c index 8451fcf..917dc7e 100644 --- a/src/bin/e_manager.c +++ b/src/bin/e_manager.c @@ -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) && diff --git a/src/bin/e_manager.h b/src/bin/e_manager.h index 916c6cd..83b3d87 100644 --- a/src/bin/e_manager.h +++ b/src/bin/e_manager.h @@ -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 diff --git a/src/bin/e_module.c b/src/bin/e_module.c index 633f96d..fc9a404 100644 --- a/src/bin/e_module.c +++ b/src/bin/e_module.c @@ -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) diff --git a/src/bin/e_utils.c b/src/bin/e_utils.c index b5128b9..ba357a4 100644 --- a/src/bin/e_utils.c +++ b/src/bin/e_utils.c @@ -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 diff --git a/src/bin/e_utils.h b/src/bin/e_utils.h index 835f0d0..9070315 100644 --- a/src/bin/e_utils.h +++ b/src/bin/e_utils.h @@ -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 diff --git a/src/modules/bluez/module.desktop.in b/src/modules/bluez/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/clock/module.desktop.in b/src/modules/clock/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf/module.desktop.in b/src/modules/conf/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_applications/module.desktop.in b/src/modules/conf_applications/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_dialogs/module.desktop.in b/src/modules/conf_dialogs/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_display/e_int_config_desk.c b/src/modules/conf_display/e_int_config_desk.c index cb2f457..d546ee6 100644 --- a/src/modules/conf_display/e_int_config_desk.c +++ b/src/modules/conf_display/e_int_config_desk.c @@ -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); diff --git a/src/modules/conf_edgebindings/module.desktop.in b/src/modules/conf_edgebindings/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_interaction/module.desktop.in b/src/modules/conf_interaction/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_intl/module.desktop.in b/src/modules/conf_intl/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_keybindings/module.desktop.in b/src/modules/conf_keybindings/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_menus/module.desktop.in b/src/modules/conf_menus/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_paths/module.desktop.in b/src/modules/conf_paths/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_performance/module.desktop.in b/src/modules/conf_performance/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_shelves/module.desktop.in b/src/modules/conf_shelves/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_wallpaper2/module.desktop.in b/src/modules/conf_wallpaper2/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_window_manipulation/module.desktop.in b/src/modules/conf_window_manipulation/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/conf_window_remembers/module.desktop.in b/src/modules/conf_window_remembers/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/connman/module.desktop.in b/src/modules/connman/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/cpufreq/module.desktop.in b/src/modules/cpufreq/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/dropshadow/module.desktop.in b/src/modules/dropshadow/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/everything/module.desktop.in b/src/modules/everything/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/fileman/module.desktop.in b/src/modules/fileman/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/fileman_opinfo/module.desktop.in b/src/modules/fileman_opinfo/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/gadman/e_mod_gadman.c b/src/modules/gadman/e_mod_gadman.c index 80cddb8..cdef849 100644 --- a/src/modules/gadman/e_mod_gadman.c +++ b/src/modules/gadman/e_mod_gadman.c @@ -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; +} + diff --git a/src/modules/ibar/e_mod_config.c b/src/modules/ibar/e_mod_config.c index 8e4264a..cf3cec6 100644 --- a/src/modules/ibar/e_mod_config.c +++ b/src/modules/ibar/e_mod_config.c @@ -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; +} + diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 7d4ddd9..322cce0 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -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); } diff --git a/src/modules/ibar/e_mod_main.h b/src/modules/ibar/e_mod_main.h index 0811876..dd32910 100644 --- a/src/modules/ibar/e_mod_main.h +++ b/src/modules/ibar/e_mod_main.h @@ -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; diff --git a/src/modules/illume-keyboard/module.desktop.in b/src/modules/illume-keyboard/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/illume-mode-toggle/module.desktop.in b/src/modules/illume-mode-toggle/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/illume-softkey/module.desktop.in b/src/modules/illume-softkey/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/layout/module.desktop.in b/src/modules/layout/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/msgbus/module.desktop.in b/src/modules/msgbus/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/ofono/module.desktop.in b/src/modules/ofono/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/pager/module.desktop.in b/src/modules/pager/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/shot/.svn/all-wcprops b/src/modules/shot/.svn/all-wcprops deleted file mode 100755 index 997dc22..0000000 --- a/src/modules/shot/.svn/all-wcprops +++ /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 index feed959..0000000 --- a/src/modules/shot/.svn/dir-prop-base +++ /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 index 83c070f..0000000 --- a/src/modules/shot/.svn/entries +++ /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 - -module.desktop.in -file - - - - -2011-06-12T06:33:50.000000Z -2576a4fa15a98341d07ed5eae5f1c276 -2011-05-31T00:55:25.015330Z -59829 -seoz - - - - - - - - - - - - - - - - - - - - - -382 - -e-module-shot.edj -file - - - - -2011-06-12T06:33:50.000000Z -a3ebb37b918859a4ee1a960092700b3c -2011-05-30T05:35:45.697661Z -59797 -raster -has-props - - - - - - - - - - - - - - - - - - - - -9475 - -e_mod_main.c -file - - - - -2011-06-12T06:33:50.000000Z -cb66237d4e2373a5dd7fd8405a58cc33 -2011-05-29T23:45:40.227255Z -59792 -raster - - - - - - - - - - - - - - - - - - - - - -23589 - -Makefile.am -file - - - - -2011-05-29T06:47:52.000000Z -da54f69937931d923395364370e0e776 -2011-05-28T06:53:44.881572Z -59766 -raster - - - - - - - - - - - - - - - - - - - - - -982 - -.cvsignore -file - - - - -2011-05-29T06:47:52.000000Z -30ebe381b2db35c06ea554373a095af7 -2011-05-28T06:53:44.881572Z -59766 -raster - - - - - - - - - - - - - - - - - - - - - -63 - -e_mod_main.h -file - - - - -2011-05-29T06:47:52.000000Z -b027d70ec5e628a1b3c5e7891c153218 -2011-05-28T06:53:44.881572Z -59766 -raster - - - - - - - - - - - - - - - - - - - - - -219 - 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 index 5e9587e..0000000 --- a/src/modules/shot/.svn/prop-base/e-module-shot.edj.svn-base +++ /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 index 06d064a..0000000 --- a/src/modules/shot/.svn/text-base/.cvsignore.svn-base +++ /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 index 3bf6d94..0000000 --- a/src/modules/shot/.svn/text-base/Makefile.am.svn-base +++ /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 index a50790686cea15fb9a55b8669377155fb930a804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9475 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 InSS8>;M1& 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 index f4a85c7..0000000 --- a/src/modules/shot/.svn/text-base/e_mod_main.c.svn-base +++ /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.
" - "Please use '.jpg' or '.png' extensions
" - "only as other formats are not
" - "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.
" - "Please use '.jpg' or '.png' extensions
" - "only as other formats are not
" - "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:
" - "%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 index 4adf2f1..0000000 --- a/src/modules/shot/.svn/text-base/e_mod_main.h.svn-base +++ /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 index d13feb9..0000000 --- a/src/modules/shot/.svn/text-base/module.desktop.in.svn-base +++ /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]=간단한 스크린샷 저장/공유 모듈 diff --git a/src/modules/shot/e-module-shot.edj b/src/modules/shot/e-module-shot.edj old mode 100755 new mode 100644 diff --git a/src/modules/start/module.desktop.in b/src/modules/start/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/syscon/module.desktop.in b/src/modules/syscon/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/systray/module.desktop.in b/src/modules/systray/module.desktop.in old mode 100755 new mode 100644 diff --git a/src/modules/winlist/module.desktop.in b/src/modules/winlist/module.desktop.in old mode 100755 new mode 100644 -- 2.7.4