Merge branch 'master' of git.opendreambox.org:/git/enigma2
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Tue, 6 Oct 2009 07:37:50 +0000 (09:37 +0200)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Tue, 6 Oct 2009 07:37:50 +0000 (09:37 +0200)
14 files changed:
data/skin_default.xml
lib/python/Components/AVSwitch.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py
lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py
lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py
lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py
lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py
lib/python/Plugins/SystemPlugins/VideoEnhancement/VideoEnhancement.py
lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py
lib/python/Plugins/SystemPlugins/Videomode/plugin.py
lib/python/Screens/HelpMenu.py
main/bsod.cpp [changed mode: 0644->0755]
po/pl.po

index 7d1c681..1057199 100755 (executable)
@@ -882,9 +882,14 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <widget name="list" position="00,45" size="560,364" scrollbarMode="showOnDemand" />
        </screen>
        <!-- Skin Selector -->
-       <screen name="SkinSelector" position="60,138" size="600,320" title="Choose your Skin">
-               <widget name="SkinList" position="10,10" size="275,300" scrollbarMode="showOnDemand" />
-               <widget name="Preview" position="305,45" size="280,210" alphatest="on" />
+       <screen name="SkinSelector" position="center,center" size="600,400" title="Choose your Skin">
+               <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" zPosition="1" alphatest="on" />
+               <widget source="key_red" render="Label" position="0,0" zPosition="2" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+               <ePixmap pixmap="skin_default/border_menu_300.png" position="5,50" zPosition="1" size="300,300" transparent="1" alphatest="on" />
+               <widget name="SkinList" position="10,60" size="290,260" scrollbarMode="showOnDemand" />
+               <widget name="Preview" position="310,50" size="280,210" alphatest="on"/>
+               <ePixmap pixmap="skin_default/div-h.png" position="20,360" zPosition="1" size="600,2" />
+               <widget source="introduction" render="Label" position="0,370" size="560,30" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
        </screen>
        <!-- Sleeptimer edit -->
        <screen name="SleepTimerEdit" position="110,215" size="500,200" title="Sleep Timer">
index 8f4255b..bc2a66a 100644 (file)
@@ -1,7 +1,8 @@
 from config import config, ConfigSlider, ConfigSelection, ConfigYesNo, \
-       ConfigEnableDisable, ConfigSubsection, ConfigBoolean, ConfigNumber
+       ConfigEnableDisable, ConfigSubsection, ConfigBoolean, ConfigNumber, ConfigNothing, NoSave
 from enigma import eAVSwitch, getDesktop
 from SystemInfo import SystemInfo
+from os import path as os_path
 
 class AVSwitch:
        def setInput(self, input):
@@ -166,3 +167,19 @@ def InitAVSwitch():
        if can_osd_alpha:
                config.av.osd_alpha = ConfigSlider(default=255, limits=(0,255))
                config.av.osd_alpha.addNotifier(setAlpha)
+
+       if os_path.exists("/proc/stb/vmpeg/0/pep_scaler_sharpness"):
+               def setScaler_sharpness(config):
+                       myval = int(config.value)
+                       try:
+                               print "--> setting scaler_sharpness to: %0.8X" % myval
+                               open("/proc/stb/vmpeg/0/pep_scaler_sharpness", "w").write("%0.8X" % myval)
+                               open("/proc/stb/vmpeg/0/pep_apply", "w").write("1")
+                       except IOError:
+                               print "couldn't write pep_scaler_sharpness"
+
+               config.av.scaler_sharpness = ConfigSlider(default=13, limits=(0,26))
+               config.av.scaler_sharpness.addNotifier(setScaler_sharpness)
+       else:
+               config.av.scaler_sharpness = NoSave(ConfigNothing())
+
index c535e1b..596f2d5 100644 (file)
@@ -241,7 +241,10 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                for x in self.playlist.list:
                        self.playlistIOInternal.addService(ServiceReference(x[0]))
                if self.savePlaylistOnExit:
-                       self.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, "playlist.e2pls"))
+                       try:
+                               self.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, "playlist.e2pls"))
+                       except IOError:
+                               print "couldn't save playlist.e2pls"
                if config.mediaplayer.saveDirOnExit.getValue():
                        config.mediaplayer.defaultDir.setValue(self.filelist.getCurrentDirectory())
                        config.mediaplayer.defaultDir.save()
index a2d30d2..cf998a7 100755 (executable)
@@ -2,7 +2,7 @@ from Plugins.Plugin import PluginDescriptor
 from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigSelection, ConfigYesNo,ConfigText
 from Components.ConfigList import ConfigListScreen
 from Components.ActionMap import ActionMap
-from Components.Label import Label
+from Components.Sources.StaticText import StaticText
 from Components.Pixmap import Pixmap
 from Screens.Screen import Screen
 from Screens.VirtualKeyBoard import VirtualKeyBoard
@@ -23,7 +23,7 @@ config.plugins.crashlogautosubmit.sendlog = ConfigSelection(default = "rename",
 config.plugins.crashlogautosubmit.attachemail = ConfigYesNo(default = False)
 config.plugins.crashlogautosubmit.email = ConfigText(default = "myemail@home.com", fixed_size = False)
 config.plugins.crashlogautosubmit.name = ConfigText(default = "Dreambox User", fixed_size = False)
-config.plugins.crashlogautosubmit.sendAnonCrashlog = ConfigYesNo(default = False)
+config.plugins.crashlogautosubmit.sendAnonCrashlog = ConfigYesNo(default = True)
 config.plugins.crashlogautosubmit.addNetwork = ConfigYesNo(default = False)
 config.plugins.crashlogautosubmit.addWlan = ConfigYesNo(default = False)
 
@@ -32,17 +32,16 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
        oldMailEntryValue = config.plugins.crashlogautosubmit.sendmail.value
 
        skin = """
-               <screen name="CrashlogAutoSubmitConfiguration" position="80,80" size="560,400" title="CrashlogAutoSubmit settings..." >
-                       <widget name="config" zPosition="2" position="5,5" size="550,360" scrollbarMode="showOnDemand" transparent="1" />
-                       <ePixmap pixmap="skin_default/div-h.png" position="0,300" zPosition="10" size="560,2" transparent="1" alphatest="on" />
-                       <widget name="status" position="10,300" zPosition="10" size="540,50" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,360" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="0,360" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,360" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="installtext" position="140,360" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <widget name="VKeyButton" pixmap="skin_default/buttons/button_yellow.png" position="285,370" zPosition="2" size="15,16" transparent="1" alphatest="on" />
-                       <widget name="VKeyIcon" pixmap="skin_default/vkey_icon.png" position="300,355" zPosition="10" size="60,48" transparent="1" alphatest="on" />
-                       <widget name="HelpWindow" position="175,250" zPosition="1" size="1,1" transparent="1" />
+               <screen name="CrashlogAutoSubmitConfiguration" position="center,center" size="560,440" title="CrashlogAutoSubmit settings" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="config" zPosition="2" position="5,50" size="550,300" scrollbarMode="showOnDemand" transparent="1" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,390" zPosition="10" size="560,2" transparent="1" alphatest="on" />
+                       <widget source="status" render="Label" position="10,400" size="540,40" zPosition="10" font="Regular;20" halign="center" valign="center" backgroundColor="#25062748" transparent="1"/>
+                       <widget name="VKeyIcon" pixmap="skin_default/buttons/key_text.png" position="10,420" zPosition="10" size="35,25" transparent="1" alphatest="on" />
+                       <widget name="HelpWindow" pixmap="skin_default/vkey_icon.png" position="160,325" zPosition="1" size="1,1" transparent="1" alphatest="on" />
                </screen>"""
 
        def __init__(self, session):
@@ -66,23 +65,21 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
                        "green": self.keySave,
                }, -2)
 
-               self["VirtualKB"] = ActionMap(["ColorActions" ],
+               self["VirtualKB"] = ActionMap(["VirtualKeyboardActions" ],
                {
-                       "yellow": self.KeyYellow,
+                       "showVirtualKeyboard": self.KeyText,
                }, -1)
 
                self.list = []
                ConfigListScreen.__init__(self, self.list,session = self.session)
                self.createSetup()
 
-               self["VKeyButton"] = Pixmap()
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText(_("Save"))
+               self["status"] = StaticText()
                self["VKeyIcon"] = Pixmap()
-               self["closetext"] = Label(_("Close"))
-               self["installtext"] = Label(_("Save"))
-               self["HelpWindow"] = Label()
-               self["status"] = Label()
+               self["HelpWindow"] = Pixmap()
 
-               self["VKeyButton"].hide()
                self["VKeyIcon"].hide()
                self["VirtualKB"].setEnabled(False)
                self.onShown.append(self.setWindowTitle)
@@ -100,7 +97,7 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
                ConfigListScreen.keyRight(self)
                self.newConfig()
 
-       def KeyYellow(self):
+       def KeyText(self):
                        if self["config"].getCurrent() == self.EmailEntry:
                                self.session.openWithCallback(self.EmailCallback, VirtualKeyBoard, title = (_("Please enter your email address here:")), text = config.plugins.crashlogautosubmit.email.value)
                        if self["config"].getCurrent() == self.NameEntry:
@@ -188,7 +185,6 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
                        self.disableVKeyIcon()
 
        def enableVKeyIcon(self):
-               self["VKeyButton"].show()
                self["VKeyIcon"].show()
                self["VirtualKB"].setEnabled(True)
 
@@ -201,7 +197,6 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
                                current[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1]))
 
        def disableVKeyIcon(self):
-               self["VKeyButton"].hide()
                self["VKeyIcon"].hide()
                self["VirtualKB"].setEnabled(False)
 
index ba668f8..a1522dd 100644 (file)
@@ -54,7 +54,7 @@ class Feedlist(MenuList):
 
        def isValid(self):
                l = self.l.getCurrentSelection()
-               if l[0] == 0:
+               if not l or l[0] == 0:
                        return False
                else:
                        return True
index 060a4f3..997b957 100755 (executable)
@@ -6,35 +6,29 @@ from Screens.Standby import TryQuitMainloop
 from Screens.MessageBox import MessageBox
 from Components.ActionMap import NumberActionMap
 from Components.Pixmap import Pixmap
+from Components.Sources.StaticText import StaticText
 from Components.MenuList import MenuList
 from Plugins.Plugin import PluginDescriptor
 from Components.config import config
-
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 from os import path, walk
 
 class SkinSelector(Screen):
        # for i18n:
        # _("Choose your Skin")
-       skin = """
-               <screen position="75,138" size="600,320" title="Choose your Skin" >
-                       <widget name="SkinList" position="10,10" size="275,300" scrollbarMode="showOnDemand" />
-                       <widget name="Preview" position="305,45" size="280,210" alphatest="on"/>
-               </screen>
-               """
-
        skinlist = []
        root = "/usr/share/enigma2/"
 
        def __init__(self, session, args = None):
 
-               self.skin = SkinSelector.skin
                Screen.__init__(self, session)
 
                self.skinlist = []
                self.previewPath = ""
-
                path.walk(self.root, self.find, "")
 
+               self["key_red"] = StaticText(_("Close"))
+               self["introduction"] = StaticText(_("Press OK to activate the selected skin."))
                self.skinlist.sort()
                self["SkinList"] = MenuList(self.skinlist)
                self["Preview"] = Pixmap()
@@ -43,13 +37,14 @@ class SkinSelector(Screen):
                {
                        "ok": self.ok,
                        "back": self.close,
+                       "red": self.close,
                        "up": self.up,
                        "down": self.down,
                        "left": self.left,
                        "right": self.right,
                        "info": self.info,
                }, -1)
-               
+
                self.onLayoutFinish.append(self.layoutFinished)
 
        def layoutFinished(self):
@@ -82,7 +77,7 @@ class SkinSelector(Screen):
                self.loadPreview()
 
        def info(self):
