added setup screens
authorRonny Strutz <ronny.strutz@multimedia-labs.de>
Sun, 28 Aug 2005 23:13:58 +0000 (23:13 +0000)
committerRonny Strutz <ronny.strutz@multimedia-labs.de>
Sun, 28 Aug 2005 23:13:58 +0000 (23:13 +0000)
23 files changed:
acinclude.m4
config.h.in
configure.ac
keymap.xml
lib/gdi/Makefile.am
lib/gdi/gfbdc.cpp
lib/gdi/sdl.cpp
lib/gui/elistboxcontent.cpp
lib/python/Components/Clock.py
lib/python/Components/InputDevice.py
lib/python/Components/Makefile.am
lib/python/Components/__init__.py
lib/python/Components/config.py
lib/python/Screens/ChannelSelection.py
lib/python/Screens/InfoBar.py
lib/python/Screens/Makefile.am
lib/python/Screens/Menu.py
lib/python/Screens/Setup.py
lib/python/Screens/TimerEdit.py
main/Makefile.am
main/enigma.cpp
mytest.py
skin.py

index 074e1a034d7b17b75cbf700b9bf99b5a3a546420..b92d02faae011f416e201bc61167567276ff4e13 100644 (file)
@@ -2,6 +2,8 @@ AC_DEFUN(TUXBOX_APPS,[
 AM_CONFIG_HEADER(config.h)
 AM_MAINTAINER_MODE
 
+INSTALL="$INSTALL -p"
+
 AC_GNU_SOURCE
 AC_SYS_LARGEFILE
 
@@ -10,7 +12,7 @@ AC_ARG_WITH(target,
        [TARGET="$withval"],[TARGET="native"])
 
 AC_ARG_WITH(targetprefix,
-       [  --with-targetprefix=PATH  prefix relative to target root [[PREFIX[for native], /[for cdk]]]],
+       [  --with-targetprefix=PATH  prefix relative to target root (only applicable in cdk mode)],
        [targetprefix="$withval"],[targetprefix="NONE"])
 
 AC_ARG_WITH(debug,
@@ -22,7 +24,11 @@ if test "$DEBUG" = "yes"; then
        AC_DEFINE(DEBUG,1,[Enable debug messages])
 fi
 
+AC_MSG_CHECKING(target)
+
 if test "$TARGET" = "native"; then
+       AC_MSG_RESULT(native)
+
        if test "$CFLAGS" = "" -a "$CXXFLAGS" = ""; then
                CFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
                CXXFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
@@ -30,13 +36,10 @@ if test "$TARGET" = "native"; then
        if test "$prefix" = "NONE"; then
                prefix=/usr/local
        fi
-       if test "$targetprefix" = "NONE"; then
-               targetprefix="\${prefix}"
-               _targetprefix="${prefix}"
-       else
-               _targetprefix="$targetprefix"
-       fi
+       targetprefix=$prefix
 elif test "$TARGET" = "cdk"; then
+       AC_MSG_RESULT(cdk)
+
        if test "$CC" = "" -a "$CXX" = ""; then
                CC=powerpc-tuxbox-linux-gnu-gcc CXX=powerpc-tuxbox-linux-gnu-g++
        fi
@@ -45,99 +48,127 @@ elif test "$TARGET" = "cdk"; then
                CXXFLAGS="-Wall -Os -mcpu=823 -pipe $DEBUG_CFLAGS"
        fi
        if test "$prefix" = "NONE"; then
-               prefix=/dbox2/cdkroot
+               AC_MSG_ERROR(invalid prefix, you need to specify one in cdk mode)
        fi
        if test "$targetprefix" = "NONE"; then
                targetprefix=""
-               _targetprefix=""
-       else
-               _targetprefix="$targetprefix"
        fi
        if test "$host_alias" = ""; then
                cross_compiling=yes
                host_alias=powerpc-tuxbox-linux-gnu
        fi
 else
+       AC_MSG_RESULT(none)
        AC_MSG_ERROR([invalid target $TARGET, choose on from native,cdk]);
 fi
 
 AC_CANONICAL_BUILD
 AC_CANONICAL_HOST
 
-targetdatadir="\${targetprefix}/share"
-_targetdatadir="${_targetprefix}/share"
-targetsysconfdir="\${targetprefix}/etc"
-_targetsysconfdir="${_targetprefix}/etc"
-targetlocalstatedir="\${targetprefix}/var"
-_targetlocalstatedir="${_targetprefix}/var"
-targetlibdir="\${targetprefix}/lib"
-_targetlibdir="${_targetprefix}/lib"
-AC_SUBST(targetprefix)
-AC_SUBST(targetdatadir)
-AC_SUBST(targetsysconfdir)
-AC_SUBST(targetlocalstatedir)
-
 check_path () {
        return $(perl -e "if(\"$1\"=~m#^/usr/(local/)?bin#){print \"0\"}else{print \"1\";}")
 }
 
 ])
 
+AC_DEFUN(TUXBOX_APPS_DIRECTORY_ONE,[
+AC_ARG_WITH($1,[  $6$7 [[PREFIX$4$5]]],[
+       _$2=$withval
+       if test "$TARGET" = "cdk"; then
+               $2=`eval echo "${targetprefix}$withval"`
+       else
+               $2=$withval
+       fi
+],[
+       $2="\${$3}$5"
+       if test "$TARGET" = "cdk"; then
+               _$2=`eval echo "${target$3}$5"`
+       else
+               _$2=`eval echo "${$3}$5"`
+       fi
+])
+
+dnl automake <= 1.6 don't support this
+dnl AC_SUBST($2)
+AC_DEFINE_UNQUOTED($2,"$_$2",$7)
+])
+
 AC_DEFUN(TUXBOX_APPS_DIRECTORY,[
 AC_REQUIRE([TUXBOX_APPS])
 
-CONFIGDIR="\${localstatedir}/tuxbox/config"
-_CONFIGDIR="${_targetlocalstatedir}/tuxbox/config"
-AC_SUBST(CONFIGDIR)
-AC_DEFINE_UNQUOTED(CONFIGDIR,"$_CONFIGDIR",[where to find the config files])
+if test "$TARGET" = "cdk"; then
+       datadir="\${prefix}/share"
+       tuxboxdatadir="\${prefix}/share/tuxbox"
+       zoneinfodir="\${datadir}/zoneinfo"
+       sysconfdir="\${prefix}/etc"
+       localstatedir="\${prefix}/var"
+       localedir="\${prefix}/var"
+       libdir="\${prefix}/lib"
+       targetdatadir="\${targetprefix}/share"
+       targetsysconfdir="\${targetprefix}/etc"
+       targetlocalstatedir="\${targetprefix}/var"
+       targetlibdir="\${targetprefix}/lib"
+fi
 
-DATADIR="\${datadir}/tuxbox"
-_DATADIR="${_targetdatadir}/tuxbox"
-AC_SUBST(DATADIR)
-AC_DEFINE_UNQUOTED(DATADIR,"$_DATADIR",[where to find data like icons])
+TUXBOX_APPS_DIRECTORY_ONE(configdir,CONFIGDIR,sysconfdir,/etc,,
+       [--with-configdir=PATH   ],[where to find the config files])
 
-FONTDIR="\${datadir}/fonts"
-_FONTDIR="${_targetdatadir}/fonts"
-AC_SUBST(FONTDIR)
-AC_DEFINE_UNQUOTED(FONTDIR,"$_FONTDIR",[where to find the fonts])
+TUXBOX_APPS_DIRECTORY_ONE(datadir,DATADIR,datadir,/share,,
+       [--with-datadir=PATH     ],[where to find data])
 
-GAMESDIR="\${localstatedir}/tuxbox/games"
-_GAMESDIR="${_targetlocalstatedir}/tuxbox/games"
-AC_SUBST(GAMESDIR)
-AC_DEFINE_UNQUOTED(GAMESDIR,"$_GAMESDIR",[where games data is stored])
+TUXBOX_APPS_DIRECTORY_ONE(localedir,LOCALEDIR,datadir,/share,/locale,
+       [--with-localedir=PATH ],[where to find locales])
 
-LIBDIR="\${libdir}/tuxbox"
-_LIBDIR="${_targetlibdir}/tuxbox"
-AC_SUBST(LIBDIR)
-AC_SUBST(_LIBDIR)
-AC_DEFINE_UNQUOTED(LIBDIR,"$_LIBDIR",[where to find the internal libs])
+TUXBOX_APPS_DIRECTORY_ONE(fontdir,FONTDIR,datadir,/share,/fonts,
+       [--with-fontdir=PATH     ],[where to find the fonts])
 
-PLUGINDIR="\${libdir}/tuxbox/plugins"
-_PLUGINDIR="${_targetlibdir}/tuxbox/plugins"
-AC_SUBST(PLUGINDIR)
-AC_DEFINE_UNQUOTED(PLUGINDIR,"$_PLUGINDIR",[where to find the plugins])
+TUXBOX_APPS_DIRECTORY_ONE(gamesdir,GAMESDIR,localstatedir,/var,/tuxbox/games,
+       [--with-gamesdir=PATH    ],[where games data is stored])
+
+TUXBOX_APPS_DIRECTORY_ONE(libdir,LIBDIR,libdir,/lib,/tuxbox,
+       [--with-libdir=PATH      ],[where to find the internal libs])
 
-UCODEDIR="\${localstatedir}/tuxbox/ucodes"
-_UCODEDIR="${_targetlocalstatedir}/tuxbox/ucodes"
-AC_SUBST(UCODEDIR)
-AC_DEFINE_UNQUOTED(UCODEDIR,"$_UCODEDIR",[where to find the ucodes (firmware)])
+TUXBOX_APPS_DIRECTORY_ONE(plugindir,PLUGINDIR,libdir,/lib,/tuxbox/plugins,
+       [--with-plugindir=PATH   ],[where to find the plugins])
+
+TUXBOX_APPS_DIRECTORY_ONE(tuxboxdatadir,TUXBOXDATADIR,datadir,/share,/tuxbox,
+       [--with-tuxboxdatadir=PATH],[where to find tuxbox data])
+
+TUXBOX_APPS_DIRECTORY_ONE(zoneinfodir,ZONEINFODIR,datadir,/share,/zoneinfo,
+       [--with-zoneinfodir=PATH ],[where to find zoneinfo db])
 ])
 
+dnl automake <= 1.6 needs this specifications
+AC_SUBST(CONFIGDIR)
+AC_SUBST(DATADIR)
+AC_SUBST(ZONEINFODIR)
+AC_SUBST(FONTDIR)
+AC_SUBST(GAMESDIR)
+AC_SUBST(LIBDIR)
+AC_SUBST(LOCALEDIR)
+AC_SUBST(PLUGINDIR)
+AC_SUBST(TUXBOXDATADIR)
+dnl end workaround
+
 AC_DEFUN(TUXBOX_APPS_ENDIAN,[
 AC_CHECK_HEADERS(endian.h)
 AC_C_BIGENDIAN
 ])
 
 AC_DEFUN(TUXBOX_APPS_DRIVER,[
-AC_ARG_WITH(driver,
-       [  --with-driver=PATH      path for driver sources[[NONE]]],
-       [DRIVER="$withval"],[DRIVER=""])
-
-if test -z "$DRIVER"; then
-       AC_MSG_ERROR([can't find driver sources])
-fi
-CPPFLAGS="$CPPFLAGS -I$DRIVER/include"
-AC_SUBST(DRIVER)
+#AC_ARG_WITH(driver,
+#      [  --with-driver=PATH      path for driver sources [[NONE]]],
+#      [DRIVER="$withval"],[DRIVER=""])
+#
+#if test -d "$DRIVER/include"; then
+#      AC_DEFINE(HAVE_DBOX2_DRIVER,1,[Define to 1 if you have the dbox2 driver sources])
+#else
+#      AC_MSG_ERROR([can't find driver sources])
+#fi
+
+#AC_SUBST(DRIVER)
+
+#CPPFLAGS="$CPPFLAGS -I$DRIVER/include"
 ])
 
 AC_DEFUN([TUXBOX_APPS_DVB],[
@@ -177,7 +208,6 @@ else
 fi
 ])
 
-
 AC_DEFUN(_TUXBOX_APPS_LIB_CONFIG,[
 AC_PATH_PROG($1_CONFIG,$2,no)
 if test "$$1_CONFIG" != "no"; then
@@ -212,16 +242,7 @@ fi
 ])
 
 AC_DEFUN(_TUXBOX_APPS_LIB_PKGCONFIG,[
-AC_REQUIRE([TUXBOX_APPS_PKGCONFIG])
-AC_MSG_CHECKING(for package $2)
-if PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --exists "$2" ; then
-       AC_MSG_RESULT(yes)
-       $1_CFLAGS=$(PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --cflags "$2")
-       $1_LIBS=$(PKG_CONFIG_PATH="${prefix}/lib/pkgconfig" $PKG_CONFIG --libs "$2")
-else
-       AC_MSG_RESULT(no)
-fi
-
+PKG_CHECK_MODULES($1,$2)
 AC_SUBST($1_CFLAGS)
 AC_SUBST($1_LIBS)
 ])
@@ -348,8 +369,7 @@ AC_SUBST(DUMMYPOFILES)
 AC_SUBST(CATALOGS)
 ])
 
-
-
+dnl backward compatiblity
 AC_DEFUN([AC_GNU_SOURCE],
 [AH_VERBATIM([_GNU_SOURCE],
 [/* Enable GNU extensions on systems that have them.  */
@@ -361,3 +381,13 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
 AC_DEFINE([_GNU_SOURCE])
 ])
 
+AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])
+
index 3224a09ab7aa74b9b0ca7aa597d8c7ecc4eb05d4..3564836100f09b98b4ef868c4bd12b4811fbb341 100644 (file)
@@ -3,7 +3,7 @@
 /* where to find the config files */
 #undef CONFIGDIR
 
-/* where to find data like icons */
+/* where to find data */
 #undef DATADIR
 
 /* Enable debug messages */
 /* where games data is stored */
 #undef GAMESDIR
 
+/* Define to 1 if you have the dvb includes */
+#undef HAVE_DVB
+
+/* Define to the version of the dvb api */
+#undef HAVE_DVB_API_VERSION
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
@@ -55,6 +61,9 @@
 /* where to find the internal libs */
 #undef LIBDIR
 
+/* where to find locales */
+#undef LOCALEDIR
+
 /* Name of package */
 #undef PACKAGE
 
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
-/* where to find the ucodes (firmware) */
-#undef UCODEDIR
+/* where to find tuxbox data */
+#undef TUXBOXDATADIR
 
 /* Version number of package */
 #undef VERSION
 
+/* With SDL */
+#undef WITH_SDL
+
+/* where to find zoneinfo db */
+#undef ZONEINFODIR
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
index ebdd8974a95ee2c145037c4d1e57f195c4df1954..0a8a7dc7958c068285f30574fe05b553d86fcfba 100644 (file)
@@ -10,7 +10,7 @@ AC_PROG_RANLIB
 
 AC_ARG_WITH(pythonincdir,
        [  --with-pythonincdir=NAME dir [[...]]],
-       [PYTHON_INCDIR="$withval"],[PYTHON_INCDIR="/usr/include/python2.3"])
+       [PYTHON_INCDIR="$withval"],[PYTHON_INCDIR="/usr/include/python2.4"])
 AC_SUBST(PYTHON_INCDIR)
 
 AC_ARG_WITH(libsdl,
@@ -30,14 +30,13 @@ TUXBOX_APPS_LIB_PKGCONFIG(MAD,mad)
 TUXBOX_APPS_LIB_PKGCONFIG(PNG,libpng)
 TUXBOX_APPS_LIB_PKGCONFIG(SIGC,sigc++-1.2)
 #TUXBOX_APPS_LIB_PKGCONFIG(XMLTREE,tuxbox-xmltree)
-
 if test "$withsdl" = "yes" ; then
        TUXBOX_APPS_LIB_CONFIG(SDL,sdl-config)
        AC_DEFINE_UNQUOTED([WITH_SDL],[$withsdl],[With SDL])
 fi
 
 # fixme: decent python stuff
-CPPFLAGS="$CPPFLAGS $MD5SUM_CFLAGS $FREETYPE_CFLAGS $FRIBIDI_CFLAGS $ID3TAG_CFLAGS $MAD_CFLAGS $PLUGINS_CFLAGS $PNG_CFLAGS $SIGC_CFLAGS $XMLTREE_CFLAGS $SDL_CFLAGS -I$PYTHON_INCDIR -DHAVE_CPP_FILT -DMEMLEAK_CHECK"
+CPPFLAGS="$CPPFLAGS $MD5SUM_CFLAGS $FREETYPE_CFLAGS $FRIBIDI_CFLAGS $ID3TAG_CFLAGS $MAD_CFLAGS $PLUGINS_CFLAGS $PNG_CFLAGS $SIGC_CFLAGS $XMLTREE_CFLAGS -I$PYTHON_INCDIR -DHAVE_CPP_FILT -DMEMLEAK_CHECK"
 CXXFLAGS="$CXXFLAGS -fno-rtti -fno-exceptions -Wall"
 LDFLAGS="$LDFLAGS -rdynamic"
 
@@ -50,8 +49,8 @@ lib/actions/Makefile
 lib/base/Makefile
 lib/driver/Makefile
 lib/dvb/Makefile
-lib/dvb_si/Makefile
 lib/dvb_ci/Makefile
+lib/dvb_si/Makefile
 lib/gdi/Makefile
 lib/gui/Makefile
 lib/nav/Makefile
index ec26ccaf924f89806ef136619e54056592f33e27..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,102 +0,0 @@
-<keymap>
-       <map context="ListboxActions">
-               <device name="keyboard">
-                       <key id="a" mapto="up" flags="mr" />
-                       <key id="b" mapto="down" flags="mr" />
-               </device>
-               <key id="KEY_UP" mapto="moveUp" flags="mr" />
-               <key id="KEY_DOWN" mapto="moveDown" flags="mr" />
-               <key id="KEY_HOME" mapto="moveTop" flags="mr" />
-               <key id="KEY_END" mapto="moveEnd" flags="mr" />
-               <key id="KEY_PAGEUP" mapto="pageUp" flags="mr" />
-               <key id="KEY_PAGEDOWN" mapto="pageDown" flags="mr" />
-               <key id="KEY_LEFT" mapto="pageUp" flags="mr" />
-               <key id="KEY_RIGHT" mapto="pageDown" flags="mr" />
-               <key id="1" mapto="moveUp" flags="mr" />
-               <key id="2" mapto="moveDown" flags="mr" />
-       </map>
-       
-       <map context="InputActions">
-               <key id="KEY_LEFT" mapto="moveLeft" flags="mr" />
-               <key id="KEY_RIGHT" mapto="moveRight" flags="mr" />
-               <key id="KEY_HOME" mapto="moveHome" flags="mr" />
-               <key id="KEY_END" mapto="moveEnd" flags="mr" />
-               <key id="KEY_DELETE" mapto="deleteForward" flags="mr" />
-               <key id="KEY_BACKSPACE" mapto="deleteBackward" flags="mr" />
-               
-               <key id="KEY_INSERT" mapto="toggleOverwrite" flags="m" />
-               <key id="KEY_ENTER" mapto="accept" flags="m" />
-       </map>
-
-       <map context="SetupActions">
-               <key id="KEY_OK" mapto="ok" flags="m" />
-               <key id="KEY_EXIT" mapto="cancel" flags="m" />
-               <key id="KEY_LEFT" mapto="left" flags="mr" />
-               <key id="KEY_RIGHT" mapto="right" flags="mr" />
-       </map>
-
-       <map context="InfobarActions">
-               <key id="m" mapto="mainMenu" flags="mr" />
-               <key id="c" mapto="switchChannelDown" flags="mr" />
-               <key id="r" mapto="instantRecord" flags="m" />
-               <key id="1" mapto="zapUp" flags="mr" />
-               <key id="2" mapto="zapDown" flags="mr" />
-               <key id="KEY_M" mapto="mainMenu" flags="mr" />
-               <key id="KEY_C" mapto="switchChannelDown" flags="mr" />
-               <key id="KEY_R" mapto="instantRecord" flags="m" />
-               <key id="KEY_LEFT" mapto="zapUp" flags="mr" />
-               <key id="KEY_RIGHT" mapto="zapDown" flags="mr" />
-               <key id="KEY_UP" mapto="switchChannelUp" flags="mr" />
-               <key id="KEY_DOWN" mapto="switchChannelDown" flags="mr" />
-               <key id="KEY_MENU" mapto="mainMenu" flags="mr" />
-               <key id="KEY_OK" mapto="toggleShow" flags="m" />
-               <key id="KEY_EXIT" mapto="hide" flags="m" />
-               <key id="KEY_VIDEO" mapto="showMovies" flags="m" />
-               <key id="KEY_VOLUMEUP" mapto="volumeUp" flags="mr" />
-               <key id="KEY_VOLUMEDOWN" mapto="volumeDown" flags="mr" />
-               <key id="KEY_MUTE" mapto="volumeMute" flags="mr" />
-               <key id="KEY_POWER" mapto="quit" flags="m" />
-       </map>
-       
-       <map context="ChannelSelectActions">
-               <key id="m" mapto="mark" flags="m" />
-               <!-- yes, this is flexible as hell. -->
-               <key id="p" mapto="bouquet:(provider == PREMIERE)" flags="m" />
-               <key id="d" mapto="bouquet:(provider == ARD)" flags="m" />
-               <key id="a" mapto="bouquet:" flags="m" />
-               
-               <key id="KEY_C" mapto="contextMenu" flags="m" />
-               <key id="KEY_M" mapto="mark" flags="m" />
-               <!-- yes, this is flexible as hell. -->
-               <key id="KEY_RED" mapto="bouquet:(provider == PREMIERE)" flags="m" />
-               <key id="KEY_D" mapto="bouquet:(provider == ARD)" flags="m" />
-               <key id="KEY_A" mapto="bouquet:" flags="m" />
-               <key id="KEY_BLUE" mapto="showFavourites" flags="m" />
-       </map>
-       <map context="OkCancelActions">
-               <key id="\x0a" mapto="ok" flags="m" />
-               <key id="\x1b" mapto="cancel" flags="m" />
-
-               <!-- use this on rcu, ok? -->
-               <key id="KEY_OK" mapto="ok" flags="m" />
-               <key id="KEY_EXIT" mapto="cancel" flags="m" />
-
-               <key id="KEY_ENTER" mapto="ok" flags="m" />
-               <key id="KEY_ESC" mapto="cancel" flags="m" />
-       </map>
-       <map context="WindowActions">
-               
-       </map>
-       
-       <map context="ShortcutActions">
-               <key id="KEY_F1" mapto="red" flags="mr" />
-               <key id="KEY_F2" mapto="yellow" flags="mr" />
-               <key id="KEY_F3" mapto="green" flags="mr" />
-               <key id="KEY_F4" mapto="blue" flags="mr" />
-
-               <key id="KEY_RED" mapto="red" flags="mr" />
-               <key id="KEY_YELLOW" mapto="yellow" flags="mr" />
-               <key id="KEY_GREEN" mapto="green" flags="mr" />
-               <key id="KEY_BLUE" mapto="blue" flags="mr" />
-       </map>
-</keymap>
index abb75b79523adf299f069caa06f3904c292a2e3c..c3fc6556fd89f38712255d3586d0ba8c46da531e 100644 (file)
@@ -5,4 +5,4 @@ noinst_LIBRARIES = libenigma_gdi.a
 
 libenigma_gdi_a_SOURCES = \
        region.cpp grc.cpp epng.cpp erect.cpp fb.cpp font.cpp font_arabic.cpp gfbdc.cpp  \
-       glcddc.cpp gpixmap.cpp lcd.cpp sdl.cpp gfont.cpp
+       glcddc.cpp gpixmap.cpp lcd.cpp gfont.cpp
index 7130b0c71f161d3bf796aeb1770baaa016286010..8dc0a7d2431c27c2cb109e4403cc4d58704316da 100644 (file)
@@ -14,7 +14,7 @@ gFBDC::gFBDC()
        if (!fb->Available())
                eFatal("no framebuffer available");
 
-       fb->SetMode(720, 576, 8);
+       fb->SetMode(720, 576, 32);
 
        for (int y=0; y<576; y++)                                                                                                                                                // make whole screen transparent
                memset(fb->lfb+y*fb->Stride(), 0x00, fb->Stride());
@@ -22,8 +22,8 @@ gFBDC::gFBDC()
        surface.type = 0;
        surface.x = 720;
        surface.y = 576;
-       surface.bpp = 8;
-       surface.bypp = 1;
+       surface.bpp = 32;
+       surface.bypp = 4;
        surface.stride = fb->Stride();
        surface.data = fb->lfb;
        surface.clut.colors=256;
index 10513ae52db13c2d2d7c6001aa035850e83aefb5..655fa9333199e86ebcdbf32e4c0a04fa6c47bce6 100644 (file)
@@ -1,5 +1,5 @@
 #ifdef WITH_SDL
-
+#error
 #include <lib/gdi/sdl.h>
 
 #include <lib/base/init.h>
index d9e186a37342da5ed1a16fc99d514cac30204d24..1c27f76672781349a758790429971ea47af1123b 100644 (file)
@@ -452,8 +452,11 @@ void eListboxPythonConfigContent::paint(gPainter &painter, eWindowStyle &style,
                                                int width = item_right.width() * value / 100;
                                                int height = item_right.height();
                                                
+                                                                                               
                                                        /* draw slider */
-                                               painter.fill(eRect(offset.x() + m_seperation, offset.y(), width, height));
+                                               //painter.fill(eRect(offset.x() + m_seperation, offset.y(), width, height));
+                                               //hack - make it customizable
+                                               painter.fill(eRect(offset.x() + m_seperation, offset.y() + 5, width, height-10));
                                                
                                                        /* pvalue is borrowed */
                                        }
index 3beed551dc0c92e9bb34b848fd7a88daa8697088..eba5ea27a43bb4a71db32d5b742b779f258b5adf 100644 (file)
@@ -21,7 +21,8 @@ class Clock(HTMLComponent, GUIComponent, VariableText):
 # "funktionalitaet"    
        def doClock(self):
                t = time.localtime()
-               self.setText("%2d:%02d:%02d" % (t[3], t[4], t[5]))
+               #HACK use timezone settings
+               self.setText("%2d:%02d:%02d" % (t[3] + 2, t[4], t[5]))
 
 # realisierung als GUI
        def createWidget(self, parent):
index 599dff3483609cfa534ef0a6d2d98c382a6ded95..eb88e65039e4174941b8be8b5afc88cba0be1531 100644 (file)
@@ -17,8 +17,8 @@ class inputDevices:
 
 def InitInputDevices():
        config.inputDevices = ConfigSubsection();
-       config.inputDevices.repeat = configElement("config.inputDevices.repeat", ConfigSlider, 3);
-       config.inputDevices.delay = configElement("config.inputDevices.delay", ConfigSlider, 3);
+       config.inputDevices.repeat = configElement("config.inputDevices.repeat", ConfigSlider, 5, "");
+       config.inputDevices.delay = configElement("config.inputDevices.delay", ConfigSlider, 4, "");
 
        #this instance anywhere else needed?    
        iDevices = inputDevices();      
index 969077aab4c52ab01c6e1c580dc9d8017e977299..88118ebf84bf8ece0e9b790e8460de9732160246 100644 (file)
@@ -6,6 +6,5 @@ install_DATA = \
        Clock.py HTMLSkin.py ServiceList.py VariableText.py                     \
        ConfigList.py Header.py ServiceName.py VariableValue.py                 \
        EventInfo.py Label.py ServiceScan.py VolumeBar.py                       \
-       GUIComponent.py MenuList.py TextInput.py __init__.py MovieList.py       \
+       GUIComponent.py MenuList.py TextInput.py __init__.py MovieList.py                               \
        InputDevice.py ServicePosition.py
-       
index 8453ced56daaf08cd729fd3e3fe19a745b35bcb3..fb9eeaa41dbb86e7a3f2a89179d18111f8d995f9 100644 (file)
@@ -3,5 +3,6 @@ __all__ = ["ActionMap", "Button", "Clock", "ConfigList", "EventInfo",
        "GUIComponent", "GUISkin", "HTMLComponent", "HTMLSkin", "Header",
        "Label", "MenuList", "PerServiceDisplay", "ProgressBar", "ServiceList",
        "ServiceName", "ServiceScan", "VariableText", "VariableValue", "VolumeBar",
-       "components", "config", "TimerList", "TimeInput", "MovieList", "ServicePosition" ]
+       "components", "config", "TimerList", "TimeInput", "MovieList", 
+       "InputDevice",  "ServicePosition" ]
 
