diff options
author | Carsten Haitzler <raster@rasterman.com> | 2004-11-25 03:37:45 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2004-11-25 03:37:45 +0000 |
commit | 5e2388c886b15923f2b1350191524f40b0e9050a (patch) | |
tree | eeb93c0db03cb87075ed74cc31367f669e5f2e72 | |
parent | f2b45ed47126d12986591cb02a6fcfc5908255fe (diff) | |
download | enlightenment-5e2388c886b15923f2b1350191524f40b0e9050a.tar.gz enlightenment-5e2388c886b15923f2b1350191524f40b0e9050a.tar.xz enlightenment-5e2388c886b15923f2b1350191524f40b0e9050a.zip |
_ _ _ _ _____ ___
| | | | ___| | | | ___| __ ___ ___ _______ ___ / _ \__ _____ _ __
| |_| |/ _ \ | | | |_ | '__/ _ \/ _ \_ / _ \/ __| | | | \ \ / / _ \ '__|
| _ | __/ | | | _|| | | __/ __// / __/\__ \ | |_| |\ V / __/ |
|_| |_|\___|_|_| |_| |_| \___|\___/___\___||___/ \___/ \_/ \___|_|
I put E17's wm code into cvs. Hell is freezing over. Duke Nukem Forever will
be out next week. Snowballls take up residence in Hell. The Fat Lady sings.
The End is nigh...
:)
SVN revision: 12247
656 files changed, 20812 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 000000000..7bf31c123 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,2 @@ +The Rasterman (Carsten Haitzler) <raster@rasterman.com> + diff --git a/COPYING b/COPYING new file mode 100644 index 000000000..474fcc5fa --- /dev/null +++ b/COPYING @@ -0,0 +1,28 @@ +Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies of the Software and its Copyright notices. In addition publicly +documented acknowledgment must be given that this software has been used if no +source code of this software is made available publicly. This includes +acknowledgments in either Copyright notices, Manuals, Publicity and Marketing +documents or any documentation provided with any product containing this +software. This License does not apply to any software that links to the +libraries provided by this software (statically or dynamically), but only to +the software provided. + +Please see the COPYING.PLAIN for a plain-english explanation of this notice +and it's intent. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/COPYING-PLAIN b/COPYING-PLAIN new file mode 100644 index 000000000..376875e86 --- /dev/null +++ b/COPYING-PLAIN @@ -0,0 +1,33 @@ +Plain English Copyright Notice + +This file is not intended to be the actual License. The reason this file +exists is that we here are programmers and engineers. We aren't lawyers. We +provide licenses that we THINK say the right things, but we have our own +intentions at heart. This is a plain-english explanation of what those +intentions are, and if you follow them you will be within the "spirit" of +the license. + +The intent is for us to enjoy writing software that is useful to us (the +AUTHORS) and allow others to use it freely and also benefit from the work we +put into making it. We don't want to restrict others using it. They should +not *HAVE* to make the source code of the applications they write that +simply link to these libraries (be that statically or dynamically), or for +them to be limited as to what license they choose to use (be it open, closed +or anything else). But we would like to know you are using these libraries. +We simply would like to know that it has been useful to someone. This is why +we ask for acknowledgement of some sort. + +You can do what you want with the source of this software - it doesn't +matter. We still have it here for ourselves and it is open and free to use +and download and play with. It can't be taken away. We don't really mind what +you do with the source to your software. We would simply like to know that +you are using it - especially if it makes it to a commerical product. If you +simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and +then make sure you include a paragraph or page in the manual for the product +with the copyright notice and state that you used this software, we will be +very happy. If you want to contribute back modifications and fixes you may have +made we will welcome those too with open arms (generally). If you want help +with changes needed, ports needed or features to be added, arrangements can +be easily made with some dialogue. + +Carsten Haitzler <raster@rasterman.com> diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/ChangeLog diff --git a/INSTALL b/INSTALL new file mode 100644 index 000000000..e55f642b7 --- /dev/null +++ b/INSTALL @@ -0,0 +1,14 @@ +COMPILING and INSTALLING: + +If you got a official release tar archive do: + ./configure + +( otherwise if you got this from enlightenment cvs do: ./autogen.sh ) + +Then to compile: + make + +To install (run this as root, or the user who handles installs): + make install + +NOTE: You MUST make install Enlightenment for it to run properly. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 000000000..dbb7d3fac --- /dev/null +++ b/Makefile.am @@ -0,0 +1,10 @@ +SUBDIRS = src data doc + +MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \ + config.h.in config.sub configure install-sh \ + ltconfig ltmain.sh missing mkinstalldirs \ + stamp-h.in acconfig.h + +bin_SCRIPTS = enlightenment-config + +EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN enlightenment.spec @@ -0,0 +1 @@ +Enlightenment 0.17.0 - IN DEVELOPMENT... not a RELEASE. diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 000000000..88ee7f3a0 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +rm -rf autom4te.cache +rm -f aclocal.m4 + +echo "Running aclocal..."; aclocal $ACLOCAL_FLAGS -I m4 \ +&& echo "Running autoheader..."; autoheader \ +&& echo "Running autoconf..."; autoconf \ +&& echo "Running libtoolize..."; libtoolize --automake \ +&& echo "Running automake..."; automake --add-missing --copy --gnu + +### If you want this, uncomment it. +./configure "$@" diff --git a/configure.in b/configure.in new file mode 100644 index 000000000..87beb067c --- /dev/null +++ b/configure.in @@ -0,0 +1,196 @@ +dnl Process this file with autoconf to produce a configure script. + +# get rid of that stupid cache mechanism +rm -f config.cache + +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(enlightenment, 0.17.0_pre10) +AM_CONFIG_HEADER(config.h) + +AC_ISC_POSIX +AC_PROG_CC +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_C_CONST +AM_ENABLE_SHARED +AM_PROG_LIBTOOL + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +else + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +fi + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +else + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +fi + +dnl Set PACKAGE_BIN_DIR in config.h. +if test "x${bindir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${ac_default_prefix}/bin", "Package installed binaries destination") + else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${prefix}/bin", "Package installed binaries destination") + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${bindir}", "Package installed binaries destination") +fi + +dnl Set PACKAGE_LIB_DIR in config.h. +if test "x${libdir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib", "Package installed libraries destination") + else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib", "Package installed libraries destination") + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}", "Package installed libraries destination") +fi + +dnl Set PACKAGE_DATA_DIR in config.h. +if test "x${datadir}" = 'x${prefix}/share'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/share/${PACKAGE}", "Package installed data destination") + else + AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}", "Package installed data destination") + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${datadir}/${PACKAGE}", "Package installed data destination") +fi + +AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl) +AC_SUBST(dlopen_libs) + +AC_ARG_WITH(evas-config, +[ --with-evas-config=EVAS_CONFIG use evas-config specified ], +[ + EVAS_CONFIG=$withval; + echo "using "$EVAS_CONFIG" for evas-config"; +],[ + PROG="evas-config"; + AC_PATH_PROG(EVAS_CONFIG, $PROG, "", $PATH) +]) +evas_cflags=`$EVAS_CONFIG --cflags` +evas_libs=`$EVAS_CONFIG --libs` + +AC_ARG_WITH(ecore-config, +[ --with-ecore-config=ECORE_CONFIG use ecore-config specified ], +[ + ECORE_CONFIG=$withval; + echo "using "$ECORE_CONFIG" for ecore-config"; +],[ + PROG="ecore-config"; + AC_PATH_PROG(ECORE_CONFIG, $PROG, "", $PATH) +]) +ecore_cflags=`$ECORE_CONFIG --cflags` +ecore_libs=`$ECORE_CONFIG --libs` + +AC_ARG_WITH(edje-config, +[ --with-edje-config=EDJE_CONFIG use edje-config specified ], +[ + EDJE_CONFIG=$withval; + echo "using "$EDJE_CONFIG" for edje-config"; +],[ + PROG="edje-config"; + AC_PATH_PROG(EDJE_CONFIG, $PROG, "", $PATH) +]) +edje_cflags=`$EDJE_CONFIG --cflags` +edje_libs=`$EDJE_CONFIG --libs` + +AC_ARG_WITH(eet-config, +[ --with-eet-config=EET_CONFIG use eet-config specified ], +[ + EET_CONFIG=$withval; + echo "using "$EET_CONFIG" for eet-config"; +],[ + PROG="eet-config"; + AC_PATH_PROG(EET_CONFIG, $PROG, "", $PATH) +]) +eet_cflags=`$EET_CONFIG --cflags` +eet_libs=`$EET_CONFIG --libs` + +AC_ARG_WITH(embryo-config, +[ --with-embryo-config=EMBRYO_CONFIG use embryo-config specified ], +[ + EMBRYO_CONFIG=$withval; + echo "using "$EMBRYO_CONFIG" for embryo-config"; +],[ + PROG="embryo-config"; + AC_PATH_PROG(EMBRYO_CONFIG, $PROG, "", $PATH) +]) +embryo_cflags=`$EMBRYO_CONFIG --cflags` +embryo_libs=`$EMBRYO_CONFIG --libs` + +e_libs=$evas_libs" "$ecore_libs" "$edje_libs" "$eet_libs" "$embryo_libs" " +e_cflags=$evas_cflags" "$ecore_cflags" "$edje_cflags" "$eet_cflags" "$embryo_cflags" " +AC_SUBST(e_libs) +AC_SUBST(e_cflags) + +profile="FAST_PC" +AC_ARG_WITH(profile, +[ --with-profile=TARGET_PROFILE specify a target format profile of: + LOWRES_PDA, MEDIUMRES_PDA, HIRES_PDA, + SLOW_PC, MEDIUM_PC, FAST_PC ], +[ + v=$withval; + profile=$v + echo " Enlightenment build profile set to "$profile; +],[ + profile="FAST_PC" +]) +EDJE_DEF="-DLOWRES_PDA=1 -DMEDIUMRES_PDA=2 -DHIRES_PDA=3 -DSLOW_PC=4 -DMEDIUM_PC=5 -DFAST_PC=6" +EDJE_DEF=$EDJE_DEF" -DE17_PROFILE"=$profile +AC_SUBST(EDJE_DEF) + +edje_cc="`$EDJE_CONFIG --prefix`/bin/edje_cc" +AC_ARG_WITH(edje-cc, +[ --with-edje-cc=PATH specify a specific path to edje_cc], +[ + v=$withval; + edje_cc=$v + echo " Enlightenment edje_cc explicitly set to "$edje_cc; +],[ + edje_cc="`$EDJE_CONFIG --prefix`/bin/edje_cc" +]) +AC_SUBST(edje_cc) + +AC_OUTPUT([ +Makefile +src/Makefile +src/lib/Makefile +src/bin/Makefile +src/modules/Makefile +src/modules/test/Makefile +src/modules/ibar/Makefile +src/modules/dropshadow/Makefile +data/Makefile +data/fonts/Makefile +data/images/Makefile +data/init/Makefile +data/init/images/Makefile +data/themes/Makefile +data/themes/images/Makefile +data/other/Makefile +doc/Makefile +enlightenment-config +],[ +chmod +x enlightenment-config +]) diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 000000000..7bca4f3cc --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,3 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = fonts images init themes other + diff --git a/data/fonts/Makefile.am b/data/fonts/Makefile.am new file mode 100644 index 000000000..46f323f9a --- /dev/null +++ b/data/fonts/Makefile.am @@ -0,0 +1,17 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/enlightenment/data/fonts +files_DATA = \ +Vera.ttf \ +VeraBI.ttf \ +VeraBd.ttf \ +VeraIt.ttf \ +VeraMoBI.ttf \ +VeraMoBd.ttf \ +VeraMoIt.ttf \ +VeraMono.ttf \ +VeraSe.ttf \ +VeraSeBd.ttf \ +fonts.alias \ +fonts.dir + +EXTRA_DIST = $(files_DATA) diff --git a/data/fonts/Vera.ttf b/data/fonts/Vera.ttf Binary files differnew file mode 100644 index 000000000..58cd6b5e6 --- /dev/null +++ b/data/fonts/Vera.ttf diff --git a/data/fonts/VeraBI.ttf b/data/fonts/VeraBI.ttf Binary files differnew file mode 100644 index 000000000..b55eee397 --- /dev/null +++ b/data/fonts/VeraBI.ttf diff --git a/data/fonts/VeraBd.ttf b/data/fonts/VeraBd.ttf Binary files differnew file mode 100644 index 000000000..51d6111d7 --- /dev/null +++ b/data/fonts/VeraBd.ttf diff --git a/data/fonts/VeraIt.ttf b/data/fonts/VeraIt.ttf Binary files differnew file mode 100644 index 000000000..cc23c9efd --- /dev/null +++ b/data/fonts/VeraIt.ttf diff --git a/data/fonts/VeraMoBI.ttf b/data/fonts/VeraMoBI.ttf Binary files differnew file mode 100644 index 000000000..8624542ed --- /dev/null +++ b/data/fonts/VeraMoBI.ttf diff --git a/data/fonts/VeraMoBd.ttf b/data/fonts/VeraMoBd.ttf Binary files differnew file mode 100644 index 000000000..9be6547ed --- /dev/null +++ b/data/fonts/VeraMoBd.ttf diff --git a/data/fonts/VeraMoIt.ttf b/data/fonts/VeraMoIt.ttf Binary files differnew file mode 100644 index 000000000..240492485 --- /dev/null +++ b/data/fonts/VeraMoIt.ttf diff --git a/data/fonts/VeraMono.ttf b/data/fonts/VeraMono.ttf Binary files differnew file mode 100644 index 000000000..139f0b431 --- /dev/null +++ b/data/fonts/VeraMono.ttf diff --git a/data/fonts/VeraSe.ttf b/data/fonts/VeraSe.ttf Binary files differnew file mode 100644 index 000000000..4b4ecc666 --- /dev/null +++ b/data/fonts/VeraSe.ttf diff --git a/data/fonts/VeraSeBd.ttf b/data/fonts/VeraSeBd.ttf Binary files differnew file mode 100644 index 000000000..672bf761f --- /dev/null +++ b/data/fonts/VeraSeBd.ttf diff --git a/data/fonts/fonts.alias b/data/fonts/fonts.alias new file mode 100644 index 000000000..bbb99b3fe --- /dev/null +++ b/data/fonts/fonts.alias @@ -0,0 +1,11 @@ +Vera-Bold-Italic -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-ascii-0 +Vera-Normal -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Bold -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Italic -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-ascii- +Vera-Mono-Bold-Italic -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-ascii-0 +Vera-Mono-Bold -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-ascii-0 +Vera-Mono-Italic -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-ascii-0 +Vera-Mono -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-ascii-0 +Vera-Serif -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera-Serif-Bold -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-ascii-0 +Vera -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 diff --git a/data/fonts/fonts.dir b/data/fonts/fonts.dir new file mode 100644 index 000000000..2dab016e1 --- /dev/null +++ b/data/fonts/fonts.dir @@ -0,0 +1,51 @@ +50 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-ascii-0 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-fcd8859-15 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-1 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-15 +VeraBI.ttf -Bitstream-Bitstream Vera Sans-bold-i-normal--0-0-0-0-p-0-iso8859-9 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-ascii-0 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-fcd8859-15 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-1 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-15 +Vera.ttf -Bitstream-Bitstream Vera Sans-medium-r-normal--0-0-0-0-p-0-iso8859-9 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-ascii-0 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-1 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-15 +VeraBd.ttf -Bitstream-Bitstream Vera Sans-bold-r-normal--0-0-0-0-p-0-iso8859-9 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-ascii-0 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-fcd8859-15 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-1 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-15 +VeraIt.ttf -Bitstream-Bitstream Vera Sans-medium-i-normal--0-0-0-0-p-0-iso8859-9 +VeraMoBI.ttf -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-ascii-0 +VeraMoBI.ttf -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-fcd8859-15 +VeraMoBI.ttf -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-iso8859-1 +VeraMoBI.ttf -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-iso8859-15 +VeraMoBI.ttf -Bitstream-Bitstream Vera Sans Mono-bold-i-normal--0-0-0-0-m-0-iso8859-9 +VeraMoBd.ttf -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-ascii-0 +VeraMoBd.ttf -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-fcd8859-15 +VeraMoBd.ttf -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-iso8859-1 +VeraMoBd.ttf -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-iso8859-15 +VeraMoBd.ttf -Bitstream-Bitstream Vera Sans Mono-bold-r-normal--0-0-0-0-m-0-iso8859-9 +VeraMoIt.ttf -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-ascii-0 +VeraMoIt.ttf -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-fcd8859-15 +VeraMoIt.ttf -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-iso8859-1 +VeraMoIt.ttf -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-iso8859-15 +VeraMoIt.ttf -Bitstream-Bitstream Vera Sans Mono-medium-i-normal--0-0-0-0-m-0-iso8859-9 +VeraMono.ttf -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-ascii-0 +VeraMono.ttf -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-fcd8859-15 +VeraMono.ttf -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-iso8859-1 +VeraMono.ttf -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-iso8859-15 +VeraMono.ttf -Bitstream-Bitstream Vera Sans Mono-medium-r-normal--0-0-0-0-m-0-iso8859-9 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-ascii-0 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-1 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-15 +VeraSe.ttf -Bitstream-Bitstream Vera Serif-medium-r-normal--0-0-0-0-p-0-iso8859-9 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-ascii-0 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-fcd8859-15 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-1 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-15 +VeraSeBd.ttf -Bitstream-Bitstream Vera Serif-bold-r-normal--0-0-0-0-p-0-iso8859-9 diff --git a/data/images/Makefile.am b/data/images/Makefile.am new file mode 100644 index 000000000..d514a720e --- /dev/null +++ b/data/images/Makefile.am @@ -0,0 +1,10 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/enlightenment/data/images +files_DATA = \ +button_in.png \ +button_out.png \ +e.png \ +error_bg.png \ +pointer.png + +EXTRA_DIST = $(files_DATA) diff --git a/data/images/button_in.png b/data/images/button_in.png Binary files differnew file mode 100644 index 000000000..fadeccc93 --- /dev/null +++ b/data/images/button_in.png diff --git a/data/images/button_out.png b/data/images/button_out.png Binary files differnew file mode 100644 index 000000000..6b847fa62 --- /dev/null +++ b/data/images/button_out.png diff --git a/data/images/e.png b/data/images/e.png Binary files differnew file mode 100644 index 000000000..47597a8d4 --- /dev/null +++ b/data/images/e.png diff --git a/data/images/error_bg.png b/data/images/error_bg.png Binary files differnew file mode 100644 index 000000000..c3eaad983 --- /dev/null +++ b/data/images/error_bg.png diff --git a/data/images/pointer.png b/data/images/pointer.png Binary files differnew file mode 100644 index 000000000..a7c932318 --- /dev/null +++ b/data/images/pointer.png diff --git a/data/init/Makefile.am b/data/init/Makefile.am new file mode 100644 index 000000000..4ee88a4a4 --- /dev/null +++ b/data/init/Makefile.am @@ -0,0 +1,24 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = images + +EDJE_CC = @edje_cc@ +EDJE_FLAGS = \ +-v \ +-id $(top_srcdir)/data/init/images \ +-fd $(top_srcdir)/data/fonts \ +@EDJE_DEF@ + +filesdir = $(datadir)/enlightenment/data/init +files_DATA = \ +init.eet + +EXTRA_DIST = init.edc + +init.eet: Makefile init.edc + $(EDJE_CC) $(EDJE_FLAGS) \ + $(top_srcdir)/data/init/init.edc \ + $(top_builddir)/data/init/init.eet + +clean-local: + rm -f *.eet + diff --git a/data/init/images/Makefile.am b/data/init/images/Makefile.am new file mode 100644 index 000000000..392653bc9 --- /dev/null +++ b/data/init/images/Makefile.am @@ -0,0 +1,487 @@ +MAINTAINERCLEANFILES = Makefile.in +EXTRA_DIST = \ +brushed.png \ +loop_eintro_121.png \ +loop_eintro_122.png \ +loop_eintro_123.png \ +loop_eintro_124.png \ +loop_eintro_125.png \ +loop_eintro_126.png \ +loop_eintro_127.png \ +loop_eintro_128.png \ +loop_eintro_129.png \ +loop_eintro_130.png \ +loop_eintro_131.png \ +loop_eintro_132.png \ +loop_eintro_133.png \ +loop_eintro_134.png \ +loop_eintro_135.png \ +loop_eintro_136.png \ +loop_eintro_137.png \ +loop_eintro_138.png \ +loop_eintro_139.png \ +loop_eintro_140.png \ +loop_eintro_141.png \ +loop_eintro_142.png \ +loop_eintro_143.png \ +loop_eintro_144.png \ +loop_eintro_145.png \ +loop_eintro_146.png \ +loop_eintro_147.png \ +loop_eintro_148.png \ +loop_eintro_149.png \ +loop_eintro_150.png \ +loop_eintro_151.png \ +loop_eintro_152.png \ +loop_eintro_153.png \ +loop_eintro_154.png \ +loop_eintro_155.png \ +loop_eintro_156.png \ +loop_eintro_157.png \ +loop_eintro_158.png \ +loop_eintro_159.png \ +loop_eintro_160.png \ +loop_eintro_161.png \ +loop_eintro_162.png \ +loop_eintro_163.png \ +loop_eintro_164.png \ +loop_eintro_165.png \ +loop_eintro_166.png \ +loop_eintro_167.png \ +loop_eintro_168.png \ +loop_eintro_169.png \ +loop_eintro_170.png \ +loop_eintro_171.png \ +loop_eintro_172.png \ +loop_eintro_173.png \ +loop_eintro_174.png \ +loop_eintro_175.png \ +loop_eintro_176.png \ +loop_eintro_177.png \ +loop_eintro_178.png \ +loop_eintro_179.png \ +loop_eintro_180.png \ +loop_eintro_181.png \ +loop_eintro_182.png \ +loop_eintro_183.png \ +loop_eintro_184.png \ +loop_eintro_185.png \ +loop_eintro_186.png \ +loop_eintro_187.png \ +loop_eintro_188.png \ +loop_eintro_189.png \ +loop_eintro_190.png \ +loop_eintro_191.png \ +loop_eintro_192.png \ +loop_eintro_193.png \ +loop_eintro_194.png \ +loop_eintro_195.png \ +loop_eintro_196.png \ +loop_eintro_197.png \ +loop_eintro_198.png \ +loop_eintro_199.png \ +loop_eintro_200.png \ +loop_eintro_201.png \ +loop_eintro_202.png \ +loop_eintro_203.png \ +loop_eintro_204.png \ +loop_eintro_205.png \ +loop_eintro_206.png \ +loop_eintro_207.png \ +loop_eintro_208.png \ +loop_eintro_209.png \ +loop_eintro_210.png \ +loop_eintro_211.png \ +loop_eintro_212.png \ +loop_eintro_213.png \ +loop_eintro_214.png \ +loop_eintro_215.png \ +loop_eintro_216.png \ +loop_eintro_217.png \ +loop_eintro_218.png \ +loop_eintro_219.png \ +loop_eintro_220.png \ +loop_eintro_221.png \ +loop_eintro_222.png \ +loop_eintro_223.png \ +loop_eintro_224.png \ +loop_eintro_225.png \ +loop_eintro_226.png \ +loop_eintro_227.png \ +loop_eintro_228.png \ +loop_eintro_229.png \ +loop_eintro_230.png \ +loop_eintro_231.png \ +loop_eintro_232.png \ +loop_eintro_233.png \ +loop_eintro_234.png \ +loop_eintro_235.png \ +loop_eintro_236.png \ +loop_eintro_237.png \ +loop_eintro_238.png \ +loop_eintro_239.png \ +loop_eintro_240.png \ +reflection_overlay.png \ +shadow.png \ +start_eintro_001.png \ +start_eintro_002.png \ +start_eintro_003.png \ +start_eintro_004.png \ +start_eintro_005.png \ +start_eintro_006.png \ +start_eintro_007.png \ +start_eintro_008.png \ +start_eintro_009.png \ +start_eintro_010.png \ +start_eintro_011.png \ +start_eintro_012.png \ +start_eintro_013.png \ +start_eintro_014.png \ +start_eintro_015.png \ +start_eintro_016.png \ +start_eintro_017.png \ +start_eintro_018.png \ +start_eintro_019.png \ +start_eintro_020.png \ +start_eintro_021.png \ +start_eintro_022.png \ +start_eintro_023.png \ +start_eintro_024.png \ +start_eintro_025.png \ +start_eintro_026.png \ +start_eintro_027.png \ +start_eintro_028.png \ +start_eintro_029.png \ +start_eintro_030.png \ +start_eintro_031.png \ +start_eintro_032.png \ +start_eintro_033.png \ +start_eintro_034.png \ +start_eintro_035.png \ +start_eintro_036.png \ +start_eintro_037.png \ +start_eintro_038.png \ +start_eintro_039.png \ +start_eintro_040.png \ +start_eintro_041.png \ +start_eintro_042.png \ +start_eintro_043.png \ +start_eintro_044.png \ +start_eintro_045.png \ +start_eintro_046.png \ +start_eintro_047.png \ +start_eintro_048.png \ +start_eintro_049.png \ +start_eintro_050.png \ +start_eintro_051.png \ +start_eintro_052.png \ +start_eintro_053.png \ +start_eintro_054.png \ +start_eintro_055.png \ +start_eintro_056.png \ +start_eintro_057.png \ +start_eintro_058.png \ +start_eintro_059.png \ +start_eintro_060.png \ +start_eintro_061.png \ +start_eintro_062.png \ +start_eintro_063.png \ +start_eintro_064.png \ +start_eintro_065.png \ +start_eintro_066.png \ +start_eintro_067.png \ +start_eintro_068.png \ +start_eintro_069.png \ +start_eintro_070.png \ +start_eintro_071.png \ +start_eintro_072.png \ +start_eintro_073.png \ +start_eintro_074.png \ +start_eintro_075.png \ +start_eintro_076.png \ +start_eintro_077.png \ +start_eintro_078.png \ +start_eintro_079.png \ +start_eintro_080.png \ +start_eintro_081.png \ +start_eintro_082.png \ +start_eintro_083.png \ +start_eintro_084.png \ +start_eintro_085.png \ +start_eintro_086.png \ +start_eintro_087.png \ +start_eintro_088.png \ +start_eintro_089.png \ +start_eintro_090.png \ +start_eintro_091.png \ +start_eintro_092.png \ +start_eintro_093.png \ +start_eintro_094.png \ +start_eintro_095.png \ +start_eintro_096.png \ +start_eintro_097.png \ +start_eintro_098.png \ +start_eintro_099.png \ +start_eintro_100.png \ +start_eintro_101.png \ +start_eintro_102.png \ +start_eintro_103.png \ +start_eintro_104.png \ +start_eintro_105.png \ +start_eintro_106.png \ +start_eintro_107.png \ +start_eintro_108.png \ +start_eintro_109.png \ +start_eintro_110.png \ +start_eintro_111.png \ +start_eintro_112.png \ +start_eintro_113.png \ +start_eintro_114.png \ +start_eintro_115.png \ +start_eintro_116.png \ +start_eintro_117.png \ +start_eintro_118.png \ +start_eintro_119.png \ +start_eintro_120.png \ +sm_loop_eintro_121.png \ +sm_loop_eintro_122.png \ +sm_loop_eintro_123.png \ +sm_loop_eintro_124.png \ +sm_loop_eintro_125.png \ +sm_loop_eintro_126.png \ +sm_loop_eintro_127.png \ +sm_loop_eintro_128.png \ +sm_loop_eintro_129.png \ +sm_loop_eintro_130.png \ +sm_loop_eintro_131.png \ +sm_loop_eintro_132.png \ +sm_loop_eintro_133.png \ +sm_loop_eintro_134.png \ +sm_loop_eintro_135.png \ +sm_loop_eintro_136.png \ +sm_loop_eintro_137.png \ +sm_loop_eintro_138.png \ +sm_loop_eintro_139.png \ +sm_loop_eintro_140.png \ +sm_loop_eintro_141.png \ +sm_loop_eintro_142.png \ +sm_loop_eintro_143.png \ +sm_loop_eintro_144.png \ +sm_loop_eintro_145.png \ +sm_loop_eintro_146.png \ +sm_loop_eintro_147.png \ +sm_loop_eintro_148.png \ +sm_loop_eintro_149.png \ +sm_loop_eintro_150.png \ +sm_loop_eintro_151.png \ +sm_loop_eintro_152.png \ +sm_loop_eintro_153.png \ +sm_loop_eintro_154.png \ +sm_loop_eintro_155.png \ +sm_loop_eintro_156.png \ +sm_loop_eintro_157.png \ +sm_loop_eintro_158.png \ +sm_loop_eintro_159.png \ +sm_loop_eintro_160.png \ +sm_loop_eintro_161.png \ +sm_loop_eintro_162.png \ +sm_loop_eintro_163.png \ +sm_loop_eintro_164.png \ +sm_loop_eintro_165.png \ +sm_loop_eintro_166.png \ +sm_loop_eintro_167.png \ +sm_loop_eintro_168.png \ +sm_loop_eintro_169.png \ +sm_loop_eintro_170.png \ +sm_loop_eintro_171.png \ +sm_loop_eintro_172.png \ +sm_loop_eintro_173.png \ +sm_loop_eintro_174.png \ +sm_loop_eintro_175.png \ +sm_loop_eintro_176.png \ +sm_loop_eintro_177.png \ +sm_loop_eintro_178.png \ +sm_loop_eintro_179.png \ +sm_loop_eintro_180.png \ +sm_loop_eintro_181.png \ +sm_loop_eintro_182.png \ +sm_loop_eintro_183.png \ +sm_loop_eintro_184.png \ +sm_loop_eintro_185.png \ +sm_loop_eintro_186.png \ +sm_loop_eintro_187.png \ +sm_loop_eintro_188.png \ +sm_loop_eintro_189.png \ +sm_loop_eintro_190.png \ +sm_loop_eintro_191.png \ +sm_loop_eintro_192.png \ +sm_loop_eintro_193.png \ +sm_loop_eintro_194.png \ +sm_loop_eintro_195.png \ +sm_loop_eintro_196.png \ +sm_loop_eintro_197.png \ +sm_loop_eintro_198.png \ +sm_loop_eintro_199.png \ +sm_loop_eintro_200.png \ +sm_loop_eintro_201.png \ +sm_loop_eintro_202.png \ +sm_loop_eintro_203.png \ +sm_loop_eintro_204.png \ +sm_loop_eintro_205.png \ +sm_loop_eintro_206.png \ +sm_loop_eintro_207.png \ +sm_loop_eintro_208.png \ +sm_loop_eintro_209.png \ +sm_loop_eintro_210.png \ +sm_loop_eintro_211.png \ +sm_loop_eintro_212.png \ +sm_loop_eintro_213.png \ +sm_loop_eintro_214.png \ +sm_loop_eintro_215.png \ +sm_loop_eintro_216.png \ +sm_loop_eintro_217.png \ +sm_loop_eintro_218.png \ +sm_loop_eintro_219.png \ +sm_loop_eintro_220.png \ +sm_loop_eintro_221.png \ +sm_loop_eintro_222.png \ +sm_loop_eintro_223.png \ +sm_loop_eintro_224.png \ +sm_loop_eintro_225.png \ +sm_loop_eintro_226.png \ +sm_loop_eintro_227.png \ +sm_loop_eintro_228.png \ +sm_loop_eintro_229.png \ +sm_loop_eintro_230.png \ +sm_loop_eintro_231.png \ +sm_loop_eintro_232.png \ +sm_loop_eintro_233.png \ +sm_loop_eintro_234.png \ +sm_loop_eintro_235.png \ +sm_loop_eintro_236.png \ +sm_loop_eintro_237.png \ +sm_loop_eintro_238.png \ +sm_loop_eintro_239.png \ +sm_loop_eintro_240.png \ +sm_reflection_overlay.png \ +sm_shadow.png \ +sm_start_eintro_001.png \ +sm_start_eintro_002.png \ +sm_start_eintro_003.png \ +sm_start_eintro_004.png \ +sm_start_eintro_005.png \ +sm_start_eintro_006.png \ +sm_start_eintro_007.png \ +sm_start_eintro_008.png \ +sm_start_eintro_009.png \ +sm_start_eintro_010.png \ +sm_start_eintro_011.png \ +sm_start_eintro_012.png \ +sm_start_eintro_013.png \ +sm_start_eintro_014.png \ +sm_start_eintro_015.png \ +sm_start_eintro_016.png \ +sm_start_eintro_017.png \ +sm_start_eintro_018.png \ +sm_start_eintro_019.png \ +sm_start_eintro_020.png \ +sm_start_eintro_021.png \ +sm_start_eintro_022.png \ +sm_start_eintro_023.png \ +sm_start_eintro_024.png \ +sm_start_eintro_025.png \ +sm_start_eintro_026.png \ +sm_start_eintro_027.png \ +sm_start_eintro_028.png \ +sm_start_eintro_029.png \ +sm_start_eintro_030.png \ +sm_start_eintro_031.png \ +sm_start_eintro_032.png \ +sm_start_eintro_033.png \ +sm_start_eintro_034.png \ +sm_start_eintro_035.png \ +sm_start_eintro_036.png \ +sm_start_eintro_037.png \ +sm_start_eintro_038.png \ +sm_start_eintro_039.png \ +sm_start_eintro_040.png \ +sm_start_eintro_041.png \ +sm_start_eintro_042.png \ +sm_start_eintro_043.png \ +sm_start_eintro_044.png \ +sm_start_eintro_045.png \ +sm_start_eintro_046.png \ +sm_start_eintro_047.png \ +sm_start_eintro_048.png \ +sm_start_eintro_049.png \ +sm_start_eintro_050.png \ +sm_start_eintro_051.png \ +sm_start_eintro_052.png \ +sm_start_eintro_053.png \ +sm_start_eintro_054.png \ +sm_start_eintro_055.png \ +sm_start_eintro_056.png \ +sm_start_eintro_057.png \ +sm_start_eintro_058.png \ +sm_start_eintro_059.png \ +sm_start_eintro_060.png \ +sm_start_eintro_061.png \ +sm_start_eintro_062.png \ +sm_start_eintro_063.png \ +sm_start_eintro_064.png \ +sm_start_eintro_065.png \ +sm_start_eintro_066.png \ +sm_start_eintro_067.png \ +sm_start_eintro_068.png \ +sm_start_eintro_069.png \ +sm_start_eintro_070.png \ +sm_start_eintro_071.png \ +sm_start_eintro_072.png \ +sm_start_eintro_073.png \ +sm_start_eintro_074.png \ +sm_start_eintro_075.png \ +sm_start_eintro_076.png \ +sm_start_eintro_077.png \ +sm_start_eintro_078.png \ +sm_start_eintro_079.png \ +sm_start_eintro_080.png \ +sm_start_eintro_081.png \ +sm_start_eintro_082.png \ +sm_start_eintro_083.png \ +sm_start_eintro_084.png \ +sm_start_eintro_085.png \ +sm_start_eintro_086.png \ +sm_start_eintro_087.png \ +sm_start_eintro_088.png \ +sm_start_eintro_089.png \ +sm_start_eintro_090.png \ +sm_start_eintro_091.png \ +sm_start_eintro_092.png \ +sm_start_eintro_093.png \ +sm_start_eintro_094.png \ +sm_start_eintro_095.png \ +sm_start_eintro_096.png \ +sm_start_eintro_097.png \ +sm_start_eintro_098.png \ +sm_start_eintro_099.png \ +sm_start_eintro_100.png \ +sm_start_eintro_101.png \ +sm_start_eintro_102.png \ +sm_start_eintro_103.png \ +sm_start_eintro_104.png \ +sm_start_eintro_105.png \ +sm_start_eintro_106.png \ +sm_start_eintro_107.png \ +sm_start_eintro_108.png \ +sm_start_eintro_109.png \ +sm_start_eintro_110.png \ +sm_start_eintro_111.png \ +sm_start_eintro_112.png \ +sm_start_eintro_113.png \ +sm_start_eintro_114.png \ +sm_start_eintro_115.png \ +sm_start_eintro_116.png \ +sm_start_eintro_117.png \ +sm_start_eintro_118.png \ +sm_start_eintro_119.png \ +sm_start_eintro_120.png diff --git a/data/init/images/brushed.png b/data/init/images/brushed.png Binary files differnew file mode 100644 index 000000000..0b6cda97b --- /dev/null +++ b/data/init/images/brushed.png diff --git a/data/init/images/loop_eintro_121.png b/data/init/images/loop_eintro_121.png Binary files differnew file mode 100644 index 000000000..666526ba6 --- /dev/null +++ b/data/init/images/loop_eintro_121.png diff --git a/data/init/images/loop_eintro_122.png b/data/init/images/loop_eintro_122.png Binary files differnew file mode 100644 index 000000000..01b35d9c1 --- /dev/null +++ b/data/init/images/loop_eintro_122.png diff --git a/data/init/images/loop_eintro_123.png b/data/init/images/loop_eintro_123.png Binary files differnew file mode 100644 index 000000000..6c6af7655 --- /dev/null +++ b/data/init/images/loop_eintro_123.png diff --git a/data/init/images/loop_eintro_124.png b/data/init/images/loop_eintro_124.png Binary files differnew file mode 100644 index 000000000..04b85b649 --- /dev/null +++ b/data/init/images/loop_eintro_124.png diff --git a/data/init/images/loop_eintro_125.png b/data/init/images/loop_eintro_125.png Binary files differnew file mode 100644 index 000000000..fbcbdbfca --- /dev/null +++ b/data/init/images/loop_eintro_125.png diff --git a/data/init/images/loop_eintro_126.png b/data/init/images/loop_eintro_126.png Binary files differnew file mode 100644 index 000000000..bc25e5579 --- /dev/null +++ b/data/init/images/loop_eintro_126.png diff --git a/data/init/images/loop_eintro_127.png b/data/init/images/loop_eintro_127.png Binary files differnew file mode 100644 index 000000000..5bbf6b50e --- /dev/null +++ b/data/init/images/loop_eintro_127.png diff --git a/data/init/images/loop_eintro_128.png b/data/init/images/loop_eintro_128.png Binary files differnew file mode 100644 index 000000000..00f0a2dab --- /dev/null +++ b/data/init/images/loop_eintro_128.png diff --git a/data/init/images/loop_eintro_129.png b/data/init/images/loop_eintro_129.png Binary files differnew file mode 100644 index 000000000..903ede210 --- /dev/null +++ b/data/init/images/loop_eintro_129.png diff --git a/data/init/images/loop_eintro_130.png b/data/init/images/loop_eintro_130.png Binary files differnew file mode 100644 index 000000000..e1a8644ac --- /dev/null +++ b/data/init/images/loop_eintro_130.png diff --git a/data/init/images/loop_eintro_131.png b/data/init/images/loop_eintro_131.png Binary files differnew file mode 100644 index 000000000..cf1d67772 --- /dev/null +++ b/data/init/images/loop_eintro_131.png diff --git a/data/init/images/loop_eintro_132.png b/data/init/images/loop_eintro_132.png Binary files differnew file mode 100644 index 000000000..fac48909b --- /dev/null +++ b/data/init/images/loop_eintro_132.png diff --git a/data/init/images/loop_eintro_133.png b/data/init/images/loop_eintro_133.png Binary files differnew file mode 100644 index 000000000..512d764eb --- /dev/null +++ b/data/init/images/loop_eintro_133.png diff --git a/data/init/images/loop_eintro_134.png b/data/init/images/loop_eintro_134.png Binary files differnew file mode 100644 index 000000000..31d3a9bcb --- /dev/null +++ b/data/init/images/loop_eintro_134.png diff --git a/data/init/images/loop_eintro_135.png b/data/init/images/loop_eintro_135.png Binary files differnew file mode 100644 index 000000000..62ec7a831 --- /dev/null +++ b/data/init/images/loop_eintro_135.png diff --git a/data/init/images/loop_eintro_136.png b/data/init/images/loop_eintro_136.png Binary files differnew file mode 100644 index 000000000..621d07a49 --- /dev/null +++ b/data/init/images/loop_eintro_136.png diff --git a/data/init/images/loop_eintro_137.png b/data/init/images/loop_eintro_137.png Binary files differnew file mode 100644 index 000000000..6f571d006 --- /dev/null +++ b/data/init/images/loop_eintro_137.png diff --git a/data/init/images/loop_eintro_138.png b/data/init/images/loop_eintro_138.png Binary files differnew file mode 100644 index 000000000..331433340 --- /dev/null +++ b/data/init/images/loop_eintro_138.png diff --git a/data/init/images/loop_eintro_139.png b/data/init/images/loop_eintro_139.png Binary files differnew file mode 100644 index 000000000..bd81788dd --- /dev/null +++ b/data/init/images/loop_eintro_139.png diff --git a/data/init/images/loop_eintro_140.png b/data/init/images/loop_eintro_140.png Binary files differnew file mode 100644 index 000000000..ba4ecea7f --- /dev/null +++ b/data/init/images/loop_eintro_140.png diff --git a/data/init/images/loop_eintro_141.png b/data/init/images/loop_eintro_141.png Binary files differnew file mode 100644 index 000000000..03a744078 --- /dev/null +++ b/data/init/images/loop_eintro_141.png diff --git a/data/init/images/loop_eintro_142.png b/data/init/images/loop_eintro_142.png Binary files differnew file mode 100644 index 000000000..6df4a193f --- /dev/null +++ b/data/init/images/loop_eintro_142.png diff --git a/data/init/images/loop_eintro_143.png b/data/init/images/loop_eintro_143.png Binary files differnew file mode 100644 index 000000000..fb05997cc --- /dev/null +++ b/data/init/images/loop_eintro_143.png diff --git a/data/init/images/loop_eintro_144.png b/data/init/images/loop_eintro_144.png Binary files differnew file mode 100644 index 000000000..edbf64abb --- /dev/null +++ b/data/init/images/loop_eintro_144.png diff --git a/data/init/images/loop_eintro_145.png b/data/init/images/loop_eintro_145.png Binary files differnew file mode 100644 index 000000000..37fe7357b --- /dev/null +++ b/data/init/images/loop_eintro_145.png diff --git a/data/init/images/loop_eintro_146.png b/data/init/images/loop_eintro_146.png Binary files differnew file mode 100644 index 000000000..868ed9da5 --- /dev/null +++ b/data/init/images/loop_eintro_146.png diff --git a/data/init/images/loop_eintro_147.png b/data/init/images/loop_eintro_147.png Binary files differnew file mode 100644 index 000000000..dada3763f --- /dev/null +++ b/data/init/images/loop_eintro_147.png diff --git a/data/init/images/loop_eintro_148.png b/data/init/images/loop_eintro_148.png Binary files differnew file mode 100644 index 000000000..43f121830 --- /dev/null +++ b/data/init/images/loop_eintro_148.png diff --git a/data/init/images/loop_eintro_149.png b/data/init/images/loop_eintro_149.png Binary files differnew file mode 100644 index 000000000..69a8b7b7f --- /dev/null +++ b/data/init/images/loop_eintro_149.png diff --git a/data/init/images/loop_eintro_150.png b/data/init/images/loop_eintro_150.png Binary files differnew file mode 100644 index 000000000..73e23f49c --- /dev/null +++ b/data/init/images/loop_eintro_150.png diff --git a/data/init/images/loop_eintro_151.png b/data/init/images/loop_eintro_151.png Binary files differnew file mode 100644 index 000000000..4815208aa --- /dev/null +++ b/data/init/images/loop_eintro_151.png diff --git a/data/init/images/loop_eintro_152.png b/data/init/images/loop_eintro_152.png Binary files differnew file mode 100644 index 000000000..eabdb4d44 --- /dev/null +++ b/data/init/images/loop_eintro_152.png diff --git a/data/init/images/loop_eintro_153.png b/data/init/images/loop_eintro_153.png Binary files differnew file mode 100644 index 000000000..0d654f7c0 --- /dev/null +++ b/data/init/images/loop_eintro_153.png diff --git a/data/init/images/loop_eintro_154.png b/data/init/images/loop_eintro_154.png Binary files differnew file mode 100644 index 000000000..cf87a7e1d --- /dev/null +++ b/data/init/images/loop_eintro_154.png diff --git a/data/init/images/loop_eintro_155.png b/data/init/images/loop_eintro_155.png Binary files differnew file mode 100644 index 000000000..9a2b94ab2 --- /dev/null +++ b/data/init/images/loop_eintro_155.png diff --git a/data/init/images/loop_eintro_156.png b/data/init/images/loop_eintro_156.png Binary files differnew file mode 100644 index 000000000..1203bb58a --- /dev/null +++ b/data/init/images/loop_eintro_156.png diff --git a/data/init/images/loop_eintro_157.png b/data/init/images/loop_eintro_157.png Binary files differnew file mode 100644 index 000000000..bfcb0b3bf --- /dev/null +++ b/data/init/images/loop_eintro_157.png diff --git a/data/init/images/loop_eintro_158.png b/data/init/images/loop_eintro_158.png Binary files differnew file mode 100644 index 000000000..332b93559 --- /dev/null +++ b/data/init/images/loop_eintro_158.png diff --git a/data/init/images/loop_eintro_159.png b/data/init/images/loop_eintro_159.png Binary files differnew file mode 100644 index 000000000..21a7a6cae --- /dev/null +++ b/data/init/images/loop_eintro_159.png diff --git a/data/init/images/loop_eintro_160.png b/data/init/images/loop_eintro_160.png Binary files differnew file mode 100644 index 000000000..7790f0cfc --- /dev/null +++ b/data/init/images/loop_eintro_160.png diff --git a/data/init/images/loop_eintro_161.png b/data/init/images/loop_eintro_161.png Binary files differnew file mode 100644 index 000000000..9159f9b6a --- /dev/null +++ b/data/init/images/loop_eintro_161.png diff --git a/data/init/images/loop_eintro_162.png b/data/init/images/loop_eintro_162.png Binary files differnew file mode 100644 index 000000000..07346bb42 --- /dev/null +++ b/data/init/images/loop_eintro_162.png diff --git a/data/init/images/loop_eintro_163.png b/data/init/images/loop_eintro_163.png Binary files differnew file mode 100644 index 000000000..b92813534 --- /dev/null +++ b/data/init/images/loop_eintro_163.png diff --git a/data/init/images/loop_eintro_164.png b/data/init/images/loop_eintro_164.png Binary files differnew file mode 100644 index 000000000..0a80a8ad7 --- /dev/null +++ b/data/init/images/loop_eintro_164.png diff --git a/data/init/images/loop_eintro_165.png b/data/init/images/loop_eintro_165.png Binary files differnew file mode 100644 index 000000000..221042dca --- /dev/null +++ b/data/init/images/loop_eintro_165.png diff --git a/data/init/images/loop_eintro_166.png b/data/init/images/loop_eintro_166.png Binary files differnew file mode 100644 index 000000000..843c8500d --- /dev/null +++ b/data/init/images/loop_eintro_166.png diff --git a/data/init/images/loop_eintro_167.png b/data/init/images/loop_eintro_167.png Binary files differnew file mode 100644 index 000000000..4f1d08ae8 --- /dev/null +++ b/data/init/images/loop_eintro_167.png diff --git a/data/init/images/loop_eintro_168.png b/data/init/images/loop_eintro_168.png Binary files differnew file mode 100644 index 000000000..36ceb9f85 --- /dev/null +++ b/data/init/images/loop_eintro_168.png diff --git a/data/init/images/loop_eintro_169.png b/data/init/images/loop_eintro_169.png Binary files differnew file mode 100644 index 000000000..cc3dac0eb --- /dev/null +++ b/data/init/images/loop_eintro_169.png diff --git a/data/init/images/loop_eintro_170.png b/data/init/images/loop_eintro_170.png Binary files differnew file mode 100644 index 000000000..f8aba63ff --- /dev/null +++ b/data/init/images/loop_eintro_170.png diff --git a/data/init/images/loop_eintro_171.png b/data/init/images/loop_eintro_171.png Binary files differnew file mode 100644 index 000000000..3d63464d7 --- /dev/null +++ b/data/init/images/loop_eintro_171.png diff --git a/data/init/images/loop_eintro_172.png b/data/init/images/loop_eintro_172.png Binary files differnew file mode 100644 index 000000000..070d3a08d --- /dev/null +++ b/data/init/images/loop_eintro_172.png diff --git a/data/init/images/loop_eintro_173.png b/data/init/images/loop_eintro_173.png Binary files differnew file mode 100644 index 000000000..df136e544 --- /dev/null +++ b/data/init/images/loop_eintro_173.png diff --git a/data/init/images/loop_eintro_174.png b/data/init/images/loop_eintro_174.png Binary files differnew file mode 100644 index 000000000..91185107f --- /dev/null +++ b/data/init/images/loop_eintro_174.png diff --git a/data/init/images/loop_eintro_175.png b/data/init/images/loop_eintro_175.png Binary files differnew file mode 100644 index 000000000..ccd5c83f8 --- /dev/null +++ b/data/init/images/loop_eintro_175.png diff --git a/data/init/images/loop_eintro_176.png b/data/init/images/loop_eintro_176.png Binary files differnew file mode 100644 index 000000000..181504115 --- /dev/null +++ b/data/init/images/loop_eintro_176.png diff --git a/data/init/images/loop_eintro_177.png b/data/init/images/loop_eintro_177.png Binary files differnew file mode 100644 index 000000000..52b748c0a --- /dev/null +++ b/data/init/images/loop_eintro_177.png diff --git a/data/init/images/loop_eintro_178.png b/data/init/images/loop_eintro_178.png Binary files differnew file mode 100644 index 000000000..37af018d3 --- /dev/null +++ b/data/init/images/loop_eintro_178.png diff --git a/data/init/images/loop_eintro_179.png b/data/init/images/loop_eintro_179.png Binary files differnew file mode 100644 index 000000000..434abdd85 --- /dev/null +++ b/data/init/images/loop_eintro_179.png diff --git a/data/init/images/loop_eintro_180.png b/data/init/images/loop_eintro_180.png Binary files differnew file mode 100644 index 000000000..c056862e8 --- /dev/null +++ b/data/init/images/loop_eintro_180.png diff --git a/data/init/images/loop_eintro_181.png b/data/init/images/loop_eintro_181.png Binary files differnew file mode 100644 index 000000000..ba7750211 --- /dev/null +++ b/data/init/images/loop_eintro_181.png diff --git a/data/init/images/loop_eintro_182.png b/data/init/images/loop_eintro_182.png Binary files differnew file mode 100644 index 000000000..1a5235d23 --- /dev/null +++ b/data/init/images/loop_eintro_182.png diff --git a/data/init/images/loop_eintro_183.png b/data/init/images/loop_eintro_183.png Binary files differnew file mode 100644 index 000000000..62d80b560 --- /dev/null +++ b/data/init/images/loop_eintro_183.png diff --git a/data/init/images/loop_eintro_184.png b/data/init/images/loop_eintro_184.png Binary files differnew file mode 100644 index 000000000..ebc205d5e --- /dev/null +++ b/data/init/images/loop_eintro_184.png diff --git a/data/init/images/loop_eintro_185.png b/data/init/images/loop_eintro_185.png Binary files differnew file mode 100644 index 000000000..042dc8e55 --- /dev/null +++ b/data/init/images/loop_eintro_185.png diff --git a/data/init/images/loop_eintro_186.png b/data/init/images/loop_eintro_186.png Binary files differnew file mode 100644 index 000000000..faf1983e0 --- /dev/null +++ b/data/init/images/loop_eintro_186.png diff --git a/data/init/images/loop_eintro_187.png b/data/init/images/loop_eintro_187.png Binary files differnew file mode 100644 index 000000000..13d3030d9 --- /dev/null +++ b/data/init/images/loop_eintro_187.png diff --git a/data/init/images/loop_eintro_188.png b/data/init/images/loop_eintro_188.png Binary files differnew file mode 100644 index 000000000..5a1a8c6e0 --- /dev/null +++ b/data/init/images/loop_eintro_188.png diff --git a/data/init/images/loop_eintro_189.png b/data/init/images/loop_eintro_189.png Binary files differnew file mode 100644 index 000000000..104f63d89 --- /dev/null +++ b/data/init/images/loop_eintro_189.png diff --git a/data/init/images/loop_eintro_190.png b/data/init/images/loop_eintro_190.png Binary files differnew file mode 100644 index 000000000..79e612ef1 --- /dev/null +++ b/data/init/images/loop_eintro_190.png diff --git a/data/init/images/loop_eintro_191.png b/data/init/images/loop_eintro_191.png Binary files differnew file mode 100644 index 000000000..5c8d7c53b --- /dev/null +++ b/data/init/images/loop_eintro_191.png diff --git a/data/init/images/loop_eintro_192.png b/data/init/images/loop_eintro_192.png Binary files differnew file mode 100644 index 000000000..9f02a1d74 --- /dev/null +++ b/data/init/images/loop_eintro_192.png diff --git a/data/init/images/loop_eintro_193.png b/data/init/images/loop_eintro_193.png Binary files differnew file mode 100644 index 000000000..37fe7cf34 --- /dev/null +++ b/data/init/images/loop_eintro_193.png diff --git a/data/init/images/loop_eintro_194.png b/data/init/images/loop_eintro_194.png Binary files differnew file mode 100644 index 000000000..2402a1b02 --- /dev/null +++ b/data/init/images/loop_eintro_194.png diff --git a/data/init/images/loop_eintro_195.png b/data/init/images/loop_eintro_195.png Binary files differnew file mode 100644 index 000000000..c5b39917e --- /dev/null +++ b/data/init/images/loop_eintro_195.png diff --git a/data/init/images/loop_eintro_196.png b/data/init/images/loop_eintro_196.png Binary files differnew file mode 100644 index 000000000..e87d5c34c --- /dev/null +++ b/data/init/images/loop_eintro_196.png diff --git a/data/init/images/loop_eintro_197.png b/data/init/images/loop_eintro_197.png Binary files differnew file mode 100644 index 000000000..d8071424f --- /dev/null +++ b/data/init/images/loop_eintro_197.png diff --git a/data/init/images/loop_eintro_198.png b/data/init/images/loop_eintro_198.png Binary files differnew file mode 100644 index 000000000..b00cf4f39 --- /dev/null +++ b/data/init/images/loop_eintro_198.png diff --git a/data/init/images/loop_eintro_199.png b/data/init/images/loop_eintro_199.png Binary files differnew file mode 100644 index 000000000..5b2d7070d --- /dev/null +++ b/data/init/images/loop_eintro_199.png diff --git a/data/init/images/loop_eintro_200.png b/data/init/images/loop_eintro_200.png Binary files differnew file mode 100644 index 000000000..51a2fafad --- /dev/null +++ b/data/init/images/loop_eintro_200.png diff --git a/data/init/images/loop_eintro_201.png b/data/init/images/loop_eintro_201.png Binary files differnew file mode 100644 index 000000000..896d24207 --- /dev/null +++ b/data/init/images/loop_eintro_201.png diff --git a/data/init/images/loop_eintro_202.png b/data/init/images/loop_eintro_202.png Binary files differnew file mode 100644 index 000000000..10c74e268 --- /dev/null +++ b/data/init/images/loop_eintro_202.png diff --git a/data/init/images/loop_eintro_203.png b/data/init/images/loop_eintro_203.png Binary files differnew file mode 100644 index 000000000..d296545e4 --- /dev/null +++ b/data/init/images/loop_eintro_203.png diff --git a/data/init/images/loop_eintro_204.png b/data/init/images/loop_eintro_204.png Binary files differnew file mode 100644 index 000000000..802419500 --- /dev/null +++ b/data/init/images/loop_eintro_204.png diff --git a/data/init/images/loop_eintro_205.png b/data/init/images/loop_eintro_205.png Binary files differnew file mode 100644 index 000000000..65463f3d5 --- /dev/null +++ b/data/init/images/loop_eintro_205.png diff --git a/data/init/images/loop_eintro_206.png b/data/init/images/loop_eintro_206.png Binary files differnew file mode 100644 index 000000000..f88a199f9 --- /dev/null +++ b/data/init/images/loop_eintro_206.png diff --git a/data/init/images/loop_eintro_207.png b/data/init/images/loop_eintro_207.png Binary files differnew file mode 100644 index 000000000..aa6a06e18 --- /dev/null +++ b/data/init/images/loop_eintro_207.png diff --git a/data/init/images/loop_eintro_208.png b/data/init/images/loop_eintro_208.png Binary files differnew file mode 100644 index 000000000..3a41ad8de --- /dev/null +++ b/data/init/images/loop_eintro_208.png diff --git a/data/init/images/loop_eintro_209.png b/data/init/images/loop_eintro_209.png Binary files differnew file mode 100644 index 000000000..05618a4bb --- /dev/null +++ b/data/init/images/loop_eintro_209.png diff --git a/data/init/images/loop_eintro_210.png b/data/init/images/loop_eintro_210.png Binary files differnew file mode 100644 index 000000000..7cc3fb268 --- /dev/null +++ b/data/init/images/loop_eintro_210.png diff --git a/data/init/images/loop_eintro_211.png b/data/init/images/loop_eintro_211.png Binary files differnew file mode 100644 index 000000000..42059dd3e --- /dev/null +++ b/data/init/images/loop_eintro_211.png diff --git a/data/init/images/loop_eintro_212.png b/data/init/images/loop_eintro_212.png Binary files differnew file mode 100644 index 000000000..46e8b58b4 --- /dev/null +++ b/data/init/images/loop_eintro_212.png diff --git a/data/init/images/loop_eintro_213.png b/data/init/images/loop_eintro_213.png Binary files differnew file mode 100644 index 000000000..02130b37a --- /dev/null +++ b/data/init/images/loop_eintro_213.png diff --git a/data/init/images/loop_eintro_214.png b/data/init/images/loop_eintro_214.png Binary files differnew file mode 100644 index 000000000..35900fb5a --- /dev/null +++ b/data/init/images/loop_eintro_214.png diff --git a/data/init/images/loop_eintro_215.png b/data/init/images/loop_eintro_215.png Binary files differnew file mode 100644 index 000000000..72b7f8b74 --- /dev/null +++ b/data/init/images/loop_eintro_215.png diff --git a/data/init/images/loop_eintro_216.png b/data/init/images/loop_eintro_216.png Binary files differnew file mode 100644 index 000000000..c807df50f --- /dev/null +++ b/data/init/images/loop_eintro_216.png diff --git a/data/init/images/loop_eintro_217.png b/data/init/images/loop_eintro_217.png Binary files differnew file mode 100644 index 000000000..391d7edef --- /dev/null +++ b/data/init/images/loop_eintro_217.png diff --git a/data/init/images/loop_eintro_218.png b/data/init/images/loop_eintro_218.png Binary files differnew file mode 100644 index 000000000..7d15b3eea --- /dev/null +++ b/data/init/images/loop_eintro_218.png diff --git a/data/init/images/loop_eintro_219.png b/data/init/images/loop_eintro_219.png Binary files differnew file mode 100644 index 000000000..be8ffe2e1 --- /dev/null +++ b/data/init/images/loop_eintro_219.png diff --git a/data/init/images/loop_eintro_220.png b/data/init/images/loop_eintro_220.png Binary files differnew file mode 100644 index 000000000..0699ed1b0 --- /dev/null +++ b/data/init/images/loop_eintro_220.png diff --git a/data/init/images/loop_eintro_221.png b/data/init/images/loop_eintro_221.png Binary files differnew file mode 100644 index 000000000..673f459f4 --- /dev/null +++ b/data/init/images/loop_eintro_221.png diff --git a/data/init/images/loop_eintro_222.png b/data/init/images/loop_eintro_222.png Binary files differnew file mode 100644 index 000000000..c25c35606 --- /dev/null +++ b/data/init/images/loop_eintro_222.png diff --git a/data/init/images/loop_eintro_223.png b/data/init/images/loop_eintro_223.png Binary files differnew file mode 100644 index 000000000..855c785fd --- /dev/null +++ b/data/init/images/loop_eintro_223.png diff --git a/data/init/images/loop_eintro_224.png b/data/init/images/loop_eintro_224.png Binary files differnew file mode 100644 index 000000000..4d9aa84c6 --- /dev/null +++ b/data/init/images/loop_eintro_224.png diff --git a/data/init/images/loop_eintro_225.png b/data/init/images/loop_eintro_225.png Binary files differnew file mode 100644 index 000000000..7bbeb96d1 --- /dev/null +++ b/data/init/images/loop_eintro_225.png diff --git a/data/init/images/loop_eintro_226.png b/data/init/images/loop_eintro_226.png Binary files differnew file mode 100644 index 000000000..a981db495 --- /dev/null +++ b/data/init/images/loop_eintro_226.png diff --git a/data/init/images/loop_eintro_227.png b/data/init/images/loop_eintro_227.png Binary files differnew file mode 100644 index 000000000..f61c87387 --- /dev/null +++ b/data/init/images/loop_eintro_227.png diff --git a/data/init/images/loop_eintro_228.png b/data/init/images/loop_eintro_228.png Binary files differnew file mode 100644 index 000000000..2798f0648 --- /dev/null +++ b/data/init/images/loop_eintro_228.png diff --git a/data/init/images/loop_eintro_229.png b/data/init/images/loop_eintro_229.png Binary files differnew file mode 100644 index 000000000..2dd439b92 --- /dev/null +++ b/data/init/images/loop_eintro_229.png diff --git a/data/init/images/loop_eintro_230.png b/data/init/images/loop_eintro_230.png Binary files differnew file mode 100644 index 000000000..f239229f4 --- /dev/null +++ b/data/init/images/loop_eintro_230.png diff --git a/data/init/images/loop_eintro_231.png b/data/init/images/loop_eintro_231.png Binary files differnew file mode 100644 index 000000000..a62e88ff1 --- /dev/null +++ b/data/init/images/loop_eintro_231.png diff --git a/data/init/images/loop_eintro_232.png b/data/init/images/loop_eintro_232.png Binary files differnew file mode 100644 index 000000000..5bb20de01 --- /dev/null +++ b/data/init/images/loop_eintro_232.png diff --git a/data/init/images/loop_eintro_233.png b/data/init/images/loop_eintro_233.png Binary files differnew file mode 100644 index 000000000..ca2813d3a --- /dev/null +++ b/data/init/images/loop_eintro_233.png diff --git a/data/init/images/loop_eintro_234.png b/data/init/images/loop_eintro_234.png Binary files differnew file mode 100644 index 000000000..a32b491f9 --- /dev/null +++ b/data/init/images/loop_eintro_234.png diff --git a/data/init/images/loop_eintro_235.png b/data/init/images/loop_eintro_235.png Binary files differnew file mode 100644 index 000000000..dddefa8d7 --- /dev/null +++ b/data/init/images/loop_eintro_235.png diff --git a/data/init/images/loop_eintro_236.png b/data/init/images/loop_eintro_236.png Binary files differnew file mode 100644 index 000000000..fc1344c58 --- /dev/null +++ b/data/init/images/loop_eintro_236.png diff --git a/data/init/images/loop_eintro_237.png b/data/init/images/loop_eintro_237.png Binary files differnew file mode 100644 index 000000000..1213c972e --- /dev/null +++ b/data/init/images/loop_eintro_237.png diff --git a/data/init/images/loop_eintro_238.png b/data/init/images/loop_eintro_238.png Binary files differnew file mode 100644 index 000000000..49151eeea --- /dev/null +++ b/data/init/images/loop_eintro_238.png diff --git a/data/init/images/loop_eintro_239.png b/data/init/images/loop_eintro_239.png Binary files differnew file mode 100644 index 000000000..d269a6d64 --- /dev/null +++ b/data/init/images/loop_eintro_239.png diff --git a/data/init/images/loop_eintro_240.png b/data/init/images/loop_eintro_240.png Binary files differnew file mode 100644 index 000000000..eb1a79990 --- /dev/null +++ b/data/init/images/loop_eintro_240.png diff --git a/data/init/images/reflection_overlay.png b/data/init/images/reflection_overlay.png Binary files differnew file mode 100644 index 000000000..f33c4e166 --- /dev/null +++ b/data/init/images/reflection_overlay.png diff --git a/data/init/images/shadow.png b/data/init/images/shadow.png Binary files differnew file mode 100644 index 000000000..93410708e --- /dev/null +++ b/data/init/images/shadow.png diff --git a/data/init/images/sm_loop_eintro_121.png b/data/init/images/sm_loop_eintro_121.png Binary files differnew file mode 100644 index 000000000..15544c7d5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_121.png diff --git a/data/init/images/sm_loop_eintro_122.png b/data/init/images/sm_loop_eintro_122.png Binary files differnew file mode 100644 index 000000000..c3e27a993 --- /dev/null +++ b/data/init/images/sm_loop_eintro_122.png diff --git a/data/init/images/sm_loop_eintro_123.png b/data/init/images/sm_loop_eintro_123.png Binary files differnew file mode 100644 index 000000000..ff6d03c00 --- /dev/null +++ b/data/init/images/sm_loop_eintro_123.png diff --git a/data/init/images/sm_loop_eintro_124.png b/data/init/images/sm_loop_eintro_124.png Binary files differnew file mode 100644 index 000000000..7f77919c0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_124.png diff --git a/data/init/images/sm_loop_eintro_125.png b/data/init/images/sm_loop_eintro_125.png Binary files differnew file mode 100644 index 000000000..0e282e98a --- /dev/null +++ b/data/init/images/sm_loop_eintro_125.png diff --git a/data/init/images/sm_loop_eintro_126.png b/data/init/images/sm_loop_eintro_126.png Binary files differnew file mode 100644 index 000000000..70ecdd037 --- /dev/null +++ b/data/init/images/sm_loop_eintro_126.png diff --git a/data/init/images/sm_loop_eintro_127.png b/data/init/images/sm_loop_eintro_127.png Binary files differnew file mode 100644 index 000000000..c1975dedc --- /dev/null +++ b/data/init/images/sm_loop_eintro_127.png diff --git a/data/init/images/sm_loop_eintro_128.png b/data/init/images/sm_loop_eintro_128.png Binary files differnew file mode 100644 index 000000000..3523e4e28 --- /dev/null +++ b/data/init/images/sm_loop_eintro_128.png diff --git a/data/init/images/sm_loop_eintro_129.png b/data/init/images/sm_loop_eintro_129.png Binary files differnew file mode 100644 index 000000000..e57a860a5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_129.png diff --git a/data/init/images/sm_loop_eintro_130.png b/data/init/images/sm_loop_eintro_130.png Binary files differnew file mode 100644 index 000000000..2f86fb33d --- /dev/null +++ b/data/init/images/sm_loop_eintro_130.png diff --git a/data/init/images/sm_loop_eintro_131.png b/data/init/images/sm_loop_eintro_131.png Binary files differnew file mode 100644 index 000000000..2f53cdd3c --- /dev/null +++ b/data/init/images/sm_loop_eintro_131.png diff --git a/data/init/images/sm_loop_eintro_132.png b/data/init/images/sm_loop_eintro_132.png Binary files differnew file mode 100644 index 000000000..cb07167ee --- /dev/null +++ b/data/init/images/sm_loop_eintro_132.png diff --git a/data/init/images/sm_loop_eintro_133.png b/data/init/images/sm_loop_eintro_133.png Binary files differnew file mode 100644 index 000000000..a851160eb --- /dev/null +++ b/data/init/images/sm_loop_eintro_133.png diff --git a/data/init/images/sm_loop_eintro_134.png b/data/init/images/sm_loop_eintro_134.png Binary files differnew file mode 100644 index 000000000..920aecab7 --- /dev/null +++ b/data/init/images/sm_loop_eintro_134.png diff --git a/data/init/images/sm_loop_eintro_135.png b/data/init/images/sm_loop_eintro_135.png Binary files differnew file mode 100644 index 000000000..121acea7c --- /dev/null +++ b/data/init/images/sm_loop_eintro_135.png diff --git a/data/init/images/sm_loop_eintro_136.png b/data/init/images/sm_loop_eintro_136.png Binary files differnew file mode 100644 index 000000000..822cbd5f5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_136.png diff --git a/data/init/images/sm_loop_eintro_137.png b/data/init/images/sm_loop_eintro_137.png Binary files differnew file mode 100644 index 000000000..eaccc99f0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_137.png diff --git a/data/init/images/sm_loop_eintro_138.png b/data/init/images/sm_loop_eintro_138.png Binary files differnew file mode 100644 index 000000000..7d5dd050b --- /dev/null +++ b/data/init/images/sm_loop_eintro_138.png diff --git a/data/init/images/sm_loop_eintro_139.png b/data/init/images/sm_loop_eintro_139.png Binary files differnew file mode 100644 index 000000000..38a994642 --- /dev/null +++ b/data/init/images/sm_loop_eintro_139.png diff --git a/data/init/images/sm_loop_eintro_140.png b/data/init/images/sm_loop_eintro_140.png Binary files differnew file mode 100644 index 000000000..048a070f0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_140.png diff --git a/data/init/images/sm_loop_eintro_141.png b/data/init/images/sm_loop_eintro_141.png Binary files differnew file mode 100644 index 000000000..0263007bc --- /dev/null +++ b/data/init/images/sm_loop_eintro_141.png diff --git a/data/init/images/sm_loop_eintro_142.png b/data/init/images/sm_loop_eintro_142.png Binary files differnew file mode 100644 index 000000000..856575aad --- /dev/null +++ b/data/init/images/sm_loop_eintro_142.png diff --git a/data/init/images/sm_loop_eintro_143.png b/data/init/images/sm_loop_eintro_143.png Binary files differnew file mode 100644 index 000000000..8bac33afb --- /dev/null +++ b/data/init/images/sm_loop_eintro_143.png diff --git a/data/init/images/sm_loop_eintro_144.png b/data/init/images/sm_loop_eintro_144.png Binary files differnew file mode 100644 index 000000000..6c2c90591 --- /dev/null +++ b/data/init/images/sm_loop_eintro_144.png diff --git a/data/init/images/sm_loop_eintro_145.png b/data/init/images/sm_loop_eintro_145.png Binary files differnew file mode 100644 index 000000000..7ceccc3ba --- /dev/null +++ b/data/init/images/sm_loop_eintro_145.png diff --git a/data/init/images/sm_loop_eintro_146.png b/data/init/images/sm_loop_eintro_146.png Binary files differnew file mode 100644 index 000000000..f0bae7fa5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_146.png diff --git a/data/init/images/sm_loop_eintro_147.png b/data/init/images/sm_loop_eintro_147.png Binary files differnew file mode 100644 index 000000000..6ae1565f7 --- /dev/null +++ b/data/init/images/sm_loop_eintro_147.png diff --git a/data/init/images/sm_loop_eintro_148.png b/data/init/images/sm_loop_eintro_148.png Binary files differnew file mode 100644 index 000000000..78917e17e --- /dev/null +++ b/data/init/images/sm_loop_eintro_148.png diff --git a/data/init/images/sm_loop_eintro_149.png b/data/init/images/sm_loop_eintro_149.png Binary files differnew file mode 100644 index 000000000..aee53bd68 --- /dev/null +++ b/data/init/images/sm_loop_eintro_149.png diff --git a/data/init/images/sm_loop_eintro_150.png b/data/init/images/sm_loop_eintro_150.png Binary files differnew file mode 100644 index 000000000..17fadae41 --- /dev/null +++ b/data/init/images/sm_loop_eintro_150.png diff --git a/data/init/images/sm_loop_eintro_151.png b/data/init/images/sm_loop_eintro_151.png Binary files differnew file mode 100644 index 000000000..e11a2b9f0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_151.png diff --git a/data/init/images/sm_loop_eintro_152.png b/data/init/images/sm_loop_eintro_152.png Binary files differnew file mode 100644 index 000000000..5781dc5aa --- /dev/null +++ b/data/init/images/sm_loop_eintro_152.png diff --git a/data/init/images/sm_loop_eintro_153.png b/data/init/images/sm_loop_eintro_153.png Binary files differnew file mode 100644 index 000000000..cb5428da4 --- /dev/null +++ b/data/init/images/sm_loop_eintro_153.png diff --git a/data/init/images/sm_loop_eintro_154.png b/data/init/images/sm_loop_eintro_154.png Binary files differnew file mode 100644 index 000000000..3025d678d --- /dev/null +++ b/data/init/images/sm_loop_eintro_154.png diff --git a/data/init/images/sm_loop_eintro_155.png b/data/init/images/sm_loop_eintro_155.png Binary files differnew file mode 100644 index 000000000..cb2152de6 --- /dev/null +++ b/data/init/images/sm_loop_eintro_155.png diff --git a/data/init/images/sm_loop_eintro_156.png b/data/init/images/sm_loop_eintro_156.png Binary files differnew file mode 100644 index 000000000..8043222f8 --- /dev/null +++ b/data/init/images/sm_loop_eintro_156.png diff --git a/data/init/images/sm_loop_eintro_157.png b/data/init/images/sm_loop_eintro_157.png Binary files differnew file mode 100644 index 000000000..772519352 --- /dev/null +++ b/data/init/images/sm_loop_eintro_157.png diff --git a/data/init/images/sm_loop_eintro_158.png b/data/init/images/sm_loop_eintro_158.png Binary files differnew file mode 100644 index 000000000..f7c107133 --- /dev/null +++ b/data/init/images/sm_loop_eintro_158.png diff --git a/data/init/images/sm_loop_eintro_159.png b/data/init/images/sm_loop_eintro_159.png Binary files differnew file mode 100644 index 000000000..f333cc4c2 --- /dev/null +++ b/data/init/images/sm_loop_eintro_159.png diff --git a/data/init/images/sm_loop_eintro_160.png b/data/init/images/sm_loop_eintro_160.png Binary files differnew file mode 100644 index 000000000..7d49cf011 --- /dev/null +++ b/data/init/images/sm_loop_eintro_160.png diff --git a/data/init/images/sm_loop_eintro_161.png b/data/init/images/sm_loop_eintro_161.png Binary files differnew file mode 100644 index 000000000..fba730889 --- /dev/null +++ b/data/init/images/sm_loop_eintro_161.png diff --git a/data/init/images/sm_loop_eintro_162.png b/data/init/images/sm_loop_eintro_162.png Binary files differnew file mode 100644 index 000000000..adb401474 --- /dev/null +++ b/data/init/images/sm_loop_eintro_162.png diff --git a/data/init/images/sm_loop_eintro_163.png b/data/init/images/sm_loop_eintro_163.png Binary files differnew file mode 100644 index 000000000..6bd1da268 --- /dev/null +++ b/data/init/images/sm_loop_eintro_163.png diff --git a/data/init/images/sm_loop_eintro_164.png b/data/init/images/sm_loop_eintro_164.png Binary files differnew file mode 100644 index 000000000..e3cf6c32e --- /dev/null +++ b/data/init/images/sm_loop_eintro_164.png diff --git a/data/init/images/sm_loop_eintro_165.png b/data/init/images/sm_loop_eintro_165.png Binary files differnew file mode 100644 index 000000000..c66fece48 --- /dev/null +++ b/data/init/images/sm_loop_eintro_165.png diff --git a/data/init/images/sm_loop_eintro_166.png b/data/init/images/sm_loop_eintro_166.png Binary files differnew file mode 100644 index 000000000..aeba2aa63 --- /dev/null +++ b/data/init/images/sm_loop_eintro_166.png diff --git a/data/init/images/sm_loop_eintro_167.png b/data/init/images/sm_loop_eintro_167.png Binary files differnew file mode 100644 index 000000000..e5fe5d37a --- /dev/null +++ b/data/init/images/sm_loop_eintro_167.png diff --git a/data/init/images/sm_loop_eintro_168.png b/data/init/images/sm_loop_eintro_168.png Binary files differnew file mode 100644 index 000000000..3854381b6 --- /dev/null +++ b/data/init/images/sm_loop_eintro_168.png diff --git a/data/init/images/sm_loop_eintro_169.png b/data/init/images/sm_loop_eintro_169.png Binary files differnew file mode 100644 index 000000000..7659ef50a --- /dev/null +++ b/data/init/images/sm_loop_eintro_169.png diff --git a/data/init/images/sm_loop_eintro_170.png b/data/init/images/sm_loop_eintro_170.png Binary files differnew file mode 100644 index 000000000..4b7b30cbc --- /dev/null +++ b/data/init/images/sm_loop_eintro_170.png diff --git a/data/init/images/sm_loop_eintro_171.png b/data/init/images/sm_loop_eintro_171.png Binary files differnew file mode 100644 index 000000000..c62678c0c --- /dev/null +++ b/data/init/images/sm_loop_eintro_171.png diff --git a/data/init/images/sm_loop_eintro_172.png b/data/init/images/sm_loop_eintro_172.png Binary files differnew file mode 100644 index 000000000..72b3c6b2f --- /dev/null +++ b/data/init/images/sm_loop_eintro_172.png diff --git a/data/init/images/sm_loop_eintro_173.png b/data/init/images/sm_loop_eintro_173.png Binary files differnew file mode 100644 index 000000000..5fc727620 --- /dev/null +++ b/data/init/images/sm_loop_eintro_173.png diff --git a/data/init/images/sm_loop_eintro_174.png b/data/init/images/sm_loop_eintro_174.png Binary files differnew file mode 100644 index 000000000..b36fb958b --- /dev/null +++ b/data/init/images/sm_loop_eintro_174.png diff --git a/data/init/images/sm_loop_eintro_175.png b/data/init/images/sm_loop_eintro_175.png Binary files differnew file mode 100644 index 000000000..b67fbcace --- /dev/null +++ b/data/init/images/sm_loop_eintro_175.png diff --git a/data/init/images/sm_loop_eintro_176.png b/data/init/images/sm_loop_eintro_176.png Binary files differnew file mode 100644 index 000000000..07065475e --- /dev/null +++ b/data/init/images/sm_loop_eintro_176.png diff --git a/data/init/images/sm_loop_eintro_177.png b/data/init/images/sm_loop_eintro_177.png Binary files differnew file mode 100644 index 000000000..df88227ca --- /dev/null +++ b/data/init/images/sm_loop_eintro_177.png diff --git a/data/init/images/sm_loop_eintro_178.png b/data/init/images/sm_loop_eintro_178.png Binary files differnew file mode 100644 index 000000000..9812fdc11 --- /dev/null +++ b/data/init/images/sm_loop_eintro_178.png diff --git a/data/init/images/sm_loop_eintro_179.png b/data/init/images/sm_loop_eintro_179.png Binary files differnew file mode 100644 index 000000000..8872bf078 --- /dev/null +++ b/data/init/images/sm_loop_eintro_179.png diff --git a/data/init/images/sm_loop_eintro_180.png b/data/init/images/sm_loop_eintro_180.png Binary files differnew file mode 100644 index 000000000..862b5b071 --- /dev/null +++ b/data/init/images/sm_loop_eintro_180.png diff --git a/data/init/images/sm_loop_eintro_181.png b/data/init/images/sm_loop_eintro_181.png Binary files differnew file mode 100644 index 000000000..a78413c12 --- /dev/null +++ b/data/init/images/sm_loop_eintro_181.png diff --git a/data/init/images/sm_loop_eintro_182.png b/data/init/images/sm_loop_eintro_182.png Binary files differnew file mode 100644 index 000000000..d2455088a --- /dev/null +++ b/data/init/images/sm_loop_eintro_182.png diff --git a/data/init/images/sm_loop_eintro_183.png b/data/init/images/sm_loop_eintro_183.png Binary files differnew file mode 100644 index 000000000..0d0133bd2 --- /dev/null +++ b/data/init/images/sm_loop_eintro_183.png diff --git a/data/init/images/sm_loop_eintro_184.png b/data/init/images/sm_loop_eintro_184.png Binary files differnew file mode 100644 index 000000000..3b0069f96 --- /dev/null +++ b/data/init/images/sm_loop_eintro_184.png diff --git a/data/init/images/sm_loop_eintro_185.png b/data/init/images/sm_loop_eintro_185.png Binary files differnew file mode 100644 index 000000000..7a95db306 --- /dev/null +++ b/data/init/images/sm_loop_eintro_185.png diff --git a/data/init/images/sm_loop_eintro_186.png b/data/init/images/sm_loop_eintro_186.png Binary files differnew file mode 100644 index 000000000..6dd713d33 --- /dev/null +++ b/data/init/images/sm_loop_eintro_186.png diff --git a/data/init/images/sm_loop_eintro_187.png b/data/init/images/sm_loop_eintro_187.png Binary files differnew file mode 100644 index 000000000..07fd7608c --- /dev/null +++ b/data/init/images/sm_loop_eintro_187.png diff --git a/data/init/images/sm_loop_eintro_188.png b/data/init/images/sm_loop_eintro_188.png Binary files differnew file mode 100644 index 000000000..9a98856c5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_188.png diff --git a/data/init/images/sm_loop_eintro_189.png b/data/init/images/sm_loop_eintro_189.png Binary files differnew file mode 100644 index 000000000..79ac7c2f0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_189.png diff --git a/data/init/images/sm_loop_eintro_190.png b/data/init/images/sm_loop_eintro_190.png Binary files differnew file mode 100644 index 000000000..901a52498 --- /dev/null +++ b/data/init/images/sm_loop_eintro_190.png diff --git a/data/init/images/sm_loop_eintro_191.png b/data/init/images/sm_loop_eintro_191.png Binary files differnew file mode 100644 index 000000000..cdf5fe441 --- /dev/null +++ b/data/init/images/sm_loop_eintro_191.png diff --git a/data/init/images/sm_loop_eintro_192.png b/data/init/images/sm_loop_eintro_192.png Binary files differnew file mode 100644 index 000000000..6920aa8ad --- /dev/null +++ b/data/init/images/sm_loop_eintro_192.png diff --git a/data/init/images/sm_loop_eintro_193.png b/data/init/images/sm_loop_eintro_193.png Binary files differnew file mode 100644 index 000000000..de16e3f2d --- /dev/null +++ b/data/init/images/sm_loop_eintro_193.png diff --git a/data/init/images/sm_loop_eintro_194.png b/data/init/images/sm_loop_eintro_194.png Binary files differnew file mode 100644 index 000000000..d845f33d6 --- /dev/null +++ b/data/init/images/sm_loop_eintro_194.png diff --git a/data/init/images/sm_loop_eintro_195.png b/data/init/images/sm_loop_eintro_195.png Binary files differnew file mode 100644 index 000000000..ebcde7ba0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_195.png diff --git a/data/init/images/sm_loop_eintro_196.png b/data/init/images/sm_loop_eintro_196.png Binary files differnew file mode 100644 index 000000000..0e5386e3e --- /dev/null +++ b/data/init/images/sm_loop_eintro_196.png diff --git a/data/init/images/sm_loop_eintro_197.png b/data/init/images/sm_loop_eintro_197.png Binary files differnew file mode 100644 index 000000000..6f9abf622 --- /dev/null +++ b/data/init/images/sm_loop_eintro_197.png diff --git a/data/init/images/sm_loop_eintro_198.png b/data/init/images/sm_loop_eintro_198.png Binary files differnew file mode 100644 index 000000000..f28f21e5b --- /dev/null +++ b/data/init/images/sm_loop_eintro_198.png diff --git a/data/init/images/sm_loop_eintro_199.png b/data/init/images/sm_loop_eintro_199.png Binary files differnew file mode 100644 index 000000000..b0cc6f07a --- /dev/null +++ b/data/init/images/sm_loop_eintro_199.png diff --git a/data/init/images/sm_loop_eintro_200.png b/data/init/images/sm_loop_eintro_200.png Binary files differnew file mode 100644 index 000000000..b18f7d78e --- /dev/null +++ b/data/init/images/sm_loop_eintro_200.png diff --git a/data/init/images/sm_loop_eintro_201.png b/data/init/images/sm_loop_eintro_201.png Binary files differnew file mode 100644 index 000000000..ae78e71c9 --- /dev/null +++ b/data/init/images/sm_loop_eintro_201.png diff --git a/data/init/images/sm_loop_eintro_202.png b/data/init/images/sm_loop_eintro_202.png Binary files differnew file mode 100644 index 000000000..7c5b8f588 --- /dev/null +++ b/data/init/images/sm_loop_eintro_202.png diff --git a/data/init/images/sm_loop_eintro_203.png b/data/init/images/sm_loop_eintro_203.png Binary files differnew file mode 100644 index 000000000..b2695166c --- /dev/null +++ b/data/init/images/sm_loop_eintro_203.png diff --git a/data/init/images/sm_loop_eintro_204.png b/data/init/images/sm_loop_eintro_204.png Binary files differnew file mode 100644 index 000000000..5c2b04b79 --- /dev/null +++ b/data/init/images/sm_loop_eintro_204.png diff --git a/data/init/images/sm_loop_eintro_205.png b/data/init/images/sm_loop_eintro_205.png Binary files differnew file mode 100644 index 000000000..aebb1ac3e --- /dev/null +++ b/data/init/images/sm_loop_eintro_205.png diff --git a/data/init/images/sm_loop_eintro_206.png b/data/init/images/sm_loop_eintro_206.png Binary files differnew file mode 100644 index 000000000..36d05d02c --- /dev/null +++ b/data/init/images/sm_loop_eintro_206.png diff --git a/data/init/images/sm_loop_eintro_207.png b/data/init/images/sm_loop_eintro_207.png Binary files differnew file mode 100644 index 000000000..4e3dc5660 --- /dev/null +++ b/data/init/images/sm_loop_eintro_207.png diff --git a/data/init/images/sm_loop_eintro_208.png b/data/init/images/sm_loop_eintro_208.png Binary files differnew file mode 100644 index 000000000..dfd7a2bc0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_208.png diff --git a/data/init/images/sm_loop_eintro_209.png b/data/init/images/sm_loop_eintro_209.png Binary files differnew file mode 100644 index 000000000..e054c2d18 --- /dev/null +++ b/data/init/images/sm_loop_eintro_209.png diff --git a/data/init/images/sm_loop_eintro_210.png b/data/init/images/sm_loop_eintro_210.png Binary files differnew file mode 100644 index 000000000..cc9741072 --- /dev/null +++ b/data/init/images/sm_loop_eintro_210.png diff --git a/data/init/images/sm_loop_eintro_211.png b/data/init/images/sm_loop_eintro_211.png Binary files differnew file mode 100644 index 000000000..5843f17cb --- /dev/null +++ b/data/init/images/sm_loop_eintro_211.png diff --git a/data/init/images/sm_loop_eintro_212.png b/data/init/images/sm_loop_eintro_212.png Binary files differnew file mode 100644 index 000000000..0ade9c421 --- /dev/null +++ b/data/init/images/sm_loop_eintro_212.png diff --git a/data/init/images/sm_loop_eintro_213.png b/data/init/images/sm_loop_eintro_213.png Binary files differnew file mode 100644 index 000000000..024d4e6c2 --- /dev/null +++ b/data/init/images/sm_loop_eintro_213.png diff --git a/data/init/images/sm_loop_eintro_214.png b/data/init/images/sm_loop_eintro_214.png Binary files differnew file mode 100644 index 000000000..98dd420d1 --- /dev/null +++ b/data/init/images/sm_loop_eintro_214.png diff --git a/data/init/images/sm_loop_eintro_215.png b/data/init/images/sm_loop_eintro_215.png Binary files differnew file mode 100644 index 000000000..503293e66 --- /dev/null +++ b/data/init/images/sm_loop_eintro_215.png diff --git a/data/init/images/sm_loop_eintro_216.png b/data/init/images/sm_loop_eintro_216.png Binary files differnew file mode 100644 index 000000000..b84daaff4 --- /dev/null +++ b/data/init/images/sm_loop_eintro_216.png diff --git a/data/init/images/sm_loop_eintro_217.png b/data/init/images/sm_loop_eintro_217.png Binary files differnew file mode 100644 index 000000000..890fcb81c --- /dev/null +++ b/data/init/images/sm_loop_eintro_217.png diff --git a/data/init/images/sm_loop_eintro_218.png b/data/init/images/sm_loop_eintro_218.png Binary files differnew file mode 100644 index 000000000..4ce3af10c --- /dev/null +++ b/data/init/images/sm_loop_eintro_218.png diff --git a/data/init/images/sm_loop_eintro_219.png b/data/init/images/sm_loop_eintro_219.png Binary files differnew file mode 100644 index 000000000..54bb1f769 --- /dev/null +++ b/data/init/images/sm_loop_eintro_219.png diff --git a/data/init/images/sm_loop_eintro_220.png b/data/init/images/sm_loop_eintro_220.png Binary files differnew file mode 100644 index 000000000..2b64f3ec5 --- /dev/null +++ b/data/init/images/sm_loop_eintro_220.png diff --git a/data/init/images/sm_loop_eintro_221.png b/data/init/images/sm_loop_eintro_221.png Binary files differnew file mode 100644 index 000000000..3ed05d278 --- /dev/null +++ b/data/init/images/sm_loop_eintro_221.png diff --git a/data/init/images/sm_loop_eintro_222.png b/data/init/images/sm_loop_eintro_222.png Binary files differnew file mode 100644 index 000000000..44acf65a1 --- /dev/null +++ b/data/init/images/sm_loop_eintro_222.png diff --git a/data/init/images/sm_loop_eintro_223.png b/data/init/images/sm_loop_eintro_223.png Binary files differnew file mode 100644 index 000000000..a91ea1bd0 --- /dev/null +++ b/data/init/images/sm_loop_eintro_223.png diff --git a/data/init/images/sm_loop_eintro_224.png b/data/init/images/sm_loop_eintro_224.png Binary files differnew file mode 100644 index 000000000..48e77dfec --- /dev/null +++ b/data/init/images/sm_loop_eintro_224.png diff --git a/data/init/images/sm_loop_eintro_225.png b/data/init/images/sm_loop_eintro_225.png Binary files differnew file mode 100644 index 000000000..00eef3468 --- /dev/null +++ b/data/init/images/sm_loop_eintro_225.png diff --git a/data/init/images/sm_loop_eintro_226.png b/data/init/images/sm_loop_eintro_226.png Binary files differnew file mode 100644 index 000000000..764c7aa28 --- /dev/null +++ b/data/init/images/sm_loop_eintro_226.png diff --git a/data/init/images/sm_loop_eintro_227.png b/data/init/images/sm_loop_eintro_227.png Binary files differnew file mode 100644 index 000000000..ec132b8b6 --- /dev/null +++ b/data/init/images/sm_loop_eintro_227.png diff --git a/data/init/images/sm_loop_eintro_228.png b/data/init/images/sm_loop_eintro_228.png Binary files differnew file mode 100644 index 000000000..fe6256310 --- /dev/null +++ b/data/init/images/sm_loop_eintro_228.png diff --git a/data/init/images/sm_loop_eintro_229.png b/data/init/images/sm_loop_eintro_229.png Binary files differnew file mode 100644 index 000000000..ca300bae9 --- /dev/null +++ b/data/init/images/sm_loop_eintro_229.png diff --git a/data/init/images/sm_loop_eintro_230.png b/data/init/images/sm_loop_eintro_230.png Binary files differnew file mode 100644 index 000000000..5d286c61e --- /dev/null +++ b/data/init/images/sm_loop_eintro_230.png diff --git a/data/init/images/sm_loop_eintro_231.png b/data/init/images/sm_loop_eintro_231.png Binary files differnew file mode 100644 index 000000000..8f0432013 --- /dev/null +++ b/data/init/images/sm_loop_eintro_231.png diff --git a/data/init/images/sm_loop_eintro_232.png b/data/init/images/sm_loop_eintro_232.png Binary files differnew file mode 100644 index 000000000..9348381b8 --- /dev/null +++ b/data/init/images/sm_loop_eintro_232.png diff --git a/data/init/images/sm_loop_eintro_233.png b/data/init/images/sm_loop_eintro_233.png Binary files differnew file mode 100644 index 000000000..261414326 --- /dev/null +++ b/data/init/images/sm_loop_eintro_233.png diff --git a/data/init/images/sm_loop_eintro_234.png b/data/init/images/sm_loop_eintro_234.png Binary files differnew file mode 100644 index 000000000..bb44a4160 --- /dev/null +++ b/data/init/images/sm_loop_eintro_234.png diff --git a/data/init/images/sm_loop_eintro_235.png b/data/init/images/sm_loop_eintro_235.png Binary files differnew file mode 100644 index 000000000..4eb615a6d --- /dev/null +++ b/data/init/images/sm_loop_eintro_235.png diff --git a/data/init/images/sm_loop_eintro_236.png b/data/init/images/sm_loop_eintro_236.png Binary files differnew file mode 100644 index 000000000..e7a542458 --- /dev/null +++ b/data/init/images/sm_loop_eintro_236.png diff --git a/data/init/images/sm_loop_eintro_237.png b/data/init/images/sm_loop_eintro_237.png Binary files differnew file mode 100644 index 000000000..c989ae0ae --- /dev/null +++ b/data/init/images/sm_loop_eintro_237.png diff --git a/data/init/images/sm_loop_eintro_238.png b/data/init/images/sm_loop_eintro_238.png Binary files differnew file mode 100644 index 000000000..ff85b38b2 --- /dev/null +++ b/data/init/images/sm_loop_eintro_238.png diff --git a/data/init/images/sm_loop_eintro_239.png b/data/init/images/sm_loop_eintro_239.png Binary files differnew file mode 100644 index 000000000..38f8ec29a --- /dev/null +++ b/data/init/images/sm_loop_eintro_239.png diff --git a/data/init/images/sm_loop_eintro_240.png b/data/init/images/sm_loop_eintro_240.png Binary files differnew file mode 100644 index 000000000..7b911dd4d --- /dev/null +++ b/data/init/images/sm_loop_eintro_240.png diff --git a/data/init/images/sm_reflection_overlay.png b/data/init/images/sm_reflection_overlay.png Binary files differnew file mode 100644 index 000000000..3eeff343d --- /dev/null +++ b/data/init/images/sm_reflection_overlay.png diff --git a/data/init/images/sm_shadow.png b/data/init/images/sm_shadow.png Binary files differnew file mode 100644 index 000000000..36952c61d --- /dev/null +++ b/data/init/images/sm_shadow.png diff --git a/data/init/images/sm_start_eintro_001.png b/data/init/images/sm_start_eintro_001.png Binary files differnew file mode 100644 index 000000000..0d4c96bf9 --- /dev/null +++ b/data/init/images/sm_start_eintro_001.png diff --git a/data/init/images/sm_start_eintro_002.png b/data/init/images/sm_start_eintro_002.png Binary files differnew file mode 100644 index 000000000..c53dd88dc --- /dev/null +++ b/data/init/images/sm_start_eintro_002.png diff --git a/data/init/images/sm_start_eintro_003.png b/data/init/images/sm_start_eintro_003.png Binary files differnew file mode 100644 index 000000000..0624779b8 --- /dev/null +++ b/data/init/images/sm_start_eintro_003.png diff --git a/data/init/images/sm_start_eintro_004.png b/data/init/images/sm_start_eintro_004.png Binary files differnew file mode 100644 index 000000000..5af995d18 --- /dev/null +++ b/data/init/images/sm_start_eintro_004.png diff --git a/data/init/images/sm_start_eintro_005.png b/data/init/images/sm_start_eintro_005.png Binary files differnew file mode 100644 index 000000000..c798f9d61 --- /dev/null +++ b/data/init/images/sm_start_eintro_005.png diff --git a/data/init/images/sm_start_eintro_006.png b/data/init/images/sm_start_eintro_006.png Binary files differnew file mode 100644 index 000000000..ca6b95ac5 --- /dev/null +++ b/data/init/images/sm_start_eintro_006.png diff --git a/data/init/images/sm_start_eintro_007.png b/data/init/images/sm_start_eintro_007.png Binary files differnew file mode 100644 index 000000000..4c524eb0d --- /dev/null +++ b/data/init/images/sm_start_eintro_007.png diff --git a/data/init/images/sm_start_eintro_008.png b/data/init/images/sm_start_eintro_008.png Binary files differnew file mode 100644 index 000000000..20797355f --- /dev/null +++ b/data/init/images/sm_start_eintro_008.png diff --git a/data/init/images/sm_start_eintro_009.png b/data/init/images/sm_start_eintro_009.png Binary files differnew file mode 100644 index 000000000..c51955f4f --- /dev/null +++ b/data/init/images/sm_start_eintro_009.png diff --git a/data/init/images/sm_start_eintro_010.png b/data/init/images/sm_start_eintro_010.png Binary files differnew file mode 100644 index 000000000..1d088a51b --- /dev/null +++ b/data/init/images/sm_start_eintro_010.png diff --git a/data/init/images/sm_start_eintro_011.png b/data/init/images/sm_start_eintro_011.png Binary files differnew file mode 100644 index 000000000..4a3d8ac78 --- /dev/null +++ b/data/init/images/sm_start_eintro_011.png diff --git a/data/init/images/sm_start_eintro_012.png b/data/init/images/sm_start_eintro_012.png Binary files differnew file mode 100644 index 000000000..9a970fd42 --- /dev/null +++ b/data/init/images/sm_start_eintro_012.png diff --git a/data/init/images/sm_start_eintro_013.png b/data/init/images/sm_start_eintro_013.png Binary files differnew file mode 100644 index 000000000..2f1add4c5 --- /dev/null +++ b/data/init/images/sm_start_eintro_013.png diff --git a/data/init/images/sm_start_eintro_014.png b/data/init/images/sm_start_eintro_014.png Binary files differnew file mode 100644 index 000000000..02b033b9a --- /dev/null +++ b/data/init/images/sm_start_eintro_014.png diff --git a/data/init/images/sm_start_eintro_015.png b/data/init/images/sm_start_eintro_015.png Binary files differnew file mode 100644 index 000000000..22bca6d52 --- /dev/null +++ b/data/init/images/sm_start_eintro_015.png diff --git a/data/init/images/sm_start_eintro_016.png b/data/init/images/sm_start_eintro_016.png Binary files differnew file mode 100644 index 000000000..1957fa7ec --- /dev/null +++ b/data/init/images/sm_start_eintro_016.png diff --git a/data/init/images/sm_start_eintro_017.png b/data/init/images/sm_start_eintro_017.png Binary files differnew file mode 100644 index 000000000..ac4a482a1 --- /dev/null +++ b/data/init/images/sm_start_eintro_017.png diff --git a/data/init/images/sm_start_eintro_018.png b/data/init/images/sm_start_eintro_018.png Binary files differnew file mode 100644 index 000000000..d72cad7ec --- /dev/null +++ b/data/init/images/sm_start_eintro_018.png diff --git a/data/init/images/sm_start_eintro_019.png b/data/init/images/sm_start_eintro_019.png Binary files differnew file mode 100644 index 000000000..2a0de8bd8 --- /dev/null +++ b/data/init/images/sm_start_eintro_019.png diff --git a/data/init/images/sm_start_eintro_020.png b/data/init/images/sm_start_eintro_020.png Binary files differnew file mode 100644 index 000000000..9a545aae1 --- /dev/null +++ b/data/init/images/sm_start_eintro_020.png diff --git a/data/init/images/sm_start_eintro_021.png b/data/init/images/sm_start_eintro_021.png Binary files differnew file mode 100644 index 000000000..340955e79 --- /dev/null +++ b/data/init/images/sm_start_eintro_021.png diff --git a/data/init/images/sm_start_eintro_022.png b/data/init/images/sm_start_eintro_022.png Binary files differnew file mode 100644 index 000000000..e355817ba --- /dev/null +++ b/data/init/images/sm_start_eintro_022.png diff --git a/data/init/images/sm_start_eintro_023.png b/data/init/images/sm_start_eintro_023.png Binary files differnew file mode 100644 index 000000000..39bb1cc6b --- /dev/null +++ b/data/init/images/sm_start_eintro_023.png diff --git a/data/init/images/sm_start_eintro_024.png b/data/init/images/sm_start_eintro_024.png Binary files differnew file mode 100644 index 000000000..66100aab6 --- /dev/null +++ b/data/init/images/sm_start_eintro_024.png diff --git a/data/init/images/sm_start_eintro_025.png b/data/init/images/sm_start_eintro_025.png Binary files differnew file mode 100644 index 000000000..72795b37a --- /dev/null +++ b/data/init/images/sm_start_eintro_025.png diff --git a/data/init/images/sm_start_eintro_026.png b/data/init/images/sm_start_eintro_026.png Binary files differnew file mode 100644 index 000000000..513431c2b --- /dev/null +++ b/data/init/images/sm_start_eintro_026.png diff --git a/data/init/images/sm_start_eintro_027.png b/data/init/images/sm_start_eintro_027.png Binary files differnew file mode 100644 index 000000000..b6c097300 --- /dev/null +++ b/data/init/images/sm_start_eintro_027.png diff --git a/data/init/images/sm_start_eintro_028.png b/data/init/images/sm_start_eintro_028.png Binary files differnew file mode 100644 index 000000000..fb3725789 --- /dev/null +++ b/data/init/images/sm_start_eintro_028.png diff --git a/data/init/images/sm_start_eintro_029.png b/data/init/images/sm_start_eintro_029.png Binary files differnew file mode 100644 index 000000000..2d9939873 --- /dev/null +++ b/data/init/images/sm_start_eintro_029.png diff --git a/data/init/images/sm_start_eintro_030.png b/data/init/images/sm_start_eintro_030.png Binary files differnew file mode 100644 index 000000000..3ac86459d --- /dev/null +++ b/data/init/images/sm_start_eintro_030.png diff --git a/data/init/images/sm_start_eintro_031.png b/data/init/images/sm_start_eintro_031.png Binary files differnew file mode 100644 index 000000000..868c182e9 --- /dev/null +++ b/data/init/images/sm_start_eintro_031.png diff --git a/data/init/images/sm_start_eintro_032.png b/data/init/images/sm_start_eintro_032.png Binary files differnew file mode 100644 index 000000000..84caa4131 --- /dev/null +++ b/data/init/images/sm_start_eintro_032.png diff --git a/data/init/images/sm_start_eintro_033.png b/data/init/images/sm_start_eintro_033.png Binary files differnew file mode 100644 index 000000000..f9b9eb86a --- /dev/null +++ b/data/init/images/sm_start_eintro_033.png diff --git a/data/init/images/sm_start_eintro_034.png b/data/init/images/sm_start_eintro_034.png Binary files differnew file mode 100644 index 000000000..4a4cf08c3 --- /dev/null +++ b/data/init/images/sm_start_eintro_034.png diff --git a/data/init/images/sm_start_eintro_035.png b/data/init/images/sm_start_eintro_035.png Binary files differnew file mode 100644 index 000000000..afe954622 --- /dev/null +++ b/data/init/images/sm_start_eintro_035.png diff --git a/data/init/images/sm_start_eintro_036.png b/data/init/images/sm_start_eintro_036.png Binary files differnew file mode 100644 index 000000000..9db7eecd7 --- /dev/null +++ b/data/init/images/sm_start_eintro_036.png diff --git a/data/init/images/sm_start_eintro_037.png b/data/init/images/sm_start_eintro_037.png Binary files differnew file mode 100644 index 000000000..82c32154b --- /dev/null +++ b/data/init/images/sm_start_eintro_037.png diff --git a/data/init/images/sm_start_eintro_038.png b/data/init/images/sm_start_eintro_038.png Binary files differnew file mode 100644 index 000000000..2282430ea --- /dev/null +++ b/data/init/images/sm_start_eintro_038.png diff --git a/data/init/images/sm_start_eintro_039.png b/data/init/images/sm_start_eintro_039.png Binary files differnew file mode 100644 index 000000000..aa4331d43 --- /dev/null +++ b/data/init/images/sm_start_eintro_039.png diff --git a/data/init/images/sm_start_eintro_040.png b/data/init/images/sm_start_eintro_040.png Binary files differnew file mode 100644 index 000000000..a1b5582ac --- /dev/null +++ b/data/init/images/sm_start_eintro_040.png diff --git a/data/init/images/sm_start_eintro_041.png b/data/init/images/sm_start_eintro_041.png Binary files differnew file mode 100644 index 000000000..ed92bbe33 --- /dev/null +++ b/data/init/images/sm_start_eintro_041.png diff --git a/data/init/images/sm_start_eintro_042.png b/data/init/images/sm_start_eintro_042.png Binary files differnew file mode 100644 index 000000000..a06c4e5a0 --- /dev/null +++ b/data/init/images/sm_start_eintro_042.png diff --git a/data/init/images/sm_start_eintro_043.png b/data/init/images/sm_start_eintro_043.png Binary files differnew file mode 100644 index 000000000..04942a05c --- /dev/null +++ b/data/init/images/sm_start_eintro_043.png diff --git a/data/init/images/sm_start_eintro_044.png b/data/init/images/sm_start_eintro_044.png Binary files differnew file mode 100644 index 000000000..f8f061560 --- /dev/null +++ b/data/init/images/sm_start_eintro_044.png diff --git a/data/init/images/sm_start_eintro_045.png b/data/init/images/sm_start_eintro_045.png Binary files differnew file mode 100644 index 000000000..4b4140a61 --- /dev/null +++ b/data/init/images/sm_start_eintro_045.png diff --git a/data/init/images/sm_start_eintro_046.png b/data/init/images/sm_start_eintro_046.png Binary files differnew file mode 100644 index 000000000..36b2cd478 --- /dev/null +++ b/data/init/images/sm_start_eintro_046.png diff --git a/data/init/images/sm_start_eintro_047.png b/data/init/images/sm_start_eintro_047.png Binary files differnew file mode 100644 index 000000000..1f200408e --- /dev/null +++ b/data/init/images/sm_start_eintro_047.png diff --git a/data/init/images/sm_start_eintro_048.png b/data/init/images/sm_start_eintro_048.png Binary files differnew file mode 100644 index 000000000..a8a759164 --- /dev/null +++ b/data/init/images/sm_start_eintro_048.png diff --git a/data/init/images/sm_start_eintro_049.png b/data/init/images/sm_start_eintro_049.png Binary files differnew file mode 100644 index 000000000..82a2bdb21 --- /dev/null +++ b/data/init/images/sm_start_eintro_049.png diff --git a/data/init/images/sm_start_eintro_050.png b/data/init/images/sm_start_eintro_050.png Binary files differnew file mode 100644 index 000000000..6a0800fdb --- /dev/null +++ b/data/init/images/sm_start_eintro_050.png diff --git a/data/init/images/sm_start_eintro_051.png b/data/init/images/sm_start_eintro_051.png Binary files differnew file mode 100644 index 000000000..0827379a5 --- /dev/null +++ b/data/init/images/sm_start_eintro_051.png diff --git a/data/init/images/sm_start_eintro_052.png b/data/init/images/sm_start_eintro_052.png Binary files differnew file mode 100644 index 000000000..46ec14aee --- /dev/null +++ b/data/init/images/sm_start_eintro_052.png diff --git a/data/init/images/sm_start_eintro_053.png b/data/init/images/sm_start_eintro_053.png Binary files differnew file mode 100644 index 000000000..9bad6dacd --- /dev/null +++ b/data/init/images/sm_start_eintro_053.png diff --git a/data/init/images/sm_start_eintro_054.png b/data/init/images/sm_start_eintro_054.png Binary files differnew file mode 100644 index 000000000..2b51e798a --- /dev/null +++ b/data/init/images/sm_start_eintro_054.png diff --git a/data/init/images/sm_start_eintro_055.png b/data/init/images/sm_start_eintro_055.png Binary files differnew file mode 100644 index 000000000..54743407f --- /dev/null +++ b/data/init/images/sm_start_eintro_055.png diff --git a/data/init/images/sm_start_eintro_056.png b/data/init/images/sm_start_eintro_056.png Binary files differnew file mode 100644 index 000000000..5bc8285e2 --- /dev/null +++ b/data/init/images/sm_start_eintro_056.png diff --git a/data/init/images/sm_start_eintro_057.png b/data/init/images/sm_start_eintro_057.png Binary files differnew file mode 100644 index 000000000..989117629 --- /dev/null +++ b/data/init/images/sm_start_eintro_057.png diff --git a/data/init/images/sm_start_eintro_058.png b/data/init/images/sm_start_eintro_058.png Binary files differnew file mode 100644 index 000000000..cdbb586a5 --- /dev/null +++ b/data/init/images/sm_start_eintro_058.png diff --git a/data/init/images/sm_start_eintro_059.png b/data/init/images/sm_start_eintro_059.png Binary files differnew file mode 100644 index 000000000..3e658aee2 --- /dev/null +++ b/data/init/images/sm_start_eintro_059.png diff --git a/data/init/images/sm_start_eintro_060.png b/data/init/images/sm_start_eintro_060.png Binary files differnew file mode 100644 index 000000000..bf920056e --- /dev/null +++ b/data/init/images/sm_start_eintro_060.png diff --git a/data/init/images/sm_start_eintro_061.png b/data/init/images/sm_start_eintro_061.png Binary files differnew file mode 100644 index 000000000..263f8295d --- /dev/null +++ b/data/init/images/sm_start_eintro_061.png diff --git a/data/init/images/sm_start_eintro_062.png b/data/init/images/sm_start_eintro_062.png Binary files differnew file mode 100644 index 000000000..e0dba7186 --- /dev/null +++ b/data/init/images/sm_start_eintro_062.png diff --git a/data/init/images/sm_start_eintro_063.png b/data/init/images/sm_start_eintro_063.png Binary files differnew file mode 100644 index 000000000..ca6381714 --- /dev/null +++ b/data/init/images/sm_start_eintro_063.png diff --git a/data/init/images/sm_start_eintro_064.png b/data/init/images/sm_start_eintro_064.png Binary files differnew file mode 100644 index 000000000..c513d7706 --- /dev/null +++ b/data/init/images/sm_start_eintro_064.png diff --git a/data/init/images/sm_start_eintro_065.png b/data/init/images/sm_start_eintro_065.png Binary files differnew file mode 100644 index 000000000..92d262105 --- /dev/null +++ b/data/init/images/sm_start_eintro_065.png diff --git a/data/init/images/sm_start_eintro_066.png b/data/init/images/sm_start_eintro_066.png Binary files differnew file mode 100644 index 000000000..1a655b74e --- /dev/null +++ b/data/init/images/sm_start_eintro_066.png diff --git a/data/init/images/sm_start_eintro_067.png b/data/init/images/sm_start_eintro_067.png Binary files differnew file mode 100644 index 000000000..b2f70070c --- /dev/null +++ b/data/init/images/sm_start_eintro_067.png diff --git a/data/init/images/sm_start_eintro_068.png b/data/init/images/sm_start_eintro_068.png Binary files differnew file mode 100644 index 000000000..65d131082 --- /dev/null +++ b/data/init/images/sm_start_eintro_068.png diff --git a/data/init/images/sm_start_eintro_069.png b/data/init/images/sm_start_eintro_069.png Binary files differnew file mode 100644 index 000000000..25a0ee6ea --- /dev/null +++ b/data/init/images/sm_start_eintro_069.png diff --git a/data/init/images/sm_start_eintro_070.png b/data/init/images/sm_start_eintro_070.png Binary files differnew file mode 100644 index 000000000..77aac15de --- /dev/null +++ b/data/init/images/sm_start_eintro_070.png diff --git a/data/init/images/sm_start_eintro_071.png b/data/init/images/sm_start_eintro_071.png Binary files differnew file mode 100644 index 000000000..f3221ccae --- /dev/null +++ b/data/init/images/sm_start_eintro_071.png diff --git a/data/init/images/sm_start_eintro_072.png b/data/init/images/sm_start_eintro_072.png Binary files differnew file mode 100644 index 000000000..9a8065003 --- /dev/null +++ b/data/init/images/sm_start_eintro_072.png diff --git a/data/init/images/sm_start_eintro_073.png b/data/init/images/sm_start_eintro_073.png Binary files differnew file mode 100644 index 000000000..c12224558 --- /dev/null +++ b/data/init/images/sm_start_eintro_073.png diff --git a/data/init/images/sm_start_eintro_074.png b/data/init/images/sm_start_eintro_074.png Binary files differnew file mode 100644 index 000000000..426938175 --- /dev/null +++ b/data/init/images/sm_start_eintro_074.png diff --git a/data/init/images/sm_start_eintro_075.png b/data/init/images/sm_start_eintro_075.png Binary files differnew file mode 100644 index 000000000..e2b391b05 --- /dev/null +++ b/data/init/images/sm_start_eintro_075.png diff --git a/data/init/images/sm_start_eintro_076.png b/data/init/images/sm_start_eintro_076.png Binary files differnew file mode 100644 index 000000000..47d4c5508 --- /dev/null +++ b/data/init/images/sm_start_eintro_076.png diff --git a/data/init/images/sm_start_eintro_077.png b/data/init/images/sm_start_eintro_077.png Binary files differnew file mode 100644 index 000000000..8d5716b74 --- /dev/null +++ b/data/init/images/sm_start_eintro_077.png diff --git a/data/init/images/sm_start_eintro_078.png b/data/init/images/sm_start_eintro_078.png Binary files differnew file mode 100644 index 000000000..f82aa2055 --- /dev/null +++ b/data/init/images/sm_start_eintro_078.png diff --git a/data/init/images/sm_start_eintro_079.png b/data/init/images/sm_start_eintro_079.png Binary files differnew file mode 100644 index 000000000..bf90c198e --- /dev/null +++ b/data/init/images/sm_start_eintro_079.png diff --git a/data/init/images/sm_start_eintro_080.png b/data/init/images/sm_start_eintro_080.png Binary files differnew file mode 100644 index 000000000..847fafd61 --- /dev/null +++ b/data/init/images/sm_start_eintro_080.png diff --git a/data/init/images/sm_start_eintro_081.png b/data/init/images/sm_start_eintro_081.png Binary files differnew file mode 100644 index 000000000..9f394ae59 --- /dev/null +++ b/data/init/images/sm_start_eintro_081.png diff --git a/data/init/images/sm_start_eintro_082.png b/data/init/images/sm_start_eintro_082.png Binary files differnew file mode 100644 index 000000000..9febab19a --- /dev/null +++ b/data/init/images/sm_start_eintro_082.png diff --git a/data/init/images/sm_start_eintro_083.png b/data/init/images/sm_start_eintro_083.png Binary files differnew file mode 100644 index 000000000..f6b9e2a6e --- /dev/null +++ b/data/init/images/sm_start_eintro_083.png diff --git a/data/init/images/sm_start_eintro_084.png b/data/init/images/sm_start_eintro_084.png Binary files differnew file mode 100644 index 000000000..d17c98f6e --- /dev/null +++ b/data/init/images/sm_start_eintro_084.png diff --git a/data/init/images/sm_start_eintro_085.png b/data/init/images/sm_start_eintro_085.png Binary files differnew file mode 100644 index 000000000..ff55f17c2 --- /dev/null +++ b/data/init/images/sm_start_eintro_085.png diff --git a/data/init/images/sm_start_eintro_086.png b/data/init/images/sm_start_eintro_086.png Binary files differnew file mode 100644 index 000000000..6b13f959e --- /dev/null +++ b/data/init/images/sm_start_eintro_086.png diff --git a/data/init/images/sm_start_eintro_087.png b/data/init/images/sm_start_eintro_087.png Binary files differnew file mode 100644 index 000000000..1287fa796 --- /dev/null +++ b/data/init/images/sm_start_eintro_087.png diff --git a/data/init/images/sm_start_eintro_088.png b/data/init/images/sm_start_eintro_088.png Binary files differnew file mode 100644 index 000000000..7d074bb04 --- /dev/null +++ b/data/init/images/sm_start_eintro_088.png diff --git a/data/init/images/sm_start_eintro_089.png b/data/init/images/sm_start_eintro_089.png Binary files differnew file mode 100644 index 000000000..d86a6a872 --- /dev/null +++ b/data/init/images/sm_start_eintro_089.png diff --git a/data/init/images/sm_start_eintro_090.png b/data/init/images/sm_start_eintro_090.png Binary files differnew file mode 100644 index 000000000..da8def550 --- /dev/null +++ b/data/init/images/sm_start_eintro_090.png diff --git a/data/init/images/sm_start_eintro_091.png b/data/init/images/sm_start_eintro_091.png Binary files differnew file mode 100644 index 000000000..0d677f74d --- /dev/null +++ b/data/init/images/sm_start_eintro_091.png diff --git a/data/init/images/sm_start_eintro_092.png b/data/init/images/sm_start_eintro_092.png Binary files differnew file mode 100644 index 000000000..e78309e5d --- /dev/null +++ b/data/init/images/sm_start_eintro_092.png diff --git a/data/init/images/sm_start_eintro_093.png b/data/init/images/sm_start_eintro_093.png Binary files differnew file mode 100644 index 000000000..dd726ce7a --- /dev/null +++ b/data/init/images/sm_start_eintro_093.png diff --git a/data/init/images/sm_start_eintro_094.png b/data/init/images/sm_start_eintro_094.png Binary files differnew file mode 100644 index 000000000..74cbf42a4 --- /dev/null +++ b/data/init/images/sm_start_eintro_094.png diff --git a/data/init/images/sm_start_eintro_095.png b/data/init/images/sm_start_eintro_095.png Binary files differnew file mode 100644 index 000000000..028dec9fc --- /dev/null +++ b/data/init/images/sm_start_eintro_095.png diff --git a/data/init/images/sm_start_eintro_096.png b/data/init/images/sm_start_eintro_096.png Binary files differnew file mode 100644 index 000000000..9ed5237cf --- /dev/null +++ b/data/init/images/sm_start_eintro_096.png diff --git a/data/init/images/sm_start_eintro_097.png b/data/init/images/sm_start_eintro_097.png Binary files differnew file mode 100644 index 000000000..c474ef090 --- /dev/null +++ b/data/init/images/sm_start_eintro_097.png diff --git a/data/init/images/sm_start_eintro_098.png b/data/init/images/sm_start_eintro_098.png Binary files differnew file mode 100644 index 000000000..45a94bf01 --- /dev/null +++ b/data/init/images/sm_start_eintro_098.png diff --git a/data/init/images/sm_start_eintro_099.png b/data/init/images/sm_start_eintro_099.png Binary files differnew file mode 100644 index 000000000..598ef1e0d --- /dev/null +++ b/data/init/images/sm_start_eintro_099.png diff --git a/data/init/images/sm_start_eintro_100.png b/data/init/images/sm_start_eintro_100.png Binary files differnew file mode 100644 index 000000000..954e8ab95 --- /dev/null +++ b/data/init/images/sm_start_eintro_100.png diff --git a/data/init/images/sm_start_eintro_101.png b/data/init/images/sm_start_eintro_101.png Binary files differnew file mode 100644 index 000000000..c47e285f4 --- /dev/null +++ b/data/init/images/sm_start_eintro_101.png diff --git a/data/init/images/sm_start_eintro_102.png b/data/init/images/sm_start_eintro_102.png Binary files differnew file mode 100644 index 000000000..78452c794 --- /dev/null +++ b/data/init/images/sm_start_eintro_102.png diff --git a/data/init/images/sm_start_eintro_103.png b/data/init/images/sm_start_eintro_103.png Binary files differnew file mode 100644 index 000000000..263158b53 --- /dev/null +++ b/data/init/images/sm_start_eintro_103.png diff --git a/data/init/images/sm_start_eintro_104.png b/data/init/images/sm_start_eintro_104.png Binary files differnew file mode 100644 index 000000000..40dcbf9b0 --- /dev/null +++ b/data/init/images/sm_start_eintro_104.png diff --git a/data/init/images/sm_start_eintro_105.png b/data/init/images/sm_start_eintro_105.png Binary files differnew file mode 100644 index 000000000..3ec30a444 --- /dev/null +++ b/data/init/images/sm_start_eintro_105.png diff --git a/data/init/images/sm_start_eintro_106.png b/data/init/images/sm_start_eintro_106.png Binary files differnew file mode 100644 index 000000000..2056be11b --- /dev/null +++ b/data/init/images/sm_start_eintro_106.png diff --git a/data/init/images/sm_start_eintro_107.png b/data/init/images/sm_start_eintro_107.png Binary files differnew file mode 100644 index 000000000..c74aac6a4 --- /dev/null +++ b/data/init/images/sm_start_eintro_107.png diff --git a/data/init/images/sm_start_eintro_108.png b/data/init/images/sm_start_eintro_108.png Binary files differnew file mode 100644 index 000000000..5141d15a0 --- /dev/null +++ b/data/init/images/sm_start_eintro_108.png diff --git a/data/init/images/sm_start_eintro_109.png b/data/init/images/sm_start_eintro_109.png Binary files differnew file mode 100644 index 000000000..df19ed599 --- /dev/null +++ b/data/init/images/sm_start_eintro_109.png diff --git a/data/init/images/sm_start_eintro_110.png b/data/init/images/sm_start_eintro_110.png Binary files differnew file mode 100644 index 000000000..2fd56e9f1 --- /dev/null +++ b/data/init/images/sm_start_eintro_110.png diff --git a/data/init/images/sm_start_eintro_111.png b/data/init/images/sm_start_eintro_111.png Binary files differnew file mode 100644 index 000000000..2bbc06317 --- /dev/null +++ b/data/init/images/sm_start_eintro_111.png diff --git a/data/init/images/sm_start_eintro_112.png b/data/init/images/sm_start_eintro_112.png Binary files differnew file mode 100644 index 000000000..cd64df273 --- /dev/null +++ b/data/init/images/sm_start_eintro_112.png diff --git a/data/init/images/sm_start_eintro_113.png b/data/init/images/sm_start_eintro_113.png Binary files differnew file mode 100644 index 000000000..a442bbe49 --- /dev/null +++ b/data/init/images/sm_start_eintro_113.png diff --git a/data/init/images/sm_start_eintro_114.png b/data/init/images/sm_start_eintro_114.png Binary files differnew file mode 100644 index 000000000..009b9bcf3 --- /dev/null +++ b/data/init/images/sm_start_eintro_114.png diff --git a/data/init/images/sm_start_eintro_115.png b/data/init/images/sm_start_eintro_115.png Binary files differnew file mode 100644 index 000000000..82bbfee8b --- /dev/null +++ b/data/init/images/sm_start_eintro_115.png diff --git a/data/init/images/sm_start_eintro_116.png b/data/init/images/sm_start_eintro_116.png Binary files differnew file mode 100644 index 000000000..3fb03ad22 --- /dev/null +++ b/data/init/images/sm_start_eintro_116.png diff --git a/data/init/images/sm_start_eintro_117.png b/data/init/images/sm_start_eintro_117.png Binary files differnew file mode 100644 index 000000000..6f4415ed1 --- /dev/null +++ b/data/init/images/sm_start_eintro_117.png diff --git a/data/init/images/sm_start_eintro_118.png b/data/init/images/sm_start_eintro_118.png Binary files differnew file mode 100644 index 000000000..f0c06563c --- /dev/null +++ b/data/init/images/sm_start_eintro_118.png diff --git a/data/init/images/sm_start_eintro_119.png b/data/init/images/sm_start_eintro_119.png Binary files differnew file mode 100644 index 000000000..0edd7912e --- /dev/null +++ b/data/init/images/sm_start_eintro_119.png diff --git a/data/init/images/sm_start_eintro_120.png b/data/init/images/sm_start_eintro_120.png Binary files differnew file mode 100644 index 000000000..6f59ee68c --- /dev/null +++ b/data/init/images/sm_start_eintro_120.png diff --git a/data/init/images/start_eintro_001.png b/data/init/images/start_eintro_001.png Binary files differnew file mode 100644 index 000000000..481af7c76 --- /dev/null +++ b/data/init/images/start_eintro_001.png diff --git a/data/init/images/start_eintro_002.png b/data/init/images/start_eintro_002.png Binary files differnew file mode 100644 index 000000000..62681cf6f --- /dev/null +++ b/data/init/images/start_eintro_002.png diff --git a/data/init/images/start_eintro_003.png b/data/init/images/start_eintro_003.png Binary files differnew file mode 100644 index 000000000..7fe51ec0d --- /dev/null +++ b/data/init/images/start_eintro_003.png diff --git a/data/init/images/start_eintro_004.png b/data/init/images/start_eintro_004.png Binary files differnew file mode 100644 index 000000000..400ae6738 --- /dev/null +++ b/data/init/images/start_eintro_004.png diff --git a/data/init/images/start_eintro_005.png b/data/init/images/start_eintro_005.png Binary files differnew file mode 100644 index 000000000..4d4bf0843 --- /dev/null +++ b/data/init/images/start_eintro_005.png diff --git a/data/init/images/start_eintro_006.png b/data/init/images/start_eintro_006.png Binary files differnew file mode 100644 index 000000000..5d5dc789f --- /dev/null +++ b/data/init/images/start_eintro_006.png diff --git a/data/init/images/start_eintro_007.png b/data/init/images/start_eintro_007.png Binary files differnew file mode 100644 index 000000000..2bc4f2cf9 --- /dev/null +++ b/data/init/images/start_eintro_007.png diff --git a/data/init/images/start_eintro_008.png b/data/init/images/start_eintro_008.png Binary files differnew file mode 100644 index 000000000..2aa53532e --- /dev/null +++ b/data/init/images/start_eintro_008.png diff --git a/data/init/images/start_eintro_009.png b/data/init/images/start_eintro_009.png Binary files differnew file mode 100644 index 000000000..2fd643bfe --- /dev/null +++ b/data/init/images/start_eintro_009.png diff --git a/data/init/images/start_eintro_010.png b/data/init/images/start_eintro_010.png Binary files differnew file mode 100644 index 000000000..16c182eda --- /dev/null +++ b/data/init/images/start_eintro_010.png diff --git a/data/init/images/start_eintro_011.png b/data/init/images/start_eintro_011.png Binary files differnew file mode 100644 index 000000000..c2b828a51 --- /dev/null +++ b/data/init/images/start_eintro_011.png diff --git a/data/init/images/start_eintro_012.png b/data/init/images/start_eintro_012.png Binary files differnew file mode 100644 index 000000000..12649b552 --- /dev/null +++ b/data/init/images/start_eintro_012.png diff --git a/data/init/images/start_eintro_013.png b/data/init/images/start_eintro_013.png Binary files differnew file mode 100644 index 000000000..9902f529e --- /dev/null +++ b/data/init/images/start_eintro_013.png diff --git a/data/init/images/start_eintro_014.png b/data/init/images/start_eintro_014.png Binary files differnew file mode 100644 index 000000000..951e86efc --- /dev/null +++ b/data/init/images/start_eintro_014.png diff --git a/data/init/images/start_eintro_015.png b/data/init/images/start_eintro_015.png Binary files differnew file mode 100644 index 000000000..8dd53aa54 --- /dev/null +++ b/data/init/images/start_eintro_015.png diff --git a/data/init/images/start_eintro_016.png b/data/init/images/start_eintro_016.png Binary files differnew file mode 100644 index 000000000..f52741366 --- /dev/null +++ b/data/init/images/start_eintro_016.png diff --git a/data/init/images/start_eintro_017.png b/data/init/images/start_eintro_017.png Binary files differnew file mode 100644 index 000000000..9bd3ffb18 --- /dev/null +++ b/data/init/images/start_eintro_017.png diff --git a/data/init/images/start_eintro_018.png b/data/init/images/start_eintro_018.png Binary files differnew file mode 100644 index 000000000..28ecf6c53 --- /dev/null +++ b/data/init/images/start_eintro_018.png diff --git a/data/init/images/start_eintro_019.png b/data/init/images/start_eintro_019.png Binary files differnew file mode 100644 index 000000000..5060c0245 --- /dev/null +++ b/data/init/images/start_eintro_019.png diff --git a/data/init/images/start_eintro_020.png b/data/init/images/start_eintro_020.png Binary files differnew file mode 100644 index 000000000..d1e108073 --- /dev/null +++ b/data/init/images/start_eintro_020.png diff --git a/data/init/images/start_eintro_021.png b/data/init/images/start_eintro_021.png Binary files differnew file mode 100644 index 000000000..7353cc823 --- /dev/null +++ b/data/init/images/start_eintro_021.png diff --git a/data/init/images/start_eintro_022.png b/data/init/images/start_eintro_022.png Binary files differnew file mode 100644 index 000000000..338446c2e --- /dev/null +++ b/data/init/images/start_eintro_022.png diff --git a/data/init/images/start_eintro_023.png b/data/init/images/start_eintro_023.png Binary files differnew file mode 100644 index 000000000..7d1dc00da --- /dev/null +++ b/data/init/images/start_eintro_023.png diff --git a/data/init/images/start_eintro_024.png b/data/init/images/start_eintro_024.png Binary files differnew file mode 100644 index 000000000..d36cf4aec --- /dev/null +++ b/data/init/images/start_eintro_024.png diff --git a/data/init/images/start_eintro_025.png b/data/init/images/start_eintro_025.png Binary files differnew file mode 100644 index 000000000..0bee2821d --- /dev/null +++ b/data/init/images/start_eintro_025.png diff --git a/data/init/images/start_eintro_026.png b/data/init/images/start_eintro_026.png Binary files differnew file mode 100644 index 000000000..f5586cb1f --- /dev/null +++ b/data/init/images/start_eintro_026.png diff --git a/data/init/images/start_eintro_027.png b/data/init/images/start_eintro_027.png Binary files differnew file mode 100644 index 000000000..c936bc2cb --- /dev/null +++ b/data/init/images/start_eintro_027.png diff --git a/data/init/images/start_eintro_028.png b/data/init/images/start_eintro_028.png Binary files differnew file mode 100644 index 000000000..6b4539b2a --- /dev/null +++ b/data/init/images/start_eintro_028.png diff --git a/data/init/images/start_eintro_029.png b/data/init/images/start_eintro_029.png Binary files differnew file mode 100644 index 000000000..13d988ac0 --- /dev/null +++ b/data/init/images/start_eintro_029.png diff --git a/data/init/images/start_eintro_030.png b/data/init/images/start_eintro_030.png Binary files differnew file mode 100644 index 000000000..443016574 --- /dev/null +++ b/data/init/images/start_eintro_030.png diff --git a/data/init/images/start_eintro_031.png b/data/init/images/start_eintro_031.png Binary files differnew file mode 100644 index 000000000..d34ba53dd --- /dev/null +++ b/data/init/images/start_eintro_031.png diff --git a/data/init/images/start_eintro_032.png b/data/init/images/start_eintro_032.png Binary files differnew file mode 100644 index 000000000..0197baf1f --- /dev/null +++ b/data/init/images/start_eintro_032.png diff --git a/data/init/images/start_eintro_033.png b/data/init/images/start_eintro_033.png Binary files differnew file mode 100644 index 000000000..1de5435d7 --- /dev/null +++ b/data/init/images/start_eintro_033.png diff --git a/data/init/images/start_eintro_034.png b/data/init/images/start_eintro_034.png Binary files differnew file mode 100644 index 000000000..11418467f --- /dev/null +++ b/data/init/images/start_eintro_034.png diff --git a/data/init/images/start_eintro_035.png b/data/init/images/start_eintro_035.png Binary files differnew file mode 100644 index 000000000..d7dd6c47d --- /dev/null +++ b/data/init/images/start_eintro_035.png diff --git a/data/init/images/start_eintro_036.png b/data/init/images/start_eintro_036.png Binary files differnew file mode 100644 index 000000000..474e4f180 --- /dev/null +++ b/data/init/images/start_eintro_036.png diff --git a/data/init/images/start_eintro_037.png b/data/init/images/start_eintro_037.png Binary files differnew file mode 100644 index 000000000..95aa06b2a --- /dev/null +++ b/data/init/images/start_eintro_037.png diff --git a/data/init/images/start_eintro_038.png b/data/init/images/start_eintro_038.png Binary files differnew file mode 100644 index 000000000..a9b5cef72 --- /dev/null +++ b/data/init/images/start_eintro_038.png diff --git a/data/init/images/start_eintro_039.png b/data/init/images/start_eintro_039.png Binary files differnew file mode 100644 index 000000000..04ac5b398 --- /dev/null +++ b/data/init/images/start_eintro_039.png diff --git a/data/init/images/start_eintro_040.png b/data/init/images/start_eintro_040.png Binary files differnew file mode 100644 index 000000000..75d1b0546 --- /dev/null +++ b/data/init/images/start_eintro_040.png diff --git a/data/init/images/start_eintro_041.png b/data/init/images/start_eintro_041.png Binary files differnew file mode 100644 index 000000000..61168d76c --- /dev/null +++ b/data/init/images/start_eintro_041.png diff --git a/data/init/images/start_eintro_042.png b/data/init/images/start_eintro_042.png Binary files differnew file mode 100644 index 000000000..35e6d5585 --- /dev/null +++ b/data/init/images/start_eintro_042.png diff --git a/data/init/images/start_eintro_043.png b/data/init/images/start_eintro_043.png Binary files differnew file mode 100644 index 000000000..95fc66e09 --- /dev/null +++ b/data/init/images/start_eintro_043.png diff --git a/data/init/images/start_eintro_044.png b/data/init/images/start_eintro_044.png Binary files differnew file mode 100644 index 000000000..90c932090 --- /dev/null +++ b/data/init/images/start_eintro_044.png diff --git a/data/init/images/start_eintro_045.png b/data/init/images/start_eintro_045.png Binary files differnew file mode 100644 index 000000000..db5884d15 --- /dev/null +++ b/data/init/images/start_eintro_045.png diff --git a/data/init/images/start_eintro_046.png b/data/init/images/start_eintro_046.png Binary files differnew file mode 100644 index 000000000..421290373 --- /dev/null +++ b/data/init/images/start_eintro_046.png diff --git a/data/init/images/start_eintro_047.png b/data/init/images/start_eintro_047.png Binary files differnew file mode 100644 index 000000000..8c52c4b8b --- /dev/null +++ b/data/init/images/start_eintro_047.png diff --git a/data/init/images/start_eintro_048.png b/data/init/images/start_eintro_048.png Binary files differnew file mode 100644 index 000000000..caa8e8e6f --- /dev/null +++ b/data/init/images/start_eintro_048.png diff --git a/data/init/images/start_eintro_049.png b/data/init/images/start_eintro_049.png Binary files differnew file mode 100644 index 000000000..add99ac96 --- /dev/null +++ b/data/init/images/start_eintro_049.png diff --git a/data/init/images/start_eintro_050.png b/data/init/images/start_eintro_050.png Binary files differnew file mode 100644 index 000000000..accec2482 --- /dev/null +++ b/data/init/images/start_eintro_050.png diff --git a/data/init/images/start_eintro_051.png b/data/init/images/start_eintro_051.png Binary files differnew file mode 100644 index 000000000..7335ca364 --- /dev/null +++ b/data/init/images/start_eintro_051.png diff --git a/data/init/images/start_eintro_052.png b/data/init/images/start_eintro_052.png Binary files differnew file mode 100644 index 000000000..e6b2279b3 --- /dev/null +++ b/data/init/images/start_eintro_052.png diff --git a/data/init/images/start_eintro_053.png b/data/init/images/start_eintro_053.png Binary files differnew file mode 100644 index 000000000..084604f5b --- /dev/null +++ b/data/init/images/start_eintro_053.png diff --git a/data/init/images/start_eintro_054.png b/data/init/images/start_eintro_054.png Binary files differnew file mode 100644 index 000000000..ccb25ab1d --- /dev/null +++ b/data/init/images/start_eintro_054.png diff --git a/data/init/images/start_eintro_055.png b/data/init/images/start_eintro_055.png Binary files differnew file mode 100644 index 000000000..8a0f2542d --- /dev/null +++ b/data/init/images/start_eintro_055.png diff --git a/data/init/images/start_eintro_056.png b/data/init/images/start_eintro_056.png Binary files differnew file mode 100644 index 000000000..7c0fb8fdf --- /dev/null +++ b/data/init/images/start_eintro_056.png diff --git a/data/init/images/start_eintro_057.png b/data/init/images/start_eintro_057.png Binary files differnew file mode 100644 index 000000000..3e91cdc83 --- /dev/null +++ b/data/init/images/start_eintro_057.png diff --git a/data/init/images/start_eintro_058.png b/data/init/images/start_eintro_058.png Binary files differnew file mode 100644 index 000000000..edcf362c2 --- /dev/null +++ b/data/init/images/start_eintro_058.png diff --git a/data/init/images/start_eintro_059.png b/data/init/images/start_eintro_059.png Binary files differnew file mode 100644 index 000000000..1b01264b9 --- /dev/null +++ b/data/init/images/start_eintro_059.png diff --git a/data/init/images/start_eintro_060.png b/data/init/images/start_eintro_060.png Binary files differnew file mode 100644 index 000000000..c10c7eb9e --- /dev/null +++ b/data/init/images/start_eintro_060.png diff --git a/data/init/images/start_eintro_061.png b/data/init/images/start_eintro_061.png Binary files differnew file mode 100644 index 000000000..8373fabba --- /dev/null +++ b/data/init/images/start_eintro_061.png diff --git a/data/init/images/start_eintro_062.png b/data/init/images/start_eintro_062.png Binary files differnew file mode 100644 index 000000000..17d58a00f --- /dev/null +++ b/data/init/images/start_eintro_062.png diff --git a/data/init/images/start_eintro_063.png b/data/init/images/start_eintro_063.png Binary files differnew file mode 100644 index 000000000..2714771c1 --- /dev/null +++ b/data/init/images/start_eintro_063.png diff --git a/data/init/images/start_eintro_064.png b/data/init/images/start_eintro_064.png Binary files differnew file mode 100644 index 000000000..c8c5dccaa --- /dev/null +++ b/data/init/images/start_eintro_064.png diff --git a/data/init/images/start_eintro_065.png b/data/init/images/start_eintro_065.png Binary files differnew file mode 100644 index 000000000..2631bbc23 --- /dev/null +++ b/data/init/images/start_eintro_065.png diff --git a/data/init/images/start_eintro_066.png b/data/init/images/start_eintro_066.png Binary files differnew file mode 100644 index 000000000..485552a77 --- /dev/null +++ b/data/init/images/start_eintro_066.png diff --git a/data/init/images/start_eintro_067.png b/data/init/images/start_eintro_067.png Binary files differnew file mode 100644 index 000000000..d5021fe90 --- /dev/null +++ b/data/init/images/start_eintro_067.png diff --git a/data/init/images/start_eintro_068.png b/data/init/images/start_eintro_068.png Binary files differnew file mode 100644 index 000000000..bd5ec760f --- /dev/null +++ b/data/init/images/start_eintro_068.png diff --git a/data/init/images/start_eintro_069.png b/data/init/images/start_eintro_069.png Binary files differnew file mode 100644 index 000000000..7d53ea22b --- /dev/null +++ b/data/init/images/start_eintro_069.png diff --git a/data/init/images/start_eintro_070.png b/data/init/images/start_eintro_070.png Binary files differnew file mode 100644 index 000000000..f094f4c64 --- /dev/null +++ b/data/init/images/start_eintro_070.png diff --git a/data/init/images/start_eintro_071.png b/data/init/images/start_eintro_071.png Binary files differnew file mode 100644 index 000000000..595cb3ef3 --- /dev/null +++ b/data/init/images/start_eintro_071.png diff --git a/data/init/images/start_eintro_072.png b/data/init/images/start_eintro_072.png Binary files differnew file mode 100644 index 000000000..f2f0c5531 --- /dev/null +++ b/data/init/images/start_eintro_072.png diff --git a/data/init/images/start_eintro_073.png b/data/init/images/start_eintro_073.png Binary files differnew file mode 100644 index 000000000..56700472d --- /dev/null +++ b/data/init/images/start_eintro_073.png diff --git a/data/init/images/start_eintro_074.png b/data/init/images/start_eintro_074.png Binary files differnew file mode 100644 index 000000000..165c24564 --- /dev/null +++ b/data/init/images/start_eintro_074.png diff --git a/data/init/images/start_eintro_075.png b/data/init/images/start_eintro_075.png Binary files differnew file mode 100644 index 000000000..db153410d --- /dev/null +++ b/data/init/images/start_eintro_075.png diff --git a/data/init/images/start_eintro_076.png b/data/init/images/start_eintro_076.png Binary files differnew file mode 100644 index 000000000..ea382a436 --- /dev/null +++ b/data/init/images/start_eintro_076.png diff --git a/data/init/images/start_eintro_077.png b/data/init/images/start_eintro_077.png Binary files differnew file mode 100644 index 000000000..15167094f --- /dev/null +++ b/data/init/images/start_eintro_077.png diff --git a/data/init/images/start_eintro_078.png b/data/init/images/start_eintro_078.png Binary files differnew file mode 100644 index 000000000..80b957b16 --- /dev/null +++ b/data/init/images/start_eintro_078.png diff --git a/data/init/images/start_eintro_079.png b/data/init/images/start_eintro_079.png Binary files differnew file mode 100644 index 000000000..7256d23a4 --- /dev/null +++ b/data/init/images/start_eintro_079.png diff --git a/data/init/images/start_eintro_080.png b/data/init/images/start_eintro_080.png Binary files differnew file mode 100644 index 000000000..be6d15c02 --- /dev/null +++ b/data/init/images/start_eintro_080.png diff --git a/data/init/images/start_eintro_081.png b/data/init/images/start_eintro_081.png Binary files differnew file mode 100644 index 000000000..440082f99 --- /dev/null +++ b/data/init/images/start_eintro_081.png diff --git a/data/init/images/start_eintro_082.png b/data/init/images/start_eintro_082.png Binary files differnew file mode 100644 index 000000000..2ece3024d --- /dev/null +++ b/data/init/images/start_eintro_082.png diff --git a/data/init/images/start_eintro_083.png b/data/init/images/start_eintro_083.png Binary files differnew file mode 100644 index 000000000..e53d5bafc --- /dev/null +++ b/data/init/images/start_eintro_083.png diff --git a/data/init/images/start_eintro_084.png b/data/init/images/start_eintro_084.png Binary files differnew file mode 100644 index 000000000..2c11444eb --- /dev/null +++ b/data/init/images/start_eintro_084.png diff --git a/data/init/images/start_eintro_085.png b/data/init/images/start_eintro_085.png Binary files differnew file mode 100644 index 000000000..209e8f58d --- /dev/null +++ b/data/init/images/start_eintro_085.png diff --git a/data/init/images/start_eintro_086.png b/data/init/images/start_eintro_086.png Binary files differnew file mode 100644 index 000000000..9acf91059 --- /dev/null +++ b/data/init/images/start_eintro_086.png diff --git a/data/init/images/start_eintro_087.png b/data/init/images/start_eintro_087.png Binary files differnew file mode 100644 index 000000000..986627517 --- /dev/null +++ b/data/init/images/start_eintro_087.png diff --git a/data/init/images/start_eintro_088.png b/data/init/images/start_eintro_088.png Binary files differnew file mode 100644 index 000000000..e03fa5670 --- /dev/null +++ b/data/init/images/start_eintro_088.png diff --git a/data/init/images/start_eintro_089.png b/data/init/images/start_eintro_089.png Binary files differnew file mode 100644 index 000000000..5ba338bb5 --- /dev/null +++ b/data/init/images/start_eintro_089.png diff --git a/data/init/images/start_eintro_090.png b/data/init/images/start_eintro_090.png Binary files differnew file mode 100644 index 000000000..a2c7c12fe --- /dev/null +++ b/data/init/images/start_eintro_090.png diff --git a/data/init/images/start_eintro_091.png b/data/init/images/start_eintro_091.png Binary files differnew file mode 100644 index 000000000..7014087e0 --- /dev/null +++ b/data/init/images/start_eintro_091.png diff --git a/data/init/images/start_eintro_092.png b/data/init/images/start_eintro_092.png Binary files differnew file mode 100644 index 000000000..472f559a3 --- /dev/null +++ b/data/init/images/start_eintro_092.png diff --git a/data/init/images/start_eintro_093.png b/data/init/images/start_eintro_093.png Binary files differnew file mode 100644 index 000000000..f7ac4f1a1 --- /dev/null +++ b/data/init/images/start_eintro_093.png diff --git a/data/init/images/start_eintro_094.png b/data/init/images/start_eintro_094.png Binary files differnew file mode 100644 index 000000000..be6cc1762 --- /dev/null +++ b/data/init/images/start_eintro_094.png diff --git a/data/init/images/start_eintro_095.png b/data/init/images/start_eintro_095.png Binary files differnew file mode 100644 index 000000000..4176bae37 --- /dev/null +++ b/data/init/images/start_eintro_095.png diff --git a/data/init/images/start_eintro_096.png b/data/init/images/start_eintro_096.png Binary files differnew file mode 100644 index 000000000..9fcd7383a --- /dev/null +++ b/data/init/images/start_eintro_096.png diff --git a/data/init/images/start_eintro_097.png b/data/init/images/start_eintro_097.png Binary files differnew file mode 100644 index 000000000..9f5319320 --- /dev/null +++ b/data/init/images/start_eintro_097.png diff --git a/data/init/images/start_eintro_098.png b/data/init/images/start_eintro_098.png Binary files differnew file mode 100644 index 000000000..01caa10f6 --- /dev/null +++ b/data/init/images/start_eintro_098.png diff --git a/data/init/images/start_eintro_099.png b/data/init/images/start_eintro_099.png Binary files differnew file mode 100644 index 000000000..b8c037fac --- /dev/null +++ b/data/init/images/start_eintro_099.png diff --git a/data/init/images/start_eintro_100.png b/data/init/images/start_eintro_100.png Binary files differnew file mode 100644 index 000000000..6574ab797 --- /dev/null +++ b/data/init/images/start_eintro_100.png diff --git a/data/init/images/start_eintro_101.png b/data/init/images/start_eintro_101.png Binary files differnew file mode 100644 index 000000000..7121c4540 --- /dev/null +++ b/data/init/images/start_eintro_101.png diff --git a/data/init/images/start_eintro_102.png b/data/init/images/start_eintro_102.png Binary files differnew file mode 100644 index 000000000..0ccd5035d --- /dev/null +++ b/data/init/images/start_eintro_102.png diff --git a/data/init/images/start_eintro_103.png b/data/init/images/start_eintro_103.png Binary files differnew file mode 100644 index 000000000..7ae1c7144 --- /dev/null +++ b/data/init/images/start_eintro_103.png diff --git a/data/init/images/start_eintro_104.png b/data/init/images/start_eintro_104.png Binary files differnew file mode 100644 index 000000000..44d128104 --- /dev/null +++ b/data/init/images/start_eintro_104.png diff --git a/data/init/images/start_eintro_105.png b/data/init/images/start_eintro_105.png Binary files differnew file mode 100644 index 000000000..02aeca3d0 --- /dev/null +++ b/data/init/images/start_eintro_105.png diff --git a/data/init/images/start_eintro_106.png b/data/init/images/start_eintro_106.png Binary files differnew file mode 100644 index 000000000..11044ea27 --- /dev/null +++ b/data/init/images/start_eintro_106.png diff --git a/data/init/images/start_eintro_107.png b/data/init/images/start_eintro_107.png Binary files differnew file mode 100644 index 000000000..a30d402a4 --- /dev/null +++ b/data/init/images/start_eintro_107.png diff --git a/data/init/images/start_eintro_108.png b/data/init/images/start_eintro_108.png Binary files differnew file mode 100644 index 000000000..fcac718ab --- /dev/null +++ b/data/init/images/start_eintro_108.png diff --git a/data/init/images/start_eintro_109.png b/data/init/images/start_eintro_109.png Binary files differnew file mode 100644 index 000000000..d2f3387cd --- /dev/null +++ b/data/init/images/start_eintro_109.png diff --git a/data/init/images/start_eintro_110.png b/data/init/images/start_eintro_110.png Binary files differnew file mode 100644 index 000000000..a9ec17f9c --- /dev/null +++ b/data/init/images/start_eintro_110.png diff --git a/data/init/images/start_eintro_111.png b/data/init/images/start_eintro_111.png Binary files differnew file mode 100644 index 000000000..05945e45c --- /dev/null +++ b/data/init/images/start_eintro_111.png diff --git a/data/init/images/start_eintro_112.png b/data/init/images/start_eintro_112.png Binary files differnew file mode 100644 index 000000000..56a0dd9cb --- /dev/null +++ b/data/init/images/start_eintro_112.png diff --git a/data/init/images/start_eintro_113.png b/data/init/images/start_eintro_113.png Binary files differnew file mode 100644 index 000000000..c28b43b7a --- /dev/null +++ b/data/init/images/start_eintro_113.png diff --git a/data/init/images/start_eintro_114.png b/data/init/images/start_eintro_114.png Binary files differnew file mode 100644 index 000000000..92beaa243 --- /dev/null +++ b/data/init/images/start_eintro_114.png diff --git a/data/init/images/start_eintro_115.png b/data/init/images/start_eintro_115.png Binary files differnew file mode 100644 index 000000000..fa03b6c8d --- /dev/null +++ b/data/init/images/start_eintro_115.png diff --git a/data/init/images/start_eintro_116.png b/data/init/images/start_eintro_116.png Binary files differnew file mode 100644 index 000000000..8ea37dcab --- /dev/null +++ b/data/init/images/start_eintro_116.png diff --git a/data/init/images/start_eintro_117.png b/data/init/images/start_eintro_117.png Binary files differnew file mode 100644 index 000000000..7035eea4a --- /dev/null +++ b/data/init/images/start_eintro_117.png diff --git a/data/init/images/start_eintro_118.png b/data/init/images/start_eintro_118.png Binary files differnew file mode 100644 index 000000000..5f80f1ca3 --- /dev/null +++ b/data/init/images/start_eintro_118.png diff --git a/data/init/images/start_eintro_119.png b/data/init/images/start_eintro_119.png Binary files differnew file mode 100644 index 000000000..9b23bab9e --- /dev/null +++ b/data/init/images/start_eintro_119.png diff --git a/data/init/images/start_eintro_120.png b/data/init/images/start_eintro_120.png Binary files differnew file mode 100644 index 000000000..5f9b4df54 --- /dev/null +++ b/data/init/images/start_eintro_120.png diff --git a/data/init/init.edc b/data/init/init.edc new file mode 100644 index 000000000..6a001af2e --- /dev/null +++ b/data/init/init.edc @@ -0,0 +1,1171 @@ +#ifdef E17_PROFILE +# if E17_PROFILE == LOWRES_PDA +# define SM "sm_" +# define FRAME LOSSY 30 +# define LOGOSZ 160 120 +# define TSIZE 12 +# define SSIZE 8 +# define VSIZE 6 +# elif E17_PROFILE == MEDIUMRES_PDA +# define SM "sm_" +# define FRAME LOSSY 70 +# define LOGOSZ 240 180 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +# elif E17_PROFILE == HIRES_PDA +# define SM "sm_" +# define FRAME LOSSY 70 +# define LOGOSZ 320 240 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +# elif E17_PROFILE == SLOW_PC +# define HALFFRAMES +# define SM +# define FRAME LOSSY 90 +# define LOGOSZ 320 240 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +# elif E17_PROFILE == MEDIUM_PC +# define HALFFRAMES +# define SM +# define FRAME LOSSY 90 +# define LOGOSZ 640 480 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +# elif E17_PROFILE == FAST_PC +# define ALLFRAMES +# define SM +# define FRAME LOSSY 90 +# define LOGOSZ 640 480 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +# endif +#else +# define ALLFRAMES +# define SM +# define FRAME LOSSY 90 +# define LOGOSZ 640 480 +# define TSIZE 16 +# define SSIZE 10 +# define VSIZE 10 +#endif + +fonts { + font: "Vera.ttf" "Edje Vera"; + font: "VeraBd.ttf" "Edje Vera Bold"; +} + +images { + image: "brushed.png" COMP; + image: SM"shadow.png" LOSSY 70; + image: SM"reflection_overlay.png" LOSSY 70; + +#ifdef ALLFRAMES + image: SM"start_eintro_001.png" FRAME; + image: SM"start_eintro_002.png" FRAME; + image: SM"start_eintro_003.png" FRAME; + image: SM"start_eintro_004.png" FRAME; + image: SM"start_eintro_005.png" FRAME; + image: SM"start_eintro_006.png" FRAME; + image: SM"start_eintro_007.png" FRAME; + image: SM"start_eintro_008.png" FRAME; + image: SM"start_eintro_009.png" FRAME; + image: SM"start_eintro_010.png" FRAME; + image: SM"start_eintro_011.png" FRAME; + image: SM"start_eintro_012.png" FRAME; + image: SM"start_eintro_013.png" FRAME; + image: SM"start_eintro_014.png" FRAME; + image: SM"start_eintro_015.png" FRAME; + image: SM"start_eintro_016.png" FRAME; + image: SM"start_eintro_017.png" FRAME; + image: SM"start_eintro_018.png" FRAME; + image: SM"start_eintro_019.png" FRAME; + image: SM"start_eintro_020.png" FRAME; + image: SM"start_eintro_021.png" FRAME; + image: SM"start_eintro_022.png" FRAME; + image: SM"start_eintro_023.png" FRAME; + image: SM"start_eintro_024.png" FRAME; + image: SM"start_eintro_025.png" FRAME; + image: SM"start_eintro_026.png" FRAME; + image: SM"start_eintro_027.png" FRAME; + image: SM"start_eintro_028.png" FRAME; + image: SM"start_eintro_029.png" FRAME; + image: SM"start_eintro_030.png" FRAME; + image: SM"start_eintro_031.png" FRAME; + image: SM"start_eintro_032.png" FRAME; + image: SM"start_eintro_033.png" FRAME; + image: SM"start_eintro_034.png" FRAME; + image: SM"start_eintro_035.png" FRAME; + image: SM"start_eintro_036.png" FRAME; + image: SM"start_eintro_037.png" FRAME; + image: SM"start_eintro_038.png" FRAME; + image: SM"start_eintro_039.png" FRAME; + image: SM"start_eintro_040.png" FRAME; + image: SM"start_eintro_041.png" FRAME; + image: SM"start_eintro_042.png" FRAME; + image: SM"start_eintro_043.png" FRAME; + image: SM"start_eintro_044.png" FRAME; + image: SM"start_eintro_045.png" FRAME; + image: SM"start_eintro_046.png" FRAME; + image: SM"start_eintro_047.png" FRAME; + image: SM"start_eintro_048.png" FRAME; + image: SM"start_eintro_049.png" FRAME; + image: SM"start_eintro_050.png" FRAME; + image: SM"start_eintro_051.png" FRAME; + image: SM"start_eintro_052.png" FRAME; + image: SM"start_eintro_053.png" FRAME; + image: SM"start_eintro_054.png" FRAME; + image: SM"start_eintro_055.png" FRAME; + image: SM"start_eintro_056.png" FRAME; + image: SM"start_eintro_057.png" FRAME; + image: SM"start_eintro_058.png" FRAME; + image: SM"start_eintro_059.png" FRAME; + image: SM"start_eintro_060.png" FRAME; + image: SM"start_eintro_061.png" FRAME; + image: SM"start_eintro_062.png" FRAME; + image: SM"start_eintro_063.png" FRAME; + image: SM"start_eintro_064.png" FRAME; + image: SM"start_eintro_065.png" FRAME; + image: SM"start_eintro_066.png" FRAME; + image: SM"start_eintro_067.png" FRAME; + image: SM"start_eintro_068.png" FRAME; + image: SM"start_eintro_069.png" FRAME; + image: SM"start_eintro_070.png" FRAME; + image: SM"start_eintro_071.png" FRAME; + image: SM"start_eintro_072.png" FRAME; + image: SM"start_eintro_073.png" FRAME; + image: SM"start_eintro_074.png" FRAME; + image: SM"start_eintro_075.png" FRAME; + image: SM"start_eintro_076.png" FRAME; + image: SM"start_eintro_077.png" FRAME; + image: SM"start_eintro_078.png" FRAME; + image: SM"start_eintro_079.png" FRAME; + image: SM"start_eintro_080.png" FRAME; + image: SM"start_eintro_081.png" FRAME; + image: SM"start_eintro_082.png" FRAME; + image: SM"start_eintro_083.png" FRAME; + image: SM"start_eintro_084.png" FRAME; + image: SM"start_eintro_085.png" FRAME; + image: SM"start_eintro_086.png" FRAME; + image: SM"start_eintro_087.png" FRAME; + image: SM"start_eintro_088.png" FRAME; + image: SM"start_eintro_089.png" FRAME; + image: SM"start_eintro_090.png" FRAME; + image: SM"start_eintro_091.png" FRAME; + image: SM"start_eintro_092.png" FRAME; + image: SM"start_eintro_093.png" FRAME; + image: SM"start_eintro_094.png" FRAME; + image: SM"start_eintro_095.png" FRAME; + image: SM"start_eintro_096.png" FRAME; + image: SM"start_eintro_097.png" FRAME; + image: SM"start_eintro_098.png" FRAME; + image: SM"start_eintro_099.png" FRAME; + image: SM"start_eintro_100.png" FRAME; + image: SM"start_eintro_101.png" FRAME; + image: SM"start_eintro_102.png" FRAME; + image: SM"start_eintro_103.png" FRAME; + image: SM"start_eintro_104.png" FRAME; + image: SM"start_eintro_105.png" FRAME; + image: SM"start_eintro_106.png" FRAME; + image: SM"start_eintro_107.png" FRAME; + image: SM"start_eintro_108.png" FRAME; + image: SM"start_eintro_109.png" FRAME; + image: SM"start_eintro_110.png" FRAME; + image: SM"start_eintro_111.png" FRAME; + image: SM"start_eintro_112.png" FRAME; + image: SM"start_eintro_113.png" FRAME; + image: SM"start_eintro_114.png" FRAME; + image: SM"start_eintro_115.png" FRAME; + image: SM"start_eintro_116.png" FRAME; + image: SM"start_eintro_117.png" FRAME; + image: SM"start_eintro_118.png" FRAME; + image: SM"start_eintro_119.png" FRAME; + image: SM"start_eintro_120.png" FRAME; + image: SM"loop_eintro_121.png" FRAME; + image: SM"loop_eintro_122.png" FRAME; + image: SM"loop_eintro_123.png" FRAME; + image: SM"loop_eintro_124.png" FRAME; + image: SM"loop_eintro_125.png" FRAME; + image: SM"loop_eintro_126.png" FRAME; + image: SM"loop_eintro_127.png" FRAME; + image: SM"loop_eintro_128.png" FRAME; + image: SM"loop_eintro_129.png" FRAME; + image: SM"loop_eintro_130.png" FRAME; + image: SM"loop_eintro_131.png" FRAME; + image: SM"loop_eintro_132.png" FRAME; + image: SM"loop_eintro_133.png" FRAME; + image: SM"loop_eintro_134.png" FRAME; + image: SM"loop_eintro_135.png" FRAME; + image: SM"loop_eintro_136.png" FRAME; + image: SM"loop_eintro_137.png" FRAME; + image: SM"loop_eintro_138.png" FRAME; + image: SM"loop_eintro_139.png" FRAME; + image: SM"loop_eintro_140.png" FRAME; + image: SM"loop_eintro_141.png" FRAME; + image: SM"loop_eintro_142.png" FRAME; + image: SM"loop_eintro_143.png" FRAME; + image: SM"loop_eintro_144.png" FRAME; + image: SM"loop_eintro_145.png" FRAME; + image: SM"loop_eintro_146.png" FRAME; + image: SM"loop_eintro_147.png" FRAME; + image: SM"loop_eintro_148.png" FRAME; + image: SM"loop_eintro_149.png" FRAME; + image: SM"loop_eintro_150.png" FRAME; + image: SM"loop_eintro_151.png" FRAME; + image: SM"loop_eintro_152.png" FRAME; + image: SM"loop_eintro_153.png" FRAME; + image: SM"loop_eintro_154.png" FRAME; + image: SM"loop_eintro_155.png" FRAME; + image: SM"loop_eintro_156.png" FRAME; + image: SM"loop_eintro_157.png" FRAME; + image: SM"loop_eintro_158.png" FRAME; + image: SM"loop_eintro_159.png" FRAME; + image: SM"loop_eintro_160.png" FRAME; + image: SM"loop_eintro_161.png" FRAME; + image: SM"loop_eintro_162.png" FRAME; + image: SM"loop_eintro_163.png" FRAME; + image: SM"loop_eintro_164.png" FRAME; + image: SM"loop_eintro_165.png" FRAME; + image: SM"loop_eintro_166.png" FRAME; + image: SM"loop_eintro_167.png" FRAME; + image: SM"loop_eintro_168.png" FRAME; + image: SM"loop_eintro_169.png" FRAME; + image: SM"loop_eintro_170.png" FRAME; + image: SM"loop_eintro_171.png" FRAME; + image: SM"loop_eintro_172.png" FRAME; + image: SM"loop_eintro_173.png" FRAME; + image: SM"loop_eintro_174.png" FRAME; + image: SM"loop_eintro_175.png" FRAME; + image: SM"loop_eintro_176.png" FRAME; + image: SM"loop_eintro_177.png" FRAME; + image: SM"loop_eintro_178.png" FRAME; + image: SM"loop_eintro_179.png" FRAME; + image: SM"loop_eintro_180.png" FRAME; + image: SM"loop_eintro_181.png" FRAME; + image: SM"loop_eintro_182.png" FRAME; + image: SM"loop_eintro_183.png" FRAME; + image: SM"loop_eintro_184.png" FRAME; + image: SM"loop_eintro_185.png" FRAME; + image: SM"loop_eintro_186.png" FRAME; + image: SM"loop_eintro_187.png" FRAME; + image: SM"loop_eintro_188.png" FRAME; + image: SM"loop_eintro_189.png" FRAME; + image: SM"loop_eintro_190.png" FRAME; + image: SM"loop_eintro_191.png" FRAME; + image: SM"loop_eintro_192.png" FRAME; + image: SM"loop_eintro_193.png" FRAME; + image: SM"loop_eintro_194.png" FRAME; + image: SM"loop_eintro_195.png" FRAME; + image: SM"loop_eintro_196.png" FRAME; + image: SM"loop_eintro_197.png" FRAME; + image: SM"loop_eintro_198.png" FRAME; + image: SM"loop_eintro_199.png" FRAME; + image: SM"loop_eintro_200.png" FRAME; + image: SM"loop_eintro_201.png" FRAME; + image: SM"loop_eintro_202.png" FRAME; + image: SM"loop_eintro_203.png" FRAME; + image: SM"loop_eintro_204.png" FRAME; + image: SM"loop_eintro_205.png" FRAME; + image: SM"loop_eintro_206.png" FRAME; + image: SM"loop_eintro_207.png" FRAME; + image: SM"loop_eintro_208.png" FRAME; + image: SM"loop_eintro_209.png" FRAME; + image: SM"loop_eintro_210.png" FRAME; + image: SM"loop_eintro_211.png" FRAME; + image: SM"loop_eintro_212.png" FRAME; + image: SM"loop_eintro_213.png" FRAME; + image: SM"loop_eintro_214.png" FRAME; + image: SM"loop_eintro_215.png" FRAME; + image: SM"loop_eintro_216.png" FRAME; + image: SM"loop_eintro_217.png" FRAME; + image: SM"loop_eintro_218.png" FRAME; + image: SM"loop_eintro_219.png" FRAME; + image: SM"loop_eintro_220.png" FRAME; + image: SM"loop_eintro_221.png" FRAME; + image: SM"loop_eintro_222.png" FRAME; + image: SM"loop_eintro_223.png" FRAME; + image: SM"loop_eintro_224.png" FRAME; + image: SM"loop_eintro_225.png" FRAME; + image: SM"loop_eintro_226.png" FRAME; + image: SM"loop_eintro_227.png" FRAME; + image: SM"loop_eintro_228.png" FRAME; + image: SM"loop_eintro_229.png" FRAME; + image: SM"loop_eintro_230.png" FRAME; + image: SM"loop_eintro_231.png" FRAME; + image: SM"loop_eintro_232.png" FRAME; + image: SM"loop_eintro_233.png" FRAME; + image: SM"loop_eintro_234.png" FRAME; + image: SM"loop_eintro_235.png" FRAME; + image: SM"loop_eintro_236.png" FRAME; + image: SM"loop_eintro_237.png" FRAME; + image: SM"loop_eintro_238.png" FRAME; + image: SM"loop_eintro_239.png" FRAME; + image: SM"loop_eintro_240.png" FRAME; +#else +#ifdef HALFFRAMES + image: SM"start_eintro_001.png" FRAME; + image: SM"start_eintro_003.png" FRAME; + image: SM"start_eintro_005.png" FRAME; + image: SM"start_eintro_007.png" FRAME; + image: SM"start_eintro_009.png" FRAME; + image: SM"start_eintro_011.png" FRAME; + image: SM"start_eintro_013.png" FRAME; + image: SM"start_eintro_015.png" FRAME; + image: SM"start_eintro_017.png" FRAME; + image: SM"start_eintro_019.png" FRAME; + image: SM"start_eintro_021.png" FRAME; + image: SM"start_eintro_023.png" FRAME; + image: SM"start_eintro_025.png" FRAME; + image: SM"start_eintro_027.png" FRAME; + image: SM"start_eintro_029.png" FRAME; + image: SM"start_eintro_031.png" FRAME; + image: SM"start_eintro_033.png" FRAME; + image: SM"start_eintro_035.png" FRAME; + image: SM"start_eintro_037.png" FRAME; + image: SM"start_eintro_039.png" FRAME; + image: SM"start_eintro_041.png" FRAME; + image: SM"start_eintro_043.png" FRAME; + image: SM"start_eintro_045.png" FRAME; + image: SM"start_eintro_047.png" FRAME; + image: SM"start_eintro_049.png" FRAME; + image: SM"start_eintro_051.png" FRAME; + image: SM"start_eintro_053.png" FRAME; + image: SM"start_eintro_055.png" FRAME; + image: SM"start_eintro_057.png" FRAME; + image: SM"start_eintro_059.png" FRAME; + image: SM"start_eintro_061.png" FRAME; + image: SM"start_eintro_063.png" FRAME; + image: SM"start_eintro_065.png" FRAME; + image: SM"start_eintro_067.png" FRAME; + image: SM"start_eintro_069.png" FRAME; + image: SM"start_eintro_071.png" FRAME; + image: SM"start_eintro_073.png" FRAME; + image: SM"start_eintro_075.png" FRAME; + image: SM"start_eintro_077.png" FRAME; + image: SM"start_eintro_079.png" FRAME; + image: SM"start_eintro_081.png" FRAME; + image: SM"start_eintro_083.png" FRAME; + image: SM"start_eintro_085.png" FRAME; + image: SM"start_eintro_087.png" FRAME; + image: SM"start_eintro_089.png" FRAME; + image: SM"start_eintro_091.png" FRAME; + image: SM"start_eintro_093.png" FRAME; + image: SM"start_eintro_095.png" FRAME; + image: SM"start_eintro_097.png" FRAME; + image: SM"start_eintro_099.png" FRAME; + image: SM"start_eintro_101.png" FRAME; + image: SM"start_eintro_103.png" FRAME; + image: SM"start_eintro_105.png" FRAME; + image: SM"start_eintro_107.png" FRAME; + image: SM"start_eintro_109.png" FRAME; + image: SM"start_eintro_111.png" FRAME; + image: SM"start_eintro_113.png" FRAME; + image: SM"start_eintro_115.png" FRAME; + image: SM"start_eintro_117.png" FRAME; + image: SM"start_eintro_119.png" FRAME; + image: SM"loop_eintro_121.png" FRAME; + image: SM"loop_eintro_123.png" FRAME; + image: SM"loop_eintro_125.png" FRAME; + image: SM"loop_eintro_127.png" FRAME; + image: SM"loop_eintro_129.png" FRAME; + image: SM"loop_eintro_131.png" FRAME; + image: SM"loop_eintro_133.png" FRAME; + image: SM"loop_eintro_135.png" FRAME; + image: SM"loop_eintro_137.png" FRAME; + image: SM"loop_eintro_139.png" FRAME; + image: SM"loop_eintro_141.png" FRAME; + image: SM"loop_eintro_143.png" FRAME; + image: SM"loop_eintro_145.png" FRAME; + image: SM"loop_eintro_147.png" FRAME; + image: SM"loop_eintro_149.png" FRAME; + image: SM"loop_eintro_151.png" FRAME; + image: SM"loop_eintro_153.png" FRAME; + image: SM"loop_eintro_155.png" FRAME; + image: SM"loop_eintro_157.png" FRAME; + image: SM"loop_eintro_159.png" FRAME; + image: SM"loop_eintro_161.png" FRAME; + image: SM"loop_eintro_163.png" FRAME; + image: SM"loop_eintro_165.png" FRAME; + image: SM"loop_eintro_167.png" FRAME; + image: SM"loop_eintro_169.png" FRAME; + image: SM"loop_eintro_171.png" FRAME; + image: SM"loop_eintro_173.png" FRAME; + image: SM"loop_eintro_175.png" FRAME; + image: SM"loop_eintro_177.png" FRAME; + image: SM"loop_eintro_179.png" FRAME; + image: SM"loop_eintro_181.png" FRAME; + image: SM"loop_eintro_183.png" FRAME; + image: SM"loop_eintro_185.png" FRAME; + image: SM"loop_eintro_187.png" FRAME; + image: SM"loop_eintro_189.png" FRAME; + image: SM"loop_eintro_191.png" FRAME; + image: SM"loop_eintro_193.png" FRAME; + image: SM"loop_eintro_195.png" FRAME; + image: SM"loop_eintro_197.png" FRAME; + image: SM"loop_eintro_199.png" FRAME; + image: SM"loop_eintro_201.png" FRAME; + image: SM"loop_eintro_203.png" FRAME; + image: SM"loop_eintro_205.png" FRAME; + image: SM"loop_eintro_207.png" FRAME; + image: SM"loop_eintro_209.png" FRAME; + image: SM"loop_eintro_211.png" FRAME; + image: SM"loop_eintro_213.png" FRAME; + image: SM"loop_eintro_215.png" FRAME; + image: SM"loop_eintro_217.png" FRAME; + image: SM"loop_eintro_219.png" FRAME; + image: SM"loop_eintro_221.png" FRAME; + image: SM"loop_eintro_223.png" FRAME; + image: SM"loop_eintro_225.png" FRAME; + image: SM"loop_eintro_227.png" FRAME; + image: SM"loop_eintro_229.png" FRAME; + image: SM"loop_eintro_231.png" FRAME; + image: SM"loop_eintro_233.png" FRAME; + image: SM"loop_eintro_235.png" FRAME; + image: SM"loop_eintro_237.png" FRAME; + image: SM"loop_eintro_239.png" FRAME; +#else + image: SM"start_eintro_001.png" FRAME; + image: SM"start_eintro_005.png" FRAME; + image: SM"start_eintro_009.png" FRAME; + image: SM"start_eintro_013.png" FRAME; + image: SM"start_eintro_017.png" FRAME; + image: SM"start_eintro_021.png" FRAME; + image: SM"start_eintro_025.png" FRAME; + image: SM"start_eintro_029.png" FRAME; + image: SM"start_eintro_033.png" FRAME; + image: SM"start_eintro_037.png" FRAME; + image: SM"start_eintro_041.png" FRAME; + image: SM"start_eintro_045.png" FRAME; + image: SM"start_eintro_049.png" FRAME; + image: SM"start_eintro_053.png" FRAME; + image: SM"start_eintro_057.png" FRAME; + image: SM"start_eintro_061.png" FRAME; + image: SM"start_eintro_065.png" FRAME; + image: SM"start_eintro_069.png" FRAME; + image: SM"start_eintro_073.png" FRAME; + image: SM"start_eintro_077.png" FRAME; + image: SM"start_eintro_081.png" FRAME; + image: SM"start_eintro_085.png" FRAME; + image: SM"start_eintro_089.png" FRAME; + image: SM"start_eintro_093.png" FRAME; + image: SM"start_eintro_097.png" FRAME; + image: SM"start_eintro_101.png" FRAME; + image: SM"start_eintro_105.png" FRAME; + image: SM"start_eintro_109.png" FRAME; + image: SM"start_eintro_113.png" FRAME; + image: SM"start_eintro_117.png" FRAME; + image: SM"loop_eintro_121.png" FRAME; + image: SM"loop_eintro_125.png" FRAME; + image: SM"loop_eintro_129.png" FRAME; + image: SM"loop_eintro_133.png" FRAME; + image: SM"loop_eintro_137.png" FRAME; + image: SM"loop_eintro_141.png" FRAME; + image: SM"loop_eintro_145.png" FRAME; + image: SM"loop_eintro_149.png" FRAME; + image: SM"loop_eintro_153.png" FRAME; + image: SM"loop_eintro_157.png" FRAME; + image: SM"loop_eintro_161.png" FRAME; + image: SM"loop_eintro_165.png" FRAME; + image: SM"loop_eintro_169.png" FRAME; + image: SM"loop_eintro_173.png" FRAME; + image: SM"loop_eintro_177.png" FRAME; + image: SM"loop_eintro_181.png" FRAME; + image: SM"loop_eintro_185.png" FRAME; + image: SM"loop_eintro_189.png" FRAME; + image: SM"loop_eintro_193.png" FRAME; + image: SM"loop_eintro_197.png" FRAME; + image: SM"loop_eintro_201.png" FRAME; + image: SM"loop_eintro_205.png" FRAME; + image: SM"loop_eintro_209.png" FRAME; + image: SM"loop_eintro_213.png" FRAME; + image: SM"loop_eintro_217.png" FRAME; + image: SM"loop_eintro_221.png" FRAME; + image: SM"loop_eintro_225.png" FRAME; + image: SM"loop_eintro_229.png" FRAME; + image: SM"loop_eintro_233.png" FRAME; + image: SM"loop_eintro_237.png" FRAME; +#endif +#endif +} + +collections { + group { + name: "init/splash"; + parts { + part { + name: "background"; + type: RECT; + description { + state: "default" 0.0; + color: 255 255 255 255; + } + } + part { + name: "background_image"; + description { + state: "default" 0.0; + image { + normal: "brushed.png"; + } + fill { + size { + relative: 0 0; + offset: 400 300; + } + } + } + } + part { + name: "reflection_overlay"; + description { + state: "default" 0.0; + image { + normal: SM"reflection_overlay.png"; + } + } + } + part { + name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { + state: "default" 0.0; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.75; + offset: 0 0; + to: "logo_point"; + } + rel2 { + relative: 1.0 0.75; + offset: -1 -1; + to: "logo_point"; + } + color: 255 255 255 255; + color3: 0 0 0 32; + text { + text: "Enlightenment"; + font: "Edje Vera Bold"; + size: TSIZE; + min: 1 1; + align: 0.5 0.5; + } + } + } + part { + name: "version"; + type: TEXT; + effect: SHADOW; + description { + state: "default" 0.0; + align: 1.0 1.0; + rel1 { + relative: 1.0 1.0; + offset: -5 -5; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + } + color: 0 0 0 128; + color3: 255 255 255 128; + text { + text: "0.17.0"; + font: "Edje Vera"; + size: VSIZE; + min: 1 1; + align: 0.0 0.0; + } + } + } + part { + name: "status"; + type: TEXT; + effect: SHADOW; + description { + state: "default" 0.0; + align: 0.5 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 5; + to: "title"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 5; + to: "title"; + } + color: 0 0 0 128; + color3: 255 255 255 128; + text { + text: "Starting Enlightenment. Please wait."; + font: "Edje Vera"; + size: SSIZE; + min: 1 1; + align: 0.5 0.5; + } + } + } + part { + name: "logo_point"; + type: RECT; + description { + state: "default" 0.0; + color: 255 255 255 0; + visible: 0; + aspect: 1.333333333333333333 1.333333333333333333; + max: LOGOSZ; + } + description { + state: "visible" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + visible: 1; + } + } + part { + name: "logo"; + clip_to: "logo_point"; + description { + state: "default" 0.0; + visible: 0; + image { + normal: SM"start_eintro_001.png"; + }; + } + description { + state: "intro_start" 0.0; + visible: 1; + // 3 3, 425x412 + rel1 { + relative: 0.0046875 0.00625; + offset: 0 0; + to: "logo_point"; + } + rel2 { + relative: 0.66875 0.864583333; + offset: -1 -1; + to: "logo_point"; + } + image { + normal: SM"start_eintro_001.png"; + }; + } + description { + state: "intro_go" 0.0; + inherit: "intro_start" 0.0; + // 3 3, 425x412 + image { +#ifdef ALLFRAMES + normal: SM"start_eintro_120.png"; + tween: SM"start_eintro_001.png"; + tween: SM"start_eintro_002.png"; + tween: SM"start_eintro_003.png"; + tween: SM"start_eintro_004.png"; + tween: SM"start_eintro_005.png"; + tween: SM"start_eintro_006.png"; + tween: SM"start_eintro_007.png"; + tween: SM"start_eintro_008.png"; + tween: SM"start_eintro_009.png"; + tween: SM"start_eintro_010.png"; + tween: SM"start_eintro_011.png"; + tween: SM"start_eintro_012.png"; + tween: SM"start_eintro_013.png"; + tween: SM"start_eintro_014.png"; + tween: SM"start_eintro_015.png"; + tween: SM"start_eintro_016.png"; + tween: SM"start_eintro_017.png"; + tween: SM"start_eintro_018.png"; + tween: SM"start_eintro_019.png"; + tween: SM"start_eintro_020.png"; + tween: SM"start_eintro_021.png"; + tween: SM"start_eintro_022.png"; + tween: SM"start_eintro_023.png"; + tween: SM"start_eintro_024.png"; + tween: SM"start_eintro_025.png"; + tween: SM"start_eintro_026.png"; + tween: SM"start_eintro_027.png"; + tween: SM"start_eintro_028.png"; + tween: SM"start_eintro_029.png"; + tween: SM"start_eintro_030.png"; + tween: SM"start_eintro_031.png"; + tween: SM"start_eintro_032.png"; + tween: SM"start_eintro_033.png"; + tween: SM"start_eintro_034.png"; + tween: SM"start_eintro_035.png"; + tween: SM"start_eintro_036.png"; + tween: SM"start_eintro_037.png"; + tween: SM"start_eintro_038.png"; + tween: SM"start_eintro_039.png"; + tween: SM"start_eintro_040.png"; + tween: SM"start_eintro_041.png"; + tween: SM"start_eintro_042.png"; + tween: SM"start_eintro_043.png"; + tween: SM"start_eintro_044.png"; + tween: SM"start_eintro_045.png"; + tween: SM"start_eintro_046.png"; + tween: SM"start_eintro_047.png"; + tween: SM"start_eintro_048.png"; + tween: SM"start_eintro_049.png"; + tween: SM"start_eintro_050.png"; + tween: SM"start_eintro_051.png"; + tween: SM"start_eintro_052.png"; + tween: SM"start_eintro_053.png"; + tween: SM"start_eintro_054.png"; + tween: SM"start_eintro_055.png"; + tween: SM"start_eintro_056.png"; + tween: SM"start_eintro_057.png"; + tween: SM"start_eintro_058.png"; + tween: SM"start_eintro_059.png"; + tween: SM"start_eintro_060.png"; + tween: SM"start_eintro_061.png"; + tween: SM"start_eintro_062.png"; + tween: SM"start_eintro_063.png"; + tween: SM"start_eintro_064.png"; + tween: SM"start_eintro_065.png"; + tween: SM"start_eintro_066.png"; + tween: SM"start_eintro_067.png"; + tween: SM"start_eintro_068.png"; + tween: SM"start_eintro_069.png"; + tween: SM"start_eintro_070.png"; + tween: SM"start_eintro_071.png"; + tween: SM"start_eintro_072.png"; + tween: SM"start_eintro_073.png"; + tween: SM"start_eintro_074.png"; + tween: SM"start_eintro_075.png"; + tween: SM"start_eintro_076.png"; + tween: SM"start_eintro_077.png"; + tween: SM"start_eintro_078.png"; + tween: SM"start_eintro_079.png"; + tween: SM"start_eintro_080.png"; + tween: SM"start_eintro_081.png"; + tween: SM"start_eintro_082.png"; + tween: SM"start_eintro_083.png"; + tween: SM"start_eintro_084.png"; + tween: SM"start_eintro_085.png"; + tween: SM"start_eintro_086.png"; + tween: SM"start_eintro_087.png"; + tween: SM"start_eintro_088.png"; + tween: SM"start_eintro_089.png"; + tween: SM"start_eintro_090.png"; + tween: SM"start_eintro_091.png"; + tween: SM"start_eintro_092.png"; + tween: SM"start_eintro_093.png"; + tween: SM"start_eintro_094.png"; + tween: SM"start_eintro_095.png"; + tween: SM"start_eintro_096.png"; + tween: SM"start_eintro_097.png"; + tween: SM"start_eintro_098.png"; + tween: SM"start_eintro_099.png"; + tween: SM"start_eintro_100.png"; + tween: SM"start_eintro_101.png"; + tween: SM"start_eintro_102.png"; + tween: SM"start_eintro_103.png"; + tween: SM"start_eintro_104.png"; + tween: SM"start_eintro_105.png"; + tween: SM"start_eintro_106.png"; + tween: SM"start_eintro_107.png"; + tween: SM"start_eintro_108.png"; + tween: SM"start_eintro_109.png"; + tween: SM"start_eintro_110.png"; + tween: SM"start_eintro_111.png"; + tween: SM"start_eintro_112.png"; + tween: SM"start_eintro_113.png"; + tween: SM"start_eintro_114.png"; + tween: SM"start_eintro_115.png"; + tween: SM"start_eintro_116.png"; + tween: SM"start_eintro_117.png"; + tween: SM"start_eintro_118.png"; + tween: SM"start_eintro_119.png"; +#else +#ifdef HALFFRAMES + normal: SM"start_eintro_119.png"; + tween: SM"start_eintro_001.png"; + tween: SM"start_eintro_003.png"; + tween: SM"start_eintro_005.png"; + tween: SM"start_eintro_007.png"; + tween: SM"start_eintro_009.png"; + tween: SM"start_eintro_011.png"; + tween: SM"start_eintro_013.png"; + tween: SM"start_eintro_015.png"; + tween: SM"start_eintro_017.png"; + tween: SM"start_eintro_019.png"; + tween: SM"start_eintro_021.png"; + tween: SM"start_eintro_023.png"; + tween: SM"start_eintro_025.png"; + tween: SM"start_eintro_027.png"; + tween: SM"start_eintro_029.png"; + tween: SM"start_eintro_031.png"; + tween: SM"start_eintro_033.png"; + tween: SM"start_eintro_035.png"; + tween: SM"start_eintro_037.png"; + tween: SM"start_eintro_039.png"; + tween: SM"start_eintro_041.png"; + tween: SM"start_eintro_043.png"; + tween: SM"start_eintro_045.png"; + tween: SM"start_eintro_047.png"; + tween: SM"start_eintro_049.png"; + tween: SM"start_eintro_051.png"; + tween: SM"start_eintro_053.png"; + tween: SM"start_eintro_055.png"; + tween: SM"start_eintro_057.png"; + tween: SM"start_eintro_059.png"; + tween: SM"start_eintro_061.png"; + tween: SM"start_eintro_063.png"; + tween: SM"start_eintro_065.png"; + tween: SM"start_eintro_067.png"; + tween: SM"start_eintro_069.png"; + tween: SM"start_eintro_071.png"; + tween: SM"start_eintro_073.png"; + tween: SM"start_eintro_075.png"; + tween: SM"start_eintro_077.png"; + tween: SM"start_eintro_079.png"; + tween: SM"start_eintro_081.png"; + tween: SM"start_eintro_083.png"; + tween: SM"start_eintro_085.png"; + tween: SM"start_eintro_087.png"; + tween: SM"start_eintro_089.png"; + tween: SM"start_eintro_091.png"; + tween: SM"start_eintro_093.png"; + tween: SM"start_eintro_095.png"; + tween: SM"start_eintro_097.png"; + tween: SM"start_eintro_099.png"; + tween: SM"start_eintro_101.png"; + tween: SM"start_eintro_103.png"; + tween: SM"start_eintro_105.png"; + tween: SM"start_eintro_107.png"; + tween: SM"start_eintro_109.png"; + tween: SM"start_eintro_111.png"; + tween: SM"start_eintro_113.png"; + tween: SM"start_eintro_115.png"; + tween: SM"start_eintro_117.png"; +#else + normal: SM"start_eintro_117.png"; + tween: SM"start_eintro_001.png"; + tween: SM"start_eintro_005.png"; + tween: SM"start_eintro_009.png"; + tween: SM"start_eintro_013.png"; + tween: SM"start_eintro_017.png"; + tween: SM"start_eintro_021.png"; + tween: SM"start_eintro_025.png"; + tween: SM"start_eintro_029.png"; + tween: SM"start_eintro_033.png"; + tween: SM"start_eintro_037.png"; + tween: SM"start_eintro_041.png"; + tween: SM"start_eintro_045.png"; + tween: SM"start_eintro_049.png"; + tween: SM"start_eintro_053.png"; + tween: SM"start_eintro_057.png"; + tween: SM"start_eintro_061.png"; + tween: SM"start_eintro_065.png"; + tween: SM"start_eintro_069.png"; + tween: SM"start_eintro_073.png"; + tween: SM"start_eintro_077.png"; + tween: SM"start_eintro_081.png"; + tween: SM"start_eintro_085.png"; + tween: SM"start_eintro_089.png"; + tween: SM"start_eintro_093.png"; + tween: SM"start_eintro_097.png"; + tween: SM"start_eintro_101.png"; + tween: SM"start_eintro_105.png"; + tween: SM"start_eintro_109.png"; + tween: SM"start_eintro_113.png"; +#endif +#endif + } + } + description { + state: "loop" 0.0; + visible: 1; + // 228 120, 187x247 + rel1 { + relative: 0.35625 0.25; + offset: 0 0; + to: "logo_point"; + } + rel2 { + relative: 0.6484375 0.76458333; + offset: -1 -1; + to: "logo_point"; + } + image { +#ifdef ALLFRAMES + normal: SM"loop_eintro_240.png"; + tween: SM"loop_eintro_121.png"; + tween: SM"loop_eintro_122.png"; + tween: SM"loop_eintro_123.png"; + tween: SM"loop_eintro_124.png"; + tween: SM"loop_eintro_125.png"; + tween: SM"loop_eintro_126.png"; + tween: SM"loop_eintro_127.png"; + tween: SM"loop_eintro_128.png"; + tween: SM"loop_eintro_129.png"; + tween: SM"loop_eintro_130.png"; + tween: SM"loop_eintro_131.png"; + tween: SM"loop_eintro_132.png"; + tween: SM"loop_eintro_133.png"; + tween: SM"loop_eintro_134.png"; + tween: SM"loop_eintro_135.png"; + tween: SM"loop_eintro_136.png"; + tween: SM"loop_eintro_137.png"; + tween: SM"loop_eintro_138.png"; + tween: SM"loop_eintro_139.png"; + tween: SM"loop_eintro_140.png"; + tween: SM"loop_eintro_141.png"; + tween: SM"loop_eintro_142.png"; + tween: SM"loop_eintro_143.png"; + tween: SM"loop_eintro_144.png"; + tween: SM"loop_eintro_145.png"; + tween: SM"loop_eintro_146.png"; + tween: SM"loop_eintro_147.png"; + tween: SM"loop_eintro_148.png"; + tween: SM"loop_eintro_149.png"; + tween: SM"loop_eintro_150.png"; + tween: SM"loop_eintro_151.png"; + tween: SM"loop_eintro_152.png"; + tween: SM"loop_eintro_153.png"; + tween: SM"loop_eintro_154.png"; + tween: SM"loop_eintro_155.png"; + tween: SM"loop_eintro_156.png"; + tween: SM"loop_eintro_157.png"; + tween: SM"loop_eintro_158.png"; + tween: SM"loop_eintro_159.png"; + tween: SM"loop_eintro_160.png"; + tween: SM"loop_eintro_161.png"; + tween: SM"loop_eintro_162.png"; + tween: SM"loop_eintro_163.png"; + tween: SM"loop_eintro_164.png"; + tween: SM"loop_eintro_165.png"; + tween: SM"loop_eintro_166.png"; + tween: SM"loop_eintro_167.png"; + tween: SM"loop_eintro_168.png"; + tween: SM"loop_eintro_169.png"; + tween: SM"loop_eintro_170.png"; + tween: SM"loop_eintro_171.png"; + tween: SM"loop_eintro_172.png"; + tween: SM"loop_eintro_173.png"; + tween: SM"loop_eintro_174.png"; + tween: SM"loop_eintro_175.png"; + tween: SM"loop_eintro_176.png"; + tween: SM"loop_eintro_177.png"; + tween: SM"loop_eintro_178.png"; + tween: SM"loop_eintro_179.png"; + tween: SM"loop_eintro_180.png"; + tween: SM"loop_eintro_181.png"; + tween: SM"loop_eintro_182.png"; + tween: SM"loop_eintro_183.png"; + tween: SM"loop_eintro_184.png"; + tween: SM"loop_eintro_185.png"; + tween: SM"loop_eintro_186.png"; + tween: SM"loop_eintro_187.png"; + tween: SM"loop_eintro_188.png"; + tween: SM"loop_eintro_189.png"; + tween: SM"loop_eintro_190.png"; + tween: SM"loop_eintro_191.png"; + tween: SM"loop_eintro_192.png"; + tween: SM"loop_eintro_193.png"; + tween: SM"loop_eintro_194.png"; + tween: SM"loop_eintro_195.png"; + tween: SM"loop_eintro_196.png"; + tween: SM"loop_eintro_197.png"; + tween: SM"loop_eintro_198.png"; + tween: SM"loop_eintro_199.png"; + tween: SM"loop_eintro_200.png"; + tween: SM"loop_eintro_201.png"; + tween: SM"loop_eintro_202.png"; + tween: SM"loop_eintro_203.png"; + tween: SM"loop_eintro_204.png"; + tween: SM"loop_eintro_205.png"; + tween: SM"loop_eintro_206.png"; + tween: SM"loop_eintro_207.png"; + tween: SM"loop_eintro_208.png"; + tween: SM"loop_eintro_209.png"; + tween: SM"loop_eintro_210.png"; + tween: SM"loop_eintro_211.png"; + tween: SM"loop_eintro_212.png"; + tween: SM"loop_eintro_213.png"; + tween: SM"loop_eintro_214.png"; + tween: SM"loop_eintro_215.png"; + tween: SM"loop_eintro_216.png"; + tween: SM"loop_eintro_217.png"; + tween: SM"loop_eintro_218.png"; + tween: SM"loop_eintro_219.png"; + tween: SM"loop_eintro_220.png"; + tween: SM"loop_eintro_221.png"; + tween: SM"loop_eintro_222.png"; + tween: SM"loop_eintro_223.png"; + tween: SM"loop_eintro_224.png"; + tween: SM"loop_eintro_225.png"; + tween: SM"loop_eintro_226.png"; + tween: SM"loop_eintro_227.png"; + tween: SM"loop_eintro_228.png"; + tween: SM"loop_eintro_229.png"; + tween: SM"loop_eintro_230.png"; + tween: SM"loop_eintro_231.png"; + tween: SM"loop_eintro_232.png"; + tween: SM"loop_eintro_233.png"; + tween: SM"loop_eintro_234.png"; + tween: SM"loop_eintro_235.png"; + tween: SM"loop_eintro_236.png"; + tween: SM"loop_eintro_237.png"; + tween: SM"loop_eintro_238.png"; + tween: SM"loop_eintro_239.png"; +#else +#ifdef HALFFRAMES + normal: SM"loop_eintro_239.png"; + tween: SM"loop_eintro_121.png"; + tween: SM"loop_eintro_123.png"; + tween: SM"loop_eintro_125.png"; + tween: SM"loop_eintro_127.png"; + tween: SM"loop_eintro_129.png"; + tween: SM"loop_eintro_131.png"; + tween: SM"loop_eintro_133.png"; + tween: SM"loop_eintro_135.png"; + tween: SM"loop_eintro_137.png"; + tween: SM"loop_eintro_139.png"; + tween: SM"loop_eintro_141.png"; + tween: SM"loop_eintro_143.png"; + tween: SM"loop_eintro_145.png"; + tween: SM"loop_eintro_147.png"; + tween: SM"loop_eintro_149.png"; + tween: SM"loop_eintro_151.png"; + tween: SM"loop_eintro_153.png"; + tween: SM"loop_eintro_155.png"; + tween: SM"loop_eintro_157.png"; + tween: SM"loop_eintro_159.png"; + tween: SM"loop_eintro_161.png"; + tween: SM"loop_eintro_163.png"; + tween: SM"loop_eintro_165.png"; + tween: SM"loop_eintro_167.png"; + tween: SM"loop_eintro_169.png"; + tween: SM"loop_eintro_171.png"; + tween: SM"loop_eintro_173.png"; + tween: SM"loop_eintro_175.png"; + tween: SM"loop_eintro_177.png"; + tween: SM"loop_eintro_179.png"; + tween: SM"loop_eintro_181.png"; + tween: SM"loop_eintro_183.png"; + tween: SM"loop_eintro_185.png"; + tween: SM"loop_eintro_187.png"; + tween: SM"loop_eintro_189.png"; + tween: SM"loop_eintro_191.png"; + tween: SM"loop_eintro_193.png"; + tween: SM"loop_eintro_195.png"; + tween: SM"loop_eintro_197.png"; + tween: SM"loop_eintro_199.png"; + tween: SM"loop_eintro_201.png"; + tween: SM"loop_eintro_203.png"; + tween: SM"loop_eintro_205.png"; + tween: SM"loop_eintro_207.png"; + tween: SM"loop_eintro_209.png"; + tween: SM"loop_eintro_211.png"; + tween: SM"loop_eintro_213.png"; + tween: SM"loop_eintro_215.png"; + tween: SM"loop_eintro_217.png"; + tween: SM"loop_eintro_219.png"; + tween: SM"loop_eintro_221.png"; + tween: SM"loop_eintro_223.png"; + tween: SM"loop_eintro_225.png"; + tween: SM"loop_eintro_227.png"; + tween: SM"loop_eintro_229.png"; + tween: SM"loop_eintro_231.png"; + tween: SM"loop_eintro_233.png"; + tween: SM"loop_eintro_235.png"; + tween: SM"loop_eintro_237.png"; +#else + normal: SM"loop_eintro_237.png"; + tween: SM"loop_eintro_121.png"; + tween: SM"loop_eintro_125.png"; + tween: SM"loop_eintro_129.png"; + tween: SM"loop_eintro_133.png"; + tween: SM"loop_eintro_137.png"; + tween: SM"loop_eintro_141.png"; + tween: SM"loop_eintro_145.png"; + tween: SM"loop_eintro_149.png"; + tween: SM"loop_eintro_153.png"; + tween: SM"loop_eintro_157.png"; + tween: SM"loop_eintro_161.png"; + tween: SM"loop_eintro_165.png"; + tween: SM"loop_eintro_169.png"; + tween: SM"loop_eintro_173.png"; + tween: SM"loop_eintro_177.png"; + tween: SM"loop_eintro_181.png"; + tween: SM"loop_eintro_185.png"; + tween: SM"loop_eintro_189.png"; + tween: SM"loop_eintro_193.png"; + tween: SM"loop_eintro_197.png"; + tween: SM"loop_eintro_201.png"; + tween: SM"loop_eintro_205.png"; + tween: SM"loop_eintro_209.png"; + tween: SM"loop_eintro_213.png"; + tween: SM"loop_eintro_217.png"; + tween: SM"loop_eintro_221.png"; + tween: SM"loop_eintro_225.png"; + tween: SM"loop_eintro_229.png"; + tween: SM"loop_eintro_233.png"; +#endif +#endif + } + } + } + part { + name: "shadow"; + description { + state: "default" 0.0; + image { + normal: SM"shadow.png"; + } + } + } + } + programs { + program { + name: "init_pause"; + signal: "show"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "logo_point"; + after: "logo_show"; + after: "logo_animate"; + } + program { + name: "logo_show"; + action: STATE_SET "visible" 0.0; + transition: SINUSOIDAL 1.0; + target: "logo_point"; + } + program { + name: "logo_animate"; + action: STATE_SET "intro_start" 0.0; + target: "logo"; + after: "logo_animate2"; + } + program { + name: "logo_animate2"; + action: STATE_SET "intro_go" 0.0; + transition: LINEAR 4.0; + target: "logo"; + after: "logo_animate3"; + } + program { + name: "logo_animate3"; + action: STATE_SET "loop" 0.0; + target: "logo"; + after: "logo_animate4"; + } + program { + name: "logo_animate4"; + action: STATE_SET "loop" 0.0; + transition: LINEAR 4.0; + target: "logo"; + after: "logo_animate4"; + } + } + } +} diff --git a/data/other/Makefile.am b/data/other/Makefile.am new file mode 100644 index 000000000..02503e4eb --- /dev/null +++ b/data/other/Makefile.am @@ -0,0 +1,5 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/enlightenment/data/other +files_DATA = favorite_apps.tar.gz + +EXTRA_DIST = $(files_DATA) diff --git a/data/other/favorite_apps.tar.gz b/data/other/favorite_apps.tar.gz Binary files differnew file mode 100644 index 000000000..a7bfb7f36 --- /dev/null +++ b/data/other/favorite_apps.tar.gz diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am new file mode 100644 index 000000000..172a9541c --- /dev/null +++ b/data/themes/Makefile.am @@ -0,0 +1,24 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = images + +EDJE_CC = @edje_cc@ +EDJE_FLAGS = \ +-v \ +-id $(top_srcdir)/data/themes/images \ +-fd $(top_srcdir)/data/fonts \ +@EDJE_DEF@ + +filesdir = $(datadir)/enlightenment/data/themes +files_DATA = \ +default.eet + +EXTRA_DIST = default.edc + +default.eet: Makefile default.edc + $(EDJE_CC) $(EDJE_FLAGS) \ + $(top_srcdir)/data/themes/default.edc \ + $(top_builddir)/data/themes/default.eet + +clean-local: + rm -f *.eet + diff --git a/data/themes/default.edc b/data/themes/default.edc new file mode 100644 index 000000000..78783c723 --- /dev/null +++ b/data/themes/default.edc @@ -0,0 +1,4232 @@ +#ifdef E17_PROFILE +# if E17_PROFILE == LOWRES_PDA +# define SM "sm_" +# elif E17_PROFILE == MEDIUMRES_PDA +# define SM "sm_" +# elif E17_PROFILE == HIRES_PDA +# define SM "sm_" +# elif E17_PROFILE == SLOW_PC +# define SM "sm_" +# elif E17_PROFILE == MEDIUM_PC +# define SM +# elif E17_PROFILE == FAST_PC +# define SM +# endif +#else +# define SM +#endif + +fonts { + font: "Vera.ttf" "Edje Vera"; +// font: "kochi-gothic.ttf" "Edje Vera"; +// font: "VeraBd.ttf" "Edje Vera Bold"; +} + +images { + image: "e17_brushed.png" COMP; + image: "e17_"SM"reflection_shadow_overlay.png" LOSSY 70; + + image: "e17_menu_arrow.png" COMP; + image: "e17_menu_bg.png" COMP; + image: "e17_menu_check1.png" COMP; + image: "e17_menu_check2.png" COMP; + image: "e17_menu_radio1.png" COMP; + image: "e17_menu_radio2.png" COMP; + image: "e17_menu_separator.png" COMP; + + image: "e17_border1.png" COMP; + image: "e17_border2.png" COMP; + image: "e17_border3.png" COMP; + image: "e17_border4.png" COMP; + image: "e17_border5.png" COMP; + image: "e17_border6.png" COMP; + image: "e17_border7.png" COMP; + image: "e17_titlebar_outline.png" COMP; + image: "e17_titlebar.png" COMP; + image: "e17_titlebar_shadow1.png" COMP; + image: "e17_titlebar_shadow2.png" COMP; + image: "e17_button_detail_close.png" COMP; + image: "e17_button_detail_maximize.png" COMP; + image: "e17_button_detail_minimize.png" COMP; + image: "e17_mini_button.png" COMP; + image: "e17_mini_button_shadow1.png" COMP; + image: "e17_mini_button_shadow2.png" COMP; + + image: "e17_ibar_arrow_d.png" COMP; + image: "e17_ibar_arrow_l.png" COMP; + image: "e17_ibar_arrow_r.png" COMP; + image: "e17_ibar_arrow_u.png" COMP; + image: "e17_ibar_bg_h.png" COMP; + image: "e17_ibar_bg_v.png" COMP; + image: "e17_ibar_handle_h.png" COMP; + image: "e17_ibar_handle_h2.png" COMP; + image: "e17_ibar_handle_thumb_h.png" COMP; + image: "e17_ibar_handle_thumb_v.png" COMP; + image: "e17_ibar_handle_v.png" COMP; + image: "e17_ibar_handle_v2.png" COMP; + image: "e17_ibar_lamp_d.png" COMP; + image: "e17_ibar_lamp_l.png" COMP; + image: "e17_ibar_lamp_r.png" COMP; + image: "e17_ibar_lamp_u.png" COMP; + image: "e17_ibar_over_h.png" COMP; + image: "e17_ibar_over_v.png" COMP; +} + +images { +} + +collections { + group { + name: "desktop/background"; + parts { + part { + name: "background_image"; + description { + state: "default" 0.0; + image { + normal: "e17_brushed.png"; + } + fill { + size { + relative: 0 0; + offset: 400 300; + } + } + } + } + part { + name: "reflection_shadow_overlay"; + description { + state: "default" 0.0; + image { + normal: "e17_"SM"reflection_shadow_overlay.png"; + } + } + } + } + } + group { + name: "widgets/border/default/border"; + data { + item: "client_inset" "4 4 24 4"; + } + parts { + part { + name: "title2"; + type: TEXT; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 7; + } + rel2 { + relative: 0.0 0.0; + offset: 0 7; + } + text { + text_source: "title_text"; + source: "title_text"; + min: 0 1; + } + } + } + part { + name: "t1"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.0; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 0.0 1.0; + offset: 0 5; + to_y: "title2"; + } + image { + normal: "e17_border1.png"; + border: 6 2 3 3; + } + } + } + part { + name: "t2"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 1; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "t1"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "t3"; + } + image { + normal: "e17_border2.png"; + border: 2 2 3 3; + } + } + } + part { + name: "t3"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "button_2"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 5; + to_y: "title2"; + } + image { + normal: "e17_border3.png"; + border: 3 6 3 3; + } + } + } + part { + name: "b1"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + offset: -4 0; + to_y: "t3"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to_y: "b2"; + } + image { + normal: "e17_border4.png"; + } + fill { + smooth: 0; + } + } + } + part { + name: "b2"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + offset: -4 -4; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_border5.png"; + } + } + } + part { + name: "b3"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "b4"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "b2"; + } + image { + normal: "e17_border6.png"; + } + fill { + smooth: 0; + } + } + } + part { + name: "b4"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 -4; + } + rel2 { + relative: 0.0 1.0; + offset: 3 -1; + } + image { + normal: "e17_border7.png"; + } + } + } + part { + name: "b5"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to_y: "t1"; + } + rel2 { + relative: 0.0 0.0; + offset: 3 -1; + to_y: "b4"; + } + image { + normal: "e17_border4.png"; + } + fill { + smooth: 0; + } + } + } + part { + name: "title_outline"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 14 14; + visible: 1; + rel1 { + relative: 1.0 0.0; + offset: 0 -7; + to_x: "t1"; + to_y: "title2"; + } + rel2 { + relative: 0.0 1.0; + offset: -2 4; + to_x: "t3"; + to_y: "title2"; + } + image { + normal: "e17_titlebar_outline.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + description { + state: "active" 0.0; + min: 14 14; + visible: 0; + rel1 { + relative: 1.0 0.0; + offset: 0 -7; + to_x: "t1"; + to_y: "title2"; + } + rel2 { + relative: 0.0 1.0; + offset: -2 4; + to_x: "t3"; + to_y: "title2"; + } + image { + normal: "e17_titlebar_outline.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "title_shadow2"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "title_shadow1"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "title_bar"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "title_text"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.0; + rel1 { + relative: 1.0 0.0; + offset: 9 7; + to_x: "t1"; + } + rel2 { + relative: 0.0 0.0; + offset: -10 7; + to_x: "t3"; + } + color: 0 0 0 255; + color3: 255 255 255 128; + text { + text: ""; + font: "Edje Vera"; + size: 10; + min: 0 1; + align: 0.0 0.5; + } + } + } + part { + name: "button_0_shadow2"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_0_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_0_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_0_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_0_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_1_shadow2"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_1_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_1_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_1_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_1_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_2_shadow2"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_2_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_2_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_2_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_2_bg"; + } + image { + normal: "e17_mini_button_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_0_shadow1"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_0_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_0_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_0_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_0_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_1_shadow1"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_1_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_1_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_1_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_1_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_2_shadow1"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_2_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_2_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_2_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_2_bg"; + } + image { + normal: "e17_mini_button_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "button_0_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_0"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_0"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 1 1; + to: "button_0"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to: "button_0"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + } + part { + name: "button_1_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_1"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_1"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 1 1; + to: "button_1"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to: "button_1"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + } + part { + name: "button_2_bg"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "button_2"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "button_2"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + description { + state: "active" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 1 1; + to: "button_2"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 0; + to: "button_2"; + } + image { + normal: "e17_mini_button.png"; + border: 8 8 8 8; + } + } + } + part { + name: "button_0_detail"; + mouse_events: 0; + description { + state: "default" 0.0; + max: 16 16; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + to: "button_0_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + to: "button_0_bg"; + } + image { + normal: "e17_button_detail_close.png"; + } + } + } + part { + name: "button_1_detail"; + mouse_events: 0; + description { + state: "default" 0.0; + max: 16 16; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + to: "button_1_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + to: "button_1_bg"; + } + image { + normal: "e17_button_detail_maximize.png"; + } + } + } + part { + name: "button_2_detail"; + mouse_events: 0; + description { + state: "default" 0.0; + max: 16 16; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + to: "button_2_bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + to: "button_2_bg"; + } + image { + normal: "e17_button_detail_minimize.png"; + } + } + } + part { + name: "client"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 4 0; + to: "t1"; + } + rel2 { + relative: 0.0 0.0; + offset: -1 -1; + to: "t2"; + } + color: 0 0 0 0; + } + } + part { + name: "icon_swallow"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + to: "t1"; + } + rel2 { + relative: 1.0 1.0; + offset: -2 -3; + to: "t1"; + } + color: 0 0 0 0; + } + } + part { + name: "resize_l"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to_y: "t1"; + } + rel2 { + relative: 0.0 1.0; + offset: 3 -1; + } + color: 0 0 0 0; + } + } + part { + name: "resize_r"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + offset: -4 0; + to_y: "t3"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + color: 0 0 0 0; + } + } + part { + name: "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; + } + } + part { + name: "resize_bl"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 -24; + } + rel2 { + relative: 0.0 1.0; + offset: 23 -1; + } + color: 0 0 0 0; + } + } + part { + name: "resize_br"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + offset: -24 -24; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + color: 0 0 0 0; + } + } + part { + name: "icon"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + to: "icon_swallow"; + } + rel2 { + to: "icon_swallow"; + } + color: 0 0 0 0; + } + } + part { + name: "button_0"; + type: RECT; + description { + state: "default" 0.0; + align: 1.0 0.0; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: 0 5; + to_y: "title2"; + } + color: 0 0 0 0; + } + } + part { + name: "button_1"; + type: RECT; + description { + state: "default" 0.0; + align: 1.0 0.0; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel1 { + relative: 0.0 0.0; + offset: 3 0; + to: "button_0"; + } + rel2 { + relative: 0.0 1.0; + offset: 3 -1; + to: "button_0"; + } + color: 0 0 0 0; + } + } + part { + name: "button_2"; + type: RECT; + description { + state: "default" 0.0; + align: 1.0 0.0; + aspect: 1.0 1.0; + aspect_preference: VERTICAL; + rel1 { + relative: 0.0 0.0; + offset: 3 0; + to: "button_1"; + } + rel2 { + relative: 0.0 1.0; + offset: 3 -1; + to: "button_1"; + } + color: 0 0 0 0; + } + } + part { + name: "title"; + type: RECT; + description { + state: "default" 0.0; + rel1 { + to: "title_bar"; + } + rel2 { + to: "title_bar"; + } + color: 0 0 0 0; + } + } + } + programs { + program { + name: "move_window1"; + signal: "mouse,down,1"; + source: "title"; + action: SIGNAL_EMIT "move_start" "mouse,1"; + } + program { + name: "move_window2"; + signal: "mouse,up,1"; + source: "title"; + action: SIGNAL_EMIT "move_stop" "mouse,1"; + } + program { + name: "resize_window_tl1"; + signal: "mouse,down,1"; + source: "resize_tl"; + action: SIGNAL_EMIT "resize_tl_start" "mouse,1"; + } + program { + name: "resize_window_tl2"; + signal: "mouse,up,1"; + source: "resize_tl"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_t1"; + signal: "mouse,down,1"; + source: "resize_t"; + action: SIGNAL_EMIT "resize_t_start" "mouse,1"; + } + program { + name: "resize_window_t2"; + signal: "mouse,up,1"; + source: "resize_t"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_tr1"; + signal: "mouse,down,1"; + source: "resize_tr"; + action: SIGNAL_EMIT "resize_tr_start" "mouse,1"; + } + program { + name: "resize_window_tr2"; + signal: "mouse,up,1"; + source: "resize_tr"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_r1"; + signal: "mouse,down,1"; + source: "resize_r"; + action: SIGNAL_EMIT "resize_r_start" "mouse,1"; + } + program { + name: "resize_window_r2"; + signal: "mouse,up,1"; + source: "resize_r"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_br1"; + signal: "mouse,down,1"; + source: "resize_br"; + action: SIGNAL_EMIT "resize_br_start" "mouse,1"; + } + program { + name: "resize_window_br2"; + signal: "mouse,up,1"; + source: "resize_br"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_b1"; + signal: "mouse,down,1"; + source: "resize_b"; + action: SIGNAL_EMIT "resize_b_start" "mouse,1"; + } + program { + name: "resize_window_b2"; + signal: "mouse,up,1"; + source: "resize_b"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_bl1"; + signal: "mouse,down,1"; + source: "resize_bl"; + action: SIGNAL_EMIT "resize_bl_start" "mouse,1"; + } + program { + name: "resize_window_bl2"; + signal: "mouse,up,1"; + source: "resize_bl"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "resize_window_l1"; + signal: "mouse,down,1"; + source: "resize_l"; + action: SIGNAL_EMIT "resize_l_start" "mouse,1"; + } + program { + name: "resize_window_l2"; + signal: "mouse,up,1"; + source: "resize_l"; + action: SIGNAL_EMIT "resize_stop" "mouse,1"; + } + program { + name: "close_action"; + signal: "mouse,clicked,1"; + source: "button_0"; + action: SIGNAL_EMIT "action" "close"; + } + + program { + name: "go_active_pre"; + signal: "active"; + source: ""; + action: STATE_SET "default" 0.0; + target: "title_outline"; + target: "title_bar"; + target: "title_shadow1"; + target: "title_shadow2"; + after: "go_active"; + } + program { + name: "go_active"; + action: STATE_SET "active" 0.0; + target: "title_outline"; + target: "title_bar"; + transition: LINEAR 0.05; + after: "go_active2"; + } + program { + name: "go_active2"; + action: STATE_SET "active" 0.0; + target: "title_shadow1"; + transition: LINEAR 0.05; + after: "go_active3"; + } + program { + name: "go_active3"; + action: STATE_SET "active" 0.0; + target: "title_shadow2"; + transition: LINEAR 0.05; + } + + program { + name: "go_passive_pre"; + signal: "passive"; + source: ""; + action: STATE_SET "active" 0.0; + target: "title_outline"; + target: "title_bar"; + target: "title_shadow1"; + target: "title_shadow2"; + after: "go_passive"; + } + program { + name: "go_passive"; + action: STATE_SET "default" 0.0; + target: "title_shadow2"; + transition: LINEAR 0.1; + after: "go_passive2"; + } + program { + name: "go_passive2"; + action: STATE_SET "default" 0.0; + target: "title_shadow1"; + transition: LINEAR 0.1; + after: "go_passive3"; + } + program { + name: "go_passive3"; + action: STATE_SET "default" 0.0; + target: "title_outline"; + target: "title_bar"; + transition: LINEAR 0.1; + } + + program { + name: "button_0_active_pre"; + signal: "mouse,down,1"; + source: "button_0"; + action: STATE_SET "default" 0.0; + target: "button_0_shadow1"; + target: "button_0_shadow2"; + target: "button_0_bg"; + target: "button_0_detail"; + after: "button_0_active"; + after: "button_0_active_p"; + } + program { + name: "button_0_active"; + action: STATE_SET "active" 0.0; + target: "button_0_shadow2"; + transition: LINEAR 0.05; + after: "button_0_active2"; + } + program { + name: "button_0_active2"; + action: STATE_SET "active" 0.0; + target: "button_0_shadow1"; + transition: LINEAR 0.05; + } + program { + name: "button_0_active_p"; + action: STATE_SET "active" 0.0; + target: "button_0_bg"; + target: "button_0_detail"; + transition: LINEAR 0.1; + } + program { + name: "button_0_passive_pre"; + signal: "mouse,up,1"; + source: "button_0"; + action: STATE_SET "active" 0.0; + target: "button_0_shadow1"; + target: "button_0_shadow2"; + target: "button_0_bg"; + target: "button_0_detail"; + after: "button_0_passive"; + after: "button_0_passive_p"; + } + program { + name: "button_0_passive"; + action: STATE_SET "default" 0.0; + target: "button_0_shadow2"; + transition: LINEAR 0.1; + after: "button_0_passive2"; + } + program { + name: "button_0_passive2"; + action: STATE_SET "default" 0.0; + target: "button_0_shadow1"; + transition: LINEAR 0.1; + } + program { + name: "button_0_passive_p"; + action: STATE_SET "default" 0.0; + target: "button_0_bg"; + target: "button_0_detail"; + transition: LINEAR 0.2; + } + + + program { + name: "button_1_active_pre"; + signal: "mouse,down,1"; + source: "button_1"; + action: STATE_SET "default" 0.0; + target: "button_1_shadow1"; + target: "button_1_shadow2"; + target: "button_1_bg"; + target: "button_1_detail"; + after: "button_1_active"; + after: "button_1_active_p"; + } + program { + name: "button_1_active"; + action: STATE_SET "active" 0.0; + target: "button_1_shadow2"; + transition: LINEAR 0.05; + after: "button_1_active2"; + } + program { + name: "button_1_active2"; + action: STATE_SET "active" 0.0; + target: "button_1_shadow1"; + transition: LINEAR 0.05; + } + program { + name: "button_1_active_p"; + action: STATE_SET "active" 0.0; + target: "button_1_bg"; + target: "button_1_detail"; + transition: LINEAR 0.1; + } + program { + name: "button_1_passive_pre"; + signal: "mouse,up,1"; + source: "button_1"; + action: STATE_SET "active" 0.0; + target: "button_1_shadow1"; + target: "button_1_shadow2"; + target: "button_1_bg"; + target: "button_1_detail"; + after: "button_1_passive"; + after: "button_1_passive_p"; + } + program { + name: "button_1_passive"; + action: STATE_SET "default" 0.0; + target: "button_1_shadow2"; + transition: LINEAR 0.1; + after: "button_1_passive2"; + } + program { + name: "button_1_passive2"; + action: STATE_SET "default" 0.0; + target: "button_1_shadow1"; + transition: LINEAR 0.1; + } + program { + name: "button_1_passive_p"; + action: STATE_SET "default" 0.0; + target: "button_1_bg"; + target: "button_1_detail"; + transition: LINEAR 0.2; + } + + program { + name: "button_2_active_pre"; + signal: "mouse,down,1"; + source: "button_2"; + action: STATE_SET "default" 0.0; + target: "button_2_shadow1"; + target: "button_2_shadow2"; + target: "button_2_bg"; + target: "button_2_detail"; + after: "button_2_active"; + after: "button_2_active_p"; + } + program { + name: "button_2_active"; + action: STATE_SET "active" 0.0; + target: "button_2_shadow2"; + transition: LINEAR 0.05; + after: "button_2_active2"; + } + program { + name: "button_2_active2"; + action: STATE_SET "active" 0.0; + target: "button_2_shadow1"; + transition: LINEAR 0.05; + } + program { + name: "button_2_active_p"; + action: STATE_SET "active" 0.0; + target: "button_2_bg"; + target: "button_2_detail"; + transition: LINEAR 0.1; + } + program { + name: "button_2_passive_pre"; + signal: "mouse,up,1"; + source: "button_2"; + action: STATE_SET "active" 0.0; + target: "button_2_shadow1"; + target: "button_2_shadow2"; + target: "button_2_bg"; + target: "button_2_detail"; + after: "button_2_passive"; + after: "button_2_passive_p"; + } + program { + name: "button_2_passive"; + action: STATE_SET "default" 0.0; + target: "button_2_shadow2"; + transition: LINEAR 0.1; + after: "button_2_passive2"; + } + program { + name: "button_2_passive2"; + action: STATE_SET "default" 0.0; + target: "button_2_shadow1"; + transition: LINEAR 0.1; + } + program { + name: "button_2_passive_p"; + action: STATE_SET "default" 0.0; + target: "button_2_bg"; + target: "button_2_detail"; + transition: LINEAR 0.2; + } + } + } + group { + name: "widgets/menu/default/background"; + parts { + part { + name: "base"; + 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; + } + image { + normal: "e17_menu_bg.png"; + border: 3 3 3 3; + } + } + } + part { + name: "items"; + mouse_events: 0; + 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; + } + color: 0 0 0 0; + } + } + } + } + group { + name: "widgets/menu/default/separator"; + parts { + part { + name: "separator"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 20 2; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + image { + normal: "e17_menu_separator.png"; + border: 3 3 0 0; + } + } + } + } + } + group { + name: "widgets/menu/default/item_bg"; + parts { + part { + name: "item"; + type: SWALLOW; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + } + } + group { + name: "widgets/menu/default/submenu_bg"; + parts { + part { + name: "item"; + type: SWALLOW; + description { + state: "default" 0.0; + align: 0.0 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + } + } + group { + name: "widgets/menu/default/check"; + parts { + part { + name: "background"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + min: 18 18; + max: 18 18; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + color: 0 0 0 0; + } + } + part { + name: "outline"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + max: 16 16; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_check1.png"; + } + } + } + part { + name: "item1"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + max: 16 16; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_check2.png"; + } + } + description { + state: "active" 0.0; + min: 16 16; + max: 16 16; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_check2.png"; + } + } + } + } + programs { + program { + name: "turn_on1"; + signal: "toggle_on"; + source: ""; + action: STATE_SET "active" 0.0; + target: "item1"; + } + program { + name: "turn_off1"; + signal: "toggle_off"; + source: ""; + action: STATE_SET "default" 0.0; + target: "item1"; + } + } + } + group { + name: "widgets/menu/default/radio"; + parts { + part { + name: "background"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + min: 18 18; + max: 18 18; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + color: 0 0 0 0; + } + } + part { + name: "outline"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + max: 16 16; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_radio1.png"; + } + } + } + part { + name: "item1"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 16 16; + max: 16 16; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_radio2.png"; + } + } + description { + state: "active" 0.0; + min: 16 16; + max: 16 16; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_menu_radio2.png"; + } + } + } + } + programs { + program { + name: "turn_on1"; + signal: "toggle_on"; + source: ""; + action: STATE_SET "active" 0.0; + target: "item1"; + } + program { + name: "turn_off1"; + signal: "toggle_off"; + source: ""; + action: STATE_SET "default" 0.0; + target: "item1"; + } + } + } + group { + name: "widgets/menu/default/icon"; + parts { + part { + name: "item"; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + } + } + } + } + } + group { + name: "widgets/menu/default/label"; + parts { + part { + name: "title_outline"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 14 14; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_titlebar_outline.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + description { + state: "active" 0.0; + min: 14 14; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: -1 -1; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_titlebar_outline.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + } + part { + name: "title_shadow2"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow2.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "title_shadow1"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar_shadow1.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "title_bar"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar.png"; + border: 8 8 8 8; + } + color: 255 255 255 0; + } + description { + state: "active" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "title_outline"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "title_outline"; + } + image { + normal: "e17_titlebar.png"; + border: 8 8 8 8; + } + color: 255 255 255 255; + } + } + part { + name: "label"; + type: TEXT; + effect: SHADOW; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 8 6; + } + rel2 { + relative: 1.0 1.0; + offset: -8 -6; + } + color: 0 0 0 255; + color3: 255 255 255 128; + text { + text: "Item Label"; + font: "Edje Vera"; + size: 10; + min: 1 1; + align: 0.0 0.5; + } + } + } + } + programs { + program { + name: "go_active_pre"; + signal: "active"; + source: ""; + action: STATE_SET "default" 0.0; + target: "title_outline"; + target: "title_bar"; + target: "title_shadow1"; + target: "title_shadow2"; + after: "go_active"; + } + program { + name: "go_active"; + action: STATE_SET "active" 0.0; + target: "title_outline"; + target: "title_bar"; + transition: LINEAR 0.05; + after: "go_active2"; + } + program { + name: "go_active2"; + action: STATE_SET "active" 0.0; + target: "title_shadow1"; + transition: LINEAR 0.05; + after: "go_active3"; + } + program { + name: "go_active3"; + action: STATE_SET "active" 0.0; + target: "title_shadow2"; + transition: LINEAR 0.05; + } + + program { + name: "go_passive_pre"; + signal: "passive"; + source: ""; + action: STATE_SET "active" 0.0; + target: "title_outline"; + target: "title_bar"; + target: "title_shadow1"; + target: "title_shadow2"; + after: "go_passive"; + } + program { + name: "go_passive"; + action: STATE_SET "default" 0.0; + target: "title_shadow2"; + transition: LINEAR 0.1; + after: "go_passive2"; + } + program { + name: "go_passive2"; + action: STATE_SET "default" 0.0; + target: "title_shadow1"; + transition: LINEAR 0.1; + after: "go_passive3"; + } + program { + name: "go_passive3"; + action: STATE_SET "default" 0.0; + target: "title_outline"; + target: "title_bar"; + transition: LINEAR 0.1; + } + } + } + group { + name: "widgets/menu/default/submenu"; + parts { + part { + name: "background"; + mouse_events: 0; + type: RECT; + description { + state: "default" 0.0; + visible: 0; + min: 12 12; + max: 12 12; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + color: 0 0 0 0; + } + } + part { + name: "arrow"; + mouse_events: 0; + description { + state: "default" 0.0; + min: 6 12; + max: 6 12; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "background"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "background"; + } + image { + normal: "e17_menu_arrow.png"; + } + } + } + } + } + group { + name: "modules/ibar/main"; + data { +// item: "item_list", "item item2 item3"; + } + script { + public orient; + } + parts { + part { + name: "background"; + mouse_events: 1; + clip_to: "items_clip"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + to: "overlay"; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + to: "overlay"; + } + image { + normal: "e17_ibar_bg_h.png"; + } + fill { + smooth: 0; + } + } + description { + state: "vert" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + to: "overlay"; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + to: "overlay"; + } + image { + normal: "e17_ibar_bg_v.png"; + } + fill { + smooth: 0; + } + } + } + part { + name: "items_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + to: "background"; + } + rel2 { + to: "background"; + } + color: 255 255 255 255; + } + } + part { + name: "items"; + type: SWALLOW; + mouse_events: 0; + clip_to: "items_clip"; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "h1"; + to_y: "h3"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to_x: "h2"; + } + color: 0 0 0 0; + } + description { + state: "top" 0.0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to_x: "h1"; + } + rel2 { + relative: 0.0 0.0; + offset: -1 -1; + to_x: "h2"; + to_y: "h3"; + } + color: 0 0 0 0; + } + description { + state: "left" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to_y: "h1"; + } + rel2 { + relative: 0.0 0.0; + offset: -1 -1; + to_y: "h2"; + to_x: "h3"; + } + color: 0 0 0 0; + } + description { + state: "right" 0.0; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_y: "h1"; + to_x: "h3"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to_y: "h2"; + } + color: 0 0 0 0; + } + } + part { + name: "overlay"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 18 0; + to_y: "h3"; + } + rel2 { + relative: 1.0 1.0; + offset: -19 -1; + } + image { + normal: "e17_ibar_over_h.png"; + border: 25 25 25 25; + } + fill { + smooth: 0; + } + } + description { + state: "top" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 18 0; + } + rel2 { + relative: 1.0 0.0; + offset: -19 -1; + to_y: "h3"; + } + image { + normal: "e17_ibar_over_h.png"; + border: 25 25 25 25; + } + fill { + smooth: 0; + } + } + description { + state: "left" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 18; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -19; + to_x: "h3"; + } + image { + normal: "e17_ibar_over_v.png"; + border: 25 25 25 25; + } + fill { + smooth: 0; + } + } + description { + state: "right" 0.0; + rel1 { + relative: 1.0 0.0; + offset: 0 18; + to_x: "h3"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -19; + } + image { + normal: "e17_ibar_over_v.png"; + border: 25 25 25 25; + } + fill { + smooth: 0; + } + } + } + part { + name: "h1a1"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: -1 0; + to: "h1"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "h1"; + } + image { + normal: "e17_ibar_arrow_l.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 1.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 0 -1; + to: "h1"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to: "h1"; + } + image { + normal: "e17_ibar_arrow_u.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h1a2"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: -1 0; + to: "h1a1"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "h1a1"; + } + image { + normal: "e17_ibar_arrow_l.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 1.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 0 -1; + to: "h1a1"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to: "h1a1"; + } + image { + normal: "e17_ibar_arrow_u.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h1a3"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: -1 0; + to: "h1a2"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "h1a2"; + } + image { + normal: "e17_ibar_arrow_l.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 1.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 0 -1; + to: "h1a2"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to: "h1a2"; + } + image { + normal: "e17_ibar_arrow_u.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h1a4"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 1.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: -1 0; + to: "h1a3"; + } + rel2 { + relative: 0.0 1.0; + offset: -1 -1; + to: "h1a3"; + } + image { + normal: "e17_ibar_arrow_l.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 1.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 0.0; + offset: 0 -1; + to: "h1a3"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 -1; + to: "h1a3"; + } + image { + normal: "e17_ibar_arrow_u.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h1"; + mouse_events: 1; + clip_to: "clp"; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 18 36; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to_y: "overlay"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 -1; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + description { + state: "top" 0.0; + align: 0.0 0.5; + min: 18 36; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 0.0 1.0; + offset: 0 -1; + to_y: "overlay"; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "top2" 0.0; + inherit: "top" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + description { + state: "left" 0.0; + align: 0.5 0.0; + min: 36 18; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 0.0; + offset: -1 0; + to_x: "overlay"; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "left2" 0.0; + inherit: "left" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + description { + state: "right" 0.0; + align: 0.5 0.0; + min: 36 18; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "overlay"; + } + rel2 { + relative: 1.0 0.0; + offset: -1 0; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "right2" 0.0; + inherit: "right" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + } + part { + name: "h1th"; + mouse_events: 0; + clip_to: "clp"; + description { + state: "default" 0.0; + max: 6 16; + rel1 { + offset: -1 -1; + to: "h1"; + } + rel2 { + offset: -2 -2; + to: "h1"; + } + image { + normal: "e17_ibar_handle_thumb_h.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + description { + state: "vert" 0.0; + max: 16 6; + rel1 { + offset: -1 -1; + to: "h1"; + } + rel2 { + offset: -2 -2; + to: "h1"; + } + image { + normal: "e17_ibar_handle_thumb_v.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + } + part { + name: "h2a1"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "h2"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1; + to: "h2"; + } + image { + normal: "e17_ibar_arrow_r.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 0.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to: "h2"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 0; + to: "h2"; + } + image { + normal: "e17_ibar_arrow_d.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h2a2"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "h2a1"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1; + to: "h2a1"; + } + image { + normal: "e17_ibar_arrow_r.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 0.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to: "h2a1"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 0; + to: "h2a1"; + } + image { + normal: "e17_ibar_arrow_d.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h2a3"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "h2a2"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1; + to: "h2a2"; + } + image { + normal: "e17_ibar_arrow_r.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 0.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to: "h2a2"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 0; + to: "h2a2"; + } + image { + normal: "e17_ibar_arrow_d.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h2a4"; + mouse_events: 0; + description { + state: "default" 0.0; + align: 0.0 0.5; + min: 21 29; + max: 21 29; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 1.0 0.0; + offset: 0 0; + to: "h2a3"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1; + to: "h2a3"; + } + image { + normal: "e17_ibar_arrow_r.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + description { + state: "vert" 0.0; + align: 0.5 0.0; + min: 29 21; + max: 29 21; + visible: 0; + color: 255 255 255 0; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to: "h2a3"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 0; + to: "h2a3"; + } + image { + normal: "e17_ibar_arrow_d.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "h2"; + mouse_events: 1; + clip_to: "clp"; + description { + state: "default" 0.0; + align: 1.0 0.5; + min: 18 36; + rel1 { + relative: 1.0 0.0; + offset: -1 0; + to_y: "overlay"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + description { + state: "top" 0.0; + align: 1.0 0.5; + min: 18 36; + rel1 { + relative: 1.0 0.0; + offset: -1 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to_y: "overlay"; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "top2" 0.0; + inherit: "top" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + description { + state: "left" 0.0; + align: 0.5 1.0; + min: 36 18; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to_x: "overlay"; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "left2" 0.0; + inherit: "left" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + description { + state: "right" 0.0; + align: 0.5 1.0; + min: 36 18; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + to_x: "overlay"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "right2" 0.0; + inherit: "right" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + } + part { + name: "h2th"; + mouse_events: 0; + clip_to: "clp"; + description { + state: "default" 0.0; + max: 6 16; + rel1 { + offset: -1 -1; + to: "h2"; + } + rel2 { + offset: -2 -2; + to: "h2"; + } + image { + normal: "e17_ibar_handle_thumb_h.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + description { + state: "vert" 0.0; + max: 16 6; + rel1 { + offset: -1 -1; + to: "h2"; + } + rel2 { + offset: -2 -2; + to: "h2"; + } + image { + normal: "e17_ibar_handle_thumb_v.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + } + part { + name: "h3"; + mouse_events: 1; + clip_to: "clp"; + description { + state: "default" 0.0; + align: 0.5 0.0; + min: 36 18; + max: 60 18; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 0.0; + offset: -1 0; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + description { + state: "top" 0.0; + align: 0.5 1.0; + min: 36 18; + max: 60 18; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_ibar_handle_v.png"; + border: 19 19 0 0; + } + } + description { + state: "top2" 0.0; + inherit: "top" 0.0; + image { + normal: "e17_ibar_handle_v2.png"; + } + } + description { + state: "left" 0.0; + align: 1.0 0.5; + min: 18 36; + max: 18 60; + rel1 { + relative: 1.0 0.0; + offset: -1 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "left2" 0.0; + inherit: "left" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + description { + state: "right" 0.0; + align: 0.0 0.5; + min: 18 36; + max: 18 60; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 0.0 1.0; + offset: 0 -1; + } + image { + normal: "e17_ibar_handle_h.png"; + border: 0 0 19 19; + } + } + description { + state: "right2" 0.0; + inherit: "right" 0.0; + image { + normal: "e17_ibar_handle_h2.png"; + } + } + } + part { + name: "h3th"; + mouse_events: 0; + clip_to: "clp"; + description { + state: "default" 0.0; + max: 16 6; + rel1 { + offset: -1 -1; + to: "h3"; + } + rel2 { + offset: -2 -2; + to: "h3"; + } + image { + normal: "e17_ibar_handle_thumb_v.png"; + } + } + description { + state: "default2" 0.0; + inherit: "default" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + description { + state: "vert" 0.0; + max: 6 16; + rel1 { + offset: -1 -1; + to: "h3"; + } + rel2 { + offset: -2 -2; + to: "h3"; + } + image { + normal: "e17_ibar_handle_thumb_h.png"; + } + } + description { + state: "vert2" 0.0; + inherit: "vert" 0.0; + rel1 { + offset: 0 0; + } + rel2 { + offset: -1 -1; + } + } + } + part { + name: "clp"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + color: 255 255 255 0; + } + description { + state: "on" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + part { + name: "inn"; + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 0 0 0 0; + } + } + } + programs { + program { + name: "load"; + signal: "load"; + source: ""; + action: SIGNAL_EMIT "set_orientation" "bottom"; + } + program { + name: "orient"; + signal: "set_orientation"; + source: "*"; + script { // sig, src + if (!strcmp(src, "left")) { + set_int(orient, 0); + set_state(PART:"background", "vert", 0.0); + set_state(PART:"overlay", "left", 0.0); + set_state(PART:"items", "left", 0.0); + set_state(PART:"h1", "left", 0.0); + set_state(PART:"h2", "left", 0.0); + set_state(PART:"h1th", "vert", 0.0); + set_state(PART:"h2th", "vert", 0.0); + set_state(PART:"h1a1", "vert", 0.0); + set_state(PART:"h1a2", "vert", 0.0); + set_state(PART:"h1a3", "vert", 0.0); + set_state(PART:"h1a4", "vert", 0.0); + set_state(PART:"h2a1", "vert", 0.0); + set_state(PART:"h2a2", "vert", 0.0); + set_state(PART:"h2a3", "vert", 0.0); + set_state(PART:"h2a4", "vert", 0.0); + set_state(PART:"h3", "left", 0.0); + set_state(PART:"h3th", "vert", 0.0); + } + else if (!strcmp(src, "right")) { + set_int(orient, 1); + set_state(PART:"background", "vert", 0.0); + set_state(PART:"overlay", "right", 0.0); + set_state(PART:"items", "right", 0.0); + set_state(PART:"h1", "right", 0.0); + set_state(PART:"h2", "right", 0.0); + set_state(PART:"h1th", "vert", 0.0); + set_state(PART:"h2th", "vert", 0.0); + set_state(PART:"h1a1", "vert", 0.0); + set_state(PART:"h1a2", "vert", 0.0); + set_state(PART:"h1a3", "vert", 0.0); + set_state(PART:"h1a4", "vert", 0.0); + set_state(PART:"h2a1", "vert", 0.0); + set_state(PART:"h2a2", "vert", 0.0); + set_state(PART:"h2a3", "vert", 0.0); + set_state(PART:"h2a4", "vert", 0.0); + set_state(PART:"h3", "right", 0.0); + set_state(PART:"h3th", "vert", 0.0); + } + else if (!strcmp(src, "top")) { + set_int(orient, 2); + set_state(PART:"background", "default", 0.0); + set_state(PART:"overlay", "top", 0.0); + set_state(PART:"items", "top", 0.0); + set_state(PART:"h1", "top", 0.0); + set_state(PART:"h2", "top", 0.0); + set_state(PART:"h1th", "default", 0.0); + set_state(PART:"h2th", "default", 0.0); + set_state(PART:"h1a1", "default", 0.0); + set_state(PART:"h1a2", "default", 0.0); + set_state(PART:"h1a3", "default", 0.0); + set_state(PART:"h1a4", "default", 0.0); + set_state(PART:"h2a1", "default", 0.0); + set_state(PART:"h2a2", "default", 0.0); + set_state(PART:"h2a3", "default", 0.0); + set_state(PART:"h2a4", "default", 0.0); + set_state(PART:"h3", "top", 0.0); + set_state(PART:"h3th", "default", 0.0); + } + else if (!strcmp(src, "bottom")) { + set_int(orient, 3); + set_state(PART:"background", "default", 0.0); + set_state(PART:"overlay", "default", 0.0); + set_state(PART:"items", "default", 0.0); + set_state(PART:"h1", "default", 0.0); + set_state(PART:"h2", "default", 0.0); + set_state(PART:"h1th", "default", 0.0); + set_state(PART:"h2th", "default", 0.0); + set_state(PART:"h1a1", "default", 0.0); + set_state(PART:"h1a2", "default", 0.0); + set_state(PART:"h1a3", "default", 0.0); + set_state(PART:"h1a4", "default", 0.0); + set_state(PART:"h2a1", "default", 0.0); + set_state(PART:"h2a2", "default", 0.0); + set_state(PART:"h2a3", "default", 0.0); + set_state(PART:"h2a4", "default", 0.0); + set_state(PART:"h3", "default", 0.0); + set_state(PART:"h3th", "default", 0.0); + } + } + } + + program { + name: "inn_in"; + signal: "mouse,in"; + source: "inn"; + action: STATE_SET "on" 0.0; + transition: SINUSOIDAL 0.25; + target: "clp"; + } + program { + name: "inn_out"; + signal: "mouse,out"; + source: "inn"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 1.0; + target: "clp"; + } + + program { + name: "h1_in"; + signal: "mouse,in"; + source: "h1"; + script { + new ori = get_int(orient); + if ((ori == 0) || (ori == 1)) { + emit("h1_v_pulse", ""); + } + else { + emit("h1_h_pulse", ""); + } + } + } + program { + name: "h1_out"; + signal: "mouse,out"; + source: "h1"; + action: ACTION_STOP; + target: "h1_h_in1a"; + target: "h1_h_in1b"; + target: "h1_h_in2a"; + target: "h1_h_in2b"; + target: "h1_h_in3a"; + target: "h1_h_in3b"; + target: "h1_h_in4a"; + target: "h1_h_in4b"; + target: "h1_v_in1a"; + target: "h1_v_in1b"; + target: "h1_v_in2a"; + target: "h1_v_in2b"; + target: "h1_v_in3a"; + target: "h1_v_in3b"; + target: "h1_v_in4a"; + target: "h1_v_in4b"; + after: "h1_out2"; + } + program { + name: "h1_out2"; + script { + new ori = get_int(orient); + if ((ori == 0) || (ori == 1)) { + set_state(PART:"h1a1", "vert", 0.0); + set_state(PART:"h1a2", "vert", 0.0); + set_state(PART:"h1a3", "vert", 0.0); + set_state(PART:"h1a4", "vert", 0.0); + } + else { + set_state(PART:"h1a1", "default", 0.0); + set_state(PART:"h1a2", "default", 0.0); + set_state(PART:"h1a3", "default", 0.0); + set_state(PART:"h1a4", "default", 0.0); + } + } + } + + program { + name: "h1_h_0"; + signal: "h1_h_pulse"; + source: ""; + after: "h1_h_in1a"; + } + program { + name: "h1_h_in1a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a1"; + after: "h1_h_in2a"; + after: "h1_h_in2b"; + } + program { + name: "h1_h_in1b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h1a4"; + } + + program { + name: "h1_h_in2a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a2"; + after: "h1_h_in3a"; + after: "h1_h_in3b"; + } + program { + name: "h1_h_in2b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h1a1"; + } + + program { + name: "h1_h_in3a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a3"; + after: "h1_h_in4a"; + after: "h1_h_in4b"; + } + program { + name: "h1_h_in3b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h1a2"; + } + + program { + name: "h1_h_in4a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a4"; + after: "h1_h_in1a"; + after: "h1_h_in1b"; + } + program { + name: "h1_h_in4b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h1a3"; + } + + program { + name: "h1_v_0"; + signal: "h1_v_pulse"; + source: ""; + after: "h1_v_in1a"; + } + program { + name: "h1_v_in1a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a1"; + after: "h1_v_in2a"; + after: "h1_v_in2b"; + } + program { + name: "h1_v_in1b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h1a4"; + } + + program { + name: "h1_v_in2a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a2"; + after: "h1_v_in3a"; + after: "h1_v_in3b"; + } + program { + name: "h1_v_in2b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h1a1"; + } + + program { + name: "h1_v_in3a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a3"; + after: "h1_v_in4a"; + after: "h1_v_in4b"; + } + program { + name: "h1_v_in3b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h1a2"; + } + + program { + name: "h1_v_in4a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h1a4"; + after: "h1_v_in1a"; + after: "h1_v_in1b"; + } + program { + name: "h1_v_in4b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h1a3"; + } + + program { + name: "h1_click1"; + signal: "mouse,down,1"; + source: "h1"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h1", "left2", 0.0); + set_state(PART:"h1th", "vert2", 0.0); + } + else if (ori == 1) { + set_state(PART:"h1", "right2", 0.0); + set_state(PART:"h1th", "vert2", 0.0); + } + else if (ori == 2) { + set_state(PART:"h1", "top2", 0.0); + set_state(PART:"h1th", "default2", 0.0); + } + else { + set_state(PART:"h1", "default2", 0.0); + set_state(PART:"h1th", "default2", 0.0); + } + emit("resize1_start", ""); + } + } + program { + name: "h1_click2"; + signal: "mouse,up,1"; + source: "h1"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h1", "left", 0.0); + set_state(PART:"h1th", "vert", 0.0); + } + else if (ori == 1) { + set_state(PART:"h1", "right", 0.0); + set_state(PART:"h1th", "vert", 0.0); + } + else if (ori == 2) { + set_state(PART:"h1", "top", 0.0); + set_state(PART:"h1th", "default", 0.0); + } + else { + set_state(PART:"h1", "default", 0.0); + set_state(PART:"h1th", "default", 0.0); + } + emit("resize1_stop", ""); + } + } + + program { + name: "h2_in"; + signal: "mouse,in"; + source: "h2"; + script { + new ori = get_int(orient); + if ((ori == 0) || (ori == 1)) { + emit("h2_v_pulse", ""); + } + else { + emit("h2_h_pulse", ""); + } + } + } + program { + name: "h2_out"; + signal: "mouse,out"; + source: "h2"; + action: ACTION_STOP; + target: "h2_h_in1a"; + target: "h2_h_in1b"; + target: "h2_h_in2a"; + target: "h2_h_in2b"; + target: "h2_h_in3a"; + target: "h2_h_in3b"; + target: "h2_h_in4a"; + target: "h2_h_in4b"; + target: "h2_v_in1a"; + target: "h2_v_in1b"; + target: "h2_v_in2a"; + target: "h2_v_in2b"; + target: "h2_v_in3a"; + target: "h2_v_in3b"; + target: "h2_v_in4a"; + target: "h2_v_in4b"; + after: "h2_out2"; + } + program { + name: "h2_out2"; + script { + new ori = get_int(orient); + if ((ori == 0) || (ori == 1)) { + set_state(PART:"h2a1", "vert", 0.0); + set_state(PART:"h2a2", "vert", 0.0); + set_state(PART:"h2a3", "vert", 0.0); + set_state(PART:"h2a4", "vert", 0.0); + } + else { + set_state(PART:"h2a1", "default", 0.0); + set_state(PART:"h2a2", "default", 0.0); + set_state(PART:"h2a3", "default", 0.0); + set_state(PART:"h2a4", "default", 0.0); + } + } + } + + program { + name: "h2_h_0"; + signal: "h2_h_pulse"; + source: ""; + after: "h2_h_in1a"; + } + program { + name: "h2_h_in1a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a1"; + after: "h2_h_in2a"; + after: "h2_h_in2b"; + } + program { + name: "h2_h_in1b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h2a4"; + } + + program { + name: "h2_h_in2a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a2"; + after: "h2_h_in3a"; + after: "h2_h_in3b"; + } + program { + name: "h2_h_in2b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h2a1"; + } + + program { + name: "h2_h_in3a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a3"; + after: "h2_h_in4a"; + after: "h2_h_in4b"; + } + program { + name: "h2_h_in3b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h2a2"; + } + + program { + name: "h2_h_in4a"; + action: STATE_SET "default2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a4"; + after: "h2_h_in1a"; + after: "h2_h_in1b"; + } + program { + name: "h2_h_in4b"; + action: STATE_SET "default" 0.0; + transition: DECELERATE 0.75; + target: "h2a3"; + } + + program { + name: "h2_v_0"; + signal: "h2_v_pulse"; + source: ""; + after: "h2_v_in1a"; + } + program { + name: "h2_v_in1a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a1"; + after: "h2_v_in2a"; + after: "h2_v_in2b"; + } + program { + name: "h2_v_in1b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h2a4"; + } + + program { + name: "h2_v_in2a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a2"; + after: "h2_v_in3a"; + after: "h2_v_in3b"; + } + program { + name: "h2_v_in2b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h2a1"; + } + + program { + name: "h2_v_in3a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a3"; + after: "h2_v_in4a"; + after: "h2_v_in4b"; + } + program { + name: "h2_v_in3b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h2a2"; + } + + program { + name: "h2_v_in4a"; + action: STATE_SET "vert2" 0.0; + transition: SINUSOIDAL 0.25; + target: "h2a4"; + after: "h2_v_in1a"; + after: "h2_v_in1b"; + } + program { + name: "h2_v_in4b"; + action: STATE_SET "vert" 0.0; + transition: DECELERATE 0.75; + target: "h2a3"; + } + + program { + name: "h2_click1"; + signal: "mouse,down,1"; + source: "h2"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h2", "left2", 0.0); + set_state(PART:"h2th", "vert2", 0.0); + } + else if (ori == 1) { + set_state(PART:"h2", "right2", 0.0); + set_state(PART:"h2th", "vert2", 0.0); + } + else if (ori == 2) { + set_state(PART:"h2", "top2", 0.0); + set_state(PART:"h2th", "default2", 0.0); + } + else { + set_state(PART:"h2", "default2", 0.0); + set_state(PART:"h2th", "default2", 0.0); + } + emit("resize2_start", ""); + } + } + program { + name: "h2_click2"; + signal: "mouse,up,1"; + source: "h2"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h2", "left", 0.0); + set_state(PART:"h2th", "vert", 0.0); + } + else if (ori == 1) { + set_state(PART:"h2", "right", 0.0); + set_state(PART:"h2th", "vert", 0.0); + } + else if (ori == 2) { + set_state(PART:"h2", "top", 0.0); + set_state(PART:"h2th", "default", 0.0); + } + else { + set_state(PART:"h2", "default", 0.0); + set_state(PART:"h2th", "default", 0.0); + } + emit("resize2_stop", ""); + } + } + + + program { + name: "h3_click1"; + signal: "mouse,down,1"; + source: "h3"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h3", "left2", 0.0); + set_state(PART:"h3th", "vert2", 0.0); + } + else if (ori == 1) { + set_state(PART:"h3", "right2", 0.0); + set_state(PART:"h3th", "vert2", 0.0); + } + else if (ori == 2) { + set_state(PART:"h3", "top2", 0.0); + set_state(PART:"h3th", "default2", 0.0); + } + else { + set_state(PART:"h3", "default2", 0.0); + set_state(PART:"h3th", "default2", 0.0); + } + emit("move_start", ""); + } + } + program { + name: "h3_click2"; + signal: "mouse,up,1"; + source: "h3"; + script { + new ori = get_int(orient); + if (ori == 0) { + set_state(PART:"h3", "left", 0.0); + set_state(PART:"h3th", "vert", 0.0); + } + else if (ori == 1) { + set_state(PART:"h3", "right", 0.0); + set_state(PART:"h3th", "vert", 0.0); + } + else if (ori == 2) { + set_state(PART:"h3", "top", 0.0); + set_state(PART:"h3th", "default", 0.0); + } + else { + set_state(PART:"h3", "default", 0.0); + set_state(PART:"h3th", "default", 0.0); + } + emit("move_stop", ""); + } + } + } + } + group { + name: "modules/ibar/follower"; + min: 56 56; + data { +// item: "item_list", "item item2 item3"; + } + parts { + part { + name: "top"; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 -13; + } + rel2 { + relative: 1.0 0.0; + offset: -1 27; + } + image { + normal: "e17_ibar_lamp_d.png"; + } + } + description { + state: "top" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 -27; + } + rel2 { + relative: 1.0 1.0; + offset: -1 13; + } + image { + normal: "e17_ibar_lamp_u.png"; + } + } + description { + state: "right" 0.0; + rel1 { + relative: 0.0 0.0; + offset: -13 0; + } + rel2 { + relative: 0.0 1.0; + offset: 27 -1; + } + image { + normal: "e17_ibar_lamp_r.png"; + } + } + description { + state: "left" 0.0; + rel1 { + relative: 1.0 0.0; + offset: -27 0; + } + rel2 { + relative: 1.0 1.0; + offset: 13 -1; + } + image { + normal: "e17_ibar_lamp_l.png"; + } + } + } + program { + name: "orient"; + signal: "set_orientation"; + source: "bottom"; + action: STATE_SET "default" 0.0; + target: "top"; + } + program { + name: "orient2"; + signal: "set_orientation"; + source: "top"; + action: STATE_SET "top" 0.0; + target: "top"; + } + program { + name: "orient3"; + signal: "set_orientation"; + source: "left"; + action: STATE_SET "left" 0.0; + target: "top"; + } + program { + name: "orient4"; + signal: "set_orientation"; + source: "right"; + action: STATE_SET "right" 0.0; + target: "top"; + } + } + } + group { + name: "modules/ibar/icon"; + data { + 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"; + type: SWALLOW; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + } + color: 0 0 0 0; + } + } + } + } + group { + name: "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; + rel1 { + relative: 0.0 0.0; + offset: 4 4; + } + rel2 { + relative: 1.0 1.0; + offset: -5 -5; + } + color: 255 255 255 0; + } + } + part { + name: "background"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "base"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "base"; + } + color: 255 255 255 0; + } + description { + state: "visible" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "base"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "base"; + } + color: 255 255 255 255; + } + description { + state: "hidden" 0.0; + rel1 { + relative: -0.5 -0.5; + offset: 0 0; + to: "base"; + } + rel2 { + relative: 1.5 1.5; + offset: -1 -1; + to: "base"; + } + color: 255 255 255 0; + } + } + part { + name: "item"; + type: SWALLOW; + mouse_events: 0; + clip_to: "background"; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "background"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "background"; + } + color: 0 0 0 0; + } + } + } + programs { + program { + name: "go_active"; + signal: "active"; + source: ""; + action: STATE_SET "visible" 0.0; + target: "background"; + after: "go_active2"; + } + program { + name: "go_active2"; + signal: ""; + source: ""; + action: STATE_SET "hidden" 0.0; + transition: LINEAR 0.5; + target: "background"; + after: "go_active"; + } + program { + name: "go_passive"; + signal: "passive"; + source: ""; + action: ACTION_STOP; + target: "go_active"; + target: "go_active2"; + after: "go_passive2"; + } + program { + name: "go_passive2"; + signal: ""; + source: ""; + action: STATE_SET "default" 0.0; + target: "background"; + } + } + } +} diff --git a/data/themes/images/Makefile.am b/data/themes/images/Makefile.am new file mode 100644 index 000000000..3f6b60e05 --- /dev/null +++ b/data/themes/images/Makefile.am @@ -0,0 +1,49 @@ +MAINTAINERCLEANFILES = Makefile.in +EXTRA_DIST = \ +e17_brushed.png \ +e17_reflection_shadow_overlay.png \ +e17_sm_reflection_shadow_overlay.png \ +e17_border1.png \ +e17_border2.png \ +e17_border3.png \ +e17_border4.png \ +e17_border5.png \ +e17_border6.png \ +e17_border7.png \ +e17_button.png \ +e17_button2.png \ +e17_button_detail_close.png \ +e17_button_detail_maximize.png \ +e17_button_detail_minimize.png \ +e17_menu_arrow.png \ +e17_menu_bg.png \ +e17_menu_check1.png \ +e17_menu_check2.png \ +e17_menu_radio1.png \ +e17_menu_radio2.png \ +e17_menu_separator.png \ +e17_mini_button.png \ +e17_mini_button_shadow1.png \ +e17_mini_button_shadow2.png \ +e17_titlebar.png \ +e17_titlebar_outline.png \ +e17_titlebar_shadow1.png \ +e17_titlebar_shadow2.png \ +e17_ibar_arrow_d.png \ +e17_ibar_arrow_l.png \ +e17_ibar_arrow_r.png \ +e17_ibar_arrow_u.png \ +e17_ibar_bg_h.png \ +e17_ibar_bg_v.png \ +e17_ibar_handle_h.png \ +e17_ibar_handle_h2.png \ +e17_ibar_handle_thumb_h.png \ +e17_ibar_handle_thumb_v.png \ +e17_ibar_handle_v.png \ +e17_ibar_handle_v2.png \ +e17_ibar_lamp_d.png \ +e17_ibar_lamp_l.png \ +e17_ibar_lamp_r.png \ +e17_ibar_lamp_u.png \ +e17_ibar_over_h.png \ +e17_ibar_over_v.png diff --git a/data/themes/images/e17_border1.png b/data/themes/images/e17_border1.png Binary files differnew file mode 100644 index 000000000..645bd6b37 --- /dev/null +++ b/data/themes/images/e17_border1.png diff --git a/data/themes/images/e17_border2.png b/data/themes/images/e17_border2.png Binary files differnew file mode 100644 index 000000000..30d457bcf --- /dev/null +++ b/data/themes/images/e17_border2.png diff --git a/data/themes/images/e17_border3.png b/data/themes/images/e17_border3.png Binary files differnew file mode 100644 index 000000000..997168b30 --- /dev/null +++ b/data/themes/images/e17_border3.png diff --git a/data/themes/images/e17_border4.png b/data/themes/images/e17_border4.png Binary files differnew file mode 100644 index 000000000..5c3c9c2cf --- /dev/null +++ b/data/themes/images/e17_border4.png diff --git a/data/themes/images/e17_border5.png b/data/themes/images/e17_border5.png Binary files differnew file mode 100644 index 000000000..7b77ce9de --- /dev/null +++ b/data/themes/images/e17_border5.png diff --git a/data/themes/images/e17_border6.png b/data/themes/images/e17_border6.png Binary files differnew file mode 100644 index 000000000..053cc868e --- /dev/null +++ b/data/themes/images/e17_border6.png diff --git a/data/themes/images/e17_border7.png b/data/themes/images/e17_border7.png Binary files differnew file mode 100644 index 000000000..02416cf83 --- /dev/null +++ b/data/themes/images/e17_border7.png diff --git a/data/themes/images/e17_brushed.png b/data/themes/images/e17_brushed.png Binary files differnew file mode 100644 index 000000000..0b6cda97b --- /dev/null +++ b/data/themes/images/e17_brushed.png diff --git a/data/themes/images/e17_button.png b/data/themes/images/e17_button.png Binary files differnew file mode 100644 index 000000000..6b847fa62 --- /dev/null +++ b/data/themes/images/e17_button.png diff --git a/data/themes/images/e17_button2.png b/data/themes/images/e17_button2.png Binary files differnew file mode 100644 index 000000000..fadeccc93 --- /dev/null +++ b/data/themes/images/e17_button2.png diff --git a/data/themes/images/e17_button_detail_close.png b/data/themes/images/e17_button_detail_close.png Binary files differnew file mode 100644 index 000000000..de359e68b --- /dev/null +++ b/data/themes/images/e17_button_detail_close.png diff --git a/data/themes/images/e17_button_detail_maximize.png b/data/themes/images/e17_button_detail_maximize.png Binary files differnew file mode 100644 index 000000000..bb728009f --- /dev/null +++ b/data/themes/images/e17_button_detail_maximize.png diff --git a/data/themes/images/e17_button_detail_minimize.png b/data/themes/images/e17_button_detail_minimize.png Binary files differnew file mode 100644 index 000000000..56790808a --- /dev/null +++ b/data/themes/images/e17_button_detail_minimize.png diff --git a/data/themes/images/e17_ibar_arrow_d.png b/data/themes/images/e17_ibar_arrow_d.png Binary files differnew file mode 100644 index 000000000..f0602124f --- /dev/null +++ b/data/themes/images/e17_ibar_arrow_d.png diff --git a/data/themes/images/e17_ibar_arrow_l.png b/data/themes/images/e17_ibar_arrow_l.png Binary files differnew file mode 100644 index 000000000..bc4ec1c31 --- /dev/null +++ b/data/themes/images/e17_ibar_arrow_l.png diff --git a/data/themes/images/e17_ibar_arrow_r.png b/data/themes/images/e17_ibar_arrow_r.png Binary files differnew file mode 100644 index 000000000..21768a352 --- /dev/null +++ b/data/themes/images/e17_ibar_arrow_r.png diff --git a/data/themes/images/e17_ibar_arrow_u.png b/data/themes/images/e17_ibar_arrow_u.png Binary files differnew file mode 100644 index 000000000..b7bd1e1be --- /dev/null +++ b/data/themes/images/e17_ibar_arrow_u.png diff --git a/data/themes/images/e17_ibar_bg_h.png b/data/themes/images/e17_ibar_bg_h.png Binary files differnew file mode 100644 index 000000000..01079bc25 --- /dev/null +++ b/data/themes/images/e17_ibar_bg_h.png diff --git a/data/themes/images/e17_ibar_bg_v.png b/data/themes/images/e17_ibar_bg_v.png Binary files differnew file mode 100644 index 000000000..0c2ff0872 --- /dev/null +++ b/data/themes/images/e17_ibar_bg_v.png diff --git a/data/themes/images/e17_ibar_handle_h.png b/data/themes/images/e17_ibar_handle_h.png Binary files differnew file mode 100644 index 000000000..0d4d3f9e9 --- /dev/null +++ b/data/themes/images/e17_ibar_handle_h.png diff --git a/data/themes/images/e17_ibar_handle_h2.png b/data/themes/images/e17_ibar_handle_h2.png Binary files differnew file mode 100644 index 000000000..a39040690 --- /dev/null +++ b/data/themes/images/e17_ibar_handle_h2.png diff --git a/data/themes/images/e17_ibar_handle_thumb_h.png b/data/themes/images/e17_ibar_handle_thumb_h.png Binary files differnew file mode 100644 index 000000000..185a0d1fd --- /dev/null +++ b/data/themes/images/e17_ibar_handle_thumb_h.png diff --git a/data/themes/images/e17_ibar_handle_thumb_v.png b/data/themes/images/e17_ibar_handle_thumb_v.png Binary files differnew file mode 100644 index 000000000..f1ad33fb5 --- /dev/null +++ b/data/themes/images/e17_ibar_handle_thumb_v.png diff --git a/data/themes/images/e17_ibar_handle_v.png b/data/themes/images/e17_ibar_handle_v.png Binary files differnew file mode 100644 index 000000000..c2cda12fb --- /dev/null +++ b/data/themes/images/e17_ibar_handle_v.png diff --git a/data/themes/images/e17_ibar_handle_v2.png b/data/themes/images/e17_ibar_handle_v2.png Binary files differnew file mode 100644 index 000000000..c550f7b7e --- /dev/null +++ b/data/themes/images/e17_ibar_handle_v2.png diff --git a/data/themes/images/e17_ibar_lamp_d.png b/data/themes/images/e17_ibar_lamp_d.png Binary files differnew file mode 100644 index 000000000..affd3e753 --- /dev/null +++ b/data/themes/images/e17_ibar_lamp_d.png diff --git a/data/themes/images/e17_ibar_lamp_l.png b/data/themes/images/e17_ibar_lamp_l.png Binary files differnew file mode 100644 index 000000000..a7480e9bc --- /dev/null +++ b/data/themes/images/e17_ibar_lamp_l.png diff --git a/data/themes/images/e17_ibar_lamp_r.png b/data/themes/images/e17_ibar_lamp_r.png Binary files differnew file mode 100644 index 000000000..513600d4d --- /dev/null +++ b/data/themes/images/e17_ibar_lamp_r.png diff --git a/data/themes/images/e17_ibar_lamp_u.png b/data/themes/images/e17_ibar_lamp_u.png Binary files differnew file mode 100644 index 000000000..373f32774 --- /dev/null +++ b/data/themes/images/e17_ibar_lamp_u.png diff --git a/data/themes/images/e17_ibar_over_h.png b/data/themes/images/e17_ibar_over_h.png Binary files differnew file mode 100644 index 000000000..48bdd5395 --- /dev/null +++ b/data/themes/images/e17_ibar_over_h.png diff --git a/data/themes/images/e17_ibar_over_v.png b/data/themes/images/e17_ibar_over_v.png Binary files differnew file mode 100644 index 000000000..3e60827cd --- /dev/null +++ b/data/themes/images/e17_ibar_over_v.png diff --git a/data/themes/images/e17_menu_arrow.png b/data/themes/images/e17_menu_arrow.png Binary files differnew file mode 100644 index 000000000..42382f172 --- /dev/null +++ b/data/themes/images/e17_menu_arrow.png diff --git a/data/themes/images/e17_menu_bg.png b/data/themes/images/e17_menu_bg.png Binary files differnew file mode 100644 index 000000000..c3eaad983 --- /dev/null +++ b/data/themes/images/e17_menu_bg.png diff --git a/data/themes/images/e17_menu_check1.png b/data/themes/images/e17_menu_check1.png Binary files differnew file mode 100644 index 000000000..13ef3823c --- /dev/null +++ b/data/themes/images/e17_menu_check1.png diff --git a/data/themes/images/e17_menu_check2.png b/data/themes/images/e17_menu_check2.png Binary files differnew file mode 100644 index 000000000..196e18d60 --- /dev/null +++ b/data/themes/images/e17_menu_check2.png diff --git a/data/themes/images/e17_menu_radio1.png b/data/themes/images/e17_menu_radio1.png Binary files differnew file mode 100644 index 000000000..1655f75ef --- /dev/null +++ b/data/themes/images/e17_menu_radio1.png diff --git a/data/themes/images/e17_menu_radio2.png b/data/themes/images/e17_menu_radio2.png Binary files differnew file mode 100644 index 000000000..de9a67924 --- /dev/null +++ b/data/themes/images/e17_menu_radio2.png diff --git a/data/themes/images/e17_menu_separator.png b/data/themes/images/e17_menu_separator.png Binary files differnew file mode 100644 index 000000000..46a119a62 --- /dev/null +++ b/data/themes/images/e17_menu_separator.png diff --git a/data/themes/images/e17_mini_button.png b/data/themes/images/e17_mini_button.png Binary files differnew file mode 100644 index 000000000..1c483a21f --- /dev/null +++ b/data/themes/images/e17_mini_button.png diff --git a/data/themes/images/e17_mini_button_shadow1.png b/data/themes/images/e17_mini_button_shadow1.png Binary files differnew file mode 100644 index 000000000..68c7dd84d --- /dev/null +++ b/data/themes/images/e17_mini_button_shadow1.png diff --git a/data/themes/images/e17_mini_button_shadow2.png b/data/themes/images/e17_mini_button_shadow2.png Binary files differnew file mode 100644 index 000000000..96277cc13 --- /dev/null +++ b/data/themes/images/e17_mini_button_shadow2.png diff --git a/data/themes/images/e17_reflection_shadow_overlay.png b/data/themes/images/e17_reflection_shadow_overlay.png Binary files differnew file mode 100644 index 000000000..241b6f3e6 --- /dev/null +++ b/data/themes/images/e17_reflection_shadow_overlay.png diff --git a/data/themes/images/e17_sm_reflection_shadow_overlay.png b/data/themes/images/e17_sm_reflection_shadow_overlay.png Binary files differnew file mode 100644 index 000000000..b75097cb0 --- /dev/null +++ b/data/themes/images/e17_sm_reflection_shadow_overlay.png diff --git a/data/themes/images/e17_titlebar.png b/data/themes/images/e17_titlebar.png Binary files differnew file mode 100644 index 000000000..96626a64f --- /dev/null +++ b/data/themes/images/e17_titlebar.png diff --git a/data/themes/images/e17_titlebar_outline.png b/data/themes/images/e17_titlebar_outline.png Binary files differnew file mode 100644 index 000000000..cdaf62a3f --- /dev/null +++ b/data/themes/images/e17_titlebar_outline.png diff --git a/data/themes/images/e17_titlebar_shadow1.png b/data/themes/images/e17_titlebar_shadow1.png Binary files differnew file mode 100644 index 000000000..9d51e4e43 --- /dev/null +++ b/data/themes/images/e17_titlebar_shadow1.png diff --git a/data/themes/images/e17_titlebar_shadow2.png b/data/themes/images/e17_titlebar_shadow2.png Binary files differnew file mode 100644 index 000000000..eef1ef99a --- /dev/null +++ b/data/themes/images/e17_titlebar_shadow2.png diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 000000000..698471c98 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,7 @@ +MAINTAINERCLEANFILES = Makefile.in +filesdir = $(datadir)/enlightenment/doc +files_DATA = \ +documentation.html \ +enlightenment.png + +EXTRA_DIST = $(files_DATA) diff --git a/doc/documentation.html b/doc/documentation.html new file mode 100644 index 000000000..8be581a68 --- /dev/null +++ b/doc/documentation.html @@ -0,0 +1,451 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<HTML> +<HEAD> + <TITLE>Enlightenment Developer Documentation</TITLE> + <STYLE> + <!-- + @page { size: 51pc 66pc } + P.western { font-size: 8pt } + P.cjk { font-family: "Bitstream Vera Sans"; font-size: 8pt } + A.western:link { font-size: 8pt } + A.cjk:link { font-family: "Bitstream Vera Sans"; font-size: 8pt } + A.sdfootnotesym-western { font-size: 8pt } + A.sdfootnotesym-cjk { font-family: "Bitstream Vera Sans"; font-size: 8pt } + A.sdendnotesym-western { font-size: 8pt } + A.sdendnotesym-cjk { font-family: "Bitstream Vera Sans"; font-size: 8pt } + --> + </STYLE> +</HEAD> +<BODY LANG="en-US" DIR="LTR"> +<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0 STYLE="page-break-before: always"> + <COL WIDTH=256*> + <TR> + <TD WIDTH=100% VALIGN=TOP> + <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0pc"><IMG SRC="enlightenment.png" NAME="Graphic1" ALIGN=LEFT WIDTH=320 HEIGHT=320 BORDER=0><FONT FACE="Bitstream Vera Sans"><FONT SIZE=5><B>Enlightenment</B></FONT></FONT></P> + <P CLASS="western" STYLE="margin-bottom: 0pc"><BR> + </P> + <P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 6pt">Version + 0.17.0 </FONT></FONT> + </P> + <P CLASS="western" STYLE="margin-bottom: 0pc"><BR> + </P> + <P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>What + is Enlightenment?</B> </FONT></FONT> + </P> + <P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Enlightenment + is a Window Manager for X11. This is the latest incarnation of + code of the Enlightenment window manager (often referred to in + short as WM). This WM is built on the EFL (Enlightenment + Foundation Libraries) that have been worked on very hard over the + last few years. These libraries provide a sound base on which to + build the WM and related tools, utilities, and applications.</FONT></FONT></P> + <P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Right + now if you are just a "user" this code is NOT for you. + You're on your own. If you are a developer wanting to work on the + code - read on. But first we should take a break for some + history... </FONT></FONT> + </P> + </TD> + </TR> +</TABLE> +<HR> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>A +Brief History of Time... err Enlightenment</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">In +the past E has undergone 1 major rewrite since release DR +(Development Release) 0.1. This rewrite occurred for DR 0.14). DR +0.17 heralds another major rewrite. We have to be honest here. The +reason for this is the fact that we got lazy. Design went out the +window in favor of quick fixes and fast features. Too many people +worked on the code with too little care and attention to detail. +Large design mistakes were made, that to undo would be paramount to +half a rewrite. Patches were accepted without taking care to look at +them in detail, clean them or even reject them if not “well +done” enough for E's code. Thus the decision was made to fix +things once and for all and split things up, have well defined +interfaces (the EFL library API's) and clean and consistent code and +naming schemes. No it's not perfect - probably it will never be, but +we are trying. It is a massive improvement over anything +Enlightenment had before, and we are proud enough to probably say +it's some of the better API's and code of any available in the world +or used in any application or WM. It's not the best, but it's pretty +good. In doing this rewrite and split, we aim to not make those +mistakes again that happened before DR 0.17.0.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">With +Enlightenment and EFL's massive break-up into smaller sized chunks, +many users will complain about “how hard it is to install” +because there are so many libraries and inter-dependencies to handle. +We believe this is not our job, but the job of a package management +system to handle. We have documented the dependencies for people to +follow, but if anything, we aim to split things up more to make +maintenance, in the long term, an easier task. So in an effort to +avoid them, Here is a quick style and design guide for working on +this code. Please follow it, and if what you want to do doesn't fit +in, please discuss it first. Discuss your designs on the e-devel +(enlightemment-devel@lists.sourceforge.net) mailing list. Make your +code consistent and easy to follow - make it follow the style of the +rest in function naming, variable naming, access functions etc. Use +existing infrastructures - or extend them cleanly as needed. Just +because an infrastructure or system doesn't provide an accessor or +way of doing something does NOT mean you can't add it. Choose a clean +“correct” implementation over a nasty hack, all the time. +You get the idea. Now, on to the style guide.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Enlightenment +Stylin'</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Firstly +comes naming. All functions are name spaced. The EFL libraries begin +with library_something_something. It is object oriented naming so you +will have system_subsystem_subsystem_object_verb() as a name. For +example: e_config_load() or e_border_move() etc. All functions are +all lower-case with underscores between "words". All +functions that are accessed outside a file must have a prototype in +the file's header. All files have their code file (e_file.c) and a +header (e_file.h). The main "master" header (e.h) includes +all the smaller ones. All functions within that file are the same +name as the file. i.e. e_frog.c contains functions called +e_frog_something(). All internal functions only used within that file +should be declared as static and should begin with an underscore. +i.e. _e_frog_something(). All "local" globals (global to +that file only) should be declared static and beginning with _e_frog +just like functions. All static local functions should be at the end +of the file. All static function prototypes should be first at the +top of each file. All static local variables should come next, then +followed by the accessible functions. Any system that has "state" +should have an init and shutdown function. The init and shutdown +functions should be called from e_main.c during startup and shutdown +of the WM. It is encouraged that even systems that do not have state +have an init and shutdown call pair, just in case in future they will +gain state internally.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Any +system that returns objects (allocated structures) should probably +use the E_Object system as a parent. See examples on its use in the +code. E_Object provides a simple object wrapper with reference +counting, object pointer and type checking and safety that should, +runtime, trap a lot of potential problems and let the programmer know +about them. Use the object type checking macros for checking if an +object passed into a function as a parameter is a valid object.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Keep +to the indentation and spacing style thats there - it makes it easier +to read if all the code matches. All functions called as "callbacks" +should be called _e_system_cb_something. The "cb" denotes +that that function may get called by other code, maybe unpredictably, +at any time in response to an event, timer, or something mostly out +of the control of the program itself. Functions such as the free +function for an object aren't the same kind of callback, since they +are predictable and controllable, so they do not get "cb" +in their name.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">So +that's the quick rundown on basic coding style. More will likely be +added to this list, but the best way to put it all is "look at +what's there and follow the same style".</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Tree +Layout</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The +E17 source tree is well structured, with a location for everything. +In the top-level directory you will find a src directory that is the +master directory for all the C source code for the WM and components. +You will also find a doc and data directories. The doc directory +contains all documentation (this document for example).</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The +data directory contains all cross-platform data needed for the WM to +run as well as a basic default theme that it also needs to run. +Currently the default theme is not complete at all and is no +indication of Enlightenments final look when it is released. It is +only just enough to make it work and demonstrate an example of how to +make a theme. There is also other data used for things like low-level +error dialogs (used for example if the theme doesn't work) as well as +a default font and other system data such as data for the splash +screen displayed while Enlightenment starts up.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The +src directory contains 3 main repositories of code. They are bin, lib +and modules. The bin directory contains all the source code for the +WM itself and any primary executables it uses curing execution. The +modules directory contains all plug-in modules that E17 can load and +unload dynamically at runtime, allowing the WM to be extended even +after it has been compiled and installed by users, other developers +or by the E development team itself. These modules are intended to +provide clean modular boundaries for certain features of +Enlightenment too, so if a feature isn't used it doesn't have to use +any resources at all. Each module lives in its own subdirectory with +the code and special module specific data like images, Edje .eet +files etc. that are specific to that module. See further on for more +information on modules.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Design +Ethos</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">As +for design, Enlightenment doesn't strictly follow a conservative WM +design. It does some things quite differently, with the aim of +providing more features with simpler internal design to achieve more +features with more solidity than a conservative design. An example of +this is the fact that E17 does away completely with the root window +and puts all managed windows within a virtual root. Virtual roots are +valid to be used in WM's but are rarely used and many client +applications are badly written to hunt for windows on the screen +ASSUMING there is no virtual root. These are bugs in the respective +applications (some of which are: Mozilla, xwininfo, xprop, xkill) +which when searching for an application window should walk the window +tree correctly. The reason for Enlightenment to adopt virtual roots +is not to make users annoyed or force application developers to +change their code, but to allow certain things to be done much more +efficiently. A virtual root allows the WM to scroll windows +seamlessly and all in sync by using window gravity and resizing of +the virtual root container. It also allows the WM to simulate +different resolutions very easily since it can control the virtual +root window, which is not normally possible to do with the real root +window.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Managers</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Managers +are the basic unit of window management. One Manager object is create +per root window to manage. For more people, even if they run Xinerama +across multiple screens, there is only 1 root window, and thus E17 +will only ever have 1 Manager object. If the user runs traditional +Multihead there will be 1 root window per screen, that may be a +different size and color depth. E17 will create 1 Manager object per +screen in this situation. The Manager object handles redirection WM +specific events for the root window into the WM, thus effectively +being able to trap several kinds of events before a client gets to +perform them, thus enabling it to be a WM. A Manager object actually +creates a window the size of the root window it manages and covers +the root window up completely. Each Manager object may contain 1 or +more Container objects which in-turn create their own child windows +of the Manager window.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Containers</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Container +objects create their own windows to CONTAIN managed window frames, +the desktop window (the desktop background is actually just a big +window that is always kept below all frame windows that contains a +canvas for displaying the desktop background and all desktop objects +such as a launcher bar, file icons, etc. etc.). The Container is +responsible for holding this together and also managing a list of +“obscuring” objects that fully obscure the desktop +canvas, so it can help optimize drawing to the desktop canvas by +avoiding to draw parts of the desktop background canvas that cannot +be seen at all. This list is also used to draw soft drop shadows on +the desktop canvas by the Dropshadow module. The Container object +managed the desktop background, which is actually a complete EDJE +object. This may seem strange as a simple JPEG or PNG or GIF may be +enough, but by using an EDJE object for the background, the desktop +wallpaper can be animated, react to events and input, scale +intelligently (not just “stretch” or “tile”), +where the desktop wallpaper designer can specify what elements of the +wallpaper scale, align, where and how, if they tile, overlay, +underlay each other, and how.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Currently +the Container only responds to configuration change events to change +the background, which needs to be a path to a Edje .eet file that +contains a Edje group of the key “desktop/background”. It +will load this group, if present in the file as the background. What +it needs is a configuration tool that can browse the filing system +and directories for .eet files that are like this, display thumbnails +and previews, allow a user to select a new background and maybe +specify if the background file should change between different +virtual desktops (which are currently not implemented), and also be +able to browse normal JPEG, PNG etc. files and “import” +them into a users wallpaper database (a directory of wallpaper .eet +files) and thus convert into a Edje .eet file, which now retains the +scaling, tiling and other preferences the user selected within the +file. The user can now give this file to others and it will retain +the same information, without them needing to know if the wallpaper +needs to tile as a pattern, stretch etc.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The +desktop canvas is also shared by many modules that may display things +like battery meters, cpu load, launcher bars, drop shadows etc. on +the desktop background. The desktop canvas lets this be a bit more +organized than it would be with a “free for all” drawing +to the root window under more conservative WM's.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Borders</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Borders +are the frame outside an application window that is controlled by the +WM and that holds the application window within, and allows users to +move, resize, shade, lower, close and otherwise control windows. This +is currently buggy and not very useful and needs work in combination +with the Manager system.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Menus</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Enlightenment +has its own Menu widget code to allow for highly themable menus that +match your WM's theme. These menus are intended to act as ways to +launch programs, select actions to perform with context sensitive +menus and to provide basic on/off and option select options for +simple enabling and disabling of features of states on objects. The +menu code is fairly solid, but incomplete. It is efficient, able to +let the user navigate with the keyboard, mouse wheel or mouse. It +currently needs work to support shaped menu windows, be able to add, +delete and modify menu items while the item is still realized, and a +set of other things listed in the TODO list at the top of the +e_menu.c source file.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Modules</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Modules +are a new and powerful way to extend E17 by being able to load and +execute code during runtime that may be shipped with E17 or even +developed after installation as enhancements and additions. This +system still needs work in the configuration department, knowing what +modules to load and not load, if they are to be enabled once they are +loaded etc. It is possible to have “dormant” modules that +are loaded but not enabled. They will use memory and resources for +the module entry and the binary executable code loaded into memory, +but nothing else. An enabled module will also use resources for +objects, images, etc. etc.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Dropshadow +Module</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +module demonstrates the Container shape system allowing a module to +monitor obscuring shapes in a container. This lets the module, in +this case, draw soft shadows under these obscuring shapes. It is a +fairly simple module and also demonstrates a module that has no +visible elements on the screen you can click on or control directly +with the mouse or keyboard. It could do with some optimization work +with the blur algorithm, like clipping out the obscuring shape +entirely from the blurring algorithm, and perhaps finding a way of +blurring using a Gaussian blur that is faster.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>IBar +Module</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The +IBar module is a template for doing a “launcher panel” in +E17. It allows the user to manage a list of frequently used +applications to go into the IBar's panel. It is an attempt to unify +the configuration of “bars” in E17 so if a user changes +launcher bar modules, they can retain at least most of the basic +configuration, like what applications are in the bar, and so-on. The +IBar has some unique characteristics allowing a lot of applications +to be held in a small bar, by having it auto-scroll on mouse over to +the desired location in the list. It uses the Application interface +to fetch a list of applications and monitor this list for changes on +disk. The IBar also allows itself to be resized and dragged around +the edges of the screen, set to fill a edge, auto-size to fit its +contents, or be a fixed size.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">It +needs work to be done on auto hide and auto show, so on an auto show +it could signal other parts of E17, for example, to slide all windows +out of the way, or other such features. It needs work to display +application names, descriptions and other such information as well. +It also needs to support the icon size changing on the fly as well as +saving and loading its configuration, On of the largest pieces of +work is to support subdirectories in the bar's application list. How +best to do this is still up in the air. For now this isn't supported.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Test +Module</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +is just a test module for playing with new module features. It will +not make its way into a final E17 release, but can be used as a bare +skeleton for building a new module.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Applications</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +subsystem is responsible for being able to list applications held in +E17 specific application directories. This system can inform other +parts of E17 and modules of changes, such as an application being +deleted or added, its name or icon changed, the order of applications +in a directory changing, an application being executed or displaying +its window, or finishing execution. It can share the application +lists between multiple systems to save RAM and CPU and I/O in loading +them multiple times.</FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">It +may be of surprise to find E17 is not loading the XML, .desktop +entries etc. etc. than KDE and GNOME use. In all honesty that system +is a little overcomplicated and hard to keep up with. It also is not +as robust as E17's system. With E17's system the images for the icons +are within the application file. They cannot be separately deleted. +Also using an Edje .eet file for the application entry allows for +fully scalable and animated icons as well, with excellent compression +abilities. The intent is to have external tools that can import and +create such files FROM existing system databases of applications and +monitor these for changes, reflecting those changes in Enlightenments +application directories.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>IPC</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">IPC +(inter process communication) is provided in E17 as a mechanism for +another application to send commands and requests to Enlightenment +and receive responses with information. This mechanism is intended to +allow external utilities to be written and ask Enlightenment to do +things via a communications channel built into the WM. E17 uses the +Ecore IPC system to do this. So far it support no commands at all, +but will accept clients connecting. Many commands need to be +implemented here, such as being able to ask E17 to load or unload a +module, change background, change focus mode, theme, restart etc.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Objects</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +provides a basic Object Oriented handling system for E17. Any major +“object” in E17 should use this system for handling +reference counting, destruction and creation of objects, as it +provides safety mechanisms to check if an object has accidentally +been destroyed and still has a pointer to it, keep references on +objects intact etc. This should be used as much as possible, as well +as the macros it provides for checking on entry points into subsystem +functions etc.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Pointers</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +subsystem handles setting of X mouse cursors in an abstract fashion. +In theory E just looks at a cursor as RGBA pixel data. In future +Ecore will be expanded to be able to set full color cursors in X as +well as monochrome versions of them. Currently it is very simplistic +loading a fixed PNG as a cursor. This needs to be improved.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Box</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +is a basic Evas Smart Object that acts as a horizontal or vertical +box layout container. It needs more features for layout, like better +non homogeneous layout. This is a handy object that is sued by menus +and the IBar module for starters.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Icons</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +is an Evas Smart Object that creates a icon display object That +handles scaling the icon sensibly within the object bounds, so the +application doesn't have to handle trying to retain aspect ratio for +the object. This is a simple smart object and indicative of possibly +more in future to go into E17's code to save time and effort.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Paths</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +helps E17 find files in a list of paths/directories. There isn't a +lot to say about this except that it works and may need some minimal +expansion in future.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>User +Information</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +returns information about a user such as their home directory. This +will expand in future.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Virtual +and Multiple Desktops</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +is not implemented yet.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Error +Dialogs</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +displays very basic error dialogs right now, either as text in the +console inf E17 isn't ready to run graphically yet, This needs to be +made more robust, so it can display errors if it cannot find the font +and images for the basic error dialog. It should also be expanded to +support fully themed dialogs if the theme loads properly and properly +supports theming of dialogs, so dialogs look good.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Initialization +Splash Screen</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This +keeps the user amused while E17 starts up and launches all programs. +For now it is artificially fixed to stay up for 4 seconds so you can +enjoy its radiant splendor, as E17 starts so quickly you'd never see +it, but in future it will stay up until the WM is all ready to go.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Configuration</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Loading +and saving configuration is a big task. E17 uses Ecore Config as its +underlying layer for saving and loading configuration. The E17 Config +system simply sets up all listeners for when configuration values +change, loads all the initial configuration values, and saves them +when and if they change internally. It needs work to make it much +simpler as many more config values will be added and it needs to be +more efficient ad loading them if they change runtime via a listener +(the number of listeners needs to be reduced), so maybe loading +config values in sections/groups and deferring a reload in a Ecore +Job would limit the reloading effects. Also declaring config values +and how to load and declare them is required. Maybe a big table with +default values, min, max, step, descriptions etc.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>File +Operations</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT SIZE=1 STYLE="font-size: 8pt"><FONT FACE="Bitstream Vera Sans">Files +need to be accessed, listed, found, examined as part of E17 running. +This file has simplified, easy-to-use functions for doing anything +related to files. This file will expand over time as more file +operations are needed.</FONT></FONT></P> +<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Miscellaneous +Utilities</B></FONT></FONT></P> +<P CLASS="western" STYLE="margin-left: 4.73pc"><FONT SIZE=1 STYLE="font-size: 8pt"><FONT FACE="Bitstream Vera Sans">Things +that are useful in many places but do not have enough scope to have a +file of their own go into this file.</FONT></FONT></P> +</BODY> +</HTML> diff --git a/doc/enlightenment.png b/doc/enlightenment.png Binary files differnew file mode 100644 index 000000000..47597a8d4 --- /dev/null +++ b/doc/enlightenment.png diff --git a/enlightenment-config.in b/enlightenment-config.in new file mode 100644 index 000000000..819ae8cf0 --- /dev/null +++ b/enlightenment-config.in @@ -0,0 +1,59 @@ +#!/bin/sh + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +exec_prefix_set=no + +usage="\ +Usage: evas-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" + +if test $# -eq 0; then + echo "${usage}" 1>&2 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --version) + echo @VERSION@ + ;; + --cflags) + if test @includedir@ != /usr/include ; then + includes=-I@includedir@ + fi + echo $includes + ;; + --libs) + libdirs=-L@libdir@ + echo $libdirs + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done + +exit 0 diff --git a/enlightenment.oe b/enlightenment.oe new file mode 100644 index 000000000..1240e9304 --- /dev/null +++ b/enlightenment.oe @@ -0,0 +1,28 @@ +DESCRIPTION = "Enlightenment 0.17.0 snapshot release" +HOMEPAGE = "http://www.enlightenment.org" +MAINTAINER = "Carsten Haitzler (Rasterman) <raster@rasterman.com>" +SECTION = "e/windowmanager" +PRIORITY = "optional" +DEPENDS = "ecore edje eet embryo evas imlib2 embryo-native edje-native imlib2-native" +PV = "0.17.0_pre5" +PR = "1" + +do_prepsources () { + make clean distclean || true +} +addtask prepsources after do_fetch before do_unpack +SRC_URI = "file://./" +S = "${WORKDIR}/e" + +inherit autotools pkgconfig binconfig + +export EET_CONFIG = "${STAGING_BINDIR}/eet-config" +export EVAS_CONFIG = "${STAGING_BINDIR}/evas-config" +export ECORE_CONFIG = "${STAGING_BINDIR}/ecore-config" +export EMBRYO_CONFIG = "${STAGING_BINDIR}/embryo-config" +export EDJE_CONFIG = "${STAGING_BINDIR}/edje-config" + +EXTRA_OECONF = "--with-profile=HIRES_PDA \ + --with-edje-cc=/usr/local/bin/edje_cc" + +FILES_${PN} = "${bindir}/* ${libdir}/* ${datadir}" diff --git a/enlightenment.spec b/enlightenment.spec new file mode 100644 index 000000000..c75fe555b --- /dev/null +++ b/enlightenment.spec @@ -0,0 +1,67 @@ +# Note that this is NOT a relocatable package +%define ver 0.17.0_pre5 +%define rel NOT_RELEASE_1 +%define prefix /usr + +Summary: enlightenment +Name: enlightenment +Version: %ver +Release: %rel +Copyright: BSD +Group: System Environment/Desktops +Source: ftp://ftp.enlightenment.org/pub/enlightenment/enlightenment-%{ver}.tar.gz +BuildRoot: /var/tmp/enlightenment-root +Packager: The Rasterman <raster@rasterman.com> +URL: http://www.enlightenment.org/ +BuildRequires: evas-devel +BuildRequires: edje-devel +BuildRequires: ecore-devel +Requires: edje +Requires: evas +Requires: ecore + +Docdir: %{prefix}/doc + +%description + +Enlightenment is a window manager + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup -q + +%build +./configure --prefix=%prefix + +if [ "$SMP" != "" ]; then + (make "MAKE=make -k -j $SMP"; exit 0) + make +else + make +fi +########################################################################### + +%install +make DESTDIR=$RPM_BUILD_ROOT install + +%clean +rm -rf $RPM_BUILD_ROOT + +%post + +%postun + +%files +%defattr(-,root,root) +%attr(755,root,root) %{prefix}/lib/enlightenment +%attr(755,root,root) %{prefix}/bin/* +%attr(755,root,root) %{prefix}/share/enlightenment +%doc AUTHORS +%doc COPYING +%doc COPYING-PLAIN +%doc README + +%changelog +* Sat Jun 23 2001 The Rasterman <raster@rasterman.com> +- Created spec file diff --git a/m4/ac_expand_dir.m4 b/m4/ac_expand_dir.m4 new file mode 100644 index 000000000..b5599a074 --- /dev/null +++ b/m4/ac_expand_dir.m4 @@ -0,0 +1,14 @@ +dnl AC_EXPAND_DIR(VARNAME, DIR) +dnl expands occurrences of ${prefix} and ${exec_prefix} in the given DIR, +dnl and assigns the resulting string to VARNAME +dnl example: AC_DEFINE_DIR(DATADIR, "$datadir") +dnl by Alexandre Oliva <oliva@dcc.unicamp.br> +AC_DEFUN([AC_EXPAND_DIR], [ + $1=$2 + $1=`( + test "x$prefix" = xNONE && prefix="$ac_default_prefix" + test "x$exec_prefix" = xNONE && exec_prefix="${prefix}" + eval echo \""[$]$1"\" + )` +]) + diff --git a/m4/ac_path_generic.m4 b/m4/ac_path_generic.m4 new file mode 100644 index 000000000..27b55b3ff --- /dev/null +++ b/m4/ac_path_generic.m4 @@ -0,0 +1,136 @@ +dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl +dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS +dnl +dnl The script must support `--cflags' and `--libs' args. +dnl If MINIMUM-VERSION is specified, the script must also support the +dnl `--version' arg. +dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, +dnl it must also support `--prefix' and `--exec-prefix'. +dnl (In other words, it must be like gtk-config.) +dnl +dnl For example: +dnl +dnl AC_PATH_GENERIC(Foo, 1.0.0) +dnl +dnl would run `foo-config --version' and check that it is at least 1.0.0 +dnl +dnl If so, the following would then be defined: +dnl +dnl FOO_CFLAGS to `foo-config --cflags` +dnl FOO_LIBS to `foo-config --libs` +dnl +dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) +dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) +dnl +dnl @author Angus Lees <gusl@cse.unsw.edu.au> + +AC_DEFUN([AC_PATH_GENERIC], +[dnl +dnl we're going to need uppercase, lowercase and user-friendly versions of the +dnl string `LIBRARY' +pushdef([UP], translit([$1], [a-z], [A-Z]))dnl +pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl + +dnl +dnl Get the cflags and libraries from the LIBRARY-config script +dnl +AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], + DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") +AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], + DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") + + if test x$DOWN[]_config_exec_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config + fi + fi + if test x$DOWN[]_config_prefix != x ; then + DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" + if test x${UP[]_CONFIG+set} != xset ; then + UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config + fi + fi + + AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) + ifelse([$2], , + AC_MSG_CHECKING(for $1), + AC_MSG_CHECKING(for $1 - version >= $2) + ) + no_[]DOWN="" + if test "$UP[]_CONFIG" = "no" ; then + no_[]DOWN=yes + else + UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" + UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" + ifelse([$2], , ,[ + DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ + --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" + DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" + DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" + + # Compare wanted version to what config script returned. + # If I knew what library was being run, i'd probably also compile + # a test program at this point (which also extracted and tested + # the version in some library-specific way) + if test "$DOWN[]_config_major_version" -lt \ + "$DOWN[]_wanted_major_version" \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -lt \ + "$DOWN[]_wanted_minor_version" \) \ + -o \( "$DOWN[]_config_major_version" -eq \ + "$DOWN[]_wanted_major_version" \ + -a "$DOWN[]_config_minor_version" -eq \ + "$DOWN[]_wanted_minor_version" \ + -a "$DOWN[]_config_micro_version" -lt \ + "$DOWN[]_wanted_micro_version" \) ; then + # older version found + no_[]DOWN=yes + echo -n "*** An old version of $1 " + echo -n "($DOWN[]_config_major_version" + echo -n ".$DOWN[]_config_minor_version" + echo ".$DOWN[]_config_micro_version) was found." + echo -n "*** You need a version of $1 newer than " + echo -n "$DOWN[]_wanted_major_version" + echo -n ".$DOWN[]_wanted_minor_version" + echo ".$DOWN[]_wanted_micro_version." + echo "***" + echo "*** If you have already installed a sufficiently new version, this error" + echo "*** probably means that the wrong copy of the DOWN-config shell script is" + echo "*** being found. The easiest way to fix this is to remove the old version" + echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" + echo "*** correct copy of DOWN-config. (In this case, you will have to" + echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" + echo "*** so that the correct libraries are found at run-time)" + fi + ]) + fi + if test "x$no_[]DOWN" = x ; then + AC_MSG_RESULT(yes) + ifelse([$3], , :, [$3]) + else + AC_MSG_RESULT(no) + if test "$UP[]_CONFIG" = "no" ; then + echo "*** The DOWN-config script installed by $1 could not be found" + echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the UP[]_CONFIG environment variable to the" + echo "*** full path to DOWN-config." + fi + UP[]_CFLAGS="" + UP[]_LIBS="" + ifelse([$4], , :, [$4]) + fi + AC_SUBST(UP[]_CFLAGS) + AC_SUBST(UP[]_LIBS) + + popdef([UP]) + popdef([DOWN]) +]) + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 000000000..3c913a89e --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,2 @@ +MAINTAINERCLEANFILES = Makefile.in +SUBDIRS = lib bin modules diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am new file mode 100644 index 000000000..eb05130d7 --- /dev/null +++ b/src/bin/Makefile.am @@ -0,0 +1,63 @@ +MAINTAINERCLEANFILES = Makefile.in +INCLUDES = -I$(includedir) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/src/bin \ + -I$(top_srcdir)/src/lib \ + @e_cflags@ \ + @EDJE_DEF@ + +bin_PROGRAMS = enlightenment + +enlightenment_SOURCES = \ +e.h \ +e_file.h \ +e_file.c \ +e_main.c \ +e_user.h \ +e_user.c \ +e_manager.h \ +e_manager.c \ +e_path.h \ +e_path.c \ +e_init.h \ +e_init.c \ +e_ipc.h \ +e_ipc.c \ +e_error.h \ +e_error.c \ +e_container.h \ +e_container.c \ +e_desk.h \ +e_desk.c \ +e_border.h \ +e_border.c \ +e_pointer.h \ +e_pointer.c \ +e_config.h \ +e_config.c \ +e_menu.h \ +e_menu.c \ +e_object.h \ +e_object.c \ +e_icon.h \ +e_icon.c \ +e_box.h \ +e_box.c \ +e_int_menus.h \ +e_int_menus.c \ +e_module.h \ +e_module.c \ +e_apps.h \ +e_apps.c \ +e_utils.h \ +e_utils.c \ +e_canvas.h \ +e_canvas.c \ +e_focus.h \ +e_focus.c \ +e_place.h \ +e_place.c \ +e_resist.h \ +e_resist.c + +enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@ diff --git a/src/bin/e.h b/src/bin/e.h new file mode 100644 index 000000000..299fc3b81 --- /dev/null +++ b/src/bin/e.h @@ -0,0 +1,99 @@ +#ifndef E_H +#define E_H + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/time.h> +#include <sys/param.h> +#include <dlfcn.h> + +#include <Evas.h> +#include <Ecore.h> +#include <Ecore_X.h> +#include <Ecore_Evas.h> +#include <Ecore_Con.h> +#include <Ecore_Ipc.h> +#include <Ecore_Job.h> +#include <Ecore_Txt.h> +#include <Ecore_Config.h> +#include <Eet.h> +#include <Edje.h> + +#include "config.h" + +#include "e_object.h" +#include "e_file.h" +#include "e_user.h" +#include "e_manager.h" +#include "e_path.h" +#include "e_ipc.h" +#include "e_error.h" +#include "e_container.h" +#include "e_desk.h" +#include "e_border.h" +#include "e_pointer.h" +#include "e_config.h" +#include "e_menu.h" +#include "e_icon.h" +#include "e_box.h" +#include "e_init.h" +#include "e_int_menus.h" +#include "e_module.h" +#include "e_apps.h" +#include "e_utils.h" +#include "e_canvas.h" +#include "e_focus.h" +#include "e_place.h" + +typedef struct _E_Before_Idler E_Before_Idler; + +E_Before_Idler *e_main_idler_before_add(int (*func) (void *data), void *data, int once); +void e_main_idler_before_del(E_Before_Idler *eb); + +extern E_Path *path_data; +extern E_Path *path_images; +extern E_Path *path_fonts; +extern E_Path *path_themes; +extern E_Path *path_init; + +/* convenience macro to compress code and avoid typos */ +#define E_FN_DEL(_fn, _h) \ +if (_h) \ +{ \ + _fn(_h); \ + _h = NULL; \ +} + +#define E_INTERSECTS(x, y, w, h, xx, yy, ww, hh) \ +(((x) < ((xx) + (ww))) && \ +((y) < ((yy) + (hh))) && \ +(((x) + (w)) > (xx)) && \ +(((y) + (h)) > (yy))) + +#define E_SPANS_COMMON(x1, w1, x2, w2) \ +(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1))))) + +#define E_REALLOC(p, s, n) \ + p = realloc(p, sizeof(s) * n) + +#define E_NEW(s, n) \ + calloc(n, sizeof(s)) + +#define E_NEW_BIG(s, n) \ + malloc(n * sizeof(s)) + +#define E_FREE(p) \ + { if (p) {free(p); p = NULL;} } + +typedef struct _E_Rect E_Rect; + +struct _E_Rect +{ + int x, y, w, h; +}; + +#endif diff --git a/src/bin/e_apps.c b/src/bin/e_apps.c new file mode 100644 index 000000000..529e24dc9 --- /dev/null +++ b/src/bin/e_apps.c @@ -0,0 +1,678 @@ +#include "e.h" + +/* TODO List: + * + * * if a application .eet file is added in a different location in a monitored app tree but has the same filename as an existing one somewhere else, the existing one gets a changed callback, not an dded callback for the new one + * * track app execution state, visibility state etc. and call callbacks + * * calls to execute an app or query its runing/starting state etc. + */ + +/* local subsystem functions */ +typedef struct _E_App_Change_Info E_App_Change_Info; +typedef struct _E_App_Callback E_App_Callback; + +struct _E_App_Change_Info +{ + E_App *app; + E_App_Change change; +}; + +struct _E_App_Callback +{ + void (*func) (void *data, E_App *a, E_App_Change ch); + void *data; + unsigned char delete_me : 1; +}; + +static void _e_app_free (E_App *a); +static void _e_app_fields_fill (E_App *a, char *path); +static void _e_app_fields_empty (E_App *a); +static Evas_List *_e_app_dir_file_list_get (E_App *a, char *path); +static E_App *_e_app_subapp_path_find (E_App *a, char *subpath); +static void _e_app_monitor (void); +static void _e_app_change (E_App *a, E_App_Change ch); +static int _e_app_check (void *data); +static Evas_Bool _e_app_check_each (Evas_Hash *hash, const char *key, void *data, void *fdata); +static int _e_apps_cb_exit (void *data, int type, void *event); + +/* local subsystem globals */ +static Evas_Hash *_e_apps = NULL; +static Ecore_Timer *_e_apps_checker = NULL; +static int _e_apps_callbacks_walking = 0; +static int _e_apps_callbacks_delete_me = 0; +static Evas_List *_e_apps_change_callbacks = NULL; +static Ecore_Event_Handler *_e_apps_exit_handler = NULL; + +/* externally accessible functions */ +int +e_app_init(void) +{ + _e_apps_exit_handler = ecore_event_handler_add(ECORE_EVENT_EXE_EXIT, _e_apps_cb_exit, NULL); + return 1; +} + +int +e_app_shutdown(void) +{ + if (_e_apps_exit_handler) + { + ecore_event_handler_del(_e_apps_exit_handler); + _e_apps_exit_handler = NULL; + } + return 1; +} + +E_App * +e_app_new(char *path, int scan_subdirs) +{ + E_App *a; + + a = evas_hash_find(_e_apps, path); + if (a) + { + e_object_ref(E_OBJECT(a)); + return a; + } + a = E_OBJECT_ALLOC(E_App, _e_app_free); + a->mod_time = e_file_mod_time(path); + if (e_file_is_dir(path)) + { + char buf[4096]; + + a->path = strdup(path); + snprintf(buf, sizeof(buf), "%s/.directory.eet", path); + a->directory_mod_time = e_file_mod_time(buf); + if (e_file_exists(buf)) + _e_app_fields_fill(a, buf); + else + a->name = strdup(e_file_get_file(path)); + if (scan_subdirs) e_app_subdir_scan(a, scan_subdirs); + } + else if (e_file_exists(path)) + { + char *p; + + /* check if file ends in .eet */ + p = strrchr(path, '.'); + if (!p) + { + free(a); + return NULL; + } + p++; + if (strcasecmp(p, "eet")) + { + free(a); + return NULL; + } + /* record the path */ + a->path = strdup(path); + + /* get the field data */ + _e_app_fields_fill(a, path); + + /* no exe field.. not valid. drop it */ + if (!a->exe) + { + if (a->name) free(a->name); + if (a->generic) free(a->generic); + if (a->comment) free(a->comment); + if (a->exe) free(a->exe); + if (a->path) free(a->path); + if (a->win_name) free(a->win_name); + if (a->win_class) free(a->win_class); + free(a); + return NULL; + } + } + else + { + free(a); + return NULL; + } + _e_apps = evas_hash_add(_e_apps, a->path, a); + _e_app_monitor(); + return a; +} + +void +e_app_subdir_scan(E_App *a, int scan_subdirs) +{ + Evas_List *files, *files2 = NULL; + FILE *f; + char buf[4096]; + + E_OBJECT_CHECK(a); + if (a->exe) return; + if (a->scanned) + { + Evas_List *l; + + if (!scan_subdirs) return; + for (l = a->subapps; l; l = l->next) + e_app_subdir_scan(l->data, scan_subdirs); + return; + } + a->scanned = 1; + files = _e_app_dir_file_list_get(a, a->path); + while (files) + { + E_App *a2; + char *s; + + s = files->data; + if (s[0] != '.') + { + snprintf(buf, sizeof(buf), "%s/%s", a->path, s); + free(s); + a2 = e_app_new(buf, scan_subdirs); + if (a2) + { + a->subapps = evas_list_append(a->subapps, a2); + a2->parent = a; + } + } + files = evas_list_remove_list(files, files); + } +} + +int +e_app_exec(E_App *a) +{ + Ecore_Exe *exe; + + E_OBJECT_CHECK_RETURN(a, 0); + if (!a->exe) return 0; + exe = ecore_exe_run(a->exe, a); + if (!exe) return 0; + a->instances = evas_list_append(a->instances, exe); + if (a->startup_notify) a->starting = 1; + _e_app_change(a, E_APP_EXEC); + return 1; +} + +int +e_app_starting_get(E_App *a) +{ + E_OBJECT_CHECK_RETURN(a, 0); + return a->starting; +} + +int +e_app_running_get(E_App *a) +{ + E_OBJECT_CHECK_RETURN(a, 0); + if (a->instances) return 1; + return 0; +} + +void +e_app_change_callback_add(void (*func) (void *data, E_App *a, E_App_Change ch), void *data) +{ + E_App_Callback *cb; + + cb = calloc(1, sizeof(E_App_Callback)); + cb->func = func; + cb->data = data; + _e_apps_change_callbacks = evas_list_append(_e_apps_change_callbacks, cb); + _e_app_monitor(); +} + +void +e_app_change_callback_del(void (*func) (void *data, E_App *a, E_App_Change ch), void *data) +{ + Evas_List *l; + + for (l = _e_apps_change_callbacks; l; l = l->next) + { + E_App_Callback *cb; + + cb = l->data; + if ((cb->func == func) && (cb->data == data)) + { + if (_e_apps_callbacks_walking) + { + cb->delete_me = 1; + _e_apps_callbacks_delete_me = 1; + } + else + { + _e_apps_change_callbacks = evas_list_remove_list(_e_apps_change_callbacks, l); + free(cb); + _e_app_monitor(); + } + return; + } + } +} + +/* local subsystem functions */ +static void +_e_app_free(E_App *a) +{ + while (a->instances) + { + Ecore_Exe *exe; + + exe = a->instances->data; + ecore_exe_free(exe); + a->instances = evas_list_remove_list(a->instances, a->instances); + } + while (a->subapps) + { + E_App *a2; + + a2 = a->subapps->data; + e_object_unref(E_OBJECT(a2)); + a->subapps = evas_list_remove(a->subapps, a2); + } + if (a->parent) + a->parent->subapps = evas_list_remove(a->parent->subapps, a); + _e_apps = evas_hash_del(_e_apps, a->path, a); + if (a->name) free(a->name); + if (a->generic) free(a->generic); + if (a->comment) free(a->comment); + if (a->exe) free(a->exe); + if (a->path) free(a->path); + if (a->win_name) free(a->win_name); + if (a->win_class) free(a->win_class); + free(a); + _e_app_monitor(); +} + +static void +_e_app_fields_fill(E_App *a, char *path) +{ + char buf[4096]; + char *str; + char *lang; + + /* get our current language */ + lang = getenv("LANG"); + /* if its "C" its the default - so drop it */ + if ((lang) && (!strcmp(lang, "C"))) + lang = NULL; + /* get fields (language local preferred) */ + if (lang) + { + snprintf(buf, sizeof(buf), "app/name[%s]", lang); + a->name = edje_file_data_get(path, buf); + } + if (!a->name) a->name = edje_file_data_get(path, "app/name"); + if (lang) + { + snprintf(buf, sizeof(buf), "app/generic[%s]", lang); + a->generic = edje_file_data_get(path, buf); + } + if (!a->generic) a->generic = edje_file_data_get(path, "app/generic"); + if (lang) + { + snprintf(buf, sizeof(buf), "app/comment[%s]", lang); + a->comment = edje_file_data_get(path, buf); + } + if (!a->comment) a->comment = edje_file_data_get(path, "app/comment"); + + a->exe = edje_file_data_get(path, "app/exe"); + a->win_name = edje_file_data_get(path, "app/window/name"); + a->win_class = edje_file_data_get(path, "app/window/class"); + + str = edje_file_data_get(path, "app/startup_notify"); + if (str) + { + a->startup_notify = atoi(str); + free(str); + } +} + +static void +_e_app_fields_empty(E_App *a) +{ + if (a->name) + { + free(a->name); + a->name = NULL; + } + if (a->generic) + { + free(a->generic); + a->generic = NULL; + } + if (a->comment) + { + free(a->comment); + a->comment = NULL; + } + if (a->exe) + { + free(a->exe); + a->exe = NULL; + } + if (a->win_name) + { + free(a->win_name); + a->win_name = NULL; + } + if (a->win_class) + { + free(a->win_class); + a->win_class = NULL; + } +} + +static Evas_List * +_e_app_dir_file_list_get(E_App *a, char *path) +{ + Evas_List *files, *files2 = NULL, *l; + FILE *f; + char buf[4096]; + + snprintf(buf, sizeof(buf), "%s/.order", path); + a->order_mod_time = e_file_mod_time(buf); + files = e_file_ls(path); + f = fopen(buf, "rb"); + if (f) + { + while (fgets(buf, sizeof(buf), f)) + { + int len; + + len = strlen(buf); + if (len > 0) + { + int ok = 0; + + if (buf[len - 1] == '\n') buf[len - 1] = 0; + for (l = files; l; l = l->next) + { + if (!strcmp(buf, l->data)) + { + free(l->data); + files = evas_list_remove_list(files, l); + ok = 1; + break; + } + } + if (ok) + files2 = evas_list_append(files2, strdup(buf)); + } + } + fclose(f); + } + else + { + files2 = files; + files = NULL; + } + while (files) + { + char *s; + + s = files->data; + if (s[0] != '.') + files2 = evas_list_append(files2, s); + else + free(s); + files = evas_list_remove_list(files, files); + } + files = files2; + return files; +} + +static E_App * +_e_app_subapp_path_find(E_App *a, char *subpath) +{ + Evas_List *l; + + for (l = a->subapps; l; l = l->next) + { + E_App *a2; + + a2 = l->data; + if (!strcmp(a2->path, subpath)) return a2; + } + return NULL; +} + +static void +_e_app_monitor(void) +{ + if ((_e_apps) && (_e_apps_change_callbacks)) + { + if (!_e_apps_checker) + _e_apps_checker = ecore_timer_add(1.0, _e_app_check, NULL); + } + else + { + if (_e_apps_checker) + { + ecore_timer_del(_e_apps_checker); + _e_apps_checker = NULL; + } + } +} + +static void +_e_app_change(E_App *a, E_App_Change ch) +{ + Evas_List *l; + + _e_apps_callbacks_walking = 1; + for (l = _e_apps_change_callbacks; l; l = l->next) + { + E_App_Callback *cb; + + cb = l->data; + if (!cb->delete_me) + { + cb->func(cb->data, a, ch); + } + } + _e_apps_callbacks_walking = 0; + if (_e_apps_callbacks_delete_me) + { + for (l = _e_apps_change_callbacks; l;) + { + E_App_Callback *cb; + Evas_List *pl; + + cb = l->data; + pl = l; + l = l->next; + if (cb->delete_me) + { + _e_apps_change_callbacks = evas_list_remove_list(_e_apps_change_callbacks, pl); + free(cb); + } + } + _e_apps_callbacks_delete_me = 0; + _e_app_monitor(); + } +} + +static int +_e_app_check(void *data) +{ + Evas_List *changes = NULL; + + evas_hash_foreach(_e_apps, _e_app_check_each, &changes); + + while (changes) + { + E_App_Change_Info *ch; + Evas_List *l; + + ch = changes->data; + changes = evas_list_remove_list(changes, changes); + _e_app_change(ch->app, ch->change); + e_object_unref(E_OBJECT(ch->app)); + free(ch); + } + if (_e_apps_checker) return 1; + return 0; +} + +static Evas_Bool +_e_app_check_each(Evas_Hash *hash, const char *key, void *data, void *fdata) +{ + Evas_List **changes; + E_App *a; + E_App_Change_Info *ch; + + changes = fdata; + a = data; + if (a->exe) + { + time_t mod_time; + + mod_time = e_file_mod_time(a->path); + if (mod_time != a->mod_time) + { + a->mod_time = mod_time; + if (e_file_exists(a->path)) + { + _e_app_fields_empty(a); + _e_app_fields_fill(a, a->path); + if (!a->exe) + { + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_DEL; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + else + { + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_CHANGE; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + } + else + { + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_DEL; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + } + } + else + { + time_t mod_time, order_mod_time, directory_mod_time; + char buf[4096]; + + mod_time = e_file_mod_time(a->path); + snprintf(buf, sizeof(buf), "%s/.order", a->path); + order_mod_time = e_file_mod_time(buf); + snprintf(buf, sizeof(buf), "%s/.directory.eet", a->path); + directory_mod_time = e_file_mod_time(buf); + if ((mod_time != a->mod_time) || + (order_mod_time != a->order_mod_time) || + (directory_mod_time != a->directory_mod_time)) + { + a->mod_time = mod_time; + if (!e_file_is_dir(a->path)) + { + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_DEL; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + else + { + if (order_mod_time != a->order_mod_time) + { + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_ORDER; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + if (directory_mod_time != a->directory_mod_time) + { + snprintf(buf, sizeof(buf), "%s/.directory.eet", a->path); + _e_app_fields_empty(a); + _e_app_fields_fill(a, buf); + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a; + ch->change = E_APP_CHANGE; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + a->order_mod_time = order_mod_time; + a->directory_mod_time = directory_mod_time; + if (a->scanned) + { + Evas_List *l, *files; + + files = _e_app_dir_file_list_get(a, a->path); + for (l = files; l; l = l->next) + { + E_App *a2; + char *s; + + s = l->data; + snprintf(buf, sizeof(buf), "%s/%s", a->path, s); + if (!_e_app_subapp_path_find(a, buf)) + { + a2 = e_app_new(buf, 0); + if (a2) + { + a2->parent = a; + a->subapps = evas_list_append(a->subapps, a2); + ch = calloc(1, sizeof(E_App_Change_Info)); + ch->app = a2; + ch->change = E_APP_ADD; + e_object_ref(E_OBJECT(ch->app)); + *changes = evas_list_append(*changes, ch); + } + } + } + for (l = files; l; l = l->next) + { + E_App *a2; + char *s; + + s = l->data; + snprintf(buf, sizeof(buf), "%s/%s", a->path, s); + a2 = _e_app_subapp_path_find(a, buf); + if (a2) + { + a->subapps = evas_list_remove(a->subapps, a2); + a->subapps = evas_list_append(a->subapps, a2); + } + } + while (files) + { + free(files->data); + files = evas_list_remove_list(files, files); + } + } + } + } + } + return 1; +} + +static int +_e_apps_cb_exit(void *data, int type, void *event) +{ + Ecore_Event_Exe_Exit *ev; + E_App *a; + + ev = event; + if (ev->exe) + { + a = ecore_exe_data_get(ev->exe); + if (a) + { + a->instances = evas_list_remove(a->instances, ev->exe); + _e_app_change(a, E_APP_EXIT); + } + } + return 1; +} diff --git a/src/bin/e_apps.h b/src/bin/e_apps.h new file mode 100644 index 000000000..929e0874a --- /dev/null +++ b/src/bin/e_apps.h @@ -0,0 +1,57 @@ +#ifndef E_APPS_H +#define E_APPS_H + +typedef enum _E_App_Change +{ + E_APP_ADD, + E_APP_DEL, + E_APP_CHANGE, + E_APP_ORDER, + E_APP_EXEC, + E_APP_READY, + E_APP_EXIT +} E_App_Change; + +typedef struct _E_App E_App; + +struct _E_App +{ + E_Object e_obj_inherit; + + E_App *parent; /* the parent e_app node */ + + char *name; /* app name */ + char *generic; /* generic app name */ + char *comment; /* a longer description */ + char *exe; /* command to execute, NULL if directory */ + char *path; /* path to .eet containing icons etc. etc. */ + + char *win_name; /* window name */ + char *win_class; /* window class */ + + Evas_List *subapps; /* if this a directory, a list of more E_App's */ + + time_t mod_time; /* last modified time for file or dir */ + time_t order_mod_time; /* secondary modified time for .order */ + time_t directory_mod_time; /* secondary modified time for .directory.eet */ + + Evas_List *instances; /* a list of all the exe handles for executions */ + + unsigned char startup_notify : 1; /* disable while starting etc. */ + unsigned char starting : 1; /* this app is starting */ + + unsigned char scanned : 1; /* have we scanned a subdir app yet */ +}; + +int e_app_init(void); +int e_app_shutdown(void); + +E_App *e_app_new(char *path, int scan_subdirs); +void e_app_subdir_scan(E_App *a, int scan_subdirs); +int e_app_exec(E_App *a); +int e_app_starting_get(E_App *a); +int e_app_running_get(E_App *a); + +void e_app_change_callback_add(void (*func) (void *data, E_App *a, E_App_Change ch), void *data); +void e_app_change_callback_del(void (*func) (void *data, E_App *a, E_App_Change ch), void *data); +#endif diff --git a/src/bin/e_border.c b/src/bin/e_border.c new file mode 100644 index 000000000..803fb1d28 --- /dev/null +++ b/src/bin/e_border.c @@ -0,0 +1,1495 @@ +#include "e.h" + +#define RESIZE_NONE 0 +#define RESIZE_TL 1 +#define RESIZE_T 2 +#define RESIZE_TR 3 +#define RESIZE_R 4 +#define RESIZE_BR 5 +#define RESIZE_B 6 +#define RESIZE_BL 7 +#define RESIZE_L 8 + +/* local subsystem functions */ +static void _e_border_free(E_Border *bd); + +/* FIXME: these likely belong in a separate icccm/client handler */ +/* and the border needs to be come a dumb object that just does what its */ +/* told to do */ +static int _e_border_cb_window_show_request(void *data, int ev_type, void *ev); +static int _e_border_cb_window_destroy(void *data, int ev_type, void *ev); +static int _e_border_cb_window_hide(void *data, int ev_type, void *ev); +static int _e_border_cb_window_reparent(void *data, int ev_type, void *ev); +static int _e_border_cb_window_configure_request(void *data, int ev_type, void *ev); +static int _e_border_cb_window_gravity(void *data, int ev_type, void *ev); +static int _e_border_cb_window_stack_request(void *data, int ev_type, void *ev); +static int _e_border_cb_window_property(void *data, int ev_type, void *ev); +static int _e_border_cb_window_colormap(void *data, int ev_type, void *ev); +static int _e_border_cb_window_shape(void *data, int ev_type, void *ev); +static int _e_border_cb_window_focus_in(void *data, int ev_type, void *ev); +static int _e_border_cb_window_focus_out(void *data, int ev_type, void *ev); +static int _e_border_cb_client_message(void *data, int ev_type, void *ev); + +static void _e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_t_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_tr_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_r_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_br_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_b_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_bl_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_l_start(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_resize_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, const char *source); +static int _e_border_cb_mouse_in(void *data, int type, void *event); +static int _e_border_cb_mouse_out(void *data, int type, void *event); +static int _e_border_cb_mouse_down(void *data, int type, void *event); +static int _e_border_cb_mouse_up(void *data, int type, void *event); +static int _e_border_cb_mouse_move(void *data, int type, void *event); +static int _e_border_cb_mouse_wheel(void *data, int type, void *event); + +static void _e_border_eval(E_Border *bd); +static void _e_border_resize_limit(E_Border *bd, int *w, int *h); +static void _e_border_moveinfo_gather(E_Border *bd, const char *source); +static void _e_border_resize_handle(E_Border *bd); + +/* local subsystem globals */ +static Evas_List *handlers = NULL; +static Evas_List *borders = NULL; + +/* externally accessible functions */ +int +e_border_init(void) +{ + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, _e_border_cb_window_show_request, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _e_border_cb_window_destroy, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_HIDE, _e_border_cb_window_hide, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_REPARENT, _e_border_cb_window_reparent, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST, _e_border_cb_window_configure_request, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_GRAVITY, _e_border_cb_window_gravity, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_STACK_REQUEST, _e_border_cb_window_stack_request, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _e_border_cb_window_property, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_COLORMAP, _e_border_cb_window_colormap, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHAPE, _e_border_cb_window_shape, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _e_border_cb_window_focus_in, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _e_border_cb_window_focus_out, NULL)); + handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _e_border_cb_client_message, NULL)); + return 1; +} + +int +e_border_shutdown(void) +{ + while (handlers) + { + Ecore_Event_Handler *h; + + h = handlers->data; + handlers = evas_list_remove(handlers, h); + ecore_event_handler_del(h); + } + return 1; +} + +E_Border * +e_border_new(E_Container *con, Ecore_X_Window win, int first_map) +{ + E_Border *bd; + Ecore_Event_Handler *h; + Ecore_X_Window_Attributes *att; + + bd = E_OBJECT_ALLOC(E_Border, _e_border_free); + if (!bd) return NULL; + bd->container = con; + bd->w = 1; + bd->h = 1; + bd->win = ecore_x_window_override_new(bd->container->win, 0, 0, bd->w, bd->h); + bd->bg_ecore_evas = ecore_evas_software_x11_new(NULL, bd->win, 0, 0, bd->w, bd->h); + ecore_evas_software_x11_direct_resize_set(bd->bg_ecore_evas, 1); + e_canvas_add(bd->bg_ecore_evas); + bd->event_win = ecore_x_window_input_new(bd->win, 0, 0, bd->w, bd->h); + bd->bg_evas = ecore_evas_get(bd->bg_ecore_evas); + bd->bg_win = ecore_evas_software_x11_window_get(bd->bg_ecore_evas); + ecore_evas_name_class_set(bd->bg_ecore_evas, "E", "Frame_Window"); + ecore_evas_title_set(bd->bg_ecore_evas, "Enlightenment Frame"); + /* ecore_evas_avoid_damage_set(bd->bg_ecore_evas, 1); */ + ecore_evas_show(bd->bg_ecore_evas); + evas_font_path_append(bd->bg_evas, e_path_find(path_data, "fonts")); + bd->client.shell_win = ecore_x_window_override_new(bd->win, 0, 0, 1, 1); + ecore_x_window_container_manage(bd->client.shell_win); + ecore_x_window_client_manage(win); + /* FIXME: Round trip. XCB */ + /* 2nd fetch needed to avoid grabbing the server as window may vanish */ + att = &bd->client.initial_attributes; + if ((!ecore_x_window_attributes_get(win, att)) || (att->input_only)) + { + e_canvas_del(bd->bg_ecore_evas); + ecore_evas_free(bd->bg_ecore_evas); + ecore_x_window_del(bd->client.shell_win); + ecore_x_window_del(bd->win); + free(bd); + return NULL; + } + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _e_border_cb_mouse_in, bd)); + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _e_border_cb_mouse_out, bd)); + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, _e_border_cb_mouse_down, bd)); + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_UP, _e_border_cb_mouse_up, bd)); + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE, _e_border_cb_mouse_move, bd)); + bd->handlers = evas_list_append(bd->handlers, ecore_event_handler_add(ECORE_X_EVENT_MOUSE_WHEEL, _e_border_cb_mouse_wheel, bd)); + + bd->client.win = win; + + bd->client.icccm.title = strdup(""); + bd->client.icccm.name = strdup(""); + bd->client.icccm.class = strdup(""); + bd->client.icccm.icon_name = strdup(""); + bd->client.icccm.machine = strdup(""); + bd->client.icccm.min_w = 1; + bd->client.icccm.min_h = 1; + bd->client.icccm.max_w = 32767; + bd->client.icccm.max_h = 32767; + bd->client.icccm.base_w = 0; + bd->client.icccm.base_h = 0; + bd->client.icccm.step_w = 1; + bd->client.icccm.step_h = 1; + bd->client.icccm.min_aspect = 0.0; + bd->client.icccm.max_aspect = 0.0; + + bd->client.icccm.fetch.title = 1; + bd->client.icccm.fetch.name_class = 1; + bd->client.icccm.fetch.icon_name = 1; + bd->client.icccm.fetch.machine = 1; + bd->client.icccm.fetch.hints = 1; + bd->client.icccm.fetch.size_pos_hints = 1; + bd->client.icccm.fetch.protocol = 1; + bd->client.mwm.fetch.borderless = 1; + bd->client.netwm.fetch.pid = 1; + bd->client.netwm.fetch.desktop = 1; + bd->client.border.changed = 1; + + bd->client.w = att->w; + bd->client.h = att->h; + + bd->w = bd->client.w; + bd->h = bd->client.h; + bd->changes.size = 1; + + /* FIXME: if first_map is 1 then we should ignore the first hide event + * or ensure the window is alreayd hidden and events flushed before we + * create a border for it + */ + if (first_map) + { + bd->x = att->x; + bd->y = att->y; + bd->changes.pos = 1; + bd->re_manage = 1; + bd->ignore_first_unmap = 2; + } + + ecore_x_window_save_set_add(win); + ecore_x_window_reparent(win, bd->client.shell_win, 0, 0); + ecore_x_window_border_width_set(win, 0); + ecore_x_window_show(bd->event_win); + ecore_x_window_show(bd->client.shell_win); + bd->shape = e_container_shape_add(con); + + bd->new_client = 1; + bd->changed = 1; + + con->clients = evas_list_append(con->clients, bd); + borders = evas_list_append(borders, bd); + return bd; +} + +void +e_border_show(E_Border *bd) +{ + if (bd->visible) return; + e_container_shape_show(bd->shape); + ecore_x_window_show(bd->client.win); + ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_NORMAL); + bd->visible = 1; + bd->changed = 1; + bd->changes.visible = 1; +} + +void +e_border_hide(E_Border *bd) +{ + if (!bd->visible) return; + ecore_x_window_hide(bd->client.win); + e_container_shape_hide(bd->shape); + /* FIXME: might be iconic too - need to do this elsewhere */ + ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_WITHDRAWN); + /* ecore_x_icccm_state_set(bd->client.win, ECORE_X_WINDOW_STATE_HINT_ICONIC); */ + bd->visible = 0; + bd->changed = 1; + bd->changes.visible = 1; +} + +void +e_border_move(E_Border *bd, int x, int y) +{ + if ((x == bd->x) && (y == bd->y)) return; + bd->x = x; + bd->y = y; + bd->changed = 1; + bd->changes.pos = 1; + ecore_x_icccm_move_resize_send(bd->client.win, + bd->x + bd->client_inset.l, + bd->y + bd->client_inset.t, + bd->client.w, + bd->client.h); +} + +void +e_border_resize(E_Border *bd, int w, int h) +{ + if ((w == bd->w) && (h == bd->h)) return; + bd->w = w; + bd->h = h; + bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r); + bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b); + bd->changed = 1; + bd->changes.size = 1; + ecore_x_icccm_move_resize_send(bd->client.win, + bd->x + bd->client_inset.l, + bd->y + bd->client_inset.t, + bd->client.w, + bd->client.h); +} + +void +e_border_move_resize(E_Border *bd, int x, int y, int w, int h) +{ + if ((x == bd->x) && (y == bd->y) && (w == bd->w) && (h == bd->h)) return; + bd->x = x; + bd->y = y; + bd->w = w; + bd->h = h; + bd->client.w = bd->w - (bd->client_inset.l + bd->client_inset.r); + bd->client.h = bd->h - (bd->client_inset.t + bd->client_inset.b); + bd->changed = 1; + bd->changes.pos = 1; + bd->changes.size = 1; + ecore_x_icccm_move_resize_send(bd->client.win, + bd->x + bd->client_inset.l, + bd->y + bd->client_inset.t, + bd->client.w, + bd->client.h); +} + +void +e_border_raise(E_Border *bd) +{ + bd->container->clients = evas_list_remove(bd->container->clients, bd); + bd->container->clients = evas_list_append(bd->container->clients, bd); + ecore_x_window_raise(bd->win); +} + +void +e_border_lower(E_Border *bd) +{ + bd->container->clients = evas_list_remove(bd->container->clients, bd); + bd->container->clients = evas_list_prepend(bd->container->clients, bd); + ecore_x_window_lower(bd->win); +} + +void +e_border_stack_above(E_Border *bd, E_Border *above) +{ + bd->container->clients = evas_list_remove(bd->container->clients, bd); + bd->container->clients = evas_list_append_relative(bd->container->clients, bd, above); + ecore_x_window_configure(bd->win, + ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | + ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, + 0, 0, 0, 0, 0, + above->win, ECORE_X_WINDOW_STACK_ABOVE); +} + +void +e_border_stack_below(E_Border *bd, E_Border *below) +{ + bd->container->clients = evas_list_remove(bd->container->clients, bd); + bd->container->clients = evas_list_prepend_relative(bd->container->clients, bd, below); + ecore_x_window_configure(bd->win, + ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING | + ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE, + 0, 0, 0, 0, 0, + below->win, ECORE_X_WINDOW_STACK_BELOW); +} + +E_Border * +e_border_find_by_client_window(Ecore_X_Window win) +{ + Evas_List *l; + + for (l = borders; l; l = l->next) + { + E_Border *bd; + + bd = l->data; + if (bd->client.win == win) return bd; + } + return NULL; +} + +void +e_border_idler_before(void) +{ + Evas_List *l; + + for (l = borders; l; l = l->next) + { + E_Border *bd; + + bd = l->data; + if (bd->changed) _e_border_eval(bd); + } +} + + +/* local subsystem functions */ +static void +_e_border_free(E_Border *bd) +{ + while (bd->handlers) + { + Ecore_Event_Handler *h; + + h = bd->handlers->data; + bd->handlers = evas_list_remove(bd->handlers, h); + ecore_event_handler_del(h); + } + ecore_x_window_reparent(bd->client.win, bd->container->manager->root, bd->x + bd->client_inset.l, bd->y + bd->client_inset.t); + ecore_x_window_save_set_del(bd->client.win); + if (bd->client.border.name) free(bd->client.border.name); + if (bd->client.icccm.title) free(bd->client.icccm.title); + if (bd->client.icccm.name) free(bd->client.icccm.name); + if (bd->client.icccm.class) free(bd->client.icccm.class); + if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name); + if (bd->client.icccm.machine) free(bd->client.icccm.machine); + e_object_del(E_OBJECT(bd->shape)); + evas_object_del(bd->bg_object); + e_canvas_del(bd->bg_ecore_evas); + ecore_evas_free(bd->bg_ecore_evas); + ecore_x_window_del(bd->client.shell_win); + ecore_x_window_del(bd->win); + bd->container->clients = evas_list_remove(bd->container->clients, bd); + borders = evas_list_remove(borders, bd); + free(bd); +} + +static int +_e_border_cb_window_show_request(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Show_Request *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + return 0; +} + +static int _e_border_cb_window_destroy(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Destroy *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + e_object_del(E_OBJECT(bd)); + return 0; +} + +static int +_e_border_cb_window_hide(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Hide *e; + + bd = data; + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + if (bd->ignore_first_unmap > 0) + { + bd->ignore_first_unmap--; + return 1; + } + e_object_del(E_OBJECT(bd)); + return 0; +} + +static int +_e_border_cb_window_reparent(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Reparent *e; + + bd = data; + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + if (e->parent == bd->client.shell_win) return 1; + e_object_del(E_OBJECT(bd)); + return 0; +} + +static int +_e_border_cb_window_configure_request(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Configure_Request *e; + + bd = data; + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) + { + printf("generic config request %x %i %i %ix%i ...\n", + e->win, e->x, e->y, e->w, e->h); + ecore_x_window_configure(e->win, e->value_mask, + e->x, e->y, e->w, e->h, e->border, + e->abovewin, e->detail); + return 1; + } + printf("config req %0x\n", e->win); + { + if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_X) || + (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_Y)) + { + int x, y; + + y = bd->y; + x = bd->x; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_X) + x = e->x - bd->client_inset.l; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_Y) + y = e->y - bd->client_inset.t; + if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) || + (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H)) + { + int w, h; + + h = bd->h; + w = bd->w; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) + w = e->w + bd->client_inset.l + bd->client_inset.r; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H) + h = e->h + bd->client_inset.t + bd->client_inset.b; + e_border_move_resize(bd, x, y, w, h); + } + else + e_border_move(bd, x, y); + } + else if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) || + (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H)) + { + int w, h; + + h = bd->h; + w = bd->w; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_W) + w = e->w + bd->client_inset.l + bd->client_inset.r; + if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_H) + h = e->h + bd->client_inset.t + bd->client_inset.b; + e_border_resize(bd, w, h); + } + if ((e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) && + (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_SIBLING)) + { + E_Border *obd; + + if (e->detail == ECORE_X_WINDOW_STACK_ABOVE) + { + obd = e_border_find_by_client_window(e->abovewin); + if (obd) + e_border_stack_above(bd, obd); + } + else if (e->detail == ECORE_X_WINDOW_STACK_BELOW) + { + obd = e_border_find_by_client_window(e->abovewin); + if (obd) + e_border_stack_below(bd, obd); + } + else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF) + { + /* FIXME: do */ + } + else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF) + { + /* FIXME: do */ + } + else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE) + { + /* FIXME: do */ + } + } + else if (e->value_mask & ECORE_X_WINDOW_CONFIGURE_MASK_STACK_MODE) + { + if (e->detail == ECORE_X_WINDOW_STACK_ABOVE) + { + e_border_raise(bd); + } + else if (e->detail == ECORE_X_WINDOW_STACK_BELOW) + { + e_border_lower(bd); + } + else if (e->detail == ECORE_X_WINDOW_STACK_TOP_IF) + { + /* FIXME: do */ + } + else if (e->detail == ECORE_X_WINDOW_STACK_BOTTOM_IF) + { + /* FIXME: do */ + } + else if (e->detail == ECORE_X_WINDOW_STACK_OPPOSITE) + { + /* FIXME: do */ + } + } + } + return 0; +} + +static int +_e_border_cb_window_gravity(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Gravity *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + printf("gravity for %0x\n", e->win); + return 0; +} + +static int +_e_border_cb_window_stack_request(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Stack_Request *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + printf("stack req for %0x bd %p\n", e->win, bd); + if (!bd) return 1; + return 0; +} + +static int +_e_border_cb_window_property(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Property *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + { + char *name; + + name = XGetAtomName(ecore_x_display_get(), e->atom); + printf("property for %0x [%s]\n", e->win, name); + XFree(name); + } + /* FIXME: only flag the property to fetch based on the atom of the change */ + bd->client.icccm.fetch.title = 1; + bd->client.icccm.fetch.name_class = 1; + bd->client.icccm.fetch.icon_name = 1; + bd->client.icccm.fetch.machine = 1; + bd->client.icccm.fetch.hints = 1; + bd->client.icccm.fetch.size_pos_hints = 1; + bd->client.icccm.fetch.protocol = 1; + bd->client.mwm.fetch.borderless = 1; + bd->client.netwm.fetch.pid = 1; + bd->client.netwm.fetch.desktop = 1; +// bd->client.border.changed = 1; + bd->changed = 1; + return 0; +} + +static int +_e_border_cb_window_colormap(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Colormap *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + return 0; +} + +static int +_e_border_cb_window_shape(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Shape *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + return 0; +} + +static int +_e_border_cb_window_focus_in(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Focus_In *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + printf("f IN %i | %i\n", e->mode, e->detail); + if (!bd->focused) + { + bd->focused = 1; + edje_object_signal_emit(bd->bg_object, "active", ""); + } + return 0; +} + +static int +_e_border_cb_window_focus_out(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Window_Focus_Out *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + printf("f OUT %i | %i\n", e->mode, e->detail); + if (bd->focused) + { + bd->focused = 0; + edje_object_signal_emit(bd->bg_object, "passive", ""); + } + return 0; +} + +static int +_e_border_cb_client_message(void *data, int ev_type, void *ev) +{ + E_Border *bd; + Ecore_X_Event_Client_Message *e; + + e = ev; + bd = e_border_find_by_client_window(e->win); + if (!bd) return 1; + printf("client message for %0x\n", e->win); + return 0; +} + +static void +_e_border_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->moving = 1; + _e_border_moveinfo_gather(bd, source); + e_border_raise(bd); +} + +static void +_e_border_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + int x, y; + + bd = data; + bd->moving = 0; +} + +#define GRAV_SET(bd, grav) \ +printf("GRAV TO %i\n", grav); \ +ecore_x_window_gravity_set(bd->bg_win, grav); \ +ecore_x_window_pixel_gravity_set(bd->bg_win, grav); \ +ecore_x_window_gravity_set(bd->client.shell_win, grav); \ +ecore_x_window_pixel_gravity_set(bd->client.shell_win, grav); \ +ecore_x_window_gravity_set(bd->client.win, grav); \ +ecore_x_window_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); \ +ecore_x_window_pixel_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); + +static void +_e_border_cb_signal_resize_tl_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_TL; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_SE); +} + +static void +_e_border_cb_signal_resize_t_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_T; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_S); + ecore_x_window_gravity_set(bd->bg_win, ECORE_X_GRAVITY_S); +} + +static void +_e_border_cb_signal_resize_tr_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_TR; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_SW); +} + +static void +_e_border_cb_signal_resize_r_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_R; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_W); +} + +static void +_e_border_cb_signal_resize_br_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_BR; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_NW); +} + +static void +_e_border_cb_signal_resize_b_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_B; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_N); +} + +static void +_e_border_cb_signal_resize_bl_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_BL; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_NE); +} + +static void +_e_border_cb_signal_resize_l_start(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + bd->resize_mode = RESIZE_L; + _e_border_moveinfo_gather(bd, source); + GRAV_SET(bd, ECORE_X_GRAVITY_E); +} + +static void +_e_border_cb_signal_resize_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + int x, y; + + bd = data; + _e_border_resize_handle(bd); + bd->resize_mode = RESIZE_NONE; + bd->changes.reset_gravity = 1; + bd->changed = 1; +} + +static void +_e_border_cb_signal_action(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + E_Border *bd; + + bd = data; + printf("action %s\n", source); + if (!strcmp(source, "close")) + { + if (bd->client.icccm.delete_request) + ecore_x_window_delete_request_send(bd->client.win); + else + { + ecore_x_killall(bd->client.win); +// ecore_x_window_del(bd->client.win); + e_object_del(E_OBJECT(bd)); + } + } +} + +static int +_e_border_cb_mouse_in(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_In *ev; + E_Border *bd; + + ev = event; + bd = data; + if (ev->event_win == bd->win) + { + /* FIXME: this would normally put focus on the client on pointer */ + /* focus - but click to focus it wouldnt */ + if (bd->client.icccm.accepts_focus) + { + if (bd->client.icccm.take_focus) + ecore_x_icccm_take_focus_send(bd->client.win, ECORE_X_CURRENT_TIME); + else + ecore_x_window_focus(bd->client.win); + } + } + if (ev->win != bd->event_win) return 1; + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + evas_event_feed_mouse_in(bd->bg_evas); + return 1; +} + +static int +_e_border_cb_mouse_out(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_Out *ev; + E_Border *bd; + + ev = event; + bd = data; + /* FIXME: this would normally take focus away in pointer focus mode */ + if (ev->event_win == bd->win) + ecore_x_window_focus(bd->container->manager->win); + if (ev->win != bd->event_win) return 1; + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + evas_event_feed_mouse_out(bd->bg_evas); + return 1; +} + +static int +_e_border_cb_mouse_down(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_Button_Down *ev; + E_Border *bd; + + ev = event; + bd = data; + if (ev->win != bd->event_win) return 1; + if ((ev->button >= 1) && (ev->button <= 3)) + { + bd->mouse.last_down[ev->button - 1].mx = ev->root.x; + bd->mouse.last_down[ev->button - 1].my = ev->root.y; + bd->mouse.last_down[ev->button - 1].x = bd->x; + bd->mouse.last_down[ev->button - 1].y = bd->y; + bd->mouse.last_down[ev->button - 1].w = bd->w; + bd->mouse.last_down[ev->button - 1].h = bd->h; + } + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + if (bd->moving) + { + } + else + { + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + evas_event_feed_mouse_down(bd->bg_evas, ev->button); + } + return 1; +} + +static int +_e_border_cb_mouse_up(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_Button_Up *ev; + E_Border *bd; + + ev = event; + bd = data; + if (ev->win != bd->event_win) return 1; + if ((ev->button >= 1) && (ev->button <= 3)) + { + bd->mouse.last_up[ev->button - 1].mx = ev->root.x; + bd->mouse.last_up[ev->button - 1].my = ev->root.y; + bd->mouse.last_up[ev->button - 1].x = bd->x; + bd->mouse.last_up[ev->button - 1].y = bd->y; + } + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + evas_event_feed_mouse_up(bd->bg_evas, ev->button); + return 1; +} + +static int +_e_border_cb_mouse_move(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_Move *ev; + E_Border *bd; + + ev = event; + bd = data; + if (ev->win != bd->event_win) return 1; + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + if (bd->moving) + { + int x, y, new_x, new_y; + Evas_List *skiplist = NULL; + + if ((bd->moveinfo.down.button >= 1) && (bd->moveinfo.down.button <= 3)) + { + x = bd->mouse.last_down[bd->moveinfo.down.button - 1].x + + (bd->mouse.current.mx - bd->moveinfo.down.mx); + y = bd->mouse.last_down[bd->moveinfo.down.button - 1].y + + (bd->mouse.current.my - bd->moveinfo.down.my); + } + else + { + x = bd->x + + (bd->mouse.current.mx - bd->moveinfo.down.mx); + y = bd->y + + (bd->mouse.current.my - bd->moveinfo.down.my); + } + new_x = x; + new_y = y; + skiplist = evas_list_append(skiplist, bd); + e_resist_container_position(bd->container, skiplist, + bd->x, bd->y, bd->w, bd->h, + x, y, bd->w, bd->h, + &new_x, &new_y); + evas_list_free(skiplist); + e_border_move(bd, new_x, new_y); + } + else if (bd->resize_mode != RESIZE_NONE) + { + _e_border_resize_handle(bd); + } + else + { + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + } + return 1; +} + +static int +_e_border_cb_mouse_wheel(void *data, int type, void *event) +{ + Ecore_X_Event_Mouse_Wheel *ev; + E_Border *bd; + + ev = event; + bd = data; + if (ev->win != bd->event_win) return 1; + bd->mouse.current.mx = ev->root.x; + bd->mouse.current.my = ev->root.y; + evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y); + evas_event_feed_mouse_wheel(bd->bg_evas, ev->direction, ev->z); + return 1; +} + +static void +_e_border_eval(E_Border *bd) +{ + /* FIXME: get min/max/start size etc. gravity etc. */ + + /* fetch any info queued to be fetched */ + if (bd->client.icccm.fetch.title) + { + if (bd->client.icccm.title) free(bd->client.icccm.title); + bd->client.icccm.title = ecore_x_icccm_title_get(bd->client.win); + bd->client.icccm.fetch.title = 0; + if (bd->bg_object) + { + edje_object_part_text_set(bd->bg_object, "title_text", + bd->client.icccm.title); + printf("SET TITLE %s\n", bd->client.icccm.title); + } + } + if (bd->client.icccm.fetch.name_class) + { + if (bd->client.icccm.name) free(bd->client.icccm.name); + bd->client.icccm.name = NULL; + if (bd->client.icccm.class) free(bd->client.icccm.class); + bd->client.icccm.class = NULL; + ecore_x_window_prop_name_class_get(bd->client.win, &bd->client.icccm.name, &bd->client.icccm.class); + bd->client.icccm.fetch.name_class = 0; + } + if (bd->client.icccm.fetch.icon_name) + { + if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name); + bd->client.icccm.icon_name = ecore_x_window_prop_icon_name_get(bd->client.win); + bd->client.icccm.fetch.icon_name = 0; + } + if (bd->client.icccm.fetch.machine) + { + if (bd->client.icccm.machine) free(bd->client.icccm.machine); + bd->client.icccm.machine = ecore_x_window_prop_client_machine_get(bd->client.win); + bd->client.icccm.fetch.machine = 0; + } + if (bd->client.icccm.fetch.hints) + { + int accepts_focus = 1; + int is_urgent = 0; + + bd->client.icccm.initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL; + ecore_x_icccm_hints_get(bd->client.win, + &accepts_focus, + &bd->client.icccm.initial_state, + &bd->client.icccm.icon_pixmap, + &bd->client.icccm.icon_mask, + &bd->client.icccm.icon_window, + &bd->client.icccm.window_group, + &is_urgent); + bd->client.icccm.accepts_focus = accepts_focus; + bd->client.icccm.urgent = is_urgent; + bd->client.icccm.fetch.hints = 0; + } + if (bd->client.icccm.fetch.size_pos_hints) + { + int request_pos = 0; + + if (!ecore_x_icccm_size_pos_hints_get(bd->client.win, + &request_pos, + &bd->client.icccm.gravity, + &bd->client.icccm.min_w, + &bd->client.icccm.min_h, + &bd->client.icccm.max_w, + &bd->client.icccm.max_h, + &bd->client.icccm.base_w, + &bd->client.icccm.base_h, + &bd->client.icccm.step_w, + &bd->client.icccm.step_h, + &bd->client.icccm.min_aspect, + &bd->client.icccm.max_aspect)) + { + printf("NO SIZE HINTS!\n"); + } + if (bd->client.icccm.min_w > 32767) bd->client.icccm.min_w = 32767; + if (bd->client.icccm.min_h > 32767) bd->client.icccm.min_h = 32767; + if (bd->client.icccm.max_w > 32767) bd->client.icccm.max_w = 32767; + if (bd->client.icccm.max_h > 32767) bd->client.icccm.max_h = 32767; + if (bd->client.icccm.base_w > 32767) bd->client.icccm.base_w = 32767; + if (bd->client.icccm.base_h > 32767) bd->client.icccm.base_h = 32767; + bd->client.icccm.request_pos = request_pos; + bd->client.icccm.fetch.size_pos_hints = 0; + } + if (bd->client.icccm.fetch.protocol) + { + int i, num; + Ecore_X_WM_Protocol *proto; + + proto = ecore_x_window_prop_protocol_list_get(bd->client.win, &num); + if (proto) + { + for (i = 0; i < num; i++) + { + if (proto[i] == ECORE_X_WM_PROTOCOL_DELETE_REQUEST) + bd->client.icccm.delete_request = 1; + if (proto[i] == ECORE_X_WM_PROTOCOL_TAKE_FOCUS) + bd->client.icccm.take_focus = 1; + } + free(proto); + } + bd->client.icccm.fetch.protocol = 0; + } + if (bd->client.mwm.fetch.borderless) + { + int pb; + + pb = bd->client.mwm.borderless; + bd->client.mwm.borderless = ecore_x_window_prop_borderless_get(bd->client.win); + bd->client.mwm.fetch.borderless = 0; + if (bd->client.mwm.borderless != pb) + { + if (bd->client.border.name) free(bd->client.border.name); + if (bd->client.mwm.borderless) + bd->client.border.name = strdup("borderless"); + else + bd->client.border.name = strdup("default"); + bd->client.border.changed = 1; + } + } + if (bd->client.netwm.fetch.pid) + { + bd->client.netwm.pid = ecore_x_window_prop_pid_get(bd->client.win); + bd->client.netwm.fetch.pid = 0; + } + if (bd->client.netwm.fetch.desktop) + { + bd->client.netwm.desktop = ecore_x_window_prop_desktop_get(bd->client.win); + bd->client.netwm.fetch.desktop = 0; + } + + if (bd->client.border.changed) + { + Evas_Object *o; + int iw, ih; + const char *path, *str; + char buf[4096]; + + if (!bd->client.border.name) + { + bd->client.border.name = strdup("default"); + } + if (bd->bg_object) + { + bd->w -= (bd->client_inset.l + bd->client_inset.r); + bd->h -= (bd->client_inset.t + bd->client_inset.b); + bd->client_inset.l = 0; + bd->client_inset.r = 0; + bd->client_inset.t = 0; + bd->client_inset.b = 0; + bd->changes.size = 1; + evas_object_del(bd->bg_object); + } + o = edje_object_add(bd->bg_evas); + bd->bg_object = o; + /* FIXME: "default.eet" needs to come from conf */ + path = e_path_find(path_themes, "default.eet"); + snprintf(buf, sizeof(buf), "widgets/border/%s/border", + bd->client.border.name); + edje_object_file_set(o, path, buf); + edje_object_part_text_set(o, "title_text", + bd->client.icccm.title); + printf("SET TITLE2 %s\n", bd->client.icccm.title); + str = edje_object_data_get(o, "client_inset"); + if (str) + { + int l, r, t, b; + + if (sscanf(str, "%i %i %i %i", &l, &r, &t, &b) == 4) + { + bd->client_inset.l = l; + bd->client_inset.r = r; + bd->client_inset.t = t; + bd->client_inset.b = b; + bd->w += (bd->client_inset.l + bd->client_inset.r); + bd->h += (bd->client_inset.t + bd->client_inset.b); + bd->changes.size = 1; + ecore_x_window_move(bd->client.shell_win, l, t); + } + } + edje_object_signal_callback_add(o, "move_start", "*", + _e_border_cb_signal_move_start, bd); + edje_object_signal_callback_add(o, "move_stop", "*", + _e_border_cb_signal_move_stop, bd); + edje_object_signal_callback_add(o, "resize_tl_start", "*", + _e_border_cb_signal_resize_tl_start, bd); + edje_object_signal_callback_add(o, "resize_t_start", "*", + _e_border_cb_signal_resize_t_start, bd); + edje_object_signal_callback_add(o, "resize_tr_start", "*", + _e_border_cb_signal_resize_tr_start, bd); + edje_object_signal_callback_add(o, "resize_r_start", "*", + _e_border_cb_signal_resize_r_start, bd); + edje_object_signal_callback_add(o, "resize_br_start", "*", + _e_border_cb_signal_resize_br_start, bd); + edje_object_signal_callback_add(o, "resize_b_start", "*", + _e_border_cb_signal_resize_b_start, bd); + edje_object_signal_callback_add(o, "resize_bl_start", "*", + _e_border_cb_signal_resize_bl_start, bd); + edje_object_signal_callback_add(o, "resize_l_start", "*", + _e_border_cb_signal_resize_l_start, bd); + edje_object_signal_callback_add(o, "resize_stop", "*", + _e_border_cb_signal_resize_stop, bd); + edje_object_signal_callback_add(o, "action", "*", + _e_border_cb_signal_action, bd); + if (bd->focused) + edje_object_signal_emit(bd->bg_object, "active", ""); + evas_object_move(o, 0, 0); + evas_object_resize(o, bd->w, bd->h); + evas_object_show(o); + bd->client.border.changed = 0; + } + + if (bd->new_client) + { + printf("NEW CLIENT SETUP\n"); + if (bd->re_manage) + { + printf("REMANAGE!\n"); + bd->x -= bd->client_inset.l; + bd->y -= bd->client_inset.t; + bd->changes.pos = 1; + } + else + { + if (bd->client.icccm.request_pos) + { + Ecore_X_Window_Attributes *att; + int bw; + + printf("REQUEST POS!\n"); + att = &bd->client.initial_attributes; + bw = att->border * 2; + switch (bd->client.icccm.gravity) + { + case ECORE_X_GRAVITY_N: + bd->x = (att->x - (bw / 2)); + bd->y = att->y; + break; + case ECORE_X_GRAVITY_NE: + bd->x = (att->x - (bw)) - (bd->client_inset.l); + bd->y = att->y; + break; + case ECORE_X_GRAVITY_E: + bd->x = (att->x - (bw)) - (bd->client_inset.l); + bd->y = (att->y - (bw / 2)); + break; + case ECORE_X_GRAVITY_SE: + bd->x = (att->x - (bw)) - (bd->client_inset.l); + bd->y = (att->y - (bw)) - (bd->client_inset.t); + break; + case ECORE_X_GRAVITY_S: + bd->x = (att->x - (bw / 2)); + bd->y = (att->y - (bw)) - (bd->client_inset.t); + break; + case ECORE_X_GRAVITY_SW: + bd->x = att->x; + bd->y = (att->y - (bw)) - (bd->client_inset.t); + break; + case ECORE_X_GRAVITY_W: + bd->x = att->x; + bd->y = (att->y - (bw)) - (bd->client_inset.t); + break; + case ECORE_X_GRAVITY_NW: + default: + bd->x = att->x; + bd->y = att->y; + } + bd->changes.pos = 1; + } + else + { + Evas_List *skiplist = NULL; + int new_x, new_y; + + printf("AUTO POS!\n"); + new_x = rand() % (bd->container->w - bd->w); + new_y = rand() % (bd->container->h - bd->h); + skiplist = evas_list_append(skiplist, bd); + e_place_container_region_smart(bd->container, skiplist, + bd->x, bd->y, bd->w, bd->h, + &new_x, &new_y); + evas_list_free(skiplist); + bd->x = new_x; + bd->y = new_y; + bd->changes.pos = 1; + } + } + } + + /* effect changes to the window border itself */ + if (bd->changes.visible) + { + if (bd->visible) ecore_x_window_show(bd->win); + else ecore_x_window_hide(bd->win); + bd->changes.visible = 0; + } + if ((bd->changes.pos) && (bd->changes.size)) + { + printf("border move resize\n"); + evas_obscured_clear(bd->bg_evas); + evas_obscured_rectangle_add(bd->bg_evas, + bd->client_inset.l, bd->client_inset.t, + bd->w - (bd->client_inset.l + bd->client_inset.r), + bd->h - (bd->client_inset.t + bd->client_inset.b)); + ecore_x_window_move_resize(bd->win, bd->x, bd->y, bd->w, bd->h); + ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); + ecore_x_window_move_resize(bd->client.shell_win, + bd->client_inset.l, bd->client_inset.t, + bd->client.w, bd->client.h); + ecore_x_window_move_resize(bd->client.win, 0, 0, + bd->client.w, bd->client.h); + ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); + evas_object_resize(bd->bg_object, bd->w, bd->h); + e_container_shape_resize(bd->shape, bd->w, bd->h); + e_container_shape_move(bd->shape, bd->x, bd->y); + bd->changes.pos = 0; + bd->changes.size = 0; + printf("border move resize done\n"); + } + else if (bd->changes.pos) + { + ecore_x_window_move(bd->win, bd->x, bd->y); + e_container_shape_move(bd->shape, bd->x, bd->y); + bd->changes.pos = 0; + } + else if (bd->changes.size) + { + printf("border move resize\n"); + evas_obscured_clear(bd->bg_evas); + evas_obscured_rectangle_add(bd->bg_evas, + bd->client_inset.l, bd->client_inset.t, + bd->w - (bd->client_inset.l + bd->client_inset.r), bd->h - (bd->client_inset.t + bd->client_inset.b)); + ecore_x_window_move_resize(bd->event_win, 0, 0, bd->w, bd->h); + ecore_x_window_resize(bd->win, bd->w, bd->h); + ecore_x_window_move_resize(bd->client.shell_win, + bd->client_inset.l, bd->client_inset.t, + bd->client.w, bd->client.h); + ecore_x_window_move_resize(bd->client.win, 0, 0, + bd->client.w, bd->client.h); + ecore_evas_move_resize(bd->bg_ecore_evas, 0, 0, bd->w, bd->h); + evas_object_resize(bd->bg_object, bd->w, bd->h); + e_container_shape_resize(bd->shape, bd->w, bd->h); + printf("border move resize done\n"); + bd->changes.size = 0; + } + if (bd->changes.reset_gravity) + { + GRAV_SET(bd, ECORE_X_GRAVITY_NW); + bd->changes.reset_gravity = 0; + } + + bd->new_client = 0; + bd->changed = 0; + + bd->changes.stack = 0; + bd->changes.prop = 0; + bd->changes.border = 0; +} + +static void +_e_border_resize_limit(E_Border *bd, int *w, int *h) +{ + double a; + + *w -= bd->client_inset.l + bd->client_inset.r; + *h -= bd->client_inset.t + bd->client_inset.b; + if (*h < 1) *h = 1; + if (*w < 1) *w = 1; + a = *w / *h; + if ((bd->client.icccm.min_aspect != 0.0) && + (a < bd->client.icccm.min_aspect)) + *w = *h / bd->client.icccm.min_aspect; + else if + ((bd->client.icccm.max_aspect != 0.0) && + (a > bd->client.icccm.max_aspect)) + *h = *w * bd->client.icccm.max_aspect; + *w = bd->client.icccm.base_w + + (((*w - bd->client.icccm.base_w) / bd->client.icccm.step_w) * + bd->client.icccm.step_w); + *h = bd->client.icccm.base_h + + (((*h - bd->client.icccm.base_h) / bd->client.icccm.step_h) * + bd->client.icccm.step_h); + if (*w > bd->client.icccm.max_w) *w = bd->client.icccm.max_w; + else if (*w < bd->client.icccm.min_w) *w = bd->client.icccm.min_w; + if (*h > bd->client.icccm.max_h) *h = bd->client.icccm.max_h; + else if (*h < bd->client.icccm.min_h) *h = bd->client.icccm.min_h; + + *w += bd->client_inset.l + bd->client_inset.r; + *h += bd->client_inset.t + bd->client_inset.b; +} + +static void +_e_border_moveinfo_gather(E_Border *bd, const char *source) +{ + if (!strcmp(source, "mouse,1")) bd->moveinfo.down.button = 1; + else if (!strcmp(source, "mouse,2")) bd->moveinfo.down.button = 2; + else if (!strcmp(source, "mouse,3")) bd->moveinfo.down.button = 3; + else bd->moveinfo.down.button = 0; + if ((bd->moveinfo.down.button >= 1) && (bd->moveinfo.down.button <= 3)) + { + bd->moveinfo.down.mx = bd->mouse.last_down[bd->moveinfo.down.button - 1].mx; + bd->moveinfo.down.my = bd->mouse.last_down[bd->moveinfo.down.button - 1].my; + } + else + { + bd->moveinfo.down.mx = bd->mouse.current.mx; + bd->moveinfo.down.my = bd->mouse.current.my; + } +} + +static void +_e_border_resize_handle(E_Border *bd) +{ + int x, y, w, h; + int tw, th; + + x = bd->x; + y = bd->y; + w = bd->w; + h = bd->h; + + if ((bd->resize_mode == RESIZE_TR) || + (bd->resize_mode == RESIZE_R) || + (bd->resize_mode == RESIZE_BR)) + { + if ((bd->moveinfo.down.button >= 1) && + (bd->moveinfo.down.button <= 3)) + w = bd->mouse.last_down[bd->moveinfo.down.button - 1].w + + (bd->mouse.current.mx - bd->moveinfo.down.mx); + else + w = bd->w + (bd->mouse.current.mx - bd->moveinfo.down.mx); + } + else if ((bd->resize_mode == RESIZE_TL) || + (bd->resize_mode == RESIZE_L) || + (bd->resize_mode == RESIZE_BL)) + { + if ((bd->moveinfo.down.button >= 1) && + (bd->moveinfo.down.button <= 3)) + w = bd->mouse.last_down[bd->moveinfo.down.button - 1].w - + (bd->mouse.current.mx - bd->moveinfo.down.mx); + else + w = bd->w - (bd->mouse.current.mx - bd->moveinfo.down.mx); + } + + if ((bd->resize_mode == RESIZE_TL) || + (bd->resize_mode == RESIZE_T) || + (bd->resize_mode == RESIZE_TR)) + { + if ((bd->moveinfo.down.button >= 1) && + (bd->moveinfo.down.button <= 3)) + h = bd->mouse.last_down[bd->moveinfo.down.button - 1].h - + (bd->mouse.current.my - bd->moveinfo.down.my); + else + h = bd->h - (bd->mouse.current.my - bd->moveinfo.down.my); + } + else if ((bd->resize_mode == RESIZE_BL) || + (bd->resize_mode == RESIZE_B) || + (bd->resize_mode == RESIZE_BR)) + { + if ((bd->moveinfo.down.button >= 1) && + (bd->moveinfo.down.button <= 3)) + h = bd->mouse.last_down[bd->moveinfo.down.button - 1].h + + (bd->mouse.current.my - bd->moveinfo.down.my); + else + h = bd->h + (bd->mouse.current.my - bd->moveinfo.down.my); + } + + tw = bd->w; + th = bd->h; + _e_border_resize_limit(bd, &w, &h); + + if ((bd->resize_mode == RESIZE_TL) || + (bd->resize_mode == RESIZE_L) || + (bd->resize_mode == RESIZE_BL)) + x += (tw - w); + if ((bd->resize_mode == RESIZE_TL) || + (bd->resize_mode == RESIZE_T) || + (bd->resize_mode == RESIZE_TR)) + y += (th - h); + + e_border_move_resize(bd, x, y, w, h); +} diff --git a/src/bin/e_border.h b/src/bin/e_border.h new file mode 100644 index 000000000..7a89ccdeb --- /dev/null +++ b/src/bin/e_border.h @@ -0,0 +1,149 @@ +#ifndef E_BORDER_H +#define E_BORDER_H + +typedef struct _E_Border E_Border; + +struct _E_Border +{ + E_Object e_obj_inherit; + + struct { + struct { + int x, y, w, h; + int mx, my; + } current, last_down[3], last_up[3]; + } mouse; + + struct { + struct { + int x, y, w, h; + int mx, my; + int button; + } down; + } moveinfo; + + Ecore_X_Window win; + int x, y, w, h; + int ref; + E_Container *container; + Evas_List *handlers; + + struct { + int l, r, t, b; + } client_inset; + + Ecore_Evas *bg_ecore_evas; + Evas *bg_evas; + Ecore_X_Window bg_win; + Evas_Object *bg_object; + Ecore_X_Window event_win; + + struct { + Ecore_X_Window shell_win; + Ecore_X_Window win; + + int x, y, w, h; + + struct { + unsigned char changed : 1; + char *name; + } border; + + struct { + char *title; + char *name; + char *class; + char *icon_name; + char *machine; + int min_w, min_h; + int max_w, max_h; + int base_w, base_h; + int step_w, step_h; + int start_x, start_y; + double min_aspect, max_aspect; + Ecore_X_Window_State_Hint initial_state; + Ecore_X_Pixmap icon_pixmap; + Ecore_X_Pixmap icon_mask; + Ecore_X_Window icon_window; + Ecore_X_Window window_group; + Ecore_X_Gravity gravity; + unsigned char take_focus : 1; + unsigned char accepts_focus : 1; + unsigned char urgent : 1; + unsigned char delete_request : 1; + unsigned char withdrawn : 1; + unsigned char iconic : 1; + unsigned char request_pos : 1; + struct { + unsigned int title : 1; + unsigned int name_class : 1; + unsigned int icon_name : 1; + unsigned int machine : 1; + unsigned int hints : 1; + unsigned int size_pos_hints : 1; + unsigned int protocol : 1; + } fetch; + } icccm; + struct { + unsigned char borderless : 1; + struct { + unsigned int borderless : 1; + } fetch; + } mwm; + struct { + pid_t pid; + int desktop; + struct { + unsigned int pid : 1; + unsigned int desktop : 1; + } fetch; + } netwm; + Ecore_X_Window_Attributes initial_attributes; + } client; + + E_Container_Shape *shape; + + unsigned char visible : 1; + unsigned char moving : 1; + unsigned char focused : 1; + unsigned char new_client : 1; + unsigned char re_manage : 1; + + unsigned char changed : 1; + + unsigned char ignore_first_unmap; + unsigned char resize_mode; + + struct { + unsigned int visible : 1; + unsigned int pos : 1; + unsigned int size : 1; + unsigned int stack : 1; + unsigned int prop : 1; + unsigned int border : 1; + unsigned int reset_gravity : 1; + } changes; +}; + +int e_border_init(void); +int e_border_shutdown(void); + +E_Border *e_border_new(E_Container *con, Ecore_X_Window win, int first_map); +void e_border_free(E_Border *bd); +void e_border_ref(E_Border *bd); +void e_border_unref(E_Border *bd); +void e_border_show(E_Border *bd); +void e_border_hide(E_Border *bd); +void e_border_move(E_Border *bd, int x, int y); +void e_border_resize(E_Border *bd, int w, int h); +void e_border_move_resize(E_Border *bd, int x, int y, int w, int h); +void e_border_raise(E_Border *bd); +void e_border_lower(E_Border *bd); +void e_border_stack_above(E_Border *bd, E_Border *above); +void e_border_stack_below(E_Border *bd, E_Border *below); + +E_Border *e_border_find_by_client_window(Ecore_X_Window win); + +void e_border_idler_before(void); + +#endif diff --git a/src/bin/e_box.c b/src/bin/e_box.c new file mode 100644 index 000000000..216050e19 --- /dev/null +++ b/src/bin/e_box.c @@ -0,0 +1,802 @@ +#include "e.h" + +typedef struct _E_Smart_Data E_Smart_Data; +typedef struct _E_Box_Item E_Box_Item; + +struct _E_Smart_Data +{ + Evas_Coord x, y, w, h; + Evas_Object *obj; + int frozen; + unsigned char changed : 1; + unsigned char horizontal : 1; + unsigned char homogenous : 1; + Evas_List *items; + struct { + Evas_Coord w, h; + } min, max; + struct { + double x, y; + } align; +}; + +struct _E_Box_Item +{ + E_Smart_Data *sd; + unsigned char fill_w : 1; + unsigned char fill_h : 1; + unsigned char expand_w : 1; + unsigned char expand_h : 1; + struct { + Evas_Coord w, h; + } min, max; + struct { + double x, y; + } align; + Evas_Object *obj; +}; + +/* local subsystem functions */ +static E_Box_Item *_e_box_smart_adopt(E_Smart_Data *sd, Evas_Object *obj); +static void _e_box_smart_disown(Evas_Object *obj); +static void _e_box_smart_item_del_hook(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_box_smart_reconfigure(E_Smart_Data *sd); +static void _e_box_smart_extents_calcuate(E_Smart_Data *sd); + +static void _e_box_smart_init(void); +static void _e_box_smart_add(Evas_Object *obj); +static void _e_box_smart_del(Evas_Object *obj); +static void _e_box_smart_layer_set(Evas_Object *obj, int layer); +static void _e_box_smart_raise(Evas_Object *obj); +static void _e_box_smart_lower(Evas_Object *obj); +static void _e_box_smart_stack_above(Evas_Object *obj, Evas_Object * above); +static void _e_box_smart_stack_below(Evas_Object *obj, Evas_Object * below); +static void _e_box_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y); +static void _e_box_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h); +static void _e_box_smart_show(Evas_Object *obj); +static void _e_box_smart_hide(Evas_Object *obj); +static void _e_box_smart_color_set(Evas_Object *obj, int r, int g, int b, int a); +static void _e_box_smart_clip_set(Evas_Object *obj, Evas_Object *clip); +static void _e_box_smart_clip_unset(Evas_Object *obj); + +/* local subsystem globals */ +static Evas_Smart *_e_smart = NULL; + +/* externally accessible functions */ +Evas_Object * +e_box_add(Evas *evas) +{ + _e_box_smart_init(); + return evas_object_smart_add(evas, _e_smart); +} + +int +e_box_freeze(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + sd->frozen++; + return sd->frozen; +} + +int +e_box_thaw(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + sd->frozen--; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); + return sd->frozen; +} + +void +e_box_orientation_set(Evas_Object *obj, int horizontal) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (((sd->horizontal) && (horizontal)) || + ((!sd->horizontal) && (!horizontal))) return; + sd->horizontal = horizontal; + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); +} + +void +e_box_homogenous_set(Evas_Object *obj, int homogenous) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (sd->homogenous == homogenous) return; + sd->homogenous = homogenous; + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); +} + +int +e_box_pack_start(Evas_Object *obj, Evas_Object *child) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + _e_box_smart_adopt(sd, child); + sd->items = evas_list_prepend(sd->items, child); + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); + return 0; +} + +int +e_box_pack_end(Evas_Object *obj, Evas_Object *child) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + _e_box_smart_adopt(sd, child); + sd->items = evas_list_append(sd->items, child); + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); + return evas_list_count(sd->items) - 1; +} + +int +e_box_pack_before(Evas_Object *obj, Evas_Object *child, Evas_Object *before) +{ + E_Smart_Data *sd; + int i = 0; + Evas_List *l; + + sd = evas_object_smart_data_get(obj); + _e_box_smart_adopt(sd, child); + sd->items = evas_list_prepend_relative(sd->items, child, before); + for (i = 0, l = sd->items; l; l = l->next, i++) + { + if (l->data == child) break; + } + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); + return i; +} + +int +e_box_pack_after(Evas_Object *obj, Evas_Object *child, Evas_Object *after) +{ + E_Smart_Data *sd; + int i = 0; + Evas_List *l; + + sd = evas_object_smart_data_get(obj); + _e_box_smart_adopt(sd, child); + sd->items = evas_list_append_relative(sd->items, child, after); + for (i = 0, l = sd->items; l; l = l->next, i++) + { + if (l->data == child) break; + } + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); + return i; +} + +int +e_box_pack_count_get(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + return evas_list_count(sd->items); +} + +Evas_Object * +e_box_pack_object_nth(Evas_Object *obj, int n) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + return evas_list_nth(sd->items, n); +} + +Evas_Object * +e_box_pack_object_first(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + return evas_list_data(sd->items); +} + +Evas_Object * +e_box_pack_object_last(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + return evas_list_data(evas_list_last(sd->items)); +} + +void +e_box_pack_options_set(Evas_Object *obj, int fill_w, int fill_h, int expand_w, int expand_h, double align_x, double align_y, Evas_Coord min_w, Evas_Coord min_h, Evas_Coord max_w, Evas_Coord max_h) +{ + E_Box_Item *bi; + + bi = evas_object_data_get(obj, "e_box_data"); + if (!bi) return; + bi->fill_w = fill_w; + bi->fill_h = fill_h; + bi->expand_w = expand_w; + bi->expand_h = expand_h; + bi->align.x = align_x; + bi->align.y = align_y; + bi->min.w = min_w; + bi->min.h = min_h; + bi->max.w = max_w; + bi->max.h = max_h; + bi->sd->changed = 1; + if (bi->sd->frozen <= 0) _e_box_smart_reconfigure(bi->sd); +} + +void +e_box_unpack(Evas_Object *obj) +{ + E_Box_Item *bi; + E_Smart_Data *sd; + + bi = evas_object_data_get(obj, "e_box_data"); + if (!bi) return; + sd = bi->sd; + sd->items = evas_list_remove(sd->items, obj); + _e_box_smart_disown(obj); + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); +} + +void +e_box_min_size_get(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (sd->changed) _e_box_smart_extents_calcuate(sd); + if (minw) *minw = sd->min.w; + if (minh) *minh = sd->min.h; +} + +void +e_box_max_size_get(Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (sd->changed) _e_box_smart_extents_calcuate(sd); + if (maxw) *maxw = sd->max.w; + if (maxh) *maxh = sd->max.h; +} + +void +e_box_align_get(Evas_Object *obj, double *ax, double *ay) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (ax) *ax = sd->align.x; + if (ay) *ay = sd->align.y; +} + +void +e_box_align_set(Evas_Object *obj, double ax, double ay) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if ((sd->align.x == ax) && (sd->align.y == ay)) return; + sd->align.x = ax; + sd->align.y = ay; + sd->changed = 1; + if (sd->frozen <= 0) _e_box_smart_reconfigure(sd); +} + +/* local subsystem functions */ +static E_Box_Item * +_e_box_smart_adopt(E_Smart_Data *sd, Evas_Object *obj) +{ + E_Box_Item *bi; + + bi = calloc(1, sizeof(E_Box_Item)); + if (!bi) return NULL; + bi->sd = sd; + bi->obj = obj; + /* defaults */ + bi->fill_w = 0; + bi->fill_h = 0; + bi->expand_w = 0; + bi->expand_h = 0; + bi->align.x = 0.5; + bi->align.y = 0.5; + bi->min.w = 0; + bi->min.h = 0; + bi->max.w = 0; + bi->max.h = 0; + evas_object_clip_set(obj, evas_object_clip_get(sd->obj)); + evas_object_stack_above(obj, sd->obj); + evas_object_smart_member_add(bi->sd->obj, obj); + evas_object_data_set(obj, "e_box_data", bi); + evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE, + _e_box_smart_item_del_hook, NULL); + return bi; +} + +static void +_e_box_smart_disown(Evas_Object *obj) +{ + E_Box_Item *bi; + + bi = evas_object_data_get(obj, "e_box_data"); + if (!bi) return; + evas_object_event_callback_del(obj, + EVAS_CALLBACK_FREE, + _e_box_smart_item_del_hook); + evas_object_smart_member_del(bi->sd->obj); + evas_object_data_del(obj, "e_box_data"); + free(bi); +} + +static void +_e_box_smart_item_del_hook(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + e_box_unpack(obj); +} + +static void +_e_box_smart_reconfigure(E_Smart_Data *sd) +{ + Evas_Coord x, y, w, h, xx, yy; + Evas_List *l; + int minw, minh; + int count, expand; + + if (!sd->changed) return; + + x = sd->x; + y = sd->y; + w = sd->w; + h = sd->h; + + _e_box_smart_extents_calcuate(sd); + minw = sd->min.w; + minh = sd->min.h; + count = evas_list_count(sd->items); + expand = 0; + if (w < minw) + { + x = x + ((w - minw) * (1.0 - sd->align.x)); + w = minw; + } + if (h < minh) + { + y = y + ((h - minh) * (1.0 - sd->align.y)); + h = minh; + } + for (l = sd->items; l; l = l->next) + { + E_Box_Item *bi; + Evas_Object *obj; + + obj = l->data; + bi = evas_object_data_get(obj, "e_box_data"); + if (sd->horizontal) + { + if (bi->expand_w) expand++; + } + else + { + if (bi->expand_h) expand++; + } + } + if (expand == 0) + { + if (sd->horizontal) + { + x += (w - minw) / 2; + w = minw; + } + else + { + y += (h - minh) / 2; + h = minh; + } + } + xx = x; + yy = y; + for (l = sd->items; l; l = l->next) + { + E_Box_Item *bi; + Evas_Object *obj; + + obj = l->data; + bi = evas_object_data_get(obj, "e_box_data"); + if (sd->horizontal) + { + if (sd->homogenous) + { + Evas_Coord ww, hh, ow, oh; + + ww = (w / (Evas_Coord)count); + hh = h; + ow = bi->min.w; + if (bi->expand_w) ow = ww; + if ((bi->max.w >= 0) && (bi->max.w < oh)) ow = bi->max.w; + oh = bi->min.h; + if (bi->expand_h) oh = hh; + if ((bi->max.h >= 0) && (bi->max.h < oh)) oh = bi->max.h; + evas_object_move(obj, + xx + (Evas_Coord)(((double)(ww - ow)) * bi->align.x), + yy + (Evas_Coord)(((double)(hh - oh)) * bi->align.y)); + evas_object_resize(obj, ow, oh); + xx += ww; + } + else + { + /* FIXME: not done - this is fucked atm */ + Evas_Coord ww, hh, ow, oh; + + ww = bi->min.w; + hh = h; + ow = bi->min.w; + if (bi->expand_w) ow = ww; + if ((bi->max.w >= 0) && (bi->max.w < ow)) ow = bi->max.w; + oh = bi->min.h; + if (bi->expand_h) oh = hh; + if ((bi->max.h >= 0) && (bi->max.h < oh)) oh = bi->max.h; + evas_object_move(obj, + xx + (Evas_Coord)(((double)(ww - ow)) * bi->align.x), + yy + (Evas_Coord)(((double)(hh - oh)) * bi->align.y)); + evas_object_resize(obj, ow, oh); + xx += ww; + } + } + else + { + if (sd->homogenous) + { + Evas_Coord ww, hh, ow, oh; + + ww = w; + hh = (h / (Evas_Coord)count); + ow = bi->min.w; + if (bi->expand_w) ow = ww; + if ((bi->max.w >= 0) && (bi->max.w < ow)) ow = bi->max.w; + oh = bi->min.h; + if (bi->expand_h) oh = hh; + if ((bi->max.h >= 0) && (bi->max.h < oh)) oh = bi->max.h; + evas_object_move(obj, + xx + (Evas_Coord)(((double)(ww - ow)) * bi->align.x), + yy + (Evas_Coord)(((double)(hh - oh)) * bi->align.y)); + evas_object_resize(obj, ow, oh); + yy += hh; + } + else + { + /* FIXME: not done - this is fucked atm */ + Evas_Coord ww, hh, ow, oh; + + ww = w; + hh = bi->min.h; + ow = bi->min.w; + if (bi->expand_w) ow = ww; + if ((bi->max.w >= 0) && (bi->max.w < ow)) ow = bi->max.w; + oh = bi->min.h; + if (bi->expand_h) oh = hh; + if ((bi->max.h >= 0) && (bi->max.h < oh)) oh = bi->max.h; + evas_object_move(obj, + xx + (Evas_Coord)(((double)(ww - ow)) * bi->align.x), + yy + (Evas_Coord)(((double)(hh - oh)) * bi->align.y)); + evas_object_resize(obj, ow, oh); + yy += hh; + } + } + } + sd->changed = 0; +} + +/* FIXME: need to have min/max size calc routines */ +static void +_e_box_smart_extents_calcuate(E_Smart_Data *sd) +{ + Evas_List *l; + int minw, minh; + + sd->max.w = -1; /* max < 0 == unlimited */ + sd->max.h = -1; + + minw = 0; + minh = 0; + if (sd->homogenous) + { + for (l = sd->items; l; l = l->next) + { + E_Box_Item *bi; + Evas_Object *obj; + + obj = l->data; + bi = evas_object_data_get(obj, "e_box_data"); + if (sd->horizontal) + { + if (minh < bi->min.h) minh = bi->min.h; + if (minw < bi->min.w) minw = bi->min.w; + } + else + { + if (minw < bi->min.w) minw = bi->min.w; + if (minh < bi->min.h) minh = bi->min.h; + } + } + if (sd->horizontal) + { + minw *= evas_list_count(sd->items); + } + else + { + minh *= evas_list_count(sd->items); + } + } + else + { + for (l = sd->items; l; l = l->next) + { + E_Box_Item *bi; + Evas_Object *obj; + + obj = l->data; + bi = evas_object_data_get(obj, "e_box_data"); + if (sd->horizontal) + { + if (minh < bi->min.h) minh = bi->min.h; + minw += bi->min.w; + } + else + { + if (minw < bi->min.w) minw = bi->min.w; + minh += bi->min.h; + } + } + } + sd->min.w = minw; + sd->min.h = minh; +} + +static void +_e_box_smart_init(void) +{ + if (_e_smart) return; + _e_smart = evas_smart_new("e_box", + _e_box_smart_add, + _e_box_smart_del, + _e_box_smart_layer_set, + _e_box_smart_raise, + _e_box_smart_lower, + _e_box_smart_stack_above, + _e_box_smart_stack_below, + _e_box_smart_move, + _e_box_smart_resize, + _e_box_smart_show, + _e_box_smart_hide, + _e_box_smart_color_set, + _e_box_smart_clip_set, + _e_box_smart_clip_unset, + NULL); +} + +static void +_e_box_smart_add(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = calloc(1, sizeof(E_Smart_Data)); + if (!sd) return; + sd->obj = obj; + sd->x = 0; + sd->y = 0; + sd->w = 0; + sd->h = 0; + evas_object_smart_data_set(obj, sd); +} + +static void +_e_box_smart_del(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + while (sd->items) + { + Evas_Object *child; + + child = sd->items->data; + e_box_unpack(child); + } + free(sd); +} + +static void +_e_box_smart_layer_set(Evas_Object *obj, int layer) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = sd->items; l; l = l->next) + { + evas_object_layer_set(l->data, layer); + } + } +} + +static void +_e_box_smart_raise(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = evas_list_last(sd->items); l; l = l->prev) + { + evas_object_raise(l->data); + } + } +} + +static void +_e_box_smart_lower(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = sd->items; l; l = l->next) + { + evas_object_lower(l->data); + } + } +} + +static void +_e_box_smart_stack_above(Evas_Object *obj, Evas_Object *above) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = sd->items; l; l = l->next) + { + evas_object_stack_above(l->data, above); + } + } +} + +static void +_e_box_smart_stack_below(Evas_Object *obj, Evas_Object *below) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = evas_list_last(sd->items); l; l = l->prev) + { + evas_object_stack_below(l->data, below); + } + } +} + +static void +_e_box_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if ((x == sd->x) && (y == sd->y)) return; + sd->x = x; + sd->y = y; + sd->changed = 1; + _e_box_smart_reconfigure(sd); +} + +static void +_e_box_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if ((w == sd->w) && (h == sd->h)) return; + sd->w = w; + sd->h = h; + sd->changed = 1; + _e_box_smart_reconfigure(sd); +} + +static void +_e_box_smart_show(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +} + +static void +_e_box_smart_hide(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +} + +static void +_e_box_smart_color_set(Evas_Object *obj, int r, int g, int b, int a) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +} + +static void +_e_box_smart_clip_set(Evas_Object *obj, Evas_Object *clip) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = sd->items; l; l = l->next) + { + evas_object_clip_set(l->data, clip); + } + } +} + +static void +_e_box_smart_clip_unset(Evas_Object *obj) +{ + E_Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + + { + Evas_List *l; + + for (l = sd->items; l; l = l->next) + { + evas_object_clip_unset(l->data); + } + } +} diff --git a/src/bin/e_box.h b/src/bin/e_box.h new file mode 100644 index 000000000..9f998f338 --- /dev/null +++ b/src/bin/e_box.h @@ -0,0 +1,25 @@ +#ifndef E_BOX_H +#define E_BOX_H + +Evas_Object *e_box_add (Evas *evas); + +int e_box_freeze (Evas_Object *obj); +int e_box_thaw (Evas_Object *obj); +void e_box_orientation_set (Evas_Object *obj, int horizontal); +void e_box_homogenous_set (Evas_Object *obj, int homogenous); +int e_box_pack_start (Evas_Object *obj, Evas_Object *child); +int e_box_pack_end (Evas_Object *obj, Evas_Object *child); +int e_box_pack_before (Evas_Object *obj, Evas_Object *child, Evas_Object *before); +int e_box_pack_after (Evas_Object *obj, Evas_Object *child, Evas_Object *after); +int e_box_pack_count_get (Evas_Object *obj); +Evas_Object *e_box_pack_object_nth (Evas_Object *obj, int n); +Evas_Object *e_box_pack_object_first (Evas_Object *obj); +Evas_Object *e_box_pack_object_last (Evas_Object *obj); +void e_box_pack_options_set (Evas_Object *obj, int fill_w, int fill_h, int expand_w, int expand_h, double align_x, double align_y, Evas_Coord min_w, Evas_Coord min_h, Evas_Coord max_w, Evas_Coord max_h); +void e_box_unpack (Evas_Object *obj); +void e_box_min_size_get (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); +void e_box_max_size_get (Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh); +void e_box_align_get (Evas_Object *obj, double *ax, double *ay); +void e_box_align_set (Evas_Object *obj, double ax, double ay); + +#endif diff --git a/src/bin/e_canvas.c b/src/bin/e_canvas.c new file mode 100644 index 000000000..2f36a7e49 --- /dev/null +++ b/src/bin/e_canvas.c @@ -0,0 +1,75 @@ +#include "e.h" + +/* local subsystem functions */ + +/* local subsystem globals */ +static Evas_List *_e_canvases = NULL; + +void +e_canvas_add(Ecore_Evas *ee) +{ + Evas *e; + + _e_canvases = evas_list_prepend(_e_canvases, ee); + e = ecore_evas_get(ee); + evas_image_cache_set(e, e_config_val_image_cache * 1024); + evas_font_cache_set(e, e_config_val_font_cache * 1024); +// evas_image_cache_flush(e); +// evas_image_cache_reload(e); +} + +void +e_canvas_del(Ecore_Evas *ee) +{ + _e_canvases = evas_list_remove(_e_canvases, ee); +} + +void +e_canvas_recache(void) +{ + Evas_List *l; + + for (l = _e_canvases; l; l = l->next) + { + Ecore_Evas *ee; + Evas *e; + + ee = l->data; + e = ecore_evas_get(ee); + evas_image_cache_set(e, e_config_val_image_cache * 1024); + evas_font_cache_set(e, e_config_val_font_cache * 1024); + } +} + +void +e_canvas_cache_flush(void) +{ + Evas_List *l; + + for (l = _e_canvases; l; l = l->next) + { + Ecore_Evas *ee; + Evas *e; + + ee = l->data; + e = ecore_evas_get(ee); + evas_image_cache_flush(e); + evas_font_cache_flush(e); + } +} + +void +e_canvas_cache_reload(void) +{ + Evas_List *l; + + for (l = _e_canvases; l; l = l->next) + { + Ecore_Evas *ee; + Evas *e; + + ee = l->data; + e = ecore_evas_get(ee); + evas_image_cache_reload(e); + } +} diff --git a/src/bin/e_canvas.h b/src/bin/e_canvas.h new file mode 100644 index 000000000..00f3331d2 --- /dev/null +++ b/src/bin/e_canvas.h @@ -0,0 +1,10 @@ +#ifndef E_CANVAS_H +#define E_CANVAS_H + +void e_canvas_add(Ecore_Evas *ee); +void e_canvas_del(Ecore_Evas *ee); +void e_canvas_recache(void); +void e_canvas_cache_flush(void); +void e_canvas_cache_reload(void); + +#endif diff --git a/src/bin/e_config.c b/src/bin/e_config.c new file mode 100644 index 000000000..705e3d3ae --- /dev/null +++ b/src/bin/e_config.c @@ -0,0 +1,248 @@ +#include "e.h" + +/* TODO List + * + * * setting up a new config value and a listener callback is too long winded - need to have helper funcs and macros do this so it's more like 1 line per new config value or 2 + */ + +#if ((E17_PROFILE >= LOWRES_PDA) && (E17_PROFILE <= HIRES_PDA)) +#define DEF_MENUCLICK 1.25 +#else +#define DEF_MENUCLICK 0.25 +#endif + +char *e_config_val_desktop_default_background = NULL; +double e_config_val_menus_scroll_speed = 1000.0; +double e_config_val_menus_fast_mouse_move_thresthold = 500.0; +double e_config_val_menus_click_drag_timeout = DEF_MENUCLICK; +double e_config_val_framerate = 30.0; +int e_config_val_image_cache = 2048; +int e_config_val_font_cache = 512; + +/* local subsystem functions */ +static void _e_config_save_cb(void *data); + +static int _e_config_listener_desktop_default_background(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_menus_scroll_speed(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_menus_fast_mouse_move_threshold(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_menus_click_drag_timeout(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_framerate(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_image_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data); +static int _e_config_listener_font_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data); + +/* local subsystem globals */ +static Ecore_Job *_e_config_save_job = NULL; + +/* externally accessible functions */ +int +e_config_init(void) +{ + int ret; + + ecore_config_init("e"); + + ecore_config_string_create + ("e.desktop.default.background", + PACKAGE_DATA_DIR"/data/themes/default.eet", + 'b', "default-background", + "The default background for desktops without a custom background"); + ecore_config_float_create_bound + ("e.menus.scroll_speed", + 1000.0, 1.0, 20000.0, 10.0, + 0, "menus-scroll-speed", + "Pixels per second menus scroll around the screen"); + ecore_config_float_create_bound + ("e.menus.fast_mouse_move_threshold", + 300.0, 1.0, 2000.0, 1.0, + 0, "menus-scroll-speed", + "Pixels per second menus scroll around the screen"); + ecore_config_float_create_bound + ("e.menus.click_drag_timeout", + DEF_MENUCLICK, 0.0, 10.0, 0.01, + 0, "menus-click-drag-timeout", + "Seconds after a mouse press when a release will not hide the menu"); + ecore_config_float_create_bound + ("e.framerate", + 30.0, 1.0, 200.0, 0.1, + 0, "framerate", + "A hint at the framerate (in frames per second) Enlightenment should try and animate at"); + ecore_config_int_create_bound + ("e.image-cache", + 2048, 0, 32768, 1, + 0, "image-cache", + "The mount of memory (in Kb) to use as a sepculative image cache"); + ecore_config_int_create_bound + ("e.font-cache", + 512, 0, 4096, 1, + 0, "font-cache", + "The mount of memory (in Kb) to use as a sepculative font cache"); + + ecore_config_load(); + ret = ecore_config_args_parse(); + + e_config_val_desktop_default_background = + ecore_config_string_get("e.desktop.default.background"); + ecore_config_listen("e.desktop.default.background", + "e.desktop.default.background", + _e_config_listener_desktop_default_background, + 0, NULL); + e_config_val_menus_scroll_speed = + ecore_config_float_get("e.menus.scroll_speed"); + ecore_config_listen("e.menus.scroll_speed", + "e.menus.scroll_speed", + _e_config_listener_menus_scroll_speed, + 0, NULL); + e_config_val_menus_fast_mouse_move_thresthold = + ecore_config_float_get("e.menus.fast_mouse_move_threshold"); + ecore_config_listen("e.menus.fast_mouse_move_threshold", + "e.menus.fast_mouse_move_threshold", + _e_config_listener_menus_fast_mouse_move_threshold, + 0, NULL); + e_config_val_menus_click_drag_timeout = + ecore_config_float_get("e.menus.click_drag_timeout"); + ecore_config_listen("e.menus.click_drag_timeout", + "e.menus.click_drag_timeout", + _e_config_listener_menus_click_drag_timeout, + 0, NULL); + e_config_val_framerate = + ecore_config_float_get("e.framerate"); + if (e_config_val_framerate <= 0.0) e_config_val_framerate = 30.0; + ecore_config_listen("e.framerate", + "e.framerate", + _e_config_listener_framerate, + 0, NULL); + e_config_val_image_cache = + ecore_config_int_get("e.image-cache"); + ecore_config_listen("e.image-cache", + "e.image-cache", + _e_config_listener_image_cache, + 0, NULL); + e_config_val_font_cache = + ecore_config_int_get("e.font-cache"); + ecore_config_listen("e.font-cache", + "e.font-cache", + _e_config_listener_font_cache, + 0, NULL); + return 1; +} + +int +e_config_shutdown(void) +{ + /* FIXME: unset listeners */ + return 1; +} + +int +e_config_save(void) +{ + if (_e_config_save_job) + { + ecore_job_del(_e_config_save_job); + _e_config_save_job = NULL; + } + return ecore_config_save(); +} + +void +e_config_save_queue(void) +{ + if (_e_config_save_job) ecore_job_del(_e_config_save_job); + _e_config_save_job = ecore_job_add(_e_config_save_cb, NULL); +} + +/* local subsystem functions */ +static void +_e_config_save_cb(void *data) +{ + _e_config_save_job = NULL; + e_module_save_all(); + e_config_save(); +} + +static int +_e_config_listener_desktop_default_background(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + Evas_List *managers, *l; + + if (e_config_val_desktop_default_background) + free(e_config_val_desktop_default_background); + e_config_val_desktop_default_background = + ecore_config_string_get("e.desktop.default.background"); + managers = e_manager_list(); + for (l = managers; l; l = l->next) + { + Evas_List *ll; + E_Manager *man; + + man = l->data; + for (ll = man->containers; ll; ll = ll->next) + { + E_Container *con; + + con = ll->data; + e_container_bg_reconfigure(con); + } + } + return 1; +} + +static int +_e_config_listener_menus_scroll_speed(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_menus_scroll_speed = + ecore_config_float_get("e.menus.scroll_speed"); + return 1; +} + +static int +_e_config_listener_menus_fast_mouse_move_threshold(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_menus_fast_mouse_move_thresthold = + ecore_config_float_get("e.menus.fast_mouse_move_threshold"); + return 1; +} + +static int +_e_config_listener_menus_click_drag_timeout(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_menus_click_drag_timeout = + ecore_config_float_get("e.menus.click_drag_timeout"); + return 1; +} + +static int +_e_config_listener_framerate(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_framerate = + ecore_config_float_get("e.framerate"); + if (e_config_val_framerate <= 0.0) e_config_val_framerate = 30.0; + edje_frametime_set(1.0 / e_config_val_framerate); + return 1; +} + +static int +_e_config_listener_image_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_image_cache = + ecore_config_int_get("e.image-cache"); + ecore_config_listen("e.image-cache", + "e.image-cache", + _e_config_listener_image_cache, + 0, NULL); + e_canvas_recache(); + return 1; +} + +static int +_e_config_listener_font_cache(const char *key, const Ecore_Config_Type type, const int tag, void *data) +{ + e_config_val_font_cache = + ecore_config_int_get("e.font-cache"); + ecore_config_listen("e.font-cache", + "e.font-cache", + _e_config_listener_font_cache, + 0, NULL); + e_canvas_recache(); + return 1; +} diff --git a/src/bin/e_config.h b/src/bin/e_config.h new file mode 100644 index 000000000..14d8f0657 --- /dev/null +++ b/src/bin/e_config.h @@ -0,0 +1,18 @@ +#ifndef E_CONFIG_H +#define E_CONFIG_H + +int e_config_init(void); +int e_config_shutdown(void); + +int e_config_save(void); +void e_config_save_queue(void); + +extern char *e_config_val_desktop_default_background; +extern double e_config_val_menus_scroll_speed; +extern double e_config_val_menus_fast_mouse_move_thresthold; +extern double e_config_val_menus_click_drag_timeout; +extern double e_config_val_framerate; +extern int e_config_val_image_cache; +extern int e_config_val_font_cache; + +#endif diff --git a/src/bin/e_container.c b/src/bin/e_container.c new file mode 100644 index 000000000..1ace0963f --- /dev/null +++ b/src/bin/e_container.c @@ -0,0 +1,536 @@ +#include "e.h" + +/* TODO List: + * + * * fix shape callbacks to be able to be safely deleted + */ + +/* local subsystem functions */ +static void _e_container_free(E_Container *con); + +static void _e_container_cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _e_container_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _e_container_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info); +static void _e_container_cb_bg_ecore_evas_resize(Ecore_Evas *ee); + +static void _e_container_shape_del(E_Container_Shape *es); +static void _e_container_shape_free(E_Container_Shape *es); +static void _e_container_shape_change_call(E_Container_Shape *es, E_Container_Shape_Change ch); + +/* externally accessible functions */ +int +e_container_init(void) +{ + return 1; +} + +int +e_container_shutdown(void) +{ + return 1; +} + +E_Container * +e_container_new(E_Manager *man) +{ + E_Container *con; + Ecore_Event_Handler *h; + + con = E_OBJECT_ALLOC(E_Container, _e_container_free); + if (!con) return NULL; + con->manager = man; + e_object_ref(E_OBJECT(con->manager)); + con->manager->containers = evas_list_append(con->manager->containers, con); + con->w = con->manager->w; + con->h = con->manager->h; + con->win = ecore_x_window_override_new(con->manager->win, con->x, con->y, con->w, con->h); + ecore_x_icccm_title_set(con->win, "Enlightenment Container"); + con->bg_ecore_evas = ecore_evas_software_x11_new(NULL, con->win, 0, 0, con->w, con->h); + e_canvas_add(con->bg_ecore_evas); + con->bg_evas = ecore_evas_get(con->bg_ecore_evas); + con->bg_win = ecore_evas_software_x11_window_get(con->bg_ecore_evas); + ecore_evas_name_class_set(con->bg_ecore_evas, "E", "Background_Window"); + ecore_evas_title_set(con->bg_ecore_evas, "Enlightenment Background"); + ecore_evas_avoid_damage_set(con->bg_ecore_evas, 1); + ecore_evas_show(con->bg_ecore_evas); + e_path_evas_append(path_fonts, con->bg_evas); + + e_pointer_container_set(con); + + if (1) /* for now ALWAYS on - but later maybe a config option */ + { + Evas_Object *o; + + o = evas_object_rectangle_add(con->bg_evas); + con->bg_blank_object = 0; + evas_object_layer_set(o, -100); + evas_object_move(o, 0, 0); + evas_object_resize(o, con->w, con->h); + evas_object_color_set(o, 255, 255, 255, 255); + evas_object_show(o); + + o = edje_object_add(con->bg_evas); + con->bg_object = o; + evas_object_layer_set(o, -1); + evas_object_name_set(o, "desktop/background"); + evas_object_data_set(o, "e_container", con); + evas_object_move(o, 0, 0); + evas_object_resize(o, con->w, con->h); + edje_object_file_set(o, + e_config_val_desktop_default_background, + "desktop/background"); + evas_object_show(o); + + o = evas_object_rectangle_add(con->bg_evas); + con->bg_event_object = 0; + evas_object_move(o, 0, 0); + evas_object_resize(o, con->w, con->h); + evas_object_color_set(o, 255, 255, 255, 0); + evas_object_show(o); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_container_cb_bg_mouse_down, con); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_container_cb_bg_mouse_up, con); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_container_cb_bg_mouse_move, con); + + ecore_evas_callback_resize_set(con->bg_ecore_evas, _e_container_cb_bg_ecore_evas_resize); + } + return con; +} + +void +e_container_show(E_Container *con) +{ + E_OBJECT_CHECK(con); + if (con->visible) return; + ecore_x_window_show(con->win); + con->visible = 1; +} + +void +e_container_hide(E_Container *con) +{ + E_OBJECT_CHECK(con); + if (!con->visible) return; + ecore_x_window_hide(con->win); + con->visible = 0; +} + +void +e_container_move(E_Container *con, int x, int y) +{ + E_OBJECT_CHECK(con); + if ((x == con->x) && (y == con->y)) return; + con->x = x; + con->y = y; + ecore_x_window_move(con->win, con->x, con->y); +} + +void +e_container_resize(E_Container *con, int w, int h) +{ + E_OBJECT_CHECK(con); + if ((w == con->w) && (h == con->h)) return; + con->w = w; + con->h = h; + ecore_x_window_resize(con->win, con->w, con->h); + ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); +} + +void +e_container_move_resize(E_Container *con, int x, int y, int w, int h) +{ + E_OBJECT_CHECK(con); + if ((x == con->x) && (y == con->y) && (w == con->w) && (h == con->h)) return; + con->x = x; + con->y = y; + con->w = w; + con->h = h; + ecore_x_window_move_resize(con->win, con->x, con->y, con->w, con->h); + ecore_evas_resize(con->bg_ecore_evas, con->w, con->h); +} + +void +e_container_raise(E_Container *con) +{ + E_OBJECT_CHECK(con); + ecore_x_window_raise(con->win); +} + +void +e_container_lower(E_Container *con) +{ + E_OBJECT_CHECK(con); + ecore_x_window_lower(con->win); +} + +void +e_container_bg_reconfigure(E_Container *con) +{ + Evas_Object *o; + + E_OBJECT_CHECK(con); + o = con->bg_object; + evas_object_hide(o); + edje_object_file_set(o, + e_config_val_desktop_default_background, + "desktop/background"); + evas_object_layer_set(o, -1); + evas_object_show(o); +} + + + +E_Container_Shape * +e_container_shape_add(E_Container *con) +{ + E_Container_Shape *es; + + E_OBJECT_CHECK_RETURN(con, NULL); + + es = E_OBJECT_ALLOC(E_Container_Shape, _e_container_shape_free); + E_OBJECT_DEL_SET(es, _e_container_shape_del); + es->con = con; + con->shapes = evas_list_append(con->shapes, es); + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_ADD); + return es; +} + +void +e_container_shape_show(E_Container_Shape *es) +{ + E_OBJECT_CHECK(es); + if (es->visible) return; + es->visible = 1; + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_SHOW); +} + +void +e_container_shape_hide(E_Container_Shape *es) +{ + E_OBJECT_CHECK(es); + if (!es->visible) return; + es->visible = 0; + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_HIDE); +} + +void +e_container_shape_move(E_Container_Shape *es, int x, int y) +{ + E_OBJECT_CHECK(es); + if ((es->x == x) && (es->y == y)) return; + es->x = x; + es->y = y; + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_MOVE); +} + +void +e_container_shape_resize(E_Container_Shape *es, int w, int h) +{ + E_OBJECT_CHECK(es); + if (w < 1) w = 1; + if (h < 1) h = 1; + if ((es->w == w) && (es->h == h)) return; + es->w = w; + es->h = h; + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_RESIZE); +} + +Evas_List * +e_container_shape_list_get(E_Container *con) +{ + E_OBJECT_CHECK_RETURN(con, NULL); + return con->shapes; +} + +void +e_container_shape_geometry_get(E_Container_Shape *es, int *x, int *y, int *w, int *h) +{ + E_OBJECT_CHECK(es); + if (x) *x = es->x; + if (y) *y = es->y; + if (w) *w = es->w; + if (h) *h = es->h; +} + +E_Container * +e_container_shape_container_get(E_Container_Shape *es) +{ + E_OBJECT_CHECK_RETURN(es, NULL); + return es->con; +} + +void +e_container_shape_change_callback_add(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data) +{ + E_Container_Shape_Callback *cb; + + E_OBJECT_CHECK(con); + cb = calloc(1, sizeof(E_Container_Shape_Callback)); + if (!cb) return; + cb->func = func; + cb->data = data; + con->shape_change_cb = evas_list_append(con->shape_change_cb, cb); +} + +void +e_container_shape_change_callback_del(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data) +{ + Evas_List *l; + + /* FIXME: if we call this from within a callback we are in trouble */ + E_OBJECT_CHECK(con); + for (l = con->shape_change_cb; l; l = l->next) + { + E_Container_Shape_Callback *cb; + + cb = l->data; + if ((cb->func == func) && (cb->data == data)) + { + con->shape_change_cb = evas_list_remove_list(con->shape_change_cb, l); + free(cb); + return; + } + } +} + +Evas_List * +e_container_shape_rects_get(E_Container_Shape *es) +{ + E_OBJECT_CHECK_RETURN(es, NULL); + return es->shape; +} + + + + + +/* local subsystem functions */ +static void +_e_container_free(E_Container *con) +{ + while (con->clients) e_object_del(E_OBJECT(con->clients->data)); + con->manager->containers = evas_list_remove(con->manager->containers, con); + e_canvas_del(con->bg_ecore_evas); + ecore_evas_free(con->bg_ecore_evas); + ecore_x_window_del(con->win); + e_object_unref(E_OBJECT(con->manager)); + free(con); +} + +static void +_e_container_cb_bg_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + E_Container *con; + Evas_Event_Mouse_Down *ev; + + ev = (Evas_Event_Mouse_Down *)event_info; + con = data; + if (ev->button == 1) + { + char buf[4096]; + char *homedir; + + homedir = e_user_homedir_get(); + if (homedir) + { + E_Menu *m; + + snprintf(buf, sizeof(buf), "%s/.e/e/applications/favorite", homedir); + m = e_int_menus_apps_new(buf, 1); + e_menu_activate_mouse(m, con, ev->output.x, ev->output.y, 1, 1, + E_MENU_POP_DIRECTION_DOWN); + e_util_container_fake_mouse_up_all_later(con); + free(homedir); + } + } + else if (ev->button == 2) + { + static E_Menu *m = NULL; + static E_Menu *m1 = NULL; + static E_Menu *m2 = NULL; + + if (!m) + { + E_Menu_Item *mi; + + m1 = e_menu_new(); + mi = e_menu_item_new(m1); + e_menu_item_label_set(mi, "Submenu 1 Item 1"); + mi = e_menu_item_new(m1); + e_menu_item_label_set(mi, "Submenu 1 Item 2"); + mi = e_menu_item_new(m1); + e_menu_item_label_set(mi, "Submenu 1 Item 3"); + + m2 = e_menu_new(); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "Flimstix"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "Shub Shub"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "Gah I thought I'd just make this long"); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "And more"); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "Getting stenchy"); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "Ich bin ein Fisch"); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "PONG"); + mi = e_menu_item_new(m2); + e_menu_item_label_set(mi, "The last word"); + + m = e_menu_new(); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "First Menu Item"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "Short"); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "A very long menu item is here to test with"); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "There is no spoon!"); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "Icon: Pants On."); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "First Submenu"); + e_menu_item_submenu_set(mi, m1); + mi = e_menu_item_new(m); + e_menu_item_separator_set(mi, 1); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "Other side of a separator"); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, "A Submenu"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + e_menu_item_submenu_set(mi, m2); + mi = e_menu_item_new(m); + e_menu_item_check_set(mi, 1); + e_menu_item_label_set(mi, "Check 1"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m); + e_menu_item_check_set(mi, 1); + e_menu_item_label_set(mi, "Check 2"); + mi = e_menu_item_new(m); + e_menu_item_check_set(mi, 1); + e_menu_item_label_set(mi, "Check 3"); + mi = e_menu_item_new(m); + e_menu_item_separator_set(mi, 1); + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + e_menu_item_label_set(mi, "Radio 1 Group 1"); + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + e_menu_item_label_set(mi, "Radio 2 Group 1"); + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + e_menu_item_label_set(mi, "Radio 3 Group 1"); + e_menu_item_icon_file_set(mi, + e_path_find(path_images, "e.png")); + mi = e_menu_item_new(m); + e_menu_item_separator_set(mi, 1); + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + e_menu_item_label_set(mi, "Radio 1 Group 2"); + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + e_menu_item_label_set(mi, "Radio 2 Group 2"); + } + e_menu_activate_mouse(m, con, ev->output.x, ev->output.y, 1, 1, + E_MENU_POP_DIRECTION_DOWN); + /* fake the up event as we will now grab the mouse to the menu */ + e_util_container_fake_mouse_up_all_later(con); + } + else if (ev->button == 3) + { + E_Menu *m; + + m = e_int_menus_about_new(); + e_menu_activate_mouse(m, con, ev->output.x, ev->output.y, 1, 1, + E_MENU_POP_DIRECTION_DOWN); + e_util_container_fake_mouse_up_all_later(con); + } +} + +static void +_e_container_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + E_Container *con; + Evas_Event_Mouse_Up *ev; + + ev = (Evas_Event_Mouse_Up *)event_info; + con = data; +} + +static void +_e_container_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_info) +{ + E_Container *con; + Evas_Event_Mouse_Move *ev; + + ev = (Evas_Event_Mouse_Move *)event_info; + con = data; +/* printf("move %i %i\n", ev->cur.output.x, ev->cur.output.y); */ +} + +static void +_e_container_cb_bg_ecore_evas_resize(Ecore_Evas *ee) +{ + Evas *evas; + Evas_Object *o; + E_Container *con; + Evas_Coord w, h; + + evas = ecore_evas_get(ee); + evas_output_viewport_get(evas, NULL, NULL, &w, &h); + o = evas_object_name_find(evas, "desktop/background"); + con = evas_object_data_get(o, "e_container"); + evas_object_resize(con->bg_object, w, h); + evas_object_resize(con->bg_event_object, w, h); +} + +static void +_e_container_shape_del(E_Container_Shape *es) +{ + _e_container_shape_change_call(es, E_CONTAINER_SHAPE_DEL); +} + +static void +_e_container_shape_free(E_Container_Shape *es) +{ + es->con->shapes = evas_list_remove(es->con->shapes, es); + while (es->shape) + { + E_Rect *r; + + r = es->shape->data; + es->shape = evas_list_remove_list(es->shape, es->shape); + free(r); + } + free(es); +} + +static void +_e_container_shape_change_call(E_Container_Shape *es, E_Container_Shape_Change ch) +{ + Evas_List *l; + + for (l = es->con->shape_change_cb; l; l = l->next) + { + E_Container_Shape_Callback *cb; + + cb = l->data; + cb->func(cb->data, es, ch); + } +} diff --git a/src/bin/e_container.h b/src/bin/e_container.h new file mode 100644 index 000000000..15146833a --- /dev/null +++ b/src/bin/e_container.h @@ -0,0 +1,81 @@ +#ifndef E_CONTAINER_H +#define E_CONTAINER_H + +typedef enum _E_Container_Shape_Change +{ + E_CONTAINER_SHAPE_ADD, + E_CONTAINER_SHAPE_DEL, + E_CONTAINER_SHAPE_SHOW, + E_CONTAINER_SHAPE_HIDE, + E_CONTAINER_SHAPE_MOVE, + E_CONTAINER_SHAPE_RESIZE, + E_CONTAINER_SHAPE_RECTS +} E_Container_Shape_Change; + +typedef struct _E_Container E_Container; +typedef struct _E_Container_Shape E_Container_Shape; +typedef struct _E_Container_Shape_Callback E_Container_Shape_Callback; + +struct _E_Container +{ + E_Object e_obj_inherit; + + Ecore_X_Window win; + int x, y, w, h; + char visible : 1; + E_Manager *manager; + + Ecore_Evas *bg_ecore_evas; + Evas *bg_evas; + Ecore_X_Window bg_win; + Evas_Object *bg_blank_object; + Evas_Object *bg_object; + Evas_Object *bg_event_object; + + Evas_List *shapes; + Evas_List *shape_change_cb; + Evas_List *clients; +}; + +struct _E_Container_Shape +{ + E_Object e_obj_inherit; + + E_Container *con; + int x, y, w, h; + unsigned char visible : 1; + Evas_List *shape; +}; + +struct _E_Container_Shape_Callback +{ + void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch); + void *data; +}; + +int e_container_init(void); +int e_container_shutdown(void); + +E_Container *e_container_new(E_Manager *man); +void e_container_show(E_Container *con); +void e_container_hide(E_Container *con); +void e_container_move(E_Container *con, int x, int y); +void e_container_resize(E_Container *con, int w, int h); +void e_container_move_resize(E_Container *con, int x, int y, int w, int h); +void e_container_raise(E_Container *con); +void e_container_lower(E_Container *con); +void e_container_bg_reconfigure(E_Container *con); + +E_Container_Shape *e_container_shape_add(E_Container *con); +void e_container_shape_show(E_Container_Shape *es); +void e_container_shape_hide(E_Container_Shape *es); +void e_container_shape_move(E_Container_Shape *es, int x, int y); +void e_container_shape_resize(E_Container_Shape *es, int w, int h); +Evas_List *e_container_shape_list_get(E_Container *con); +void e_container_shape_geometry_get(E_Container_Shape *es, int *x, int *y, int *w, int *h); +E_Container *e_container_shape_container_get(E_Container_Shape *es); +void e_container_shape_change_callback_add(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data); +void e_container_shape_change_callback_del(E_Container *con, void (*func) (void *data, E_Container_Shape *es, E_Container_Shape_Change ch), void *data); +Evas_List *e_container_shape_rects_get(E_Container_Shape *es); + +#endif diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c new file mode 100644 index 000000000..1c816a6a0 --- /dev/null +++ b/src/bin/e_desk.c @@ -0,0 +1 @@ +#include "e.h" diff --git a/src/bin/e_desk.h b/src/bin/e_desk.h new file mode 100644 index 000000000..10410e6f5 --- /dev/null +++ b/src/bin/e_desk.h @@ -0,0 +1,4 @@ +#ifndef E_DESK_H +#define E_DESK_H + +#endif diff --git a/src/bin/e_error.c b/src/bin/e_error.c new file mode 100644 index 000000000..af70192c9 --- /dev/null +++ b/src/bin/e_error.c @@ -0,0 +1,255 @@ +#include "e.h" + +/* TODO List: + * + * * edjify error dialogs if edje data can be found for them + * * current gui dialg needs to resize to fit contents if they are bigger + */ + +/* local subsystem functions */ +static void _e_error_message_show_x(char *txt); + +static void _e_error_cb_ok_down(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_error_cb_ok_up(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _e_error_cb_job_ecore_evas_free(void *data); + +/* local subsystem globals */ +static int error_gui = 0; + +/* externally accessible functions */ +void +e_error_message_show_internal(char *txt) +{ + printf("_______ _______\n" + "|:::::| Enlightenment Error |:::::|\n" + "~~~~~~~ ~~~~~~~\n" + "%s\n", + txt); + if (error_gui) _e_error_message_show_x(txt); +} + +void +e_error_dialog_show_internal(char *title, char *txt) +{ + Evas_List *l; + E_Manager *man; + + l = e_manager_list(); + if (!l) return; + man = l->data; + e_error_message_manager_show(man, title, txt); +} + +void +e_error_gui_set(int on) +{ + error_gui = on; +} + +void +e_error_message_manager_show(E_Manager *man, char *title, char *txt) +{ + Ecore_Evas *ee; + Evas *e; + int error_w, error_h; + Evas_List *l, *shapelist = NULL; + + error_w = 400; + error_h = 200; + ee = ecore_evas_software_x11_new(NULL, man->win, + (man->w - error_w) / 2, (man->h - error_h) / 2, + error_w, error_h); + e_canvas_add(ee); + for (l = man->containers; l; l = l->next) + { + E_Container *con; + E_Container_Shape *es; + int x, y, w, h; + + con = l->data; + ecore_evas_geometry_get(ee, &x, &y, &w, &h); + es = e_container_shape_add(con); + e_container_shape_move(es, x, y); + e_container_shape_resize(es, w, h); + e_container_shape_show(es); + shapelist = evas_list_append(shapelist, es); + } + ecore_evas_data_set(ee, "shapes", shapelist); + ecore_evas_name_class_set(ee, "E", "Low_Level_Dialog"); + ecore_evas_title_set(ee, "Enlightenment: Low Level Dialog"); + ecore_evas_show(ee); + e = ecore_evas_get(ee); + e_path_evas_append(path_fonts, e); + e_pointer_ecore_evas_set(ee); + + { + Evas_Object *o; + Evas_Coord tw, th; + char *newstr; + + o = evas_object_image_add(e); + evas_object_image_file_set(o, e_path_find(path_images, "error_bg.png"), NULL); + evas_object_move(o, 0, 0); + evas_object_image_fill_set(o, 0, 0, error_w, error_h); + evas_object_resize(o, error_w, error_h); + evas_object_image_border_set(o, 3, 3, 3, 3); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_image_add(e); + evas_object_image_file_set(o, e_path_find(path_images, "e.png"), NULL); + evas_object_move(o, 16, 16); + evas_object_resize(o, 64, 64); + evas_object_image_fill_set(o, 0, 0, 64, 64); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_text_add(e); + evas_object_color_set(o, 255, 255, 255, 128); + evas_object_text_font_set(o, "Vera-Bold", 12); + evas_object_text_text_set(o, title); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, + (16 + 64 + 16 + (((400 - (16 + 64 + 16 + 16)) - tw) / 2)) + 1, + (16 + ((64 - th) / 2)) + 1); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_text_add(e); + evas_object_color_set(o, 0, 0, 0, 255); + evas_object_text_font_set(o, "Vera-Bold", 12); + evas_object_text_text_set(o, title); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, + 16 + 64 + 16 + (((400 - (16 + 64 + 16 + 16)) - tw) / 2), + 16 + ((64 - th) / 2)); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + newstr = strdup(txt); + if (newstr) + { + char *p; + Evas_Coord y; + + y = 16 + 64 + 16; + for (p = newstr; p;) + { + char *pp; + + pp = strchr(p, '\n'); + if (pp) *pp = 0; + o = evas_object_text_add(e); + evas_object_color_set(o, 255, 255, 255, 128); + evas_object_text_font_set(o, "Vera", 10); + evas_object_text_text_set(o, p); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, 16 + 1, y + 1); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_text_add(e); + evas_object_color_set(o, 0, 0, 0, 255); + evas_object_text_font_set(o, "Vera", 10); + evas_object_text_text_set(o, p); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, 16, y); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + y += th; + if (pp) p = pp + 1; + else p = NULL; + } + free(newstr); + } + + o = evas_object_image_add(e); + evas_object_image_file_set(o, e_path_find(path_images, "button_out.png"), NULL); + evas_object_move(o, (error_w - 64) / 2, error_h - 16 - 32); + evas_object_resize(o, 64, 32); + evas_object_image_fill_set(o, 0, 0, 64, 32); + evas_object_image_border_set(o, 8, 8, 8, 8); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_error_cb_ok_down, ee); + evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_error_cb_ok_up, ee); + evas_object_show(o); + + o = evas_object_text_add(e); + evas_object_color_set(o, 255, 255, 255, 128); + evas_object_text_font_set(o, "Vera-Bold", 12); + evas_object_text_text_set(o, "OK"); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, ((error_w - tw) / 2) + 1, (error_h - 16 - 32 + ((32 - th) / 2)) + 1); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_text_add(e); + evas_object_color_set(o, 0, 0, 0, 255); + evas_object_text_font_set(o, "Vera-Bold", 12); + evas_object_text_text_set(o, "OK"); + evas_object_geometry_get(o, NULL, NULL, &tw, &th); + evas_object_move(o, (error_w - tw) / 2, error_h - 16 - 32 + ((32 - th) / 2)); + evas_object_pass_events_set(o, 1); + evas_object_show(o); + + o = evas_object_rectangle_add(e); + evas_object_name_set(o, "allocated"); + } +} + +/* local subsystem functions */ +static void +_e_error_message_show_x(char *txt) +{ + e_error_dialog_show_internal("Enlightenment: Error!", txt); +} + +static void +_e_error_cb_ok_down(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev; + Ecore_Evas *ee; + + ev = event_info; + if (ev->button != 1) return; + ee = data; + evas_object_image_file_set(obj, e_path_find(path_images, "button_in.png"), NULL); +} + +static void +_e_error_cb_ok_up(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Up *ev; + Ecore_Evas *ee; + Evas_Object *o; + + ev = event_info; + if (ev->button != 1) return; + ee = data; + evas_object_image_file_set(obj, e_path_find(path_images, "button_out.png"), NULL); + o = evas_object_name_find(ecore_evas_get(ee), "allocated"); + if (o) + { + evas_object_del(o); + ecore_job_add(_e_error_cb_job_ecore_evas_free, ee); + } +} + +static void +_e_error_cb_job_ecore_evas_free(void *data) +{ + Ecore_Evas *ee; + Evas_List *shapelist; + + ee = data; + shapelist = ecore_evas_data_get(ee, "shapes"); + while (shapelist) + { + E_Container_Shape *es; + + es = shapelist->data; + shapelist = evas_list_remove_list(shapelist, shapelist); + e_object_del(E_OBJECT(es)); + } + e_canvas_del(ee); + ecore_evas_free(ee); +} diff --git a/src/bin/e_error.h b/src/bin/e_error.h new file mode 100644 index 000000000..0e1611281 --- /dev/null +++ b/src/bin/e_error.h @@ -0,0 +1,27 @@ +#ifndef E_ERROR_H +#define E_ERROR_H + +#define print0(x, args...) x ,print1(## args) +#define e_error_message_show(args...) \ +{ \ + char __tmpbuf[4096]; \ + \ + snprintf(__tmpbuf, sizeof(__tmpbuf), ##args); \ + e_error_message_show_internal(__tmpbuf); \ +} + +#define e_error_dialog_show(title, args...) \ +{ \ + char __tmpbuf[4096]; \ + \ + snprintf(__tmpbuf, sizeof(__tmpbuf), ##args); \ + e_error_dialog_show_internal(title, __tmpbuf); \ +} + +void e_error_message_show_internal(char *txt); +void e_error_dialog_show_internal(char *title, char *txt); + +void e_error_gui_set(int on); +void e_error_message_manager_show(E_Manager *man, char *title, char *txt); + +#endif diff --git a/src/bin/e_file.c b/src/bin/e_file.c new file mode 100644 index 000000000..5be651d8e --- /dev/null +++ b/src/bin/e_file.c @@ -0,0 +1,204 @@ +#include "e.h" +#include <dirent.h> + +/* externally accessible functions */ +time_t +e_file_mod_time(char *file) +{ + struct stat st; + + if (stat(file, &st) < 0) return 0; + return st.st_mtime; +} + +int +e_file_exists(char *file) +{ + struct stat st; + + if (stat(file, &st) < 0) return 0; + return 1; +} + +int +e_file_is_dir(char *file) +{ + struct stat st; + + if (stat(file, &st) < 0) return 0; + if (S_ISDIR(st.st_mode)) return 1; + return 0; +} + +static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; + +int +e_file_mkdir(char *dir) +{ + if (mkdir(dir, default_mode) < 0) return 0; + return 1; +} + +int +e_file_mkpath(char *path) +{ + char ss[PATH_MAX]; + int i, ii; + + ss[0] = 0; + i = 0; + ii = 0; + while (path[i]) + { + if (ii == sizeof(ss) - 1) return 0; + ss[ii++] = path[i]; + ss[ii] = 0; + if (path[i] == '/') + { + if (!e_file_is_dir(ss)) e_file_mkdir(ss); + else if (!e_file_is_dir(ss)) return 0; + } + i++; + } + if (!e_file_is_dir(ss)) e_file_mkdir(ss); + else if (!e_file_is_dir(ss)) return 0; + return 1; +} + +int +e_file_cp(char *src, char *dst) +{ + FILE *f1, *f2; + char buf[16384]; + size_t num; + + f1 = fopen(src, "rb"); + if (!f1) return 0; + f2 = fopen(dst, "wb"); + if (!f2) + { + fclose(f1); + return 0; + } + while ((num = fread(buf, 1, 16384, f1)) > 0) fwrite(buf, 1, num, f2); + fclose(f1); + fclose(f2); + return 1; +} + +char * +e_file_realpath(char *file) +{ + char buf[PATH_MAX]; + char *f; + struct stat st; + + if (!realpath(file, buf) || stat(buf, &st)) return strdup(""); + return strdup(buf); +} + +char * +e_file_get_file(char *path) +{ + char *result = NULL; + + if (!path) return NULL; + if ((result = strrchr(path, '/'))) result++; + else result = path; + return result; +} + +char * +e_file_get_dir(char *file) +{ + char *p; + char *f; + char buf[PATH_MAX]; + + strncpy(buf, file, PATH_MAX); + p = strrchr(buf, '/'); + if (!p) + { + return strdup(file); + } + *p = 0 |