-               aboutbox = self.session.open(MessageBox,_("Enigma2 Skinselector v0.5 BETA\n\nIf you experience any problems please contact\nstephan@reichholf.net\n\n\xA9 2006 - Stephan Reichholf"), MessageBox.TYPE_INFO)
+               aboutbox = self.session.open(MessageBox,_("Enigma2 Skinselector\n\nIf you experience any problems please contact\nstephan@reichholf.net\n\n\xA9 2006 - Stephan Reichholf"), MessageBox.TYPE_INFO)
                aboutbox.setTitle(_("About..."))
 
        def find(self, arg, dirname, names):
@@ -114,8 +109,7 @@ class SkinSelector(Screen):
                        pngpath = self.root+self["SkinList"].getCurrent()+"/prev.png"
 
                if not path.exists(pngpath):
-                       # FIXME: don't use hardcoded path
-                       pngpath = "/usr/lib/enigma2/python/Plugins/SystemPlugins/SkinSelector/noprev.png"
+                       pngpath = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SkinSelector/noprev.png")
 
                if self.previewPath != pngpath:
                        self.previewPath = pngpath
@@ -131,7 +125,7 @@ def SkinSelMain(session, **kwargs):
 
 def SkinSelSetup(menuid, **kwargs):
        if menuid == "system":
-               return [(_("Skin..."), SkinSelMain, "skin_selector", None)]
+               return [(_("Skin"), SkinSelMain, "skin_selector", None)]
        else:
                return []
 
index 3925fc4..871f0a3 100755 (executable)
@@ -4,6 +4,7 @@ from Screens.Console import Console
 from Components.ActionMap import ActionMap, NumberActionMap
 from Components.Pixmap import Pixmap
 from Components.Label import Label
+from Components.Sources.StaticText import StaticText
 from Components.MenuList import MenuList
 from Components.config import getConfigListEntry, configfile, ConfigSelection, ConfigSubsection, ConfigText, ConfigLocations
 from Components.config import config
@@ -34,7 +35,7 @@ def getBackupFilename():
 
 class BackupScreen(Screen, ConfigListScreen):
        skin = """
-               <screen position="135,144" size="350,310" title="Backup running..." >
+               <screen position="135,144" size="350,310" title="Backup is running" >
                <widget name="config" position="10,10" size="330,250" transparent="1" scrollbarMode="showOnDemand" />
                </screen>"""
                
@@ -62,7 +63,7 @@ class BackupScreen(Screen, ConfigListScreen):
                self.setWindowTitle()
 
        def setWindowTitle(self):
-               self.setTitle(_("Backup running..."))
+               self.setTitle(_("Backup is running..."))
 
        def doBackup(self):
                try:
@@ -76,14 +77,14 @@ class BackupScreen(Screen, ConfigListScreen):
                                        remove(self.newfilename)
                                rename(self.fullbackupfilename,self.newfilename)
                        if self.finished_cb:
-                               self.session.openWithCallback(self.finished_cb, Console, title = _("Backup running"), cmdlist = ["tar -czvf " + self.fullbackupfilename + " " + self.backupdirs],finishedCallback = self.backupFinishedCB,closeOnSuccess = True)
+                               self.session.openWithCallback(self.finished_cb, Console, title = _("Backup is running..."), cmdlist = ["tar -czvf " + self.fullbackupfilename + " " + self.backupdirs],finishedCallback = self.backupFinishedCB,closeOnSuccess = True)
                        else:
-                               self.session.open(Console, title = _("Backup running"), cmdlist = ["tar -czvf " + self.fullbackupfilename + " " + self.backupdirs],finishedCallback = self.backupFinishedCB, closeOnSuccess = True)
+                               self.session.open(Console, title = _("Backup is running..."), cmdlist = ["tar -czvf " + self.fullbackupfilename + " " + self.backupdirs],finishedCallback = self.backupFinishedCB, closeOnSuccess = True)
                except OSError:
                        if self.finished_cb:
-                               self.session.openWithCallback(self.finished_cb, MessageBox, _("Sorry your backup destination is not writeable.\nPlease choose an other one."), MessageBox.TYPE_INFO)
+                               self.session.openWithCallback(self.finished_cb, MessageBox, _("Sorry your backup destination is not writeable.\nPlease choose an other one."), MessageBox.TYPE_INFO, timeout = 10 )
                        else:
-                               self.session.openWithCallback(self.backupErrorCB,MessageBox, _("Sorry your backup destination is not writeable.\nPlease choose an other one."), MessageBox.TYPE_INFO)
+                               self.session.openWithCallback(self.backupErrorCB,MessageBox, _("Sorry your backup destination is not writeable.\nPlease choose an other one."), MessageBox.TYPE_INFO, timeout = 10 )
 
        def backupFinishedCB(self,retval = None):
                self.close(True)
@@ -98,21 +99,21 @@ class BackupScreen(Screen, ConfigListScreen):
 
 class BackupSelection(Screen):
        skin = """
-       <screen position="135,125" size="450,310" title="Select files/folders to backup...">
-               <widget name="checkList" position="10,10" size="430,250" transparent="1" scrollbarMode="showOnDemand" />
-               <ePixmap position="0,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
-               <widget name="key_red" position="0,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-               <ePixmap position="140,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
-               <widget name="key_green" position="140,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-               <ePixmap position="280,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
-               <widget name="key_yellow" position="280,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-       </screen>"""
+               <screen name="BackupSelection" position="center,center" size="560,400" title="Select files/folders to backup">
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+                       <widget name="checkList" position="5,50" size="550,250" transparent="1" scrollbarMode="showOnDemand" />
+               </screen>"""
 
        def __init__(self, session):
                Screen.__init__(self, session)
-               self["key_red"] = Label(_("Cancel"))
-               self["key_green"] = Label(_("Save"))
-               self["key_yellow"] = Label()
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Save"))
+               self["key_yellow"] = StaticText()
                
                self.selectedFiles = config.plugins.configurationbackup.backupdirs.value
                defaultDir = '/'
@@ -143,7 +144,7 @@ class BackupSelection(Screen):
                self.selectionChanged()
 
        def setWindowTitle(self):
-               self.setTitle(_("Select files/folders to backup..."))
+               self.setTitle(_("Select files/folders to backup"))
 
        def selectionChanged(self):
                current = self["checkList"].getCurrent()[0]
@@ -186,23 +187,23 @@ class BackupSelection(Screen):
 
 class RestoreMenu(Screen):
        skin = """
-               <screen position="135,144" size="450,300" title="Restore backups..." >
-               <widget name="filelist" position="10,10" size="430,230" scrollbarMode="showOnDemand" />
-               <ePixmap position="0,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/red.png" transparent="1" alphatest="on" />
-               <widget name="canceltext" position="0,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-               <ePixmap position="140,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/green.png" transparent="1" alphatest="on" />
-               <widget name="restoretext" position="140,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-               <ePixmap position="280,265" zPosition="1" size="140,40" pixmap="skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
-               <widget name="deletetext" position="280,265" zPosition="2" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+               <screen name="RestoreMenu" position="center,center" size="560,400" title="Restore backups" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+                       <widget name="filelist" position="5,50" size="550,230" scrollbarMode="showOnDemand" />
                </screen>"""
 
        def __init__(self, session, plugin_path):
                Screen.__init__(self, session)
                self.skin_path = plugin_path
                
-               self["canceltext"] = Label(_("Cancel"))
-               self["restoretext"] = Label(_("Restore"))
-               self["deletetext"] = Label(_("Delete"))
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Restore"))
+               self["key_yellow"] = StaticText(_("Delete"))
 
                self.sel = []
                self.val = []
@@ -232,7 +233,7 @@ class RestoreMenu(Screen):
                self.setWindowTitle()
 
        def setWindowTitle(self):
-               self.setTitle(_("Restore backups..."))
+               self.setTitle(_("Restore backups"))
 
 
        def fill_list(self):
@@ -277,7 +278,7 @@ class RestoreMenu(Screen):
 
 class RestoreScreen(Screen, ConfigListScreen):
        skin = """
-               <screen position="135,144" size="350,310" title="Restore running..." >
+               <screen position="135,144" size="350,310" title="Restore is running..." >
                <widget name="config" position="10,10" size="330,250" transparent="1" scrollbarMode="showOnDemand" />
                </screen>"""
                
@@ -285,7 +286,7 @@ class RestoreScreen(Screen, ConfigListScreen):
                Screen.__init__(self, session)
                self.session = session
                self.runRestore = runRestore
-               self["actions"] = ActionMap(["WizardActions", "DirectionActions"], 
+               self["actions"] = ActionMap(["WizardActions", "DirectionActions"],
                {
                        "ok": self.close,
                        "back": self.close,
@@ -305,13 +306,17 @@ class RestoreScreen(Screen, ConfigListScreen):
                self.setWindowTitle()
 
        def setWindowTitle(self):
-               self.setTitle(_("Restore running..."))
+               self.setTitle(_("Restore is running..."))
 
        def doRestore(self):
+               if path.exists("/proc/stb/vmpeg/0/dst_width"):
+                       restorecmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "echo 0 > /proc/stb/vmpeg/0/dst_height", "echo 0 > /proc/stb/vmpeg/0/dst_left", "echo 0 > /proc/stb/vmpeg/0/dst_top", "echo 0 > /proc/stb/vmpeg/0/dst_width", "killall -9 enigma2"]
+               else:
+                       restorecmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "killall -9 enigma2"]
                if self.finished_cb:
-                       self.session.openWithCallback(self.finished_cb, Console, title = _("Restore running"), cmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "killall -9 enigma2"])
+                       self.session.openWithCallback(self.finished_cb, Console, title = _("Restore is running..."), cmdlist = restorecmdlist)
                else:
-                       self.session.open(Console, title = _("Restore running"), cmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "killall -9 enigma2"])
+                       self.session.open(Console, title = _("Restore is running..."), cmdlist = restorecmdlist)
 
        def backupFinishedCB(self,retval = None):
                self.close(True)
index 136e9d0..c10a7e5 100755 (executable)
@@ -7,7 +7,7 @@ from Screens.Ipkg import Ipkg
 from Components.ActionMap import ActionMap, NumberActionMap
 from Components.Input import Input
 from Components.Ipkg import IpkgComponent
-from Components.Label import Label
+from Components.Sources.StaticText import StaticText
 from Components.ScrollLabel import ScrollLabel
 from Components.Pixmap import Pixmap
 from Components.MenuList import MenuList
@@ -74,9 +74,11 @@ def load_cache(cache_file):
 
 class UpdatePluginMenu(Screen):
        skin = """
-               <screen name="UpdatePluginMenu" position="80,130" size="560,330" title="Softwaremanager..." >
-                       <ePixmap pixmap="skin_default/border_menu_300.png" position="5,10" zPosition="1" size="300,300" transparent="1" alphatest="on" />
-                       <widget source="menu" render="Listbox" position="10,20" size="290,260" scrollbarMode="showOnDemand">
+               <screen name="UpdatePluginMenu" position="center,center" size="560,400" title="Software manager" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <ePixmap pixmap="skin_default/border_menu_300.png" position="5,50" zPosition="1" size="300,300" transparent="1" alphatest="on" />
+                       <widget source="menu" render="Listbox" position="10,60" size="290,260" scrollbarMode="showOnDemand">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
                                                        MultiContentEntryText(pos = (2, 2), size = (290, 22), flags = RT_HALIGN_LEFT, text = 1), # index 0 is the MenuText,
@@ -86,7 +88,7 @@ class UpdatePluginMenu(Screen):
                                        }
                                </convert>
                        </widget>
