From 1a9635e73d3725af360b3246f041771a84f53dbe Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:03:12 +0100 Subject: remove Imagewizard --- lib/python/Screens/ImageWizard.py | 38 -------------------------------------- lib/python/Screens/Makefile.am | 2 +- 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 lib/python/Screens/ImageWizard.py (limited to 'lib/python') diff --git a/lib/python/Screens/ImageWizard.py b/lib/python/Screens/ImageWizard.py deleted file mode 100644 index faf6120b..00000000 --- a/lib/python/Screens/ImageWizard.py +++ /dev/null @@ -1,38 +0,0 @@ -from Wizard import Wizard, wizardManager - -from Tools.Directories import fileExists - -import os - -backupfile = "backupenigma2settings.tar" - -def checkConfigBackup(): - paths = ['/media/hdd/', '/media/cf/'] - for x in paths: - if fileExists(x + backupfile): - return x - return None - -if checkConfigBackup() is None: - backupAvailable = 0 -else: - backupAvailable = 1 - -class ImageWizard(Wizard): - def __init__(self, session): - self.xmlfile = "imagewizard.xml" - Wizard.__init__(self, session, showSteps=False, showStepSlider=False, showList=True, showConfig=True) - - def markDone(self): - pass - -wizardManager.registerWizard(ImageWizard, backupAvailable, priority = 10) - -def doBackup(path): - os.system('tar cvpf ' + path + backupfile + ' /etc/enigma2') - -def doRestore(path): - os.system('cd / && /bin/tar xvpf ' + path + backupfile) - - - \ No newline at end of file diff --git a/lib/python/Screens/Makefile.am b/lib/python/Screens/Makefile.am index cde2d6c3..00204a94 100755 --- a/lib/python/Screens/Makefile.am +++ b/lib/python/Screens/Makefile.am @@ -9,7 +9,7 @@ install_PYTHON = \ InfoBarGenerics.py HelpMenu.py Wizard.py __init__.py \ Dish.py LanguageSelection.py StartWizard.py PiPSetup.py Subtitles.py \ TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py PVRState.py \ - Console.py InputBox.py ChoiceBox.py SimpleSummary.py ImageWizard.py \ + Console.py InputBox.py ChoiceBox.py SimpleSummary.py \ TimerSelection.py PictureInPicture.py TimeDateInput.py \ SubtitleDisplay.py SubservicesQuickzap.py ParentalControlSetup.py NumericalTextInputHelpDialog.py \ SleepTimerEdit.py Ipkg.py RdsDisplay.py Globals.py DefaultWizard.py \ -- cgit v1.2.3 From 9015ce354743d7a3a73400c8b91cd85a6ceaeb96 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:13:40 +0100 Subject: remove IPKGInstaller and ConfigurationBackup start working on Softwaremanager --- configure.ac | 2 - .../Plugins/Extensions/IpkgInstaller/.cvsignore | 4 - .../Plugins/Extensions/IpkgInstaller/Makefile.am | 5 - .../Plugins/Extensions/IpkgInstaller/__init__.py | 0 .../Plugins/Extensions/IpkgInstaller/plugin.py | 67 ------- lib/python/Plugins/Extensions/Makefile.am | 2 +- .../SystemPlugins/ConfigurationBackup/.cvsignore | 4 - .../SystemPlugins/ConfigurationBackup/LICENSE | 12 -- .../SystemPlugins/ConfigurationBackup/Makefile.am | 8 - .../SystemPlugins/ConfigurationBackup/__init__.py | 0 .../SystemPlugins/ConfigurationBackup/backup.png | Bin 3711 -> 0 bytes .../SystemPlugins/ConfigurationBackup/blue.png | Bin 3495 -> 0 bytes .../SystemPlugins/ConfigurationBackup/green.png | Bin 3454 -> 0 bytes .../SystemPlugins/ConfigurationBackup/plugin.py | 221 --------------------- .../SystemPlugins/ConfigurationBackup/red.png | Bin 3742 -> 0 bytes .../SystemPlugins/ConfigurationBackup/yellow.png | Bin 3732 -> 0 bytes lib/python/Plugins/SystemPlugins/Makefile.am | 2 +- 17 files changed, 2 insertions(+), 325 deletions(-) mode change 100644 => 100755 configure.ac delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/__init__.py delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/plugin.py mode change 100644 => 100755 lib/python/Plugins/Extensions/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png mode change 100644 => 100755 lib/python/Plugins/SystemPlugins/Makefile.am (limited to 'lib/python') diff --git a/configure.ac b/configure.ac old mode 100644 new mode 100755 index 719baa11..89ab3f06 --- a/configure.ac +++ b/configure.ac @@ -112,7 +112,6 @@ lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile lib/python/Plugins/SystemPlugins/FrontprocessorUpgrade/Makefile lib/python/Plugins/SystemPlugins/PositionerSetup/Makefile lib/python/Plugins/SystemPlugins/Hotplug/Makefile -lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile lib/python/Plugins/SystemPlugins/DefaultServicesScanner/Makefile lib/python/Plugins/SystemPlugins/NFIFlash/Makefile lib/python/Plugins/SystemPlugins/Satfinder/Makefile @@ -124,7 +123,6 @@ lib/python/Plugins/SystemPlugins/DiseqcTester/Makefile lib/python/Plugins/DemoPlugins/Makefile lib/python/Plugins/DemoPlugins/TestPlugin/Makefile lib/python/Plugins/Extensions/Makefile -lib/python/Plugins/Extensions/IpkgInstaller/Makefile lib/python/Plugins/Extensions/TuxboxPlugins/Makefile lib/python/Plugins/Extensions/FileManager/Makefile lib/python/Plugins/Extensions/CutListEditor/Makefile diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore b/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore deleted file mode 100644 index 138b9cc2..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -*.pyo -Makefile -Makefile.in diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am b/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am deleted file mode 100644 index ece0698f..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -installdir = $(LIBDIR)/enigma2/python/Plugins/Extensions/IpkgInstaller - -install_PYTHON = \ - __init__.py \ - plugin.py diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/__init__.py b/lib/python/Plugins/Extensions/IpkgInstaller/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py deleted file mode 100644 index 4893dc47..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py +++ /dev/null @@ -1,67 +0,0 @@ -from Components.ActionMap import ActionMap -from Components.Ipkg import IpkgComponent -from Components.Label import Label -from Components.SelectionList import SelectionList -from Plugins.Plugin import PluginDescriptor -from Screens.Ipkg import Ipkg -from Screens.Screen import Screen - -class IpkgInstaller(Screen): - skin = """ - - - - - - - - """ - - def __init__(self, session, list): - self.skin = IpkgInstaller.skin - Screen.__init__(self, session) - - self.list = SelectionList() - self["list"] = self.list - 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["actions"] = ActionMap(["OkCancelActions", "ColorActions"], - { - "ok": self.list.toggleSelection, - "cancel": self.close, - "green": self.install - }, -1) - - def install(self): - list = self.list.getSelectionsList() - cmdList = [] - for item in list: - cmdList.append((IpkgComponent.CMD_INSTALL, { "package": item[1] })) - print cmdList - self.session.open(Ipkg, cmdList = cmdList) - -def filescan_open(list, session, **kwargs): - filelist = [x.path for x in list] - session.open(IpkgInstaller, filelist) # list - -def filescan(**kwargs): - from Components.Scanner import Scanner, ScanPath - return \ - Scanner(mimetypes = ["application/x-debian-package"], - paths_to_scan = - [ - ScanPath(path = "ipk", with_subdirs = True), - ScanPath(path = "", with_subdirs = False), - ], - name = "Ipkg", - description = "Install software updates...", - openfnc = filescan_open, ) - -def Plugins(**kwargs): - return [ PluginDescriptor(name="Ipkg", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) ] diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am old mode 100644 new mode 100755 index 9f3737aa..edbd2084 --- a/lib/python/Plugins/Extensions/Makefile.am +++ b/lib/python/Plugins/Extensions/Makefile.am @@ -1 +1 @@ -SUBDIRS = TuxboxPlugins FileManager CutListEditor PicturePlayer MediaScanner MediaPlayer IpkgInstaller GraphMultiEPG SocketMMI DVDPlayer DVDBurn +SUBDIRS = TuxboxPlugins FileManager CutListEditor PicturePlayer MediaScanner MediaPlayer GraphMultiEPG SocketMMI DVDPlayer DVDBurn diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore deleted file mode 100644 index 138b9cc2..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -*.pyo -Makefile -Makefile.in diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE deleted file mode 100644 index 99700593..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -This plugin is licensed under the Creative Commons -Attribution-NonCommercial-ShareAlike 3.0 Unported -License. To view a copy of this license, visit -http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative -Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. - -Alternatively, this plugin may be distributed and executed on hardware which -is licensed by Dream Multimedia GmbH. - -This plugin is NOT free software. It is open source, you are allowed to -modify it (if you keep the license), but it may not be commercially -distributed other than under the conditions noted above. diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am deleted file mode 100644 index d50236d8..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/ConfigurationBackup - -install_PYTHON = \ - __init__.py \ - plugin.py red.png yellow.png green.png blue.png backup.png - -install_DATA = LICENSE - diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png deleted file mode 100644 index 4962a058..00000000 Binary files a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png deleted file mode 100644 index a392bbe6..00000000 Binary files a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png deleted file mode 100644 index f168e4d0..00000000 Binary files a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py deleted file mode 100644 index 7a918da6..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py +++ /dev/null @@ -1,221 +0,0 @@ -from Screens.Screen import Screen -from Screens.MessageBox import MessageBox -from Screens.Console import Console -from Components.ActionMap import ActionMap, NumberActionMap -from Components.Pixmap import Pixmap -from Components.Label import Label -from Components.MenuList import MenuList -from Components.config import ConfigSelection, ConfigSubsection, KEY_LEFT, KEY_RIGHT, KEY_0, getConfigListEntry -from Components.ConfigList import ConfigList -from Plugins.Plugin import PluginDescriptor - -from Tools.Directories import * -from os import path, makedirs, listdir -from time import localtime -from datetime import date - -plugin_path = "" - -# FIXME: harddiskmanager has a better overview about available mointpoints! -BackupPath = { - "hdd" : "/media/hdd/backup", - "usb" : "/media/usb/backup", - "cf" : "/media/cf/backup" - } - -MountPoints = { - "hdd" : "/media/hdd", - "usb" : "/media/usb", - "cf" : "/media/cf" - } - -class BackupSetup(Screen): - skin = """ - - - - - - - - - - - """ - - def keyLeft(self): - self["config"].handleKey(KEY_LEFT) - - def keyRight(self): - self["config"].handleKey(KEY_RIGHT) - - def keyNumberGlobal(self, number): - print "You pressed number", number - if (self["config"].getCurrent()[1].parent.enabled == True): - self["config"].handleKey(KEY_0+number) - - def keyCancel(self): - for x in self["config"].list: - x[1].cancel() - self.close() - - def keySave(self): - for x in self["config"].list: - x[1].save() - self.close() - - def __init__(self, session, args = None): - Screen.__init__(self, session) - self.skin_path = plugin_path - - self["oktext"] = Label(_("OK")) - self["canceltext"] = Label(_("Cancel")) - self["backuptext"] = Label(_("Backup")) - self["restoretext"] = Label(_("Restore")) - self["restore"] = Pixmap() - self["backup"] = Pixmap() - self["ok"] = Pixmap() - self["cancel"] = Pixmap() - - self.path = "" - self.list = [] - self["config"] = ConfigList(self.list) - self.createSetup() - - self["actions"] = NumberActionMap(["SetupActions"], - { - "ok": self.keySave, - "cancel": self.keyCancel, - "left": self.keyLeft, - "right": self.keyRight - }, -1) - - self["shortcuts"] = ActionMap(["ShortcutActions"], - { - "red": self.keyCancel, - "green": self.keySave, - "blue": self.Backup, - "yellow": self.Restore, - }) - - - def createSetup(self): - print "Creating BackupSetup" - self.list = [ ] - self["config"] = ConfigList(self.list) - self.backup = ConfigSubsection() - self.backup.type = ConfigSelection(choices = [("settings", _("enigma2 and network")), ("var", _("/var directory")), ("skin", _("/usr/share/enigma2 directory"))], default="settings") - self.backup.location = ConfigSelection(choices = [("hdd", _("Harddisk")), ("usb", _("USB Stick")), ("cf", _("CF Drive"))]) - self.list.append(getConfigListEntry(_("Backup Mode"), self.backup.type)) - self.list.append(getConfigListEntry(_("Backup Location"), self.backup.location)) - - def createBackupfolders(self): - self.path = BackupPath[self.backup.location.value] - print "Creating Backup Folder if not already there..." - if (path.exists(self.path) == False): - makedirs(self.path) - - def Backup(self): - print "this will start the backup now!" - self.session.openWithCallback(self.runBackup, MessageBox, _("Do you want to backup now?\nAfter pressing OK, please wait!")) - - def Restore(self): - print "this will start the restore now!" - self.session.open(RestoreMenu, self.backup) - - def runBackup(self, result): - if result: - if path.ismount(MountPoints[self.backup.location.value]): - self.createBackupfolders() - d = localtime() - dt = date(d.tm_year, d.tm_mon, d.tm_mday) - self.path = BackupPath[self.backup.location.value] - if self.backup.type.value == "settings": - print "Backup Mode: Settings" - self.session.open(Console, title = "Backup running", cmdlist = ["tar -czvf " + self.path + "/" + str(dt) + "_settings_backup.tar.gz /etc/enigma2/ /etc/network/interfaces /etc/wpa_supplicant.conf"]) - elif self.backup.type.value == "var": - print "Backup Mode: var" - self.session.open(Console, title = "Backup running", cmdlist = [ "tar -czvf " + self.path + "/" + str(dt) + "_var_backup.tar.gz /var/"]) - elif self.backup.type.value == "skin": - print "Backup Mode: skin" - self.session.open(Console, title ="Backup running", cmdlist = [ "tar -czvf " + self.path + "/" + str(dt) + "_skin_backup.tar.gz /usr/share/enigma2/"]) - else: - self.session.open(MessageBox, _("Sorry your Backup destination does not exist\n\nPlease choose an other one."), MessageBox.TYPE_INFO) - -class RestoreMenu(Screen): - skin = """ - - - - - - - """ - - def __init__(self, session, backup): - Screen.__init__(self, session) - self.skin_path = plugin_path - self.backup = backup - - self["canceltext"] = Label(_("Cancel")) - self["restoretext"] = Label(_("Restore")) - self["restore"] = Pixmap() - self["cancel"] = Pixmap() - - self.sel = [] - self.val = [] - self.entry = False - self.exe = False - - self.path = "" - - self["actions"] = NumberActionMap(["SetupActions"], - { - "ok": self.KeyOk, - "cancel": self.keyCancel - }, -1) - - self["shortcuts"] = ActionMap(["ShortcutActions"], - { - "red": self.keyCancel, - "yellow": self.KeyOk, - }) - self.flist = [] - self["filelist"] = MenuList(self.flist) - self.fill_list() - - def fill_list(self): - self.flist = [] - self.path = BackupPath[self.backup.location.value] - if (path.exists(self.path) == False): - makedirs(self.path) - for file in listdir(self.path): - if (file.endswith(".tar.gz")): - self.flist.append((file)) - self.entry = True - self["filelist"].l.setList(self.flist) - - def KeyOk(self): - if (self.exe == False) and (self.entry == True): - self.sel = self["filelist"].getCurrent() - self.val = self.path + self.sel - self.session.openWithCallback(self.startRestore, MessageBox, _("are you sure you want to restore\nfollowing backup:\n" + self.sel + "\nEnigma2 will restart after the restore")) - - def keyCancel(self): - self.close() - - def startRestore(self, ret = False): - if (ret == True): - self.exe = True - self.session.open(Console, title = "Restore running", cmdlist = ["tar -xzvf " + self.path + "/" + self.sel + " -C /", "killall -9 enigma2"]) - - def Exit(self): - self.close() - -def BackupMain(session, **kwargs): - session.open(BackupSetup) - -def Plugins(path, **kwargs): - global plugin_path - plugin_path = path - return PluginDescriptor(name="Backup/Restore", description="Backup and Restore your Settings", icon="backup.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=BackupMain) diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png deleted file mode 100644 index 8096045f..00000000 Binary files a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png deleted file mode 100644 index dacb80e6..00000000 Binary files a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png and /dev/null differ diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am old mode 100644 new mode 100755 index 4491eafc..be12378c --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -1 +1 @@ -SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup ConfigurationBackup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner NFIFlash DiseqcTester +SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner NFIFlash DiseqcTester -- cgit v1.2.3 From 60881a22938560d1b583797ddf74b62d24926517 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:17:55 +0100 Subject: do not show inaccessible devices in deviceselection --- lib/python/Plugins/Extensions/MediaScanner/plugin.py | 3 +++ 1 file changed, 3 insertions(+) mode change 100644 => 100755 lib/python/Plugins/Extensions/MediaScanner/plugin.py (limited to 'lib/python') diff --git a/lib/python/Plugins/Extensions/MediaScanner/plugin.py b/lib/python/Plugins/Extensions/MediaScanner/plugin.py old mode 100644 new mode 100755 index 88b917ee..2c31197d --- a/lib/python/Plugins/Extensions/MediaScanner/plugin.py +++ b/lib/python/Plugins/Extensions/MediaScanner/plugin.py @@ -42,6 +42,9 @@ def scan(session): parts = [ (r.description, r.mountpoint, session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] if len(parts): + for x in parts: + if not access(x[1], F_OK|R_OK): + parts.remove(x) session.openWithCallback(mountpoint_choosen, ChoiceBox, title = _("Please Select Medium to be Scanned"), list = parts) def main(session, **kwargs): -- cgit v1.2.3 From a1b97a6ac06f120114cb12c4e4667230edb8d7df Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:21:01 +0100 Subject: add remove/add partition interface for external applications not using autofs --- lib/python/Components/Harddisk.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) mode change 100644 => 100755 lib/python/Components/Harddisk.py (limited to 'lib/python') diff --git a/lib/python/Components/Harddisk.py b/lib/python/Components/Harddisk.py old mode 100644 new mode 100755 index d165e26c..75d68fad --- a/lib/python/Components/Harddisk.py +++ b/lib/python/Components/Harddisk.py @@ -519,4 +519,18 @@ class HarddiskManager: description += " (Partition %d)" % part return description + def addMountedPartition(self, device, desc): + already_mounted = False + for x in self.partitions[:]: + if x.mountpoint == device: + already_mounted = True + if not already_mounted: + self.partitions.append(Partition(mountpoint = device, description = desc)) + + def removeMountedPartition(self, mountpoint): + for x in self.partitions[:]: + if x.mountpoint == mountpoint: + self.partitions.remove(x) + self.on_partition_list_change("remove", x) + harddiskmanager = HarddiskManager() -- cgit v1.2.3 From 2cfd7bf526965a11394275b6d3b28b87c6c76875 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:24:46 +0100 Subject: add MultiFileSelectList --- lib/python/Components/FileList.py | 186 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) mode change 100644 => 100755 lib/python/Components/FileList.py (limited to 'lib/python') diff --git a/lib/python/Components/FileList.py b/lib/python/Components/FileList.py old mode 100644 new mode 100755 index 84abf328..f9697094 --- a/lib/python/Components/FileList.py +++ b/lib/python/Components/FileList.py @@ -248,3 +248,189 @@ class FileList(MenuList): self.refreshMountpoints() if self.current_directory is None: self.refresh() + + +def MultiFileSelectEntryComponent(name, absolute = None, isDir = False, selected = False): + res = [ (absolute, isDir, selected, name) ] + res.append((eListboxPythonMultiContent.TYPE_TEXT, 55, 1, 470, 20, 0, RT_HALIGN_LEFT, name)) + if isDir: + png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/directory.png")) + else: + extension = name.split('.') + extension = extension[-1].lower() + if EXTENSIONS.has_key(extension): + png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "extensions/" + EXTENSIONS[extension] + ".png")) + else: + png = None + if png is not None: + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 30, 2, 20, 20, png)) + + if not name.startswith('<'): + if selected is False: + icon = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_off.png")) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 2, 0, 25, 25, icon)) + else: + icon = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_on.png")) + res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 2, 0, 25, 25, icon)) + + return res + + +class MultiFileSelectList(FileList): + def __init__(self, preselectedFiles, directory, showMountpoints = False, matchingPattern = None, showDirectories = True, showFiles = True, useServiceRef = False, inhibitDirs = False, inhibitMounts = False, isTop = False, enableWrapAround = False, additionalExtensions = None): + self.selectedFiles = preselectedFiles + if self.selectedFiles is None: + self.selectedFiles = [] + FileList.__init__(self, directory, showMountpoints = showMountpoints, matchingPattern = matchingPattern, showDirectories = showDirectories, showFiles = showFiles, useServiceRef = useServiceRef, inhibitDirs = inhibitDirs, inhibitMounts = inhibitMounts, isTop = isTop, enableWrapAround = enableWrapAround, additionalExtensions = additionalExtensions) + self.changeDir(directory) + self.l.setItemHeight(25) + self.l.setFont(0, gFont("Regular", 20)) + self.onSelectionChanged = [ ] + + def selectionChanged(self): + for f in self.onSelectionChanged: + f() + + def changeSelectionState(self): + idx = self.l.getCurrentSelectionIndex() + count = 0 + newList = [] + for x in self.list: + if idx == count: + if x[0][3].startswith('<'): + newList.append(x) + else: + if x[0][1] is True: + realPathname = x[0][0] + else: + realPathname = self.current_directory + x[0][0] + if x[0][2] == True: + SelectState = False + for entry in self.selectedFiles: + if entry == realPathname: + self.selectedFiles.remove(entry) + + else: + SelectState = True + alreadyinList = False + for entry in self.selectedFiles: + if entry == realPathname: + alreadyinList = True + if not alreadyinList: + self.selectedFiles.append(realPathname) + newList.append(MultiFileSelectEntryComponent(name = x[0][3], absolute = x[0][0], isDir = x[0][1], selected = SelectState )) + else: + newList.append(x) + + count += 1 + + self.list = newList + self.l.setList(self.list) + + def getSelectedList(self): + return self.selectedFiles + + def changeDir(self, directory, select = None): + self.list = [] + + # if we are just entering from the list of mount points: + if self.current_directory is None: + if directory and self.showMountpoints: + self.current_mountpoint = self.getMountpointLink(directory) + else: + self.current_mountpoint = None + self.current_directory = directory + directories = [] + files = [] + + if directory is None and self.showMountpoints: # present available mountpoints + for p in harddiskmanager.getMountedPartitions(): + path = os_path.join(p.mountpoint, "") + if path not in self.inhibitMounts and not self.inParentDirs(path, self.inhibitDirs): + self.list.append(MultiFileSelectEntryComponent(name = p.description, absolute = path, isDir = True)) + files = [ ] + directories = [ ] + elif directory is None: + files = [ ] + directories = [ ] + elif self.useServiceRef: + root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + directory) + if self.additional_extensions: + root.setName(self.additional_extensions) + serviceHandler = eServiceCenter.getInstance() + list = serviceHandler.list(root) + + while 1: + s = list.getNext() + if not s.valid(): + del list + break + if s.flags & s.mustDescent: + directories.append(s.getPath()) + else: + files.append(s) + directories.sort() + files.sort() + else: + if os_path.exists(directory): + files = listdir(directory) + files.sort() + tmpfiles = files[:] + for x in tmpfiles: + if os_path.isdir(directory + x): + directories.append(directory + x + "/") + files.remove(x) + + if directory is not None and self.showDirectories and not self.isTop: + if directory == self.current_mountpoint and self.showMountpoints: + self.list.append(MultiFileSelectEntryComponent(name = "<" +_("List of Storage Devices") + ">", absolute = None, isDir = True)) + elif (directory != "/") and not (self.inhibitMounts and self.getMountpoint(directory) in self.inhibitMounts): + self.list.append(MultiFileSelectEntryComponent(name = "<" +_("Parent Directory") + ">", absolute = '/'.join(directory.split('/')[:-2]) + '/', isDir = True)) + + if self.showDirectories: + for x in directories: + if not (self.inhibitMounts and self.getMountpoint(x) in self.inhibitMounts) and not self.inParentDirs(x, self.inhibitDirs): + name = x.split('/')[-2] + alreadySelected = False + for entry in self.selectedFiles: + if entry == x: + alreadySelected = True + if alreadySelected: + self.list.append(MultiFileSelectEntryComponent(name = name, absolute = x, isDir = True, selected = True)) + else: + self.list.append(MultiFileSelectEntryComponent(name = name, absolute = x, isDir = True, selected = False)) + + if self.showFiles: + for x in files: + if self.useServiceRef: + path = x.getPath() + name = path.split('/')[-1] + else: + path = directory + x + name = x + + if (self.matchingPattern is None) or re_compile(self.matchingPattern).search(path): + alreadySelected = False + for entry in self.selectedFiles: + if os_path.basename(entry) == x: + alreadySelected = True + if alreadySelected: + self.list.append(MultiFileSelectEntryComponent(name = name, absolute = x , isDir = False, selected = True)) + else: + self.list.append(MultiFileSelectEntryComponent(name = name, absolute = x , isDir = False, selected = False)) + + self.l.setList(self.list) + + if select is not None: + i = 0 + self.moveToIndex(0) + for x in self.list: + p = x[0][0] + + if isinstance(p, eServiceReference): + p = p.getPath() + + if p == select: + self.moveToIndex(i) + i += 1 + -- cgit v1.2.3 From cd3cd96e2ff4c6e6a9a38393e4d93167d30f74ea Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:27:58 +0100 Subject: add remove to ipkg component and screen --- lib/python/Components/Ipkg.py | 4 ++++ lib/python/Screens/Ipkg.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) mode change 100644 => 100755 lib/python/Components/Ipkg.py mode change 100644 => 100755 lib/python/Screens/Ipkg.py (limited to 'lib/python') diff --git a/lib/python/Components/Ipkg.py b/lib/python/Components/Ipkg.py old mode 100644 new mode 100755 index 31889bcf..0ba1165c --- a/lib/python/Components/Ipkg.py +++ b/lib/python/Components/Ipkg.py @@ -52,6 +52,8 @@ class IpkgComponent: self.runCmd("list") elif cmd == self.CMD_INSTALL: self.runCmd("install " + args['package']) + elif cmd == self.CMD_REMOVE: + self.runCmd("remove " + args['package']) self.setCurrentCommand(cmd) def cmdFinished(self, retval): @@ -90,6 +92,8 @@ class IpkgComponent: self.callCallbacks(self.EVENT_UPGRADE, data.split(' ', 1)[1].split(' ')[0]) elif data.find('Installing') == 0: self.callCallbacks(self.EVENT_INSTALL, data.split(' ', 1)[1].split(' ')[0]) + elif data.find('Removing') == 0: + self.callCallbacks(self.EVENT_REMOVE, data.split(' ', 1)[1].split(' ')[1]) elif data.find('Configuring') == 0: self.callCallbacks(self.EVENT_CONFIGURING, data.split(' ', 1)[1].split(' ')[0]) elif data.find('An error occurred') == 0: diff --git a/lib/python/Screens/Ipkg.py b/lib/python/Screens/Ipkg.py old mode 100644 new mode 100755 index eac03479..96876336 --- a/lib/python/Screens/Ipkg.py +++ b/lib/python/Screens/Ipkg.py @@ -54,7 +54,7 @@ class Ipkg(Screen): self.slider.setValue(len(self.cmdList)) self.package.setText("") - self.status.setText(_("Done - Installed or upgraded %d packages with %d errors") % (self.packages, self.error)) + self.status.setText(_("Done - Installed, upgraded or removed %d packages with %d errors") % (self.packages, self.error)) return False else: cmd = self.cmdList[self.runningCmd] @@ -90,6 +90,10 @@ class Ipkg(Screen): self.package.setText(param) self.status.setText(_("Installing")) self.packages += 1 + elif event == IpkgComponent.EVENT_REMOVE: + self.package.setText(param) + self.status.setText(_("Removing")) + self.packages += 1 elif event == IpkgComponent.EVENT_CONFIGURING: self.package.setText(param) self.status.setText(_("Configuring")) -- cgit v1.2.3 From 8530482b1d58468eade8ae2cfd618c694bef75d2 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 10:51:23 +0100 Subject: really only show accessible devices --- lib/python/Plugins/Extensions/MediaScanner/plugin.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/python') diff --git a/lib/python/Plugins/Extensions/MediaScanner/plugin.py b/lib/python/Plugins/Extensions/MediaScanner/plugin.py index 2c31197d..b43662ef 100755 --- a/lib/python/Plugins/Extensions/MediaScanner/plugin.py +++ b/lib/python/Plugins/Extensions/MediaScanner/plugin.py @@ -45,6 +45,9 @@ def scan(session): for x in parts: if not access(x[1], F_OK|R_OK): parts.remove(x) + for x in parts: # first run sometimes skips an entry + if not access(x[1], F_OK|R_OK): + parts.remove(x) session.openWithCallback(mountpoint_choosen, ChoiceBox, title = _("Please Select Medium to be Scanned"), list = parts) def main(session, **kwargs): -- cgit v1.2.3 From 954ca139746278ae94ba5a5b0aaccbf5a2dcd13b Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 10:55:43 +0100 Subject: Revert "really only show accessible devices" This reverts commit 8530482b1d58468eade8ae2cfd618c694bef75d2. --- lib/python/Plugins/Extensions/MediaScanner/plugin.py | 3 --- 1 file changed, 3 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/Extensions/MediaScanner/plugin.py b/lib/python/Plugins/Extensions/MediaScanner/plugin.py index b43662ef..2c31197d 100755 --- a/lib/python/Plugins/Extensions/MediaScanner/plugin.py +++ b/lib/python/Plugins/Extensions/MediaScanner/plugin.py @@ -45,9 +45,6 @@ def scan(session): for x in parts: if not access(x[1], F_OK|R_OK): parts.remove(x) - for x in parts: # first run sometimes skips an entry - if not access(x[1], F_OK|R_OK): - parts.remove(x) session.openWithCallback(mountpoint_choosen, ChoiceBox, title = _("Please Select Medium to be Scanned"), list = parts) def main(session, **kwargs): -- cgit v1.2.3 From 7da4f25976773b0e1f8a06c13f2455c4bdb88349 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 11:44:58 +0100 Subject: Revert "really only show accessible devices" This reverts commit 8530482b1d58468eade8ae2cfd618c694bef75d2. --- configure.ac | 2 +- lib/python/Plugins/SystemPlugins/Makefile.am | 2 +- .../SystemPlugins/SoftwareUpdate/.cvsignore | 4 - .../SystemPlugins/SoftwareUpdate/Makefile.am | 8 - .../SystemPlugins/SoftwareUpdate/__init__.py | 0 .../Plugins/SystemPlugins/SoftwareUpdate/plugin.py | 360 --------------------- .../SystemPlugins/SoftwareUpdate/update.png | Bin 3630 -> 0 bytes po/Makefile.am | 1 + 8 files changed, 3 insertions(+), 374 deletions(-) delete mode 100644 lib/python/Plugins/SystemPlugins/SoftwareUpdate/.cvsignore delete mode 100644 lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/SoftwareUpdate/__init__.py delete mode 100644 lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py delete mode 100644 lib/python/Plugins/SystemPlugins/SoftwareUpdate/update.png mode change 100644 => 100755 po/Makefile.am (limited to 'lib/python') diff --git a/configure.ac b/configure.ac index 89ab3f06..b94272d9 100755 --- a/configure.ac +++ b/configure.ac @@ -108,7 +108,7 @@ lib/python/Components/Sources/Makefile lib/python/Screens/Makefile lib/python/Plugins/Makefile lib/python/Plugins/SystemPlugins/Makefile -lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile +lib/python/Plugins/SystemPlugins/SoftwareManager/Makefile lib/python/Plugins/SystemPlugins/FrontprocessorUpgrade/Makefile lib/python/Plugins/SystemPlugins/PositionerSetup/Makefile lib/python/Plugins/SystemPlugins/Hotplug/Makefile diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index be12378c..10151f2c 100755 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -1 +1 @@ -SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner NFIFlash DiseqcTester +SUBDIRS = SoftwareManager FrontprocessorUpgrade PositionerSetup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner NFIFlash DiseqcTester diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/.cvsignore b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/.cvsignore deleted file mode 100644 index 138b9cc2..00000000 --- a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -*.pyo -Makefile -Makefile.in diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile.am b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile.am deleted file mode 100644 index 9848f3df..00000000 --- a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/SoftwareUpdate - -install_PYTHON = \ - __init__.py \ - plugin.py \ - update.png - - diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/__init__.py b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py deleted file mode 100644 index 8127514c..00000000 --- a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py +++ /dev/null @@ -1,360 +0,0 @@ -from Components.ActionMap import ActionMap, NumberActionMap -from Components.GUIComponent import GUIComponent -from Components.Input import Input -from Components.Ipkg import IpkgComponent -from Components.Label import Label -from Components.MenuList import MenuList -from Components.Slider import Slider -from Plugins.Plugin import PluginDescriptor -from Screens.Console import Console -from Screens.ImageWizard import ImageWizard -from Screens.MessageBox import MessageBox -from Screens.MessageBox import MessageBox -from Screens.Screen import Screen -from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont -from os import popen - - -class UpdatePluginMenu(Screen): - skin = """ - - - """ - - def __init__(self, session, args = 0): - self.skin = UpdatePluginMenu.skin - Screen.__init__(self, session) - - self.menu = args - - list = [] - if self.menu == 0: - list.append((_("Image-Upgrade"), "image")) - list.append((_("Online-Upgrade"), "upgrade")) - list.append((_("Advanced"), "advanced")) - elif self.menu == 1: - list.append((_("Choose source"), "source")) - list.append((_("Packet management"), "ipkg")) - list.append((_("Settings"), "setup")) - - self["menu"] = MenuList(list) - - self["actions"] = ActionMap(["WizardActions", "DirectionActions"], - { - "ok": self.go, - "back": self.close, - }, -1) - - def go(self): - if self.menu == 0: - if (self["menu"].l.getCurrentSelection()[1] == "image"): - self.session.open(ImageWizard) - if (self["menu"].l.getCurrentSelection()[1] == "upgrade"): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!")) - if (self["menu"].l.getCurrentSelection()[1] == "advanced"): - self.session.open(UpdatePluginMenu, 1) - if self.menu == 1: - if (self["menu"].l.getCurrentSelection()[1] == "source"): - self.session.open(IPKGSource) - elif (self["menu"].l.getCurrentSelection()[1] == "ipkg"): - self.session.open(Ipkg) - elif (self["menu"].l.getCurrentSelection()[1] == "setup"): - self.session.open(MessageBox, _("Function not yet implemented"), MessageBox.TYPE_ERROR) - - def runUpgrade(self, result): - if result: - self.session.open(Console, title = "Upgrade running...", cmdlist = ["ipkg update", "ipkg upgrade -force-defaults -force-overwrite"], finishedCallback = self.runFinished) - - def runFinished(self): - self.session.openWithCallback(self.reboot, MessageBox, _("Upgrade finished. Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO) - - def reboot(self, result): - if result is None: - return - if result: - quitMainloop(3) - -class IPKGSource(Screen): - skin = """ - - - """ - - def __init__(self, session, args = None): - self.skin = IPKGSource.skin - Screen.__init__(self, session) - - fp = file('/etc/ipkg/official-feed.conf', 'r') - sources = fp.readlines() - fp.close() - - self["text"] = Input(sources[0], maxSize=False, type=Input.TEXT) - - self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions"], - { - "ok": self.go, - "back": self.close, - "left": self.keyLeft, - "right": self.keyRight, - "home": self.keyHome, - "end": self.keyEnd, - "deleteForward": self.deleteForward, - "deleteBackward": self.deleteBackward, - "1": self.keyNumberGlobal, - "2": self.keyNumberGlobal, - "3": self.keyNumberGlobal, - "4": self.keyNumberGlobal, - "5": self.keyNumberGlobal, - "6": self.keyNumberGlobal, - "7": self.keyNumberGlobal, - "8": self.keyNumberGlobal, - "9": self.keyNumberGlobal, - "0": self.keyNumberGlobal - }, -1) - - def go(self): - fp = file('/etc/ipkg/official-feed.conf', 'w') - fp.write(self["text"].getText()) - fp.close() - self.close() - - def keyLeft(self): - self["text"].left() - - def keyRight(self): - self["text"].right() - - def keyHome(self): - self["text"].home() - - def keyEnd(self): - self["text"].end() - - def keyDeleteForward(self): - self["text"].delete() - - def keyDeleteBackward(self): - self["text"].deleteBackward() - - def keyNumberGlobal(self, number): - print "pressed", number - self["text"].number(number) - -def PacketEntryComponent(packet): - res = [ packet ] - - res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0,250, 30, 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[0])) - res.append((eListboxPythonMultiContent.TYPE_TEXT, 250, 0, 200, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[1])) - res.append((eListboxPythonMultiContent.TYPE_TEXT, 450, 0, 100, 30, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, packet[2])) - return res - -class PacketList(GUIComponent): - def __init__(self, list): - GUIComponent.__init__(self) - self.l = eListboxPythonMultiContent() - self.l.setList(list) - self.l.setFont(0, gFont("Regular", 20)) - self.l.setFont(1, gFont("Regular", 18)) - - def getCurrent(self): - return self.l.getCurrentSelection() - - def GUIcreate(self, parent): - self.instance = eListbox(parent) - self.instance.setContent(self.l) - self.instance.setItemHeight(30) - - def GUIdelete(self): - self.instance.setContent(None) - self.instance = None - - def invalidate(self): - self.l.invalidate() - -class Ipkg2(Screen): - skin = """ - - - """ - - def __init__(self, session, args = None): - self.skin = Ipkg.skin - Screen.__init__(self, session) - - list = [] - self.list = list - self.fillPacketList() - - self["list"] = PacketList(self.list) - - self["actions"] = ActionMap(["WizardActions"], - { - "ok": self.close, - "back": self.close - }, -1) - - - def fillPacketList(self): - lines = popen("ipkg list", "r").readlines() - packetlist = [] - for x in lines: - split = x.split(' - ') - packetlist.append([split[0].strip(), split[1].strip()]) - - lines = popen("ipkg list_installed", "r").readlines() - - installedlist = {} - for x in lines: - split = x.split(' - ') - installedlist[split[0].strip()] = split[1].strip() - - for x in packetlist: - status = "" - if installedlist.has_key(x[0]): - if installedlist[x[0]] == x[1]: - status = "installed" - else: - status = "upgradable" - self.list.append(PacketEntryComponent([x[0], x[1], status])) - - def go(self): - if self.update: - self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!")) - else: - self.close() - - def doUpdateDelay(self): - lines = popen("ipkg update && ipkg upgrade", "r").readlines() - string = "" - for x in lines: - string += x - self["text"].setText(_("Updating finished. Here is the result:") + "\n\n" + string) - self.update = False - - - def doUpdate(self, val = False): - if val == True: - self["text"].setText(_("Updating... Please wait... This can take some minutes...")) - self.delayTimer.start(0, 1) - else: - self.close() - -class UpdatePlugin(Screen): - skin = """ - - - - - - """ - - 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"] = self.status - self.package = Label() - 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")) - elif event == IpkgComponent.EVENT_UPGRADE: - if self.sliderPackages.has_key(param): - self.slider.setValue(self.sliderPackages[param]) - self.package.setText(param) - self.status.setText(_("Upgrading")) - self.packages += 1 - elif event == IpkgComponent.EVENT_INSTALL: - self.package.setText(param) - self.status.setText(_("Installing")) - self.packages += 1 - elif event == IpkgComponent.EVENT_CONFIGURING: - self.package.setText(param) - self.status.setText(_("Configuring")) - elif event == IpkgComponent.EVENT_MODIFIED: - self.session.openWithCallback( - self.modificationCallback, - MessageBox, - _("A configuration file (%s) was modified since Installation.\nDo you want to keep your version?") % (param) - ) - elif event == IpkgComponent.EVENT_ERROR: - self.error += 1 - elif event == IpkgComponent.EVENT_DONE: - if self.updating: - self.updating = False - self.ipkg.startCmd(IpkgComponent.CMD_UPGRADE, args = {'test_only': False}) - elif self.error == 0: - self.slider.setValue(4) - - self.activityTimer.stop() - self.activityslider.setValue(0) - - self.package.setText("") - self.status.setText(_("Done - Installed or upgraded %d packages") % self.packages) - else: - self.activityTimer.stop() - self.activityslider.setValue(0) - error = _("your dreambox might be unusable now. Please consult the manual for further assistance before rebooting your dreambox.") - if self.packages == 0: - error = _("No packages were upgraded yet. So you can check your network and try again.") - if self.updating: - error = _("Your dreambox isn't connected to the internet properly. Please check it and try again.") - self.status.setText(_("Error") + " - " + error) - #print event, "-", param - pass - - def modificationCallback(self, res): - self.ipkg.write(res and "N" or "Y") - - def exit(self): - if not self.ipkg.isRunning(): - if self.packages != 0 and self.error == 0: - 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) - self.close() - -def UpgradeMain(session, **kwargs): - session.open(UpdatePlugin) - -def Plugins(**kwargs): - return PluginDescriptor(name="Softwareupdate", description=_("Updates your receiver's software"), icon="update.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=UpgradeMain) diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/update.png b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/update.png deleted file mode 100644 index 0ece6c76..00000000 Binary files a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/update.png and /dev/null differ diff --git a/po/Makefile.am b/po/Makefile.am old mode 100644 new mode 100755 index 26518b56..986f0ae4 --- a/po/Makefile.am +++ b/po/Makefile.am @@ -30,6 +30,7 @@ enigma2.pot: ./xml2po.py ../data/ >> enigma2.pot ./xml2po.py ../lib/python/Plugins/SystemPlugins/Videomode/ >> enigma2.pot + ./xml2po.py ../lib/python/Plugins/SystemPlugins/SoftwareManager/ >> enigma2.pot msguniq -o enigma2uniq.pot enigma2.pot $(RM) enigma2.pot mv enigma2uniq.pot enigma2.pot -- cgit v1.2.3 From 95fa0e8c06f26bc2c4d3b5ab6afc772cd991e9dc Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 11:47:46 +0100 Subject: add SoftwareManager and show it inside Setup Menu --- .../SystemPlugins/SoftwareManager/.cvsignore | 4 + .../SystemPlugins/SoftwareManager/BackupRestore.py | 313 +++++++++ .../SystemPlugins/SoftwareManager/ImageWizard.py | 120 ++++ .../Plugins/SystemPlugins/SoftwareManager/LICENSE | 17 + .../SystemPlugins/SoftwareManager/Makefile.am | 12 + .../SystemPlugins/SoftwareManager/__init__.py | 0 .../Plugins/SystemPlugins/SoftwareManager/blue.png | Bin 0 -> 3495 bytes .../SystemPlugins/SoftwareManager/green.png | Bin 0 -> 3454 bytes .../SystemPlugins/SoftwareManager/imagewizard.xml | 100 +++ .../SystemPlugins/SoftwareManager/installable.png | Bin 0 -> 2272 bytes .../SystemPlugins/SoftwareManager/installed.png | Bin 0 -> 2225 bytes .../SystemPlugins/SoftwareManager/plugin.py | 728 +++++++++++++++++++++ .../Plugins/SystemPlugins/SoftwareManager/red.png | Bin 0 -> 3742 bytes .../SystemPlugins/SoftwareManager/update.png | Bin 0 -> 3630 bytes .../SystemPlugins/SoftwareManager/upgradeable.png | Bin 0 -> 2094 bytes .../SystemPlugins/SoftwareManager/yellow.png | Bin 0 -> 3732 bytes 16 files changed, 1294 insertions(+) create mode 100644 lib/python/Plugins/SystemPlugins/SoftwareManager/.cvsignore create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/ImageWizard.py create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/LICENSE create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/Makefile.am create mode 100644 lib/python/Plugins/SystemPlugins/SoftwareManager/__init__.py create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/blue.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/green.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/imagewizard.xml create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/installable.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/installed.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/red.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/update.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/upgradeable.png create mode 100755 lib/python/Plugins/SystemPlugins/SoftwareManager/yellow.png (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/.cvsignore b/lib/python/Plugins/SystemPlugins/SoftwareManager/.cvsignore new file mode 100644 index 00000000..138b9cc2 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/.cvsignore @@ -0,0 +1,4 @@ +*.pyc +*.pyo +Makefile +Makefile.in diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py new file mode 100755 index 00000000..f92472d3 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py @@ -0,0 +1,313 @@ +from Screens.Screen import Screen +from Screens.MessageBox import MessageBox +from Screens.Console import Console +from Components.ActionMap import ActionMap, NumberActionMap +from Components.Pixmap import Pixmap +from Components.Label import Label +from Components.MenuList import MenuList +from Components.config import getConfigListEntry, configfile, ConfigSelection, ConfigSubsection, ConfigText, ConfigLocations +from Components.config import config +from Components.ConfigList import ConfigList,ConfigListScreen +from Components.FileList import MultiFileSelectList +from Plugins.Plugin import PluginDescriptor +from enigma import eTimer +from Tools.Directories import * +from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK +from time import gmtime, strftime, localtime +from datetime import date + + +config.plugins.configurationbackup = ConfigSubsection() +config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False) +config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf']) + +def getBackupPath(): + backuppath = config.plugins.configurationbackup.backuplocation.value + if backuppath.endswith('/'): + return backuppath + 'backup' + else: + return backuppath + '/backup' + +def getBackupFilename(): + return "enigma2settingsbackup.tar.gz" + + +class BackupScreen(Screen, ConfigListScreen): + skin = """ + + + """ + + def __init__(self, session, runBackup = False): + Screen.__init__(self, session) + self.session = session + self.runBackup = runBackup + self["actions"] = ActionMap(["WizardActions", "DirectionActions"], + { + "ok": self.close, + "back": self.close, + "cancel": self.close, + }, -1) + self.finished_cb = None + self.backuppath = getBackupPath() + self.backupfile = getBackupFilename() + self.fullbackupfilename = self.backuppath + "/" + self.backupfile + self.list = [] + ConfigListScreen.__init__(self, self.list) + self.onLayoutFinish.append(self.layoutFinished) + if self.runBackup: + self.onShown.append(self.doBackup) + + def layoutFinished(self): + self.setWindowTitle() + + def setWindowTitle(self): + self.setTitle(_("Backup running...")) + + def doBackup(self): + try: + if (path.exists(self.backuppath) == False): + makedirs(self.backuppath) + self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value ) + if path.exists(self.fullbackupfilename): + dt = str(date.fromtimestamp(stat(self.fullbackupfilename).st_ctime)) + self.newfilename = self.backuppath + "/" + dt + '-' + self.backupfile + if path.exists(self.newfilename): + 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) + else: + self.session.open(Console, title = _("Backup 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) + else: + self.session.openWithCallback(self.backupErrorCB,MessageBox, _("Sorry your backup destination is not writeable.\nPlease choose an other one."), MessageBox.TYPE_INFO) + + def backupFinishedCB(self,retval = None): + self.close(True) + + def backupErrorCB(self,retval = None): + self.close(False) + + def runAsync(self, finished_cb): + self.finished_cb = finished_cb + self.doBackup() + + +class BackupSelection(Screen): + skin = """ + + + + + + + + + """ + + def __init__(self, session): + Screen.__init__(self, session) + self.skin_path = plugin_path + self["key_red"] = Label(_("Cancel")) + self["key_green"] = Label(_("Save")) + self["key_yellow"] = Label() + + self.selectedFiles = config.plugins.configurationbackup.backupdirs.value + defaultDir = '/' + inhibitDirs = ["/bin", "/boot", "/dev", "/autofs", "/lib", "/proc", "/sbin", "/sys", "/hdd", "/tmp", "/mnt", "/media"] + self.filelist = MultiFileSelectList(self.selectedFiles, defaultDir, inhibitDirs = inhibitDirs ) + self["checkList"] = self.filelist + + self["actions"] = ActionMap(["DirectionActions", "OkCancelActions", "ShortcutActions"], + { + "cancel": self.exit, + "red": self.exit, + "yellow": self.changeSelectionState, + "green": self.saveSelection, + "ok": self.okClicked, + "left": self.left, + "right": self.right, + "down": self.down, + "up": self.up + }, -1) + if not self.selectionChanged in self["checkList"].onSelectionChanged: + self["checkList"].onSelectionChanged.append(self.selectionChanged) + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + idx = 0 + self["checkList"].moveToIndex(idx) + self.setWindowTitle() + self.selectionChanged() + + def setWindowTitle(self): + self.setTitle(_("Select files/folders to backup...")) + + def selectionChanged(self): + current = self["checkList"].getCurrent()[0] + if current[2] is True: + self["key_yellow"].setText(_("Deselect")) + else: + self["key_yellow"].setText(_("Select")) + + def up(self): + self["checkList"].up() + + def down(self): + self["checkList"].down() + + def left(self): + self["checkList"].pageUp() + + def right(self): + self["checkList"].pageDown() + + def changeSelectionState(self): + self["checkList"].changeSelectionState() + self.selectedFiles = self["checkList"].getSelectedList() + + def saveSelection(self): + self.selectedFiles = self["checkList"].getSelectedList() + config.plugins.configurationbackup.backupdirs.value = self.selectedFiles + config.plugins.configurationbackup.backupdirs.save() + config.plugins.configurationbackup.save() + config.save() + self.close(None) + + def exit(self): + self.close(None) + + def okClicked(self): + if self.filelist.canDescent(): + self.filelist.descent() + + +class RestoreMenu(Screen): + skin = """ + + + + + + + """ + + def __init__(self, session, plugin_path): + Screen.__init__(self, session) + self.skin_path = plugin_path + + self["canceltext"] = Label(_("Cancel")) + self["restoretext"] = Label(_("Restore")) + self["restore"] = Pixmap() + self["cancel"] = Pixmap() + + self.sel = [] + self.val = [] + self.entry = False + self.exe = False + + self.path = "" + + self["actions"] = NumberActionMap(["SetupActions"], + { + "ok": self.KeyOk, + "cancel": self.keyCancel + }, -1) + + self["shortcuts"] = ActionMap(["ShortcutActions"], + { + "red": self.keyCancel, + "yellow": self.KeyOk, + }) + self.flist = [] + self["filelist"] = MenuList(self.flist) + self.fill_list() + self.onLayoutFinish.append(self.layoutFinished) + + def layoutFinished(self): + self.setWindowTitle() + + def setWindowTitle(self): + self.setTitle(_("Restore backups...")) + + + def fill_list(self): + self.flist = [] + self.path = getBackupPath() + if (path.exists(self.path) == False): + makedirs(self.path) + for file in listdir(self.path): + if (file.endswith(".tar.gz")): + self.flist.append((file)) + self.entry = True + self["filelist"].l.setList(self.flist) + + def KeyOk(self): + if (self.exe == False) and (self.entry == True): + self.sel = self["filelist"].getCurrent() + self.val = self.path + self.sel + self.session.openWithCallback(self.startRestore, MessageBox, _("Are you sure you want to restore\nfollowing backup:\n" + self.sel + "\nSystem will restart after the restore!")) + + def keyCancel(self): + self.close() + + def startRestore(self, ret = False): + if (ret == True): + self.exe = True + self.session.open(Console, title = _("Restore running"), cmdlist = ["tar -xzvf " + self.path + "/" + self.sel + " -C /", "killall -9 enigma2"]) + + def Exit(self): + self.close() + +class RestoreScreen(Screen, ConfigListScreen): + skin = """ + + + """ + + def __init__(self, session, runRestore = False): + Screen.__init__(self, session) + self.session = session + self.runRestore = runRestore + self["actions"] = ActionMap(["WizardActions", "DirectionActions"], + { + "ok": self.close, + "back": self.close, + "cancel": self.close, + }, -1) + self.finished_cb = None + self.backuppath = getBackupPath() + self.backupfile = getBackupFilename() + self.fullbackupfilename = self.backuppath + "/" + self.backupfile + self.list = [] + ConfigListScreen.__init__(self, self.list) + self.onLayoutFinish.append(self.layoutFinished) + if self.runRestore: + self.onShown.append(self.doRestore) + + def layoutFinished(self): + self.setWindowTitle() + + def setWindowTitle(self): + self.setTitle(_("Restore running...")) + + def doRestore(self): + if self.finished_cb: + self.session.openWithCallback(self.finished_cb, Console, title = _("Restore running"), cmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "killall -9 enigma2"]) + else: + self.session.open(Console, title = _("Restore running"), cmdlist = ["tar -xzvf " + self.fullbackupfilename + " -C /", "killall -9 enigma2"]) + + def backupFinishedCB(self,retval = None): + self.close(True) + + def backupErrorCB(self,retval = None): + self.close(False) + + def runAsync(self, finished_cb): + self.finished_cb = finished_cb + self.doRestore() + + \ No newline at end of file diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/ImageWizard.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/ImageWizard.py new file mode 100755 index 00000000..1797e4fe --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/ImageWizard.py @@ -0,0 +1,120 @@ +from Screens.Wizard import WizardSummary +from Screens.WizardLanguage import WizardLanguage +from Screens.Wizard import wizardManager +from Screens.Rc import Rc +from Components.Label import Label +from Components.MenuList import MenuList +from Components.PluginComponent import plugins +from Plugins.Plugin import PluginDescriptor +from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE +from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap +from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK + +from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean +from Components.Harddisk import harddiskmanager +config.misc.firstrun = ConfigBoolean(default = True) +config.plugins.configurationbackup = ConfigSubsection() +config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False) +config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf']) + + +backupfile = "enigma2settingsbackup.tar.gz" + +def checkConfigBackup(): + parts = [ (r.description, r.mountpoint) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] + for x in parts: + if x[1] == '/': + parts.remove(x) + if len(parts): + for x in parts: + if x[1].endswith('/'): + fullbackupfile = x[1] + 'backup/' + backupfile + if fileExists(fullbackupfile): + config.plugins.configurationbackup.backuplocation.value = str(x[1]) + config.plugins.configurationbackup.backuplocation.save() + config.plugins.configurationbackup.save() + return x + else: + fullbackupfile = x[1] + '/backup/' + backupfile + if fileExists(fullbackupfile): + config.plugins.configurationbackup.backuplocation.value = str(x[1]) + config.plugins.configurationbackup.backuplocation.save() + config.plugins.configurationbackup.save() + return x + return None + +def checkBackupFile(): + backuplocation = config.plugins.configurationbackup.backuplocation.value + if backuplocation.endswith('/'): + fullbackupfile = backuplocation + 'backup/' + backupfile + if fileExists(fullbackupfile): + return True + else: + return False + else: + fullbackupfile = backuplocation + '/backup/' + backupfile + if fileExists(fullbackupfile): + return True + else: + return False + +if checkConfigBackup() is None: + backupAvailable = 0 +else: + backupAvailable = 1 + +class ImageWizard(WizardLanguage, Rc): + skin = """ + + + + + + + + + + + + + + + """ + def __init__(self, session): + self.xmlfile = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/imagewizard.xml") + WizardLanguage.__init__(self, session, showSteps = False, showStepSlider = False) + Rc.__init__(self) + self.session = session + self["wizard"] = Pixmap() + self.selectedDevice = None + + def markDone(self): + pass + + def listDevices(self): + list = [ (r.description, r.mountpoint) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] + for x in list: + result = access(x[1], W_OK) and access(x[1], R_OK) + if result is False or x[1] == '/': + list.remove(x) + for x in list: + if x[1].startswith('/autofs/'): + list.remove(x) + return list + + def deviceSelectionMade(self, index): + self.deviceSelect(index) + + def deviceSelectionMoved(self): + self.deviceSelect(self.selection) + + def deviceSelect(self, device): + self.selectedDevice = device + config.plugins.configurationbackup.backuplocation.value = self.selectedDevice + config.plugins.configurationbackup.backuplocation.save() + config.plugins.configurationbackup.save() + + +if config.misc.firstrun.value: + wizardManager.registerWizard(ImageWizard, backupAvailable, priority = 10) + diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/LICENSE b/lib/python/Plugins/SystemPlugins/SoftwareManager/LICENSE new file mode 100755 index 00000000..835b9dc6 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/LICENSE @@ -0,0 +1,17 @@ +This plugin is licensed under the Creative Commons +Attribution-NonCommercial-ShareAlike 3.0 Unported +License. To view a copy of this license, visit +http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative +Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. + +Alternatively, this plugin may be distributed and executed on hardware which +is licensed by Dream Multimedia GmbH. + +This plugin is NOT free software. It is open source, you are allowed to +modify it (if you keep the license), but it may not be commercially +distributed other than under the conditions noted above. + +Some Icons used are taken from NX10 icons by Mazenl77 +(http://www.iconspedia.com/pack/nx10-1-6/) +licensed under Creative Commons Attribution 3.0 Unported +http://creativecommons.org/licenses/by/3.0/ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/Makefile.am b/lib/python/Plugins/SystemPlugins/SoftwareManager/Makefile.am new file mode 100755 index 00000000..f94498f5 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/Makefile.am @@ -0,0 +1,12 @@ +installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/SoftwareManager + +install_PYTHON = \ + __init__.py \ + plugin.py \ + BackupRestore.py \ + ImageWizard.py \ + imagewizard.xml \ + *.png + +install_DATA = LICENSE + diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/__init__.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/blue.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/blue.png new file mode 100755 index 00000000..a392bbe6 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/blue.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/green.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/green.png new file mode 100755 index 00000000..f168e4d0 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/green.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/imagewizard.xml b/lib/python/Plugins/SystemPlugins/SoftwareManager/imagewizard.xml new file mode 100755 index 00000000..98658b7d --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/imagewizard.xml @@ -0,0 +1,100 @@ + + + +from Plugins.SystemPlugins.SoftwareManager.ImageWizard import checkConfigBackup +self.backuppath = checkConfigBackup() +self.condition = (self.backuppath is not None and config.misc.firstrun.value) + + + + + + + +self.clearSelectedKeys() +self.selectKey("OK") + + + + + + + + + + + + + + + + + + + + + + + + + + + + +self.currStep = self.getStepWithID('backupresult') +self.afterAsyncCode() + + + + + +from Plugins.SystemPlugins.SoftwareManager.ImageWizard import checkBackupFile +self.backuppath = checkBackupFile() +self.condition = (self.backuppath is True) + + + + + + +from Plugins.SystemPlugins.SoftwareManager.ImageWizard import checkBackupFile +self.backuppath = checkBackupFile() +self.condition = (self.backuppath is False) + + + + + + + + + + + + + + + + + + + + + + + + + + + + +from enigma import quitMainloop +quitMainloop(1) + + + + + + + + diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/installable.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/installable.png new file mode 100755 index 00000000..710f4201 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/installable.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/installed.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/installed.png new file mode 100755 index 00000000..d6a1bc10 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/installed.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py new file mode 100755 index 00000000..1835a2ed --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -0,0 +1,728 @@ +from Plugins.Plugin import PluginDescriptor +from Screens.Console import Console +from Screens.ChoiceBox import ChoiceBox +from Screens.MessageBox import MessageBox +from Screens.Screen import Screen +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.MenuList import MenuList +from Components.Sources.List import List +from Components.Slider import Slider +from Components.Harddisk import harddiskmanager +from Components.config import config,getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations +from Components.Console import Console +from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest +from Components.SelectionList import SelectionList +from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE +from Tools.LoadPixmap import LoadPixmap +from enigma import eTimer, loadPNG, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont +from cPickle import dump, load + +from os import path as os_path, system as os_system, unlink, stat, mkdir, popen, makedirs, listdir, access, rename, remove, W_OK, R_OK, F_OK +from time import time, gmtime, strftime, localtime +from stat import ST_MTIME +from datetime import date + +from ImageWizard import ImageWizard +from BackupRestore import BackupSelection, RestoreMenu, BackupScreen, RestoreScreen, getBackupPath, getBackupFilename + +config.plugins.configurationbackup = ConfigSubsection() +config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False) +config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf']) + + +def write_cache(cache_file, cache_data): + #Does a cPickle dump + if not os_path.isdir( os_path.dirname(cache_file) ): + try: + mkdir( os_path.dirname(cache_file) ) + except OSError: + print os_path.dirname(cache_file), 'is a file' + fd = open(cache_file, 'w') + dump(cache_data, fd, -1) + fd.close() + +def valid_cache(cache_file, cache_ttl): + #See if the cache file exists and is still living + try: + mtime = stat(cache_file)[ST_MTIME] + except: + return 0 + curr_time = time() + if (curr_time - mtime) > cache_ttl: + return 0 + else: + return 1 + +def load_cache(cache_file): + #Does a cPickle load + fd = open(cache_file) + cache_data = load(fd) + fd.close() + return cache_data + + +class UpdatePluginMenu(Screen): + skin = """ + + + + + {"template": [ + MultiContentEntryText(pos = (2, 2), size = (230, 22), flags = RT_HALIGN_LEFT, text = 1), # index 0 is the MenuText, + ], + "fonts": [gFont("Regular", 20)], + "itemHeight": 25 + } + + + + """ + + def __init__(self, session, args = 0): + Screen.__init__(self, session) + self.skin_path = plugin_path + self.menu = args + self.list = [] + self.oktext = _("\nPress OK on your remote control to continue.") + self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value ) + if self.menu == 0: + self.list.append(("software-update", _("Software update"), _("\nOnline update of your Dreambox software." ) + self.oktext) ) + 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)) + if config.usage.setup_level.index >= 2: # expert+ + self.list.append(("advanced", _("Advanced Options"), _("\nAdvanced options and settings." ) + self.oktext)) + elif self.menu == 1: + self.list.append(("ipkg-manager", _("Packet management"), _("\nView, install and remove available or installed packages." ) + self.oktext)) + self.list.append(("ipkg-install", _("Install local IPKG"), _("\nScan for local packages and install them." ) + self.oktext)) + self.list.append(("advancedrestore", _("Advanced restore"), _("\nRestore your backups by date." ) + self.oktext)) + self.list.append(("backuplocation", _("Choose backup location"), _("\nSelect your backup device.\nCurrent device: " ) + config.plugins.configurationbackup.backuplocation.value + self.oktext )) + self.list.append(("backupfiles", _("Choose backup files"), _("Select files for backup. Currently selected:\n" ) + self.backupdirs + self.oktext)) + self.list.append(("ipkg-source",_("Choose upgrade source"), _("\nEdit the upgrade source address." ) + self.oktext)) + + self["menu"] = List(self.list) + self["menu"].onSelectionChanged.append(self.selectionChanged) + self["description"] = Label() + + self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"], + { + "ok": self.go, + "back": self.close, + "red": self.close, + }, -1) + + self.onLayoutFinish.append(self.layoutFinished) + self.backuppath = getBackupPath() + self.backupfile = getBackupFilename() + self.fullbackupfilename = self.backuppath + "/" + self.backupfile + self.onShown.append(self.setWindowTitle) + + def layoutFinished(self): + idx = 0 + self["menu"].index = idx + self.loadDescription() + + def setWindowTitle(self): + self.setTitle(_("Software manager...")) + + def loadDescription(self): + if self["menu"].getCurrent()[0] == 'software-update': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'software-restore': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'ipkg-install': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'system-backup': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'system-restore': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'advanced': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'ipkg-source': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'ipkg-manager': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'advancedrestore': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'backuplocation': + self["description"].setText(self["menu"].getCurrent()[2] ) + if self["menu"].getCurrent()[0] == 'backupfiles': + self["description"].setText(self["menu"].getCurrent()[2] ) + + def go(self): + if self.menu == 0: + if (self["menu"].getCurrent()[0] == "software-restore"): + self.session.open(ImageWizard) + if (self["menu"].getCurrent()[0] == "software-update"): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!")) + if (self["menu"].getCurrent()[0] == "advanced"): + self.session.open(UpdatePluginMenu, 1) + if (self["menu"].getCurrent()[0] == "system-backup"): + self.session.openWithCallback(self.backupDone,BackupScreen, runBackup = True) + if (self["menu"].getCurrent()[0] == "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) + if self.menu == 1: + if (self["menu"].getCurrent()[0] == "ipkg-manager"): + self.session.open(PacketManager, self.skin_path) + if (self["menu"].getCurrent()[0] == "ipkg-source"): + self.session.open(IPKGSource) + if (self["menu"].getCurrent()[0] == "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) + if (self["menu"].getCurrent()[0] == "backuplocation"): + parts = [ (r.description, r.mountpoint, self.session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] + for x in parts: + if not access(x[1], F_OK|R_OK|W_OK) or x[1] == '/': + parts.remove(x) + for x in parts: + if x[1].startswith('/autofs/'): + parts.remove(x) + if len(parts): + self.session.openWithCallback(self.backuplocation_choosen, ChoiceBox, title = _("Please select medium to use as backup location"), list = parts) + if (self["menu"].getCurrent()[0] == "backupfiles"): + self.session.openWithCallback(self.backupfiles_choosen,BackupSelection) + if (self["menu"].getCurrent()[0] == "advancedrestore"): + self.session.open(RestoreMenu, self.skin_path) + + def selectionChanged(self): + self.loadDescription() + + def backupfiles_choosen(self, ret): + self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value ) + self.loadDescription() + + def backuplocation_choosen(self, option): + if option is not None: + config.plugins.configurationbackup.backuplocation.value = str(option[1]) + config.plugins.configurationbackup.backuplocation.save() + config.plugins.configurationbackup.save() + config.save() + self.createBackupfolders() + self.loadDescription() + + def runUpgrade(self, result): + if result: + self.session.openWithCallback(self.runFinished,UpdatePlugin, self.skin_path) + + def runFinished(self): + self.session.openWithCallback(self.reboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO) + + def reboot(self, result): + if result is None: + return + if result: + quitMainloop(3) + + def createBackupfolders(self): + print "Creating backup folder if not already there..." + self.backuppath = getBackupPath() + try: + 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) + + def backupDone(self,retval = None): + if retval is True: + self.session.open(MessageBox, _("Backup done."), MessageBox.TYPE_INFO) + else: + self.session.open(MessageBox, _("Backup failed."), MessageBox.TYPE_INFO) + + def startRestore(self, ret = False): + if (ret == True): + self.exe = True + self.session.open(RestoreScreen, runRestore = True) + + +class IPKGSource(Screen): + skin = """ + + + """ + + def __init__(self, session, args = None): + Screen.__init__(self, session) + self.session = session + + fp = file('/etc/ipkg/official-feed.conf', 'r') + sources = fp.readlines() + fp.close() + + self["text"] = Input(sources[0], maxSize=False, type=Input.TEXT) + + self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions"], + { + "ok": self.go, + "back": self.close, + "left": self.keyLeft, + "right": self.keyRight, + "home": self.keyHome, + "end": self.keyEnd, + "deleteForward": self.keyDeleteForward, + "deleteBackward": self.keyDeleteBackward, + "1": self.keyNumberGlobal, + "2": self.keyNumberGlobal, + "3": self.keyNumberGlobal, + "4": self.keyNumberGlobal, + "5": self.keyNumberGlobal, + "6": self.keyNumberGlobal, + "7": self.keyNumberGlobal, + "8": self.keyNumberGlobal, + "9": self.keyNumberGlobal, + "0": self.keyNumberGlobal + }, -1) + + def go(self): + fp = file('/etc/ipkg/official-feed.conf', 'w') + fp.write(self["text"].getText()) + fp.close() + self.close() + + def keyLeft(self): + self["text"].left() + + def keyRight(self): + self["text"].right() + + def keyHome(self): + self["text"].home() + + def keyEnd(self): + self["text"].end() + + def keyDeleteForward(self): + self["text"].delete() + + def keyDeleteBackward(self): + self["text"].deleteBackward() + + def keyNumberGlobal(self, number): + print "pressed", number + self["text"].number(number) + + +class PacketList(MenuList): + def __init__(self, list, enableWrapAround=True): + MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) + self.l.setFont(0, gFont("Regular", 22)) + self.l.setFont(1, gFont("Regular", 14)) + self.l.setItemHeight(52) + +class PacketManager(Screen): + skin = """ + + + + + + + + """ + + def __init__(self, session, plugin_path, args = None): + Screen.__init__(self, session) + self.session = session + self.skin_path = plugin_path + + self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"], + { + "ok": self.go, + "back": self.close, + "red": self.close, + "green": self.reload, + }, -1) + + self.list = [] + self["list"] = PacketList(self.list) + self.status = Label() + self["closetext"] = Label(_("Close")) + self["reloadtext"] = Label(_("Reload")) + self["status"] = self.status + + self.list_updating = True + self.packetlist = [] + self.installed_packetlist = {} + self.Console = Console() + self.cmdList = [] + self.cachelist = [] + self.cache_ttl = 86400 #600 is default, 0 disables, Seconds cache is considered valid (24h should be ok for caching ipkgs) + self.cache_file = '/usr/lib/enigma2/python/Plugins/SystemPlugins/SoftwareManager/packetmanager.cache' #Path to cache directory + self.oktext = _("\nAfter pressing OK, please wait!") + + self.ipkg = IpkgComponent() + self.ipkg.addCallback(self.ipkgCallback) + self.onShown.append(self.setWindowTitle) + self.onLayoutFinish.append(self.rebuildList) + self.onClose.append(self.cleanup) + + def cleanup(self): + self.ipkg.stop() + if self.Console is not None: + del self.Console + + def reload(self): + if (os_path.exists(self.cache_file) == True): + remove(self.cache_file) + self.list_updating = True + self.rebuildList() + + def setWindowTitle(self): + self.setTitle(_("Packet manager")) + + def rebuildList(self): + self["list"].instance.hide() + self.status.setText(_("Package list update")) + self.status.show() + self.inv_cache = 0 + self.vc = valid_cache(self.cache_file, self.cache_ttl) + if self.cache_ttl > 0 and self.vc != 0: + try: + self.buildPacketList() + except: + self.inv_cache = 1 + if self.cache_ttl == 0 or self.inv_cache == 1 or self.vc == 0: + self.run = 0 + self.ipkg.startCmd(IpkgComponent.CMD_UPDATE) + + def go(self, returnValue = None): + returnValue = self['list'].l.getCurrentSelection()[0] + self.cmdList = [] + if returnValue[3] == 'installed': + self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n" + returnValue[0] + "\n" + self.oktext)) + elif returnValue[3] == 'upgradeable': + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to upgrade the package:\n" + returnValue[0] + "\n" + self.oktext)) + else: + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n" + returnValue[0] + "\n" + self.oktext)) + + def runRemove(self, result): + if result: + self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList = self.cmdList) + + def runRemoveFinished(self): + self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO) + + def RemoveReboot(self, result): + if result is None: + return + if result is False: + entry = self['list'].l.getCurrentSelection()[0] + item = self['list'].l.getCurrentSelectionIndex() + self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installable']) + self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] + self['list'].l.setList(self.list) + write_cache(self.cache_file, self.cachelist) + if result: + quitMainloop(3) + + def runUpgrade(self, result): + if result: + self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList) + + def runUpgradeFinished(self): + self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO) + + def UpgradeReboot(self, result): + if result is None: + return + if result is False: + entry = self['list'].l.getCurrentSelection()[0] + item = self['list'].l.getCurrentSelectionIndex() + self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installed']) + self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] + self['list'].l.setList(self.list) + write_cache(self.cache_file, self.cachelist) + if result: + quitMainloop(3) + + def ipkgCallback(self, event, param): + if event == IpkgComponent.EVENT_ERROR: + self.list_updating = False + self.status.setText(_("An error occured!")) + elif event == IpkgComponent.EVENT_DONE: + if self.list_updating: + self.list_updating = False + if not self.Console: + self.Console = Console() + cmd = "ipkg list" + self.Console.ePopen(cmd, self.IpkgList_Finished) + #print event, "-", param + pass + + def IpkgList_Finished(self, result, retval, extra_args = None): + if len(result): + self.packetlist = [] + for x in result.splitlines(): + split = x.split(' - ') + self.packetlist.append([split[0].strip(), split[1].strip(),split[2].strip()]) + cmd = "ipkg list_installed" + self.Console.ePopen(cmd, self.IpkgListInstalled_Finished) + + def IpkgListInstalled_Finished(self, result, retval, extra_args = None): + if len(result): + self.installed_packetlist = {} + for x in result.splitlines(): + split = x.split(' - ') + self.installed_packetlist[split[0].strip()] = split[1].strip() + self.buildPacketList() + + def PacketEntryComponent(self,entry): + res = [ entry ] + res.append(MultiContentEntryText(pos=(5, 1), size=(440, 28), font=0, text= entry[0])) + res.append(MultiContentEntryText(pos=(5, 26), size=(440, 20), font=1, text=entry[2])) + res.append(MultiContentEntryPixmapAlphaTest(pos=(445, 2), size=(48, 48), png = entry[4])) + res.append(MultiContentEntryPixmapAlphaTest(pos=(5, 50), size=(510, 2), png = entry[5])) + + return res + + + def buildPacketList(self): + self.list = [] + self.cachelist = [] + installedpng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installed.png")) + upgradeablepng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/upgradeable.png")) + installablepng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installable.png")) + divpng = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png")) + + if self.cache_ttl > 0 and self.vc != 0: + print 'Loading packagelist cache from ',self.cache_file + try: + self.cachelist = load_cache(self.cache_file) + if len(self.cachelist) > 0: + for x in self.cachelist: + if x[3] == 'installed': + self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],installedpng,divpng])) + elif x[3] == 'upgradeable': + self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],upgradeablepng,divpng])) + else: + self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],installablepng,divpng])) + self['list'].l.setList(self.list) + self["list"].instance.show() + self.status.hide() + except: + self.inv_cache = 1 + + if self.cache_ttl == 0 or self.inv_cache == 1 or self.vc == 0: + print 'rebuilding fresh package list' + for x in self.packetlist: + status = "" + if self.installed_packetlist.has_key(x[0].strip()): + if self.installed_packetlist[x[0].strip()] == x[1].strip(): + status = "installed" + self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,installedpng,divpng])) + else: + status = "upgradeable" + self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,upgradeablepng,divpng])) + else: + status = "installable" + self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,installablepng,divpng])) + self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status]) + write_cache(self.cache_file, self.cachelist) + self['list'].l.setList(self.list) + self["list"].instance.show() + self.status.hide() + + +class UpdatePlugin(Screen): + skin = """ + + + + + + """ + + 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"] = self.status + self.package = Label() + 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")) + elif event == IpkgComponent.EVENT_UPGRADE: + if self.sliderPackages.has_key(param): + self.slider.setValue(self.sliderPackages[param]) + self.package.setText(param) + self.status.setText(_("Upgrading")) + self.packages += 1 + elif event == IpkgComponent.EVENT_INSTALL: + self.package.setText(param) + self.status.setText(_("Installing")) + self.packages += 1 + elif event == IpkgComponent.EVENT_CONFIGURING: + self.package.setText(param) + self.status.setText(_("Configuring")) + elif event == IpkgComponent.EVENT_MODIFIED: + self.session.openWithCallback( + self.modificationCallback, + MessageBox, + _("A configuration file (%s) was modified since Installation.\nDo you want to keep your version?") % (param) + ) + elif event == IpkgComponent.EVENT_ERROR: + self.error += 1 + elif event == IpkgComponent.EVENT_DONE: + if self.updating: + self.updating = False + self.ipkg.startCmd(IpkgComponent.CMD_UPGRADE, args = {'test_only': False}) + elif self.error == 0: + self.slider.setValue(4) + + self.activityTimer.stop() + self.activityslider.setValue(0) + + self.package.setText("") + self.status.setText(_("Done - Installed or upgraded %d packages") % self.packages) + else: + self.activityTimer.stop() + self.activityslider.setValue(0) + error = _("your dreambox might be unusable now. Please consult the manual for further assistance before rebooting your dreambox.") + if self.packages == 0: + error = _("No packages were upgraded yet. So you can check your network and try again.") + if self.updating: + error = _("Your dreambox isn't connected to the internet properly. Please check it and try again.") + self.status.setText(_("Error") + " - " + error) + #print event, "-", param + pass + + def modificationCallback(self, res): + self.ipkg.write(res and "N" or "Y") + + def exit(self): + if not self.ipkg.isRunning(): + if self.packages != 0 and self.error == 0: + 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) + self.close() + + + +class IpkgInstaller(Screen): + skin = """ + + + + + + + + """ + + def __init__(self, session, list): + self.skin = IpkgInstaller.skin + Screen.__init__(self, session) + + self.list = SelectionList() + self["list"] = self.list + 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["actions"] = ActionMap(["OkCancelActions", "ColorActions"], + { + "ok": self.list.toggleSelection, + "cancel": self.close, + "green": self.install + }, -1) + + def install(self): + list = self.list.getSelectionsList() + cmdList = [] + for item in list: + 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 + +def filescan(**kwargs): + from Components.Scanner import Scanner, ScanPath + return \ + Scanner(mimetypes = ["application/x-debian-package"], + paths_to_scan = + [ + ScanPath(path = "ipk", with_subdirs = True), + ScanPath(path = "", with_subdirs = False), + ], + name = "Ipkg", + description = "Install software updates...", + openfnc = filescan_open, ) + +def UpgradeMain(session, **kwargs): + session.open(UpdatePluginMenu) + +def startSetup(menuid): + if menuid != "setup": + return [ ] + return [(_("Software manager") + "...", UpgradeMain, "software_manager", 50)] + +def Plugins(path, **kwargs): + global plugin_path + plugin_path = path + return [ + PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup), + #PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), icon="update.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=UpgradeMain), + PluginDescriptor(name=_("Ipkg"), where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) + ] diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/red.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/red.png new file mode 100755 index 00000000..8096045f Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/red.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/update.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/update.png new file mode 100755 index 00000000..0ece6c76 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/update.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/upgradeable.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/upgradeable.png new file mode 100755 index 00000000..edbbdee1 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/upgradeable.png differ diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/yellow.png b/lib/python/Plugins/SystemPlugins/SoftwareManager/yellow.png new file mode 100755 index 00000000..dacb80e6 Binary files /dev/null and b/lib/python/Plugins/SystemPlugins/SoftwareManager/yellow.png differ -- cgit v1.2.3 From da0da334b1314329d7d1f294d8df59acf66ac0d0 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 13:31:31 +0100 Subject: Remove double reboot question after upgrade small cleanups --- .../SystemPlugins/SoftwareManager/BackupRestore.py | 1 - .../SystemPlugins/SoftwareManager/plugin.py | 72 ++++++++-------------- 2 files changed, 25 insertions(+), 48 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py index f92472d3..947452e9 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py @@ -110,7 +110,6 @@ class BackupSelection(Screen): def __init__(self, session): Screen.__init__(self, session) - self.skin_path = plugin_path self["key_red"] = Label(_("Cancel")) self["key_green"] = Label(_("Save")) self["key_yellow"] = Label() diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 1835a2ed..85d23284 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -79,7 +79,16 @@ class UpdatePluginMenu(Screen): } - + + + {"template": [ + MultiContentEntryText(pos = (2, 2), size = (230, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 0 is the MenuText, + ], + "fonts": [gFont("Regular", 20)], + "itemHeight": 230 + } + + """ def __init__(self, session, args = 0): @@ -105,8 +114,6 @@ class UpdatePluginMenu(Screen): self.list.append(("ipkg-source",_("Choose upgrade source"), _("\nEdit the upgrade source address." ) + self.oktext)) self["menu"] = List(self.list) - self["menu"].onSelectionChanged.append(self.selectionChanged) - self["description"] = Label() self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"], { @@ -124,62 +131,38 @@ class UpdatePluginMenu(Screen): def layoutFinished(self): idx = 0 self["menu"].index = idx - self.loadDescription() def setWindowTitle(self): self.setTitle(_("Software manager...")) - def loadDescription(self): - if self["menu"].getCurrent()[0] == 'software-update': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'software-restore': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'ipkg-install': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'system-backup': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'system-restore': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'advanced': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'ipkg-source': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'ipkg-manager': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'advancedrestore': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'backuplocation': - self["description"].setText(self["menu"].getCurrent()[2] ) - if self["menu"].getCurrent()[0] == 'backupfiles': - self["description"].setText(self["menu"].getCurrent()[2] ) - def go(self): + current = self["menu"].getCurrent()[0] if self.menu == 0: - if (self["menu"].getCurrent()[0] == "software-restore"): + if (current == "software-restore"): self.session.open(ImageWizard) - if (self["menu"].getCurrent()[0] == "software-update"): + elif (current == "software-update"): self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!")) - if (self["menu"].getCurrent()[0] == "advanced"): + elif (current == "advanced"): self.session.open(UpdatePluginMenu, 1) - if (self["menu"].getCurrent()[0] == "system-backup"): + elif (current == "system-backup"): self.session.openWithCallback(self.backupDone,BackupScreen, runBackup = True) - if (self["menu"].getCurrent()[0] == "system-restore"): + 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) if self.menu == 1: - if (self["menu"].getCurrent()[0] == "ipkg-manager"): + if (current == "ipkg-manager"): self.session.open(PacketManager, self.skin_path) - if (self["menu"].getCurrent()[0] == "ipkg-source"): + elif (current == "ipkg-source"): self.session.open(IPKGSource) - if (self["menu"].getCurrent()[0] == "ipkg-install"): + 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) - if (self["menu"].getCurrent()[0] == "backuplocation"): + elif (current == "backuplocation"): parts = [ (r.description, r.mountpoint, self.session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] for x in parts: if not access(x[1], F_OK|R_OK|W_OK) or x[1] == '/': @@ -189,17 +172,13 @@ class UpdatePluginMenu(Screen): parts.remove(x) if len(parts): self.session.openWithCallback(self.backuplocation_choosen, ChoiceBox, title = _("Please select medium to use as backup location"), list = parts) - if (self["menu"].getCurrent()[0] == "backupfiles"): + elif (current == "backupfiles"): self.session.openWithCallback(self.backupfiles_choosen,BackupSelection) - if (self["menu"].getCurrent()[0] == "advancedrestore"): + elif (current == "advancedrestore"): self.session.open(RestoreMenu, self.skin_path) - def selectionChanged(self): - self.loadDescription() - def backupfiles_choosen(self, ret): self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value ) - self.loadDescription() def backuplocation_choosen(self, option): if option is not None: @@ -208,20 +187,19 @@ class UpdatePluginMenu(Screen): config.plugins.configurationbackup.save() config.save() self.createBackupfolders() - self.loadDescription() def runUpgrade(self, result): if result: - self.session.openWithCallback(self.runFinished,UpdatePlugin, self.skin_path) + self.session.open(UpdatePlugin, self.skin_path) - def runFinished(self): + """def runFinished(self): self.session.openWithCallback(self.reboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO) def reboot(self, result): if result is None: return if result: - quitMainloop(3) + quitMainloop(3)""" def createBackupfolders(self): print "Creating backup folder if not already there..." -- cgit v1.2.3 From 7f6790f2afe0fb6f65746fdc1c00935ed1567146 Mon Sep 17 00:00:00 2001 From: ghost Date: Fri, 13 Feb 2009 17:38:38 +0100 Subject: timerfix by adenin --- lib/python/Components/TimerSanityCheck.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Components/TimerSanityCheck.py b/lib/python/Components/TimerSanityCheck.py index cf02459d..cf505022 100644 --- a/lib/python/Components/TimerSanityCheck.py +++ b/lib/python/Components/TimerSanityCheck.py @@ -1,11 +1,12 @@ import NavigationInstance -from time import localtime +from time import localtime, mktime, gmtime from ServiceReference import ServiceReference from enigma import iServiceInformation, eServiceCenter, eServiceReference class TimerSanityCheck: def __init__(self, timerlist, newtimer=None): print "sanitycheck" + self.localtimediff = 25*3600 - mktime(gmtime(25*3600)) self.timerlist = timerlist self.newtimer = newtimer self.simultimer = [] @@ -70,6 +71,10 @@ class TimerSanityCheck: rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4) if rflags: begin = self.newtimer.begin % 86400 # map to first day + if (self.localtimediff > 0) and ((begin + self.localtimediff) > 86400): + rflags = ((rflags >> 1)& 0x3F)|((rflags << 6)& 0x40) + elif (self.localtimediff < 0) and (begin < self.localtimediff): + rflags = ((rflags << 1)& 0x7E)|((rflags >> 6)& 0x01) while rflags: # then arrange on the week if rflags & 1: self.rep_eventlist.append((begin, -1)) @@ -87,6 +92,10 @@ class TimerSanityCheck: rflags = timer.repeated rflags = ((rflags & 0x7F)>> 3)|((rflags & 0x07)<<4) begin = timer.begin % 86400 # map all to first day + if (self.localtimediff > 0) and ((begin + self.localtimediff) > 86400): + rflags = ((rflags >> 1)& 0x3F)|((rflags << 6)& 0x40) + elif (self.localtimediff < 0) and (begin < self.localtimediff): + rflags = ((rflags << 1)& 0x7E)|((rflags >> 6)& 0x01) while rflags: if rflags & 1: self.rep_eventlist.append((begin, idx)) -- cgit v1.2.3 From 7a421f3ff2dad0150148880a71d6542ab87589bd Mon Sep 17 00:00:00 2001 From: ghost Date: Fri, 13 Feb 2009 19:45:39 +0100 Subject: fix typo --- lib/python/Screens/TimerEdit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Screens/TimerEdit.py b/lib/python/Screens/TimerEdit.py index cdff4c5b..6499ef50 100644 --- a/lib/python/Screens/TimerEdit.py +++ b/lib/python/Screens/TimerEdit.py @@ -273,7 +273,7 @@ class TimerEditList(Screen): else: success = True else: - succsess = True + success = True if success: print "Sanity check passed" self.session.nav.RecordTimer.timeChanged(entry) -- cgit v1.2.3 From dc88bc9542802a1180b53142be5f777d75c6c22e Mon Sep 17 00:00:00 2001 From: ghost Date: Fri, 13 Feb 2009 23:38:52 +0100 Subject: add default for ConfigColor.. ConfigSequence needs this now --- lib/python/Plugins/Extensions/DVDBurn/DVDProject.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/Extensions/DVDBurn/DVDProject.py b/lib/python/Plugins/Extensions/DVDBurn/DVDProject.py index 7ea32dfe..660234f2 100644 --- a/lib/python/Plugins/Extensions/DVDBurn/DVDProject.py +++ b/lib/python/Plugins/Extensions/DVDBurn/DVDProject.py @@ -2,8 +2,8 @@ from Tools.Directories import fileExists from Components.config import config, ConfigSubsection, ConfigInteger, ConfigText, ConfigSelection, getConfigListEntry, ConfigSequence, ConfigSubList class ConfigColor(ConfigSequence): - def __init__(self): - ConfigSequence.__init__(self, seperator = "#", limits = [(0,255),(0,255),(0,255)]) + def __init__(self, default = [128,128,128]): + ConfigSequence.__init__(self, seperator = "#", limits = [(0,255),(0,255),(0,255)], default = default) class ConfigFilename(ConfigText): def __init__(self): -- cgit v1.2.3 From 7b5f45dec47f8472cc699a72949c52e6e5b2c279 Mon Sep 17 00:00:00 2001 From: ghost Date: Fri, 13 Feb 2009 23:54:25 +0100 Subject: rename list -> helplist --- lib/python/Components/HelpMenuList.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Components/HelpMenuList.py b/lib/python/Components/HelpMenuList.py index 2a7bd995..ddf871a7 100755 --- a/lib/python/Components/HelpMenuList.py +++ b/lib/python/Components/HelpMenuList.py @@ -7,7 +7,7 @@ from Tools.KeyBindings import queryKeyBinding, getKeyDescription # [ ( actionmap, context, [(action, help), (action, help), ...] ), (actionmap, ... ), ... ] class HelpMenuList(GUIComponent): - def __init__(self, list, callback): + def __init__(self, helplist, callback): GUIComponent.__init__(self) self.onSelChanged = [ ] self.l = eListboxPythonMultiContent() @@ -15,7 +15,7 @@ class HelpMenuList(GUIComponent): self.extendedHelp = False l = [ ] - for (actionmap, context, actions) in list: + for (actionmap, context, actions) in helplist: for (action, help) in actions: entry = [ ] -- cgit v1.2.3 From 677fc4dab74273f0a1e2a60c11ddd7a8f2341a11 Mon Sep 17 00:00:00 2001 From: ghost Date: Sat, 14 Feb 2009 11:12:24 +0100 Subject: fix possible crash (seen in crashlog) --- lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 85d23284..81e1e9f9 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -342,7 +342,7 @@ class PacketManager(Screen): self.onShown.append(self.setWindowTitle) self.onLayoutFinish.append(self.rebuildList) self.onClose.append(self.cleanup) - + def cleanup(self): self.ipkg.stop() if self.Console is not None: @@ -448,6 +448,8 @@ class PacketManager(Screen): for x in result.splitlines(): split = x.split(' - ') self.packetlist.append([split[0].strip(), split[1].strip(),split[2].strip()]) + if not self.Console: + self.Console = Console() cmd = "ipkg list_installed" self.Console.ePopen(cmd, self.IpkgListInstalled_Finished) -- cgit v1.2.3 From eb23e866b8888b4d7b86e0b5ff45891e12fb04e1 Mon Sep 17 00:00:00 2001 From: ghost Date: Sat, 14 Feb 2009 12:01:42 +0100 Subject: dont crash when not official-feed.conf found --- .../SystemPlugins/SoftwareManager/plugin.py | 30 ++++++++++++++-------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 81e1e9f9..a8654895 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -231,13 +231,20 @@ class IPKGSource(Screen): def __init__(self, session, args = None): Screen.__init__(self, session) self.session = session - - fp = file('/etc/ipkg/official-feed.conf', 'r') - sources = fp.readlines() - fp.close() - - self["text"] = Input(sources[0], maxSize=False, type=Input.TEXT) - + + #FIXMEEEE add handling for more than one feed conf file! + text = "" + try: + fp = file('/etc/ipkg/official-feed.conf', 'r') + sources = fp.readlines() + if sources: + text = sources[0] + fp.close() + except IOError: + pass + + self["text"] = Input(text, maxSize=False, type=Input.TEXT) + self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions"], { "ok": self.go, @@ -261,9 +268,11 @@ class IPKGSource(Screen): }, -1) def go(self): - fp = file('/etc/ipkg/official-feed.conf', 'w') - fp.write(self["text"].getText()) - fp.close() + text = self["text"].getText() + if text: + fp = file('/etc/ipkg/official-feed.conf', 'w') + fp.write() + fp.close() self.close() def keyLeft(self): @@ -288,7 +297,6 @@ class IPKGSource(Screen): print "pressed", number self["text"].number(number) - class PacketList(MenuList): def __init__(self, list, enableWrapAround=True): MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) -- cgit v1.2.3 From 2b80914bdd9aada1797f450bbb9089f6d9bb5740 Mon Sep 17 00:00:00 2001 From: ghost Date: Sat, 14 Feb 2009 14:56:17 +0100 Subject: make factory reset description translatable --- data/menu.xml | 13 +++++-------- lib/python/Screens/FactoryReset.py | 9 +++++++++ lib/python/Screens/Makefile.am | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 lib/python/Screens/FactoryReset.py (limited to 'lib/python') diff --git a/data/menu.xml b/data/menu.xml index 7dc764ac..56b3ee65 100644 --- a/data/menu.xml +++ b/data/menu.xml @@ -82,20 +82,17 @@ self.session.open(DefaultWizard, silent = False) - -from Screens.MessageBox import MessageBox + +from Screens.FactoryReset import FactoryReset def msgClosed(ret): if ret: from os import system, _exit system("rm -R /etc/enigma2") system("cp -R /usr/share/enigma2/defaults /etc/enigma2") _exit(0) - -self.session.openWithCallback(msgClosed, MessageBox, _("When you do a factory reset, you will lose ALL your configuration data\n" - "(including bouquets, services, satellite data ...)\n" - "After completion of factory reset, your receiver will restart automatically!\n\n" - "Really do a factory reset?"), MessageBox.TYPE_YESNO) - +self.session.openWithCallback(msgClosed, FactoryReset) + + diff --git a/lib/python/Screens/FactoryReset.py b/lib/python/Screens/FactoryReset.py new file mode 100644 index 00000000..ce5aaeb3 --- /dev/null +++ b/lib/python/Screens/FactoryReset.py @@ -0,0 +1,9 @@ +from Screens.MessageBox import MessageBox + +class FactoryReset(MessageBox): + def __init__(self, session): + MessageBox.__init__(self, session, _("When you do a factory reset, you will lose ALL your configuration data\n" + "(including bouquets, services, satellite data ...)\n" + "After completion of factory reset, your receiver will restart automatically!\n\n" + "Really do a factory reset?"), MessageBox.TYPE_YESNO) + self.skinName = "MessageBox" \ No newline at end of file diff --git a/lib/python/Screens/Makefile.am b/lib/python/Screens/Makefile.am index 00204a94..ca67f73d 100755 --- a/lib/python/Screens/Makefile.am +++ b/lib/python/Screens/Makefile.am @@ -14,5 +14,5 @@ install_PYTHON = \ SubtitleDisplay.py SubservicesQuickzap.py ParentalControlSetup.py NumericalTextInputHelpDialog.py \ SleepTimerEdit.py Ipkg.py RdsDisplay.py Globals.py DefaultWizard.py \ SessionGlobals.py LocationBox.py WizardLanguage.py TaskView.py Rc.py VirtualKeyBoard.py \ - TextBox.py + TextBox.py FactoryReset.py -- cgit v1.2.3 From f7fd9d049d5fbccac4b4a12b9eab774bc6238219 Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 13:55:33 +0100 Subject: add sanity checks for getCurrent and getCurrentSelection --- .../SystemPlugins/SoftwareManager/plugin.py | 140 +++++++++++---------- 1 file changed, 74 insertions(+), 66 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index a8654895..2bacd414 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -136,46 +136,48 @@ class UpdatePluginMenu(Screen): self.setTitle(_("Software manager...")) def go(self): - current = self["menu"].getCurrent()[0] - if self.menu == 0: - if (current == "software-restore"): - self.session.open(ImageWizard) - elif (current == "software-update"): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!")) - elif (current == "advanced"): - self.session.open(UpdatePluginMenu, 1) - elif (current == "system-backup"): - self.session.openWithCallback(self.backupDone,BackupScreen, runBackup = True) - 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) - if self.menu == 1: - if (current == "ipkg-manager"): - self.session.open(PacketManager, self.skin_path) - elif (current == "ipkg-source"): - self.session.open(IPKGSource) - 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) - elif (current == "backuplocation"): - parts = [ (r.description, r.mountpoint, self.session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] - for x in parts: - if not access(x[1], F_OK|R_OK|W_OK) or x[1] == '/': - parts.remove(x) - for x in parts: - if x[1].startswith('/autofs/'): - parts.remove(x) - if len(parts): - self.session.openWithCallback(self.backuplocation_choosen, ChoiceBox, title = _("Please select medium to use as backup location"), list = parts) - elif (current == "backupfiles"): - self.session.openWithCallback(self.backupfiles_choosen,BackupSelection) - elif (current == "advancedrestore"): - self.session.open(RestoreMenu, self.skin_path) + current = self["menu"].getCurrent() + if current: + current = current[0] + if self.menu == 0: + if (current == "software-restore"): + self.session.open(ImageWizard) + elif (current == "software-update"): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!")) + elif (current == "advanced"): + self.session.open(UpdatePluginMenu, 1) + elif (current == "system-backup"): + self.session.openWithCallback(self.backupDone,BackupScreen, runBackup = True) + 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) + elif self.menu == 1: + if (current == "ipkg-manager"): + self.session.open(PacketManager, self.skin_path) + elif (current == "ipkg-source"): + self.session.open(IPKGSource) + 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) + elif (current == "backuplocation"): + parts = [ (r.description, r.mountpoint, self.session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)] + for x in parts: + if not access(x[1], F_OK|R_OK|W_OK) or x[1] == '/': + parts.remove(x) + for x in parts: + if x[1].startswith('/autofs/'): + parts.remove(x) + if len(parts): + self.session.openWithCallback(self.backuplocation_choosen, ChoiceBox, title = _("Please select medium to use as backup location"), list = parts) + elif (current == "backupfiles"): + self.session.openWithCallback(self.backupfiles_choosen,BackupSelection) + elif (current == "advancedrestore"): + self.session.open(RestoreMenu, self.skin_path) def backupfiles_choosen(self, ret): self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value ) @@ -381,20 +383,22 @@ class PacketManager(Screen): self.ipkg.startCmd(IpkgComponent.CMD_UPDATE) def go(self, returnValue = None): - returnValue = self['list'].l.getCurrentSelection()[0] - self.cmdList = [] - if returnValue[3] == 'installed': - self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": returnValue[0] })) - if len(self.cmdList): - self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n" + returnValue[0] + "\n" + self.oktext)) - elif returnValue[3] == 'upgradeable': - self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) - if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to upgrade the package:\n" + returnValue[0] + "\n" + self.oktext)) - else: - self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) - if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n" + returnValue[0] + "\n" + self.oktext)) + cur = self['list'].l.getCurrentSelection() + if cur: + returnValue = cur[0] + self.cmdList = [] + if returnValue[3] == 'installed': + self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n" + returnValue[0] + "\n" + self.oktext)) + elif returnValue[3] == 'upgradeable': + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to upgrade the package:\n" + returnValue[0] + "\n" + self.oktext)) + else: + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + if len(self.cmdList): + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n" + returnValue[0] + "\n" + self.oktext)) def runRemove(self, result): if result: @@ -407,12 +411,14 @@ class PacketManager(Screen): if result is None: return if result is False: - entry = self['list'].l.getCurrentSelection()[0] - item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installable']) - self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] - self['list'].l.setList(self.list) - write_cache(self.cache_file, self.cachelist) + cur = self['list'].l.getCurrentSelection() + if cur: + entry = cur[0] + item = self['list'].l.getCurrentSelectionIndex() + self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installable']) + self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] + self['list'].l.setList(self.list) + write_cache(self.cache_file, self.cachelist) if result: quitMainloop(3) @@ -427,12 +433,14 @@ class PacketManager(Screen): if result is None: return if result is False: - entry = self['list'].l.getCurrentSelection()[0] - item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installed']) - self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] - self['list'].l.setList(self.list) - write_cache(self.cache_file, self.cachelist) + cur = self['list'].l.getCurrentSelection() + if cur: + entry = [0] + item = self['list'].l.getCurrentSelectionIndex() + self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installed']) + self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] + self['list'].l.setList(self.list) + write_cache(self.cache_file, self.cachelist) if result: quitMainloop(3) -- cgit v1.2.3 From a6a87622d681f49887a2b8244e0c0639415383db Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 14:00:01 +0100 Subject: invalidate listboxcontent on epglist sort --- lib/python/Components/EpgList.py | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/python') diff --git a/lib/python/Components/EpgList.py b/lib/python/Components/EpgList.py index 8bd8e759..2494ca08 100644 --- a/lib/python/Components/EpgList.py +++ b/lib/python/Components/EpgList.py @@ -289,6 +289,7 @@ class EPGList(HTMLComponent, GUIComponent): else: assert(type == 0) list.sort(key=lambda x: x[2]) + self.l.invalidate() self.moveToEventId(event_id) def getSelectedEventId(self): -- cgit v1.2.3 From 40181f9c63bd5fb1f4b7f24e1ab18caf19fb598b Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 14:42:44 +0100 Subject: use LoadPixmap with cached instead of global loadPNG (to optimize enigma2 startup time) --- lib/python/Screens/VirtualKeyBoard.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Screens/VirtualKeyBoard.py b/lib/python/Screens/VirtualKeyBoard.py index 53970ab8..5dc1a090 100755 --- a/lib/python/Screens/VirtualKeyBoard.py +++ b/lib/python/Screens/VirtualKeyBoard.py @@ -5,19 +5,10 @@ from Components.Label import Label from Components.Pixmap import Pixmap from Components.MenuList import MenuList from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest -from enigma import eListboxPythonMultiContent, gFont, loadPNG, RT_HALIGN_CENTER, RT_VALIGN_CENTER +from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_CENTER, RT_VALIGN_CENTER from Screen import Screen from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE - -key_backspace = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_backspace.png")) -key_bg = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_bg.png")) -key_clr = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_clr.png")) -key_esc = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_esc.png")) -key_ok = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_ok.png")) -key_sel = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_sel.png")) -key_shift = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift.png")) -key_shift_sel = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift_sel.png")) -key_space = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_space.png")) +from Tools.LoadPixmap import LoadPixmap class VirtualKeyBoardList(MenuList): def __init__(self, list, enableWrapAround=False): @@ -26,6 +17,16 @@ class VirtualKeyBoardList(MenuList): self.l.setItemHeight(45) def VirtualKeyBoardEntryComponent(keys, selectedKey,shiftMode=False): + key_backspace = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_backspace.png")) + key_bg = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_bg.png")) + key_clr = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_clr.png")) + key_esc = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_esc.png")) + key_ok = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_ok.png")) + key_sel = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_sel.png")) + key_shift = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift.png")) + key_shift_sel = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift_sel.png")) + key_space = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_space.png")) + res = [ (keys) ] x = 0 @@ -116,6 +117,7 @@ class VirtualKeyBoard(Screen): [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"", u"*"], [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"", u"", u"'"], [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"], + [u"SHIFT", u"SPACE", u"?", u"\\", u"", u"OK"]] else: self.keys_list = [ -- cgit v1.2.3 From fab463a3faba44ec9d37df4eeb89a7bea6de1caa Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 14:44:29 +0100 Subject: small improovements by Ali Abdul --- .../SystemPlugins/SoftwareManager/plugin.py | 38 ++++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 2bacd414..14f9ee76 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -18,7 +18,7 @@ from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixm from Components.SelectionList import SelectionList from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE from Tools.LoadPixmap import LoadPixmap -from enigma import eTimer, loadPNG, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont +from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont from cPickle import dump, load from os import path as os_path, system as os_system, unlink, stat, mkdir, popen, makedirs, listdir, access, rename, remove, W_OK, R_OK, F_OK @@ -33,7 +33,6 @@ config.plugins.configurationbackup = ConfigSubsection() config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False) config.plugins.configurationbackup.backupdirs = ConfigLocations(default=['/etc/enigma2/', '/etc/network/interfaces', '/etc/wpa_supplicant.conf']) - def write_cache(cache_file, cache_data): #Does a cPickle dump if not os_path.isdir( os_path.dirname(cache_file) ): @@ -415,7 +414,7 @@ class PacketManager(Screen): if cur: entry = cur[0] item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installable']) + self.list[item] = self.buildEntryComponent(entry[0], entry[1], entry[2], 'installable') self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] self['list'].l.setList(self.list) write_cache(self.cache_file, self.cachelist) @@ -437,7 +436,7 @@ class PacketManager(Screen): if cur: entry = [0] item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = PacketEntryComponent([entry[0], entry[1], entry[2], 'installed']) + self.list[item] = self.buildEntryComponent(entry[0], entry[1], entry[2], 'installed') self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] self['list'].l.setList(self.list) write_cache(self.cache_file, self.cachelist) @@ -483,17 +482,23 @@ class PacketManager(Screen): res.append(MultiContentEntryText(pos=(5, 26), size=(440, 20), font=1, text=entry[2])) res.append(MultiContentEntryPixmapAlphaTest(pos=(445, 2), size=(48, 48), png = entry[4])) res.append(MultiContentEntryPixmapAlphaTest(pos=(5, 50), size=(510, 2), png = entry[5])) - return res + def buildEntryComponent(self, name, version, description, state): + divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png")) + if state == 'installed': + installedpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installed.png")) + return(self.PacketEntryComponent([name, version, description, state, installedpng, divpng])) + elif state == 'upgradeable': + upgradeablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/upgradeable.png")) + return(self.PacketEntryComponent([name, version, description, state, upgradeablepng, divpng])) + else: + installablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installable.png")) + return(self.PacketEntryComponent([name, version, description, state, installablepng, divpng])) def buildPacketList(self): self.list = [] self.cachelist = [] - installedpng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installed.png")) - upgradeablepng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/upgradeable.png")) - installablepng = loadPNG(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installable.png")) - divpng = loadPNG(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png")) if self.cache_ttl > 0 and self.vc != 0: print 'Loading packagelist cache from ',self.cache_file @@ -501,12 +506,7 @@ class PacketManager(Screen): self.cachelist = load_cache(self.cache_file) if len(self.cachelist) > 0: for x in self.cachelist: - if x[3] == 'installed': - self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],installedpng,divpng])) - elif x[3] == 'upgradeable': - self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],upgradeablepng,divpng])) - else: - self.list.append(self.PacketEntryComponent([x[0], x[1], x[2], x[3],installablepng,divpng])) + self.list.append(self.buildEntryComponent(x[0], x[1], x[2], x[3])) self['list'].l.setList(self.list) self["list"].instance.show() self.status.hide() @@ -520,19 +520,21 @@ class PacketManager(Screen): if self.installed_packetlist.has_key(x[0].strip()): if self.installed_packetlist[x[0].strip()] == x[1].strip(): status = "installed" - self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,installedpng,divpng])) + self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) else: status = "upgradeable" - self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,upgradeablepng,divpng])) + self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) else: status = "installable" - self.list.append(self.PacketEntryComponent([x[0].strip(), x[1].strip(), x[2].strip(), status,installablepng,divpng])) + self.list.append(self.buildEntryComponent(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'].l.setList(self.list) self["list"].instance.show() self.status.hide() + def reloadPluginlist(self): + plugins.readPluginList(resolveFilename(SCOPE_PLUGINS)) class UpdatePlugin(Screen): skin = """ -- cgit v1.2.3 From ea7540aaea403dd8b27ebee6e938b98088ec8627 Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 16:16:20 +0100 Subject: fix typo --- lib/python/Components/NimManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 4be10d53..6dc49dcf 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -287,8 +287,8 @@ class SecConfigure: sec.setLNBSatCR(manufacturer.scr[product_name].index) sec.setLNBSatCRvco(manufacturer.vco[product_name][manufacturer.scr[product_name].index].value*1000) elif currLnb.unicable.value == "unicable_lnb": - manufacturer_name = currLnb.unicableMatrixManufacturer.value - manufacturer = currLnb.unicableMatrix[manufacturer_name] + manufacturer_name = currLnb.unicableLnbManufacturer.value + manufacturer = currLnb.unicableLnb[manufacturer_name] product_name = manufacturer.product.value sec.setLNBSatCR(manufacturer.scr[product_name].index) sec.setLNBSatCRvco(manufacturer.vco[product_name][manufacturer.scr[product_name].index].value*1000) -- cgit v1.2.3 From 710f40bb42dbf86b53a2e1b4839af6f2d5be381d Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 15 Feb 2009 16:20:49 +0100 Subject: add pluginlist reload, fix type (thx to Ali Abdul) --- lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 14f9ee76..3215dbce 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -418,6 +418,7 @@ class PacketManager(Screen): self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] self['list'].l.setList(self.list) write_cache(self.cache_file, self.cachelist) + self.reloadPluginlist() if result: quitMainloop(3) @@ -434,12 +435,13 @@ class PacketManager(Screen): if result is False: cur = self['list'].l.getCurrentSelection() if cur: - entry = [0] + entry = cur[0] item = self['list'].l.getCurrentSelectionIndex() self.list[item] = self.buildEntryComponent(entry[0], entry[1], entry[2], 'installed') self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] self['list'].l.setList(self.list) write_cache(self.cache_file, self.cachelist) + self.reloadPluginlist() if result: quitMainloop(3) -- cgit v1.2.3 From cc6bff0296fa0dc0d274252ef9f80df431bdda42 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Sun, 15 Feb 2009 20:07:57 +0100 Subject: add kill to Console --- lib/python/Components/Console.py | 5 +++++ 1 file changed, 5 insertions(+) mode change 100644 => 100755 lib/python/Components/Console.py (limited to 'lib/python') diff --git a/lib/python/Components/Console.py b/lib/python/Components/Console.py old mode 100644 new mode 100755 index f1f3fd95..7efdf64e --- a/lib/python/Components/Console.py +++ b/lib/python/Components/Console.py @@ -55,3 +55,8 @@ class Console(object): if self.callbacks[name]: self.callbacks[name](data,retval,extra_args) del self.callbacks[name] + + def kill(self,name): + if self.appContainers.has_key(name): + print "[Console] killing: ",self.appContainers[name] + self.appContainers[name].kill() -- cgit v1.2.3 From 577f94522fe47fd47acf0e665db5d85302415074 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Sun, 15 Feb 2009 20:10:55 +0100 Subject: add missing import properly kill running Console when closing screen --- .../Plugins/SystemPlugins/SoftwareManager/plugin.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index 3215dbce..d8ccd5a5 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -16,6 +16,7 @@ from Components.config import config,getConfigListEntry, ConfigSubsection, Confi from Components.Console import Console from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest from Components.SelectionList import SelectionList +from Components.PluginComponent import plugins from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE from Tools.LoadPixmap import LoadPixmap from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont @@ -324,8 +325,8 @@ class PacketManager(Screen): self["shortcuts"] = ActionMap(["ShortcutActions", "WizardActions"], { "ok": self.go, - "back": self.close, - "red": self.close, + "back": self.exit, + "red": self.exit, "green": self.reload, }, -1) @@ -350,7 +351,15 @@ class PacketManager(Screen): self.ipkg.addCallback(self.ipkgCallback) self.onShown.append(self.setWindowTitle) self.onLayoutFinish.append(self.rebuildList) - self.onClose.append(self.cleanup) + #self.onClose.append(self.cleanup) + + def exit(self): + self.ipkg.stop() + if self.Console is not None: + if len(self.Console.appContainers): + for name in self.Console.appContainers.keys(): + self.Console.kill(name) + self.close() def cleanup(self): self.ipkg.stop() -- cgit v1.2.3 From b771b6a170124c2721cab8edc053dab5ecc6ef3f Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Sun, 15 Feb 2009 22:18:15 +0100 Subject: fix typo, patch by Moritz Venn --- lib/python/Screens/LocationBox.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Screens/LocationBox.py b/lib/python/Screens/LocationBox.py index 389d3624..fa47b1f2 100644 --- a/lib/python/Screens/LocationBox.py +++ b/lib/python/Screens/LocationBox.py @@ -409,7 +409,7 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen): )) else: menu = ( - (_("switch to filelist"), self.switchToFileList) + (_("switch to filelist"), self.switchToFileList), (_("remove bookmark"), self.addRemoveBookmark) ) -- cgit v1.2.3 From f03b3cf5c0e903a01853ba292ea1b0f01ceafbbb Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Sun, 15 Feb 2009 23:10:45 +0100 Subject: use 'in', add killAll --- lib/python/Components/Console.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Components/Console.py b/lib/python/Components/Console.py index 7efdf64e..a41317ea 100755 --- a/lib/python/Components/Console.py +++ b/lib/python/Components/Console.py @@ -57,6 +57,10 @@ class Console(object): del self.callbacks[name] def kill(self,name): - if self.appContainers.has_key(name): + if name in self.appContainers: print "[Console] killing: ",self.appContainers[name] self.appContainers[name].kill() + + def killAll(self): + for name in self.appContainers: + self.kill(name) -- cgit v1.2.3 From 6b6c9e105e8f4b5fad9dad8329488f48c5110133 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 16 Feb 2009 00:06:57 +0100 Subject: add latvian language --- data/countries/lv.png | Bin 0 -> 1045 bytes lib/python/Components/Language.py | 1 + po/Makefile.am | 2 +- po/lv.po | 5081 +++++++++++++++++++++++++++++++++++++ 4 files changed, 5083 insertions(+), 1 deletion(-) create mode 100644 data/countries/lv.png create mode 100644 po/lv.po (limited to 'lib/python') diff --git a/data/countries/lv.png b/data/countries/lv.png new file mode 100644 index 00000000..3a29dad2 Binary files /dev/null and b/data/countries/lv.png differ diff --git a/lib/python/Components/Language.py b/lib/python/Components/Language.py index 395f6829..74dd67d8 100644 --- a/lib/python/Components/Language.py +++ b/lib/python/Components/Language.py @@ -26,6 +26,7 @@ class Language: self.addLanguage(_("Greek"), "el", "GR") self.addLanguage(_("Hungarian"), "hu", "HU") self.addLanguage(_("Lithuanian"), "lt", "LT") + self.addLanguage(_("Latvian"), "lv", "LV") self.addLanguage(_("Icelandic"), "is", "IS") self.addLanguage(_("Italian"), "it", "IT") self.addLanguage(_("Norwegian"), "no", "NO") diff --git a/po/Makefile.am b/po/Makefile.am index 41cf55ea..d724f58b 100755 --- a/po/Makefile.am +++ b/po/Makefile.am @@ -5,7 +5,7 @@ GETTEXT=xgettext #MSGFMT = ./msgfmt.py MSGFMT = msgfmt -LANGS := ar ca cs da de el en es fi fr fy hr hu is it lt nl no pl pt ru sv tr uk +LANGS := ar ca cs da de el en es fi fr fy hr hu is it lt lv nl no pl pt ru sv tr uk LANGPO := $(foreach LANG, $(LANGS),$(LANG).po) LANGMO := $(foreach LANG, $(LANGS),$(LANG).mo) diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 00000000..03362751 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,5081 @@ +msgid "" +msgstr "" +"Project-Id-Version: tuxbox-enigma 0.0.1\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2009-02-16 00:05+0100\n" +"PO-Revision-Date: 2009-02-09 20:18+0200\n" +"Last-Translator: Ivo Grinbergs \n" +"Language-Team: Ivo / enigma2 (c) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Latvian\n" +"X-Poedit-Country: LATVIA\n" +"X-Poedit-SourceCharset: utf-8\n" + +msgid "" +"\n" +"Advanced options and settings." +msgstr "" + +msgid "" +"\n" +"After pressing OK, please wait!" +msgstr "" + +msgid "" +"\n" +"Backup your Dreambox settings." +msgstr "" + +msgid "" +"\n" +"Edit the upgrade source address." +msgstr "" + +msgid "" +"\n" +"Online update of your Dreambox software." +msgstr "" + +msgid "" +"\n" +"Press OK on your remote control to continue." +msgstr "" + +msgid "" +"\n" +"Restore your Dreambox settings." +msgstr "" + +msgid "" +"\n" +"Restore your Dreambox with a new firmware." +msgstr "" + +msgid "" +"\n" +"Restore your backups by date." +msgstr "" + +msgid "" +"\n" +"Scan for local packages and install them." +msgstr "" + +msgid "" +"\n" +"Select your backup device.\n" +"Current device: " +msgstr "" + +msgid "" +"\n" +"View, install and remove available or installed packages." +msgstr "" + +msgid " " +msgstr " " + +msgid "#000000" +msgstr "#000000" + +msgid "#0064c7" +msgstr "#0064c7" + +msgid "#25062748" +msgstr "#25062748" + +msgid "#389416" +msgstr "#389416" + +msgid "#80000000" +msgstr "#80000000" + +msgid "#80ffffff" +msgstr "#80ffffff" + +msgid "#bab329" +msgstr "#bab329" + +msgid "#f23d21" +msgstr "#f23d21" + +msgid "#ffffff" +msgstr "#ffffff" + +msgid "#ffffffff" +msgstr "#ffffffff" + +msgid "%H:%M" +msgstr "%H:%M" + +#, python-format +msgid "%d jobs are running in the background!" +msgstr "%d darbi tiek veikti fonā" + +#, python-format +msgid "%d min" +msgstr "%d min" + +#, python-format +msgid "%d services found!" +msgstr "%d kanāli atrasti!" + +msgid "%d.%B %Y" +msgstr "%d.%B %Y" + +#, python-format +msgid "" +"%s\n" +"(%s, %d MB free)" +msgstr "" +"%s\n" +"(%s, %d MB brīvi)" + +#, python-format +msgid "%s (%s)\n" +msgstr "%s (%s)\n" + +# ??? +msgid "(ZAP)" +msgstr "(PĀRSLĒGT)" + +msgid "(empty)" +msgstr "(tukšs)" + +msgid "(show optional DVD audio menu)" +msgstr "(rādīt papildu DVD skaņas izvēlni)" + +msgid "* Only available if more than one interface is active." +msgstr "* Pieejams ja ir aktīvs vairāk nekā viens interfeiss." + +msgid "* Only available when entering hidden SSID or network key" +msgstr "* Pieejams tikai ievadot slēptu SSID vai tīkla atslēgu" + +msgid ".NFI Download failed:" +msgstr ".NFI lejuplāde neizdevās:" + +msgid "" +".NFI file passed md5sum signature check. You can safely flash this image!" +msgstr "" +".NFI datne izsgāja md5sum paraksta pārbaudi. Varat droši lādēt šo imidžu!" + +msgid "/usr/share/enigma2 directory" +msgstr "/usr/share/enigma2 katalogs" + +msgid "/var directory" +msgstr "/var katalogs" + +msgid "0" +msgstr "0" + +msgid "1" +msgstr "1" + +msgid "1.0" +msgstr "1.0" + +msgid "1.1" +msgstr "1.1" + +msgid "1.2" +msgstr "1.2" + +msgid "12V output" +msgstr "12V izeja" + +msgid "13 V" +msgstr "13 V" + +msgid "16:10" +msgstr "16:10" + +msgid "16:10 Letterbox" +msgstr "16:10 Letterbox" + +msgid "16:10 PanScan" +msgstr "16:10 PanScan" + +msgid "16:9" +msgstr "16:9" + +msgid "16:9 Letterbox" +msgstr "16:9 Letterbox" + +msgid "16:9 always" +msgstr "16:9 vienmēr" + +msgid "18 V" +msgstr "18 V" + +msgid "2" +msgstr "2" + +msgid "3" +msgstr "3" + +msgid "30 minutes" +msgstr "30 minūtēm" + +msgid "4" +msgstr "4" + +msgid "4:3" +msgstr "4:3" + +msgid "4:3 Letterbox" +msgstr "4:3 Letterbox" + +msgid "4:3 PanScan" +msgstr "4:3 PanScan" + +msgid "5" +msgstr "5" + +msgid "5 minutes" +msgstr "5 minūtēm" + +msgid "50 Hz" +msgstr "50 Hz" + +msgid "6" +msgstr "6" + +msgid "60 minutes" +msgstr "60 minūtēm" + +msgid "7" +msgstr "7" + +msgid "8" +msgstr "8" + +msgid "9" +msgstr "9" + +msgid "" +msgstr "" + +msgid "??" +msgstr "??" + +msgid "A" +msgstr "A" + +# bija pārveidota? +#, python-format +msgid "" +"A configuration file (%s) was modified since Installation.\n" +"Do you want to keep your version?" +msgstr "" +"Konfigurācijas datne (%s) ir pārveidota kopš uzstādīšanas.\n" +"Vai vēlaties paturēt savu versiju?" + +msgid "" +"A finished record timer wants to set your\n" +"Dreambox to standby. Do that now?" +msgstr "" +"Taimeris ir beidzis ierakstu un vēlas pārslēgt\n" +"Dreambox gaidstāves režīmā. Vai darīt to tagad?" + +msgid "" +"A finished record timer wants to shut down\n" +"your Dreambox. Shutdown now?" +msgstr "" +"Taimeris ir beidzis ierakstu un vēlas izslēgt\n" +"Dreambox. Vai darīt to tagad?" + +# ??? +msgid "A graphical EPG for all services of an specific bouquet" +msgstr "Grafiskais EPG visiem kanāliem izvēlētā buķetē" + +#, python-format +msgid "" +"A record has been started:\n" +"%s" +msgstr "" +"Ieraksts ir sācies:\n" +"%s" + +msgid "" +"A recording is currently running.\n" +"What do you want to do?" +msgstr "" +"Pašreiz tiek veikts ieraksts.\n" +"Ko Jūs vēlaties darīt?" + +msgid "" +"A recording is currently running. Please stop the recording before trying to " +"configure the positioner." +msgstr "" +"Pašreiz tiek veikts ieraksts. Lūdzu apturiet ierakstu pirms konfigurējat " +"pozicionieri." + +msgid "" +"A recording is currently running. Please stop the recording before trying to " +"start the satfinder." +msgstr "" +"Pašreiz tiek veikts ieraksts. Lūdzu apturiet ierakstu pirms startējiet sat-" +"meklētāju." + +#, python-format +msgid "A required tool (%s) was not found." +msgstr "Vajadzīgais rīks (%s) netika atrasts." + +msgid "" +"A sleep timer wants to set your\n" +"Dreambox to standby. Do that now?" +msgstr "" +"Sleep taimeris vēlas pārslēgt\n" +"Dreambox gaidstāves režīmā. Vai darīt to tagad?" + +msgid "" +"A sleep timer wants to shut down\n" +"your Dreambox. Shutdown now?" +msgstr "" +"Sleep taimeris vēlas izslēgt\n" +"Dreambox. Vai darīt to tagad?" + +msgid "" +"A timer failed to record!\n" +"Disable TV and try again?\n" +msgstr "" +"Taimerim neizdevās uzsākt ierakstu!\n" +"Izslēgt TV un mēģināt vēl?\n" + +msgid "A/V Settings" +msgstr "A/V iestatījumi" + +msgid "AA" +msgstr "AA" + +msgid "AB" +msgstr "AB" + +msgid "AC3 default" +msgstr "AC3 pēc noklusējuma" + +# ??? +msgid "AC3 downmix" +msgstr "Pārveide AC3 -> stereo" + +msgid "About" +msgstr "Par" + +msgid "About..." +msgstr "Par..." + +# ??? +msgid "Action on long powerbutton press" +msgstr "Darbība pēc ilgstošas ieslēgšanas taustiņa nospiešanas" + +msgid "Action:" +msgstr "Darbība:" + +msgid "Activate Picture in Picture" +msgstr "Aktivizēt funkciju attēls attēlā" + +msgid "Activate network settings" +msgstr "Aktivizēt tīkla iestatījumus" + +msgid "Adapter settings" +msgstr "Adaptera iestatījumi" + +msgid "Add" +msgstr "Pievienot" + +msgid "Add Bookmark" +msgstr "Pievienot grāmatzīmi" + +msgid "Add a mark" +msgstr "Pievienot iezīmi" + +msgid "Add a new title" +msgstr "Pievienot jaunu nosaukumu" + +msgid "Add timer" +msgstr "Pievienot taimeri" + +msgid "Add title" +msgstr "Pievienot nosaukumu" + +msgid "Add to bouquet" +msgstr "Pievienot buķetei" + +msgid "Add to favourites" +msgstr "Pievienot favorītiem" + +msgid "" +"Adjust the color settings so that all the color shades are distinguishable, " +"but appear as saturated as possible. If you are happy with the result, press " +"OK to close the video fine-tuning, or use the number keys to select other " +"test screens." +msgstr "" +"Regulēt krāsu iestatījumus tā lai visi krāsu toņi ir izšķirami bet, cik " +"iespējams, piesātināti. Ja esat apmierināti ar rezultātu, spiediet OK lai " +"aizvērtu attēla precizēšanu vai izmantojiet ciparu taustiņus, lai izvēlētos " +"citus testēšanas rastrus." + +msgid "Advanced" +msgstr "Paplašināts" + +msgid "Advanced Options" +msgstr "" + +msgid "Advanced Video Setup" +msgstr "Paplašinātā attēla iestatne" + +msgid "Advanced restore" +msgstr "" + +msgid "After event" +msgstr "Pēc notikuma" + +# ??? +msgid "" +"After the start wizard is completed, you need to protect single services. " +"Refer to your dreambox's manual on how to do that." +msgstr "" +"Pēc starta vednis ir pabeigts, jums ir jāaizsargā atsevišķi kanāli. " +"Meklējiet dreambox rokasgrāmatā kā to izdarīt." + +msgid "Album" +msgstr "Albums" + +msgid "All" +msgstr "Visi" + +msgid "All Satellites" +msgstr "Visi pavadoņi" + +msgid "Alpha" +msgstr "Alpha" + +msgid "Alternative radio mode" +msgstr "Alternatīvais radio režīms" + +# ??? +msgid "Alternative services tuner priority" +msgstr "Alternatīvo uztvērēju prioritātes" + +msgid "An empty filename is illegal." +msgstr "Datnes nosaukums nevar būt tukšs" + +msgid "An error occured!" +msgstr "" + +msgid "An unknown error occured!" +msgstr "Nezināma kļūda!" + +msgid "Arabic" +msgstr "Arābu" + +msgid "" +"Are you sure you want to activate this network configuration?\n" +"\n" +msgstr "" +"Vai tiešām vēlaties aktivizēt šo tīkla konfigurāciju?\n" +"\n" + +msgid "" +"Are you sure you want to restart your network interfaces?\n" +"\n" +msgstr "" +"Vai tiešām vēlaties restartēt tīkla interfeisus? \n" +"\n" + +msgid "" +"Are you sure you want to restore\n" +"following backup:\n" +msgstr "" + +msgid "" +"Are you sure you want to restore your Enigma2 backup?\n" +"Enigma2 will restart after the restore" +msgstr "" + +msgid "Artist" +msgstr "Izpildītājs" + +msgid "Ask before shutdown:" +msgstr "Jautāt pirms izslēgšanas: " + +msgid "Ask user" +msgstr "Jautāt" + +msgid "Aspect Ratio" +msgstr "Malu attiecība" + +msgid "Audio" +msgstr "Skaņa" + +msgid "Audio Options..." +msgstr "Skaņas opcijas..." + +msgid "Authoring mode" +msgstr "Autorēšanas režīms" + +msgid "Auto" +msgstr "Automātiski" + +msgid "Auto chapter split every ? minutes (0=never)" +msgstr "Automātiska nodaļu veidošana katras? minūtes (0=neveidot)" + +msgid "Auto scart switching" +msgstr "Automātiska SCART pārslēgšana" + +msgid "Automatic" +msgstr "Automātiski" + +msgid "Automatic Scan" +msgstr "Automātiskā meklēšana" + +# ??? +msgid "Available format variables" +msgstr "Pieejamie mainīgo formāti" + +msgid "B" +msgstr "B" + +msgid "BA" +msgstr "BA" + +msgid "BB" +msgstr "BB" + +msgid "BER" +msgstr "BER" + +msgid "BER:" +msgstr "BER:" + +msgid "Back" +msgstr "Atpakaļ" + +msgid "Background" +msgstr "Fons" + +msgid "Backup" +msgstr "Dublējumkopija" + +msgid "Backup Location" +msgstr "Dublējumkopijas vieta" + +msgid "Backup Mode" +msgstr "Dublējumkopijas režīms" + +msgid "Backup done." +msgstr "" + +msgid "Backup failed." +msgstr "" + +msgid "Backup is done. Please press OK to see the result." +msgstr "Dublējumkopija izveidota. Lūdzu spiediet OK lai apskatītu rezultātu." + +msgid "Backup running" +msgstr "" + +msgid "Backup running..." +msgstr "" + +msgid "Backup system settings" +msgstr "" + +msgid "Band" +msgstr "Josla" + +msgid "Bandwidth" +msgstr "Joslas platums" + +msgid "Begin time" +msgstr "Sākuma laiks" + +# ??? +msgid "Behavior of 'pause' when paused" +msgstr "Pauzes veids" + +msgid "Behavior of 0 key in PiP-mode" +msgstr "0 taustiņa nozīme PiP režīmā" + +msgid "Behavior when a movie is started" +msgstr "Darbība kad filma ir palaista" + +msgid "Behavior when a movie is stopped" +msgstr "Darbība kad filma ir apturēta" + +msgid "Behavior when a movie reaches the end" +msgstr "Darbība kad filma beidzas" + +msgid "Bookmarks" +msgstr "Grāmatzīmes" + +msgid "Brightness" +msgstr "Spilgtums" + +msgid "Burn DVD" +msgstr "Rakstīt DVD" + +msgid "Burn existing image to DVD" +msgstr "Rakstīt esošo imidžu uz DVD" + +msgid "Burn to DVD..." +msgstr "Rakstīt uz DVD" + +msgid "Bus: " +msgstr "Bus: " + +msgid "" +"By pressing the OK Button on your remote control, the info bar is being " +"displayed." +msgstr "Nospiežot OK uz tālvadības pults, tiks parādīta informācijas josla." + +msgid "C" +msgstr "C" + +msgid "C-Band" +msgstr "C-josla" + +msgid "CF Drive" +msgstr "CF lasītājs" + +msgid "CVBS" +msgstr "CVBS" + +msgid "Cable" +msgstr "Kabeļu" + +# ??? +msgid "Cache Thumbnails" +msgstr "Kešatmiņas sīktēli" + +msgid "Call monitoring" +msgstr "Zvanu monitorings" + +msgid "Cancel" +msgstr "Atcelt" + +# ??? +msgid "Cannot parse feed directory" +msgstr "Nevar analizēt barotnes katalogu" + +msgid "Capacity: " +msgstr "Ietilpība: " + +msgid "Card" +msgstr "Karte" + +msgid "Catalan" +msgstr "Katāliešu" + +# ??? +msgid "Change bouquets in quickzap" +msgstr "Mainīt buķetes ātrās slēgšanas režīmā" + +msgid "Change dir." +msgstr "Mainīt dir." + +msgid "Change pin code" +msgstr "Mainīt PIN" + +msgid "Change service pin" +msgstr "Mainīt kanāla PIN" + +msgid "Change service pins" +msgstr "Mainīt kanālu PIN" + +msgid "Change setup pin" +msgstr "Mainīt iestatnes PIN" + +msgid "Channel" +msgstr "Kanāls" + +msgid "Channel Selection" +msgstr "Kanālu izvēle" + +msgid "Channel not in services list" +msgstr "Kanāls nav servisu sarakstā" + +msgid "Channel:" +msgstr "Kanāls:" + +msgid "Channellist menu" +msgstr "Kanālu saraksta izvēlne" + +msgid "Chap." +msgstr "Nod." + +msgid "Chapter" +msgstr "Nodaļa" + +msgid "Chapter:" +msgstr "Nodaļa:" + +msgid "Check" +msgstr "Pārbaude" + +msgid "Checking Filesystem..." +msgstr "Pārbauda datņu sistēmu..." + +msgid "Choose Tuner" +msgstr "Izvēlēties uztvērēju" + +msgid "Choose backup files" +msgstr "" + +msgid "Choose backup location" +msgstr "" + +msgid "Choose bouquet" +msgstr "Izvēlēties buķeti" + +msgid "Choose source" +msgstr "Izvēlēties avotu" + +msgid "Choose target folder" +msgstr "Izvēlēties mērķa mapi" + +msgid "Choose upgrade source" +msgstr "" + +msgid "Choose your Skin" +msgstr "Izvēlēties ādiņu" + +msgid "Circular left" +msgstr "Cirkulārā kreisā" + +msgid "Circular right" +msgstr "Cirkulārā labā" + +msgid "Cleanup" +msgstr "Tīrīšana" + +msgid "Clear before scan" +msgstr "Notīrīt pirms meklēšanas" + +msgid "Clear log" +msgstr "Notīrīt žurnālu" + +msgid "Close" +msgstr "Aizvērt" + +msgid "Code rate high" +msgstr "Augsts kodēšanas ātrums " + +msgid "Code rate low" +msgstr "Zems kodēšanas ātrums" + +msgid "Coderate HP" +msgstr "Kodēšanas ātrums HP" + +msgid "Coderate LP" +msgstr "Kodēšanas ātrums LP" + +msgid "Collection name" +msgstr "Kolekcijas nosaukums" + +msgid "Collection settings" +msgstr "Kolekcijas iestatījumi" + +msgid "Color Format" +msgstr "Krāsu formāts" + +msgid "Command execution..." +msgstr "Izpilda komandu..." + +msgid "Command order" +msgstr "Komandu secība" + +msgid "Committed DiSEqC command" +msgstr "Aktīvā DiSEqC komanda" + +msgid "Common Interface" +msgstr "Common Interface" + +msgid "Compact Flash" +msgstr "Compact Flash" + +msgid "Compact flash card" +msgstr "Compact flash karte" + +msgid "Complete" +msgstr "Gatavs" + +# ??? +msgid "Complex (allows mixing audio tracks and aspects)" +msgstr "Komplicēts (pieļauj skaņas celiņu un aspektu jaukšanu)" + +msgid "Configuration Mode" +msgstr "Konfigurēšanas režīms" + +msgid "Configuring" +msgstr "Konfigurē" + +msgid "Conflicting timer" +msgstr "Taimera konflikts" + +msgid "Connected to" +msgstr "Pieslēgts" + +msgid "Connected to Fritz!Box!" +msgstr "Pieslēgts Fritz!Box!" + +msgid "Connecting to Fritz!Box..." +msgstr "Pieslēdzas Fritz!Box..." + +#, python-format +msgid "" +"Connection to Fritz!Box\n" +"failed! (%s)\n" +"retrying..." +msgstr "" +"Pieslēgšanās Fritz!Box\n" +"neizdevās! (%s)\n" +"atkārto..." + +msgid "Constellation" +msgstr "Zvaigznājs" + +msgid "Content does not fit on DVD!" +msgstr "Saturs neietilpst DVD!" + +msgid "Continue in background" +msgstr "Turpināt fonā" + +msgid "Continue playing" +msgstr "Turpināt atskaņošanu" + +msgid "Contrast" +msgstr "Kontrasts" + +msgid "Could not connect to Dreambox .NFI Image Feed Server:" +msgstr "Nevar savienoties ar Dreambox .NFI imidža barotnes serveris:" + +msgid "Could not load Medium! No disc inserted?" +msgstr "Nevar ielādēt mediju! Disks nav ievietots?" + +#, python-format +msgid "Couldn't record due to conflicting timer %s" +msgstr "Nevar ierakstīt dēļ taimeru konflikta %s" + +msgid "Create DVD-ISO" +msgstr "Izveidot DVD-ISO" + +msgid "Create movie folder failed" +msgstr "Neizdevās izveidot filmas mapi" + +#, python-format +msgid "Creating directory %s failed." +msgstr "Veido mapi %s neizdevās." + +msgid "Creating partition failed" +msgstr "Neizdevās izveidot sadaļu" + +msgid "Croatian" +msgstr "Horvātu" + +msgid "Current Transponder" +msgstr "Pašreizējais transponderis" + +msgid "Current settings:" +msgstr "Pašreizējie iestatījumi:" + +msgid "Current version:" +msgstr "Pašreizējā versija:" + +msgid "Custom skip time for '1'/'3'-keys" +msgstr "Pielāgots pārlēciena laiks '1'/'3'-taustiņi" + +msgid "Custom skip time for '4'/'6'-keys" +msgstr "Pielāgots pārlēciena laiks '4'/'6'-taustiņi" + +msgid "Custom skip time for '7'/'9'-keys" +msgstr "Pielāgots pārlēciena laiks '7'/'9'-taustiņi" + +msgid "Customize" +msgstr "Lietotāja iestatījumi" + +msgid "Cut" +msgstr "Griezt" + +msgid "Cutlist editor..." +msgstr "Griešanas redaktors..." + +msgid "Czech" +msgstr "Čehu" + +msgid "D" +msgstr "D" + +msgid "DHCP" +msgstr "DHCP" + +msgid "DVB-S" +msgstr "DVB-S" + +msgid "DVB-S2" +msgstr "DVB-S2" + +msgid "DVD Player" +msgstr "DVD atskaņotājs" + +msgid "DVD media toolbox" +msgstr "DVD mediju aprīkojums" + +msgid "Danish" +msgstr "Dāņu" + +msgid "Date" +msgstr "Datums" + +msgid "Deep Standby" +msgstr "Dziļā gaidstāve" + +msgid "Default services lists" +msgstr "Noklus. kanālu saraksti" + +msgid "Default settings" +msgstr "Noklusējuma iestatījumi" + +msgid "Delay" +msgstr "Aizkave" + +msgid "Delete" +msgstr "Dzēst" + +msgid "Delete entry" +msgstr "Dzēst ierakstu " + +msgid "Delete failed!" +msgstr "Dzēšana neizdevās!" + +# ??? +#, python-format +msgid "" +"Delete no more configured satellite\n" +"%s?" +msgstr "" +"Dzēst nekonfigurētu pavadoni\n" +" %s?" + +msgid "Description" +msgstr "Apraksts" + +msgid "Deselect" +msgstr "" + +msgid "Destination directory" +msgstr "Galamērķa mape" + +msgid "Detected HDD:" +msgstr "Atrasts HDD:" + +msgid "Detected NIMs:" +msgstr "Atrasts NIMs:" + +msgid "DiSEqC" +msgstr "DiSEqC" + +msgid "DiSEqC A/B" +msgstr "DiSEqC A/B" + +msgid "DiSEqC A/B/C/D" +msgstr "DiSEqC A/B/C/D" + +msgid "DiSEqC mode" +msgstr "DiSEqC režīms" + +msgid "DiSEqC repeats" +msgstr "DiSEqC atkārtojums" + +# ??? +msgid "Direct playback of linked titles without menu" +msgstr "Saistīto nosaukumu tiešā atskaņošana bez izvēlnes" + +#, python-format +msgid "Directory %s nonexistent." +msgstr "Mape %s neeksistē." + +msgid "Disable" +msgstr "Izslēgt" + +msgid "Disable Picture in Picture" +msgstr "Izslēgt Picture in Picture" + +msgid "Disable Subtitles" +msgstr "Izslēgt subtitrus" + +msgid "Disable timer" +msgstr "Izslēgt taimeri" + +msgid "Disabled" +msgstr "Izslēgts" + +#, python-format +msgid "" +"Disconnected from\n" +"Fritz!Box! (%s)\n" +"retrying..." +msgstr "" +"Atvienots no\n" +"Fritz!Box! (%s)\n" +"atkārto..." + +msgid "Dish" +msgstr "Antena" + +msgid "Display 16:9 content as" +msgstr "Atēlot 16:9 saturu kā" + +msgid "Display 4:3 content as" +msgstr "Atēlot 4:3 saturu kā" + +msgid "Display >16:9 content as" +msgstr "Atēlot 16:9 saturu kā" + +# ? +msgid "Display Setup" +msgstr "Displeja iestatne" + +#, python-format +msgid "" +"Do you really want to REMOVE\n" +"the plugin \"%s\"?" +msgstr "" +"Vai tiešām vēlaties DZĒST\n" +"spraudni \"%s \"?" + +msgid "" +"Do you really want to check the filesystem?\n" +"This could take lots of time!" +msgstr "" +"Vai tiešām vēlaties pārbaudīt failsistēmu?\n" +"Tas var prasīt daudz laika!" + +#, python-format +msgid "Do you really want to delete %s?" +msgstr "Vai tiešām vēlaties dzēst %s?" + +#, python-format +msgid "" +"Do you really want to download\n" +"the plugin \"%s\"?" +msgstr "" +"Vai tiešām vēlaties lejuplādēt\n" +"spraudni \"%s \"?" + +msgid "" +"Do you really want to initialize the harddisk?\n" +"All data on the disk will be lost!" +msgstr "" +"Vai tiešām vēlaties inicializēt cieto disku?\n" +"Visi uz diska esošie dati tiks zaudēti!" + +#, python-format +msgid "Do you really want to remove directory %s from the disk?" +msgstr "Vai tiešām vēlaties dzēst mapi %s no diska?" + +# ??? +#, python-format +msgid "Do you really want to remove your bookmark of %s?" +msgstr "Vai tiešām vēlaties dzēst grāmatzīmi %s?" + +msgid "" +"Do you want to backup now?\n" +"After pressing OK, please wait!" +msgstr "" +"Vai vēlaties veidot dublējumkopiju?\n" +"Nospiediet OK un gaidiet!" + +msgid "Do you want to burn this collection to DVD medium?" +msgstr "Vai vēlaties ierakstīt šo kolekciju uz DVD nesēja?" + +msgid "Do you want to do a service scan?" +msgstr "Vai vēleties meklēt kanālus?" + +msgid "Do you want to do another manual service scan?" +msgstr "Vai vēleties manuāli meklēt citus kanālus?" + +msgid "Do you want to enable the parental control feature on your dreambox?" +msgstr "Vai vēlaties aktivizēt vecāku kontroles iespēju?" + +msgid "Do you want to install default sat lists?" +msgstr "Vai vēlaties uzstādīt noklusētos pavadoņu sarakstus?" + +msgid "Do you want to install the package:\n" +msgstr "" + +msgid "Do you want to play DVD in drive?" +msgstr "Vai vēlaties atskaņot DVD?" + +msgid "Do you want to preview this DVD before burning?" +msgstr "Vai vēleties skatīt šo DVD pirms rakstīšanas?" + +msgid "Do you want to reboot your Dreambox?" +msgstr "" + +msgid "Do you want to remove the package:\n" +msgstr "" + +msgid "Do you want to restore your settings?" +msgstr "Vai vēlaties atjaunot savus iestatījumus?" + +msgid "Do you want to resume this playback?" +msgstr "Vai vēlaties atsākt šo atskaņošanu?" + +msgid "Do you want to update your Dreambox?" +msgstr "" + +msgid "" +"Do you want to update your Dreambox?\n" +"After pressing OK, please wait!" +msgstr "" +"Vai vēlaties atjaunināt Dreambox?\n" +"Nospiediet OK un gaidiet!" + +msgid "Do you want to upgrade the package:\n" +msgstr "" + +msgid "Do you want to view a tutorial?" +msgstr "Vai vēlaties skatīt pamācibu?" + +msgid "Don't stop current event but disable coming events" +msgstr "Neapturēt pašreizējo notikumu bet izslēgt nākamos notikumus" + +#, python-format +msgid "Done - Installed or upgraded %d packages" +msgstr "Pabeigts - uzstādītas vai jauninātas %d pakotnes" + +#, python-format +msgid "Done - Installed or upgraded %d packages with %d errors" +msgstr "Pabeigts - uzstādītas vai jauninātas %d pakotnes ar %d kļūdām" + +#, python-format +msgid "Done - Installed, upgraded or removed %d packages with %d errors" +msgstr "" + +msgid "Download" +msgstr "Lejuplādēt" + +msgid "Download .NFI-Files for USB-Flasher" +msgstr "Lejuplādēt .NFI-datnes priekš USB-ielādes" + +msgid "Download Plugins" +msgstr "Lejuplādēt spraudņus" + +# ??? +msgid "Download of USB flasher boot image failed: " +msgstr "USB lādētāja palaišanas imidža ielāde neizdevās:" + +msgid "Downloadable new plugins" +msgstr "Lejuplādējamie jaunie spraudņi" + +msgid "Downloadable plugins" +msgstr "Lejuplādējamie spraudņi" + +msgid "Downloading" +msgstr "Lejuplādē" + +msgid "Downloading plugin information. Please wait..." +msgstr "Lejuplādē spraudņu informāciju. Lūdzu gaidiet..." + +msgid "Dreambox format data DVD (HDTV compatible)" +msgstr "Dreambox formāta datu DVD (savietojams ar HDTV)" + +msgid "Dutch" +msgstr "Holandiešu" + +msgid "E" +msgstr "E" + +msgid "EPG Selection" +msgstr "EPG izvēle" + +#, python-format +msgid "ERROR - failed to scan (%s)!" +msgstr "KĻŪDA - meklēšana neizdevās (%s)!" + +msgid "East" +msgstr "Austrumi" + +msgid "Edit" +msgstr "Rediģēt" + +msgid "Edit DNS" +msgstr "Rediģēt DNS" + +msgid "Edit Title" +msgstr "Rediģēt nosaukumu" + +# ??? +msgid "Edit chapters of current title" +msgstr "Rediģēt pašreizējā nosaukuma nodaļas" + +msgid "Edit services list" +msgstr "Rediģēt kanālu sarakstu" + +msgid "Edit settings" +msgstr "Rediģēt iestatījumus" + +msgid "Edit the Nameserver configuration of your Dreambox.\n" +msgstr "Rediģēt Dreambox domēna vārdu servera konfigurāciju.\n" + +msgid "Edit the network configuration of your Dreambox.\n" +msgstr "Rediģēt Dreambox tīkla konfigurāciju.\n" + +msgid "Edit title" +msgstr "Rediģēt nosaukumu" + +msgid "Electronic Program Guide" +msgstr "Elektroniskais programu gids" + +msgid "Enable" +msgstr "Aktivizēt" + +msgid "Enable 5V for active antenna" +msgstr "Aktivizēt 5V aktīvai antenai" + +msgid "Enable multiple bouquets" +msgstr "Aktivizēt vairāk-buķešu režīmu" + +msgid "Enable parental control" +msgstr "Aktivizēt vecāku kontroli" + +msgid "Enable timer" +msgstr "Aktivizēt taimeri" + +msgid "Enabled" +msgstr "Aktivizēts" + +msgid "Encryption" +msgstr "Šifrēšana" + +msgid "Encryption Key" +msgstr "Šifrēšanas atslēga" + +msgid "Encryption Keytype" +msgstr "Šifrēšanas atslēgas veids" + +msgid "Encryption Type" +msgstr "Šifrēšanas veids" + +msgid "End time" +msgstr "Beigu laiks" + +msgid "EndTime" +msgstr "Beigu laiks" + +msgid "English" +msgstr "Angļu" + +msgid "" +"Enigma2 Skinselector v0.5 BETA\n" +"\n" +"If you experience any problems please contact\n" +"stephan@reichholf.net\n" +"\n" +"© 2006 - Stephan Reichholf" +msgstr "" +"Enigma2 Skinselector v0.5 BETA\n" +"\n" +"Problēmu gadījumā kontaktēties\n" +"stephan@reichholf.net\n" +"\n" +"© 2006 - Stephan Reichholf" + +#. TRANSLATORS: Note that "Enter" in the two strings below should *not* +#. be interpreted as "Give speed as input". The intended meaning is +#. instead "Initial speed when starting winding", i.e. the speed at +#. which "winding mode" is entered when first pressing "rewind" or +#. "fast forward". +msgid "Enter Fast Forward at speed" +msgstr "Ievadiet ātrās pārtīšanas ātrumu" + +msgid "Enter Rewind at speed" +msgstr "Ievadiet attīšanas ātrumu" + +msgid "Enter WLAN network name/SSID:" +msgstr "Ievadiet bezvadu tīkla nosaukumu /SSID:" + +msgid "Enter WLAN passphrase/key:" +msgstr "Ievadiet bezvadu tīkla paroli/atslēgu:" + +msgid "Enter main menu..." +msgstr "Atvērt galveno izvēlni..." + +msgid "Enter the service pin" +msgstr "Ievadiet kanāla PIN" + +msgid "Error" +msgstr "Kļūda" + +msgid "Error executing plugin" +msgstr "Kļūda palaižot spraudni" + +#, python-format +msgid "" +"Error: %s\n" +"Retry?" +msgstr "" +"Kļūda: %s\n" +"Atkārtot??" + +msgid "Eventview" +msgstr "Notikumu skats" + +msgid "Everything is fine" +msgstr "Viss ir lieliski" + +msgid "Execution Progress:" +msgstr "Izpildes progress:" + +msgid "Execution finished!!" +msgstr "Izpilde pabeigta!!" + +msgid "Exif" +msgstr "Exif" + +msgid "Exit" +msgstr "Iziet" + +msgid "Exit editor" +msgstr "Iziet no redaktora" + +msgid "Exit the wizard" +msgstr "Iziet no vedņa" + +msgid "Exit wizard" +msgstr "Iziet no vedņa" + +msgid "Expert" +msgstr "Lietpratēja" + +msgid "Extended Networksetup Plugin..." +msgstr "Paplašinātās tīkla iestatnes spraudnis..." + +msgid "Extended Setup..." +msgstr "Paplašinātā iestatne..." + +msgid "Extensions" +msgstr "Paplašinājumi" + +msgid "FEC" +msgstr "FEC" + +msgid "Factory reset" +msgstr "Rūpnīcas uzstādījumi" + +msgid "Failed" +msgstr "Neizdevās" + +msgid "Fast" +msgstr "Ātrs" + +msgid "Fast DiSEqC" +msgstr "Ātrais DiSEqC" + +msgid "Fast Forward speeds" +msgstr "Ātrās pārtīšanas ātrumi" + +msgid "Fast epoch" +msgstr "Ātrā epoha" + +msgid "Favourites" +msgstr "Favorīti" + +msgid "Filesystem Check..." +msgstr "Failsistēmas pārbaude..." + +msgid "Filesystem contains uncorrectable errors" +msgstr "Failsistēma satur neizlabojamas kļūdas" + +msgid "Finetune" +msgstr "Precīzā regulēšana" + +msgid "Finished" +msgstr "Pabeigts" + +msgid "Finished configuring your network" +msgstr "Tīkla konfigurēšana pabeigta" + +msgid "Finished restarting your network" +msgstr "Tīkla restartēšana pabeigta" + +msgid "Finnish" +msgstr "Somu" + +msgid "" +"First we need to download the latest boot environment for the USB flasher." +msgstr "" +"No sākuma nepieciešams lejuplādēt pēdējo palaišanas vidi priekš USB ielādes." + +msgid "Flash" +msgstr "Iekšējā atmiņa" + +msgid "Flashing failed" +msgstr "Lādēšana neizdevās" + +msgid "Format" +msgstr "Formatēt" + +msgid "Frame repeat count during non-smooth winding" +msgstr "Atkārtoto kadru skaits 'attēlu virknes' režīmā" + +# ??? +msgid "Frame size in full view" +msgstr "Kadra izmērs pilnskatā" + +msgid "French" +msgstr "Franču" + +msgid "Frequency" +msgstr "Frekvence" + +msgid "Frequency bands" +msgstr "Frekvenču joslas" + +msgid "Frequency scan step size(khz)" +msgstr "Frekvenču skenēšanas solis (khz)" + +msgid "Frequency steps" +msgstr "Frekvenču soļi" + +msgid "Fri" +msgstr "Pk" + +msgid "Friday" +msgstr "Piektdiena" + +msgid "Frisian" +msgstr "Frīzu" + +msgid "Fritz!Box FON IP address" +msgstr "Fritz!Box FON IP adrese" + +#, python-format +msgid "Frontprocessor version: %d" +msgstr "Frontprocesora versija: %d" + +msgid "Fsck failed" +msgstr "Fsck neizdevās" + +msgid "Function not yet implemented" +msgstr "Funkcija vēl nav realizēta" + +msgid "" +"GUI needs a restart to apply a new skin\n" +"Do you want to Restart the GUI now?" +msgstr "" +"GUI nepieciešams restartēt lai lietotu jauno ādiņu\n" +"Vai vēlaties pārstartēt GUI tagad?" + +msgid "Gateway" +msgstr "Vārteja" + +msgid "Genre" +msgstr "Žanrs" + +msgid "German" +msgstr "Vācu" + +msgid "Getting plugin information. Please wait..." +msgstr "Iegūst spraudņa informāciju. Lūdzu gaidiet..." + +msgid "Goto 0" +msgstr "Iet uz 0" + +msgid "Goto position" +msgstr "Iet uz pozīciju" + +msgid "Graphical Multi EPG" +msgstr "Grafiskais daudzkanālu EPG" + +msgid "Greek" +msgstr "Grieķu" + +msgid "Guard Interval" +msgstr "Sardzes intervāls" + +msgid "Guard interval mode" +msgstr "Sardzes intervāla režīms" + +msgid "Harddisk" +msgstr "Cietais disks" + +msgid "Harddisk setup" +msgstr "Cietā diska iestatne" + +msgid "Harddisk standby after" +msgstr "Cietā diska gaidstāve pēc" + +msgid "Hidden network SSID" +msgstr "Slēpts tīkla SSID" + +msgid "Hierarchy Information" +msgstr "Hierarhijas informācija" + +msgid "Hierarchy mode" +msgstr "Hierarhijas režīms" + +msgid "Horizontal" +msgstr "Horizontālā" + +msgid "How many minutes do you want to record?" +msgstr "Cik minūšu vēlaties ierakstīt?" + +msgid "Hungarian" +msgstr "Ungāru" + +msgid "IP Address" +msgstr "IP adrese" + +msgid "ISO file is too large for this filesystem!" +msgstr "ISO datne ir par lielu šai failsistēmai!" + +msgid "ISO path" +msgstr "ISO ceļš" + +msgid "Icelandic" +msgstr "Islandiešu" + +msgid "If you can see this page, please press OK." +msgstr "Ja redzat šo lappusi, spiediet OK." + +msgid "" +"If you see this, something is wrong with\n" +"your scart connection. Press OK to return." +msgstr "" +"Ja jūs šo redzat, kaut kas nav kārtībā ar\n" +"SCART savienojumu. Spiediet OK lai atgrieztos." + +msgid "" +"If your TV has a brightness or contrast enhancement, disable it. If there is " +"something called \"dynamic\", set it to standard. Adjust the backlight level " +"to a value suiting your taste. Turn down contrast on your TV as much as " +"possible.\n" +"Then turn the brightness setting as low as possible, but make sure that the " +"two lowermost shades of gray stay distinguishable.\n" +"Do not care about the bright shades now. They will be set up in the next " +"step.\n" +"If you are happy with the result, press OK." +msgstr "" +"Ja Jūsu TV ir ieslēgta spilgtuma vai kontrasta uzlabošana, deaktivizējiet " +"to. Ja ir iestatījums ar nosaukumu \"dinamiskā \", lietojiet standarta " +"iestatījumu. Noregulējiet fona līmeni līdz jums patīkamai vērtībai. " +"Noregulējiet iespējami zemu TV kontrastu.\n" +"Tad noregulējiet iespējami zemu spilgtuma iestatījumu, bet pārliecinieties, " +"ka divi apakšējie pelēkā toņi ir izšķirami.\n" +"Pašreiz nepievērsiet uzmanību spilgtajiem toņiem. Tie tiks uzstādīti " +"nākamajā solī.\n" +"Ja esat apmierināts ar rezultātu, spiediet OK." + +msgid "Image flash utility" +msgstr "Imidža ielādes utilītprogramma" + +msgid "Image-Upgrade" +msgstr "Imidža atjaunošana" + +msgid "In Progress" +msgstr "Izpilda" + +msgid "" +"In order to record a timer, the TV was switched to the recording service!\n" +msgstr "" +"Lai uzsāktu ierakstu pēc taimera, TV tika pāreslēgts uz ierakstāmo kanālu!\n" + +msgid "Increased voltage" +msgstr "Palielināt spriegumu" + +msgid "Index" +msgstr "Indekss" + +msgid "InfoBar" +msgstr "Infojosla" + +msgid "Infobar timeout" +msgstr "Infojoslas noildze" + +msgid "Information" +msgstr "Informācija" + +msgid "Init" +msgstr "Inic" + +msgid "Initialization..." +msgstr "Inicializācija..." + +msgid "Initialize" +msgstr "Inicializēt" + +msgid "Initializing Harddisk..." +msgstr "Inicializē cieto disku..." + +msgid "Input" +msgstr "Ievade" + +msgid "Install a new image with a USB stick" +msgstr "" + +msgid "Install a new image with your web browser" +msgstr "" + +msgid "Install local IPKG" +msgstr "" + +msgid "Installing" +msgstr "Uzstādīšana" + +msgid "Installing Software..." +msgstr "Uzstāda programmatūru..." + +msgid "Installing default sat lists... Please wait..." +msgstr "Uzstāda noklusētos pavadoņu sarakstus... Lūdzu gaidiet..." + +msgid "Installing defaults... Please wait..." +msgstr "Uzstāda noklusējumus... Lūdzu gaidiet..." + +msgid "Installing package content... Please wait..." +msgstr "Uzstāda pakotnes saturu... Lūdzu gaidiet..." + +msgid "Instant Record..." +msgstr "Tūlītējs ieraksts..." + +msgid "Integrated Ethernet" +msgstr "Iebūvētais Ethernet" + +msgid "Integrated Wireless" +msgstr "Iebūvētais Wireless" + +msgid "Intermediate" +msgstr "Vidējs" + +msgid "Internal Flash" +msgstr "Iekšējā atmiņa" + +msgid "Invalid Location" +msgstr "Nederīga vieta" + +#, python-format +msgid "Invalid directory selected: %s" +msgstr "Izvēlēts nepareizs katalogs: %s" + +msgid "Inversion" +msgstr "Inversija" + +msgid "Invert display" +msgstr "Inverss displejs" + +msgid "Ipkg" +msgstr "" + +msgid "Italian" +msgstr "Itāļu" + +msgid "Job View" +msgstr "Darbu skats" + +#. TRANSLATORS: (aspect ratio policy: display as fullscreen, even if this breaks the aspect) +msgid "Just Scale" +msgstr "Vienkārši mērogot" + +msgid "Keyboard Map" +msgstr "Klaviatūras izkārtojums" + +msgid "Keyboard Setup" +msgstr "Klaviatūras iestatne" + +msgid "Keymap" +msgstr "Taustiņu izkārtojums" + +msgid "LAN Adapter" +msgstr "Tīkla adapteris" + +msgid "LNB" +msgstr "LNB konvertors" + +msgid "LOF" +msgstr "LOF" + +msgid "LOF/H" +msgstr "LOF/H" + +msgid "LOF/L" +msgstr "LOF/L" + +msgid "Language selection" +msgstr "Valodas izvēle" + +msgid "Language..." +msgstr "Valoda..." + +msgid "Last speed" +msgstr "Pēdējais ātrums" + +msgid "Latitude" +msgstr "Platums" + +msgid "Latvian" +msgstr "" + +msgid "Leave DVD Player?" +msgstr "Iziet no DVD atskaņotāja?" + +msgid "Left" +msgstr "Kreisais" + +#. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term. +msgid "Letterbox" +msgstr "Letterbox" + +msgid "Limit east" +msgstr "Austrumu limits" + +msgid "Limit west" +msgstr "Rietumu limits" + +msgid "Limits off" +msgstr "Limiti izslēgti" + +msgid "Limits on" +msgstr "Limiti ieslēgti" + +msgid "Link:" +msgstr "Saite:" + +msgid "Linked titles with a DVD menu" +msgstr "Saistītie nosaukumi ar DVD izvēlni" + +msgid "List of Storage Devices" +msgstr "Atmiņas ierīču saraksts" + +msgid "Lithuanian" +msgstr "Lietuviešu" + +msgid "Load" +msgstr "Ielādēt" + +msgid "Load Length of Movies in Movielist" +msgstr "Ielādēt filmu sarakstā filmu garumus" + +msgid "Local Network" +msgstr "Lokālais tīkls" + +msgid "Location" +msgstr "Atrašanās vieta" + +msgid "Lock:" +msgstr "Slēgt:" + +msgid "Log results to harddisk" +msgstr "Žurnalēt rezultātus uz cietā diska" + +msgid "Long Keypress" +msgstr "Ilgstošs taustiņa nospiediens" + +msgid "Longitude" +msgstr "Garums" + +msgid "MMC Card" +msgstr "MMC karte" + +msgid "MORE" +msgstr "VAIRĀK" + +msgid "Main menu" +msgstr "Galvenā izvēlne" + +msgid "Mainmenu" +msgstr "Galvenā izvēlne" + +msgid "Make this mark an 'in' point" +msgstr "Padarīt šo zīmi par 'iekšā' punktu" + +msgid "Make this mark an 'out' point" +msgstr "Padarīt šo zīmi par 'ārā' punktu" + +msgid "Make this mark just a mark" +msgstr "Padarīt šo iezīmi vienkārši par zīmi" + +msgid "Manage your receiver's software" +msgstr "" + +msgid "Manual Scan" +msgstr "Manuālā meklēšana" + +msgid "Manual transponder" +msgstr "Manuāls transponderis" + +msgid "Manufacturer" +msgstr "Ražotājs" + +msgid "Margin after record" +msgstr "Atstarpe aiz ieraksta" + +msgid "Margin before record (minutes)" +msgstr "Atstarpe pirms ieraksta (minūtēs)" + +msgid "Media player" +msgstr "Mediju atskaņotājs" + +msgid "MediaPlayer" +msgstr "Mediju atskaņotājs" + +msgid "Medium is not a writeable DVD!" +msgstr "Datu nesējs nav ierakstāms DVD!" + +msgid "Medium is not empty!" +msgstr "Datu nesējs nav tukšs!" + +msgid "Menu" +msgstr "Izvēlne" + +msgid "Message" +msgstr "Paziņojums" + +msgid "Message..." +msgstr "Paziņojums..." + +msgid "Mkfs failed" +msgstr "Mkfs neizdevās" + +msgid "Mode" +msgstr "Režīms" + +msgid "Model: " +msgstr "Modelis:" + +msgid "Modulation" +msgstr "Modulācija" + +msgid "Modulator" +msgstr "Modulators" + +msgid "Mon" +msgstr "Pr" + +msgid "Mon-Fri" +msgstr "Pr-Pk" + +msgid "Monday" +msgstr "Pirmdiena" + +msgid "Mount failed" +msgstr "Montēšana neizdevās" + +msgid "Move Picture in Picture" +msgstr "Pārvietot attēlu attēlā" + +msgid "Move east" +msgstr "Griezt uz austrumiem" + +msgid "Move west" +msgstr "Griezt uz rietumiem" + +msgid "Movielist menu" +msgstr "Filmu saraksta izvēlne" + +msgid "Multi EPG" +msgstr "Daudzkanālu EPG" + +msgid "Multiple service support" +msgstr "Daudzkanālu atbalsts" + +msgid "Multisat" +msgstr "Daudzpavadņu" + +msgid "Mute" +msgstr "Klusēt" + +msgid "N/A" +msgstr "N/A" + +msgid "NEXT" +msgstr "NĀKAMAIS" + +msgid "NFI image flashing completed. Press Yellow to Reboot!" +msgstr "NFI imidža lādēšana pabeigta. Spiediet dzelteno pogu lai atsāknētu!" + +msgid "NOW" +msgstr "PAŠREIZ" + +msgid "NTSC" +msgstr "NTSC" + +msgid "Name" +msgstr "Nosaukums" + +msgid "Nameserver" +msgstr "Domēna vārdu serveris" + +#, python-format +msgid "Nameserver %d" +msgstr "Domēna vārdu serveris %d" + +msgid "Nameserver Setup" +msgstr "Domēna vārdu servera iestatne" + +msgid "Nameserver settings" +msgstr "Domēna vārdu servera iestatījumi" + +msgid "Netmask" +msgstr "Tīkla maska" + +msgid "Network Configuration..." +msgstr "Tīkla konfigurācija..." + +msgid "Network Mount" +msgstr "Tīkla montēšana" + +msgid "Network SSID" +msgstr "Tīkla SSID" + +msgid "Network Setup" +msgstr "Tīkla iestatne" + +msgid "Network scan" +msgstr "Tīkla meklēšana" + +msgid "Network setup" +msgstr "Tīkla iestatne" + +msgid "Network test" +msgstr "Tīkla pārbaude" + +msgid "Network test..." +msgstr "Tīkla pārbaude..." + +msgid "Network..." +msgstr "Tīkls..." + +msgid "Network:" +msgstr "Tīkls:" + +msgid "NetworkWizard" +msgstr "Tīkla vednis" + +msgid "New" +msgstr "Jauns" + +msgid "New pin" +msgstr "Jauns pin kods" + +msgid "New version:" +msgstr "Jauna versija:" + +msgid "Next" +msgstr "Nākamais" + +msgid "No" +msgstr "Nē" + +msgid "No (supported) DVDROM found!" +msgstr "DVDROM ieriice netika atrasta (atbalstīta)!" + +msgid "No 50 Hz, sorry. :(" +msgstr "Nav 50 Hz, atvainojiet. :(" + +msgid "No HDD found or HDD not initialized!" +msgstr "Nav atrasts vai nav inicializēts cietais disks!" + +msgid "No Networks found" +msgstr "Nav atrasts neviens tīkls" + +msgid "No backup needed" +msgstr "Dublējumkopija nav neieciešama" + +msgid "" +"No data on transponder!\n" +"(Timeout reading PAT)" +msgstr "" +"Nav datu uz transpondera!\n" +"(PAT lasīšanas noildze)" + +msgid "No details for this image file" +msgstr "Nav informācijas par šo imidža datni" + +msgid "No event info found, recording indefinitely." +msgstr "Nav atrasta informācija par notikumiem, ieraksts turpinās." + +msgid "No free tuner!" +msgstr "Nav brīva uztvērēja!" + +msgid "" +"No packages were upgraded yet. So you can check your network and try again." +msgstr "Pakotnes netika atjaunotas. Pārbaudiet tīklu un mēģiniet vēlreiz." + +msgid "No picture on TV? Press EXIT and retry." +msgstr "Nav attēla uz TV? Spiediet EXIT mēģiniet vēlreiz." + +msgid "No positioner capable frontend found." +msgstr "Nav atrasts pozicionieris." + +msgid "No satellite frontend found!!" +msgstr "Nav atrasts pavadonis!!" + +msgid "No tags are set on these movies." +msgstr "Šīm filmām nav uzstādīti tagi" + +msgid "No tuner is configured for use with a diseqc positioner!" +msgstr "Uztvērējs nav konfigurēts lietošanai ar diseqc pozicionieri!" + +msgid "" +"No tuner is enabled!\n" +"Please setup your tuner settings before you start a service scan." +msgstr "" +"Nav aktīva uztvērēja!\n" +"Lūdzu iestatiet uztvērēju pirms sākat meklēt kanālus." + +msgid "No useable USB stick found" +msgstr "Nav atrasta lietojama USB atmiņa" + +msgid "" +"No valid service PIN found!\n" +"Do you like to change the service PIN now?\n" +"When you say 'No' here the service protection stay disabled!" +msgstr "" +"Derīgs kanāla PIN netika atrasts!\n" +"Vai vēleties mainīt kanāla PIN tagad?\n" +"Ja teiksiet 'NĒ', kanāla aizsardzība paliks neaktīva!" + +msgid "" +"No valid setup PIN found!\n" +"Do you like to change the setup PIN now?\n" +"When you say 'No' here the setup protection stay disabled!" +msgstr "" +"Derīgs iestatnes PIN netika atrasts!\n" +"Vai vēleties mainīt iestatnes PIN tagad?\n" +"Ja teiksiet 'NĒ', iestatnes aizsardzība paliks neaktīva!" + +msgid "" +"No working local network adapter found.\n" +"Please verify that you have attached a network cable and your network is " +"configured correctly." +msgstr "" +"Netika atrasts strādājošs lokālā tīkla adapteris.\n" +"Lūdzu pārliecinieties, ka ir pievienots tīkla kabelis un tīkls ir pareizi " +"konfigurēts." + +msgid "" +"No working wireless network adapter found.\n" +"Please verify that you have attached a compatible WLAN device and your " +"network is configured correctly." +msgstr "" +"Netika atrasts strādājošs bezvadu tīkla adapteris.\n" +"Lūdzu pārliecinieties, ka ir pievienota saderīga bezvadu tīkla ierīce un " +"tīkls ir pareizi konfigurēts." + +msgid "" +"No working wireless network interface found.\n" +" Please verify that you have attached a compatible WLAN device or enable " +"your local network interface." +msgstr "" +"Netika atrasts strādājošs bezvadu tīkla interfeiss.\n" +" Lūdzu pārliecinieties, ka ir pievienota saderīga bezvadu tīkla ierīce vai " +"aktivizējiet lokālā tīkla interfeisu." + +msgid "No, but restart from begin" +msgstr "Nē, bet restartēt no sākuma" + +msgid "No, do nothing." +msgstr "Nē, nedarīt neko" + +msgid "No, just start my dreambox" +msgstr "Nē, vienkārši startēt dreambox" + +msgid "No, scan later manually" +msgstr "Nē, vēlāk meklēt manuāli" + +msgid "None" +msgstr "nē" + +#. TRANSLATORS: (aspect ratio policy: display as fullscreen, with stretching the left/right) +msgid "Nonlinear" +msgstr "Nelineāri mērogot" + +msgid "North" +msgstr "Ziemeļi" + +msgid "Norwegian" +msgstr "Norvēģu" + +#, python-format +msgid "" +"Not enough diskspace. Please free up some diskspace and try again. (%d MB " +"required, %d MB available)" +msgstr "" +"Nav pietiekami vietas uz diska. Lūdzu atbrīvot vietu uz diska un mēģināt " +"vēlreiz. (%d MB nepieciešami, %d MB pieejami)" + +msgid "" +"Nothing to scan!\n" +"Please setup your tuner settings before you start a service scan." +msgstr "" +"Nav ko meklēt!\n" +"Lūdzu iestatiet uztvērēju pirms sākat meklēt kanālus." + +msgid "Now Playing" +msgstr "Atskaņo" + +msgid "" +"Now, use the contrast setting to turn up the brightness of the background as " +"much as possible, but make sure that you can still see the difference " +"between the two brightest levels of shades.If you have done that, press OK." +msgstr "" +"Tagad lietojiet kontrasta iestatīšanu lai palielinātu fona spilgtumu cik " +"vien iespējams, bet pārliecinieties, ka divi spilgtāko toņu līmeņi joprojām " +"ir izšķirami. Ja esat to izdarījuši, spiediet OK." + +msgid "OK" +msgstr "Labi" + +msgid "OK, guide me through the upgrade process" +msgstr "Jā, virzīt mani jaunināšanas procesā" + +msgid "OSD Settings" +msgstr "OSD iestatījumi" + +msgid "OSD visibility" +msgstr "OSD redzamība" + +msgid "Off" +msgstr "Izslēgt" + +msgid "On" +msgstr "Ieslēgt" + +msgid "One" +msgstr "Viens" + +msgid "Online-Upgrade" +msgstr "Tiešsaistes atjaunināšana" + +msgid "Only Free scan" +msgstr "Tikai nekodētos" + +msgid "Orbital Position" +msgstr "Pozīcija orbītā" + +msgid "PAL" +msgstr "PAL" + +msgid "PIDs" +msgstr "PIDs" + +msgid "Package list update" +msgstr "Pakotņu saraksta atjaunināšana" + +msgid "Packet management" +msgstr "Pakešu pārvaldība" + +msgid "Packet manager" +msgstr "" + +msgid "Page" +msgstr "Lappuse" + +#. TRANSLATORS: (aspect ratio policy: cropped content on left/right) in doubt, keep english term +msgid "Pan&Scan" +msgstr "Pan&Scan" + +msgid "Parent Directory" +msgstr "Vecākdirektorija" + +msgid "Parental control" +msgstr "Vecāku kontrole" + +msgid "Parental control services Editor" +msgstr "Vecāku kontroles kanālu redaktors" + +msgid "Parental control setup" +msgstr "Vecāku kontroles iestatne" + +msgid "Parental control type" +msgstr "Vecāku kontroles veids" + +msgid "Pause movie at end" +msgstr "Apturēt filmu beigās" + +msgid "PiPSetup" +msgstr "PiP iestatne" + +msgid "PicturePlayer" +msgstr "Attēlu rādītājs" + +#. TRANSLATORS: (aspect ratio policy: black bars on left/right) in doubt, keep english term. +msgid "Pillarbox" +msgstr "Pillarbox" + +msgid "Pilot" +msgstr "Pilot" + +msgid "Pin code needed" +msgstr "Vajadzīgs pin kods" + +msgid "Play" +msgstr "Atskaņot" + +msgid "Play Audio-CD..." +msgstr "Atskaņot mūzikas CD..." + +msgid "Play recorded movies..." +msgstr "Atskaņot ierakstītās filmas..." + +msgid "Please Reboot" +msgstr "Lūdzu atsāknēt" + +msgid "Please Select Medium to be Scanned" +msgstr "Lūdzu izvēlēties datu nesēju skenēšanai" + +msgid "Please change recording endtime" +msgstr "Lūdzu nomainiet ieraksta beigu laiku" + +msgid "Please check your network settings!" +msgstr "Lūdzu pārbaudiet tīkla iestatījumus!" + +msgid "Please choose .NFI image file from feed server to download" +msgstr "Lūdzu izvēlēties .NFI imidža datni lejuplādei no barotnes servera" + +msgid "Please choose an extension..." +msgstr "Lūdzu izvēlieties darbību..." + +msgid "Please choose he package..." +msgstr "Lūdzu izvēlieties pakotni..." + +msgid "Please choose the default services lists you want to install." +msgstr "" +"Lūdzu izvēlieties noklusētos kanālu sarakstus, kurus vēlaties uzstādīt." + +msgid "" +"Please disconnect all USB devices from your Dreambox and (re-)attach the " +"target USB stick (minimum size is 64 MB) now!" +msgstr "" +"Tagad lūdzu atvienojiet visas USB ierīces no Dreambox un pievienojiet " +"atpakaļ USB atmiņu (minimālais izmērs 64 MB)!" + +msgid "Please do not change any values unless you know what you are doing!" +msgstr "" +"Lūdzu nemainiet jebkādas vērtības, izņemot ja skaidri apzināties ko darāt! " + +msgid "Please enter a name for the new bouquet" +msgstr "Lūdzu ievadiet jaunās buķetes nosaukumu" + +msgid "Please enter a name for the new marker" +msgstr "Lūdzu ievadiet jaunā marķiera nosaukumu" + +msgid "Please enter a new filename" +msgstr "Lūdzu ievadiet jauno datnes nosaukumu" + +msgid "Please enter filename (empty = use current date)" +msgstr "Lūdzu ievadiet datnes nosaukumu (tukšs = lietot pašreizējo datumu)" + +msgid "Please enter name of the new directory" +msgstr "Lūdzu ievadiet jaunās mapes nosaukumu" + +msgid "Please enter the correct pin code" +msgstr "Lūdzu ievadiet pareizu PIN kodu" + +msgid "Please enter the old pin code" +msgstr "Lūdzu ievadiet veco PIN kodu" + +msgid "Please follow the instructions on the TV" +msgstr "Lūdzu sekojiet instrukcijām TV ekrānā" + +msgid "" +"Please note that the previously selected media could not be accessed and " +"therefore the default directory is being used instead." +msgstr "" +"Lūdzu ievērojiet, ka iepriekš izvēlētais datu nesējs nebija pieejams tādēļ " +"tā vietā tika lietota noklusētā mape." + +msgid "Please press OK to continue." +msgstr "Lūdzu spiediet OK lai turpinātu." + +msgid "Please press OK!" +msgstr "Lūdzu spiediet OK!" + +msgid "Please select .NFI flash image file from medium" +msgstr "Lūdzu izvēlieties lādējamo .NFI imidža datni no datu nesēja" + +msgid "Please select a playlist to delete..." +msgstr "Lūdzu izvēlieties repertuāru dzēšanai..." + +msgid "Please select a playlist..." +msgstr "Lūdzu izvēlieties repertuāru..." + +msgid "Please select a subservice to record..." +msgstr "Lūdzu izvēlieties papildkanālu ierakstam..." + +msgid "Please select a subservice..." +msgstr "Lūdzu izvēlieties papildkanālu..." + +msgid "Please select medium to use as backup location" +msgstr "" + +msgid "Please select tag to filter..." +msgstr "Lūdzu izvēlieties etiķeti filtrēšanai..." + +msgid "Please select target directory or medium" +msgstr "Lūdzu izvēlieties mērķa mapi vai datu nesēju" + +msgid "Please select the movie path..." +msgstr "Lūdzu izvēlieties ceļu filmām..." + +msgid "Please set up tuner B" +msgstr "Lūdzu iestatiet B uztvērēju" + +msgid "Please set up tuner C" +msgstr "Lūdzu iestatiet C uztvērēju" + +msgid "Please set up tuner D" +msgstr "Lūdzu iestatiet D uztvērēju" + +msgid "" +"Please use direction keys to move the PiP window.\n" +"Press Bouquet +/- to resize the window.\n" +"Press OK to go back to the TV mode or EXIT to cancel the moving." +msgstr "" +"Lūdzu lietojiet virzienu taustiņus lai pārvietotu PiP logu.\n" +"Spiediet Bouquet +/- lai mainītu loga izmēru.\n" +"Spiediet OK lai atgrieztos TV režīmā vai EXIT lai atceltu pārvietošanu." + +msgid "" +"Please use the UP and DOWN keys to select your language. Afterwards press " +"the OK button." +msgstr "" +"Lūdzu lietojiet UP un DOWN taustiņus lai izvēlētos valodu. Pēc tam spiediet " +"OK." + +msgid "Please wait for activation of your network configuration..." +msgstr "Lūdzu gaidiet kamēr tīkla konfigurācija tiek aktivizēta..." + +msgid "Please wait while scanning is in progress..." +msgstr "Lūdzu gaidiet kamēr notiek meklēšana..." + +msgid "Please wait while we configure your network..." +msgstr "Lūdzu gaidiet kamēr tīkls tiek konfigurēts..." + +msgid "Please wait while your network is restarting..." +msgstr "Lūdzu gaidiet kamēr tīkls tiek restartēts..." + +msgid "Please wait..." +msgstr "Lūdzu gaidieti..." + +msgid "Please wait... Loading list..." +msgstr "Lūdzu gaidiet... Ielādē sarakstu..." + +msgid "Plugin browser" +msgstr "Spraudņu pārlūks" + +msgid "Plugins" +msgstr "Spraudņi" + +msgid "Polarity" +msgstr "Polaritāte" + +msgid "Polarization" +msgstr "Polarizācija" + +msgid "Polish" +msgstr "Poļu" + +msgid "Port A" +msgstr "Pieslēgvieta A" + +msgid "Port B" +msgstr "Pieslēgvieta B" + +msgid "Port C" +msgstr "Pieslēgvieta C" + +msgid "Port D" +msgstr "Pieslēgvieta D" + +msgid "Portuguese" +msgstr "Portugāļu" + +msgid "Positioner" +msgstr "Pozicionieris" + +# ??? +msgid "Positioner fine movement" +msgstr "Precīza pozicioniera kustība" + +msgid "Positioner movement" +msgstr "Pozicioniera kustība" + +msgid "Positioner setup" +msgstr "Pozicioniera iestatne" + +# ??? +msgid "Positioner storage" +msgstr "Pozicioniera atmiņa" + +msgid "Power threshold in mA" +msgstr "Barošanas robežvērtība mA" + +msgid "Predefined transponder" +msgstr "Definēts transponderis" + +msgid "Preparing... Please wait" +msgstr "Sagatavo... Lūdzu gaidiet" + +msgid "Press OK on your remote control to continue." +msgstr "Spiediet OK uz tālvadības pults lai turpinātu." + +msgid "Press OK to activate the settings." +msgstr "Spiediet OK lai aktivizētu iestatījumus." + +msgid "Press OK to edit the settings." +msgstr "Spiediet OK lai rediģētu iestatījumus." + +#, python-format +msgid "Press OK to get further details for %s" +msgstr "Spiediet OK turpmākai informācijai priekš %s" + +msgid "Press OK to scan" +msgstr "Spiediet OK lai meklētu." + +msgid "Press OK to start the scan" +msgstr "Spiediet OK lai uzsāktu meklēšanu." + +msgid "Prev" +msgstr "Iepriekšējais" + +msgid "Preview menu" +msgstr "Priekšskatījuma izvēlne" + +msgid "Primary DNS" +msgstr "Primārā DNS" + +msgid "Priority" +msgstr "Prioritāte" + +# ??? +msgid "Properties of current title" +msgstr "Aktīvā nosaukuma parametri" + +msgid "Protect services" +msgstr "Aizsargāt kanālus" + +msgid "Protect setup" +msgstr "Aizsargāt iestatni" + +msgid "Provider" +msgstr "Operatori" + +msgid "Provider to scan" +msgstr "Operators, kuru vēlaties meklēt" + +msgid "Providers" +msgstr "Operatori" + +msgid "Quick" +msgstr "Ātrais" + +msgid "Quickzap" +msgstr "Ātrā pārslēgšana" + +msgid "RC Menu" +msgstr "Tālvadības pults izvēlne" + +msgid "RF output" +msgstr "RF izeja" + +msgid "RGB" +msgstr "RGB" + +msgid "RSS Feed URI" +msgstr "RSS barotnes URI" + +msgid "Radio" +msgstr "Radio" + +msgid "Ram Disk" +msgstr "Ram Disks" + +msgid "Random" +msgstr "Nejauša" + +msgid "Really close without saving settings?" +msgstr "Vai tiešām aizvērt, nesaglabājot iestatījumus?" + +msgid "Really delete done timers?" +msgstr "Vai tiešām dzēst izpildītos taimerus?" + +msgid "Really exit the subservices quickzap?" +msgstr "Vai tiešām iziet no papildkanālu ātrās pārslēgšanas režīma?" + +msgid "Really reboot now?" +msgstr "Vai tiešām atsāknēt tagad?" + +msgid "Really restart now?" +msgstr "Vai tiešām restartēt tagad?" + +msgid "Really shutdown now?" +msgstr "Vai tiešām izslēgt tagad?" + +msgid "Reboot" +msgstr "Atsāknēt" + +msgid "Reception Settings" +msgstr "Uztveršanas iestatījumi" + +msgid "Record" +msgstr "Ierakstīt" + +#, python-format +msgid "Record time limited due to conflicting timer %s" +msgstr "Ierobežots ieraksta laiks dēļ taimeru konflikta %s" + +msgid "Recorded files..." +msgstr "Ierakstītās datnes..." + +msgid "Recording" +msgstr "Ieraksta" + +msgid "Recording(s) are in progress or coming up in few seconds!" +msgstr "Ieraksts(i) notiek pašreiz vai sāksies dažu sekunžu laikā!" + +msgid "Recordings always have priority" +msgstr "Ierakstiem vienmēr ir prioritāte" + +msgid "Reenter new pin" +msgstr "Ievadiet vēlreiz jauno pin" + +msgid "Refresh Rate" +msgstr "Atjaunināšanas ātrums" + +msgid "Refresh rate selection." +msgstr "Atjaunināšanas ātruma izvēle." + +msgid "Reload" +msgstr "" + +msgid "Remove Bookmark" +msgstr "Dzēst grāmatzīmi" + +msgid "Remove Plugins" +msgstr "Dzēst spraudņus" + +msgid "Remove a mark" +msgstr "Dzēst iezīmi" + +msgid "Remove currently selected title" +msgstr "Dzēst pašreiz atlasīto virsrakstu" + +msgid "Remove finished." +msgstr "" + +msgid "Remove plugins" +msgstr "Dzēst spraudņus" + +msgid "Remove the broken .NFI file?" +msgstr "Dzēst bojāto .NFI datni?" + +msgid "Remove the incomplete .NFI file?" +msgstr "Dzēst nepilnīgo .NFI datni?" + +msgid "Remove timer" +msgstr "Dzēst taimeri" + +msgid "Remove title" +msgstr "Dzēst virsrakstu" + +msgid "Removing" +msgstr "" + +#, python-format +msgid "Removing directory %s failed. (Maybe not empty.)" +msgstr "Mapes %s aizvākšana neizdevās. (Varbūt nav tukša.)" + +msgid "Rename" +msgstr "Pārsaukt" + +msgid "Repeat" +msgstr "Atkārtot" + +msgid "Repeat Type" +msgstr "Atkārtošanas veids" + +msgid "Repeating event currently recording... What do you want to do?" +msgstr "Atkārtotais notikums pašreiz ierakstās... Ko vēlaties darīt?" + +msgid "Repeats" +msgstr "Atkārto" + +msgid "Reset" +msgstr "Atstatīt" + +msgid "Reset and renumerate title names" +msgstr "Atstatīt un pārnumurēt virstakstu nosaukumus" + +msgid "Resolution" +msgstr "Izšķirtspēja" + +msgid "Restart" +msgstr "Restartēt" + +msgid "Restart GUI" +msgstr "Restartēt GUI" + +msgid "Restart GUI now?" +msgstr "Restartēt GUI tagad?" + +msgid "Restart network" +msgstr "Restartēt tīklu" + +msgid "Restart test" +msgstr "Atkārtot testu" + +msgid "Restart your network connection and interfaces.\n" +msgstr "Restartēt tīkla konfigurāciju un interfeisus. \n" + +msgid "Restore" +msgstr "Atjaunot" + +msgid "Restore backups..." +msgstr "" + +msgid "Restore running" +msgstr "" + +msgid "Restore running..." +msgstr "" + +msgid "Restore system settings" +msgstr "" + +msgid "" +"Restoring the settings is done. Please press OK to activate the restored " +"settings now." +msgstr "" +"Iestatījumu atjaunošana pabeigta. Lūdzu spiediet OK lai aktivizētu " +"atjaunotos iestatījumus." + +msgid "Resume from last position" +msgstr "Atsākt no pēdējā stāvokļa" + +#. TRANSLATORS: The string "Resuming playback" flashes for a moment +#. TRANSLATORS: at the start of a movie, when the user has selected +#. TRANSLATORS: "Resume from last position" as start behavior. +#. TRANSLATORS: The purpose is to notify the user that the movie starts +#. TRANSLATORS: in the middle somewhere and not from the beginning. +#. TRANSLATORS: (Some translators seem to have interpreted it as a +#. TRANSLATORS: question or a choice, but it is a statement.) +msgid "Resuming playback" +msgstr "Atsāk atskaņošanu" + +msgid "Return to file browser" +msgstr "Atgriezties uz datņu pārlūku" + +msgid "Return to movie list" +msgstr "Atgriezties uz filmu sarakstu" + +msgid "Return to previous service" +msgstr "Atgriezties uz iepriekšējo kanālu" + +msgid "Rewind speeds" +msgstr "Attīšanas ātrumi" + +msgid "Right" +msgstr "Labais" + +#, fuzzy +msgid "Rolloff" +msgstr "Rolloff" + +msgid "Rotor turning speed" +msgstr "Pozicioniera griešanās ātrums" + +msgid "Running" +msgstr "Darbojas" + +msgid "Russian" +msgstr "Krievu" + +msgid "S-Video" +msgstr "S-Video" + +msgid "SNR" +msgstr "SNR" + +msgid "SNR:" +msgstr "SNR:" + +msgid "Sat" +msgstr "Se" + +msgid "Sat / Dish Setup" +msgstr "Pavadoņa / antenas iestatne" + +msgid "Satellite" +msgstr "Pavadonis" + +msgid "Satellite Equipment Setup" +msgstr "Pavadoņa piederumu iestatne" + +msgid "Satellites" +msgstr "Pavadoņi" + +msgid "Satfinder" +msgstr "Sat-meklētājs" + +msgid "Sats" +msgstr "Pavadoņi" + +msgid "Saturday" +msgstr "Sestdiena" + +msgid "Save" +msgstr "Saglabāt" + +msgid "Save Playlist" +msgstr "Saglabāt repertuāru" + +msgid "Scaling Mode" +msgstr "Mērogošanas režīms" + +msgid "Scan " +msgstr "Meklēt " + +msgid "Scan QAM128" +msgstr "Meklēt QAM128" + +msgid "Scan QAM16" +msgstr "Meklēt QAM16" + +msgid "Scan QAM256" +msgstr "Meklēt QAM256" + +msgid "Scan QAM32" +msgstr "Meklēt QAM32" + +msgid "Scan QAM64" +msgstr "Meklēt QAM64" + +msgid "Scan SR6875" +msgstr "Meklēt SR6875" + +msgid "Scan SR6900" +msgstr "Meklēt SR6900" + +msgid "Scan Wireless Networks" +msgstr "Meklēt bezvadu tīklus" + +msgid "Scan additional SR" +msgstr "Meklēt papildu SR" + +msgid "Scan band EU HYPER" +msgstr "Skenēt diapazonu EU HYPER " + +msgid "Scan band EU MID" +msgstr "Skenēt diapazonu EU MID" + +msgid "Scan band EU SUPER" +msgstr "Skenēt diapazonu EU SUPER" + +msgid "Scan band EU UHF IV" +msgstr "Skenēt diapazonu EU UHF IV" + +msgid "Scan band EU UHF V" +msgstr "Skenēt diapazonu EU UHF V" + +msgid "Scan band EU VHF I" +msgstr "Skenēt diapazonu EU VHF I" + +msgid "Scan band EU VHF III" +msgstr "Skenēt diapazonu EU VHF III" + +msgid "Scan band US HIGH" +msgstr "Skenēt diapazonu US HIGH" + +msgid "Scan band US HYPER" +msgstr "Skenēt diapazonu US HYPER" + +msgid "Scan band US LOW" +msgstr "Skenēt diapazonu US LOW" + +msgid "Scan band US MID" +msgstr "Skenēt diapazonu US MID" + +msgid "Scan band US SUPER" +msgstr "Skenēt diapazonu US SUPER" + +msgid "" +"Scan your network for wireless Access Points and connect to them using your " +"WLAN USB Stick\n" +msgstr "" +"Meklēt bezvadu piekļuves punktus tīklā un savienoties ar tiem, lietojot " +"bezvadu tīkla USB ierīci\n" + +msgid "" +"Scans default lamedbs sorted by satellite with a connected dish positioner" +msgstr "" +"Meklē noklusētos lamedbs, sakārtotus pēc pavadoņiem ar pievienotu " +"pozicioniera antenu" + +msgid "Search east" +msgstr "Meklēt austrumos" + +msgid "Search west" +msgstr "Meklēt rietumos" + +msgid "Secondary DNS" +msgstr "Sekundārā DNS" + +msgid "Seek" +msgstr "Meklēt" + +msgid "Select" +msgstr "" + +msgid "Select HDD" +msgstr "Izvēlēties cieto disku" + +msgid "Select Location" +msgstr "Izvēlēties atrašanās vietu" + +msgid "Select Network Adapter" +msgstr "Izvēlēties tīkla adapteri" + +msgid "Select a movie" +msgstr "Izvēlēties filmu" + +msgid "Select audio mode" +msgstr "Izvēlēties skaņas režīmu" + +msgid "Select audio track" +msgstr "Izvēlēties skaņas celiņu" + +msgid "Select channel to record from" +msgstr "Izvēlēties ierakstāmo kanālu" + +msgid "Select files for backup. Currently selected:\n" +msgstr "" + +msgid "Select files/folders to backup..." +msgstr "" + +msgid "Select image" +msgstr "Izvēlēties imidžu" + +msgid "Select refresh rate" +msgstr "Izvēlēties atsvaidzes intensitāti" + +msgid "Select video input" +msgstr "Izvēlēties attēla ieeju" + +msgid "Select video mode" +msgstr "Izvēlēties attēla režīmu" + +# ??? +msgid "Selected source image" +msgstr "Izvēlētā avota imidžs" + +msgid "Send DiSEqC" +msgstr "Sūtīt DiSEqC" + +msgid "Send DiSEqC only on satellite change" +msgstr "Sūtīt DiSEqC tikai mainoties pavadonim" + +# ??? +msgid "Seperate titles with a main menu" +msgstr "Atdalīt nosaukumus ar galveno izvēlni" + +msgid "Sequence repeat" +msgstr "Secības atkārtojums" + +msgid "Service" +msgstr "Kanāls" + +msgid "Service Scan" +msgstr "Kanālu meklēšana" + +msgid "Service Searching" +msgstr "Kanālu meklēšana" + +msgid "Service has been added to the favourites." +msgstr "Kanāls tika pievienots favorītiem." + +msgid "Service has been added to the selected bouquet." +msgstr "Kanāls tika pievienots izvēlētajai buķetei." + +msgid "" +"Service invalid!\n" +"(Timeout reading PMT)" +msgstr "" +"Kanāls neeksistē!\n" +"(PMT lasīšanas noildze)" + +msgid "" +"Service not found!\n" +"(SID not found in PAT)" +msgstr "" +"Kanāls nav atrasts!\n" +"(SID nav atrasts iekš PAT)" + +msgid "Service scan" +msgstr "Kanālu meklēšana" + +msgid "" +"Service unavailable!\n" +"Check tuner configuration!" +msgstr "" +"Kanāls nav pieejams!\n" +"Pārbaudiet uztvērēja konfigurāciju!" + +msgid "Serviceinfo" +msgstr "Kanāla info" + +msgid "Services" +msgstr "Kanāli" + +msgid "Set Voltage and 22KHz" +msgstr "Iestatīt spriegumu un 22 KHZ" + +msgid "Set as default Interface" +msgstr "Iestatīt kā noklusēto interfeisu" + +msgid "Set interface as default Interface" +msgstr "Iestatīt interfeisu kā noklusēto" + +msgid "Set limits" +msgstr "Iestatīt robežas" + +msgid "Settings" +msgstr "Iestatījumi" + +msgid "Setup" +msgstr "Iestatne" + +msgid "Setup Mode" +msgstr "Iestatnes režīms" + +msgid "Show Info" +msgstr "Rādīt informāciju" + +msgid "Show WLAN Status" +msgstr "Rādīt bezvadu tīkla statusu" + +msgid "Show blinking clock in display during recording" +msgstr "Ieraksta laikā displejā rādīt mirgojošu pulksteni " + +msgid "Show infobar on channel change" +msgstr "Rādīt infojoslu, mainot kanālu" + +msgid "Show infobar on event change" +msgstr "Rādīt infojoslu, mainot notikumu" + +msgid "Show infobar on skip forward/backward" +msgstr "Rādīt infojoslu pārlēciena turp/atpakaļ laikāl" + +msgid "Show positioner movement" +msgstr "Rādīt pozicioniera kustību" + +msgid "Show services beginning with" +msgstr "Rādīt kanālus, kas sākas ar" + +msgid "Show the radio player..." +msgstr "Klausīties radio..." + +msgid "Show the tv player..." +msgstr "Skatīties TV..." + +msgid "Shows the state of your wireless LAN connection.\n" +msgstr "Rādīt bezvadu tīkla savienojuma statusu.\n" + +msgid "Shutdown Dreambox after" +msgstr "Izslēgt Dreambox pēc" + +msgid "Similar" +msgstr "Tie paši" + +msgid "Similar broadcasts:" +msgstr "Tie paši raidījumi:" + +msgid "Simple" +msgstr "Vienkāršs" + +msgid "Simple titleset (compatibility for legacy players)" +msgstr "" +"Vienkāršu simbolu lietojums nosaukumos (savietojamībai ar parastiem " +"atskaņotājiem)" + +msgid "Single" +msgstr "Viens" + +msgid "Single EPG" +msgstr "Kanāla EPG" + +msgid "Single satellite" +msgstr "Viens pavadonis" + +msgid "Single transponder" +msgstr "Viens transponderis" + +# ??? +msgid "Singlestep (GOP)" +msgstr "Viensolis (GOP)" + +msgid "Skin..." +msgstr "Ādiņa..." + +msgid "Sleep Timer" +msgstr "Miega taimeris" + +msgid "Sleep timer action:" +msgstr "Miega taimera darb.:" + +msgid "Slideshow Interval (sec.)" +msgstr "Slīdrādes intervāls (s?k.)" + +#, python-format +msgid "Slot %d" +msgstr "Karšu lasītājs %d" + +msgid "Slow" +msgstr "Lēni" + +msgid "Slow Motion speeds" +msgstr "Palēninātās kustības ātrumi" + +msgid "Software manager" +msgstr "" + +msgid "Software manager..." +msgstr "" + +msgid "Software restore" +msgstr "" + +msgid "Software update" +msgstr "" + +msgid "Some plugins are not available:\n" +msgstr "Daži spraudņi nav pieejami:\n" + +msgid "Somewhere else" +msgstr "Kaut kur citur" + +msgid "Sorry MediaScanner is not installed!" +msgstr "" + +msgid "Sorry no backups found!" +msgstr "" + +msgid "" +"Sorry your Backup destination does not exist\n" +"\n" +"Please choose an other one." +msgstr "" +"Izvēlētais dublējumkopijas galamērķis neeksistē.\n" +"\n" +"Lūdzu izvēlieties citu!" + +msgid "" +"Sorry your backup destination is not writeable.\n" +"Please choose an other one." +msgstr "" + +msgid "" +"Sorry, your backup destination is not writeable.\n" +"\n" +"Please choose another one." +msgstr "" + +#. TRANSLATORS: This must fit into the header button in the EPG-List +msgid "Sort A-Z" +msgstr "Kārtot A-Z" + +#. TRANSLATORS: This must fit into the header button in the EPG-List +msgid "Sort Time" +msgstr "Kārt.laikus" + +msgid "Sound" +msgstr "Skaņa" + +msgid "Soundcarrier" +msgstr "Skaņas nesējs" + +msgid "South" +msgstr "Dienvidi" + +msgid "Spanish" +msgstr "Spāņu" + +msgid "Standby" +msgstr "Gaidstāve" + +msgid "Standby / Restart" +msgstr "Gaidstāve / Restartēt" + +msgid "Start from the beginning" +msgstr "Sākt no sākuma" + +msgid "Start recording?" +msgstr "Sākt ierakstu?" + +msgid "Start test" +msgstr "Sākt pārbaudi" + +msgid "StartTime" +msgstr "Sākuma laiks" + +msgid "Starting on" +msgstr "Palaižas uz" + +msgid "Step east" +msgstr "Soli uz austrumiem" + +msgid "Step west" +msgstr "Soli uz rietumiem" + +msgid "Stereo" +msgstr "Stereo" + +msgid "Stop" +msgstr "Apturēt" + +msgid "Stop Timeshift?" +msgstr "Apturēt laikaizturi?" + +msgid "Stop current event and disable coming events" +msgstr "Apturēt pašreizējo notikumu un izslēgt nākamos notikumus" + +msgid "Stop current event but not coming events" +msgstr "Apturēt pašreizējo notikumu, bet ne nākamos notikumus" + +msgid "Stop playing this movie?" +msgstr "Apturēt filmas atskaņošanu?" + +msgid "Stop test" +msgstr "Apturēt testu" + +msgid "Stop testing plane after # failed transponders" +msgstr "Apturēt testēšanu pēc # neatrastiem transponderiem" + +msgid "Stop testing plane after # successful transponders" +msgstr "Apturēt testēšanu pēc # atrastiem transponderiem" + +msgid "Store position" +msgstr "Saglabāt pozīciju" + +msgid "Stored position" +msgstr "Saglabātā pozīcija" + +msgid "Subservice list..." +msgstr "Papildkanālu saraksts..." + +msgid "Subservices" +msgstr "Papildkanāli" + +msgid "Subtitle selection" +msgstr "Subtitru izvēle" + +msgid "Subtitles" +msgstr "Subtitri" + +msgid "Sun" +msgstr "Sv" + +msgid "Sunday" +msgstr "Svētdiena" + +msgid "Swap Services" +msgstr "Mainīit kanālus" + +msgid "Swedish" +msgstr "Zviedru" + +msgid "Switch to next subservice" +msgstr "Pārslēgt nākamo papildkanālu" + +msgid "Switch to previous subservice" +msgstr "Pārslēgt iepriekšējo papildkanālu" + +msgid "Symbol Rate" +msgstr "Simbolu ātrums" + +msgid "Symbolrate" +msgstr "Simbolātrums" + +msgid "System" +msgstr "Sistēma" + +#. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline) +msgid "TRANSLATOR_INFO" +msgstr "Ivo Grinbergs Jelgava, Latvija" + +msgid "TS file is too large for ISO9660 level 1!" +msgstr "TS datne ir par lielu priekš ISO9660 līmeņa 1!" + +msgid "TV System" +msgstr "TV sistēma" + +msgid "Table of content for collection" +msgstr "Satura rādītājs kolekcijai" + +msgid "Tag 1" +msgstr "Etiķete 1" + +msgid "Tag 2" +msgstr "Etiķete 2" + +msgid "Tags" +msgstr "Etiķetes" + +msgid "Terrestrial" +msgstr "Zemes" + +msgid "Terrestrial provider" +msgstr "Zemes operators" + +msgid "Test DiSEqC settings" +msgstr "Pārbaudīt DiSEqC iestatījumus" + +msgid "Test Type" +msgstr "Pārbaudes veids" + +msgid "Test mode" +msgstr "Testa režīms" + +msgid "Test the network configuration of your Dreambox.\n" +msgstr "Pārbaudīt tīkla Dreambox konfigurāciju.\n" + +msgid "Test-Messagebox?" +msgstr "Pārbaudes ziņojumu kaste?" + +msgid "" +"Thank you for using the wizard. Your box is now ready to use.\n" +"Please press OK to start using your Dreambox." +msgstr "" +"Pateicamies par vedņa izmantošanu. Ierīce ir gatava lietošanai.\n" +"Lūdzu spiediet OK, lai sāktu lietot Dreambox." + +msgid "" +"The DVD standard doesn't support H.264 (HDTV) video streams. Do you want to " +"create a Dreambox format data DVD (which will not play in stand-alone DVD " +"players) instead?" +msgstr "" +"DVD standarts neatbalsta H.264 (HDTV) attēla plūsmas. Vai jūs tā vietā " +"vēlaties izveidot Dreambox formāta datu DVD (kuru nevarēs izmantot standarta " +"DVD atskaņotājos)?" + +msgid "" +"The USB stick is now bootable. Do you want to download the latest image from " +"the feed server and save it on the stick?" +msgstr "" +"USB atmiņas ierīce tagad ir sāknējama. Vai vēlaties lejuplādēt pēdējo imidžu " +"no barotnes servera un saglabāt to USB atmiņas ierīcē?" + +msgid "The backup failed. Please choose a different backup location." +msgstr "" +"Dublējumkopēšana neizdevās. Lūdzu izvēlieties citu vietu dublējumkopijai. " + +#, python-format +msgid "" +"The following device was found:\n" +"\n" +"%s\n" +"\n" +"Do you want to write the USB flasher to this stick?" +msgstr "" +"Atrasta sekojoša ierīce:\n" +"\n" +"%s\n" +"\n" +"Vai vēlaties ierakstīt USB lādētāju šajā atmiņas ierīcē?" + +# ??? +msgid "" +"The input port should be configured now.\n" +"You can now configure the screen by displaying some test pictures. Do you " +"want to do that now?" +msgstr "" +"Ievada portam būtu jābūt nokonfigurētam.\n" +"Tagad Jūs varat konfigurēt ekrānu, attēlojot dažus testa attēlus. Vai " +"vēlaties to darīt tagad?" + +msgid "The installation of the default services lists is finished." +msgstr "Noklusēto kanālu sarakstu uzstādīšana ir pabeigta." + +msgid "" +"The installation of the default settings is finished. You can now continue " +"configuring your Dreambox by pressing the OK button on the remote control." +msgstr "" +"Noklusēto iestatījumu uzstādīšana ir pabeigta. Tagad varat turpināt Dreambox " +"konfigurēšanu, spiežot OK taustiņu uz tālvadības pults." + +msgid "" +"The md5sum validation failed, the file may be corrupted! Are you sure that " +"you want to burn this image to flash memory? You are doing this at your own " +"risk!" +msgstr "" +"Md5sum validācija neizdevās, iespējams, ka datne ir bojāta! Vai tiešām " +"vēlaties rakstīt šo imidžu iekšējā atmiņā? Tā darot, Jūs riskējat!" + +msgid "" +"The md5sum validation failed, the file may be downloaded incompletely or be " +"corrupted!" +msgstr "" +"Md5sum validācija neizdevās, iespējams, ka datne ir nepilnīgi ielādēta vai " +"bojāta!" + +msgid "The package doesn't contain anything." +msgstr "Pakotne neko nesatur." + +#, python-format +msgid "The path %s already exists." +msgstr "Ceļš %s jau eksistē." + +msgid "The pin code has been changed successfully." +msgstr "PIN kods veiksmīgi nomainīts." + +msgid "The pin code you entered is wrong." +msgstr "Jūsu ievadītais PIN kods ir nepareizs." + +msgid "The pin codes you entered are different." +msgstr "Jūsu ievadītie PIN kodi ir atšķirīgi." + +#, python-format +msgid "The results have been written to %s." +msgstr "Rezultāti saglabāti %s." + +msgid "The sleep timer has been activated." +msgstr "Miega taimeris tika aktivizēts." + +msgid "The sleep timer has been disabled." +msgstr "Miega taimeris tika izslēgts." + +msgid "The timer file (timers.xml) is corrupt and could not be loaded." +msgstr "Taimera datne (timers.xml) ir bojāta un to nevar ielādēt." + +msgid "" +"The wireless LAN plugin is not installed!\n" +"Please install it." +msgstr "" +"Bezvadu tīkla spraudnis nav uzstādīts!\n" +"Lūdzu uzstādiet to." + +msgid "" +"The wizard can backup your current settings. Do you want to do a backup now?" +msgstr "" +"Vednis var izveidot pašreizējo iestatījumu dublējumkopiju. Vai vēlaties " +"veidot dublējumkopiju tagad?" + +msgid "The wizard is finished now." +msgstr "Vednis ir pabeidzis darbu." + +msgid "There are no default services lists in your image." +msgstr "Imidžā nav noklusēto kanālu sarakstu." + +msgid "There are no default settings in your image." +msgstr "Imidžā nav noklusēto iestatījumu." + +msgid "" +"There might not be enough Space on the selected Partition.\n" +"Do you really want to continue?" +msgstr "" +"Izvēlētajā sadaļā var nebūt pietiekami daudz vietas.\n" +"Vai tiešām vēlaties turpināt?" + +#, python-format +msgid "This .NFI file does not contain a valid %s image!" +msgstr "Šī .NFI datne nesatur derīgu %s imidžu!" + +msgid "" +"This .NFI file does not have a md5sum signature and is not guaranteed to " +"work. Do you really want to burn this image to flash memory?" +msgstr "" +"Šai .NFI datnei nav md5sum paraksta un nav garantijas ka tā strādās. Vai " +"tiešām vēlaties šo imidžu rakstīt iekšējā atmiņā?" + +msgid "" +"This .NFI file has a valid md5 signature. Continue programming this image to " +"flash memory?" +msgstr "" +"Šai .NFI datnei ir derīgs md5sum paraksts. Vai turpināt imidža programmēšanu " +"iekšējā atmiņāį?" + +msgid "" +"This DVD RW medium is already formatted - reformatting will erase all " +"content on the disc." +msgstr "" +"Šis DVD RW disks jau ir formatēts - atkārtota formatēšana dzēsīs visu diska " +"saturu." + +#, python-format +msgid "This Dreambox can't decode %s video streams!" +msgstr "Šis Dreambox modelis nevar atkodēt %s attēla plūsmas!" + +msgid "This is step number 2." +msgstr "Šis ir solis numur 2." + +msgid "This is unsupported at the moment." +msgstr "Tas šobrīd nav atbalstīts." + +msgid "" +"This test checks for configured Nameservers.\n" +"If you get a \"unconfirmed\" message:\n" +"- please check your DHCP, cabling and Adapter setup\n" +"- if you configured your Nameservers manually please verify your entries in " +"the \"Nameserver\" Configuration" +msgstr "" +"Šis tests pārbauda domēna vārdu serveru konfigurāciju.\n" +"Ja Jūs saņemat \"neapstiprināts \" paziņojumu:\n" +"- lūdzu pārbaudiet DHCP, kabeļus un adaptera iestatni\n" +"- ja konfigurējāt domēna vārdu serverus manuāli, pārbaudiet savus ierakstus " +"\"Domēna vārdu serveris \" Konfigurācija" + +msgid "" +"This test checks whether a network cable is connected to your LAN-Adapter.\n" +"If you get a \"disconnected\" message:\n" +"- verify that a network cable is attached\n" +"- verify that the cable is not broken" +msgstr "" +"Šis tests pārbauda vai tīkla kabelis ir savienots ar tīkla adapteri.\n" +"Ja Jūs saņemat \"atvienots \" paziņojumu:\n" +"- pārliecinieties, ka tīkla kabelis ir pievienots\n" +" - pārliecinieties, ka kabelis nav bojāts" + +msgid "" +"This test checks whether a valid IP Address is found for your LAN Adapter.\n" +"If you get a \"unconfirmed\" message:\n" +"- no valid IP Address was found\n" +"- please check your DHCP, cabling and adapter setup" +msgstr "" +"Šis tests pārbauda vai tīkla adapterim ir atrasta derīga IP adrese. \n" +"Ja Jūs saņemat \"neapstiprināts \" paziņojumu:\n" +" - nav atrsta derīga IP adrese\n" +" - lūdzu pārbaudiet DHCP, kabeļus un adaptera iestatni" + +msgid "" +"This test checks whether your LAN Adapter is set up for automatic IP Address " +"configuration with DHCP.\n" +"If you get a \"disabled\" message:\n" +" - then your LAN Adapter is configured for manual IP Setup\n" +"- verify thay you have entered correct IP informations in the AdapterSetup " +"dialog.\n" +"If you get an \"enabeld\" message:\n" +"-verify that you have a configured and working DHCP Server in your network." +msgstr "" +"Šis tests pārbauda vai tīkla adapteris ir iestatīts automātiskai IP adrešu " +"konfigurēšanai ar DHCP.\n" +"Ja saņemat \"neaktīvs \" paziņojumu:\n" +" - tad tīkla adapteris ir konfigurēts manuālai IP iestatīšanai\n" +"- pārbaudiet vai ir ievadīta korekta IP informācija adaptera iestatnes " +"dialoglogā. \n" +"Ja saņemat \"aktīvs \" paziņojumu:\n" +"- pārbaudiet vai ir konfigurēts un darbojas DHCP serveris Jūsu tīklā." + +msgid "This test detects your configured LAN-Adapter." +msgstr "Šis tests atrod konfigurēto tīkla adapteri." + +msgid "Three" +msgstr "Trīs" + +msgid "Threshold" +msgstr "Heterodinas" + +msgid "Thu" +msgstr "Ce" + +msgid "Thumbnails" +msgstr "Sīktēli" + +msgid "Thursday" +msgstr "Ceturtdiena" + +msgid "Time" +msgstr "Laiks" + +msgid "Time/Date Input" +msgstr "Laiks / Datums" + +msgid "Timer" +msgstr "Taimeris" + +msgid "Timer Edit" +msgstr "Rediģēt taimeri" + +msgid "Timer Editor" +msgstr "Taimeru redaktors" + +msgid "Timer Type" +msgstr "Taimera veids" + +msgid "Timer entry" +msgstr "Taimera ieraksts" + +msgid "Timer log" +msgstr "Taimera žurnāls" + +msgid "" +"Timer overlap in timers.xml detected!\n" +"Please recheck it!" +msgstr "" +"Taimeru pārklāšanās konstatēta timers.xml! \n" +"Lūdzu vēlreiz pārbaudiet!" + +msgid "Timer sanity error" +msgstr "Taimera kļūda" + +msgid "Timer selection" +msgstr "Taimeru izvēle" + +msgid "Timer status:" +msgstr "Taimera statuss:" + +msgid "Timeshift" +msgstr "Laikaizture" + +msgid "Timeshift not possible!" +msgstr "Laikaizture nav iespējama!" + +msgid "Timeshift path..." +msgstr "Laikaiztures ceļš..." + +msgid "Timezone" +msgstr "Laika josla" + +msgid "Title" +msgstr "Nosaukums" + +msgid "Title properties" +msgstr "Nosaukuma parametri" + +msgid "Titleset mode" +msgstr "Nosaukuma iestatīšanas režīms" + +msgid "" +"To update your Dreambox firmware, please follow these steps:\n" +"1) Turn off your box with the rear power switch and plug in the bootable USB " +"stick.\n" +"2) Turn mains back on and hold the DOWN button on the front panel pressed " +"for 10 seconds.\n" +"3) Wait for bootup and follow instructions of the wizard." +msgstr "" +"Lai atjauninātu Dreambox programmatūru, lūdzu izpildiet šādus soļus:\n" +"1) Izslēdziet ierīci ar aizmugures barošanas slēdzi un iespraudiet sāknējamu " +"USB atmiņu.\n" +"2) Ieslēdziet ierīci un 10 sekundes turiet nospiestu DOWN pogu uz priekšējā " +"paneļa.\n" +"3) Gaidiet līdz ielādējas un sekojiet vedņa norādījumiem." + +msgid "Today" +msgstr "Šodien" + +msgid "Tone mode" +msgstr "Toņa režīms" + +msgid "Toneburst" +msgstr "Toņsignāls" + +msgid "Toneburst A/B" +msgstr "Toņsignāls A/B" + +msgid "Track" +msgstr "Celiņš" + +msgid "Translation" +msgstr "Translēšana" + +msgid "Translation:" +msgstr "Translēšana:" + +msgid "Transmission Mode" +msgstr "Pārraides režīms" + +msgid "Transmission mode" +msgstr "Pārraides režīms" + +msgid "Transponder" +msgstr "Transponderis" + +msgid "Transponder Type" +msgstr "Transpondera veids" + +msgid "Tries left:" +msgstr "Atlikuši mēģinājumi:" + +msgid "Try to find used Transponders in cable network.. please wait..." +msgstr "Mēģina atrast izmantotus transponderus kabeļu tīklā.. lūdzu gaidiet..." + +msgid "Try to find used transponders in cable network.. please wait..." +msgstr "Mēģina atrast izmantotus transponderus kabeļu tīklā.. lūdzu gaidiet..." + +msgid "Tue" +msgstr "Ot" + +msgid "Tuesday" +msgstr "Otrdiena" + +msgid "Tune" +msgstr "Noskaņo" + +msgid "Tune failed!" +msgstr "Neizdevās noskaņot!" + +msgid "Tuner" +msgstr "Uztvērējs" + +msgid "Tuner " +msgstr "Uztvērējs " + +msgid "Tuner Slot" +msgstr "Uztvērēja slots" + +msgid "Tuner configuration" +msgstr "Uztvērēja konfigurācija" + +msgid "Tuner status" +msgstr "Uztvērēja statuss" + +msgid "Turkish" +msgstr "Turku" + +msgid "Two" +msgstr "Divi" + +msgid "Type" +msgstr "Tips" + +msgid "Type of scan" +msgstr "Meklēšanas veids" + +#, fuzzy +msgid "USALS" +msgstr "USALS" + +msgid "USB" +msgstr "USB" + +msgid "USB Stick" +msgstr "USB atmiņa" + +msgid "USB stick wizard" +msgstr "USB atmiņas vednis" + +msgid "Ukrainian" +msgstr "Ukraiņu" + +msgid "" +"Unable to complete filesystem check.\n" +"Error: " +msgstr "" +"Nevar pabeigt failsistēmas pārbaudi.\n" +"Kļūda:" + +msgid "" +"Unable to initialize harddisk.\n" +"Error: " +msgstr "" +"Nevar inicializēt cieto disku. \n" +"Kļūca:" + +msgid "Uncommitted DiSEqC command" +msgstr "Pasīvā DiSEqC komanda" + +msgid "Unicable" +msgstr "Vienkabeļa" + +msgid "Unicable LNB" +msgstr "Vienkabeļa LNB" + +msgid "Unicable Martix" +msgstr "Vienkabeļa Martix" + +msgid "Universal LNB" +msgstr "Universālā LNB" + +msgid "Unmount failed" +msgstr "Nomontēšana neizdevās" + +msgid "Update" +msgstr "Atjaunināt" + +msgid "Updates your receiver's software" +msgstr "Atjaunina ierīces programmatūru" + +msgid "Updating finished. Here is the result:" +msgstr "Atjaunināšana pabeigta. Skatīt rezultātu:" + +msgid "Updating... Please wait... This can take some minutes..." +msgstr "Atjaunina... Lūdzu gaidiet... tas var aizņemt dažas minūtes..." + +msgid "Upgrade finished." +msgstr "" + +msgid "Upgrade finished. Do you want to reboot your Dreambox?" +msgstr "Atjaunošana pabeigta. Vai vēlaties atsāknēt Dreambox?" + +msgid "Upgrading" +msgstr "Atjaunošana" + +msgid "Upgrading Dreambox... Please wait" +msgstr "Atjauno Dreambox... Lūdzu gaidiet" + +msgid "Use" +msgstr "Lietot" + +msgid "Use DHCP" +msgstr "Lietot DHCP" + +msgid "Use Interface" +msgstr "Lietot interfeisu" + +msgid "Use Power Measurement" +msgstr "Lietot sprieguma mērīšanu" + +msgid "Use a gateway" +msgstr "Lietot vārteju" + +#. TRANSLATORS: The effect of "Non-smooth winding" is that rather +#. than using ordinary "continuous" or "smooth" winding, a fast +#. sequence of stills is shown when winding at high speeds. This +#. makes it much easier too follow when almost each frame comes from +#. a new scene. The effect is achieved by repeating each shown frame +#. a couple of times. The settings control both at which speed this +#. winding mode sets in, and how many times each frame should be +#. repeated. This was previously called "Discontinuous playback" +#. which was incomprehensible. "Non-smooth winding" may be a better +#. term, but note that there is nothing irregular about it. Synonyms +#. better suited for translation to other languages may be "stepwise +#. winding/playback", or "winding/playback using stills". +msgid "Use non-smooth winding at speeds above" +msgstr "Izmantot 'attēlu virknes' režīmu pie augstākminētajiem ātrumiem" + +msgid "Use power measurement" +msgstr "Lietot sprieguma mērīšanu" + +msgid "Use the Networkwizard to configure your Network\n" +msgstr "Lietot vedni tīkla konfigurēšanai\n" + +msgid "" +"Use the left and right buttons to change an option.\n" +"\n" +"Please set up tuner A" +msgstr "" +"Lietojiet labo un kreiso izvēles taustiņu lai mainītu izvēli.\n" +"\n" +"Lūdzu iestatiet uztvērēju A" + +msgid "" +"Use the up/down keys on your remote control to select an option. After that, " +"press OK." +msgstr "" +"Lietojiet tālvadības pults up/down taustiņus lai izdarītu izvēli. Pēc tam " +"spiediet OK." + +# ??? +msgid "Use usals for this sat" +msgstr "Lietot parastos iestatījumus šim pavadonim " + +msgid "Use wizard to set up basic features" +msgstr "Lietot vedni lai iestatītu galvenās iespējas" + +msgid "Used service scan type" +msgstr "Lietotais kanālu meklēšanas veids" + +msgid "User defined" +msgstr "Lietotāja definēts" + +msgid "VCR scart" +msgstr "VCR skart savienojums" + +msgid "VMGM (intro trailer)" +msgstr "VMGM (ievada treileris)" + +msgid "Vertical" +msgstr "Vertikālā" + +msgid "Video Fine-Tuning" +msgstr "Precīzā atēla regulēšana" + +msgid "Video Fine-Tuning Wizard" +msgstr "Precīzās atēla regulēšanas vednis" + +msgid "Video Output" +msgstr "Attēla izeja" + +msgid "Video Setup" +msgstr "Attēla iestatne" + +msgid "Video Wizard" +msgstr "Attēla vednis" + +msgid "" +"Video input selection\n" +"\n" +"Please press OK if you can see this page on your TV (or select a different " +"input port).\n" +"\n" +"The next input port will be automatically probed in 10 seconds." +msgstr "" +"Attēla ieejas izvēle\n" +"\n" +"Ja redzat šo lappusi uz sava TV, spiediet OK (vai izvēlieties citu ieeju).\n" +"\n" +"Pēc 10 sekundēm tiks automātiski aktivizēta nākamā ieeja." + +msgid "Video mode selection." +msgstr "Attēla režīma izvēle." + +# ??? +msgid "View Rass interactive..." +msgstr "Skatīt Rass interaktīvi..." + +msgid "View teletext..." +msgstr "Skatīt teletekstu..." + +msgid "Virtual KeyBoard" +msgstr "Virtuālā klaviatūra" + +msgid "Voltage mode" +msgstr "Sprieguma režīms" + +msgid "Volume" +msgstr "Skaļums" + +msgid "W" +msgstr "W" + +msgid "WEP" +msgstr "WEP" + +msgid "WPA" +msgstr "WPA" + +msgid "WPA or WPA2" +msgstr "WPA vai WPA2" + +msgid "WPA2" +msgstr "WPA2" + +msgid "WSS on 4:3" +msgstr "WSS uz 4:3" + +msgid "Waiting" +msgstr "Gaida" + +msgid "" +"We will now test if your TV can also display this resolution at 50hz. If " +"your screen goes black, wait 20 seconds and it will switch back to 60hz.\n" +"Please press OK to begin." +msgstr "" +"Tagad pārbaudīsim vai Jūsu TV var attēlot šo izšķirtspēju arī pie 50 Hz. Ja " +"ekrāns paliek melns, pagaidiet 20 sekundes un tas pārslēgsies atpakaļ uz 60 " +"Hz.\n" +"Lūdzu spiediet OK lai sāktu." + +msgid "Wed" +msgstr "Tr" + +msgid "Wednesday" +msgstr "Trešdiena" + +msgid "Weekday" +msgstr "Nedēļas diena" + +# ??? +msgid "" +"Welcome to the Cutlist editor.\n" +"\n" +"Seek to the start of the stuff you want to cut away. Press OK, select 'start " +"cut'.\n" +"\n" +"Then seek to the end, press OK, select 'end cut'. That's it." +msgstr "" +"Sveicināti griešanas redaktorā.\n" +"\n" +"Ejiet uz fragmenta, kuru jūs vēlaties izgriezt, sākumu. Spiediet OK, lai " +"izvēlētos 'sākuma griezienu'.\n" +"\n" +"Tad ejiet uz beigām, spiediet OK, izvēlieties 'beigu griezienu'. Tas arī " +"viss." + +msgid "" +"Welcome to the Image upgrade wizard. The wizard will assist you in upgrading " +"the firmware of your Dreambox by providing a backup facility for your " +"current settings and a short explanation of how to upgrade your firmware." +msgstr "" +"Sveicināti imidža atjaunošanas vednī. Vednis palīdzēs Jums atjaunot Dreambox " +"programmatūru, sniedzot pašreizējo iestatījumu dublējumkopēšanas iespējas, " +"kā arī īsumā izskaidros, kā veikt programmatūras atjaunošanu." + +msgid "" +"Welcome.\n" +"\n" +"This start wizard will guide you through the basic setup of your Dreambox.\n" +"Press the OK button on your remote control to move to the next step." +msgstr "" +"Sveicināti.\n" +"\n" +"Šis sākuma vednis būs Jūsu ceļvedis Dreambox pamata iestatnē.\n" +"Spiediet OK taustiņu uz tālvadības pults, lai pārietu uz nākamo soli." + +msgid "Welcome..." +msgstr "Sveicināti..." + +msgid "West" +msgstr "Rietumi" + +msgid "What do you want to scan?" +msgstr "Ko Jūs vēlaties meklēt?" + +msgid "" +"When you do a factory reset, you will lose ALL your configuration data\n" +"(including bouquets, services, satellite data ...)\n" +"After completion of factory reset, your receiver will restart " +"automatically!\n" +"\n" +"Really do a factory reset?" +msgstr "" + +msgid "Where do you want to backup your settings?" +msgstr "Kur Jūs vēlaties veidot savu iestatījumu dublējumkopiju?" + +msgid "Where to save temporary timeshift recordings?" +msgstr "Kur saglabāt pagaidu laikaiztures ierakstus?" + +msgid "Wireless" +msgstr "Bezvadu" + +msgid "Wireless Network" +msgstr "Bezvadu tīkls" + +msgid "Write error while recording. Disk full?\n" +msgstr "Rakstīšanas kļūda ieraksta laikā. Vai disks ir pilns?\n" + +msgid "Write failed!" +msgstr "Rakstīšana neizdevās!" + +msgid "Writing NFI image file to flash completed" +msgstr "NFI imidža datnes rakstīšana iekšējā atmiņā pabeigta" + +msgid "YPbPr" +msgstr "YPbPr" + +msgid "Year" +msgstr "Gads" + +msgid "Yes" +msgstr "Jā" + +msgid "Yes, and delete this movie" +msgstr "Jā, un dzēst šo filmu" + +msgid "Yes, backup my settings!" +msgstr "Jā, veidot iestatījumu dublējumkopiju!" + +msgid "Yes, do a manual scan now" +msgstr "Jā, veikt manuālo meklēšanu tagad" + +msgid "Yes, do an automatic scan now" +msgstr "Jā, veikt automātisko meklēšanu tagad" + +msgid "Yes, do another manual scan now" +msgstr "Jā, veikt vēl vienu manuālo meklēšanu tagad" + +msgid "Yes, perform a shutdown now." +msgstr "Jā, veikt izslēgšanu tagad." + +msgid "Yes, restore the settings now" +msgstr "Jā, atjaunot iestatījumus tagad" + +msgid "Yes, returning to movie list" +msgstr "Jā, atgriezties uz filmu sarakstu" + +msgid "Yes, view the tutorial" +msgstr "Jā, skatīt pamācību" + +msgid "" +"You can choose some default settings now. Please select the settings you " +"want to be installed." +msgstr "" +"Jūs tagad varat izvēlēties dažus noklusētos iestatījumus. Lūdzu izvēlieties " +"iestatījumus, kurus vēlaties uzstādīt." + +msgid "You can choose, what you want to install..." +msgstr "Jūs varat izvēlēties, ko vēlaties uzstādīti..." + +msgid "You cannot delete this!" +msgstr "Jūs nevarat dzēst šo!" + +msgid "You chose not to install any default services lists." +msgstr "Jūs izvēlējāties neuzstādīt noklusētos kanālu sarakstus." + +msgid "" +"You chose not to install any default settings. You can however install the " +"default settings later in the settings menu." +msgstr "" +"Jūs izvēlējāties neuzstādīt noklusētos iestatījumus. Tomēr Jūs varat " +"uzstādīt noklusētos iestatījumus vēlāk iestatījumu izvēlnē." + +msgid "" +"You chose not to install anything. Please press OK finish the install wizard." +msgstr "" +"Jūs izvēlējāties neko neuzstādīt. Lūdzu spiediet OK, lai pabeigtiu " +"uzstādīšanas vedni." + +msgid "" +"You do not seem to have a harddisk in your Dreambox. So backing up to a " +"harddisk is not an option for you." +msgstr "" +"Izskatās, ka šajā Dreambox nav uzstādīts cietais disks. Tādēļ " +"dublējumkopijas veidošana uz cietā diska jums nav pieejama." + +msgid "" +"You have chosen to backup to a compact flash card. The card must be in the " +"slot. We do not verify if it is really used at the moment. So better backup " +"to the harddisk!\n" +"Please press OK to start the backup now." +msgstr "" +"Jūs izvēlējāties veidot dublējumkopiju CF kartē. Kartei jābūt ievietotai " +"slotā. Mēs nevaram pārbaudīt vai tā patiešām ir pieejama. Tādēļ iesakām " +"veidot dublējumkopiju uz cietā diska!\n" +"Lūdzu spiediet OK lai sāktu dublējumkopijas veidošanu." + +msgid "" +"You have chosen to backup to an usb drive. Better backup to the harddisk!\n" +"Please press OK to start the backup now." +msgstr "" +"Jūs izvēlējāties veidot dublējumkopiju USB atmiņā. Labāk izmantojiet šim " +"mērķim cieto disku!\n" +"Lūdzu spiediet OK lai sāktu dublējumkopijas veidošanu." + +msgid "" +"You have chosen to backup to your harddisk. Please press OK to start the " +"backup now." +msgstr "" +"Jūs izvēlējāties veidot dublējumkopiju cietā diska! Lūdzu spiediet OK lai " +"sāktu dublējumkopijas veidošanu." + +msgid "" +"You have chosen to backup your settings. Please press OK to start the backup " +"now." +msgstr "" + +msgid "" +"You have chosen to create a new .NFI flasher bootable USB stick. This will " +"repartition the USB stick and therefore all data on it will be erased." +msgstr "" +"Jūs izvēlējāties veidot jaunu .NFI lādētāja sāknējamu USB atmiņu. Tadēļ USB " +"atmiņa tiks pārdalīta un dzēsti visi tajā esošie dati." + +msgid "" +"You have chosen to restore your settings. Enigma2 will restart after " +"restore. Please press OK to start the restore now." +msgstr "" + +#, python-format +msgid "You have to wait %s!" +msgstr "Jums jāuzgaidai %s!" + +msgid "" +"You need a PC connected to your dreambox. If you need further instructions, " +"please visit the website http://www.dm7025.de.\n" +"Your dreambox will now be halted. After you have performed the update " +"instructions from the website, your new firmware will ask you to restore " +"your settings." +msgstr "" +"Personālajam datoram jābūt savienotam ar Dreambox. Ja Jums ir nepieciešamas " +"turpmākas instrukcijas, lūdzu apmeklējiet vietni http://www.dm7025.de.\n" +"Dreambox tagad tiks apturēts. Pēc tam, kad būs izpildītas atjaunināšanas " +"instrukcijas no tīkla vietnes, jaunā programmatūra piedāvās Jums atjaunot " +"iestatījumus. " + +msgid "" +"You need to set a pin code and hide it from your children.\n" +"\n" +"Do you want to set the pin now?" +msgstr "" +"Jums vajag uzstādīt PIN kodu un nerādīt to bērniem.\n" +"\n" +"Vai vēlaties tagad uzstādīt PIN kodu?" + +msgid "Your Dreambox will restart after pressing OK on your remote control." +msgstr "Dreambox restartēsies pēc OK taustiņa nospiešanas uz tālvadības pults." + +msgid "Your TV works with 50 Hz. Good!" +msgstr "Jūsu TV darbojas ar 50 Hz. Labi!" + +msgid "" +"Your backup succeeded. We will now continue to explain the further upgrade " +"process." +msgstr "" +"Dublējumkopija izveidota. Tagad turpināsim izskaidrot turpmāko atjaunošanas " +"procesu. " + +msgid "Your dreambox is shutting down. Please stand by..." +msgstr "Dreambox izslēdzas. Lūdzu gaidiet..." + +msgid "" +"Your dreambox isn't connected to the internet properly. Please check it and " +"try again." +msgstr "" +"Dreambox nav pareizi pievienots internetam. Lūdzu pārbaudiet un mēģiniet vēl." + +msgid "" +"Your frontprocessor firmware must be upgraded.\n" +"Press OK to start upgrade." +msgstr "" +"Uztvērēja programmatūru nepieciešams atjaunot.\n" +"Spiediet OK lai sāktu atjaunošanu." + +msgid "Your network configuration has been activated." +msgstr "Tīkla konfigurācija aktivizēta." + +msgid "" +"Your network configuration has been activated.\n" +"A second configured interface has been found.\n" +"\n" +"Do you want to disable the second network interface?" +msgstr "" +"Tīkla konfigurācija aktivizēta.\n" +"Atrasts otrs konfigurētais interfeiss.\n" +"\n" +"Vai vēlaties deaktivizēt otru tīkla interfeisu?" + +msgid "Zap back to service before positioner setup?" +msgstr "Pārslēgties atpakaļ uz kanālu pirms pozicioniera iestatīšanas?" + +msgid "Zap back to service before satfinder?" +msgstr "Pārslēgties atpakaļ uz kanālu pirms sat-meklētāja?" + +msgid "[alternative edit]" +msgstr "[alternatīvu rediģēšana]" + +msgid "[bouquet edit]" +msgstr "[buķešu rediģēšana]" + +msgid "[favourite edit]" +msgstr "[favorītu rediģēšana]" + +msgid "[move mode]" +msgstr "[pārvietošanas režīms]" + +msgid "abort alternatives edit" +msgstr "pārtraukt alternatīvu rediģēšanu" + +msgid "abort bouquet edit" +msgstr "pārtraukt buķešu rediģēšanu" + +msgid "abort favourites edit" +msgstr "pārtraukt favorītu rediģēšanu" + +# ??? +msgid "about to start" +msgstr "gatavojas sākt" + +msgid "activate current configuration" +msgstr "aktivizēt pašreizējo konfigurāciju" + +msgid "add a nameserver entry" +msgstr "pievienot vārdu servera ierakstu" + +msgid "add alternatives" +msgstr "pievienot alternatīvas" + +msgid "add bookmark" +msgstr "pievienot grāmatzīmi" + +msgid "add bouquet" +msgstr "pievienot buķeti" + +msgid "add directory to playlist" +msgstr "pievienot mapi repertuāram" + +msgid "add file to playlist" +msgstr "pievienot datni repertuāram" + +msgid "add files to playlist" +msgstr "pievienot datnes repertuāram" + +msgid "add marker" +msgstr "pievienot marķieri" + +msgid "add recording (enter recording duration)" +msgstr "pievienot ierakstīšanu (ievadīt ieraksta ilgumu)" + +msgid "add recording (enter recording endtime)" +msgstr "pievienot ierakstīšanu (ievadīt ieraksta beigu laiku)" + +msgid "add recording (indefinitely)" +msgstr "pievienot ierakstīšanu (nenoteikti)" + +msgid "add recording (stop after current event)" +msgstr "pievienot ierakstīšanu (apturēt pēc pašreizējā notikuma)" + +msgid "add service to bouquet" +msgstr "pievienot kanālu buķetei" + +msgid "add service to favourites" +msgstr "pievienot kanālu favorītiem" + +msgid "add to parental protection" +msgstr "pievienot vecāku kontrolei" + +msgid "advanced" +msgstr "paplašināts" + +msgid "alphabetic sort" +msgstr "sakārtot pēc alfabēta" + +msgid "" +"are you sure you want to restore\n" +"following backup:\n" +msgstr "" +"vai tiešām vēlaties atjaunot\n" +"šī dublējumkopija:\n" + +#, python-format +msgid "audio track (%s) format" +msgstr "skaņas celiņa (%s) formāts" + +#, python-format +msgid "audio track (%s) language" +msgstr "skaņas celiņa (%s) valoda" + +msgid "audio tracks" +msgstr "skaņas celiņi" + +msgid "auto" +msgstr "auto" + +msgid "back" +msgstr "atpakaļ" + +msgid "background image" +msgstr "fona attēls" + +msgid "backgroundcolor" +msgstr "fona krāsa" + +msgid "better" +msgstr "labāks" + +msgid "black" +msgstr "melns" + +msgid "blacklist" +msgstr "melnais saraksts" + +msgid "blue" +msgstr "zils" + +#, python-format +msgid "burn audio track (%s)" +msgstr "rakstīt skaņas celiņu (%s)" + +msgid "change recording (duration)" +msgstr "mainīt ierakstīšanu (ilgums)" + +msgid "change recording (endtime)" +msgstr "mainīt ierakstīšanu (beigu laiks)" + +msgid "chapters" +msgstr "nodaļas" + +msgid "choose destination directory" +msgstr "izvēlēties galamērķa mapi" + +msgid "circular left" +msgstr "cirkulārā kreisā" + +msgid "circular right" +msgstr "cirkulārā labā" + +msgid "clear playlist" +msgstr "notīrīt repertuāru" + +msgid "complex" +msgstr "kompleksa" + +msgid "config menu" +msgstr "konfigurācijas izvēlne" + +msgid "confirmed" +msgstr "apstiprināts(a)" + +msgid "connected" +msgstr "pievienots" + +msgid "continue" +msgstr "turpināt" + +msgid "copy to bouquets" +msgstr "kopēt buķetēs" + +msgid "create directory" +msgstr "izveidot mapi" + +msgid "daily" +msgstr "ikdienas" + +msgid "day" +msgstr "diena" + +msgid "delete cut" +msgstr "dzēst griešanu" + +msgid "delete file" +msgstr "dzēst datni" + +msgid "delete playlist entry" +msgstr "dzēst repertuāra ierakstu" + +msgid "delete saved playlist" +msgstr "dzēst saglabātu repertuāru" + +msgid "delete..." +msgstr "dzēst..." + +msgid "disable" +msgstr "izslēgt" + +msgid "disable move mode" +msgstr "izslēgt pārvietošanas režīmu" + +msgid "disabled" +msgstr "izslēgts" + +msgid "disconnected" +msgstr "atvienots" + +msgid "do not change" +msgstr "nemainīt" + +msgid "do nothing" +msgstr "nedarīt neko" + +msgid "don't record" +msgstr "nerakstīt" + +msgid "done!" +msgstr "pabeigts!" + +msgid "edit alternatives" +msgstr "rediģēt alternatīvas" + +msgid "empty" +msgstr "tukšs" + +msgid "enable" +msgstr "aktivizēt" + +msgid "enable bouquet edit" +msgstr "aktivizēt buķešu rediģēšanu" + +msgid "enable favourite edit" +msgstr "aktivizēt favorītu rediģēšanu" + +msgid "enable move mode" +msgstr "aktivizēt pārvietošanas režīmu" + +msgid "enabled" +msgstr "aktivizēts" + +msgid "end alternatives edit" +msgstr "beigt alternatīvu rediģēšanu" + +msgid "end bouquet edit" +msgstr "beigt buķešu rediģēšanu" + +msgid "end cut here" +msgstr "beigt griešanu šeit" + +msgid "end favourites edit" +msgstr "beigt favorītu rediģēšanu" + +msgid "enigma2 and network" +msgstr "enigma2 un tīkls" + +msgid "equal to" +msgstr "vienāds ar" + +msgid "exceeds dual layer medium!" +msgstr "pārsniedz divslāņu datu nesēja ietilpību!" + +msgid "exit DVD player or return to file browser" +msgstr "iziet no DVD atskaņotāja un atgriezties datņu pārlūkā" + +msgid "exit mediaplayer" +msgstr "iziet no mediju atskaņotāja" + +msgid "exit movielist" +msgstr "iziet no filmu saraksta" + +msgid "exit nameserver configuration" +msgstr "iziet no vārdu servera konfigurācijas" + +msgid "exit network adapter configuration" +msgstr "iziet no tīkla adaptera konfigurācijas" + +msgid "exit network adapter setup menu" +msgstr "iziet no tīkla adaptera iestatīšanas izvēlnes" + +msgid "exit network interface list" +msgstr "iziet no tīkla saskarņu saraksta" + +msgid "exit networkadapter setup menu" +msgstr "iziet no tīkla adaptera iestatīšanas izvēlnes" + +msgid "failed" +msgstr "neizdevās" + +msgid "fileformats (BMP, PNG, JPG, GIF)" +msgstr "datņu formātii (BMP, PNG, JPG, GIF)" + +msgid "filename" +msgstr "datnes nosaukums" + +msgid "fine-tune your display" +msgstr "displeja precīzā pieregulēšana" + +msgid "forward to the next chapter" +msgstr "uz nākamo nodaļu" + +msgid "free" +msgstr "brīvs" + +msgid "free diskspace" +msgstr "brīva vieta uz diska" + +msgid "go to deep standby" +msgstr "iet uz dziļo gaidstāvi" + +msgid "go to standby" +msgstr "iet uz gaidstāvi" + +msgid "green" +msgstr "zaļš" + +msgid "hear radio..." +msgstr "klausīties radio..." + +msgid "help..." +msgstr "palīdzība..." + +msgid "hidden network" +msgstr "slēpts tīkls" + +msgid "hide extended description" +msgstr "slēpt paplašināto aprakstu" + +msgid "hide player" +msgstr "slēpt atskaņotāju" + +msgid "horizontal" +msgstr "horizontāli" + +msgid "hour" +msgstr "stunda" + +msgid "hours" +msgstr "stundas" + +msgid "immediate shutdown" +msgstr "tūlītēja izslēgšana" + +#, python-format +msgid "" +"incoming call!\n" +"%s calls on %s!" +msgstr "" +"ienākošais zvans!\n" +"%s zvani uz %s!" + +msgid "init module" +msgstr "inicializēšanas režīms" + +msgid "insert mark here" +msgstr "ievietot iezīmi" + +msgid "jump back to the previous title" +msgstr "pārlēkt uz iepriekšējo nosaukumu" + +msgid "jump forward to the next title" +msgstr "pārlēkt uz nākamo nosaukumu" + +msgid "jump to listbegin" +msgstr "pārlēkt uz saraksta sākumu" + +msgid "jump to listend" +msgstr "pārlēkt uz saraksta beigām" + +msgid "jump to next marked position" +msgstr "pārlēkt uz nākamo iezīmēto pozīciju" + +msgid "jump to previous marked position" +msgstr "pārlēkt uz iepriekšējo iezīmēto pozīciju" + +msgid "leave movie player..." +msgstr "iziet no filmu atskaņotāja..." + +msgid "left" +msgstr "kreisais" + +msgid "length" +msgstr "garums" + +msgid "list style compact" +msgstr "saraksta stils kompakts" + +msgid "list style compact with description" +msgstr "saraksta stils kompakts ar aprakstu" + +msgid "list style default" +msgstr "saraksta stils noklusētais" + +msgid "list style single line" +msgstr "saraksta stils vienlīniju" + +msgid "load playlist" +msgstr "ielādēt repertuāru" + +msgid "locked" +msgstr "slēgts" + +#, fuzzy +msgid "loopthrough to" +msgstr "loopthrough to" + +msgid "manual" +msgstr "manuāls" + +msgid "menu" +msgstr "izvēlne" + +msgid "menulist" +msgstr "izvēlņu saraksts" + +msgid "mins" +msgstr "min." + +msgid "minute" +msgstr "minūte" + +msgid "minutes" +msgstr "minūtēm" + +msgid "month" +msgstr "mēnesis" + +msgid "move PiP to main picture" +msgstr "pārvietot PiP uz galveno attēlu" + +msgid "move down to last entry" +msgstr "pārvietot lejup uz pēdējo ierakstu" + +msgid "move down to next entry" +msgstr "pārvietot lejup uz nākamo ierakstu" + +msgid "move up to first entry" +msgstr "pārvietot augšup uz pirmo ierakstu" + +msgid "move up to previous entry" +msgstr "pārvietot augšup uz iepriekšējo ierakstu" + +msgid "movie list" +msgstr "filmu saraksts" + +msgid "multinorm" +msgstr "multinorma" + +msgid "never" +msgstr "nekad" + +msgid "next channel" +msgstr "nākamais kanāls" + +msgid "next channel in history" +msgstr "nākamais kanāls vēsturē" + +msgid "no" +msgstr "nē" + +msgid "no HDD found" +msgstr "cietais disks nav atrasts" + +msgid "no module found" +msgstr "modulis nav atrasts" + +# ??? +msgid "no standby" +msgstr "nav gaidstāves" + +msgid "no timeout" +msgstr "nav noildzes" + +msgid "none" +msgstr "nē" + +msgid "not locked" +msgstr "nav noenkurojies" + +msgid "not used" +msgstr "neizmantots" + +msgid "nothing connected" +msgstr "nekas nav pievienots" + +msgid "of a DUAL layer medium used." +msgstr "no lietotā DIVSLĀŅU datu nesēja." + +msgid "of a SINGLE layer medium used." +msgstr "no lietotā VIENSLĀŅA datu nesēja." + +msgid "off" +msgstr "izslēgts" + +msgid "on" +msgstr "ieslēgts" + +msgid "on READ ONLY medium." +msgstr "uz TIKAI LASĀMA datu nesēja." + +msgid "once" +msgstr "vienreiz" + +msgid "open nameserver configuration" +msgstr "atvērt vārdu servera konfigurāciju" + +msgid "open servicelist" +msgstr "atvērt kanālu sarakstu" + +msgid "open servicelist(down)" +msgstr "atvērt kanālu sarakstu (lejup)" + +msgid "open servicelist(up)" +msgstr "atvērt kanālu sarakstu (augšup)" + +msgid "open virtual keyboard input help" +msgstr "atvērt virtuālās klaviatūras ievades palīgu" + +msgid "pass" +msgstr "šķērsot" + +msgid "pause" +msgstr "pauze" + +msgid "play entry" +msgstr "atskaņot ierakstu" + +msgid "play from next mark or playlist entry" +msgstr "atskaņot no nākamās iezīmes vai repertuāra ieraksta" + +msgid "play from previous mark or playlist entry" +msgstr "atskaņot no iepriekšējās iezīmes vai repertuāra ieraksta" + +msgid "please press OK when ready" +msgstr "lūdzu spiediet OK, kad esiet gatavs" + +msgid "please wait, loading picture..." +msgstr "lūdzu gaiidiet, ielādē attēlu..." + +msgid "previous channel" +msgstr "iepriekšējais kanāls" + +msgid "previous channel in history" +msgstr "iepriekšējais kanāls vēsturē" + +msgid "record" +msgstr "ierakstīt" + +msgid "recording..." +msgstr "ieraksta..." + +msgid "red" +msgstr "sarkans" + +msgid "remove a nameserver entry" +msgstr "dzēst vārdu servera ierakstu" + +msgid "remove after this position" +msgstr "dzēst aiz šīs pozīcijas" + +msgid "remove all alternatives" +msgstr "dzēst visas alternatīvas" + +msgid "remove all new found flags" +msgstr "dzēst visus 'jaunatrasts' marķējumus" + +msgid "remove before this position" +msgstr "dzēst pirms šīs pozīcijas" + +msgid "remove bookmark" +msgstr "dzēst grāmatzīmi" + +msgid "remove directory" +msgstr "dzēst mapi" + +msgid "remove entry" +msgstr "dzēst ierakstu" + +msgid "remove from parental protection" +msgstr "dzēst no vecāku kontroles" + +msgid "remove new found flag" +msgstr "dzēst 'jaunatrasts' marķējumu" + +msgid "remove selected satellite" +msgstr "dzēst izvēlēto pavadoni" + +msgid "remove this mark" +msgstr "dzēst iezīmi" + +msgid "repeat playlist" +msgstr "atkārtot repertuāru" + +msgid "repeated" +msgstr "atkārtots" + +msgid "rewind to the previous chapter" +msgstr "attīt uz iepriekšējo nodaļu" + +msgid "right" +msgstr "labais" + +msgid "save last directory on exit" +msgstr "saglabāt pēdējo mapi, izejot" + +msgid "save playlist" +msgstr "saglabāt repertuāru" + +msgid "save playlist on exit" +msgstr "saglabāt repertuāru, izejot" + +msgid "scan done!" +msgstr "meklēšana pabeigta!" + +#, python-format +msgid "scan in progress - %d%% done!" +msgstr "notiek meklēšana - %d %% pabeigts!" + +msgid "scan state" +msgstr "meklēšanas statuss" + +msgid "second" +msgstr "sekunde" + +msgid "second cable of motorized LNB" +msgstr "otrs motorizētās LNB kabelis" + +msgid "seconds" +msgstr "sekundes" + +msgid "select" +msgstr "atlasīt" + +msgid "select .NFI flash file" +msgstr "izvēlēties .NFI lādējamo datni" + +msgid "select image from server" +msgstr "izvēlēties imidžu no servera" + +msgid "select interface" +msgstr "izvēlēties interfeisu" + +msgid "select menu entry" +msgstr "izvēlēties izvēlnes ierakstu" + +msgid "select movie" +msgstr "izvēlēties filmu" + +msgid "select the movie path" +msgstr "izvēlēties filmas ceļu" + +msgid "service pin" +msgstr "kanāla PIN" + +msgid "setup pin" +msgstr "iestatnes PIN" + +msgid "show DVD main menu" +msgstr "rādīt galveno DVD izvēlni" + +msgid "show EPG..." +msgstr "rādīt EPG..." + +msgid "show Infoline" +msgstr "rādīt infojoslu" + +msgid "show all" +msgstr "rādīt visu" + +msgid "show alternatives" +msgstr "rādīt alternatīvas" + +msgid "show event details" +msgstr "rādīt notikuma detaļas" + +msgid "show extended description" +msgstr "rādīt paplašināto aprakstu" + +msgid "show first selected tag" +msgstr "rādīt pirmo izvēlēto etiķeti" + +msgid "show second selected tag" +msgstr "rādīt otro izvēlēto etiķeti" + +msgid "show shutdown menu" +msgstr "rādīt izslēgšanas izvēlni" + +msgid "show single service EPG..." +msgstr "rādīt viena kanāla EPG..." + +msgid "show tag menu" +msgstr "rādīt etiķetes izvēlni" + +msgid "show transponder info" +msgstr "rādīt transpondera informāciju" + +msgid "shuffle playlist" +msgstr "jaukts repertuārs" + +msgid "shutdown" +msgstr "izslēgt" + +msgid "simple" +msgstr "vienkāršs" + +msgid "skip backward" +msgstr "pārlēkt atpakaļ" + +msgid "skip backward (enter time)" +msgstr "pārlēkt atpakaļ (ievadīt laiku)" + +msgid "skip forward" +msgstr "pārlēkt uz priekšu" + +msgid "skip forward (enter time)" +msgstr "pārlēkt uz priekšu (ievadīt laiku)" + +msgid "slide picture in loop" +msgstr "slīdrādīt attēlus pa apli" + +msgid "sort by date" +msgstr "kārtot pēc datuma" + +msgid "standard" +msgstr "standarta" + +msgid "standby" +msgstr "gaidstāve" + +msgid "start cut here" +msgstr "sākt griešanu šeit" + +msgid "start directory" +msgstr "sākuma mape" + +msgid "start timeshift" +msgstr "sākt laikaizturi" + +msgid "stereo" +msgstr "stereo" + +msgid "stop PiP" +msgstr "apturēt PiP" + +msgid "stop entry" +msgstr "apturēt ievadi" + +msgid "stop recording" +msgstr "apturēt ierakstu" + +msgid "stop timeshift" +msgstr "apturēt laikaizturi" + +msgid "swap PiP and main picture" +msgstr "mainīt PiP un galveno attēlu" + +msgid "switch to bookmarks" +msgstr "iet uz grāmatzīmēm" + +msgid "switch to filelist" +msgstr "iet uz datņu sarakstu" + +msgid "switch to playlist" +msgstr "iet uz repertuāru" + +msgid "switch to the next angle" +msgstr "iet uz nākamo leņķi" + +msgid "switch to the next audio track" +msgstr "iet uz nākamo skaņas celiņu" + +msgid "switch to the next subtitle language" +msgstr "iet uz nākamo subtitru valodu" + +msgid "template file" +msgstr "šablona datne" + +msgid "textcolor" +msgstr "teksta krāsa" + +msgid "this recording" +msgstr "šis ieraksts" + +msgid "this service is protected by a parental control pin" +msgstr "šis kanāls ir aizsargāts ar vecāku kontroles PIN kodu" + +msgid "toggle a cut mark at the current position" +msgstr "Ie-/iz-slēgt griešanas iezīmi pašreizējā pozīcijā" + +msgid "toggle time, chapter, audio, subtitle info" +msgstr "Ie-/iz-slēgt laiku, nodaļu, skaņu, subtitru informāciju" + +msgid "unconfirmed" +msgstr "neapstiprināts" + +msgid "unknown service" +msgstr "nezināms kanāls" + +msgid "until restart" +msgstr "līdz restartēšanai" + +msgid "user defined" +msgstr "lietotāja definēts" + +msgid "vertical" +msgstr "vertikāli" + +msgid "view extensions..." +msgstr "skatīt paplašinājumus..." + +msgid "view recordings..." +msgstr "skatīt ierakstus..." + +msgid "wait for ci..." +msgstr "gaidiet atbildi no CI..." + +msgid "wait for mmi..." +msgstr "gaidiet atbildi no mmi..." + +msgid "waiting" +msgstr "gaida" + +msgid "weekly" +msgstr "iknedēļas" + +msgid "whitelist" +msgstr "baltais saraksts" + +msgid "working" +msgstr "darbojas" + +msgid "yellow" +msgstr "dzeltens" + +msgid "yes" +msgstr "jā" + +msgid "yes (keep feeds)" +msgstr "jā (paturēt barotnes)" + +msgid "" +"your dreambox might be unusable now. Please consult the manual for further " +"assistance before rebooting your dreambox." +msgstr "" +"Dreambox tagad var būt nelietojams. Lūdzu skatīt lietošanas instrukciju " +"tālākai palīdzībai, pirms atsāknējat Dreambox." + +msgid "zap" +msgstr "pārslēgt" + +msgid "zapped" +msgstr "pārslēgts" + +#~ msgid "" +#~ "\n" +#~ "Enigma2 will restart after the restore" +#~ msgstr "" +#~ "\n" +#~ "Enigma2 restartēsies pēc atjaunošanas" + +#~ msgid "5 seconds" +#~ msgstr "5 sekundes" + +#~ msgid "Autoresolution Settings" +#~ msgstr "Auto izšķirtspējas iestatījumi" + +#~ msgid "Autoresolution..." +#~ msgstr "Auto izšķirtspēja..." + +#~ msgid "Deinterlacer Mode" +#~ msgstr "Pārlecošās izvērses režīms" + +#~ msgid "Enable Autoresolution" +#~ msgstr "Aktivizēt auto izšķirtspēju" + +#~ msgid "Exit network wizard" +#~ msgstr "Iziet no tīkla iestatīšanas vedņa" + +#~ msgid "Input 1" +#~ msgstr "1 ieeja" + +#~ msgid "Input 10" +#~ msgstr "10 ieeja" + +#~ msgid "Input 11" +#~ msgstr "11 ieeja" + +#~ msgid "Input 12" +#~ msgstr "12 ieeja" + +#~ msgid "Input 13" +#~ msgstr "13 ieeja" + +#~ msgid "Input 14" +#~ msgstr "14 ieeja" + +#~ msgid "Input 15" +#~ msgstr "15 ieeja" + +#~ msgid "Input 16" +#~ msgstr "16 ieeja" + +#~ msgid "Input 2" +#~ msgstr "2 ieeja" + +#~ msgid "Input 3" +#~ msgstr "3 ieeja" + +#~ msgid "Input 4" +#~ msgstr "4 ieeja" + +#~ msgid "Input 5" +#~ msgstr "5 ieeja" + +#~ msgid "Input 6" +#~ msgstr "6 ieeja" + +#~ msgid "Input 7" +#~ msgstr "7 ieeja" + +#~ msgid "Input 8" +#~ msgstr "8 ieeja" + +#~ msgid "Input 9" +#~ msgstr "9 ieeja" + +#~ msgid "committed, toneburst" +#~ msgstr "aktīvā, toņsignāls" + +#~ msgid "committed, uncommitted, toneburst" +#~ msgstr "aktīvā, pasīvā, toņsignāls" + +#~ msgid "toneburst, committed" +#~ msgstr "toņsignāls, aktīvā" + +#~ msgid "toneburst, committed, uncommitted" +#~ msgstr "toņsignāls, aktīvā, pasīvā" + +#~ msgid "toneburst, uncommitted, commmitted" +#~ msgstr "toņsignāls, pasīvā, aktīvā" + +#~ msgid "uncommitted, committed, toneburst" +#~ msgstr "pasīvā, aktīvā, toņsignāls" -- cgit v1.2.3 From d4fb39b22f791a7b30e3b3e2077d7410495bb9bb Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 16 Feb 2009 01:43:15 +0100 Subject: update all non-master listboxes when any listbox changes --- lib/python/Components/Converter/StringList.py | 7 +++++++ lib/python/Components/Sources/List.py | 5 +++++ 2 files changed, 12 insertions(+) (limited to 'lib/python') diff --git a/lib/python/Components/Converter/StringList.py b/lib/python/Components/Converter/StringList.py index acbba344..213f08bc 100644 --- a/lib/python/Components/Converter/StringList.py +++ b/lib/python/Components/Converter/StringList.py @@ -18,11 +18,18 @@ class StringList(Converter): def selectionChanged(self, index): self.source.selectionChanged(index) + + def setIndex(self, index): # update all non-master targets for x in self.downstream_elements: if x is not self.master: x.index = index + def getIndex(self, index): + return None + + index = property(getIndex, setIndex) + @cached def getCurrent(self): if self.source is None or self.index is None or self.index >= len(self.source.list): diff --git a/lib/python/Components/Sources/List.py b/lib/python/Components/Sources/List.py index 23b53957..dbe442d1 100644 --- a/lib/python/Components/Sources/List.py +++ b/lib/python/Components/Sources/List.py @@ -40,6 +40,11 @@ to generate HTML.""" if self.disable_callbacks: return + # update all non-master targets + for x in self.downstream_elements: + if x is not self.master: + x.index = index + for x in self.onSelectionChanged: x() -- cgit v1.2.3 From 50e234c05779c9da64c2d825086988706210bbb1 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 16 Feb 2009 16:38:26 +0100 Subject: the current libdreamdvd no more touch policy and aspect.. so its not needed to save and restore this settings --- lib/python/Plugins/Extensions/DVDPlayer/plugin.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py index 421a2b4e..8e2a9f3a 100644 --- a/lib/python/Plugins/Extensions/DVDPlayer/plugin.py +++ b/lib/python/Plugins/Extensions/DVDPlayer/plugin.py @@ -369,9 +369,6 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP self.onFirstExecBegin.append(self.showFileBrowser) self.service = None self.in_menu = False - self.old_aspect = open("/proc/stb/video/aspect", "r").read() - self.old_policy = open("/proc/stb/video/policy", "r").read() - self.old_wss = open("/proc/stb/denc/0/wss", "r").read() def keyNumberGlobal(self, number): print "You pressed number " + str(number) @@ -635,11 +632,6 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP pass def __onClose(self): - for i in (("/proc/stb/video/aspect", self.old_aspect), ("/proc/stb/video/policy", self.old_policy), ("/proc/stb/denc/0/wss", self.old_wss)): - try: - open(i[0], "w").write(i[1]) - except IOError: - print "restore", i[0], "failed" self.restore_infobar_seek_config() self.session.nav.playService(self.oldService) -- cgit v1.2.3 From 167fe9918c3589b263a06c362430e02affda2a5c Mon Sep 17 00:00:00 2001 From: acid-burn Date: Mon, 16 Feb 2009 16:39:16 +0100 Subject: dont show -dbg and -dev packages in packetmanager show softwaremanager on blue button pressed if expert mode enabled some cleanups and better skinning support for Kerni ;-) small speedups in Packetmanager --- .../SystemPlugins/SoftwareManager/plugin.py | 133 +++++++++++---------- 1 file changed, 67 insertions(+), 66 deletions(-) (limited to 'lib/python') diff --git a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py index d8ccd5a5..09b61bd5 100755 --- a/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py +++ b/lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py @@ -299,18 +299,23 @@ class IPKGSource(Screen): print "pressed", number self["text"].number(number) -class PacketList(MenuList): - def __init__(self, list, enableWrapAround=True): - MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) - self.l.setFont(0, gFont("Regular", 22)) - self.l.setFont(1, gFont("Regular", 14)) - self.l.setItemHeight(52) class PacketManager(Screen): skin = """ - - + + + {"template": [ + MultiContentEntryText(pos = (5, 1), size = (440, 28), font=0, flags = RT_HALIGN_LEFT, text = 0), # index 0 is the name + MultiContentEntryText(pos = (5, 26), size = (440, 20), font=1, flags = RT_HALIGN_LEFT, text = 2), # index 2 is the description + MultiContentEntryPixmapAlphaTest(pos = (445, 2), size = (48, 48), png = 4), # index 4 is the status pixmap + MultiContentEntryPixmapAlphaTest(pos = (5, 50), size = (510, 2), png = 5), # index 4 is the div pixmap + ], + "fonts": [gFont("Regular", 22),gFont("Regular", 14)], + "itemHeight": 52 + } + + @@ -331,11 +336,10 @@ class PacketManager(Screen): }, -1) self.list = [] - self["list"] = PacketList(self.list) - self.status = Label() + self.statuslist = [] + self["list"] = List(self.list) self["closetext"] = Label(_("Close")) self["reloadtext"] = Label(_("Reload")) - self["status"] = self.status self.list_updating = True self.packetlist = [] @@ -351,7 +355,6 @@ class PacketManager(Screen): self.ipkg.addCallback(self.ipkgCallback) self.onShown.append(self.setWindowTitle) self.onLayoutFinish.append(self.rebuildList) - #self.onClose.append(self.cleanup) def exit(self): self.ipkg.stop() @@ -361,11 +364,6 @@ class PacketManager(Screen): self.Console.kill(name) self.close() - def cleanup(self): - self.ipkg.stop() - if self.Console is not None: - del self.Console - def reload(self): if (os_path.exists(self.cache_file) == True): remove(self.cache_file) @@ -375,10 +373,21 @@ class PacketManager(Screen): def setWindowTitle(self): self.setTitle(_("Packet manager")) + def setStatus(self,status = None): + if status: + self.statuslist = [] + 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/installable.png")) + self.statuslist.append(( _("Package list update"), '', _("Trying to download a new packetlist. Please wait..." ),'',statuspng, divpng )) + self['list'].setList(self.statuslist) + elif status == 'error': + statuspng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installed.png")) + self.statuslist.append(( _("Error"), '', _("There was an error downloading the packetlist. Please try again." ),'',statuspng, divpng )) + self['list'].setList(self.statuslist) + def rebuildList(self): - self["list"].instance.hide() - self.status.setText(_("Package list update")) - self.status.show() + self.setStatus('update') self.inv_cache = 0 self.vc = valid_cache(self.cache_file, self.cache_ttl) if self.cache_ttl > 0 and self.vc != 0: @@ -391,22 +400,23 @@ class PacketManager(Screen): self.ipkg.startCmd(IpkgComponent.CMD_UPDATE) def go(self, returnValue = None): - cur = self['list'].l.getCurrentSelection() + cur = self["list"].getCurrent() if cur: - returnValue = cur[0] + status = cur[3] + package = cur[0] self.cmdList = [] - if returnValue[3] == 'installed': - self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": returnValue[0] })) + if status == 'installed': + self.cmdList.append((IpkgComponent.CMD_REMOVE, { "package": package })) if len(self.cmdList): - self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n" + returnValue[0] + "\n" + self.oktext)) - elif returnValue[3] == 'upgradeable': - self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + self.session.openWithCallback(self.runRemove, MessageBox, _("Do you want to remove the package:\n" + package + "\n" + self.oktext)) + elif status == 'upgradeable': + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": package })) if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to upgrade the package:\n" + returnValue[0] + "\n" + self.oktext)) - else: - self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": returnValue[0] })) + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to upgrade the package:\n" + package + "\n" + self.oktext)) + elif status == "installable": + self.cmdList.append((IpkgComponent.CMD_INSTALL, { "package": package })) if len(self.cmdList): - self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n" + returnValue[0] + "\n" + self.oktext)) + self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to install the package:\n" + package + "\n" + self.oktext)) def runRemove(self, result): if result: @@ -419,13 +429,12 @@ class PacketManager(Screen): if result is None: return if result is False: - cur = self['list'].l.getCurrentSelection() + cur = self["list"].getCurrent() if cur: - entry = cur[0] - item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = self.buildEntryComponent(entry[0], entry[1], entry[2], 'installable') - self.cachelist[item] = [entry[0], entry[1], entry[2], 'installable'] - self['list'].l.setList(self.list) + item = self['list'].getIndex() + self.list[item] = self.buildEntryComponent(cur[0], cur[1], cur[2], 'installable') + self.cachelist[item] = [cur[0], cur[1], cur[2], 'installable'] + self['list'].setList(self.list) write_cache(self.cache_file, self.cachelist) self.reloadPluginlist() if result: @@ -442,13 +451,12 @@ class PacketManager(Screen): if result is None: return if result is False: - cur = self['list'].l.getCurrentSelection() + cur = self["list"].getCurrent() if cur: - entry = cur[0] - item = self['list'].l.getCurrentSelectionIndex() - self.list[item] = self.buildEntryComponent(entry[0], entry[1], entry[2], 'installed') - self.cachelist[item] = [entry[0], entry[1], entry[2], 'installed'] - self['list'].l.setList(self.list) + item = self['list'].getIndex() + self.list[item] = self.buildEntryComponent(cur[0], cur[1], cur[2], 'installed') + self.cachelist[item] = [cur[0], cur[1], cur[2], 'installed'] + self['list'].setList(self.list) write_cache(self.cache_file, self.cachelist) self.reloadPluginlist() if result: @@ -457,7 +465,7 @@ class PacketManager(Screen): def ipkgCallback(self, event, param): if event == IpkgComponent.EVENT_ERROR: self.list_updating = False - self.status.setText(_("An error occured!")) + self.setStatus('error') elif event == IpkgComponent.EVENT_DONE: if self.list_updating: self.list_updating = False @@ -473,7 +481,8 @@ class PacketManager(Screen): self.packetlist = [] for x in result.splitlines(): split = x.split(' - ') - self.packetlist.append([split[0].strip(), split[1].strip(),split[2].strip()]) + if not (split[0].strip().endswith('-dbg') or split[0].strip().endswith('-dev')): + self.packetlist.append([split[0].strip(), split[1].strip(),split[2].strip()]) if not self.Console: self.Console = Console() cmd = "ipkg list_installed" @@ -484,28 +493,21 @@ class PacketManager(Screen): self.installed_packetlist = {} for x in result.splitlines(): split = x.split(' - ') - self.installed_packetlist[split[0].strip()] = split[1].strip() + if not (split[0].strip().endswith('-dbg') or split[0].strip().endswith('-dev')): + self.installed_packetlist[split[0].strip()] = split[1].strip() self.buildPacketList() - def PacketEntryComponent(self,entry): - res = [ entry ] - res.append(MultiContentEntryText(pos=(5, 1), size=(440, 28), font=0, text= entry[0])) - res.append(MultiContentEntryText(pos=(5, 26), size=(440, 20), font=1, text=entry[2])) - res.append(MultiContentEntryPixmapAlphaTest(pos=(445, 2), size=(48, 48), png = entry[4])) - res.append(MultiContentEntryPixmapAlphaTest(pos=(5, 50), size=(510, 2), png = entry[5])) - return res - def buildEntryComponent(self, name, version, description, state): divpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/div-h.png")) if state == 'installed': installedpng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installed.png")) - return(self.PacketEntryComponent([name, version, description, state, installedpng, divpng])) + return((name, version, description, state, installedpng, divpng)) elif state == 'upgradeable': upgradeablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/upgradeable.png")) - return(self.PacketEntryComponent([name, version, description, state, upgradeablepng, divpng])) + return((name, version, description, state, upgradeablepng, divpng)) else: installablepng = LoadPixmap(cached=True, path=resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SoftwareManager/installable.png")) - return(self.PacketEntryComponent([name, version, description, state, installablepng, divpng])) + return((name, version, description, state, installablepng, divpng)) def buildPacketList(self): self.list = [] @@ -518,9 +520,7 @@ class PacketManager(Screen): if len(self.cachelist) > 0: for x in self.cachelist: self.list.append(self.buildEntryComponent(x[0], x[1], x[2], x[3])) - self['list'].l.setList(self.list) - self["list"].instance.show() - self.status.hide() + self['list'].setList(self.list) except: self.inv_cache = 1 @@ -538,11 +538,10 @@ class PacketManager(Screen): else: status = "installable" self.list.append(self.buildEntryComponent(x[0].strip(), x[1].strip(), x[2].strip(), status)) - self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status]) + if not (x[0].strip().endswith('-dbg') or x[0].strip().endswith('-dev')): + self.cachelist.append([x[0].strip(), x[1].strip(), x[2].strip(), status]) write_cache(self.cache_file, self.cachelist) - self['list'].l.setList(self.list) - self["list"].instance.show() - self.status.hide() + self['list'].setList(self.list) def reloadPluginlist(self): plugins.readPluginList(resolveFilename(SCOPE_PLUGINS)) @@ -730,8 +729,10 @@ def startSetup(menuid): def Plugins(path, **kwargs): global plugin_path plugin_path = path - return [ + list = [ PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), where = PluginDescriptor.WHERE_MENU, fnc=startSetup), - #PluginDescriptor(name=_("Software manager"), description=_("Manage your receiver's software"), icon="update.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=UpgradeMain), 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)) + return list -- cgit v1.2.3 From 287de8ce0c2238666fc534a0a58cba7e042f8df3 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 16 Feb 2009 18:08:39 +0100 Subject: fix ConfigNone this fixes the endless bootloop with dm800 --- lib/python/Components/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/python') diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py index a813d3ca..a6d34152 100755 --- a/lib/python/Components/config.py +++ b/lib/python/Components/config.py @@ -1385,7 +1385,7 @@ class ConfigLocations(ConfigElement): # nothing. class ConfigNothing(ConfigSelection): def __init__(self): - ConfigSelection.__init__(self, choices = [""]) + ConfigSelection.__init__(self, choices = [("","")]) # until here, 'saved_value' always had to be a *string*. # now, in ConfigSubsection, and only there, saved_value -- cgit v1.2.3