index 10296437f48a5060f0bac7ab1f1339bc759c719e..15119617bdbd826d6d1a271867148fd90a496ad3 100644 (file)
@@ -1,15 +1,31 @@
 #  temp stuff :)
 class configBoolean:
-       def __init__(self, reg):
-               self.reg = reg
-               self.val = 0
+       def __init__(self, parent):
+               self.parent = parent
+               self.val = parent.value
+               self.vals = parent.vals
+                       
+       def handleKey(self, key):
+               if key == 1:
+                       self.val = self.val - 1
+               if key == 2:
+                       self.val = self.val + 1
+                       
+               if self.val < 0:
+                       self.val = 0    
+
+#              if self.val > 1:
+#                      self.val = 1    
        
-       def toggle(self):
-               self.val += 1
-               self.val %= 3
+       def __call__(self):                     #needed by configlist
        
-       def __str__(self):
-               return ("NO", "YES", "MAYBE")[self.val]
+               print len(self.vals)
+               print self.val
+                       
+               if(self.val > (len(self.vals) - 1)):
+                       self.val = len(self.vals) - 1
+       
+               return ("text",self.vals[self.val])
 
 class configValue:
        def __init__(self, obj):
@@ -48,7 +64,6 @@ class ConfigSlider:
 
                if self.val > 10:
                        self.val = 10   