-                       <widget source="menu" render="Listbox" position="310,10" size="240,300" scrollbarMode="showNever" selectionDisabled="1">
+                       <widget source="menu" render="Listbox" position="310,50" size="240,300" scrollbarMode="showNever" selectionDisabled="1">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
                                                        MultiContentEntryText(pos = (2, 2), size = (240, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 2 is the Description,
@@ -111,7 +113,7 @@ class UpdatePluginMenu(Screen):
                        self.list.append(("software-restore", _("Software restore"), _("\nRestore your Dreambox with a new firmware." ) + self.oktext))
                        self.list.append(("system-backup", _("Backup system settings"), _("\nBackup your Dreambox settings." ) + self.oktext))
                        self.list.append(("system-restore",_("Restore system settings"), _("\nRestore your Dreambox settings." ) + self.oktext))
-                       self.list.append(("ipkg-install", _("Install local IPKG"),  _("\nScan for local packages and install them." ) + self.oktext))
+                       self.list.append(("ipkg-install", _("Install local extension"),  _("\nScan for local packages and install them." ) + self.oktext))
                        if config.usage.setup_level.index >= 2: # expert+
                                self.list.append(("advanced", _("Advanced Options"), _("\nAdvanced options and settings." ) + self.oktext))
                elif self.menu == 1:
@@ -123,7 +125,8 @@ class UpdatePluginMenu(Screen):
                        self.list.append(("ipkg-source",_("Choose upgrade source"), _("\nEdit the upgrade source address." ) + self.oktext))
 
                self["menu"] = List(self.list)
-                               
+               self["key_red"] = StaticText(_("Close"))
+
                self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"],
                {
                        "ok": self.go,
@@ -136,14 +139,14 @@ class UpdatePluginMenu(Screen):
                self.backupfile = getBackupFilename()
                self.fullbackupfilename = self.backuppath + "/" + self.backupfile
                self.onShown.append(self.setWindowTitle)
-               
+
        def layoutFinished(self):
                idx = 0
                self["menu"].index = idx
-               
+
        def setWindowTitle(self):
-               self.setTitle(_("Software manager..."))
-               
+               self.setTitle(_("Software manager"))
+
        def go(self):
                current = self["menu"].getCurrent()
                if current:
@@ -160,14 +163,14 @@ class UpdatePluginMenu(Screen):
                                elif (current == "system-restore"):
                                        if os_path.exists(self.fullbackupfilename):
                                                self.session.openWithCallback(self.startRestore, MessageBox, _("Are you sure you want to restore your Enigma2 backup?\nEnigma2 will restart after the restore"))
-                                       else:   
-                                               self.session.open(MessageBox, _("Sorry no backups found!"), MessageBox.TYPE_INFO)
+                                       else:
+                                               self.session.open(MessageBox, _("Sorry no backups found!"), MessageBox.TYPE_INFO, timeout = 10)
                                elif (current == "ipkg-install"):
                                        try:
                                                from Plugins.Extensions.MediaScanner.plugin import main
                                                main(self.session)
                                        except:
-                                               self.session.open(MessageBox, _("Sorry MediaScanner is not installed!"), MessageBox.TYPE_INFO)
+                                               self.session.open(MessageBox, _("Sorry MediaScanner is not installed!"), MessageBox.TYPE_INFO, timeout = 10)
                                elif (current == "advanced"):
                                        self.session.open(UpdatePluginMenu, 1)
                        elif self.menu == 1:
@@ -200,7 +203,7 @@ class UpdatePluginMenu(Screen):
                config.plugins.configurationbackup.save()
                config.save()
                self.createBackupfolders()
-       
+
        def runUpgrade(self, result):
                if result:
                        self.session.open(UpdatePlugin, self.skin_path)
@@ -212,13 +215,13 @@ class UpdatePluginMenu(Screen):
                        if (os_path.exists(self.backuppath) == False):
                                makedirs(self.backuppath)
                except OSError:
-                       self.session.open(MessageBox, _("Sorry, your backup destination is not writeable.\n\nPlease choose another one."), MessageBox.TYPE_INFO)
+                       self.session.open(MessageBox, _("Sorry, your backup destination is not writeable.\n\nPlease choose another one."), MessageBox.TYPE_INFO, timeout = 10)
 
        def backupDone(self,retval = None):
                if retval is True:
-                       self.session.open(MessageBox, _("Backup done."), MessageBox.TYPE_INFO)
+                       self.session.open(MessageBox, _("Backup done."), MessageBox.TYPE_INFO, timeout = 10)
                else:
-                       self.session.open(MessageBox, _("Backup failed."), MessageBox.TYPE_INFO)
+                       self.session.open(MessageBox, _("Backup failed."), MessageBox.TYPE_INFO, timeout = 10)
 
        def startRestore(self, ret = False):
                if (ret == True):
@@ -227,20 +230,20 @@ class UpdatePluginMenu(Screen):
 
 class IPKGMenu(Screen):
        skin = """
-               <screen name="IPKGMenu" position="135,144" size="450,320" title="Select IPKG source......" >
-                       <widget name="filelist" position="10,10" size="430,240" scrollbarMode="showOnDemand" />
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,280" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="20,290" size="140,21" zPosition="10" font="Regular;21" transparent="1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,280" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="edittext" position="170,290" size="300,21" zPosition="10" font="Regular;21" transparent="1" />
+               <screen name="IPKGMenu" position="center,center" size="560,400" title="Select upgrade source to edit." >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="filelist" position="5,50" size="550,340" scrollbarMode="showOnDemand" />
                </screen>"""
 
        def __init__(self, session, plugin_path):
                Screen.__init__(self, session)
                self.skin_path = plugin_path
                
-               self["closetext"] = Label(_("Close"))
-               self["edittext"] = Label(_("Edit"))
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText(_("Edit"))
 
                self.sel = []
                self.val = []
@@ -269,8 +272,7 @@ class IPKGMenu(Screen):
                self.setWindowTitle()
 
        def setWindowTitle(self):
-               self.setTitle(_("Select IPKG source to edit..."))
-
+               self.setTitle(_("Select upgrade source to edit."))
 
        def fill_list(self):
                self.flist = []
@@ -300,14 +302,14 @@ class IPKGMenu(Screen):
 
 class IPKGSource(Screen):
        skin = """
-               <screen name="IPKGSource" position="100,100" size="550,80" title="IPKG source" >
-                       <widget name="text" position="10,10" size="530,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,40" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="20,50" size="140,21" zPosition="10" font="Regular;21" transparent="1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,40" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="edittext" position="170,50" size="300,21" zPosition="10" font="Regular;21" transparent="1" />
+               <screen name="IPKGSource" position="center,center" size="560,80" title="Edit upgrade source url." >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="text" position="5,50" size="550,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
                </screen>"""
-               
+
        def __init__(self, session, configfile = None):
                Screen.__init__(self, session)
                self.session = session
@@ -327,14 +329,14 @@ class IPKGSource(Screen):
                x= int(desk.size().width())
                y= int(desk.size().height())
 
-               self["closetext"] = Label(_("Cancel"))
-               self["edittext"] = Label(_("Save"))
-               
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Save"))
+
                if (y>=720):
                        self["text"] = Input(text, maxSize=False, type=Input.TEXT)
                else:
                        self["text"] = Input(text, maxSize=False, visible_width = 55, type=Input.TEXT)
-                       
+
                self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions","ShortcutActions"], 
                {
                        "ok": self.go,
@@ -366,8 +368,8 @@ class IPKGSource(Screen):
                self["text"].right()
 
        def setWindowTitle(self):
-               self.setTitle(_("Edit IPKG source URL..."))
-               
+               self.setTitle(_("Edit upgrade source url."))
+
        def go(self):
                text = self["text"].getText()
                if text:
@@ -376,7 +378,7 @@ class IPKGSource(Screen):
                        fp.write("\n")
                        fp.close()
                self.close()
-               
+
        def keyLeft(self):
                self["text"].left()
        
@@ -401,8 +403,12 @@ class IPKGSource(Screen):
 
 class PacketManager(Screen):
        skin = """
-               <screen position="90,80" size="530,420" title="IPKG upgrade..." >
-                       <widget source="list" render="Listbox" position="5,10" size="520,365" scrollbarMode="showOnDemand">
+               <screen name="PacketManager" position="center,center" size="530,420" title="Packet manager" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="list" render="Listbox" position="5,50" size="520,365" scrollbarMode="showOnDemand">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
                                                        MultiContentEntryText(pos = (5, 1), size = (440, 28), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
@@ -415,10 +421,6 @@ class PacketManager(Screen):
                                        }
                                </convert>
                        </widget>
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,380" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="20,390" size="140,21" zPosition="10" font="Regular;21" transparent="1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,380" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="reloadtext" position="170,390" size="300,21" zPosition="10" font="Regular;21" transparent="1" />
                </screen>"""
                
        def __init__(self, session, plugin_path, args = None):
@@ -437,8 +439,8 @@ class PacketManager(Screen):
                self.list = []
                self.statuslist = []
                self["list"] = List(self.list)
-               self["closetext"] = Label(_("Close"))
-               self["reloadtext"] = Label(_("Reload"))
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText(_("Reload"))
 
                self.list_updating = True
                self.packetlist = []
@@ -639,7 +641,7 @@ class PacketManager(Screen):
                                        status = "installable"
                                        self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status))
                                if not any(x[0].strip().endswith(x) for x in self.unwanted_extensions):
-                                       self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status])       
+                                       self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status])
                        write_cache(self.cache_file, self.cachelist)
                        self['list'].setList(self.list)
 
@@ -652,8 +654,16 @@ class PluginManager(Screen, DreamInfoHandler):
        lastDownloadDate = None
 
        skin = """
-               <screen position="80,80" size="560,440" title="Plugin manager..." >
-                       <widget source="list" render="Listbox" position="5,5" size="550,360" scrollbarMode="showOnDemand">
+               <screen name="PluginManager" position="center,center" size="560,440" title="Plugin manager" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+                       <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+                       <widget source="list" render="Listbox" position="5,50" size="550,360" scrollbarMode="showOnDemand">
                                <convert type="TemplatedMultiContent">
                                {"templates":
                                        {"default": (51,[
@@ -663,25 +673,17 @@ class PluginManager(Screen, DreamInfoHandler):
                                                        MultiContentEntryPixmapAlphaTest(pos = (0, 49), size = (550, 2), png = 6), # index 6 is the div pixmap
                                                ]),
                                        "category": (40,[
-                                                       MultiContentEntryText(pos = (30, 0), size = (500, 23), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
-                                                       MultiContentEntryText(pos = (30, 24), size = (500, 14), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the description
+                                                       MultiContentEntryText(pos = (30, 0), size = (500, 22), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
+                                                       MultiContentEntryText(pos = (30, 22), size = (500, 16), font=1, flags = RT_HALIGN_LEFT, text = 1), # index 1 is the description
                                                        MultiContentEntryPixmapAlphaTest(pos = (0, 38), size = (550, 2), png = 3), # index 3 is the div pixmap
                                                ])
                                        },
-                                       "fonts": [gFont("Regular", 22),gFont("Regular", 14)],
+                                       "fonts": [gFont("Regular", 22),gFont("Regular", 16)],
                                        "itemHeight": 52
                                }
                                </convert>
                        </widget>
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,370" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="0,370" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,370" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="installtext" position="140,370" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,370" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="viewtext" position="280,370" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/blue.png" position="420,370" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="bluetext" position="420,370" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <widget name="status" position="10,410" zPosition="10" size="540,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+                       <widget source="status" render="Label" position="5,410" zPosition="10" size="540,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
                </screen>"""
 
        def __init__(self, session, plugin_path, args = None):
@@ -714,11 +716,11 @@ class PluginManager(Screen, DreamInfoHandler):
                self.selectedFiles = []
                self.categoryList = []
                self["list"] = List(self.list)
-               self["closetext"] = Label(_("Close"))
-               self["installtext"] = Label()
-               self["viewtext"] = Label()
-               self["bluetext"] = Label()
-               self["status"] = Label()
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText("")
+               self["key_yellow"] = StaticText("")
+               self["key_blue"] = StaticText("")
+               self["status"] = StaticText("")
 
                self.list_updating = True
                self.packetlist = []
@@ -735,10 +737,6 @@ class PluginManager(Screen, DreamInfoHandler):
                if not self.selectionChanged in self["list"].onSelectionChanged:
                        self["list"].onSelectionChanged.append(self.selectionChanged)
 
