diff options
Diffstat (limited to 'lib/python')
11 files changed, 518 insertions, 534 deletions
diff --git a/lib/python/Components/AVSwitch.py b/lib/python/Components/AVSwitch.py index 8f4255b8..bc2a66a4 100644 --- a/lib/python/Components/AVSwitch.py +++ b/lib/python/Components/AVSwitch.py @@ -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()) + diff --git a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py index c535e1b1..596f2d5a 100644 --- a/lib/python/Plugins/Extensions/MediaPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/MediaPlayer/plugin.py @@ -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() diff --git a/lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py b/lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py index a2d30d2d..cf998a79 100755 --- a/lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py +++ b/lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py @@ -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) diff --git a/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py b/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py index ba668f8b..a1522ddb 100644 --- a/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py +++ b/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py @@ -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 diff --git a/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py b/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py index 060a4f35..997b9571 100755 --- a/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py @@ -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 [] diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py index 3925fc44..871f0a30 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py @@ -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) diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 136e9d0b..c10a7e5f 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -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 diff --git a/lib/python/Plugins/SystemPlugins/VideoEnhancement/VideoEnhancement.py b/lib/python/Plugins/SystemPlugins/VideoEnhancement/VideoEnhancement.py index 7db02556..4ba49582 100755 --- a/lib/python/Plugins/SystemPlugins/VideoEnhancement/VideoEnhancement.py +++ b/lib/python/Plugins/SystemPlugins/VideoEnhancement/VideoEnhancement.py @@ -1,124 +1,139 @@ -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() diff --git a/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py b/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py index 8f8f56e1..0276e04b 100755 --- a/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py +++ b/lib/python/Plugins/SystemPlugins/VideoEnhancement/plugin.py @@ -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 diff --git a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py index 7a2127ac..1b820fb1 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/plugin.py @@ -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) diff --git a/lib/python/Screens/HelpMenu.py b/lib/python/Screens/HelpMenu.py index 74882a35..305e3555 100644 --- a/lib/python/Screens/HelpMenu.py +++ b/lib/python/Screens/HelpMenu.py @@ -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 |