-       
        def __call__(self):                     #needed by configlist
                return ("slider", self.val * 10)
 
@@ -57,10 +72,12 @@ class ConfigSubsection:
                pass
 
 class configElement:
-       def __init__(self, configPath, control, defaultValue):
+       def __init__(self, configPath, control, defaultValue, vals):
                self.configPath = configPath
-               self.value = 0  #read from registry else use default
+#              self.value = 0  #read from registry else use default
+               self.value = defaultValue       #read from registry else use default
                self.controlType = control
+               self.vals = vals
                self.notifierList = [ ]
        def addNotifier(self, notifier):
                self.notifierList.append(notifier);
index 3155c44d9ab2b1f4d7780807e60486049f93781d..e421c5c90bbabf6f0f5990ef4f849e91f5e3de58 100644 (file)
@@ -55,10 +55,10 @@ class ChannelSelection(Screen):
                ## FIXME
                self.__marked = [ ]
                
-               self["key_red"] = Button("red")
-               self["key_green"] = Button("green")
-               self["key_yellow"] = Button("yellow")
-               self["key_blue"] = Button("blue")
+               self["key_red"] = Button("All")
+               self["key_green"] = Button("ARD")
+               self["key_yellow"] = Button("ZDF")
+               self["key_blue"] = Button("Custom")
                
                self["list"] = ServiceList()
                self["list"].setRoot(eServiceReference("""1:0:1:0:0:0:0:0:0:0:(type == 1)"""))