-               self["installtext"].hide()
-               self["bluetext"].hide()
-               self["viewtext"].hide()
-               self["status"].hide()
                self.currList = ""
                self.currentSelectedTag = None
                self.currentSelectedIndex = None
@@ -764,12 +762,9 @@ class PluginManager(Screen, DreamInfoHandler):
                                if len(self.Console.appContainers):
                                        for name in self.Console.appContainers.keys():
                                                self.Console.kill(name)
-                       if len(self.cmdList) and len(self.selectedFiles):
-                               self.session.openWithCallback(self.runInstall, PluginManagerInfo, self.skin_path, self.cmdList)
-                       elif not len(self.cmdList) and self.available_updates > 0:
-                               self.cmdList = []
-                               self.cmdList.append((IpkgComponent.CMD_UPGRADE, { "test_only": False }))
-                               self.session.openWithCallback(self.runInstall, PluginManagerInfo, self.skin_path, self.cmdList)
+                       self.prepareInstall()
+                       if len(self.cmdList):
+                               self.session.openWithCallback(self.runExecute, PluginManagerInfo, self.skin_path, self.cmdList)
                        else:
                                self.close()
 
@@ -777,19 +772,13 @@ class PluginManager(Screen, DreamInfoHandler):
                if self.currList != "status":
                        self.session.open(PluginManagerHelp, self.skin_path)
 
-       def runInstall(self, result):
-               if result:
-                       self.session.openWithCallback(self.runExecuteFinished, Ipkg, cmdList = self.cmdList)
-               else:
-                       self.close()
-
        def setState(self,status = None):
                if status:
                        self.currList = "status"
                        self.statuslist = []
-                       self["installtext"].hide()
-                       self["bluetext"].hide()
-                       self["viewtext"].hide()
+                       self["key_green"].setText("")
+                       self["key_blue"].setText("")
+                       self["key_yellow"].setText("")
                        divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png"))
                        if status == 'update':
                                statuspng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/upgrade.png"))
@@ -812,43 +801,39 @@ class PluginManager(Screen, DreamInfoHandler):
 
        def selectionChanged(self):
                current = self["list"].getCurrent()
-               self["status"].hide()
+               self["status"].setText("")
                if current:
                        if self.currList == "packages":
-                               self["closetext"].setText(_("Back"))
+                               self["key_red"].setText(_("Back"))
                                if current[4] == 'installed':
-                                       self["installtext"].setText(_("Remove"))
+                                       self["key_green"].setText(_("Remove"))
                                elif current[4] == 'installable':
-                                       self["installtext"].setText(_("Install"))
+                                       self["key_green"].setText(_("Install"))
                                elif current[4] == 'remove':
-                                       self["installtext"].setText(_("Undo\nRemove"))
+                                       self["key_green"].setText(_("Undo\nRemove"))
                                elif current[4] == 'install':
-                                       self["installtext"].setText(_("Undo\nInstall"))
-                               self["installtext"].show()
-                               self["viewtext"].setText(_("View details"))
-                               self["viewtext"].show()
-                               self["bluetext"].hide()
+                                       self["key_green"].setText(_("Undo\nInstall"))
+                               self["key_yellow"].setText(_("View details"))
+                               self["key_blue"].setText("")
                                if len(self.selectedFiles) == 0 and self.available_updates is not 0:
                                        self["status"].setText(_("There are at least ") + str(self.available_updates) + _(" updates available."))
-                                       self["status"].show()
                                elif len(self.selectedFiles) is not 0:
                                        self["status"].setText(str(len(self.selectedFiles)) + _(" packages selected."))
-                                       self["status"].show()
+                               else:
+                                       self["status"].setText(_("There is nothing to be done."))
                        elif self.currList == "category":
-                               self["closetext"].setText(_("Close"))
-                               self["installtext"].hide()
-                               self["bluetext"].hide()
+                               self["key_red"].setText(_("Close"))
+                               self["key_green"].setText("")
+                               self["key_yellow"].setText("")
+                               self["key_blue"].setText("")
                                if len(self.selectedFiles) == 0 and self.available_updates is not 0:
                                        self["status"].setText(_("There are at least ") + str(self.available_updates) + _(" updates available."))
-                                       self["status"].show()
-                                       self["viewtext"].setText(_("Update"))
-                                       self["viewtext"].show()
+                                       self["key_yellow"].setText(_("Update"))
                                elif len(self.selectedFiles) is not 0:
                                        self["status"].setText(str(len(self.selectedFiles)) + _(" packages selected."))
-                                       self["status"].show()
-                                       self["viewtext"].setText(_("Process"))
-                                       self["viewtext"].show()
-                       self["closetext"].show()
+                                       self["key_yellow"].setText(_("Process"))
+                               else:
+                                       self["status"].setText(_("There is nothing to be done."))
 
        def getSelectionState(self, detailsFile):
                for entry in self.selectedFiles:
@@ -976,9 +961,11 @@ class PluginManager(Screen, DreamInfoHandler):
                                        if (os_path.exists(detailsfile) == True):
                                                self.session.openWithCallback(self.detailsClosed, PluginDetails, self.skin_path, current)
                                        else:
-                                               self.session.open(MessageBox, _("Sorry, no Details available!"), MessageBox.TYPE_INFO)
+                                               self.session.open(MessageBox, _("Sorry, no Details available!"), MessageBox.TYPE_INFO, timeout = 10)
                        elif self.currList == "category":
-                               self.installPlugins()
+                               self.prepareInstall()
+                               if len(self.cmdList):
+                                       self.session.openWithCallback(self.runExecute, PluginManagerInfo, self.skin_path, self.cmdList)
 
        def detailsClosed(self, result):
                if result:
@@ -1093,7 +1080,7 @@ class PluginManager(Screen, DreamInfoHandler):
                        else: # dynamically generate non existent tags
                                return(( str(tag), _("View list of available ") + str(tag) + _(" extensions." ), tag, divpng ))
 
-       def installPlugins(self):
+       def prepareInstall(self):
                self.cmdList = []
                if self.available_updates > 0:
                        self.cmdList.append((IpkgComponent.CMD_UPGRADE, { "test_only": False }))
@@ -1124,12 +1111,12 @@ class PluginManager(Screen, DreamInfoHandler):
                                                self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": plugin[2] }))
                                        else:
                                                self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": plugin[2] }))
-               if len(self.cmdList):
-                       self.session.openWithCallback(self.runExecute, PluginManagerInfo, self.skin_path, self.cmdList)
 
        def runExecute(self, result):
                if result:
                        self.session.openWithCallback(self.runExecuteFinished, Ipkg, cmdList = self.cmdList)
+               else:
+                       self.close()
 
        def runExecuteFinished(self):
                self.session.openWithCallback(self.ExecuteReboot, MessageBox, _("Install or remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
@@ -1149,10 +1136,12 @@ class PluginManager(Screen, DreamInfoHandler):
 
 class PluginManagerInfo(Screen):
        skin = """
-               <screen position="80,80" size="560,450" title="Plugin manager job information..." >
-                       <widget name="status" position="5,5" zPosition="10" size="540,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/div-h.png" position="0,35" zPosition="10" size="550,2" transparent="1" alphatest="on" />
-                       <widget source="list" render="Listbox" position="5,45" size="550,360" scrollbarMode="showOnDemand" selectionDisabled="1">
+               <screen name="PluginManagerInfo" position="center,center" size="560,440" title="Plugin manager activity information" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="list" render="Listbox" position="5,50" size="550,350" scrollbarMode="showOnDemand" selectionDisabled="1">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
                                                        MultiContentEntryText(pos = (50, 1), size = (150, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
@@ -1165,10 +1154,8 @@ class PluginManagerInfo(Screen):
                                        }
                                </convert>
                        </widget>
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,410" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="0,410" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,410" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="continuetext" position="140,410" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,410" zPosition="10" size="560,2" transparent="1" alphatest="on" />
+                       <widget source="status" render="Label" position="5,420" zPosition="10" size="550,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
                </screen>"""
 
        def __init__(self, session, plugin_path, cmdlist = None):
@@ -1187,20 +1174,22 @@ class PluginManagerInfo(Screen):
 
                self.list = []
                self["list"] = List(self.list)
-               self["closetext"] = Label(_("Cancel"))
-               self["continuetext"] = Label(_("Continue"))
-               self["status"] = Label(_("Following tasks will be done after you press continue."))
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Continue"))
+               self["status"] = StaticText(_("Following tasks will be done after you press continue!"))
 
                self.onShown.append(self.setWindowTitle)
                self.onLayoutFinish.append(self.rebuildList)
 
        def setWindowTitle(self):
-               self.setTitle(_("Plugin manager process information..."))
+               self.setTitle(_("Plugin manager activity information"))
 
        def rebuildList(self):
                self.list = []
                if self.cmdlist is not None:
                        for entry in self.cmdlist:
+                               action = ""
+                               info = ""
                                cmd = entry[0]
                                if cmd == 0:
                                        action = 'install'
@@ -1208,7 +1197,6 @@ class PluginManagerInfo(Screen):
                                        action = 'remove'
                                else:
                                        action = 'upgrade'
-
                                args = entry[1]
                                if cmd == 0:
                                        info = args['package']
@@ -1229,9 +1217,9 @@ class PluginManagerInfo(Screen):
                if action == 'install':
                        return(( _('Installing'), info, installpng, divpng))
                elif action == 'remove':
-                       return(( _('Remove'), info, removepng, divpng))
+                       return(( _('Removeing'), info, removepng, divpng))
                else:
-                       return(( _('Upgrade'), info, upgradepng, divpng))
+                       return(( _('Upgradeing'), info, upgradepng, divpng))
 
        def exit(self):
                self.close(False)
@@ -1242,10 +1230,10 @@ class PluginManagerInfo(Screen):
 
 class PluginManagerHelp(Screen):
        skin = """
-               <screen position="80,80" size="560,450" title="Plugin manager help..." >
-                       <widget name="status" position="5,5" zPosition="10" size="540,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/div-h.png" position="0,35" zPosition="10" size="550,2" transparent="1" alphatest="on" />
-                       <widget source="list" render="Listbox" position="5,45" size="550,360" scrollbarMode="showOnDemand" selectionDisabled="1">
+               <screen name="PluginManagerHelp" position="center,center" size="560,440" title="Plugin manager help" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="list" render="Listbox" position="5,50" size="550,350" scrollbarMode="showOnDemand" selectionDisabled="1">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
                                                        MultiContentEntryText(pos = (50, 1), size = (540, 24), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name
@@ -1258,8 +1246,8 @@ class PluginManagerHelp(Screen):
                                        }
                                </convert>
                        </widget>
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,410" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="0,410" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,410" zPosition="10" size="550,2" transparent="1" alphatest="on" />
+                       <widget source="status" render="Label" position="5,420" zPosition="10" size="550,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
                </screen>"""
 
        def __init__(self, session, plugin_path):
@@ -1275,14 +1263,14 @@ class PluginManagerHelp(Screen):
 
                self.list = []
                self["list"] = List(self.list)
-               self["closetext"] = Label(_("Close"))
-               self["status"] = Label(_("Here is a small overview of the available icon states."))
+               self["key_red"] = StaticText(_("Close"))
+               self["status"] = StaticText(_("A small overview of the available icon states and actions."))
 
                self.onShown.append(self.setWindowTitle)
                self.onLayoutFinish.append(self.rebuildList)
 
        def setWindowTitle(self):
-               self.setTitle(_("Plugin manager help..."))
+               self.setTitle(_("Plugin manager help"))
 
        def rebuildList(self):
                self.list = []
@@ -1315,16 +1303,16 @@ class PluginManagerHelp(Screen):
 
 class PluginDetails(Screen, DreamInfoHandler):
        skin = """
-               <screen name="PluginDetails" position="60,90" size="600,420" title="PluginDetails..." >
-                       <widget name="author" position="10,10" size="500,25" zPosition="10" font="Regular;21" transparent="1" />
-                       <widget name="statuspic" position="550,0" size="48,48" alphatest="on"/>
-                       <widget name="divpic" position="0,40" size="600,2" alphatest="on"/>
-                       <widget name="detailtext" position="10,50" size="270,330" zPosition="10" font="Regular;21" transparent="1" halign="left" valign="top"/>
-                       <widget name="screenshot" position="290,50" size="300,330" alphatest="on"/>
-                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,380" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="closetext" position="0,380" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
-                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,380" zPosition="2" size="140,40" transparent="1" alphatest="on" />
-                       <widget name="statetext" position="140,380" zPosition="10" size="140,40" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+               <screen name="PluginDetails" position="center,center" size="600,440" title="Plugin details" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="author" render="Label" position="10,50" size="500,25" zPosition="10" font="Regular;21" transparent="1" />
+                       <widget name="statuspic" position="550,40" size="48,48" alphatest="on"/>
+                       <widget name="divpic" position="0,80" size="600,2" alphatest="on"/>
+                       <widget name="detailtext" position="10,90" size="270,330" zPosition="10" font="Regular;21" transparent="1" halign="left" valign="top"/>
+                       <widget name="screenshot" position="290,90" size="300,330" alphatest="on"/>
                </screen>"""
        def __init__(self, session, plugin_path, packagedata = None):
                Screen.__init__(self, session)
@@ -1355,13 +1343,14 @@ class PluginDetails(Screen, DreamInfoHandler):
                        "right": self.pageDown,
                }, -1)
 
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText("")
+               self["author"] = StaticText()
                self["statuspic"] = Pixmap()
                self["divpic"] = Pixmap()
                self["screenshot"] = Pixmap()
-               self["closetext"] = Label(_("Close"))
-               self["statetext"] = Label()
                self["detailtext"] = ScrollLabel()
-               self["author"] = Label()
+
                self["statuspic"].hide()
                self["screenshot"].hide()
                self["divpic"].hide()
@@ -1424,9 +1413,9 @@ class PluginDetails(Screen, DreamInfoHandler):
                self["author"].setText(_("Author: ") + self.author)
                self["detailtext"].setText(self.description.strip())
                if self.pluginstate == 'installable':
-                       self["statetext"].setText(_("Install"))
+                       self["key_green"].setText(_("Install"))
                else:
-                       self["statetext"].setText(_("Remove"))
+                       self["key_green"].setText(_("Remove"))
 
        def loadThumbnail(self, entry):
                thumbnailUrl = None
@@ -1521,55 +1510,54 @@ class PluginDetails(Screen, DreamInfoHandler):
 
 class UpdatePlugin(Screen):
        skin = """
-               <screen position="100,100" size="550,200" title="Software Update..." >
+               <screen name="UpdatePlugin" position="center,center" size="550,200" title="Software update" >
                        <widget name="activityslider" position="0,0" size="550,5"  />
-                       <widget name="slider" position="0,100" size="550,30"  />
-                       <widget name="package" position="10,30" size="540,20" font="Regular;18"/>
-                       <widget name="status" position="10,60" size="540,45" font="Regular;18"/>
+                       <widget name="slider" position="0,150" size="550,30"  />
+                       <widget source="package" render="Label" position="10,30" size="540,20" font="Regular;18" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
+                       <widget source="status" render="Label" position="10,60" size="540,45" font="Regular;20" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
                </screen>"""
-               
+
        def __init__(self, session, args = None):
-               self.skin = UpdatePlugin.skin
                Screen.__init__(self, session)
-               
+
                self.sliderPackages = { "dreambox-dvb-modules": 1, "enigma2": 2, "tuxbox-image-info": 3 }
-               
+
                self.slider = Slider(0, 4)
                self["slider"] = self.slider
                self.activityslider = Slider(0, 100)
                self["activityslider"] = self.activityslider
-               self.status = Label(_("Upgrading Dreambox... Please wait"))
+               self.status = StaticText(_("Upgrading Dreambox... Please wait"))
                self["status"] = self.status
-               self.package = Label()
+               self.package = StaticText()
                self["package"] = self.package
-               
+
                self.packages = 0
                self.error = 0
-               
+
                self.activity = 0
                self.activityTimer = eTimer()
                self.activityTimer.callback.append(self.doActivityTimer)
                self.activityTimer.start(100, False)
-                               
+
                self.ipkg = IpkgComponent()
                self.ipkg.addCallback(self.ipkgCallback)
-               
+
                self.updating = True
                self.package.setText(_("Package list update"))
                self.ipkg.startCmd(IpkgComponent.CMD_UPDATE)
-                       
+
                self["actions"] = ActionMap(["WizardActions"], 
                {
                        "ok": self.exit,
                        "back": self.exit
                }, -1)
-               
+
        def doActivityTimer(self):
                self.activity += 1
                if self.activity == 100:
                        self.activity = 0
                self.activityslider.setValue(self.activity)
-               
+
        def ipkgCallback(self, event, param):
                if event == IpkgComponent.EVENT_DOWNLOAD:
                        self.status.setText(_("Downloading"))
@@ -1627,7 +1615,7 @@ class UpdatePlugin(Screen):
                                self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"))
                        else:
                                self.close()
-                       
+
        def exitAnswer(self, result):
                if result is not None and result:
                        quitMainloop(2)