index 0ead722134c520850a129b1f5d8a93dedb42f58d..44484a512816dc15f311fb457c6b85c8124377ec 100644 (file)
@@ -106,8 +106,8 @@ class InfoBar(Screen):
                quitMainloop()
                
        def instantRecord(self):
-               self.session.open(MessageBox, "this would be an instant recording! do you really know what you're doing?!")
-               return
+               #self.session.open(MessageBox, "this would be an instant recording! do you really know what you're doing?!")
+               #return
        
                if self.recording != None:
                        print "remove entry"
index 9250018ec0c821fbbbf394184aa1a0400a65eab7..e645997d7e3b99f63ec35ef89e96125863788354 100644 (file)
@@ -3,4 +3,4 @@ installdir = $(LIBDIR)/enigma2/python/Screens
 install_DATA = \
        ChannelSelection.py ClockDisplay.py ConfigMenu.py InfoBar.py Menu.py    \
        MessageBox.py ScartLoopThrough.py Screen.py ServiceScan.py TimerEdit.py \
-       MovieSelection.py Setup.py __init__.py
+       MovieSelection.py SetupRCU.py Setup.py __init__.py
index fd2f2761d32db4823f1a4eefd782d0de7232f768..11b265e38bd80ecb6ac914d1c503e0b9b4f7691d 100644 (file)
@@ -12,6 +12,8 @@ from Components.Label import Label
 from Components.ProgressBar import ProgressBar
 from ConfigMenu import *
 
+from About import *
+
 from TimerEdit import *
 
 from enigma import quitMainloop
@@ -27,56 +29,50 @@ def doGlobal(screen):
        screen["clock"] = Clock()
 
 
+#              <item text="TV-Mode">self.setModeTV()</item>
+#              <item text="Radio-Mode">self.setModeRadio()</item>
+#              <item text="File-Mode">self.setModeFile()</item>
+#              <item text="Scart">self.openDialog(ScartLoopThrough)</item>
+#                      <item text="Sleep Timer"></item>
+
 mdom = xml.dom.minidom.parseString(
         """
-       <menu text="Mainmenu" title="the real Mainmenu">
+       <menu text="Mainmenu" title="Mainmenu">
                <item text="Standby debug">quitMainloop()</item>
-               <item text="Automatic Scan">self.openDialog(ServiceScan)</item>
-
-               <item text="Blub1">self.openSetup("rc")</item>
-               <item text="Blub2">self.openSetup("blasel")</item>
-
-               <item text="TV-Mode">self.setModeTV()</item>
-               <item text="Radio-Mode">self.setModeRadio()</item>
-               <item text="File-Mode">self.setModeFile()</item>
-               <item text="Scart">self.openDialog(ScartLoopThrough)</item>
                <item text="Timer">self.openDialog(TimerEditList)</item>
                <menu text="Setup">
-                       <menu text="Service Organising">
+                       <menu text="Service Organising -disabled-">
                                <item text="New Bouquets"></item>
                                <item text="Add to Bouquets"></item>
                                <item text="Edit Bouquets"></item>
                        </menu>
                        <menu text="Service Searching">
-                               <item text="Satelliteconfig"></item>
-                               <item text="Satfinder"></item>
-                               <item text="Rotor Control"></item>
-                               <item text="Edit Transponder"></item>
+                               <item text="Satelliteconfig">self.openSetup("satconfig")</item>
+                               <item text="Satfinder -disabled-"></item>
+                               <item text="Rotor Control -disabled-"></item>
+                               <item text="Edit Transponder -disabled-"></item>
                                <item text="Automatic Scan">self.openDialog(ServiceScan)</item>
-                               <item text="Automatic 'Multisat' Scan"></item>
-                               <item text="Manual Scan"></item>
                        </menu>
                        <menu text="System">
-                               <item text="Time Date"></item>
-                               <item text="Video Audio"></item>
-                               <item text="UHF Modulator"></item>
+                               <item text="Timezone">self.openSetup("timezone")</item>
+                               <item text="Video Audio">self.openSetup("avsetup")</item>
+                               <item text="UHF Modulator">self.openSetup("rfmod")</item>
                                <item text="Harddisk"></item>
-                               <item text="Keyboard"></item>
-                               <item text="OSD">self.openDialog(configOSD)</item>
-                               <item text="Language"></item>
-                               <item text="LCD"></item>
+                               <item text="Remote Control">self.openSetup("rc")</item>
+                               <item text="Keyboard">self.openSetup("keyboard")</item>
+                               <item text="OSD">self.openSetup("osd")</item>
+                               <item text="LCD">self.openSetup("lcd")</item>
                        </menu>
                        <item text="Common Interface"></item>
-                       <item text="Parental Control"></item>
-                       <item text="Expert"></item>
+                       <item text="Parental Control">self.openSetup("parental")</item>
+                       <item text="Expert">self.openSetup("expert")</item>
                </menu>
-               <item text="Games"></item>
-               <item text="Information"></item>
+               <item text="Games (not found)"></item>
+               <item text="Information">self.openDialog(About)</item>
                <menu text="Standby">
-                       <item text="PowerOff"></item>
-                       <item text="Restart"></item>
-                       <item text="Standby"></item>
-                       <item text="Sleep Timer">self.goSetup()</item>
+                       <item text="PowerOff">quitMainloop()</item>
+                       <item text="Restart">quitMainloop()</item>
+                       <item text="Standby">quitMainloop()</item>
                </menu>
        </menu>""")
 