@@ -1636,17 +1624,17 @@ class UpdatePlugin(Screen):
 
 class IpkgInstaller(Screen):
        skin = """
-               <screen position="100,100" size="550,400" title="..." >
-                       <widget name="red" halign="center" valign="center" position="0,0" size="140,60" backgroundColor="red" font="Regular;21" />
-                       <widget name="green" halign="center" valign="center" position="140,0" text="Install selected" size="140,60" backgroundColor="green" font="Regular;21" />
-                       <widget name="yellow" halign="center" valign="center" position="280,0" size="140,60" backgroundColor="yellow" font="Regular;21" />
-                       <widget name="blue" halign="center" valign="center" position="420,0" size="140,60" backgroundColor="blue" font="Regular;21" />
-                       <widget name="list" position="0,60" size="550,360" />
-               </screen>
-               """
+               <screen name="IpkgInstaller" position="center,center" size="550,450" title="Install extensions" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="list" position="5,50" size="540,360" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,410" zPosition="10" size="560,2" transparent="1" alphatest="on" />
+                       <widget source="introduction" render="Label" position="5,420" zPosition="10" size="550,30" halign="center" valign="center" font="Regular;22" transparent="1" shadowColor="black" shadowOffset="-1,-1" />
+               </screen>"""
        
        def __init__(self, session, list):
-               self.skin = IpkgInstaller.skin
                Screen.__init__(self, session)
 
                self.list = SelectionList()
@@ -1654,18 +1642,18 @@ class IpkgInstaller(Screen):
                for listindex in range(len(list)):
                        self.list.addSelection(list[listindex], list[listindex], listindex, True)
 
-               self["red"] = Label()
-               self["green"] = Label()
-               self["yellow"] = Label()
-               self["blue"] = Label()
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText(_("Install"))
+               self["introduction"] = StaticText(_("Press OK to toggle the selection."))
                
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], 
                {
                        "ok": self.list.toggleSelection, 
-                       "cancel": self.close, 
+                       "cancel": self.close,
+                       "red": self.close,
                        "green": self.install
                }, -1)
-               
+
        def install(self):
                list = self.list.getSelectionsList()
                cmdList = []
@@ -1673,6 +1661,7 @@ class IpkgInstaller(Screen):
                        cmdList.append((IpkgComponent.CMD_INSTALL, { "package": item[1] }))
                self.session.open(Ipkg, cmdList = cmdList)
 
+
 def filescan_open(list, session, **kwargs):
        filelist = [x.path for x in list]
        session.open(IpkgInstaller, filelist) # list
@@ -1687,7 +1676,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False), 
                                ], 
                        name = "Ipkg", 
-                       description = _("Install software updates..."),
+                       description = _("Install extensions."),
                        openfnc = filescan_open, )
 
 
@@ -1707,6 +1696,6 @@ def Plugins(path, **kwargs):
                PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup), 
                PluginDescriptor(name=_("Ipkg"), where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan)
        ]
-       if config.usage.setup_level.index >= 2: # expert+       
-               list.append(PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=UpgradeMain))     
+       if config.usage.setup_level.index >= 2: # expert+
+               list.append(PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=UpgradeMain))
        return list
index 7db0255..4ba4958 100755 (executable)
-from enigma import eTimer
-from Components.config import config, ConfigSubsection, ConfigSlider, ConfigSelection, ConfigYesNo, NoSave
+from Components.config import config, ConfigSubsection, ConfigSlider, ConfigSelection, ConfigNothing, NoSave
 from Tools.CList import CList
-from Tools.HardwareInfo import HardwareInfo
-import os
+from os import path as os_path
 # The "VideoEnhancement" is the interface to /proc/stb/vmpeg/0.
 
 class VideoEnhancement:
-
-       firstRun = None
+       firstRun = True
 
        def __init__(self):
                self.last_modes_preferred =  [ ]
-               self.on_hotplug = CList()
                self.createConfig()
 
        def createConfig(self, *args):
-               hw_type = HardwareInfo().get_device_name()
                config.pep = ConfigSubsection()
-
                config.pep.configsteps = NoSave(ConfigSelection(choices=[1, 5, 10, 25], default = 1))
 
-               def setContrast(config):
-                       myval = int(config.value*256)
-                       try:
-                               print "--> setting contrast to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_contrast", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_contrast."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.contrast = ConfigSlider(default=128, limits=(0,256))
-               config.pep.contrast.addNotifier(setContrast)
-
-               def setSaturation(config):
-                       myval = int(config.value*256)
-                       try:
-                               print "--> setting saturation to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_saturation", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_saturaion."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.saturation = ConfigSlider(default=128, limits=(0,256))
-               config.pep.saturation.addNotifier(setSaturation)
-
-               def setHue(config):
-                       myval = int(config.value*256)
-                       try:
-                               print "--> setting hue to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_hue", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_hue."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.hue = ConfigSlider(default=128, limits=(0,256))
-               config.pep.hue.addNotifier(setHue)
-
-               def setBrightness(config):
-                       myval = int(config.value*256)
-                       try:
-                               print "--> setting brightness to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_brightness", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_brightness."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.brightness = ConfigSlider(default=128, limits=(0,256))
-               config.pep.brightness.addNotifier(setBrightness)
-
-               def setBlock_noise_reduction(config):
-                       myval = int(config.value)
-                       try:
-                               print "--> setting block_noise_reduction to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_block_noise_reduction", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_block_noise_reduction."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.block_noise_reduction = ConfigSlider(default=0, limits=(0,5))
-               config.pep.block_noise_reduction.addNotifier(setBlock_noise_reduction)
-
-               def setMosquito_noise_reduction(config):
-                       myval = int(config.value)
-                       try:
-                               print "--> setting mosquito_noise_reduction to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_mosquito_noise_reduction", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_mosquito_noise_reduction."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.mosquito_noise_reduction = ConfigSlider(default=0, limits=(0,5))
-               config.pep.mosquito_noise_reduction.addNotifier(setMosquito_noise_reduction)
-
-               def setDigital_contour_removal(config):
-                       myval = int(config.value)
-                       try:
-                               print "--> setting digital_contour_removal to: %0.8X" % myval
-                               open("/proc/stb/vmpeg/0/pep_digital_contour_removal", "w").write("%0.8X" % myval)
-                       except IOError:
-                               print "couldn't write pep_digital_contour_removal."
-
-                       if VideoEnhancement.firstRun is False:
-                               self.setConfiguredValues()
-
-               config.pep.digital_contour_removal = ConfigSlider(default=0, limits=(0,5))
-               config.pep.digital_contour_removal.addNotifier(setDigital_contour_removal)
-
-               if hw_type in ( 'dm8000', 'dm500hd' ):
+               if os_path.exists("/proc/stb/vmpeg/0/pep_contrast"):
+                       def setContrast(config):
+                               myval = int(config.value*256)
+                               try:
+                                       print "--> setting contrast to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_contrast", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_contrast."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.contrast = ConfigSlider(default=128, limits=(0,256))
+                       config.pep.contrast.addNotifier(setContrast)
+               else:
+                       config.pep.contrast = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_saturation"):
+                       def setSaturation(config):
+                               myval = int(config.value*256)
+                               try:
+                                       print "--> setting saturation to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_saturation", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_saturaion."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.saturation = ConfigSlider(default=128, limits=(0,256))
+                       config.pep.saturation.addNotifier(setSaturation)
+               else:
+                       config.pep.saturation = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_hue"):
+                       def setHue(config):
+                               myval = int(config.value*256)
+                               try:
+                                       print "--> setting hue to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_hue", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_hue."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.hue = ConfigSlider(default=128, limits=(0,256))
+                       config.pep.hue.addNotifier(setHue)
+               else:
+                       config.pep.hue = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_brightness"):
+                       def setBrightness(config):
+                               myval = int(config.value*256)
+                               try:
+                                       print "--> setting brightness to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_brightness", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_brightness."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.brightness = ConfigSlider(default=128, limits=(0,256))
+                       config.pep.brightness.addNotifier(setBrightness)
+               else:
+                       config.pep.brightness = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_block_noise_reduction"):
+                       def setBlock_noise_reduction(config):
+                               myval = int(config.value)
+                               try:
+                                       print "--> setting block_noise_reduction to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_block_noise_reduction", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_block_noise_reduction."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.block_noise_reduction = ConfigSlider(default=0, limits=(0,5))
+                       config.pep.block_noise_reduction.addNotifier(setBlock_noise_reduction)
+               else:
+                       config.pep.block_noise_reduction = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_mosquito_noise_reduction"):
+                       def setMosquito_noise_reduction(config):
+                               myval = int(config.value)
+                               try:
+                                       print "--> setting mosquito_noise_reduction to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_mosquito_noise_reduction", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_mosquito_noise_reduction."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.mosquito_noise_reduction = ConfigSlider(default=0, limits=(0,5))
+                       config.pep.mosquito_noise_reduction.addNotifier(setMosquito_noise_reduction)
+               else:
+                       config.pep.mosquito_noise_reduction = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_digital_contour_removal"):
+                       def setDigital_contour_removal(config):
+                               myval = int(config.value)
+                               try:
+                                       print "--> setting digital_contour_removal to: %0.8X" % myval
+                                       open("/proc/stb/vmpeg/0/pep_digital_contour_removal", "w").write("%0.8X" % myval)
+                               except IOError:
+                                       print "couldn't write pep_digital_contour_removal."
+
+                               if not VideoEnhancement.firstRun:
+                                       self.setConfiguredValues()
+
+                       config.pep.digital_contour_removal = ConfigSlider(default=0, limits=(0,5))
+                       config.pep.digital_contour_removal.addNotifier(setDigital_contour_removal)
+               else:
+                       config.pep.digital_contour_removal = NoSave(ConfigNothing())
+
+               if os_path.exists("/proc/stb/vmpeg/0/pep_split"):
                        def setSplitMode(config):
                                try:
                                        print "--> setting splitmode to:",str(config.value)
@@ -126,7 +141,7 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_split."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.split = ConfigSelection(choices={
@@ -135,7 +150,10 @@ class VideoEnhancement:
                                        "right": _("Right")},
                                        default = "off")
                        config.pep.split.addNotifier(setSplitMode)
+               else:
+                       config.pep.split = NoSave(ConfigNothing())
 
+               if os_path.exists("/proc/stb/vmpeg/0/pep_sharpness"):
                        def setSharpness(config):
                                myval = int(config.value*256)
                                try:
@@ -144,12 +162,15 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_sharpness."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.sharpness = ConfigSlider(default=0, limits=(0,256))
                        config.pep.sharpness.addNotifier(setSharpness)
+               else:
+                       config.pep.sharpness = NoSave(ConfigNothing())
 
+               if os_path.exists("/proc/stb/vmpeg/0/pep_auto_flesh"):
                        def setAutoflesh(config):
                                myval = int(config.value)
                                try:
@@ -158,12 +179,15 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_auto_flesh."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.auto_flesh = ConfigSlider(default=0, limits=(0,4))
                        config.pep.auto_flesh.addNotifier(setAutoflesh)
+               else:
+                       config.pep.auto_flesh = NoSave(ConfigNothing())
 
+               if os_path.exists("/proc/stb/vmpeg/0/pep_green_boost"):
                        def setGreenboost(config):
                                myval = int(config.value)
                                try:
@@ -172,12 +196,15 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_green_boost."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.green_boost = ConfigSlider(default=0, limits=(0,4))
                        config.pep.green_boost.addNotifier(setGreenboost)
+               else:
+                       config.pep.green_boost = NoSave(ConfigNothing())
 
+               if os_path.exists("/proc/stb/vmpeg/0/pep_blue_boost"):
                        def setBlueboost(config):
                                myval = int(config.value)
                                try:
@@ -186,12 +213,15 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_blue_boost."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.blue_boost = ConfigSlider(default=0, limits=(0,4))
                        config.pep.blue_boost.addNotifier(setBlueboost)
+               else:
+                       config.pep.blue_boost = NoSave(ConfigNothing())
 
+               if os_path.exists("/proc/stb/vmpeg/0/pep_dynamic_contrast"):
                        def setDynamic_contrast(config):
                                myval = int(config.value)
                                try:
@@ -200,26 +230,44 @@ class VideoEnhancement:
                                except IOError:
                                        print "couldn't write pep_dynamic_contrast."
 
-                               if VideoEnhancement.firstRun is False:
+                               if not VideoEnhancement.firstRun:
                                        self.setConfiguredValues()
 
                        config.pep.dynamic_contrast = ConfigSlider(default=0, limits=(0,256))
                        config.pep.dynamic_contrast.addNotifier(setDynamic_contrast)
+               else:
+                       config.pep.dynamic_contrast = NoSave(ConfigNothing())
 
-               VideoEnhancement.firstRun = True
+               try:
+                       x = config.av.scaler_sharpness.value
+               except KeyError:
+                       if os_path.exists("/proc/stb/vmpeg/0/pep_scaler_sharpness"):
+                               def setScaler_sharpness(config):
+                                       myval = int(config.value)
+                                       try:
+                                               print "--> setting scaler_sharpness to: %0.8X" % myval
+                                               open("/proc/stb/vmpeg/0/pep_scaler_sharpness", "w").write("%0.8X" % myval)
+                                       except IOError:
+                                               print "couldn't write pep_scaler_sharpness."
+
+                                       if not VideoEnhancement.firstRun:
+                                               self.setConfiguredValues()
+
+                               config.av.scaler_sharpness = ConfigSlider(default=13, limits=(0,26))
+                               config.av.scaler_sharpness.addNotifier(setScaler_sharpness)
+                       else:
+                               config.av.scaler_sharpness = NoSave(ConfigNothing())
+
+               if VideoEnhancement.firstRun:
+                       self.setConfiguredValues()
+
+               VideoEnhancement.firstRun = False
 
        def setConfiguredValues(self):
                try:
                        print "--> applying pep values"
                        open("/proc/stb/vmpeg/0/pep_apply", "w").write("1")
-                       VideoEnhancement.firstRun = False
                except IOError:
                        print "couldn't apply pep values."
 
-
-if config.usage.setup_level.index >= 2: # expert+
-       hw_type = HardwareInfo().get_device_name()
-       if hw_type in ( 'dm8000', 'dm800', 'dm500hd' ):
-               video_enhancement = VideoEnhancement()
-               if video_enhancement.firstRun == True:
-                       video_enhancement.setConfiguredValues()
+VideoEnhancement()
index 8f8f56e..0276e04 100755 (executable)
@@ -1,17 +1,12 @@
 from Plugins.Plugin import PluginDescriptor
 from Components.ConfigList import ConfigListScreen
-from Components.config import getConfigListEntry, config, ConfigBoolean
+from Components.config import getConfigListEntry, config, ConfigNothing, ConfigSelection
 from Components.ActionMap import ActionMap
 from Components.Sources.StaticText import StaticText
 from Screens.Screen import Screen
-from Screens.VirtualKeyBoard import VirtualKeyBoard
-from Screens.ChoiceBox import ChoiceBox
 from Screens.MessageBox import MessageBox
-from enigma import ePoint
-from Tools import Notifications
-from Tools.HardwareInfo import HardwareInfo
-from VideoEnhancement import video_enhancement
-import os
+import VideoEnhancement
+from os import path as os_path
 
 class VideoEnhancementSetup(Screen, ConfigListScreen):
 
@@ -30,35 +25,15 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                <widget source="introduction" render="Label" position="5,400" size="550,25" zPosition="10" font="Regular;21" halign="center" valign="center" backgroundColor="#25062748" transparent="1" />
        </screen>"""
 
-       def __init__(self, session, hw):
+       def __init__(self, session):
                Screen.__init__(self, session)
 
                self.session = session
-               self.hw = hw
                self.onChangedEntry = [ ]
                self.setup_title = "Videoenhancement"
 
-               self.contrastEntry = None
-               self.saturationEntry = None
-               self.hueEntry = None
-               self.brightnessEntry = None
-               self.splitEntry = None
-               self.sharpnessEntry = None
-               self.auto_fleshEntry = None
-               self.green_boostEntry = None
-               self.blue_boostEntry = None
-               self.block_noise_reductionEntry = None
-               self.mosquito_noise_reductionEntry = None
-               self.digital_contour_removalEntry = None
-               self.dynamic_contrastEntry = None
-
-               # handle hotplug by re-creating setup
-               self.onShow.append(self.startHotplug)
-               self.onHide.append(self.stopHotplug)
-
                self.list = [ ]
                self.xtdlist = [ ]