@@ -142,7 +138,7 @@ class Menu(Screen):
                self.session.open(dialog)
 
        def openSetup(self, dialog):
-               self.session.open(setup, dialog)
+               self.session.open(Setup, dialog)
 
        def addMenu(self, destList, node):
                MenuTitle = getValbyAttr(node, "text")
index de27ff5ee9f235f9ce0e5cd26a0e3af2501bb7ef..a694ab164951437b819fe181ed428b1a8ab1b1c2 100644 (file)
@@ -4,6 +4,7 @@ from Components.config import config                            #global config instance
 from Components.config import configEntry
 from Components.config import configBoolean
 from Components.ConfigList import ConfigList
+from Components.Label import Label
 
 import xml.dom.minidom
 from xml.dom import EMPTY_NAMESPACE
@@ -13,10 +14,66 @@ from Tools import XMLTools
 
 setupdom = xml.dom.minidom.parseString(
        """
-       <setup key="rc" title="RC Menu">
-               <item text="Repeat Rate">config.inputDevices.repeat</item>
-               <item text="Delay Rate">config.inputDevices.delay</item>
-       </setup>
+       <setupxml>
+               <setup key="rc" title="RC Menu">
+                       <item text="Repeat Rate">config.inputDevices.repeat</item>
+                       <item text="Delay Rate">config.inputDevices.delay</item>
+                       <item text="Keymap">config.rc.map</item>
+               </setup>
+               <setup key="timezone" title="RC Menu">
+                       <item text="Timezone">config.timezone.val</item>
+               </setup>
+               <setup key="avsetup" title="A/V Settings">
+                       <item text="Color Format">config.av.colorformat</item>
+                       <item text="Aspect Ratio">config.av.aspectratio</item>
+                       <item text="TV System">config.av.tvsystem</item>
+                       <item text="WSS">config.av.wss</item>
+                       <item text="AC3 default">config.av.defaultac3</item>
+                       <item text="VCR Switch">config.av.vcrswitch</item>
+               </setup>
+               <setup key="rfmod" title="UHF Modulator">
+                       <item text="Modulator">config.rfmod.enable</item>
+                       <item text="Testmode">config.rfmod.test</item>
+                       <item text="Sound">config.rfmod.sound</item>
+                       <item text="Soundcarrier">config.rfmod.soundcarrier</item>
+                       <item text="Channel">config.rfmod.channel</item>
+                       <item text="Finetune">config.rfmod.finetune</item>
+               </setup>
+               <setup key="keyboard" title="Keyboard Setup">
+                       <item text="Keyboard Map">config.keyboard.keymap</item>
+               </setup>
+               <setup key="osd" title="OSD Settings">
+                       <item text="Alpha">config.osd.alpha</item>
+                       <item text="Brightness">config.osd.bright</item>
+                       <item text="Contrast">config.osd.contrast</item>
+                       <item text="Language">config.osd.language</item>
+               </setup>
+               <setup key="lcd" title="LCD Setup">
+                       <item text="Brightness">config.lcd.bright</item>
+                       <item text="Standby">config.lcd.standby</item>
+                       <item text="Invert">config.lcd.invert</item>
+               </setup>
+               <setup key="parental" title="Parental Control">
+                       <item text="Parental Lock">config.parental.lock</item>
+                       <item text="Setup Lock">config.parental.setuplock</item>
+               </setup>
+               <setup key="expert" title="Expert Setup">
+                       <item text="Record Splitsize">config.expert.splitsize</item>
+                       <item text="Show Satposition">config.expert.satpos</item>
+                       <item text="Fast zapping">config.expert.fastzap</item>
+                       <item text="Skip confirmations">config.expert.skipconfirm</item>
+                       <item text="Hide error windows">config.expert.hideerrors</item>
+                       <item text="Auto show inforbar">config.expert.autoinfo</item>
+               </setup>
+               <setup key="satconfig" title="Sat/Dish Setup">
+                       <item text="Tuner-A Control">config.sat.diseqcA</item>
+                       <item text="Tuner-A Position">config.sat.posA</item>
+                       <item text="Tuner-A Sat">config.sat.satA</item>
+                       <item text="Tuner-B Control">config.sat.diseqcB</item>
+                       <item text="Tuner-A Position">config.sat.posB</item>
+                       <item text="Tuner-B Sat">config.sat.satB</item>
+               </setup>
+       </setupxml>
        """)
 
 def getValbyAttr(x, attr):