-               self.hw_type = HardwareInfo().get_device_name()
                ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry)
 
                self["actions"] = ActionMap(["SetupActions", "ColorActions"],
@@ -82,12 +57,6 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
        def layoutFinished(self):
                self.setTitle(_("Video enhancement setup"))
 
-       def startHotplug(self):
-               self.hw.on_hotplug.append(self.createSetup)
-
-       def stopHotplug(self):
-               self.hw.on_hotplug.remove(self.createSetup)
-
        def rememberOldSettings(self):
                self.oldContrast = config.pep.contrast.value
                self.oldSaturation = config.pep.saturation.value
@@ -96,73 +65,42 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                self.oldBlock_noise = config.pep.block_noise_reduction.value
                self.oldMosquito_noise = config.pep.mosquito_noise_reduction.value
                self.oldDigital_contour = config.pep.digital_contour_removal.value
-               if self.hw_type in ('dm8000', 'dm500hd'):
-                       self.oldSplit = config.pep.split.value
-                       self.oldSharpness = config.pep.sharpness.value
-                       self.oldAuto_flesh = config.pep.auto_flesh.value
-                       self.oldGreen_boost = config.pep.green_boost.value
-                       self.oldBlue_boost = config.pep.blue_boost.value
-                       self.oldDynamic_contrast = config.pep.dynamic_contrast.value
+               self.oldScaler_sharpness = config.av.scaler_sharpness.value
+               self.oldSplit = config.pep.split.value
+               self.oldSharpness = config.pep.sharpness.value
+               self.oldAuto_flesh = config.pep.auto_flesh.value
+               self.oldGreen_boost = config.pep.green_boost.value
+               self.oldBlue_boost = config.pep.blue_boost.value
+               self.oldDynamic_contrast = config.pep.dynamic_contrast.value
+
+       def addToConfigList(self, description, configEntry, add_to_xtdlist=False):
+               if isinstance(configEntry, ConfigNothing):
+                       return None
+               entry = getConfigListEntry(description, configEntry)
+               self.list.append(entry);
+               if add_to_xtdlist:
+                       self.xtdlist.append(entry)
+               return entry
 
        def createSetup(self):
-               self.contrastEntry = getConfigListEntry(_("Contrast"), config.pep.contrast)
-               self.saturationEntry = getConfigListEntry(_("Saturation"), config.pep.saturation)
-               self.hueEntry = getConfigListEntry(_("Hue"), config.pep.hue)
-               self.brightnessEntry = getConfigListEntry(_("Brightness"), config.pep.brightness)
-               self.block_noise_reductionEntry = getConfigListEntry(_("Block noise reduction"), config.pep.block_noise_reduction)
-               self.mosquito_noise_reductionEntry = getConfigListEntry(_("Mosquito noise reduction"), config.pep.mosquito_noise_reduction)
-               self.digital_contour_removalEntry = getConfigListEntry(_("Digital contour removal"), config.pep.digital_contour_removal)
-
-               self.list = [
-                       self.contrastEntry
-               ]
-
-               self.list.extend((
-                       self.saturationEntry,
-                       self.hueEntry,
-                       self.brightnessEntry
-               ))
-               if self.hw_type == 'dm800':
-                       self.list.extend((
-                               self.block_noise_reductionEntry,
-                               self.mosquito_noise_reductionEntry,
-                               self.digital_contour_removalEntry
-                       ))
-
-               elif self.hw_type in ( 'dm8000', 'dm500hd' ):
-                       self.splitEntry = getConfigListEntry(_("Split preview mode"), config.pep.split)
-                       self.sharpnessEntry = getConfigListEntry(_("Sharpness"), config.pep.sharpness)
-                       self.auto_fleshEntry = getConfigListEntry(_("Auto flesh"), config.pep.auto_flesh)
-                       self.green_boostEntry = getConfigListEntry(_("Green boost"), config.pep.green_boost)
-                       self.blue_boostEntry = getConfigListEntry(_("Blue boost"), config.pep.blue_boost)
-                       self.dynamic_contrastEntry = getConfigListEntry(_("Dynamic contrast"), config.pep.dynamic_contrast)
-
-                       self.xtdlist = [
-                               self.splitEntry
-                       ]
-
-                       self.xtdlist.extend((
-                               self.sharpnessEntry,
-                               self.auto_fleshEntry,
-                               self.green_boostEntry,
-                               self.blue_boostEntry,
-                               self.block_noise_reductionEntry,
-                               self.mosquito_noise_reductionEntry,
-                               self.digital_contour_removalEntry,
-                               self.dynamic_contrastEntry
-                       ))
-
-                       self.list.extend((
-                               self.splitEntry,
-                               self.sharpnessEntry,
-                               self.auto_fleshEntry,
-                               self.green_boostEntry,
-                               self.blue_boostEntry,
-                               self.block_noise_reductionEntry,
-                               self.mosquito_noise_reductionEntry,
-                               self.digital_contour_removalEntry,
-                               self.dynamic_contrastEntry
-                       ))
+               self.list = []
+               self.xtdlist = []
+               addToConfigList = self.addToConfigList
+               self.contrastEntry = addToConfigList(_("Contrast"), config.pep.contrast)
+               self.saturationEntry = addToConfigList(_("Saturation"), config.pep.saturation)
+               self.hueEntry = addToConfigList(_("Hue"), config.pep.hue)
+               self.brightnessEntry = addToConfigList(_("Brightness"), config.pep.brightness)
+               self.scaler_sharpnessEntry = addToConfigList(_("Scaler sharpness"), config.av.scaler_sharpness)
+               self.splitEntry = addToConfigList(_("Split preview mode"), config.pep.split, True)
+               add_to_xtdlist = self.splitEntry is not None
+               self.sharpnessEntry = addToConfigList(_("Sharpness"), config.pep.sharpness, add_to_xtdlist)
+               self.auto_fleshEntry = addToConfigList(_("Auto flesh"), config.pep.auto_flesh, add_to_xtdlist)
+               self.green_boostEntry = addToConfigList(_("Green boost"), config.pep.green_boost, add_to_xtdlist)
+               self.blue_boostEntry = addToConfigList(_("Blue boost"), config.pep.blue_boost, add_to_xtdlist)
+               self.dynamic_contrastEntry = addToConfigList(_("Dynamic contrast"), config.pep.dynamic_contrast, add_to_xtdlist)
+               self.block_noise_reductionEntry = addToConfigList(_("Block noise reduction"), config.pep.block_noise_reduction, add_to_xtdlist)
+               self.mosquito_noise_reductionEntry = addToConfigList(_("Mosquito noise reduction"), config.pep.mosquito_noise_reduction, add_to_xtdlist)
+               self.digital_contour_removalEntry = addToConfigList(_("Digital contour removal"), config.pep.digital_contour_removal, add_to_xtdlist)
 
                self["config"].list = self.list
                self["config"].l.setSeperation(300)
@@ -182,7 +120,6 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                current = self["config"].getCurrent()
                if current == self.splitEntry:
                        ConfigListScreen.keyLeft(self)
-                       self.createSetup()
                elif current != self.splitEntry and current in self.xtdlist:
                        self.previewlist = [
                                current,
@@ -201,7 +138,6 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                current = self["config"].getCurrent()
                if current == self.splitEntry:
                        ConfigListScreen.keyRight(self)
-                       self.createSetup()
                elif current != self.splitEntry and current in self.xtdlist:
                        self.previewlist = [
                                current,
@@ -257,20 +193,20 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                config.pep.mosquito_noise_reduction.setValue(self.oldMosquito_noise)
                        if self.digital_contour_removalEntry is not None:
                                config.pep.digital_contour_removal.setValue(self.oldDigital_contour)
-
-                       if self.hw_type in ( 'dm8000', 'dm500hd' ):
-                               if self.splitEntry is not None:
-                                       config.pep.split.setValue('off')
-                               if self.sharpnessEntry is not None:
-                                       config.pep.sharpness.setValue(self.oldSharpness)
-                               if self.auto_fleshEntry is not None:
-                                       config.pep.auto_flesh.setValue(self.oldAuto_flesh)
-                               if self.green_boostEntry is not None:
-                                       config.pep.green_boost.setValue(self.oldGreen_boost)
-                               if self.blue_boostEntry is not None:
-                                       config.pep.blue_boost.setValue(self.oldBlue_boost)
-                               if self.dynamic_contrastEntry is not None:
-                                       config.pep.dynamic_contrast.setValue(self.oldDynamic_contrast)
+                       if self.scaler_sharpnessEntry is not None:
+                               config.av.scaler_sharpness.setValue(self.oldScaler_sharpness)
+                       if self.splitEntry is not None:
+                               config.pep.split.setValue('off')
+                       if self.sharpnessEntry is not None:
+                               config.pep.sharpness.setValue(self.oldSharpness)
+                       if self.auto_fleshEntry is not None:
+                               config.pep.auto_flesh.setValue(self.oldAuto_flesh)
+                       if self.green_boostEntry is not None:
+                               config.pep.green_boost.setValue(self.oldGreen_boost)
+                       if self.blue_boostEntry is not None:
+                               config.pep.blue_boost.setValue(self.oldBlue_boost)
+                       if self.dynamic_contrastEntry is not None:
+                               config.pep.dynamic_contrast.setValue(self.oldDynamic_contrast)
                        self.keySave()
 
        def keyYellow(self):
@@ -294,20 +230,20 @@ class VideoEnhancementSetup(Screen, ConfigListScreen):
                                config.pep.mosquito_noise_reduction.setValue(0)
                        if self.digital_contour_removalEntry is not None:
                                config.pep.digital_contour_removal.setValue(0)
-
-                       if self.hw_type in ( 'dm8000', 'dm500hd' ):
-                               if self.splitEntry is not None:
-                                       config.pep.split.setValue('off')
-                               if self.sharpnessEntry is not None:
-                                       config.pep.sharpness.setValue(0)
-                               if self.auto_fleshEntry is not None:
-                                       config.pep.auto_flesh.setValue(0)
-                               if self.green_boostEntry is not None:
-                                       config.pep.green_boost.setValue(0)
-                               if self.blue_boostEntry is not None:
-                                       config.pep.blue_boost.setValue(0)
-                               if self.dynamic_contrastEntry is not None:
-                                       config.pep.dynamic_contrast.setValue(0)
+                       if self.scaler_sharpnessEntry is not None:
+                               config.av.scaler_sharpness.setValue(13)
+                       if self.splitEntry is not None:
+                               config.pep.split.setValue('off')
+                       if self.sharpnessEntry is not None:
+                               config.pep.sharpness.setValue(0)
+                       if self.auto_fleshEntry is not None:
+                               config.pep.auto_flesh.setValue(0)
+                       if self.green_boostEntry is not None:
+                               config.pep.green_boost.setValue(0)
+                       if self.blue_boostEntry is not None:
+                               config.pep.blue_boost.setValue(0)
+                       if self.dynamic_contrastEntry is not None:
+                               config.pep.dynamic_contrast.setValue(0)
                        self.keySave()
 
        def keyBlue(self):
@@ -447,23 +383,16 @@ class VideoEnhancementPreview(Screen, ConfigListScreen):
                from Screens.Setup import SetupSummary
                return SetupSummary
 
-
 def videoEnhancementSetupMain(session, **kwargs):
-       session.open(VideoEnhancementSetup, video_enhancement)
-
+       session.open(VideoEnhancementSetup)
 
 def startSetup(menuid):
        if menuid != "system":
                return [ ]
-
        return [(_("Video enhancement settings") , videoEnhancementSetupMain, "videoenhancement_setup", 41)]
 
-
 def Plugins(**kwargs):
        list = []
-       if config.usage.setup_level.index >= 2: # expert+
-               hw_type = HardwareInfo().get_device_name()
-               if hw_type in ( 'dm8000', 'dm800', 'dm500hd' ):
-                       if (os.path.exists("/proc/stb/vmpeg/0/pep_apply") == True):
-                               list.append(PluginDescriptor(name=_("Videoenhancement Setup"), description=_("Advanced Video Enhancement Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup))
+       if config.usage.setup_level.index >= 2 and os_path.exists("/proc/stb/vmpeg/0/pep_apply"):
+               list.append(PluginDescriptor(name=_("Videoenhancement Setup"), description=_("Advanced Video Enhancement Setup"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup))
        return list
index 7a2127a..1b820fb 100644 (file)
@@ -2,7 +2,7 @@ from Screens.Screen import Screen
 from Plugins.Plugin import PluginDescriptor
 from Components.SystemInfo import SystemInfo
 from Components.ConfigList import ConfigListScreen
-from Components.config import getConfigListEntry, config, ConfigBoolean
+from Components.config import getConfigListEntry, config, ConfigBoolean, ConfigNothing, ConfigSlider
 
 from VideoHardware import video_hw
 
@@ -106,6 +106,9 @@ class VideoSetup(Screen, ConfigListScreen):
                if SystemInfo["CanChangeOsdAlpha"]:
                        self.list.append(getConfigListEntry(_("OSD visibility"), config.av.osd_alpha))
 
+               if not isinstance(config.av.scaler_sharpness, ConfigNothing):
+                       self.list.append(getConfigListEntry(_("Scaler sharpness"), config.av.scaler_sharpness))
+
                self["config"].list = self.list
                self["config"].l.setList(self.list)
 
index 74882a3..305e355 100644 (file)
@@ -25,7 +25,8 @@ class HelpMenu(Screen, Rc):
        def SelectionChanged(self):
                self.clearSelectedKeys()
                selection = self["list"].getCurrent()
-               selection = selection[3]
+               if selection:
+                       selection = selection[3]
                #arrow = self["arrowup"]
                print "selection:", selection
 
old mode 100644 (file)
new mode 100755 (executable)
index 42e37f8..45f97c6
@@ -74,7 +74,7 @@ static std::string getConfigFileValue(const char *entry)
                {
                        return configvalue;
                }
-               else // get Value from enigma2 settings file
+               else // get value from enigma2 settings file
                {
                        FILE *f = fopen(configfile.c_str(), "r");
                        if (!f)
@@ -119,7 +119,21 @@ static std::string getFileContent(const char *file)
                        char line[1024];
                        if (!fgets(line, 1024, f))
                                break;
-                       filecontent += line;
+                       std::string tmp = line;
+                       std::string password;
+                       int pwdpos = tmp.find(".password=", 0);
+                       if( pwdpos != std::string::npos)
+                       {
+                               filecontent += tmp.substr(0,pwdpos +10);
+                               for ( int pos = pwdpos +10; pos < tmp.length()-1; ++pos )
+                               {
+                                       filecontent += "X";
+                               }
+                               filecontent += "\n";
+                       }
+                       else {
+                               filecontent += line;
+                       }
                }
                fclose(f);
        }
@@ -242,7 +256,7 @@ void bsodFatal(const char *component)
                        fprintf(f, "\t\t<kernelcmdline>%s</kernelcmdline>\n", kernelcmd);
                }
                std::string sendAnonCrashlog = getConfigFileValue("config.plugins.crashlogautosubmit.sendAnonCrashlog");
-               if (sendAnonCrashlog == "False" || sendAnonCrashlog == "false" || sendAnonCrashlog == "") // defaults to false, so "" is also ok.
+               if (sendAnonCrashlog == "False" || sendAnonCrashlog == "false") // defaults to true... default anonymized crashlogs
                {
                        std::string ca = getFileContent("/proc/stb/info/ca");
                        if (ca != "Error")
index 5ba7cfa..e8addfc 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tuxbox-enigma 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-08-10 09:03+0200\n"
+"POT-Creation-Date: 2009-09-23 09:45+0200\n"
 "PO-Revision-Date: 2009-08-10 00:32+0100\n"
 "Last-Translator: Sebastian <zbigzbig2@op.pl>\n"
 "Language-Team: none\n"
@@ -924,18 +924,9 @@ msgstr "Nie mogę odczytać nośnika. Czy nośnik znajduje się w czytniku?"
 msgid "Couldn't record due to conflicting timer %s"
 msgstr "Nie można nagrać z powodu konfliktu timera %s"
 
-msgid "Crashlog settings"
-msgstr ""
-
 msgid "CrashlogAutoSubmit"
 msgstr "CrashlogAutoSubmit"
 
-msgid "CrashlogAutoSubmit settings"
-msgstr ""
-
-msgid "CrashlogAutoSubmit settings..."
-msgstr ""
-
 msgid ""
 "Crashlogs found!\n"
 "Send them to Dream Multimedia ?"
@@ -1013,12 +1004,6 @@ msgstr "Duński"
 msgid "Date"
 msgstr "Data"
 
-msgid "Decide what should be done when crashlogs are found."
-msgstr ""
-
-msgid "Decide what should happen to the crashlogs after submission."
-msgstr ""
-
 msgid "Deep Standby"
 msgstr "Głębokie Czuwanie"
 
@@ -1228,11 +1213,6 @@ msgstr "Czy chcesz przywrócić swoje ustawienia?"
 msgid "Do you want to resume this playback?"
 msgstr "Czy chcesz wznowić odtwarzanie?"
 
-msgid ""
-"Do you want to submit your email address and name so that we can contact you "
-"if needed?"
-msgstr ""
-
 msgid "Do you want to update your Dreambox?"
 msgstr "Chcesz zaktualizować Dreamboxa?"
 
@@ -1423,9 +1403,6 @@ msgstr "Wejdź do menu głównego..."
 msgid "Enter the service pin"
 msgstr "Wpisz Pin serwisu"
 
-msgid "Enter your email address so that we can contact you if needed."
-msgstr ""
-
 msgid "Error"
 msgstr "Błąd"
 
@@ -1664,9 +1641,6 @@ msgstr "Pozioma [H]"
 msgid "How many minutes do you want to record?"
 msgstr "Ile minut ma trwać nagranie?"
 
-msgid "How to handle found crashlogs?"
-msgstr ""
-
 msgid "Hungarian"
 msgstr "Węgierski"
 
@@ -1726,9 +1700,6 @@ msgid ""
 "In order to record a timer, the TV was switched to the recording service!\n"
 msgstr "Aby nagrywać z timera, TV został włączony na nagrywany serwis!\n"
 
-msgid "Include your email and name (optional) in the mail?"
-msgstr ""
-
 msgid "Increased voltage"
 msgstr "Zwiększone napięcie"
 
@@ -2270,15 +2241,9 @@ msgstr "Nie, nie rób nic."
 msgid "No, just start my dreambox"
 msgstr "Nie, tylko włącz Dreamboxa"
 
-msgid "No, not now"
-msgstr ""
-
 msgid "No, scan later manually"
 msgstr "Nie, skanuj ręcznie później"
 
-msgid "No, send them never"
-msgstr ""
-
 msgid "None"
 msgstr "Brak"
 
@@ -2346,9 +2311,6 @@ msgstr "Online - Aktualizacja"
 msgid "Only Free scan"
 msgstr "Skanuj tylko FTA"
 
-msgid "Optionally enter your name if you want to."
-msgstr ""
-
 msgid "Orbital Position"
 msgstr "Pozycja orbitalna"
 
@@ -2487,12 +2449,6 @@ msgstr "Wpisz poprawny kod pin"
 msgid "Please enter the old pin code"
 msgstr "Wpisz stary kod pin"
 
-msgid "Please enter your email address here:"
-msgstr ""
-
-msgid "Please enter your name here (optional):"
-msgstr ""
-
 msgid "Please follow the instructions on the TV"
 msgstr "Podążaj za instrukcjami na TV"
 
@@ -3294,12 +3250,6 @@ msgstr "Odstępy w pokazie slajdów (w sec)"
 msgid "Slot %d"
 msgstr "Slot %d"
 
-msgid "Slovakian"
-msgstr ""
-
-msgid "Slovenian"
-msgstr ""
-
 msgid "Slow"
 msgstr "Wolno"
 
@@ -4299,9 +4249,6 @@ msgstr "Zachód"
 msgid "What do you want to scan?"
 msgstr "Co chcesz skanować?"
 
-msgid "What to do with submitted crashlogs?"
-msgstr ""
-
 msgid ""
 "When you do a factory reset, you will lose ALL your configuration data\n"
 "(including bouquets, services, satellite data ...)\n"
@@ -4349,9 +4296,6 @@ msgstr "Tak"
 msgid "Yes, and delete this movie"
 msgstr "Tak, usuń ten film"
 
-msgid "Yes, and don't ask again"
-msgstr ""
-
 msgid "Yes, backup my settings!"
 msgstr "Tak, zrób kopie moich ustawień!"
 
@@ -4522,9 +4466,6 @@ msgstr ""
 "Twój Dreambox jest niewłaściwie połączony do internetu. Sprawdź to i spróbuj "
 "ponownie."
 
-msgid "Your email address:"
-msgstr ""
-
 msgid ""
 "Your frontprocessor firmware must be upgraded.\n"
 "Press OK to start upgrade."
@@ -4532,9 +4473,6 @@ msgstr ""
 "Twój frontprocessor musi zostać zaktualizowany.\n"
 "Naciśnij OK aby rozpocząć aktualizacje."
 
-msgid "Your name (optional):"
-msgstr ""
-
 msgid "Your network configuration has been activated."
 msgstr "Twoja konfiguracja sieci została aktywowana."
 
@@ -5439,6 +5377,145 @@ msgstr "Przełącz"
 msgid "zapped"
 msgstr "Przełączony"
 
+msgid "IMDb Details Plugin"
+msgstr "Plugin IMDb"
+
+msgid "Video enhancement settings"
+msgstr "Konfiguracja obrazu..."
+
+msgid "Video enhancement setup"
+msgstr "Konfiguracja Obrazu"
+
+msgid "Last config"
+msgstr "Ostatnie ust"
+
+msgid "Saturation"
+msgstr "Nasycenie"
+
+msgid "Hue"
+msgstr "Barwa"
+
+msgid "Split preview mode"
+msgstr "Oddzielny tryb podglądu"
+
+msgid "Sharpness"
+msgstr "Ostrość"
+
+msgid "Auto flesh"
+msgstr "Auto flesh"
+
+msgid "Green boost"
+msgstr "Zielony"
+
+msgid "Blue boost"
+msgstr "Niebieski"
+
+msgid "Block noise reduction"
+msgstr "Blokowa redukcja szumów"
+
+msgid "Mosquito noise reduction"
+msgstr "Punktowa redukcja szumów"
+
+msgid "Digital contour removal"
+msgstr "Cyfrowe usunięcie konturu"
+
+msgid "Dynamic contrast"
+msgstr "Dynamiczny kontrast"
+
+msgid "Current value: "
+msgstr "Obecna wartość: "
+
+msgid "VideoEnhancementSetup"
+msgstr "Konfiguracja obrazu"
+
+msgid "VideoEnhancementPreview"
+msgstr "Podgląd ustawień"
+
+msgid "Video enhancement preview"
+msgstr "Podgląd ustawień"
+
+msgid "Use this video enhancement settings?"
+msgstr "Użyć tych ustawień?"
+
+msgid "Reset video enhancement settings to your last configuration?"
+msgstr "Zresetować ustawienia do ostatniej dobrej konfiguracji?"
+
+msgid "Reset video enhancement settings to system defaults?"
+msgstr "Zresetować ustawienia do domyślnych?"
+
+msgid "CrashlogAutoSubmit settings..."
+msgstr "Ustawienia crashlog..."
+
+msgid "How to handle found crashlogs?"
+msgstr "Czynność po znalezieniu crashloga"
+
+msgid "Crashlog settings"
+msgstr "Ustawienia crashlog"
+
+msgid "What to do with submitted crashlogs?"
+msgstr "Co zrobić z danymi crashlogami?"
+
+msgid "Include your email and name (optional) in the mail?"
+msgstr "Dołączyć email i twoją nazwę?"
+
+msgid "Your email address:"
+msgstr "Twój adres email:"
+
+msgid "Your name (optional):"
+msgstr "Twoja nazwa (opcjonalnie):"
+
+msgid "Anonymize crashlog?"
+msgstr "Anonimowy crashlog"
+
+msgid "Add network configuration?"
+msgstr "Dodać konfigurację sieci?"
+
+msgid "Add WLAN configuration?"
+msgstr "Dodać konfigurację WLAN?"
+
+msgid "Decide what should be done when crashlogs are found."
+msgstr "Zdecyduj co powinno być zrobione gdy crashlogi zostaną znalezione."
+
+msgid "Decide what should happen to the crashlogs after submission."
+msgstr "Zdecyduj co powino sie wydarzyć po złożeniu crashlogów."
+
+msgid "Do you want to submit your email address and name so that we can contact you if needed?"
+msgstr "Czy dołączyć twój adres email i nazwę jeśli będzie trzeba?"
+
+msgid "Enter your email address so that we can contact you if needed."
+msgstr "Wpisz swój adres email jeśli trzeba"
+
+msgid "Optionally enter your name if you want to."
+msgstr "Opcjonalnie dodaj nazwę jeśli chcesz."
+
+msgid "Adds enigma2 settings and dreambox model informations like SN, rev... if enabled."
+msgstr "Dołącz ustawienia e2, model dreamboxa, dodatkowe info o tunerze..."
+
+msgid "Adds network configuration if enabled."
+msgstr "Dołącz konfigurację sieci."
+
+msgid "Adds wlan configuration if enabled."
+msgstr "Dołącz konfigurację WLAN."
+
+msgid ""
+"Crashlogs found!\n"
+"Send them to Dream Multimedia?"
+msgstr ""
+"Znaleziono crashlog(i)!\n"
+"Wysłać do DreamMultimedia?"
+
+msgid "Yes, and don't ask again"
+msgstr "Tak ale nie pytaj ponownie"
+
+msgid "No, not now"
+msgstr "Nie teraz"
+
+msgid "No, send them never"
+msgstr "Nie wysyłaj wogóle"
+
+msgid "Change step size"
+msgstr "Zmień rozmiar skoku"
+
 #~ msgid ""
 #~ "\n"
 #~ "Enigma2 will restart after the restore"