@@ -66,7 +123,9 @@ class Setup(Screen):
 
                print "request setup for " + setup
                
-               entries = setupdom.childNodes
+               xmldata = setupdom.childNodes[0]
+               
+               entries = xmldata.childNodes
 
                list = []
                                
@@ -83,6 +142,9 @@ class Setup(Screen):
                
                self["config"] = ConfigList(list)
 
+               self["ok"] = Label("OK")
+               self["cancel"] = Label("Cancel")
+
                self["actions"] = ActionMap(["SetupActions"], 
                        {
                                "cancel": self.close,
index f8c9f20797c5df37132841347368a3ac955e4c55..173b1ba20b336fd071a757594861c93748f21012 100644 (file)
@@ -64,7 +64,7 @@ class TimerEditList(Screen):
 
                self["actions"] = ActionMap(["OkCancelActions"], 
                        {
-                               "ok": self.openEdit,
+#                              "ok": self.openEdit,
                                "cancel": self.close
                        })
 
index d96e25aa6156593126f7b67282f0370b43220231..5a7d1ef79700155111d7190d259b82ac053f6362 100644 (file)
@@ -14,6 +14,7 @@ enigma2_LDADD_WHOLE = \
        $(top_builddir)/lib/driver/libenigma_driver.a \
        $(top_builddir)/lib/dvb/libenigma_dvb.a \
        $(top_builddir)/lib/dvb_si/libenigma_dvb_si.a \
+       $(top_builddir)/lib/dvb_ci/libenigma_dvb_ci.a \
        $(top_builddir)/lib/gdi/libenigma_gdi.a \
        $(top_builddir)/lib/gui/libenigma_gui.a \
        $(top_builddir)/lib/python/libenigma_python.a \
@@ -27,8 +28,7 @@ enigma2_LDADD = \
        @MAD_LIBS@ \
        @PNG_LIBS@ \
        @SIGC_LIBS@ \
-       @SDL_LIBS@ \
-       -ldl -lpthread -lcrypt -lresolv -lpython2.3
+       -ldl -lpthread -lcrypt -lresolv -lpython2.4
 
 enigma2$(EXEEXT): $(enigma2_OBJECTS) $(enigma2_DEPENDENCIES) $(enigma2_LDADD_WHOLE)
 #      @rm -f enigma2$(EXEEXT)
index 3d84db7d27537057547c1cdab7c5743370c27cc0..3a728b8df7e5e5d11b98989818ddfd1fd63ef3d4 100644 (file)
@@ -1,4 +1,6 @@
+#undef WITH_SDL
 #ifdef WITH_SDL
+#error
 #define SDLDC
 #endif
 #include <stdio.h>
@@ -13,6 +15,7 @@
 #include <lib/gdi/grc.h>
 #include <lib/gdi/gfbdc.h>
 #ifdef WITH_SDL
+#error
 #include <lib/gdi/sdl.h>
 #endif
 #include <lib/gdi/font.h> 
index d04990d637de2c0a467baaec789d11f1405ef08a..e944e3b3bb2163b4cbd9ecd8c4f7b42067b75e29 100644 (file)
--- a/mytest.py
+++ b/mytest.py
@@ -172,6 +172,9 @@ skin.loadSkin(getDesktop())
 import Components.InputDevice
 Components.InputDevice.InitInputDevices()
 
+import Components.SetupDevices
+Components.SetupDevices.InitSetupDevices()
+
 # first, setup a screen
 try:
        runScreenTest()
diff --git a/skin.py b/skin.py
index 7d24441dbb7a26a9b4548c52aeca681316d633fb..c8705d9c93156b2a7cd0cef31ccaf984d804928f 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -47,22 +47,25 @@ dom = xml.dom.minidom.parseString(
                                <pixmap pos="bpBottomRight" filename="data/b_w_br.png" />
                        </borderset>
                </windowstyle> """ """
-               <screen name="Menu" position="300,100" size="300,300" title="real main menu">
+               <screen name="Menu" position="300,100" size="300,200" title="real main menu">
 <!--                   <widget name="okbutton" position="10,190" size="280,50" font="Arial;20" valign="center" halign="center" />-->
                        <widget name="title" position="10,10" size="280,20" />
                        <widget name="menu" position="10,30" size="280,200" />
-                       
                </screen>
                <screen name="ScartLoopThrough" position="0,0" size="720,576">
                </screen>
-               <screen name="ConfigMenu" position="300,100" size="300,300" title="real main menu">
-                       <widget name="txt_var_1" position="20,20" size="100,20" />
-                       <widget name="btn_var_1" position="110,20" size="200,20" />
-                       <widget name="txt_var_2" position="20,60" size="100,20" />
-                       <widget name="btn_var_2" position="110,60" size="200,20" />
+               <screen name="Setup" position="140,125" size="460,220" title="Setup">
+                       <widget name="config" position="10,30" size="420,120" />
+                       <widget name="ok" position="140,180" size="38,20" font="Arial;20" backgroundColor="green" />
+                       <widget name="cancel" position="240,180" size="70,20" font="Arial;20" backgroundColor="red" />
                </screen>
-               <screen name="Setup" position="140,125" size="460,350" title="RCU Setup">
-                       <widget name="config" position="10,30" size="280,140" />
+               <screen name="About" position="140,125" size="360,200" title="Setup">
+                       <widget name="text" position="10,30" size="420,40" font="Arial;20"/>
+                       <widget name="tuner" position="10,80" size="420,20"/>
+                       <widget name="tunerA" position="10,100" size="420,20"/>
+                       <widget name="tunerB" position="10,120" size="420,20"/>
+                       <widget name="hdd" position="10,150" size="420,20"/>
+                       <widget name="hddA" position="10,170" size="420,20"/>
                </screen>
                <screen name="configOSD" position="140,125" size="460,350" title="OSD Settings">
                        <widget name="okbutton" position="20,245" size="205,40" />
@@ -74,7 +77,7 @@ dom = xml.dom.minidom.parseString(
                        <widget name="sld_gamma" position="150,100" size="290,20" />
                </screen>
                <screen name="configTest" position="300,100" size="300,300" title="config menu">
-                       <widget name="config" position="10,30" size="280,140" />
+                       <widget name="config" position="10,30" size="420,220" />
                </screen>
                <screen name="TimerEditList" position="160,100" size="420,430" title="Timer Editor">
                        <widget name="timerlist" position="10,30" size="400,300" />
@@ -88,7 +91,7 @@ dom = xml.dom.minidom.parseString(
                        <ePixmap position="0,0" size="720,148" pixmap="data/info-bg.png" />
                        
                        <widget name="ServiceName" position="69,25" size="427,26" valign="center" font="Arial;22" backgroundColor="#101258" />
-                       <widget name="CurrentTime" position="575,10" size="80,30" backgroundColor="dark" font="Arial;19" />
+                       <widget name="CurrentTime" position="575,10" size="90,30" backgroundColor="dark" font="Arial;19" />
                        <widget name="Volume" position="575,45" size="100,5" backgroundColor="dark" />
                        <widget name="Event_Now" position="273,68" size="282,30" font="Arial;22" backgroundColor="dark" />
                        <widget name="Event_Next" position="273,98" size="282,30" font="Arial;22" backgroundColor="dark" />
@@ -107,9 +110,9 @@ dom = xml.dom.minidom.parseString(
                <screen name="MovieSelection" position="150,100" size="400,420" title="Select-a-movie">
                        <widget name="list" position="0,50" size="400,300" />
                </screen>
-               <screen name="ServiceScan" position="150,100" size="300,200" title="Service Scan">
-                       <widget name="scan_progress" position="10,10" size="280,50" />
-                       <widget name="scan_state" position="10,60" size="280,30" />
+               <screen name="ServiceScan" position="150,100" size="300,90" title="Service Scan">
+                       <widget name="scan_progress" position="10,10" size="300,20" />
+                       <widget name="scan_state" position="10,40" size="280,30" />
                </screen>
                <screen name="TimerEdit" position="70,100" size="590,335" title="Timer Edit">
                        <widget name="description" position="10,10" size="580,40" font="Arial;25" />