Merge commit 'origin/master' into tmbinc/FixTimingBugs
authorFelix Domke <tmbinc@elitedvb.net>
Tue, 31 Mar 2009 13:51:31 +0000 (15:51 +0200)
committerFelix Domke <tmbinc@elitedvb.net>
Tue, 31 Mar 2009 13:51:31 +0000 (15:51 +0200)
162 files changed:
RecordTimer.py
configure.ac
data/encoding.conf
data/keymap.xml
data/menu.xml
data/setup.xml
data/skin_default.xml
doc/FILEFORMAT
keymapparser.py
lib/base/buffer.cpp
lib/base/eerror.cpp
lib/base/encoding.cpp
lib/base/estring.cpp
lib/base/estring.h
lib/base/filepush.cpp
lib/driver/misc_options.cpp
lib/dvb/db.cpp
lib/dvb/db.h
lib/dvb/dvb.cpp
lib/dvb/dvbtime.cpp
lib/dvb/dvbtime.h
lib/dvb/frontend.cpp
lib/dvb/idvb.h
lib/dvb/scan.cpp
lib/dvb/scan.h
lib/dvb/sec.cpp
lib/dvb/sec.h
lib/dvb/subtitle.cpp
lib/dvb/subtitle.h
lib/dvb/teletext.cpp
lib/dvb/teletext.h
lib/dvb_ci/dvbci.cpp
lib/dvb_ci/dvbci.h
lib/dvb_ci/dvbci_ui.cpp
lib/dvb_ci/dvbci_ui.h
lib/gdi/accel.cpp
lib/gdi/font.cpp
lib/gdi/gpixmap.cpp
lib/gui/elistboxcontent.cpp
lib/gui/elistboxcontent.h
lib/gui/esubtitle.cpp
lib/gui/esubtitle.h
lib/python/Components/AVSwitch.py
lib/python/Components/Converter/FrontendInfo.py
lib/python/Components/Converter/RdsInfo.py
lib/python/Components/Converter/ServiceInfo.py
lib/python/Components/Converter/ServiceName.py
lib/python/Components/Converter/ServicePosition.py
lib/python/Components/Converter/ServiceTime.py
lib/python/Components/Converter/Streaming.py
lib/python/Components/Converter/StringList.py
lib/python/Components/DreamInfoHandler.py
lib/python/Components/Element.py
lib/python/Components/EpgList.py
lib/python/Components/Harddisk.py
lib/python/Components/HelpMenuList.py
lib/python/Components/Language.py
lib/python/Components/MediaPlayer.py
lib/python/Components/Network.py
lib/python/Components/NimManager.py
lib/python/Components/ParentalControl.py
lib/python/Components/ParentalControlList.py
lib/python/Components/PluginComponent.py
lib/python/Components/PluginList.py
lib/python/Components/Renderer/FrontpanelLed.py
lib/python/Components/Renderer/Picon.py
lib/python/Components/Scanner.py
lib/python/Components/SelectionList.py
lib/python/Components/Sources/List.py
lib/python/Components/Sources/RdsDecoder.py
lib/python/Components/TimerList.py
lib/python/Components/TimerSanityCheck.py
lib/python/Components/Timezones.py
lib/python/Components/TuneTest.py
lib/python/Components/config.py
lib/python/Plugins/Extensions/CutListEditor/keymap.xml
lib/python/Plugins/Extensions/CutListEditor/plugin.py
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/DVDBurn/ProjectSettings.py
lib/python/Plugins/Extensions/DVDBurn/TitleList.py
lib/python/Plugins/Extensions/DVDBurn/TitleProperties.py
lib/python/Plugins/Extensions/DVDBurn/plugin.py
lib/python/Plugins/Extensions/DVDPlayer/plugin.py
lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp
lib/python/Plugins/Extensions/FileManager/plugin.py
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Plugins/Extensions/MediaScanner/plugin.py
lib/python/Plugins/Extensions/PicturePlayer/plugin.py
lib/python/Plugins/Extensions/SocketMMI/plugin.py
lib/python/Plugins/Plugin.py [changed mode: 0644->0755]
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/LICENSE [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/Makefile.am [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/__init__.py [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/DiseqcTester/plugin.py
lib/python/Plugins/SystemPlugins/Makefile.am
lib/python/Plugins/SystemPlugins/SatelliteEquipmentControl/plugin.py
lib/python/Plugins/SystemPlugins/SoftwareManager/BackupRestore.py
lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py
lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py
lib/python/Plugins/SystemPlugins/Videomode/VideoWizard.py
lib/python/Plugins/SystemPlugins/Videomode/plugin.py
lib/python/Plugins/SystemPlugins/Videomode/videowizard.xml
lib/python/Screens/About.py
lib/python/Screens/ChannelSelection.py
lib/python/Screens/ChoiceBox.py
lib/python/Screens/Ci.py
lib/python/Screens/Console.py
lib/python/Screens/DefaultWizard.py
lib/python/Screens/EpgSelection.py
lib/python/Screens/EventView.py
lib/python/Screens/HarddiskSetup.py
lib/python/Screens/HelpMenu.py
lib/python/Screens/InfoBar.py
lib/python/Screens/InfoBarGenerics.py
lib/python/Screens/LanguageSelection.py
lib/python/Screens/LocationBox.py
lib/python/Screens/Menu.py
lib/python/Screens/MessageBox.py
lib/python/Screens/MovieSelection.py
lib/python/Screens/Mute.py
lib/python/Screens/NetworkSetup.py
lib/python/Screens/NumericalTextInputHelpDialog.py
lib/python/Screens/PVRState.py
lib/python/Screens/ParentalControlSetup.py
lib/python/Screens/PluginBrowser.py
lib/python/Screens/Rc.py
lib/python/Screens/Satconfig.py
lib/python/Screens/ServiceInfo.py
lib/python/Screens/Setup.py
lib/python/Screens/Standby.py
lib/python/Screens/SubservicesQuickzap.py
lib/python/Screens/SubtitleDisplay.py
lib/python/Screens/Subtitles.py
lib/python/Screens/TaskView.py
lib/python/Screens/TimeDateInput.py
lib/python/Screens/TimerEdit.py
lib/python/Screens/TimerEntry.py
lib/python/Screens/TimerSelection.py
lib/python/Screens/VirtualKeyBoard.py
lib/python/Screens/Wizard.py
lib/python/Screens/WizardLanguage.py
lib/python/Tools/DreamboxHardware.py
lib/python/Tools/NumericalTextInput.py
lib/service/event.cpp
lib/service/servicedvb.cpp
lib/service/servicemp3.cpp
mytest.py
po/da.po
po/de.po [changed mode: 0755->0644]
po/enigma2.pot
po/es.po
po/it.po
po/lt.po
po/lv.po
po/nl.po
po/pl.po
po/ru.po [changed mode: 0755->0644]
po/sv.po
po/tr.po
skin.py
timer.py

index aeff9d05f2220e3003ad919348ac24d57f6e8cd1..9f3b2ffbea0a555de2348ddfe74c7c2f4e48d806 100644 (file)
@@ -63,7 +63,7 @@ class RecordTimerEntry(timer.TimerEntry, object):
                if event == iRecordableService.evEnd:
                        print "RecordTimer.staticGotRecordEvent(iRecordableService.evEnd)"
                        recordings = NavigationInstance.instance.getRecordings()
-                       if not len(recordings): # no more recordings exist
+                       if not recordings: # no more recordings exist
                                rec_time = NavigationInstance.instance.RecordTimer.getNextRecordingTime()
                                if rec_time > 0 and (rec_time - time.time()) < 360:
                                        print "another recording starts in", rec_time - time.time(), "seconds... do not shutdown yet"
index b94272d94e674b3c0d9175e980e952cac4c6ba9a..cb0ace7fa809c9c83cb09373fb125b06bc7c650b 100755 (executable)
@@ -45,9 +45,14 @@ AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
 JPEG_LIBS="-ljpeg"
 AC_SUBST(JPEG_LIBS)
 
-AC_CHECK_LIB(ungif, DGifOpenFileName, HAVE_LIBUNGIF="yes", HAVE_LIBUNGIF="no")
-LIBUNGIF_LIBS="-lungif"
-AC_SUBST(LIBUNGIF_LIBS)
+AC_SUBST(LIBUNGIF_LIBS,"")
+AC_CHECK_HEADERS(gif_lib.h,
+       AC_CHECK_LIB(ungif,DGifOpen,
+       [AC_DEFINE(HAVE_LIBUNGIF,1,[Define if you have libgif/libungif including devel headers])
+               LIBUNGIF_LIBS="-lungif"],
+               [AC_CHECK_LIB(gif,DGifOpen,
+                       [AC_DEFINE(HAVE_LIUNBGIF,1)
+                       LIBUNGIF_LIBS="-lgif"])]))
 
 TUXBOX_APPS_LIB_PKGCONFIG(XML2,libxml-2.0)
 
@@ -120,6 +125,7 @@ lib/python/Plugins/SystemPlugins/SatelliteEquipmentControl/Makefile
 lib/python/Plugins/SystemPlugins/Videomode/Makefile
 lib/python/Plugins/SystemPlugins/VideoTune/Makefile
 lib/python/Plugins/SystemPlugins/DiseqcTester/Makefile
+lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/Makefile
 lib/python/Plugins/DemoPlugins/Makefile
 lib/python/Plugins/DemoPlugins/TestPlugin/Makefile
 lib/python/Plugins/Extensions/Makefile
index 07c6b8a174e5e3d293a70b86481ed462bb8b7131..d9d115e0cd95ea016edbb8ddb873a7c67a6b4cd7 100644 (file)
@@ -13,6 +13,8 @@ bul ISO8859-5
 0x4ff 0x1
 0x407 0x1
 0xbc6 0x3 #ASTRA 23.5° Cslink, Skylink
+0xc85 0x3
+0xc89 0x3
 0xc8f 0x3
 0xbc7 0x3
 0x436 0x1 #ASTRA 19.2° MTV Euro - MTV Networks
@@ -22,7 +24,11 @@ bul ISO8859-5
 12200 318
 1500 318
 400 318
-0x5dc 0x13e
+13000 318
+12800 318
+11400 318
+1000 318
+7400 318
 #Fallback encoding table for following transponders
 #TSID ONID ISO8859-X
 #0x447 0x1 ISO8859-9
index 264afccf78a6176fe76bd3d41089238315be96c5..0865e4169933ae9d20faf11f3e66c4a69e32e14b 100644 (file)
                <key id="KEY_MENU" mapto="input_date_time" flags="m" />
                <key id="KEY_CHANNELUP" mapto="nextBouquet" flags="m" />
                <key id="KEY_CHANNELDOWN" mapto="prevBouquet" flags="m" />
+               <key id="KEY_NEXT" mapto="nextService" flags="m" />
+               <key id="KEY_PREVIOUS" mapto="prevService" flags="m" />
        </map>
 
        <map context="EventViewActions">
index 56b3ee651c78e751aed6a5a0e3a1b1078379fb7f..86000531ed07fd2fce1257b7812be42a4b9b579e 100644 (file)
@@ -35,7 +35,7 @@
                                <item text="Add to Bouquets"></item>
                                <item text="Edit Bouquets"></item>
                        </menu>-->
-                       <menu level="0" text="Service Searching" entryID="service_searching_selection">
+                       <menu weight="0" level="0" text="Service Searching" entryID="service_searching_selection">
                                <id val="scan" />
                                <item text="Tuner configuration" entryID="tuner_setup"><screen module="Satconfig" screen="NimSelection" /></item>
                                <item text="Default services lists" entryID="default_lists"><screen module="ScanSetup" screen="DefaultSatLists" /></item>
@@ -46,7 +46,7 @@
                                <item text="Edit Transponder"></item>
                                <item text="Satfinder"></item>-->
                        </menu>
-                       <menu level="0" text="System" entryID="system_selection">
+                       <menu weight="5" level="0" text="System" entryID="system_selection">
                                <id val="system" />
                                <item level="0" text="Language..." entryID="language_setup"><screen module="LanguageSelection" /></item>
                                <item level="0" entryID="usage_setup"><setup id="usage" /></item>
                                </menu>-->
                                <item level="2" text="Timeshift path..." entryId="timeshift_path"><screen module="LocationBox" screen="TimeshiftLocationBox" /></item>
                        </menu>
-                       <item level="1" text="Common Interface" entryID="ci_setup" requires="CommonInterface"><screen module="Ci" screen="CiSelection" /></item>
-                       <item level="0" text="Parental control" entryID="parental_setup"><screen module="ParentalControlSetup" screen="ParentalControlSetup" /></item>
+                       <item weight="10" level="1" text="Common Interface" entryID="ci_setup" requires="CommonInterface"><screen module="Ci" screen="CiSelection" /></item>
+                       <item weight="15" level="0" text="Parental control" entryID="parental_setup"><screen module="ParentalControlSetup" screen="ParentalControlSetup" /></item>
                        <!--item level="0" text="Startwizard" entryID="startwizzard"><screen module="StartWizard" screen="StartWizard" /></item-->
-                       <item level="0" text="Default settings" entryID="default_wizard">
+                       <item weight="20" level="0" text="Default settings" entryID="default_wizard">
                                <code>
 from Screens.DefaultWizard import DefaultWizard
 self.session.open(DefaultWizard, silent = False)
 </code>
                        </item>
-                       <item level="0" text="Factory reset" entryID="factory_reset">
+                       <item weight="25" level="0" text="Factory reset" entryID="factory_reset">
                                <code>
 from Screens.FactoryReset import FactoryReset
 def msgClosed(ret):
index e2ab09b1133c251dce968305d30cbd56a1d4d8ee..17301f23d3b28b630fba3d247c7bc2605af0499b 100644 (file)
@@ -13,6 +13,8 @@
                        <item level="0" text="TV System">config.av.tvsystem</item>
                        <item level="1" text="WSS on 4:3">config.av.wss</item>
                        <item level="1" text="AC3 default">config.av.defaultac3</item>
+                       <item level="1" text="General AC3 delay">config.av.generalAC3delay</item>
+                       <item level="1" text="General PCM delay">config.av.generalPCMdelay</item>
                        <item level="1" text="AC3 downmix" requires="CanDownmixAC3">config.av.downmix_ac3</item>
                        <item level="1" text="Auto scart switching" requires="ScartSwitch">config.av.vcrswitch</item>
                </setup>
index f99e1a76caecc3ccdaf06a8cfa436aecfe0d5053..67f8d16349ad33173ff5a879f2ccf609359a75c5 100755 (executable)
@@ -172,9 +172,9 @@ self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)
                <widget name="bottom" position="10,230" size="430,25" font="Regular;23" />
        </screen>
        <!-- Common interface - selection -->
-       <screen name="CiSelection" position="140,226" size="440,160" title="Common Interface">
+       <screen name="CiSelection" position="140,226" size="440,185" title="Common Interface">
                <widget name="text" position="10,10" size="430,25" font="Regular;23" />
-               <widget name="entries" position="10,55" size="420,100" scrollbarMode="showOnDemand" />
+               <widget name="entries" position="10,55" size="420,125" scrollbarMode="showOnDemand" />
        </screen>
        <!-- Console -->
        <screen name="Console" position="90,95" size="560,430" title="Command execution...">
@@ -448,7 +448,7 @@ self.instance.move(ePoint((720-wsizex)/2, (576-wsizey)/(count &gt; 7 and 2 or 3)
                <widget name="PositionGauge" position="15,138" size="396,10" pointer="skin_default/position_pointer.png:540,0" seek_pointer="skin_default/position_pointer.png:540,0" transparent="1" />
                <widget name="repeat" pixmaps="skin_default/icons/repeat_off.png,skin_default/icons/repeat_on.png" position="416,135" size="22,15" transparent="1" alphatest="on"/>
                <widget name="filelist" position="15,163" size="550,138" scrollbarMode="showOnDemand" />
-               <widget name="playlist" position="15,314" size="550,154" scrollbarMode="showOnDemand" selectionDisabled="1" />
+               <widget name="playlist" position="15,322" size="550,138" scrollbarMode="showOnDemand" selectionDisabled="1" />
                <widget name="currenttext" position="0,0" size="0,0" />
                <widget name="titletext" position="0,0" size="0,0" />
        </screen>
@@ -913,10 +913,6 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
                <widget name="arrowup" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
                <widget name="arrowup2" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
        </screen>
-       <!-- Subservice selection -->
-       <screen name="SubserviceSelection" position="210,163" size="300,255" title="Subservices">
-               <widget name="subservices" position="20,10" size="260,230" scrollbarMode="showOnDemand" />
-       </screen>
        <!-- Subservice quickzap -->
        <screen name="SubservicesQuickzap" position="124,470" size="512,200" title="Subservices" backgroundColor="transparent" flags="wfNoBorder">
                <widget source="session.RecordState" render="Pixmap" pixmap="skin_default/icons/record.png" position="450,0" zPosition="2" size="14,14" alphatest="on" >
index 4f550871bf24630ea76f9b477c938253e1d07492..66e9598c47279f534156a450eb057ec4ec0c7c94 100644 (file)
@@ -6,12 +6,15 @@ They don't have a private header.
 
 == .meta FILES ==
 
-.meta files have currently 4 lines:
+.meta files have currently up to 7 lines:
 
 <service reference>
 <name>
 <description>
 <recording time>
+[<tags>]
+[<length>]
+[<filesize>]
 
 The service reference contains the Service-ID of the recorded service. With
 that ID, you can find the PMT and the elementary streams.
@@ -20,6 +23,12 @@ As a backup method, just find the first available PMT and use that.
 
 Strings are always UTF-8 encoded.
 
+tags is a space-delimited list of tags assigned to this movie.
+
+length is the length of the recording, in PTS-units (1/90000s). filesize was
+the filesize at the time the length was calculated, so you can validate if
+this is still up-to-date or must be recalculated.
+
 == .ap FILES ==
 
 Stored offsets and PTS values. They are collected while recording. Only 
index 63bca0f9a0f4aee02922a0b93f04fb7ac2f31f24..0e544e94b5ef88fdf0f9c357c9e367a17e2003b0 100644 (file)
@@ -8,10 +8,10 @@ from Tools.KeyBindings import addKeyBinding
 
 class KeymapError(Exception):
     def __init__(self, message):
-        self.message = message
+        self.msg = message
 
     def __str__(self):
-        return self.message
+        return self.msg
 
 def parseKeys(context, filename, actionmap, device, keys):
        for x in keys.findall("key"):
index 3a0a6a3db239239345c3b109165ef8210d821322..5dfdfad5d6c8c65fa1f15f7d0e5710ba830230a2 100644 (file)
@@ -1,8 +1,9 @@
 #include <lib/base/buffer.h>
 #include <lib/base/eerror.h>
-#include <stdio.h>
+#include <cerrno>
+#include <cstdio>
+#include <cstring>
 #include <unistd.h>
-#include <errno.h>
 
 void eIOBuffer::removeblock()
 {
index 4c4d6551affb77f71c3d7f2337cea520c133c1e2..35e46e05d4199d38190202573e48c601e7f509fa 100644 (file)
@@ -1,8 +1,9 @@
 #include <lib/base/eerror.h>
 #include <lib/base/elock.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
 #include <unistd.h>
 
 #include <string>
index 5d6617d998d49b3ff222f6bdd8ed71876a1fa688..45fea10249c1c4206e1b5375df5ba5b61cc4ef01 100644 (file)
@@ -1,3 +1,4 @@
+#include <cstdlib>
 #include <lib/base/encoding.h>
 #include <lib/base/eerror.h>
 
index 5d15ddce01234b3e3a70d8cfeb90d42352e1ab28..dcba7705d7bc45d3ba8fe56519bbac8942fee86d 100644 (file)
@@ -1,6 +1,7 @@
+#include <algorithm>
+#include <cctype>
+#include <climits>
 #include <string>
-#include <ctype.h>
-#include <limits.h>
 #include <lib/base/eerror.h>
 #include <lib/base/encoding.h>
 #include <lib/base/estring.h>
@@ -633,3 +634,12 @@ void makeUpper(std::string &s)
 {
        std::transform(s.begin(), s.end(), s.begin(), (int(*)(int)) toupper);
 }
+
+std::string replace_all(const std::string &in, const std::string &entity, const std::string &symbol)
+{
+       std::string out = in;
+       std::string::size_type loc = 0;
+       while (( loc = out.find(entity, loc)) != std::string::npos )
+       out.replace(loc, entity.length(), symbol);
+       return out;
+}
index 68e0970f410a657ce81c78e51bf3470f4e3c132a..d61489ebe34dcc00047e355cbda3e4d7172e94d2 100644 (file)
@@ -18,6 +18,7 @@ int isUTF8(const std::string &string);
 
 std::string removeDVBChars(const std::string &s);
 void makeUpper(std::string &s);
+std::string replace_all(const std::string &in, const std::string &entity, const std::string &symbol);
 
 inline std::string convertDVBUTF8(const std::string &string, int table=0, int tsidonid=0) // with default ISO8859-1/Latin1
 {
index e99e956c2a4a2cd0b3df5df7f0cb47796a74cfcb..b81aec5c8929133a325173f9f01c0161104ac0bd 100644 (file)
@@ -189,9 +189,13 @@ void eFilePushThread::thread()
                        if (m_send_pvr_commit && !already_empty)
                        {
                                eDebug("sending PVR commit");
+                               
+                               struct pollfd pfd[1] = {m_fd_dest, POLLHUP};
+                               poll(pfd, 1, 10000);
+                               sleep(5); /* HACK to allow ES buffer to drain */
                                already_empty = 1;
-                               if (::ioctl(m_fd_dest, PVR_COMMIT) < 0 && errno == EINTR)
-                                       continue;
+//                             if (::ioctl(m_fd_dest, PVR_COMMIT) < 0 && errno == EINTR)
+//                                     continue;
                                eDebug("commit done");
                                                /* well check again */
                                continue;
index c567878c7789773bf0984d266642b9a4ed7a868b..43e6dad30018a8562611e76730c37d497c277ff4 100644 (file)
@@ -1,3 +1,4 @@
+#include <cstring>
 #include <lib/driver/misc_options.h>
 
 #include <unistd.h>
index e6108ab58c0ba61c2a959d24d2bc87eb1faacae8..e4d9ad228e6d8139ca3911e4fa9bf075a4329459 100644 (file)
@@ -839,7 +839,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
                        PyDict_SetItem(tp_dict, sat_pos, tplist);
                        for (ElementConstIterator it(sat_elements.begin()); it != sat_elements.end(); ++it)
                        {
-//                             eDebug("\telement: %s", (*it)->name().c_str());
+                               //eDebug("\telement: %s", (*it)->name().c_str());
                                const AttributeList &tp_attributes = (*it)->getAttributeList();
                                AttributeConstIterator end = tp_attributes.end();
                                modulation = eDVBFrontendParametersSatellite::Modulation_QPSK;
@@ -856,8 +856,8 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
 
                                for (AttributeConstIterator it(tp_attributes.begin()); it != end; ++it)
                                {
-                                       //eDebug("\t\tattr: %s", at->name().c_str());
                                        at = *it;
+                                       //eDebug("\t\tattr: %s", at->name().c_str());
                                        name = at->name();
                                        if (name == "modulation") dest = &modulation;
                                        else if (name == "system") dest = &system;
@@ -872,6 +872,7 @@ PyObject *eDVBDB::readSatellites(ePyObject sat_list, ePyObject sat_dict, ePyObje
                                        else if (name == "onid") dest = &onid;
                                        if (dest)
                                        {
+                                               //eDebug("\t\t\tvalue: %s", at->value().c_str());
                                                tmp = strtol(at->value().c_str(), &end_ptr, 10);
                                                if (!*end_ptr)
                                                        *dest = tmp;
@@ -1201,15 +1202,17 @@ RESULT eDVBDB::removeServices(eDVBChannelID chid, unsigned int orbpos)
                        if ((unsigned int)sat.orbital_position != orbpos)
                                remove=false;
                }
-               if ( remove && chid.dvbnamespace != eNs )
+               if ( remove && chid.dvbnamespace != eNs ) // namespace given?
                {
-                       if (system == iDVBFrontend::feCable && chid.dvbnamespace.get() == (int)0xFFFF0000)
+                       if ( system == iDVBFrontend::feCable && chid.dvbnamespace.get() == (int)0xFFFF0000 )
                                ;
-                       else if (system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == (int)0xEEEE0000)
+                       else if ( system == iDVBFrontend::feTerrestrial && chid.dvbnamespace.get() == (int)0xEEEE0000 )
                                ;
                        else if ( chid.dvbnamespace != ch.dvbnamespace )
                                remove=false;
                }
+               else if ( system == iDVBFrontend::feCable || system == iDVBFrontend::feTerrestrial )
+                       remove=false;
                if ( remove && chid.original_network_id != eOnid && chid.original_network_id != ch.original_network_id )
                        remove=false;
                if ( remove && chid.transport_stream_id != eTsid && chid.transport_stream_id != ch.transport_stream_id )
index 55e008fb0a7826c850f5d2eaedfe11f7861a5fe4..11fb1ab16420269fc1c6de40d48a43aa57dc8ffc 100644 (file)
@@ -51,11 +51,11 @@ public:
 
        RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr<iDVBFrontendParameters> &parm);
        
-       RESULT addService(const eServiceReferenceDVB &service, eDVBService *service);
+       RESULT addService(const eServiceReferenceDVB &referenc, eDVBService *service);
        RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service);
        RESULT flush();
 
-       RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source);
+       RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *q, const eServiceReference &source);
 
        RESULT getBouquet(const eServiceReference &ref, eBouquet* &bouquet);
 //////
index 4bbed519326b36d4c72376fab41ef0bd5b5902f8..1c4eef8aa92bf2b065e8d853c87a7cf5bf5b8e46 100644 (file)
@@ -1026,11 +1026,6 @@ int eDVBChannelFilePush::filterRecordData(const unsigned char *_data, int len, s
 
                                        fts += 188;
                                }
-                                               /* force payload only */
-                               ts[3] &= ~0x30;
-                               ts[3] |=  0x10;
-
-//                             memset(ts + 4, 0xFF, (offset % 188) - 4);
 
                                m_iframe_state = 1;
                        }
index d879cface8b8c73204c03fb341fbadd4f458c327..a6830dc06aea6f37ee5e4c1d9cb23e1df9645f67 100644 (file)
@@ -20,7 +20,7 @@ void setRTC(time_t time)
        FILE *f = fopen("/proc/stb/fp/rtc", "w");
        if (f)
        {
-               if (fprintf(f, "%u", time))
+               if (fprintf(f, "%u", (unsigned int)time))
                        prev_time = time;
                else
                        eDebug("write /proc/stb/fp/rtc failed (%m)");
@@ -47,8 +47,11 @@ time_t getRTC()
        if (f)
        {
                // sanity check to detect corrupt atmel firmware
-               if (fscanf(f, "%u", &rtc_time) != 1)
+               unsigned int tmp;
+               if (fscanf(f, "%u", &tmp) != 1)
                        eDebug("read /proc/stb/fp/rtc failed (%m)");
+               else
+                       rtc_time=tmp;
                fclose(f);
        }
        else
@@ -145,7 +148,7 @@ eDVBLocalTimeHandler *eDVBLocalTimeHandler::instance;
 DEFINE_REF(eDVBLocalTimeHandler);
 
 eDVBLocalTimeHandler::eDVBLocalTimeHandler()
-       :m_time_ready(false), m_updateNonTunedTimer(eTimer::create(eApp))
+       :m_use_dvb_time(false), m_updateNonTunedTimer(eTimer::create(eApp)), m_time_ready(false)
 {
        if ( !instance )
                instance=this;
@@ -214,6 +217,33 @@ void eDVBLocalTimeHandler::writeTimeOffsetData( const char* filename )
        }
 }
 
+void eDVBLocalTimeHandler::setUseDVBTime(bool b)
+{
+       if (m_use_dvb_time != b) {
+               if (m_use_dvb_time) {
+                       eDebug("[eDVBLocalTimeHandler] disable sync local time with transponder time!");
+                       std::map<iDVBChannel*, channel_data>::iterator it =
+                               m_knownChannels.begin();
+                       for (; it != m_knownChannels.end(); ++it) {
+                               if (it->second.m_prevChannelState == iDVBChannel::state_ok)
+                                       it->second.tdt = 0;
+                       }
+               }
+               else {
+                       eDebug("[eDVBLocalTimeHandler] enable sync local time with transponder time!");
+                       std::map<iDVBChannel*, channel_data>::iterator it =
+                               m_knownChannels.begin();
+                       for (; it != m_knownChannels.end(); ++it) {
+                               if (it->second.m_prevChannelState == iDVBChannel::state_ok) {
+                                       it->second.tdt = new TDT(it->second.channel);
+                                       it->second.tdt->start();
+                               }
+                       }
+               }
+               m_use_dvb_time = b;
+       }
+}
+
 void eDVBLocalTimeHandler::updateNonTuned()
 {
        updateTime(-1, 0, 0);
@@ -440,8 +470,10 @@ void eDVBLocalTimeHandler::DVBChannelStateChanged(iDVBChannel *chan)
                                case iDVBChannel::state_ok:
                                        eDebug("[eDVBLocalTimerHandler] channel %p running", chan);
                                        m_updateNonTunedTimer->stop();
-                                       it->second.tdt = new TDT(it->second.channel);
-                                       it->second.tdt->start();
+                                       if (m_use_dvb_time) {
+                                               it->second.tdt = new TDT(it->second.channel);
+                                               it->second.tdt->start();
+                                       }
                                        break;
                                case iDVBChannel::state_release:
                                        eDebug("[eDVBLocalTimerHandler] remove channel %p", chan);
index 3f8d9b7dec1204bcdcde8473739741f816e82e1f..3afff75e0d522abe799224ff70277a89e760bab1 100644 (file)
@@ -54,6 +54,7 @@ class eDVBLocalTimeHandler: public Object
                ePtr<eConnection> m_stateChangedConn;
                int m_prevChannelState;
        };
+       bool m_use_dvb_time;
        ePtr<eTimer> m_updateNonTunedTimer;
        friend class TDT;
        std::map<iDVBChannel*, channel_data> m_knownChannels;
@@ -78,6 +79,8 @@ public:
        eDVBLocalTimeHandler();
        ~eDVBLocalTimeHandler();
 #endif
+       bool getUseDVBTime() { return m_use_dvb_time; }
+       void setUseDVBTime(bool b);
        PSignal0<void> m_timeUpdated;
        bool ready() const { return m_time_ready; }
        static eDVBLocalTimeHandler *getInstance() { return instance; }
index 5df179314eb212377785cbccac8d97873158183d..f2fc12b318889a51c1657a9a9f0b537183e8675e 100644 (file)
@@ -858,6 +858,8 @@ int eDVBFrontend::readFrontendData(int type)
                                if (snr != 0)
                                        ret = 10 * (int)(-100 * (log10(snr) - log10(255)));
                        }
+                       else if (!strcmp(m_description, "BCM4506"))
+                               ret = (snr * 100) >> 8;
 
                        if (type == signalQuality)
                        {
index cfa98ecf1d960aea4a84d2b117a20c3acae71d19..26ab5e533e8cc4158fb6290f2af5343c56ca0c04 100644 (file)
@@ -385,13 +385,13 @@ public:
        
        virtual RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr<iDVBFrontendParameters> &parm)=0;
        
-       virtual RESULT addService(const eServiceReferenceDVB &service, eDVBService *service)=0;
+       virtual RESULT addService(const eServiceReferenceDVB &reference, eDVBService *service)=0;
        virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service)=0;
        virtual RESULT flush()=0;
 
        virtual RESULT getBouquet(const eServiceReference &ref,  eBouquet* &bouquet)=0;
 
-       virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source)=0;
+       virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *q, const eServiceReference &source)=0;
 };
 
 #endif  // SWIG
index 76c7101157a78cbaffef8f365d0a8c4f24d2c546..379ab8e9a01b56924486e70cc370d4c9b1f2c57a 100644 (file)
@@ -740,11 +740,20 @@ void eDVBScan::channelDone()
                                }
                                case iDVBFrontend::feTerrestrial:
                                {
+                                       ePtr<iDVBFrontend> fe;
                                        eDVBFrontendParametersTerrestrial parm;
                                        m_ch_current->getDVBT(parm);
                                        snprintf(sname, 255, "%d SID 0x%02x",
                                                parm.frequency/1000,
                                                m_pmt_in_progress->first);
+                                       if (!m_channel->getFrontend(fe))
+                                       {
+                                               ePyObject tp_dict = PyDict_New();
+                                               fe->getTransponderData(tp_dict, false);
+                                               m_corrected_frequencys[m_chid_current] =
+                                                       PyInt_AsLong(PyDict_GetItemString(tp_dict, "frequency"));
+                                               Py_DECREF(tp_dict);
+                                       }
                                        break;
                                }
                                case iDVBFrontend::feCable:
@@ -765,7 +774,8 @@ void eDVBScan::channelDone()
 
                if (!(m_flags & scanOnlyFree) || !m_pmt_in_progress->second.scrambled) {
                        SCAN_eDebug("add not scrambled!");
-                       std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i = m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
+                       std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i =
+                               m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
                        if (i.second)
                        {
                                m_last_service = i.first;
@@ -922,6 +932,24 @@ void eDVBScan::insertInto(iDVBChannelList *db, bool dontRemoveOldFlags)
        for (std::map<eDVBChannelID, ePtr<iDVBFrontendParameters> >::const_iterator 
                        ch(m_new_channels.begin()); ch != m_new_channels.end(); ++ch)
        {
+               int system;
+               ch->second->getSystem(system);
+               if (system == iDVBFrontend::feTerrestrial)
+               {
+                       std::map<eDVBChannelID, unsigned int>::iterator it = m_corrected_frequencys.find(ch->first);
+                       if (it != m_corrected_frequencys.end())
+                       {
+                               eDVBFrontendParameters *p = (eDVBFrontendParameters*)&(*ch->second);
+                               eDVBFrontendParametersTerrestrial parm;
+                               p->getDVBT(parm);
+                               eDebug("corrected freq for tsid %04x, onid %04x, ns %08x is %d, old was %d",
+                                       ch->first.transport_stream_id.get(), ch->first.original_network_id.get(),
+                                       ch->first.dvbnamespace.get(), it->second, parm.frequency);
+                               parm.frequency = it->second;
+                               p->setDVBT(parm);
+                               m_corrected_frequencys.erase(it);
+                       }
+               }
                if (m_flags & scanOnlyFree)
                {
                        eDVBFrontendParameters *ptr = (eDVBFrontendParameters*)&(*ch->second);
@@ -1036,7 +1064,8 @@ RESULT eDVBScan::processSDT(eDVBNamespace dvbnamespace, const ServiceDescription
                                }
                        }
 
-                       std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i = m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
+                       std::pair<std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator, bool> i =
+                               m_new_services.insert(std::pair<eServiceReferenceDVB, ePtr<eDVBService> >(ref, service));
 
                        if (i.second)
                        {
index 38ac784fb74b2a04d8fd78e74546bb33f36abae0..9f0dd6ef36df2ebcb74c9abbd4faa377cff9c8b2 100644 (file)
@@ -50,7 +50,9 @@ class eDVBScan: public Object, public iObject
                /* scan state variables */
        int m_channel_state;
        int m_ready, m_ready_all;
-       
+
+       std::map<eDVBChannelID, unsigned int> m_corrected_frequencys;  // yet just used for DVB-T
+
        std::map<eDVBChannelID, ePtr<iDVBFrontendParameters> > m_new_channels;
        std::map<eServiceReferenceDVB, ePtr<eDVBService> > m_new_services;
        std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_last_service;
index ac1a202811716ba3bd11865e74bb320fb20246e0..d14acc85ea980b2aa371d279f91848aa2d112315 100644 (file)
@@ -563,7 +563,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                                compare.tone = iDVBFrontend::toneOff;
                                                sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
                                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, iDVBFrontend::toneOff) );
-                                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
+                                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE_DISABLE_BEFORE_DISEQC]) );
 
                                                if (diseqc13V)
                                                        vlt = iDVBFrontend::voltage13;
@@ -705,7 +705,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                                        compare.tone = iDVBFrontend::toneOff;
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, iDVBFrontend::toneOff) );
-                                                       sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
+                                                       sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE_DISABLE_BEFORE_DISEQC]) );
 
                                                        compare.voltage = iDVBFrontend::voltageOff;
                                                        compare.steps = +4;
@@ -839,7 +839,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                                                compare.tone = tone;
                                                                sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
                                                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, tone) );
-                                                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
+                                                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_FINAL_CONT_TONE_CHANGE]) );
                                                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_FRONTEND) );
        
                                                                cmd.direction=1;  // check for running rotor
@@ -884,7 +884,7 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                compare.tone = tone;
                                sec_sequence.push_back( eSecCommand(eSecCommand::IF_TONE_GOTO, compare) );
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, tone) );
-                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_CONT_TONE]) );
+                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_FINAL_CONT_TONE_CHANGE]) );
                        }
 
                        sec_sequence.push_back( eSecCommand(eSecCommand::UPDATE_CURRENT_SWITCHPARMS) );
@@ -897,11 +897,11 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                compare.voltage = iDVBFrontend::voltageOff;
                                sec_sequence.push_back( eSecCommand(eSecCommand::IF_NOT_VOLTAGE_GOTO, compare) );
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, iDVBFrontend::voltage13) );
-                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50 ) );
+                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_ENABLE_VOLTAGE_BEFORE_SWITCH_CMDS] ) );
 
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, iDVBFrontend::voltage18_5) );
                                sec_sequence.push_back( eSecCommand(eSecCommand::SET_TONE, iDVBFrontend::toneOff) );
-                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_MOTOR_CMD]) );  // wait 150msec after voltage change
+                               sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, m_params[DELAY_AFTER_VOLTAGE_CHANGE_BEFORE_SWITCH_CMDS]) );  // wait 20 ms after voltage change
        
                                eDVBDiseqcCommand diseqc;
                                memset(diseqc.data, 0, MAX_DISEQC_LENGTH);
index 5bff6bf71111e65b0ad2285f328794664e50c41e..5d96932870e7b7a0fca3a64bd4a2c7b16a5988cc 100644 (file)
@@ -271,7 +271,8 @@ class eDVBSatelliteEquipmentControl: public iDVBSatelliteEquipmentControl
        DECLARE_REF(eDVBSatelliteEquipmentControl);
 public:
        enum {
-               DELAY_AFTER_CONT_TONE=0,  // delay after continuous tone change
+               DELAY_AFTER_CONT_TONE_DISABLE_BEFORE_DISEQC=0,  // delay after continuous tone disable before diseqc command
+               DELAY_AFTER_FINAL_CONT_TONE_CHANGE, // delay after continuous tone change before tune
                DELAY_AFTER_FINAL_VOLTAGE_CHANGE, // delay after voltage change at end of complete sequence
                DELAY_BETWEEN_DISEQC_REPEATS, // delay between repeated diseqc commands
                DELAY_AFTER_LAST_DISEQC_CMD, // delay after last diseqc command
index f4b5b7e415f23dbbafc81fdb90bc7cdf7d9b2be2..642327bb0e522d5c1275767b3f91a0eef37f5103 100644 (file)
@@ -345,6 +345,8 @@ int eDVBSubtitleParser::subtitle_process_segment(__u8 *segment)
                        }
                }
 
+               page->state = page_state;
+
                //eDebug("page updated: old: %d, new: %d", page->page_version_number, page_version_number);
                        // when acquisition point or mode change: remove all displayed pages.
                if ((page_state == 1) || (page_state == 2))
@@ -804,7 +806,8 @@ void eDVBSubtitleParser::subtitle_redraw_all()
        subtitle_page *page = m_pages;
        while(page)
        {
-               subtitle_redraw(page->page_id);
+               if (page->state != 0)
+                       subtitle_redraw(page->page_id);
                page = page->next;
        }
 #else
index fb9c51a209265c4fb79d1c01c06bc3b165ce28b4..09d6cd473b9a81476cd7f60d29ebc869dd8869b7 100644 (file)
@@ -71,6 +71,7 @@ struct subtitle_page
        int page_id;
        time_t page_time_out;
        int page_version_number;
+       int state;
        int pcs_size;
        subtitle_page_region *page_regions;
        
index ca0412e37b864c618f15f55921f66cb15574d82c..de4c6d755327cb132a548e51bb6a9a537efc63fc 100644 (file)
@@ -127,7 +127,7 @@ unsigned int Latin_G2_set[6*16] = {
 
 // This is a very simple en300 706 telext decoder.
 // It can only decode a single page at a time, thus it's only used
-// for subtitles.
+// for subtitles. And it ONLY support LATIN Charsets yet!
  
 DEFINE_REF(eDVBTeletextParser);
 
@@ -149,6 +149,15 @@ static inline unsigned char decode_hamming_84(unsigned char *b)
 
 static inline unsigned long decode_hamming_2418(unsigned char *b)
 {
+       static const unsigned char rev[16] = {
+               0x00,0x08,0x04,0x0c,
+               0x02,0x0a,0x06,0x0e,
+               0x01,0x09,0x05,0x0d,
+               0x03,0x0b,0x07,0x0f
+       };
+       b[0] = rev[b[0] >> 4] | (rev[b[0] & 0xf] << 4);
+       b[1] = rev[b[1] >> 4] | (rev[b[1] & 0xf] << 4);
+       b[2] = rev[b[2] >> 4] | (rev[b[2] & 0xf] << 4);
        return ((b[0] & 0x04) >> 2) | ((b[0] & 0x70) >> 3) | ((b[1] & 0x7f) << 4) | ((b[2] & 0x7f) << 11);
 }
 
@@ -258,7 +267,7 @@ void eDVBTeletextParser::processPESPacket(__u8 *pkt, int len)
                int M = magazine_and_packet_address & 7,
                        Y = magazine_and_packet_address >> 3;
 //                     eDebug("line %d, framing code: %02x, M=%02x, Y=%02x", line_offset, framing_code, m_M, m_Y);
-               
+
                if (Y == 0) /* page header */
                {
                        int X = decode_hamming_84(data + 1) * 0x10 + decode_hamming_84(data),
@@ -315,19 +324,10 @@ void eDVBTeletextParser::processPESPacket(__u8 *pkt, int len)
                } else if (Y == 26 && m_page_open && M == m_page_M)
                {
 //                     int designation_code = decode_hamming_84(data);
-                       static const unsigned char rev[16] = {
-                               0x00,0x08,0x04,0x0c,
-                               0x02,0x0a,0x06,0x0e,
-                               0x01,0x09,0x05,0x0d,
-                               0x03,0x0b,0x07,0x0f
-                       };
                        int display_row=-1, display_column=-1;
                        for (int a = 1; a < 40; a+=3)
                        {
                                int val;
-                               data[a] = rev[data[a] >> 4] | (rev[data[a] & 0xf] << 4);
-                               data[a+1] = rev[data[a+1] >> 4] | (rev[data[a+1] & 0xf] << 4);
-                               data[a+2] = rev[data[a+2] >> 4] | (rev[data[a+2] & 0xf] << 4);
                                if ((val=decode_hamming_2418(data+a)) >= 0)
                                {
                                        unsigned char addr = val & 0x3F;
@@ -401,12 +401,63 @@ void eDVBTeletextParser::processPESPacket(__u8 *pkt, int len)
                        }
                } else if (Y > 29)
                        /*eDebug("non handled packet 30, 31", Y, decode_hamming_84(data))*/;
-               else if (Y == 29)
-                       eDebug("non handled packet M/%d/%d", Y, decode_hamming_84(data));
-               else if (m_page_open)
+               else if (Y == 29 && M == m_page_M)
                {
-                       if (M == m_page_M)
-                               eDebug("non handled packet X/%d/%d", Y, decode_hamming_84(data));
+                       int designation_code = decode_hamming_84(data++);
+                       if (designation_code == 0) // 29/0
+                       {
+                               m_M29_t1 = decode_hamming_2418(data);
+                               m_M29_t2 = decode_hamming_2418(data+3);
+                               if ((m_M29_t1 & 0xF) == 0) // format1
+                                       m_M29_0_valid = 1;
+                               else
+                                       eDebug("non handled packet M/%d/0 format %d", Y, m_M29_t1 & 0xF);
+                       }
+                       else
+                               eDebug("non handled packet M/%d/%d", Y, designation_code);
+               }
+               else if (m_page_open && M == m_page_M)
+               {
+                       int designation_code = decode_hamming_84(data++);
+                       if (Y == 28 && designation_code == 0)   // 28/0
+                       {
+#if 1
+                               m_X28_t1 = decode_hamming_2418(data);
+                               m_X28_t2 = decode_hamming_2418(data+3);
+                               if ((m_X28_t1 & 0xF) == 0) // format1
+                                       m_X28_0_valid = 1;
+                               else
+                                       eDebug("non handled packet X/%d/0 format %d", Y, m_X28_t1 & 0xF);
+#else
+                                       int i=0;
+                                       for (; i < 39; i+=3)
+                                       {
+                                               int tripletX = decode_hamming_2418(data+i);
+                                               if (tripletX >= 0)
+                                               {
+                                                       if (i == 0)
+                                                       {
+                                                               if ((m_X28_t1 & 0xF) == 0) // format1
+                                                                       m_X28_0_valid = 1;
+                                                               m_X28_t1 = tripletX;
+                                                       }
+                                                       else if (i == 1)
+                                                               m_X28_t2 = tripletX;
+
+                                                       char *c = get_bits(tripletX, 18);
+                                                       int x=0;
+                                                       for (; x < 18; ++x)
+                                                               eDebugNoNewLine("%c", c[x]);
+                                                       eDebug("");
+                                               }
+                                               else
+                                                       eDebug("decode_hamming_2418 failed!\n");
+                                               data += 3;
+                                       }
+#endif
+                       }
+                       else
+                               eDebug("non handled packet X/%d/%d", Y, designation_code);
                }
        }
 }
@@ -430,6 +481,7 @@ void eDVBTeletextParser::handlePageStart()
        {
                m_subtitle_page.clear();
                m_modifications.clear();
+               m_X28_0_valid = 0;
 //             eDebug("erase page!");
        }
 //     else
@@ -463,28 +515,46 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len)
                nat_opts = (m_C & (1<<14) ? 1 : 0) |
                                        (m_C & (1<<13) ? 2 : 0) |
                                        (m_C & (1<<12) ? 4 : 0),
-               nat_subset = NationalOptionSubsetsLookup[Gtriplet*8+nat_opts];
-/*     eDebug("nat_opts = %d, nat_subset = %d, C121314 = %d%d%d",
-               nat_opts, nat_subset,
-               (m_C & (1<<12))?1:0,
-               (m_C & (1<<13))?1:0,
-               (m_C & (1<<14))?1:0);*/
+               nat_subset_2 = NationalOptionSubsetsLookup[Gtriplet*8+nat_opts],
+               nat_subset = nat_subset_2,
+               second_G0_set = 0;
+
+       if (m_X28_0_valid)
+       {
+               nat_subset = NationalOptionSubsetsLookup[(m_X28_t1 >> 7) & 0x7F];
+               nat_subset_2 = NationalOptionSubsetsLookup[((m_X28_t1 >> 14) & 0xF) | ((m_X28_t2 & 7) << 4)];
+//             eDebug("X/28/0 nat_subset %d, nat_subset2 %d", nat_subset, nat_subset_2);
+       }
+       else if (m_M29_0_valid)
+       {
+               nat_subset = NationalOptionSubsetsLookup[(m_M29_t1 >> 7) & 0x7F];
+               nat_subset_2 = NationalOptionSubsetsLookup[((m_M29_t1 >> 14) & 0xF) | ((m_M29_t2 & 7) << 4)];
+//             eDebug("M/29/0 nat_subset %d, nat_subset2 %d", nat_subset, nat_subset_2);
+       }
+/*     else
+               eDebug("nat_opts = %d, nat_subset = %d, C121314 = %d%d%d",
+                       nat_opts, nat_subset,
+                       (m_C & (1<<12))?1:0,
+                       (m_C & (1<<13))?1:0,
+                       (m_C & (1<<14))?1:0);*/
 
 //     eDebug("handle subtitle line: %d len", len);
        for (int i=0; i<len; ++i)
        {
+               unsigned char b = decode_odd_parity(data + i);
                std::map<int,unsigned int>::iterator it = m_modifications.find((m_Y<<16)|i);
+
                if (it != m_modifications.end())
                {
                        unsigned int utf8_code = it->second;
+//                     eDebugNoNewLine("%c[%d]", b, b);
                        if (utf8_code < 0x10)
                        {
                                int mode = utf8_code;
-                               unsigned char ch = decode_odd_parity(data + i);
-                               if (ch > 96 && ch < 123)
-                                       utf8_code = diacr_lower_cmap[(ch-97)*15+mode-1];
-                               else if (ch > 64 && ch < 91)
-                                       utf8_code = diacr_upper_cmap[(ch-65)*15+mode-1];
+                               if (b > 96 && b < 123)
+                                       utf8_code = diacr_lower_cmap[(b-97)*15+mode-1];
+                               else if (b > 64 && b < 91)
+                                       utf8_code = diacr_upper_cmap[(b-65)*15+mode-1];
                        }
                        if (utf8_code > 0xFFFFFF)
                                out[outidx++]=(utf8_code&0xFF000000)>>24;
@@ -498,8 +568,6 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len)
                        continue;
                }
 
-               unsigned char b = decode_odd_parity(data + i);
-
                if (b < 0x10) /* spacing attribute */
                {
                        if (b < 8) /* colors */
@@ -522,17 +590,11 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len)
                                /* ignore other attributes */
                } else if (m_box_open>1)
                {
-                       //eDebugNoNewLine("%c", b);
+//                     eDebugNoNewLine("%c(%d)", b, b);
                                /* no more than one whitespace, only printable chars */
                        if (((!last_was_white) || (b != ' ')) && (b >= 0x20))
                        {
-                               int cur_nat_subset = nat_subset;
-
-                               if (b == 0x24) // workaround for currency sign.. the only on non latin1 char in G0 set
-                               {
-                                       cur_nat_subset = 9;
-                                       b = 36;
-                               }
+                               int cur_nat_subset = second_G0_set ? nat_subset_2 : nat_subset;
 
                                unsigned char offs = NationalReplaceMap[b];
                                if (offs)
@@ -551,9 +613,11 @@ void eDVBTeletextParser::handleLine(unsigned char *data, int len)
                                        out[outidx++] = b;
                                last_was_white = b == ' ';
                        }
+                       else if (b == 0x1b) // ESC ... switch between default G0 and second G0 charset
+                               second_G0_set ^= 1;
                }
        }
-       //eDebug("");
+//     eDebug("");
        addSubtitleString(color, std::string((const char*)out, outidx));
 }
 
@@ -575,6 +639,7 @@ void eDVBTeletextParser::setPageAndMagazine(int page, int magazine)
                eDebug("enable teletext subtitle page %x%02x", magazine, page);
        else
                eDebug("disable teletext subtitles");
+       m_M29_0_valid = 0;
        m_page_M = magazine; /* magazine to look for */
        if (magazine != -1)
                m_page_M &= 7;
index a07c6aeaac34568a4c874958eb618bf973510df3..880fa569787c1f02c82746129b583433d555363c 100644 (file)
@@ -50,7 +50,9 @@ private:
        eDVBTeletextSubtitlePage m_subtitle_page;
        
        int m_C, m_Y, m_pid, m_page_M, m_page_X, m_page_open, m_double_height, m_box_open;
-       
+       int m_X28_0_valid, m_X28_t1, m_X28_t2;
+       int m_M29_0_valid, m_M29_t1, m_M29_t2;
+
        void handlePageStart();
        void handleLine(unsigned char *line, int len);
        void handlePageEnd(int have_pts, const pts_t &pts);
index 7525040452c8794f5fadea6c44beadc25ed31a70..ce1f7d660e8d2d0a446ffb4dffcf5493c55b4c9a 100644 (file)
 
 #include <dvbsi++/ca_program_map_section.h>
 
+//#define CIDEBUG 1
+
+#ifdef CIDEBUG
+       #define eDebugCI(x...) eDebug(x)
+#else
+       #define eDebugCI(x...)
+#endif
+
 eDVBCIInterfaces *eDVBCIInterfaces::instance = 0;
 
 eDVBCIInterfaces::eDVBCIInterfaces()
@@ -101,9 +109,6 @@ int eDVBCIInterfaces::reset(int slotid)
        if( (slot = getSlot(slotid)) == 0 )
                return -1;
 
-       eDVBCISession::deleteSessions(slot);
-       ciRemoved(slot);
-
        return slot->reset();
 }
 
@@ -195,11 +200,13 @@ int eDVBCIInterfaces::cancelEnq(int slotid)
 
 void eDVBCIInterfaces::ciRemoved(eDVBCISlot *slot)
 {
+       eDebug("CI Slot %d: removed... usecount %d", slot->getSlotID(), slot->use_count);
        for (PMTHandlerList::iterator it(m_pmt_handlers.begin());
                it != m_pmt_handlers.end(); ++it)
        {
                eServiceReferenceDVB ref;
                it->pmthandler->getServiceReference(ref);
+               eDebugCI("check %s cislot %p %d\n", ref.toString().c_str(), it->cislot, it->cislot?it->cislot->getSlotID() : -1);
                slot->removeService(ref.getServiceID().get());
                if (slot->use_count && !--slot->use_count)
                {
@@ -209,9 +216,13 @@ void eDVBCIInterfaces::ciRemoved(eDVBCISlot *slot)
                                setInputSource(slot->current_tuner, slot->current_source);
 
                        if (it->cislot == slot) // remove the base slot
+                       {
                                it->cislot = slot->linked_next;
+                               eDebugCI("base removed.. so slot is now %p", it->cislot);
+                       }
                        else
                        {
+                               eDebugCI("not base removed.. %d", it->cislot->getSlotID());
                                eDVBCISlot *tmp = it->cislot;
                                while(tmp->linked_next != slot)
                                        tmp = tmp->linked_next;
@@ -222,8 +233,10 @@ void eDVBCIInterfaces::ciRemoved(eDVBCISlot *slot)
                                        tmp->linked_next = 0;
                        }
                        slot->linked_next=0;
+                       slot->user_mapped=false;
                }
        }
+       recheckPMTHandlers();
 }
 
 static bool canDescrambleMultipleServices(int slotid)
@@ -245,22 +258,50 @@ static bool canDescrambleMultipleServices(int slotid)
 
 void eDVBCIInterfaces::recheckPMTHandlers()
 {
-//     eDebug("recheckPMTHAndlers()");
+       eDebugCI("recheckPMTHAndlers()");
        for (PMTHandlerList::iterator it(m_pmt_handlers.begin());
                it != m_pmt_handlers.end(); ++it)
        {
                CAID_LIST caids;
                ePtr<eDVBService> service;
                eServiceReferenceDVB ref;
+               eDVBCISlot *tmp = it->cislot;
                eDVBServicePMTHandler *pmthandler = it->pmthandler;
                eDVBServicePMTHandler::program p;
+               bool first_plugged_cis_exist = false;
 
                pmthandler->getServiceReference(ref);
                pmthandler->getService(service);
+
+               eDebugCI("recheck %p %s", pmthandler, ref.toString().c_str());
+               for (eSmartPtrList<eDVBCISlot>::iterator ci_it(m_slots.begin()); ci_it != m_slots.end(); ++ci_it)
+                       if (ci_it->first_plugged && ci_it->getCAManager())
+                       {
+                               eDebug("Slot %d first plugged", ci_it->getSlotID());
+                               ci_it->first_plugged = false;
+                               first_plugged_cis_exist = true;
+                       }
+
+               // check if this pmt handler has already assigned CI(s) .. and this CI(s) are already running
+               if (!first_plugged_cis_exist)
+               {
+                       while(tmp)
+                       {
+                               if (!tmp->running_services.empty())
+                                       break;
+                               tmp=tmp->linked_next;
+                       }
+                       if (tmp) // we dont like to change tsmux for running services
+                       {
+                               eDebugCI("already assigned and running CI!\n");
+                               continue;
+                       }
+               }
+
                if (!pmthandler->getProgramInfo(p))
                {
                        int cnt=0;
-                       for (std::set<uint16_t>::reverse_iterator x(p.caids.rbegin()); x != p.caids.rend(); ++x, ++cnt)
+                       for (caidSet::reverse_iterator x(p.caids.rbegin()); x != p.caids.rend(); ++x, ++cnt)
                                caids.push_front(*x);
                        if (service && cnt)
                                service->m_ca = caids;
@@ -274,50 +315,67 @@ void eDVBCIInterfaces::recheckPMTHandlers()
 
                for (eSmartPtrList<eDVBCISlot>::iterator ci_it(m_slots.begin()); ci_it != m_slots.end(); ++ci_it)
                {
+                       eDebugCI("check Slot %d", ci_it->getSlotID());
                        bool useThis=false;
+                       bool user_mapped=true;
                        eDVBCICAManagerSession *ca_manager = ci_it->getCAManager();
+
                        if (ca_manager)
                        {
                                int mask=0;
                                if (!ci_it->possible_services.empty())
                                {
                                        mask |= 1;
-                                       std::set<eServiceReference>::iterator it = ci_it->possible_services.find(ref);
+                                       serviceSet::iterator it = ci_it->possible_services.find(ref);
                                        if (it != ci_it->possible_services.end())
                                        {
                                                eDebug("'%s' is in service list of slot %d... so use it", ref.toString().c_str(), ci_it->getSlotID());
                                                useThis = true;
                                        }
+                                       else // check parent
+                                       {
+                                               eServiceReferenceDVB parent_ref = ref.getParentServiceReference();
+                                               if (parent_ref)
+                                               {
+                                                       it = ci_it->possible_services.find(ref);
+                                                       if (it != ci_it->possible_services.end())
+                                                       {
+                                                               eDebug("parent '%s' of '%s' is in service list of slot %d... so use it",
+                                                                       parent_ref.toString().c_str(), ref.toString().c_str(), ci_it->getSlotID());
+                                                               useThis = true;
+                                                       }
+                                               }
+                                       }
                                }
                                if (!useThis && !ci_it->possible_providers.empty())
                                {
-                                       bool parent=false;
+                                       eDVBNamespace ns = ref.getDVBNamespace();
                                        mask |= 2;
                                        if (!service) // subservice?
                                        {
                                                eServiceReferenceDVB parent_ref = ref.getParentServiceReference();
                                                eDVBDB::getInstance()->getService(parent_ref, service);
-                                               parent=true;
                                        }
                                        if (service)
                                        {
-                                               std::set<std::string>::iterator it = ci_it->possible_providers.find(service->m_provider_name);
+                                               providerSet::iterator it = ci_it->possible_providers.find(providerPair(service->m_provider_name, ns.get()));
                                                if (it != ci_it->possible_providers.end())
                                                {
-                                                       eDebug("'%s' is in provider list of slot %d... so use it", service->m_provider_name.c_str(), ci_it->getSlotID());
+                                                       eDebug("'%s/%08x' is in provider list of slot %d... so use it", service->m_provider_name.c_str(), ns.get(), ci_it->getSlotID());
                                                        useThis = true;
                                                }
                                        }
                                }
                                if (!useThis && !ci_it->possible_caids.empty())
                                {
+                                       mask |= 4;
                                        for (CAID_LIST::iterator ca(caids.begin()); ca != caids.end(); ++ca)
                                        {
-                                               std::set<uint16_t>::iterator it = ci_it->possible_caids.find(*ca);
+                                               caidSet::iterator it = ci_it->possible_caids.find(*ca);
                                                if (it != ci_it->possible_caids.end())
                                                {
                                                        eDebug("caid '%04x' is in caid list of slot %d... so use it", *ca, ci_it->getSlotID());
-                                                       useThis=true;
+                                                       useThis = true;
                                                        break;
                                                }
                                        }
@@ -332,7 +390,8 @@ void eDVBCIInterfaces::recheckPMTHandlers()
                                                if ( z != ci_caids.end() && *z == *ca )
                                                {
                                                        eDebug("The CI in Slot %d has said it can handle caid %04x... so use it", ci_it->getSlotID(), *z);
-                                                       useThis=true;
+                                                       useThis = true;
+                                                       user_mapped = false;
                                                        break;
                                                }
                                        }
@@ -341,47 +400,74 @@ void eDVBCIInterfaces::recheckPMTHandlers()
 
                        if (useThis)
                        {
+                               // check if this CI is already assigned to this pmthandler
+                               eDVBCISlot *tmp = it->cislot;
+                               while(tmp)
+                               {
+                                       if (tmp == ci_it)
+                                               break;
+                                       tmp=tmp->linked_next;
+                               }
+                               if (tmp) // ignore already assigned cislots...
+                               {
+                                       eDebugCI("already assigned!");
+                                       continue;
+                               }
+                               eDebugCI("current slot %d usecount %d", ci_it->getSlotID(), ci_it->use_count);
                                if (ci_it->use_count)  // check if this CI can descramble more than one service
                                {
+                                       bool found = false;
                                        useThis = false;
                                        PMTHandlerList::iterator tmp = m_pmt_handlers.begin();
-                                       while (tmp != m_pmt_handlers.end())
+                                       while (!found && tmp != m_pmt_handlers.end())
                                        {
-                                               if ( tmp->cislot == ci_it && it != tmp )
+                                               eDebugCI(".");
+                                               eDVBCISlot *tmp_cislot = tmp->cislot;
+                                               while (!found && tmp_cislot)
                                                {
+                                                       eDebugCI("..");
                                                        eServiceReferenceDVB ref2;
                                                        tmp->pmthandler->getServiceReference(ref2);
-                                                       eDVBChannelID s1, s2;
-                                                       if (ref != ref2)
+                                                       if ( tmp_cislot == ci_it && it->pmthandler != tmp->pmthandler )
                                                        {
-                                                               ref.getChannelID(s1);
-                                                               ref2.getChannelID(s2);
-                                                       }
-                                                       if (ref == ref2 || (s1 == s2 && canDescrambleMultipleServices(ci_it->getSlotID())))
-                                                       {
-                                                               useThis = true;
-                                                               break;
+                                                               eDebugCI("check pmthandler %s for same service/tp", ref2.toString().c_str());
+                                                               eDVBChannelID s1, s2;
+                                                               if (ref != ref2)
+                                                               {
+                                                                       eDebugCI("different services!");
+                                                                       ref.getChannelID(s1);
+                                                                       ref2.getChannelID(s2);
+                                                               }
+                                                               if (ref == ref2 || (s1 == s2 && canDescrambleMultipleServices(tmp_cislot->getSlotID())))
+                                                               {
+                                                                       found = true;
+                                                                       eDebugCI("found!");
+                                                                       eDVBCISlot *tmpci = it->cislot = tmp->cislot;
+                                                                       while(tmpci)
+                                                                       {
+                                                                               ++tmpci->use_count;
+                                                                               eDebug("(2)CISlot %d, usecount now %d", tmpci->getSlotID(), tmpci->use_count);
+                                                                               tmpci=tmpci->linked_next;
+                                                                       }
+                                                               }
                                                        }
+                                                       tmp_cislot=tmp_cislot->linked_next;
                                                }
+                                               eDebugCI("...");
                                                ++tmp;
                                        }
                                }
+
                                if (useThis)
                                {
-                                       // check if this CI is already assigned to this pmthandler
-                                       eDVBCISlot *tmp = it->cislot;
-                                       while(tmp)
+                                       if (ci_it->user_mapped)  // we dont like to link user mapped CIs
                                        {
-                                               if (tmp == ci_it)
-                                                       break;
-                                               tmp=tmp->linked_next;
-                                       }
-
-                                       if (tmp) // ignore already assigned cislots...
+                                               eDebugCI("user mapped CI already in use... dont link!");
                                                continue;
+                                       }
 
                                        ++ci_it->use_count;
-//                                     eDebug("usecount now %d", ci_it->use_count);
+                                       eDebug("(1)CISlot %d, usecount now %d", ci_it->getSlotID(), ci_it->use_count);
 
                                        data_source ci_source=CI_A;
                                        switch(ci_it->getSlotID())
@@ -432,8 +518,15 @@ void eDVBCIInterfaces::recheckPMTHandlers()
                                                ci_it->linked_next->setSource(ci_source);
                                        }
                                        it->cislot = ci_it;
+                                       eDebugCI("assigned!");
                                        gotPMT(pmthandler);
                                }
+
+                               if (it->cislot && user_mapped) // CI assigned to this pmthandler in this run.. and user mapped? then we break here.. we dont like to link other CIs to user mapped CIs
+                               {
+                                       eDebugCI("user mapped CI assigned... dont link CIs!");
+                                       break;
+                               }
                        }
                }
        }
@@ -520,9 +613,10 @@ void eDVBCIInterfaces::removePMTHandler(eDVBServicePMTHandler *pmthandler)
                                        else
                                                tmp->linked_next = 0;
                                }
-                               slot->linked_next=0;
+                               slot->linked_next = 0;
+                               slot->user_mapped = false;
                        }
-//                     eDebug("use_count is now %d", slot->use_count);
+                       eDebug("(3) slot %d usecount is now %d", slot->getSlotID(), slot->use_count);
                        slot = next;
                }
                // check if another service is waiting for the CI
@@ -539,7 +633,9 @@ void eDVBCIInterfaces::gotPMT(eDVBServicePMTHandler *pmthandler)
                eDVBCISlot *tmp = it->cislot;
                while(tmp)
                {
-                       tmp->sendCAPMT(pmthandler);
+                       eDebugCI("check slot %d %d %d", tmp->getSlotID(), tmp->running_services.empty(), canDescrambleMultipleServices(tmp->getSlotID()));
+                       if (tmp->running_services.empty() || canDescrambleMultipleServices(tmp->getSlotID()))
+                               tmp->sendCAPMT(pmthandler);
                        tmp = tmp->linked_next;
                }
        }
@@ -551,7 +647,7 @@ int eDVBCIInterfaces::getMMIState(int slotid)
 
        if( (slot = getSlot(slotid)) == 0 )
                return -1;
-       
+
        return slot->getMMIState();
 }
 
@@ -659,25 +755,28 @@ PyObject *eDVBCIInterfaces::getDescrambleRules(int slotid)
        ePyObject caid_list = PyList_New(caids);
        ePyObject service_list = PyList_New(services);
        ePyObject provider_list = PyList_New(providers);
-       std::set<uint16_t>::iterator caid_it(slot->possible_caids.begin());
+       caidSet::iterator caid_it(slot->possible_caids.begin());
        while(caids)
        {
                --caids;
-               PyTuple_SET_ITEM(caid_list, caids, PyLong_FromLong(*caid_it));
+               PyList_SET_ITEM(caid_list, caids, PyLong_FromLong(*caid_it));
                ++caid_it;
        }
-       std::set<eServiceReference>::iterator ref_it(slot->possible_services.begin());
+       serviceSet::iterator ref_it(slot->possible_services.begin());
        while(services)
        {
                --services;
-               PyTuple_SET_ITEM(service_list, services, PyString_FromString(ref_it->toString().c_str()));
+               PyList_SET_ITEM(service_list, services, PyString_FromString(ref_it->toString().c_str()));
                ++ref_it;
        }
-       std::set<std::string>::iterator provider_it(slot->possible_providers.begin());
+       providerSet::iterator provider_it(slot->possible_providers.begin());
        while(providers)
        {
+               ePyObject tuple = PyTuple_New(2);
+               PyTuple_SET_ITEM(tuple, 0, PyString_FromString(provider_it->first.c_str()));
+               PyTuple_SET_ITEM(tuple, 1, PyLong_FromUnsignedLong(provider_it->second));
                --providers;
-               PyTuple_SET_ITEM(provider_list, providers, PyString_FromString(provider_it->c_str()));
+               PyList_SET_ITEM(provider_list, providers, tuple);
                ++provider_it;
        }
        PyTuple_SET_ITEM(tuple, 0, service_list);
@@ -712,7 +811,7 @@ RESULT eDVBCIInterfaces::setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject)
        {
                const char *errstr = "eDVBCIInterfaces::setDescrambleRules not enough entrys in argument tuple!!\n"
                        "first argument should be a pythonlist with possible services\n"
-                       "second argument should be a pythonlist with possible providers\n"
+                       "second argument should be a pythonlist with possible providers/dvbnamespace tuples\n"
                        "third argument should be a pythonlist with possible caids";
                PyErr_SetString(PyExc_StandardError, errstr);
                return -1;
@@ -757,33 +856,55 @@ RESULT eDVBCIInterfaces::setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject)
        while(size)
        {
                --size;
-               ePyObject str = PyList_GET_ITEM(provider_list, size);
-               if (!PyString_Check(str))
+               ePyObject tuple = PyList_GET_ITEM(provider_list, size);
+               if (!PyTuple_Check(tuple))
                {
                        char buf[255];
-                       snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules entry in provider list is not a string it is '%s'!!", PyObject_TypeStr(str));
+                       snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules entry in provider list is not a tuple it is '%s'!!", PyObject_TypeStr(tuple));
                        PyErr_SetString(PyExc_StandardError, buf);
                        return -1;
                }
-               char *tmpstr = PyString_AS_STRING(str);
+               if (PyTuple_Size(tuple) != 2)
+               {
+                       char buf[255];
+                       snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules provider tuple has %d instead of 2 entries!!", PyTuple_Size(tuple));
+                       PyErr_SetString(PyExc_StandardError, buf);
+                       return -1;
+               }
+               if (!PyString_Check(PyTuple_GET_ITEM(tuple, 0)))
+               {
+                       char buf[255];
+                       snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules 1st entry in provider tuple is not a string it is '%s'", PyObject_TypeStr(PyTuple_GET_ITEM(tuple, 0)));
+                       PyErr_SetString(PyExc_StandardError, buf);
+                       return -1;
+               }
+               if (!PyLong_Check(PyTuple_GET_ITEM(tuple, 1)))
+               {
+                       char buf[255];
+                       snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules 2nd entry in provider tuple is not a long it is '%s'", PyObject_TypeStr(PyTuple_GET_ITEM(tuple, 1)));
+                       PyErr_SetString(PyExc_StandardError, buf);
+                       return -1;
+               }
+               char *tmpstr = PyString_AS_STRING(PyTuple_GET_ITEM(tuple, 0));
+               uint32_t orbpos = PyLong_AsUnsignedLong(PyTuple_GET_ITEM(tuple, 1));
                if (strlen(tmpstr))
-                       slot->possible_providers.insert(tmpstr);
+                       slot->possible_providers.insert(std::pair<std::string, uint32_t>(tmpstr, orbpos));
                else
-                       eDebug("eDVBCIInterfaces::setDescrambleRules ignore invalid entry in provider name list!!");
+                       eDebug("eDVBCIInterfaces::setDescrambleRules ignore invalid entry in provider tuple (string is empty)!!");
        };
        size = PyList_Size(caid_list);
        while(size)
        {
                --size;
                ePyObject caid = PyList_GET_ITEM(caid_list, size);
-               if (!PyInt_Check(caid))
+               if (!PyLong_Check(caid))
                {
                        char buf[255];
                        snprintf(buf, 255, "eDVBCIInterfaces::setDescrambleRules entry in caid list is not a long it is '%s'!!", PyObject_TypeStr(caid));
                        PyErr_SetString(PyExc_StandardError, buf);
                        return -1;
                }
-               int tmpcaid = PyInt_AsLong(caid);
+               int tmpcaid = PyLong_AsLong(caid);
                if (tmpcaid > 0 && tmpcaid < 0x10000)
                        slot->possible_caids.insert(tmpcaid);
                else
@@ -792,6 +913,39 @@ RESULT eDVBCIInterfaces::setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject)
        return 0;
 }
 
+PyObject *eDVBCIInterfaces::readCICaIds(int slotid)
+{
+       eDVBCISlot *slot = getSlot(slotid);
+       if (!slot)
+       {
+               char tmp[255];
+               snprintf(tmp, 255, "eDVBCIInterfaces::readCICaIds try to get CAIds for CI Slot %d... but just %d slots are available", slotid, m_slots.size());
+               PyErr_SetString(PyExc_StandardError, tmp);
+       }
+       else
+       {
+               int idx=0;
+               eDVBCICAManagerSession *ca_manager = slot->getCAManager();
+               const std::vector<uint16_t> *ci_caids = ca_manager ? &ca_manager->getCAIDs() : 0;
+               ePyObject list = PyList_New(ci_caids ? ci_caids->size() : 0);
+               if (ci_caids)
+               {
+                       for (std::vector<uint16_t>::const_iterator it = ci_caids->begin(); it != ci_caids->end(); ++it)
+                               PyList_SET_ITEM(list, idx++, PyLong_FromLong(*it));
+               }
+               return list;
+       }
+       return 0;
+}
+
+int eDVBCIInterfaces::setCIClockRate(int slotid, int rate)
+{
+       eDVBCISlot *slot = getSlot(slotid);
+       if (slot)
+               return slot->setClockRate(rate);
+       return -1;
+}
+
 int eDVBCISlot::send(const unsigned char *data, size_t len)
 {
        int res=0;
@@ -817,17 +971,17 @@ int eDVBCISlot::send(const unsigned char *data, size_t len)
 
 void eDVBCISlot::data(int what)
 {
+       eDebugCI("CISlot %d what %d\n", getSlotID(), what);
        if(what == eSocketNotifier::Priority) {
                if(state != stateRemoved) {
                        state = stateRemoved;
-                       eDebug("ci removed");
                        while(sendqueue.size())
                        {
                                delete [] sendqueue.top().data;
                                sendqueue.pop();
                        }
-                       eDVBCIInterfaces::getInstance()->ciRemoved(this);
                        eDVBCISession::deleteSessions(this);
+                       eDVBCIInterfaces::getInstance()->ciRemoved(this);
                        notifier->setRequested(eSocketNotifier::Read);
                        eDVBCI_UI::getInstance()->setState(getSlotID(),0);
                }
@@ -838,7 +992,7 @@ void eDVBCISlot::data(int what)
                reset();
 
        if(state != stateInserted) {
-               eDebug("ci inserted");
+               eDebug("ci inserted in slot %d", getSlotID());
                state = stateInserted;
                eDVBCI_UI::getInstance()->setState(getSlotID(),1);
                notifier->setRequested(eSocketNotifier::Read|eSocketNotifier::Priority);
@@ -886,14 +1040,20 @@ eDVBCISlot::eDVBCISlot(eMainloop *context, int nr)
        ca_manager = 0;
        use_count = 0;
        linked_next = 0;
+       user_mapped = false;
+       first_plugged = true;
        
        slotid = nr;
 
        sprintf(filename, "/dev/ci%d", nr);
 
+//     possible_caids.insert(0x1702);
+//     possible_providers.insert(providerPair("PREMIERE", 0xC00000));
+//     possible_services.insert(eServiceReference("1:0:1:2A:4:85:C00000:0:0:0:"));
+
        fd = ::open(filename, O_RDWR | O_NONBLOCK);
 
-       eDebug("eDVBCISlot has fd %d", fd);
+       eDebugCI("CI Slot %d has fd %d", getSlotID(), fd);
        state = stateInvalid;
 
        if (fd >= 0)
@@ -908,6 +1068,7 @@ eDVBCISlot::eDVBCISlot(eMainloop *context, int nr)
 
 eDVBCISlot::~eDVBCISlot()
 {
+       eDVBCISession::deleteSessions(this);
 }
 
 void eDVBCISlot::setAppManager( eDVBCIApplicationManagerSession *session )
@@ -932,7 +1093,7 @@ int eDVBCISlot::getSlotID()
 
 int eDVBCISlot::reset()
 {
-       eDebug("edvbcislot: reset requested");
+       eDebug("CI Slot %d: reset requested", getSlotID());
 
        if (state == stateInvalid)
        {
@@ -955,7 +1116,7 @@ int eDVBCISlot::reset()
 
 int eDVBCISlot::startMMI()
 {
-       eDebug("edvbcislot: startMMI()");
+       eDebug("CI Slot %d: startMMI()", getSlotID());
        
        if(application_manager)
                application_manager->startMMI();
@@ -965,7 +1126,7 @@ int eDVBCISlot::startMMI()
 
 int eDVBCISlot::stopMMI()
 {
-       eDebug("edvbcislot: stopMMI()");
+       eDebug("CI Slot %d: stopMMI()", getSlotID());
 
        if(mmi_session)
                mmi_session->stopMMI();
@@ -975,7 +1136,7 @@ int eDVBCISlot::stopMMI()
 
 int eDVBCISlot::answerText(int answer)
 {
-       eDebug("edvbcislot: answerText(%d)", answer);
+       eDebug("CI Slot %d: answerText(%d)", getSlotID(), answer);
 
        if(mmi_session)
                mmi_session->answerText(answer);
@@ -993,7 +1154,7 @@ int eDVBCISlot::getMMIState()
 
 int eDVBCISlot::answerEnq(char *value)
 {
-       eDebug("edvbcislot: answerENQ(%s)", value);
+       eDebug("CI Slot %d: answerENQ(%s)", getSlotID(), value);
 
        if(mmi_session)
                mmi_session->answerEnq(value);
@@ -1003,7 +1164,7 @@ int eDVBCISlot::answerEnq(char *value)
 
 int eDVBCISlot::cancelEnq()
 {
-       eDebug("edvbcislot: cancelENQ");
+       eDebug("CI Slot %d: cancelENQ", getSlotID());
 
        if(mmi_session)
                mmi_session->cancelEnq();
@@ -1146,7 +1307,7 @@ int eDVBCISlot::setSource(data_source source)
                                fprintf(ci, "D");
                                break;
                        default:
-                               eDebug("setSource %d failed!!!\n", (int)source);
+                               eDebug("CI Slot %d: setSource %d failed!!!\n", getSlotID(), (int)source);
                                break;
                }
                fclose(ci);
@@ -1161,13 +1322,30 @@ int eDVBCISlot::setSource(data_source source)
                        return 0;
                }
                if (source != TUNER_A && source != TUNER_B)
-                       eDebug("setSource %d failed!!!\n", (int)source);
+                       eDebug("CI Slot %d: setSource %d failed!!!\n", getSlotID(), (int)source);
                else
                        fprintf(ci, "%s", source==TUNER_A ? "A" : "B");  // configure CI data source (TunerA, TunerB)
                fclose(ci);
        }
-       eDebug("eDVBCISlot->setSource(%d)", (int)source);
+       eDebug("CI Slot %d setSource(%d)", getSlotID(), (int)source);
        return 0;
 }
 
+int eDVBCISlot::setClockRate(int rate)
+{
+       char buf[64];
+       snprintf(buf, 64, "/proc/stb/tsmux/ci%d_tsclk", slotid);
+       FILE *ci = fopen(buf, "wb");
+       if (ci)
+       {
+               if (rate)
+                       fprintf(ci, "high");
+               else
+                       fprintf(ci, "normal");
+               fclose(ci);
+               return 0;
+       }
+       return -1;
+}
+
 eAutoInitP0<eDVBCIInterfaces> init_eDVBCIInterfaces(eAutoInitNumbers::dvb, "CI Slots");
index 4e3fcce276bc5345526f8a765f0327e6c72107b4..cdaaf904b5e61a5c954db227c56050159737d124 100644 (file)
@@ -38,6 +38,11 @@ enum data_source
        TUNER_A, TUNER_B, TUNER_C, TUNER_D, CI_A, CI_B, CI_C, CI_D
 };
 
+typedef std::pair<std::string, uint32_t> providerPair;
+typedef std::set<providerPair> providerSet;
+typedef std::set<uint16_t> caidSet;
+typedef std::set<eServiceReference> serviceSet;
+
 class eDVBCISlot: public iObject, public Object
 {
        friend class eDVBCIInterfaces;
@@ -51,14 +56,16 @@ class eDVBCISlot: public iObject, public Object
        eDVBCICAManagerSession *ca_manager;
        eDVBCIMMISession *mmi_session;
        std::priority_queue<queueData> sendqueue;
-       std::set<uint16_t> possible_caids;
-       std::set<eServiceReference> possible_services;
-       std::set<std::string> possible_providers;
+       caidSet possible_caids;
+       serviceSet possible_services;
+       providerSet possible_providers;
        int use_count;
        eDVBCISlot *linked_next; // needed for linked CI handling
        data_source current_source;
        int current_tuner;
+       bool user_mapped;
        void data(int);
+       bool first_plugged;
 public:
        enum {stateRemoved, stateInserted, stateInvalid, stateResetted};
        eDVBCISlot(eMainloop *context, int nr);
@@ -87,6 +94,7 @@ public:
        void removeService(uint16_t program_number=0xFFFF);
        int getNumOfServices() { return running_services.size(); }
        int setSource(data_source source);
+       int setClockRate(int);
 };
 
 struct CIPmtHandler
@@ -139,6 +147,7 @@ public:
        int getMMIState(int slot);
        int sendCAPMT(int slot);
        int setInputSource(int tunerno, data_source source);
+       int setCIClockRate(int slot, int rate);
 #ifdef SWIG
 public:
 #endif
@@ -146,6 +155,7 @@ public:
        int getNumOfSlots() { return m_slots.size(); }
        PyObject *getDescrambleRules(int slotid);
        RESULT setDescrambleRules(int slotid, SWIG_PYOBJECT(ePyObject) );
+       PyObject *readCICaIds(int slotid);
 };
 
 #endif
index af613c432042ef8d67b3b27bfb4082056a21e7c2..b1bfdc25acc9ecb30c40536c1af19fcac289d998 100644 (file)
@@ -71,5 +71,10 @@ int eDVBCI_UI::getMMIState(int slot)
        return eDVBCIInterfaces::getInstance()->getMMIState(slot);
 }
 
+int eDVBCI_UI::setClockRate(int slot, int rate)
+{
+       return eDVBCIInterfaces::getInstance()->setCIClockRate(slot, rate);
+}
+
 //FIXME: correct "run/startlevel"
 eAutoInitP0<eDVBCI_UI> init_dvbciui(eAutoInitNumbers::rc, "DVB-CI UI");
index b53ab02d4ba32d51c124e9bb3da840cd0e8423da..65b0f95d0ff645d51aea64eb472e53f8259d025e 100644 (file)
@@ -13,6 +13,7 @@ class eDVBCI_UI: public eMMI_UI
 #endif
        void stateChanged(int val) { ciStateChanged(val); }
 public:
+       enum { rateNormal, rateHigh };
        PSignal1<void,int> ciStateChanged;
 #ifndef SWIG
        eDVBCI_UI();
@@ -26,6 +27,7 @@ public:
        int answerMenu(int slot, int answer);
        int answerEnq(int slot, char *val);
        int cancelEnq(int slot);
+       int setClockRate(int slot, int rate);
 };
 
 #endif
index 27b4abccdcea95ddba408c6a5c2bc43edf1ab4fd..d9c80e2ea82cf17b12eec2723ed92ec6c623511b 100644 (file)
@@ -1,3 +1,4 @@
+#include <cstring>
 #include <lib/base/init.h>
 #include <lib/base/init_num.h>
 #include <lib/gdi/accel.h>
index 450269f00686c9be22545ac8a47f6400e0b556ec..6a6007eebfb35f923f8b20cf7a4bcac167d4cf10 100644 (file)
@@ -510,7 +510,12 @@ int eTextPara::renderString(const char *string, int rflags)
        
        if (!current_font)
                return -1;
-               
+
+       if (!current_face)
+               eFatal("eTextPara::renderString: no current_face");
+       if (!current_face->size)
+               eFatal("eTextPara::renderString: no current_face->size");
+
        if (cursor.y()==-1)
        {
                cursor=ePoint(area.x(), area.y()+(current_face->size->metrics.ascender>>6));
index 315c18d130428fe8543788f8d5cacabd6c844e57..e01e5e434cd1ddcd14653f8d750479e2d4a36d37 100644 (file)
@@ -1,3 +1,5 @@
+#include <cstdlib>
+#include <cstring>
 #include <lib/gdi/gpixmap.h>
 #include <lib/gdi/region.h>
 #include <lib/gdi/accel.h>
index 44973af76f81723edf616e0bda947f77b0ae2859..bf183f990ebbbf0dfc37424a716ba9778aa85944 100644 (file)
@@ -779,6 +779,10 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
                                if (PyInt_Check(pstring) && data) /* if the string is in fact a number, it refers to the 'data' list. */
                                        pstring = PyTuple_GetItem(data, PyInt_AsLong(pstring));
 
+                                                       /* don't do anything if we have 'None' as string */
+                               if (pstring == Py_None)
+                                       continue;
+
                                const char *string = (PyString_Check(pstring)) ? PyString_AsString(pstring) : "<not-a-string>";
                                int x = PyInt_AsLong(px) + offset.x();
                                int y = PyInt_AsLong(py) + offset.y();
@@ -945,6 +949,10 @@ void eListboxPythonMultiContent::paint(gPainter &painter, eWindowStyle &style, c
                                if (PyInt_Check(ppixmap) && data) /* if the pixemap is in fact a number, it refers to the 'data' list. */
                                        ppixmap = PyTuple_GetItem(data, PyInt_AsLong(ppixmap));
 
+                                                       /* don't do anything if we have 'None' as pixmap */
+                               if (ppixmap == Py_None)
+                                       continue;
+
                                int x = PyInt_AsLong(px) + offset.x();
                                int y = PyInt_AsLong(py) + offset.y();
                                int width = PyInt_AsLong(pwidth);
index 646990138fbead63b49aeb4ab9ab835a4c46d6ba..6bb45590e433ab51c8a34136c8978f125dd44a03 100644 (file)
@@ -73,7 +73,7 @@ public:
        void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
        int currentCursorSelectable();
        void setList(SWIG_PYOBJECT(ePyObject) list);
-       void setFont(int fnt, gFont *fnt);
+       void setFont(int fnt, gFont *font);
        void setBuildFunc(SWIG_PYOBJECT(ePyObject) func);
        void setSelectableFunc(SWIG_PYOBJECT(ePyObject) func);
        void setItemHeight(int height);
index 085a749a6fde71fdb0264160bc18ee161ab77de0..ca5c20d789fee53540f9b50683ded51bb6cdd591 100644 (file)
@@ -114,15 +114,6 @@ void eSubtitleWidget::setPixmap(ePtr<gPixmap> &pixmap, gRegion changed)
        invalidate(changed);
 }
 
-std::string eSubtitleWidget::replace_all(const std::string &in, const std::string &entity, const std::string &symbol)
-{
-       std::string out = in;
-       std::string::size_type loc = 0;
-       while (( loc = out.find(entity, loc)) != std::string::npos )
-       out.replace(loc, entity.length(), symbol);
-       return out;
-}
-
 int eSubtitleWidget::event(int event, void *data, void *data2)
 {
        switch (event)
index 1635e6de3ef6831148cd377aa11347e84919fa87..c88df0e689509bb1013a5a9208f04bba4e9b7f12 100644 (file)
@@ -58,7 +58,6 @@ private:
        gRegion m_visible_region;
 
        ePtr<gPixmap> m_pixmap;  // pixmap to paint on next evtPaint
-       std::string replace_all(const std::string &in, const std::string &entity, const std::string &symbol);
 };
 
 #endif
index 3188469a836f7cc28c018cb61f8ee020de64904d..8f4255b817c099178f8eeb7cdb8fc3cfe5d8c073 100644 (file)
@@ -1,4 +1,5 @@
-from config import config, ConfigSlider, ConfigSelection, ConfigYesNo, ConfigEnableDisable, ConfigSubsection, ConfigBoolean
+from config import config, ConfigSlider, ConfigSelection, ConfigYesNo, \
+       ConfigEnableDisable, ConfigSubsection, ConfigBoolean, ConfigNumber
 from enigma import eAVSwitch, getDesktop
 from SystemInfo import SystemInfo
 
@@ -110,6 +111,8 @@ def InitAVSwitch():
        config.av.tvsystem = ConfigSelection(choices = {"pal": _("PAL"), "ntsc": _("NTSC"), "multinorm": _("multinorm")}, default="pal")
        config.av.wss = ConfigEnableDisable(default = True)
        config.av.defaultac3 = ConfigYesNo(default = False)
+       config.av.generalAC3delay = ConfigNumber(default = 0)
+       config.av.generalPCMdelay = ConfigNumber(default = 0)
        config.av.vcrswitch = ConfigEnableDisable(default = False)
 
        iAVSwitch = AVSwitch()
index 796ac3301ece5a76d5eb70e008836769e4ccb112..4043a1be53c820cbc0f5c0be1e0555c4b8de6668 100644 (file)
@@ -29,7 +29,7 @@ class FrontendInfo(Converter, object):
 
        @cached
        def getText(self):
-               assert self.type not in [self.LOCK, self.SLOT_NUMBER], "the text output of FrontendInfo cannot be used for lock info"
+               assert self.type not in (self.LOCK, self.SLOT_NUMBER), "the text output of FrontendInfo cannot be used for lock info"
                percent = None
                if self.type == self.BER: # as count
                        count = self.source.ber
@@ -54,7 +54,7 @@ class FrontendInfo(Converter, object):
 
        @cached
        def getBool(self):
-               assert self.type in [self.LOCK, self.BER], "the boolean output of FrontendInfo can only be used for lock or BER info"
+               assert self.type in (self.LOCK, self.BER), "the boolean output of FrontendInfo can only be used for lock or BER info"
                if self.type == self.LOCK:
                        lock = self.source.lock
                        if lock is None:
index 3a7b2be3504ddac63b51eb55502dab4487f10abc..f3f2b67317337f77cb4f60c385877f9f555b202c 100644 (file)
@@ -9,18 +9,12 @@ class RdsInfo(Converter, object):
 
        def __init__(self, type):
                Converter.__init__(self, type)
-               self.type = {
-                               "RadioText": self.RADIO_TEXT_CHANGED,
-                               "RtpText": self.RTP_TEXT_CHANGED,
-                               "RasInteractiveAvailable": self.RASS_INTERACTIVE_AVAILABLE
+               self.type, self.interesting_events = {
+                               "RadioText": (self.RADIO_TEXT_CHANGED, (iPlayableService.evUpdatedRadioText,)),
+                               "RtpText": (self.RTP_TEXT_CHANGED, (iPlayableService.evUpdatedRtpText,)),
+                               "RasInteractiveAvailable": (self.RASS_INTERACTIVE_AVAILABLE, (iPlayableService.evUpdatedRassInteractivePicMask,))
                        }[type]
 
-               self.interesting_events = {
-                               self.RADIO_TEXT_CHANGED: [iPlayableService.evUpdatedRadioText],
-                               self.RTP_TEXT_CHANGED: [iPlayableService.evUpdatedRtpText],
-                               self.RASS_INTERACTIVE_AVAILABLE: [iPlayableService.evUpdatedRassInteractivePicMask]
-                       }[self.type]
-
        @cached
        def getText(self):
                decoder = self.source.decoder
index 7118025440dac20f2593845adfd0412db7087314..d4054f0ce051733aa46a492fc6c9b4ab4324029c 100644 (file)
@@ -13,26 +13,16 @@ class ServiceInfo(Converter, object):
 
        def __init__(self, type):
                Converter.__init__(self, type)
-               self.type = {
-                               "HasTelext": self.HAS_TELETEXT,
-                               "IsMultichannel": self.IS_MULTICHANNEL,
-                               "IsCrypted": self.IS_CRYPTED,
-                               "IsWidescreen": self.IS_WIDESCREEN,
-                               "SubservicesAvailable": self.SUBSERVICES_AVAILABLE,
-                               "VideoWidth": self.XRES,
-                               "VideoHeight": self.YRES,
+               self.type, self.interesting_events = {
+                               "HasTelext": (self.HAS_TELETEXT, (iPlayableService.evUpdatedInfo,)),
+                               "IsMultichannel": (self.IS_MULTICHANNEL, (iPlayableService.evUpdatedInfo,)),
+                               "IsCrypted": (self.IS_CRYPTED, (iPlayableService.evUpdatedInfo,)),
+                               "IsWidescreen": (self.IS_WIDESCREEN, (iPlayableService.evVideoSizeChanged,)),
+                               "SubservicesAvailable": (self.SUBSERVICES_AVAILABLE, (iPlayableService.evUpdatedEventInfo,)),
+                               "VideoWidth": (self.XRES, (iPlayableService.evVideoSizeChanged,)),
+                               "VideoHeight": (self.YRES, (iPlayableService.evVideoSizeChanged,)),
                        }[type]
 
-               self.interesting_events = {
-                               self.HAS_TELETEXT: [iPlayableService.evUpdatedInfo],
-                               self.IS_MULTICHANNEL: [iPlayableService.evUpdatedInfo],
-                               self.IS_CRYPTED: [iPlayableService.evUpdatedInfo],
-                               self.IS_WIDESCREEN: [iPlayableService.evVideoSizeChanged],
-                               self.SUBSERVICES_AVAILABLE: [iPlayableService.evUpdatedEventInfo],
-                               self.XRES: [iPlayableService.evVideoSizeChanged],
-                               self.YRES: [iPlayableService.evVideoSizeChanged],
-                       }[self.type]
-
        def getServiceInfoString(self, info, what):
                v = info.getInfo(what)
                if v == -1:
@@ -56,16 +46,18 @@ class ServiceInfo(Converter, object):
                        audio = service.audioTracks()
                        if audio:
                                n = audio.getNumberOfTracks()
-                               for x in range(n):
-                                       i = audio.getTrackInfo(x)
+                               idx = 0
+                               while idx < n:
+                                       i = audio.getTrackInfo(idx)
                                        description = i.getDescription();
-                                       if description.find("AC3") != -1 or description.find("DTS") != -1:
+                                       if "AC3" in description or "DTS" in description:
                                                return True
+                                       idx += 1
                        return False
                elif self.type == self.IS_CRYPTED:
                        return info.getInfo(iServiceInformation.sIsCrypted) == 1
                elif self.type == self.IS_WIDESCREEN:
-                       return info.getInfo(iServiceInformation.sAspect) in [3, 4, 7, 8, 0xB, 0xC, 0xF, 0x10]
+                       return info.getInfo(iServiceInformation.sAspect) in (3, 4, 7, 8, 0xB, 0xC, 0xF, 0x10)
                elif self.type == self.SUBSERVICES_AVAILABLE:
                        subservices = service.subServices()
                        return subservices and subservices.getNumberOfSubservices() > 0
index 18b1f2a592b015233b2041868e56552b9cb27c5c..210c1aab3c225543c175d20330a1627d3423a438 100644 (file)
@@ -47,5 +47,5 @@ class ServiceName(Converter, object):
        text = property(getText)
 
        def changed(self, what):
-               if what[0] != self.CHANGED_SPECIFIC or what[1] in [iPlayableService.evStart]:
+               if what[0] != self.CHANGED_SPECIFIC or what[1] in (iPlayableService.evStart,):
                        Converter.changed(self, what)
index 2bcc54929eb4ca3cbb1d28e1f91033f8b16a0750..b92af40b723e9b447be45338c7f6cd8c639b7f74 100644 (file)
@@ -35,7 +35,7 @@ class ServicePosition(Converter, Poll, object):
                elif type == "Gauge":
                        self.type = self.TYPE_GAUGE
                else:
-                       raise ElementError("type must be {Length|Position|Remaining|Gauge} with optional arguments {Negate|Detailed|ShowHours|NoSeconds}")
+                       raise ElementError("type must be {Length|Position|Remaining|Gauge} with optional arguments {Negate|Detailed|ShowHours|ShowNoSeconds} for ServicePosition converter")
 
                self.poll_enabled = self.type != self.TYPE_LENGTH
 
@@ -128,8 +128,8 @@ class ServicePosition(Converter, Poll, object):
        value = property(getValue)
 
        def changed(self, what):
-               cutlist_refresh = what[0] != self.CHANGED_SPECIFIC or what[1] in [iPlayableService.evCuesheetChanged]
-               time_refresh = what[0] == self.CHANGED_POLL or what[0] == self.CHANGED_SPECIFIC and what[1] in [iPlayableService.evCuesheetChanged]
+               cutlist_refresh = what[0] != self.CHANGED_SPECIFIC or what[1] in (iPlayableService.evCuesheetChanged,)
+               time_refresh = what[0] == self.CHANGED_POLL or what[0] == self.CHANGED_SPECIFIC and what[1] in (iPlayableService.evCuesheetChanged,)
 
                if cutlist_refresh:
                        if self.type == self.TYPE_GAUGE:
index 89965067803779d6e95953b23698ae4d9ceb2349..d30839c6a180fbc0d455620d87e9811468101f90 100644 (file)
@@ -16,7 +16,7 @@ class ServiceTime(Converter, object):
                elif type == "Duration":
                        self.type = self.DURATION
                else:
-                       raise ElementError("'%s' is not <StartTime|EndTime|Duration> for eEventTime converter" % type)
+                       raise ElementError("'%s' is not <StartTime|EndTime|Duration> for ServiceTime converter" % type)
 
        @cached
        def getTime(self):
index 2746ee847aa7c5cf8b89c16f778b46c826e3435a..0c0d274cfba677607a6a3b327065deb364eb9067 100644 (file)
@@ -9,9 +9,6 @@ from Components.Element import cached
 #      "+d:[p:t[,p:t...]]" with d=demux nr, p: pid, t: type
 
 class Streaming(Converter):
-       def __init__(self, type):
-               Converter.__init__(self, type)
-
        @cached
        def getText(self):
                service = self.source.service
index 226247c4a7bac8560bac8fedf3c9b3e12878cb4a..d0886620622e35bfbdcdd441635232fd0976309d 100644 (file)
@@ -55,4 +55,5 @@ class StringList(Converter):
        index = property(getIndex, setIndex)
 
        def entry_changed(self, index):
-               self.downstream_elements.entry_changed(index)
+               if self.content:
+                       self.content.invalidateEntry(index)
index c5f82629998b8b6aee907aebdcfffb2600243674..2f2e757cf4e12b22662c7b2ebb1d9788cce612da 100644 (file)
@@ -31,7 +31,7 @@ class InfoHandler(xml.sax.ContentHandler):
        def startElement(self, name, attrs):
                #print name, ":", attrs.items()
                self.elements.append(name)
-               if name in ["hardware", "bcastsystem", "satellite", "tag"]:
+               if name in ("hardware", "bcastsystem", "satellite", "tag"):
                        if not attrs.has_key("type"):
                                        self.printError(str(name) + " tag with no type attribute")
                        if self.elements[-3] == "default":
index f4a8f1275d346d88b990690a696bf5b179b833b5..509a1c8dd37985f4b5822a1c2750e76277aab79d 100644 (file)
@@ -18,10 +18,10 @@ def cached(f):
 
 class ElementError(Exception):
     def __init__(self, message):
-        self.message = message
+        self.msg = message
 
     def __str__(self):
-        return self.message
+        return self.msg
 
 class Element(object):
        CHANGED_DEFAULT = 0   # initial "pull" state
index 2494ca0808b30c30f11d9679dd0e3b58b1bae81e..fa60400fd3c34641e2374fe9a89d598058f4e262 100644 (file)
@@ -297,6 +297,8 @@ class EPGList(HTMLComponent, GUIComponent):
                return x and x[1]
 
        def moveToService(self,serviceref):
+               if not serviceref:
+                       return
                index = 0
                refstr = serviceref.toString()
                for x in self.list:
@@ -306,6 +308,8 @@ class EPGList(HTMLComponent, GUIComponent):
                        index += 1
                        
        def moveToEventId(self, eventId):
+               if not eventId:
+                       return
                index = 0
                for x in self.list:
                        if x[1] == eventId:
index 75d68fadd5cf73d229dad26efc7d213271533431..ad6c1a3b46e5f3f752ebe08e5845b4fa8acfd427 100755 (executable)
@@ -44,8 +44,8 @@ class Harddisk:
                        self.timer.callback.remove(self.runIdle)
 
        def bus(self):
-               ide_cf = self.device.find("hd") == 0 and self.devidex2.find("host0") == -1 # 7025 specific
-               internal = self.device.find("hd") == 0
+               ide_cf = self.device[:2] == "hd" and "host0" not in self.devidex2 # 7025 specific
+               internal = self.device[:2] == "hd"
                if ide_cf:
                        ret = "External (CF)"
                elif internal:
@@ -73,14 +73,14 @@ class Harddisk:
                return "%d.%03d GB" % (cap/1024, cap%1024)
 
        def model(self):
-               if self.device.find("hd") == 0:
+               if self.device[:2] == "hd":
                        procfile = tryOpen("/proc/ide/"+self.device+"/model")
                        if procfile == "":
                                return ""
                        line = procfile.readline()
                        procfile.close()
                        return line.strip()
-               elif self.device.find("sd") == 0:
+               elif self.device[:2] == "sd":
                        procfile = tryOpen("/sys/block/"+self.device+"/device/vendor")
                        if procfile == "":
                                return ""
@@ -230,9 +230,8 @@ class Harddisk:
        # we set the hdd into standby.
        def readStats(self):
                l = open("/sys/block/%s/stat" % self.device).read()
-               nr_read = int(l[:8].strip())
-               nr_write = int(l[4*9:4*9+8].strip())
-               return nr_read, nr_write
+               (nr_read, _, _, _, nr_write) = l.split()[:5]
+               return int(nr_read), int(nr_write)
 
        def startIdle(self):
                self.last_access = time.time()
@@ -358,8 +357,7 @@ class HarddiskManager:
                                        ("/", _("Internal Flash"))
                                ]
                
-               for x in p:
-                       self.partitions.append(Partition(mountpoint = x[0], description = x[1]))
+               self.partitions.extend([ Partition(mountpoint = x[0], description = x[1]) for x in p ])
 
        def getBlockDevInfo(self, blockdev):
                devpath = "/sys/block/" + blockdev
@@ -371,14 +369,14 @@ class HarddiskManager:
                try:
                        removable = bool(int(open(devpath + "/removable").read()))
                        dev = int(open(devpath + "/dev").read().split(':')[0])
-                       if dev in [7, 31]: # loop, mtdblock
+                       if dev in (7, 31): # loop, mtdblock
                                blacklisted = True
                        if blockdev[0:2] == 'sr':
                                is_cdrom = True
                        if blockdev[0:2] == 'hd':
                                try:
                                        media = open("/proc/ide/%s/media" % blockdev).read()
-                                       if media.find("cdrom") != -1:
+                                       if "cdrom" in media:
                                                is_cdrom = True
                                except IOError:
                                        error = True
@@ -457,11 +455,10 @@ class HarddiskManager:
                                self.on_partition_list_change("remove", x)
                l = len(device)
                if l and not device[l-1].isdigit():
-                       idx = 0
                        for hdd in self.hdd:
                                if hdd.device == device:
-                                       self.hdd[x].stop()
-                                       del self.hdd[idx]
+                                       hdd.stop()
+                                       self.hdd.remove(hdd)
                                        break
                        SystemInfo["Harddisk"] = len(self.hdd) > 0
 
index ddf871a7db4bbc4d21293f738ccf723ceec1e83d..66139dfbcafcfefa207007396b013fdf7c9ec80f 100755 (executable)
@@ -17,8 +17,6 @@ class HelpMenuList(GUIComponent):
                l = [ ]
                for (actionmap, context, actions) in helplist:
                        for (action, help) in actions:
-                               entry = [ ]
-
                                buttons = queryKeyBinding(context, action)
 
                                # do not display entries which are not accessible from keys
@@ -36,13 +34,15 @@ class HelpMenuList(GUIComponent):
                                if flags & 8: # for long keypresses, prepend l_ into the key name.
                                        name = (name[0], "long")
                                        
-                               entry.append( (actionmap, context, action, name ) )
-                                       
+                               entry = [ (actionmap, context, action, name ) ]
+
                                if isinstance(help, list):
                                        self.extendedHelp = True
                                        print "extendedHelpEntry found"
-                                       entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 26, 0, 0, help[0]) )
-                                       entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 28, 400, 20, 1, 0, help[1]) )
+                                       entry.extend((
+                                               (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 26, 0, 0, help[0]),
+                                               (eListboxPythonMultiContent.TYPE_TEXT, 0, 28, 400, 20, 1, 0, help[1])
+                                       ))
                                else:
                                        entry.append( (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 400, 28, 0, 0, help) )
                                        
index 74dd67d85d03d5c93558f31d4d861bf4d1c024de..268fdb21b310389f326cc54e3173adedea43d3a0 100644 (file)
@@ -64,18 +64,17 @@ class Language:
                        self.activateLanguage(self.langlist[index])
 
        def getLanguageList(self):
-               list = []
-               for x in self.langlist:
-                       list.append((x, self.lang[x]))
-               return list
+               return [ (x, self.lang[x]) for x in self.langlist ]
 
        def getActiveLanguage(self):
                return self.activeLanguage
        
        def getActiveLanguageIndex(self):
-               for count in range(len(self.langlist)):
-                       if self.langlist[count] == self.activeLanguage:
-                               return count
+               idx = 0
+               for x in self.langlist:
+                       if x == self.activeLanguage:
+                               return idx
+                       idx += 1
                return None                     
 
        def getLanguage(self):
index 87ba977c0cbc9dba8ff39389289da66a9a52d6d7..12f2727f2094c86c69b6e46a5703cf38de0ed685 100644 (file)
@@ -25,7 +25,7 @@ def PlaylistEntryComponent(serviceref, state):
        text = serviceref.getName()
        if text is "":
                text = path.split(serviceref.getPath().split('/')[-1])[1]
-       res.append((eListboxPythonMultiContent.TYPE_TEXT,25, 0, 470, 32, 0, RT_VALIGN_CENTER, text))
+       res.append((eListboxPythonMultiContent.TYPE_TEXT,25, 1, 470, 22, 0, RT_VALIGN_CENTER, text))
        png = None
        if state == STATE_PLAY:
                png = PlayIcon
@@ -39,7 +39,7 @@ def PlaylistEntryComponent(serviceref, state):
                png = ForwardIcon
 
        if png is not None:
-               res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 5, 0, 16, 16, png))
+               res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 5, 3, 16, 16, png))
 
        return res
 
@@ -47,7 +47,7 @@ class PlayList(MenuList):
        def __init__(self, enableWrapAround = False):
                MenuList.__init__(self, [], enableWrapAround, eListboxPythonMultiContent)
                self.l.setFont(0, gFont("Regular", 18))
-               self.l.setItemHeight(22)
+               self.l.setItemHeight(23)
                self.currPlaying = -1
                self.oldCurrPlaying = -1
                self.serviceHandler = eServiceCenter.getInstance()
index 64b3aa6cefc522b616dd77d56201840fe05315d4..5f7095c4078eeaec9541ff13c47d4c143ccdfb00 100755 (executable)
@@ -3,6 +3,8 @@ from re import compile as re_compile, search as re_search
 from socket import *
 from enigma import eConsoleAppContainer
 from Components.Console import Console
+from Components.PluginComponent import plugins
+from Plugins.Plugin import PluginDescriptor
 
 class Network:
        def __init__(self):
@@ -22,6 +24,7 @@ class Network:
                self.activateConsole = Console()
                self.resetNetworkConsole = Console()
                self.DnsConsole = Console()
+               self.config_ready = None
                self.getInterfaces()
 
        def getInterfaces(self, callback = None):
@@ -222,6 +225,8 @@ class Network:
                                self.loadNameserverConfig()
                                print "read configured interfac:", ifaces
                                print "self.ifaces after loading:", self.ifaces
+                               self.config_ready = True
+                               self.msgPlugins()
                                if callback is not None:
                                        callback(True)
 
@@ -418,6 +423,8 @@ class Network:
                
        def restartNetwork(self,callback = None):
                self.restartConsole = Console()
+               self.config_ready = False
+               self.msgPlugins()
                self.commands = []
                self.commands.append("/etc/init.d/avahi-daemon stop")
                for iface in self.ifaces.keys():
@@ -448,24 +455,34 @@ class Network:
                        
        def stopLinkStateConsole(self):
                if self.LinkConsole is not None:
-                       self.LinkConsole = None
-
+                       if len(self.LinkConsole.appContainers):
+                               for name in self.LinkConsole.appContainers.keys():
+                                       self.LinkConsole.kill(name)
+                                       
        def stopDNSConsole(self):
                if self.DnsConsole is not None:
-                       self.DnsConsole = None
-
+                       if len(self.DnsConsole.appContainers):
+                               for name in self.DnsConsole.appContainers.keys():
+                                       self.DnsConsole.kill(name)
+                                       
        def stopRestartConsole(self):
                if self.restartConsole is not None:
-                       self.restartConsole = None
-                       
+                       if len(self.restartConsole.appContainers):
+                               for name in self.restartConsole.appContainers.keys():
+                                       self.restartConsole.kill(name)
+                                       
        def stopGetInterfacesConsole(self):
                if self.Console is not None:
-                       self.Console = None
-
+                       if len(self.Console.appContainers):
+                               for name in self.Console.appContainers.keys():
+                                       self.Console.kill(name)
+                                       
        def stopDeactivateInterfaceConsole(self):
-               if self.deactivateInterfaceConsole:
-                       self.deactivateInterfaceConsole = None
-                       
+               if self.deactivateInterfaceConsole is not None:
+                       if len(self.deactivateInterfaceConsole.appContainers):
+                               for name in self.deactivateInterfaceConsole.appContainers.keys():
+                                       self.deactivateInterfaceConsole.kill(name)
+                                       
        def checkforInterface(self,iface):
                if self.getAdapterAttribute(iface, 'up') is True:
                        return True
@@ -547,6 +564,11 @@ class Network:
                        netmask = str(inet_ntoa(pack('>L', nm)))
                        return netmask
        
+       def msgPlugins(self):
+               if self.config_ready is not None:
+                       for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKCONFIG_READ):
+                               p(reason=self.config_ready)
+       
 iNetwork = Network()
 
 def InitNetwork():
index 6dc49dcf7fda217456adf1d69637ef3df65bf22a..aa915937f8d4bb3828bd2aeb42a1b485c3002c65 100644 (file)
@@ -112,7 +112,7 @@ class SecConfigure:
                
        def getRoot(self, slotid, connto):
                visited = []
-               while (self.NimManager.getNimConfig(connto).configMode.value in ["satposdepends", "equal", "loopthrough"]):
+               while (self.NimManager.getNimConfig(connto).configMode.value in ("satposdepends", "equal", "loopthrough")):
                        connto = int(self.NimManager.getNimConfig(connto).connectedTo.value)
                        if connto in visited: # prevent endless loop
                                return slotid
@@ -168,7 +168,7 @@ class SecConfigure:
                        hw = HardwareInfo()
                        if slot.isCompatible("DVB-S"):
                                print "slot: " + str(x) + " configmode: " + str(nim.configMode.value)
-                               if nim.configMode.value in [ "loopthrough", "satposdepends", "nothing" ]:
+                               if nim.configMode.value in ( "loopthrough", "satposdepends", "nothing" ):
                                        pass
                                else:
                                        sec.setSlotNotLinked(x)
@@ -389,20 +389,20 @@ class SecConfigure:
                                        else:
                                                sec.setLoDirection(rotorParam.WEST)
 
-                               if currLnb.powerMeasurement.value:
-                                       sec.setUseInputpower(True)
-                                       sec.setInputpowerDelta(currLnb.powerThreshold.value)
-                                       turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW }
-                                       if turn_speed_dict.has_key(currLnb.turningSpeed.value):
-                                               turning_speed = turn_speed_dict[currLnb.turningSpeed.value]
+                                       if currLnb.powerMeasurement.value:
+                                               sec.setUseInputpower(True)
+                                               sec.setInputpowerDelta(currLnb.powerThreshold.value)
+                                               turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW }
+                                               if turn_speed_dict.has_key(currLnb.turningSpeed.value):
+                                                       turning_speed = turn_speed_dict[currLnb.turningSpeed.value]
+                                               else:
+                                                       beg_time = localtime(currLnb.fastTurningBegin.value)
+                                                       end_time = localtime(currLnb.fastTurningEnd.value)
+                                                       turning_speed = ((beg_time.tm_hour + 1) * 60 + beg_time.tm_min + 1) << 16
+                                                       turning_speed |= (end_time.tm_hour + 1) * 60 + end_time.tm_min + 1
+                                               sec.setRotorTurningSpeed(turning_speed)
                                        else:
-                                               beg_time = localtime(currLnb.fastTurningBegin.value)
-                                               end_time = localtime(currLnb.fastTurningEnd.value)
-                                               turning_speed = ((beg_time.tm_hour + 1) * 60 + beg_time.tm_min + 1) << 16
-                                               turning_speed |= (end_time.tm_hour + 1) * 60 + end_time.tm_min + 1
-                                       sec.setRotorTurningSpeed(turning_speed)
-                               else:
-                                       sec.setUseInputpower(False)
+                                               sec.setUseInputpower(False)
 
                                sec.setLNBSlotMask(tunermask)
 
@@ -447,7 +447,7 @@ class NIM(object):
        def __init__(self, slot, type, description, has_outputs = True, internally_connectable = None):
                self.slot = slot
 
-               if type not in ["DVB-S", "DVB-C", "DVB-T", "DVB-S2", None]:
+               if type not in ("DVB-S", "DVB-C", "DVB-T", "DVB-S2", None):
                        print "warning: unknown NIM type %s, not using." % type
                        type = None
 
@@ -458,20 +458,20 @@ class NIM(object):
 
        def isCompatible(self, what):
                compatible = {
-                               None: [None],
-                               "DVB-S": ["DVB-S", None],
-                               "DVB-C": ["DVB-C", None],
-                               "DVB-T": ["DVB-T", None],
-                               "DVB-S2": ["DVB-S", "DVB-S2", None]
+                               None: (None,),
+                               "DVB-S": ("DVB-S", None),
+                               "DVB-C": ("DVB-C", None),
+                               "DVB-T": ("DVB-T", None),
+                               "DVB-S2": ("DVB-S", "DVB-S2", None)
                        }
                return what in compatible[self.type]
        
        def connectableTo(self):
                connectable = {
-                               "DVB-S": ["DVB-S", "DVB-S2"],
-                               "DVB-C": ["DVB-C"],
-                               "DVB-T": ["DVB-T"],
-                               "DVB-S2": ["DVB-S", "DVB-S2"]
+                               "DVB-S": ("DVB-S", "DVB-S2"),
+                               "DVB-C": ("DVB-C",),
+                               "DVB-T": ("DVB-T",),
+                               "DVB-S2": ("DVB-S", "DVB-S2")
                        }
                return connectable[self.type]
 
@@ -781,10 +781,10 @@ class NimManager:
 
                        if configMode == "simple":
                                dm = nim.diseqcMode.value
-                               if dm in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+                               if dm in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                                        if nim.diseqcA.orbital_position != 3601:
                                                list.append(self.satList[nim.diseqcA.index-1])
-                               if dm in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+                               if dm in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                                        if nim.diseqcB.orbital_position != 3601:
                                                list.append(self.satList[nim.diseqcB.index-1])
                                if dm == "diseqc_a_b_c_d":
@@ -835,9 +835,13 @@ class NimManager:
 def InitSecParams():
        config.sec = ConfigSubsection()
 
-       x = ConfigInteger(default=15, limits = (0, 9999))
-       x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_CONT_TONE, configElement.value))
-       config.sec.delay_after_continuous_tone_change = x
+       x = ConfigInteger(default=25, limits = (0, 9999))
+       x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_CONT_TONE_DISABLE_BEFORE_DISEQC, configElement.value))
+       config.sec.delay_after_continuous_tone_disable_before_diseqc = x
+
+       x = ConfigInteger(default=10, limits = (0, 9999))
+       x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_FINAL_CONT_TONE_CHANGE, configElement.value))
+       config.sec.delay_after_final_continuous_tone_change = x
 
        x = ConfigInteger(default=10, limits = (0, 9999))
        x.addNotifier(lambda configElement: secClass.setParam(secClass.DELAY_AFTER_FINAL_VOLTAGE_CHANGE, configElement.value))
@@ -922,57 +926,58 @@ def InitNimManager(nimmgr):
                "unicable": _("Unicable"),
                "c_band": _("C-Band"),
                "user_defined": _("User defined")}
+
        lnb_choices_default = "universal_lnb"
 
        unicablelnbproducts = {
-               "Humax": {"150 SCR":["1210","1420","1680","2040"]},
-               "Inverto": {"IDLP-40UNIQD+S":["1680","1420","2040","1210"]},
-               "Kathrein": {"UAS481":["1400","1516","1632","1748"]},
-               "Kreiling": {"KR1440":["1680","1420","2040","1210"]},
-               "Radix": {"Unicable LNB":["1680","1420","2040","1210"]},
-               "Wisi": {"OC 05":["1210","1420","1680","2040"]}}
+               "Humax": {"150 SCR":("1210","1420","1680","2040")},
+               "Inverto": {"IDLP-40UNIQD+S":("1680","1420","2040","1210")},
+               "Kathrein": {"UAS481":("1400","1516","1632","1748")},
+               "Kreiling": {"KR1440":("1680","1420","2040","1210")},
+               "Radix": {"Unicable LNB":("1680","1420","2040","1210")},
+               "Wisi": {"OC 05":("1210","1420","1680","2040")}}
        UnicableLnbManufacturers = unicablelnbproducts.keys()
        UnicableLnbManufacturers.sort()
 
        unicablematrixproducts = {
                "Ankaro": {
-                       "UCS 51440":["1400","1632","1284","1516"],
-                       "UCS 51820":["1400","1632","1284","1516","1864","2096","1748","1980"],
-                       "UCS 51840":["1400","1632","1284","1516","1864","2096","1748","1980"],
-                       "UCS 52240":["1400","1632"],
-                       "UCS 52420":["1400","1632","1284","1516"],
-                       "UCS 52440":["1400","1632","1284","1516"],
-                       "UCS 91440":["1400","1632","1284","1516"],
-                       "UCS 91820":["1400","1632","1284","1516","1864","2096","1748","1980"],
-                       "UCS 91840":["1400","1632","1284","1516","1864","2096","1748","1980"],
-                       "UCS 92240":["1400","1632"],
-                       "UCS 92420":["1400","1632","1284","1516"],
-                       "UCS 92440":["1400","1632","1284","1516"]},
+                       "UCS 51440":("1400","1632","1284","1516"),
+                       "UCS 51820":("1400","1632","1284","1516","1864","2096","1748","1980"),
+                       "UCS 51840":("1400","1632","1284","1516","1864","2096","1748","1980"),
+                       "UCS 52240":("1400","1632"),
+                       "UCS 52420":("1400","1632","1284","1516"),
+                       "UCS 52440":("1400","1632","1284","1516"),
+                       "UCS 91440":("1400","1632","1284","1516"),
+                       "UCS 91820":("1400","1632","1284","1516","1864","2096","1748","1980"),
+                       "UCS 91840":("1400","1632","1284","1516","1864","2096","1748","1980"),
+                       "UCS 92240":("1400","1632"),
+                       "UCS 92420":("1400","1632","1284","1516"),
+                       "UCS 92440":("1400","1632","1284","1516")},
                "DCT Delta": {
-                       "SUM518":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "SUM918":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "SUM928":["1284","1400","1516","1632","1748","1864","1980","2096"]},
+                       "SUM518":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "SUM918":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "SUM928":("1284","1400","1516","1632","1748","1864","1980","2096")},
                "Inverto": {
-                       "IDLP-UST11O-CUO1O-8PP":["1076","1178","1280","1382","1484","1586","1688","1790"]},
+                       "IDLP-UST11O-CUO1O-8PP":("1076","1178","1280","1382","1484","1586","1688","1790")},
                "Kathrein": {
-                       "EXR501":["1400","1516","1632","1748"],
-                       "EXR551":["1400","1516","1632","1748"],
-                       "EXR552":["1400","1516"]},
+                       "EXR501":("1400","1516","1632","1748"),
+                       "EXR551":("1400","1516","1632","1748"),
+                       "EXR552":("1400","1516")},
                "ROTEK": {
-                       "EKL2/1":["1400","1516"],
-                       "EKL2/1E":["0","0","1632","1748"]},
+                       "EKL2/1":("1400","1516"),
+                       "EKL2/1E":("0","0","1632","1748")},
                "Smart": {
-                       "DPA 51":["1284","1400","1516","1632","1748","1864","1980","2096"]},
+                       "DPA 51":("1284","1400","1516","1632","1748","1864","1980","2096")},
                "Technisat": {
-                       "TechniRouter 5/1x8 G":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "TechniRouter 5/1x8 K":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "TechniRouter 5/2x4 G":["1284","1400","1516","1632"],
-                       "TechniRouter 5/2x4 K":["1284","1400","1516","1632"]},
+                       "TechniRouter 5/1x8 G":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "TechniRouter 5/1x8 K":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "TechniRouter 5/2x4 G":("1284","1400","1516","1632"),
+                       "TechniRouter 5/2x4 K":("1284","1400","1516","1632")},
                "Telstar": {
-                       "SCR 5/1x8 G":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "SCR 5/1x8 K":["1284","1400","1516","1632","1748","1864","1980","2096"],
-                       "SCR 5/2x4 G":["1284","1400","1516","1632"],
-                       "SCR 5/2x4 K":["1284","1400","1516","1632"]}}
+                       "SCR 5/1x8 G":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "SCR 5/1x8 K":("1284","1400","1516","1632","1748","1864","1980","2096"),
+                       "SCR 5/2x4 G":("1284","1400","1516","1632"),
+                       "SCR 5/2x4 K":("1284","1400","1516","1632")}}
        UnicableMatrixManufacturers = unicablematrixproducts.keys()
        UnicableMatrixManufacturers.sort()
 
@@ -982,59 +987,9 @@ def InitNimManager(nimmgr):
                "unicable_user": "Unicable "+_("User defined")}
        unicable_choices_default = "unicable_lnb"
 
-       unicableLnb = ConfigSubDict()
-       for y in unicablelnbproducts:
-               products = unicablelnbproducts[y].keys()
-               products.sort()
-               unicableLnb[y] = ConfigSubsection()
-               unicableLnb[y].product = ConfigSelection(choices = products, default = products[0])
-               unicableLnb[y].scr = ConfigSubDict()
-               unicableLnb[y].vco = ConfigSubDict()
-               for z in products:
-                       scrlist = []
-                       vcolist = unicablelnbproducts[y][z]
-                       unicableLnb[y].vco[z] = ConfigSubList()
-                       for cnt in range(1,1+len(vcolist)):
-                               scrlist.append(("%d" %cnt,"SCR %d" %cnt))
-                               vcofreq = int(vcolist[cnt-1])
-                               unicableLnb[y].vco[z].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
-                       unicableLnb[y].scr[z] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
-       
-       unicableMatrix = ConfigSubDict()
-       
-       for y in unicablematrixproducts:
-               products = unicablematrixproducts[y].keys()
-               products.sort()
-               unicableMatrix[y] = ConfigSubsection()
-               unicableMatrix[y].product = ConfigSelection(choices = products, default = products[0])
-               unicableMatrix[y].scr = ConfigSubDict()
-               unicableMatrix[y].vco = ConfigSubDict()
-               for z in products:
-                       scrlist = []
-                       vcolist = unicablematrixproducts[y][z]
-                       unicableMatrix[y].vco[z] = ConfigSubList()
-                       for cnt in range(1,1+len(vcolist)):
-                               vcofreq = int(vcolist[cnt-1])
-                               if vcofreq == 0:
-                                       scrlist.append(("%d" %cnt,"SCR %d " %cnt +_("not used")))
-                               else:
-                                       scrlist.append(("%d" %cnt,"SCR %d" %cnt))
-                               unicableMatrix[y].vco[z].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
-                       unicableMatrix[y].scr[z] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
-
        advanced_lnb_satcruser_choices = [ ("1", "SatCR 1"), ("2", "SatCR 2"), ("3", "SatCR 3"), ("4", "SatCR 4"),
                                        ("5", "SatCR 5"), ("6", "SatCR 6"), ("7", "SatCR 7"), ("8", "SatCR 8")]
 
-       satcrvcouser = ConfigSubList()
-       satcrvcouser.append(ConfigInteger(default=1284, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1400, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1516, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1632, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1748, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1864, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=1980, limits = (0, 9999)))
-       satcrvcouser.append(ConfigInteger(default=2096, limits = (0, 9999)))
-       
        prio_list = [ ("-1", _("Auto")) ]
        prio_list += [(str(prio), str(prio)) for prio in range(65)+range(14000,14065)+range(19000,19065)]
 
@@ -1073,26 +1028,174 @@ def InitNimManager(nimmgr):
        advanced_lnb_diseqc_repeat_choices = [("none", _("None")), ("one", _("One")), ("two", _("Two")), ("three", _("Three"))]
        advanced_lnb_fast_turning_btime = mktime(datetime(1970, 1, 1, 7, 0).timetuple());
        advanced_lnb_fast_turning_etime = mktime(datetime(1970, 1, 1, 19, 0).timetuple());
+
+       def configLOFChanged(configElement):
+               if configElement.value == "unicable":
+                       x = configElement.slot_id
+                       lnb = configElement.lnb_id
+                       nim = config.Nims[x]
+                       lnbs = nim.advanced.lnb
+                       section = lnbs[lnb]
+                       if isinstance(section.unicable, ConfigNothing):
+                               if lnb == 1:
+                                       section.unicable = ConfigSelection(unicable_choices, unicable_choices_default)
+                               elif lnb == 2:
+                                       section.unicable = ConfigSelection(choices = {"unicable_matrix": _("Unicable Martix"),"unicable_user": "Unicable "+_("User defined")}, default = "unicable_matrix")
+                               else:
+                                       section.unicable = ConfigSelection(choices = {"unicable_user": _("User defined")}, default = "unicable_user")
+
+                               if lnb < 3:
+                                       section.unicableMatrix = ConfigSubDict()
+                                       section.unicableMatrixManufacturer = ConfigSelection(choices = UnicableMatrixManufacturers, default = UnicableMatrixManufacturers[0])
+                                       for y in unicablematrixproducts:
+                                               products = unicablematrixproducts[y].keys()
+                                               products.sort()
+                                               tmp = ConfigSubsection()
+                                               tmp.product = ConfigSelection(choices = products, default = products[0])
+                                               tmp.scr = ConfigSubDict()
+                                               tmp.vco = ConfigSubDict()
+                                               for z in products:
+                                                       scrlist = []
+                                                       vcolist = unicablematrixproducts[y][z]
+                                                       tmp.vco[z] = ConfigSubList()
+                                                       for cnt in range(1,1+len(vcolist)):
+                                                               vcofreq = int(vcolist[cnt-1])
+                                                               if vcofreq == 0:
+                                                                       scrlist.append(("%d" %cnt,"SCR %d " %cnt +_("not used")))
+                                                               else:
+                                                                       scrlist.append(("%d" %cnt,"SCR %d" %cnt))
+                                                               tmp.vco[z].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
+                                                       tmp.scr[z] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
+                                               section.unicableMatrix[y] = tmp
+
+                               if lnb < 2:
+                                       section.unicableLnb = ConfigSubDict()
+                                       section.unicableLnbManufacturer = ConfigSelection(UnicableLnbManufacturers, UnicableLnbManufacturers[0])
+                                       for y in unicablelnbproducts:
+                                               products = unicablelnbproducts[y].keys()
+                                               products.sort()
+                                               tmp = ConfigSubsection()
+                                               tmp.product = ConfigSelection(choices = products, default = products[0])
+                                               tmp.scr = ConfigSubDict()
+                                               tmp.vco = ConfigSubDict()
+                                               for z in products:
+                                                       scrlist = []
+                                                       vcolist = unicablelnbproducts[y][z]
+                                                       tmp.vco[z] = ConfigSubList()
+                                                       for cnt in range(1,1+len(vcolist)):
+                                                               scrlist.append(("%d" %cnt,"SCR %d" %cnt))
+                                                               vcofreq = int(vcolist[cnt-1])
+                                                               tmp.vco[z].append(ConfigInteger(default=vcofreq, limits = (vcofreq, vcofreq)))
+                                                       tmp.scr[z] = ConfigSelection(choices = scrlist, default = scrlist[0][0])
+                                               section.unicableLnb[y] = tmp
+
+                               section.satcruser = ConfigSelection(advanced_lnb_satcruser_choices, default="1")
+                               tmp = ConfigSubList()
+                               tmp.append(ConfigInteger(default=1284, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1400, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1516, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1632, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1748, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1864, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=1980, limits = (0, 9999)))
+                               tmp.append(ConfigInteger(default=2096, limits = (0, 9999)))
+                               section.satcrvcouser = tmp 
+
+       def configDiSEqCModeChanged(configElement):
+               section = configElement.section
+               if configElement.value == "1_2" and isinstance(section.longitude, ConfigNothing):
+                       section.longitude = ConfigFloat(default = [5,100], limits = [(0,359),(0,999)])
+                       section.longitudeOrientation = ConfigSelection(longitude_orientation_choices, "east")
+                       section.latitude = ConfigFloat(default = [50,767], limits = [(0,359),(0,999)])
+                       section.latitudeOrientation = ConfigSelection(latitude_orientation_choices, "north")
+                       section.powerMeasurement = ConfigYesNo(default=True)
+                       section.powerThreshold = ConfigInteger(default=hw.get_device_name() == "dm8000" and 15 or 50, limits=(0, 100))
+                       section.turningSpeed = ConfigSelection(turning_speed_choices, "fast")
+                       section.fastTurningBegin = ConfigDateTime(default=advanced_lnb_fast_turning_btime, formatstring = _("%H:%M"), increment = 600)
+                       section.fastTurningEnd = ConfigDateTime(default=advanced_lnb_fast_turning_etime, formatstring = _("%H:%M"), increment = 600)
+
+       def configLNBChanged(configElement):
+               x = configElement.slot_id
+               nim = config.Nims[x]
+               if isinstance(configElement.value, tuple):
+                       lnb = int(configElement.value[0])
+               else:
+                       lnb = int(configElement.value)
+               lnbs = nim.advanced.lnb
+               if lnb and lnb not in lnbs:
+                       section = lnbs[lnb] = ConfigSubsection()
+                       section.lofl = ConfigInteger(default=9750, limits = (0, 99999))
+                       section.lofh = ConfigInteger(default=10600, limits = (0, 99999))
+                       section.threshold = ConfigInteger(default=11700, limits = (0, 99999))
+#                      section.output_12v = ConfigSelection(choices = [("0V", _("0 V")), ("12V", _("12 V"))], default="0V")
+                       section.increased_voltage = ConfigYesNo(False)
+                       section.toneburst = ConfigSelection(advanced_lnb_toneburst_choices, "none")
+                       section.longitude = ConfigNothing()
+                       if lnb > 32:
+                               tmp = ConfigSelection(advanced_lnb_allsat_diseqcmode_choices, "1_2")
+                               tmp.section = section
+                               configDiSEqCModeChanged(tmp)
+                       else:
+                               tmp = ConfigSelection(advanced_lnb_diseqcmode_choices, "none")
+                               tmp.section = section
+                               tmp.addNotifier(configDiSEqCModeChanged)
+                       section.diseqcMode = tmp
+                       section.commitedDiseqcCommand = ConfigSelection(advanced_lnb_csw_choices)
+                       section.fastDiseqc = ConfigYesNo(False)
+                       section.sequenceRepeat = ConfigYesNo(False)
+                       section.commandOrder1_0 = ConfigSelection(advanced_lnb_commandOrder1_0_choices, "ct")
+                       section.commandOrder = ConfigSelection(advanced_lnb_commandOrder_choices, "ct")
+                       section.uncommittedDiseqcCommand = ConfigSelection(advanced_lnb_ucsw_choices)
+                       section.diseqcRepeats = ConfigSelection(advanced_lnb_diseqc_repeat_choices, "none")
+                       section.prio = ConfigSelection(prio_list, "-1")
+                       section.unicable = ConfigNothing()
+                       tmp = ConfigSelection(lnb_choices, lnb_choices_default)
+                       tmp.slot_id = x
+                       tmp.lnb_id = lnb
+                       tmp.addNotifier(configLOFChanged, initial_call = False)
+                       section.lof = tmp
+
+       def configModeChanged(configMode):
+               slot_id = configMode.slot_id
+               nim = config.Nims[slot_id]
+               if configMode.value == "advanced" and isinstance(nim.advanced, ConfigNothing):
+                       # advanced config:
+                       nim.advanced = ConfigSubsection()
+                       nim.advanced.sat = ConfigSubDict()
+                       nim.advanced.sats = getConfigSatlist(192, advanced_satlist_choices)
+                       nim.advanced.lnb = ConfigSubDict()
+                       nim.advanced.lnb[0] = ConfigNothing()
+                       for x in nimmgr.satList:
+                               tmp = ConfigSubsection()
+                               tmp.voltage = ConfigSelection(advanced_voltage_choices, "polarization")
+                               tmp.tonemode = ConfigSelection(advanced_tonemode_choices, "band")
+                               tmp.usals = ConfigYesNo(True)
+                               tmp.rotorposition = ConfigInteger(default=1, limits=(1, 255))
+                               lnb = ConfigSelection(advanced_lnb_choices, "0")
+                               lnb.slot_id = slot_id
+                               lnb.addNotifier(configLNBChanged, initial_call = False)
+                               tmp.lnb = lnb
+                               nim.advanced.sat[x[0]] = tmp
+                       for x in range(3601, 3605):
+                               tmp = ConfigSubsection()
+                               tmp.voltage = ConfigSelection(advanced_voltage_choices, "polarization")
+                               tmp.tonemode = ConfigSelection(advanced_tonemode_choices, "band")
+                               tmp.usals = ConfigYesNo(default=True)
+                               tmp.rotorposition = ConfigInteger(default=1, limits=(1, 255))
+                               lnbnum = 33+x-3601
+                               lnb = ConfigSelection([("0", "not available"), (str(lnbnum), "LNB %d"%(lnbnum))], "0")
+                               lnb.slot_id = slot_id
+                               lnb.addNotifier(configLNBChanged, initial_call = False)
+                               tmp.lnb = lnb
+                               nim.advanced.sat[x] = tmp
+
        for slot in nimmgr.nim_slots:
                x = slot.slot
                nim = config.Nims[x]
-               
                if slot.isCompatible("DVB-S"):
-                       config_mode_choices = [ ("nothing", _("nothing connected")),
-                               ("simple", _("simple")), ("advanced", _("advanced"))]
-                       if len(nimmgr.getNimListOfType(slot.type, exception = x)) > 0:
-                               config_mode_choices.append(("equal", _("equal to")))
-                               config_mode_choices.append(("satposdepends", _("second cable of motorized LNB")))
-                       if len(nimmgr.canConnectTo(x)) > 0:
-                               config_mode_choices.append(("loopthrough", _("loopthrough to")))
-                       nim.configMode = ConfigSelection(config_mode_choices, "nothing")
-
                        nim.diseqc13V = ConfigYesNo(False)
-
                        nim.diseqcMode = ConfigSelection(diseqc_mode_choices, "diseqc_a_b")
-
                        nim.connectedTo = ConfigSelection([(str(id), nimmgr.getNimDescription(id)) for id in nimmgr.getNimListOfType("DVB-S") if id != x])
-
                        nim.simpleSingleSendDiSEqC = ConfigYesNo(False)
                        nim.simpleDiSEqCSetVoltageTone = ConfigYesNo(True)
                        nim.simpleDiSEqCOnlyOnSatChange = ConfigYesNo(False)
@@ -1112,75 +1215,18 @@ def InitNimManager(nimmgr):
                        nim.fastTurningBegin = ConfigDateTime(default = mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 900)
                        etime = datetime(1970, 1, 1, 19, 0);
                        nim.fastTurningEnd = ConfigDateTime(default = mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 900)
-
-                       # advanced config:
-                       nim.advanced = ConfigSubsection()
-                       nim.advanced.sats = getConfigSatlist(192, advanced_satlist_choices)
-                       nim.advanced.sat = ConfigSubDict()
-
-                       for x in nimmgr.satList:
-                               nim.advanced.sat[x[0]] = ConfigSubsection()
-                               nim.advanced.sat[x[0]].voltage = ConfigSelection(advanced_voltage_choices, "polarization")
-                               nim.advanced.sat[x[0]].tonemode = ConfigSelection(advanced_tonemode_choices, "band")
-                               nim.advanced.sat[x[0]].usals = ConfigYesNo(True)
-                               nim.advanced.sat[x[0]].rotorposition = ConfigInteger(default=1, limits=(1, 255))
-                               nim.advanced.sat[x[0]].lnb = ConfigSelection(advanced_lnb_choices, "0")
-
-                       for x in range(3601, 3605):
-                               nim.advanced.sat[x] = ConfigSubsection()
-                               nim.advanced.sat[x].voltage = ConfigSelection(advanced_voltage_choices, "polarization")
-                               nim.advanced.sat[x].tonemode = ConfigSelection(advanced_tonemode_choices, "band")
-                               nim.advanced.sat[x].usals = ConfigYesNo(default=True)
-                               nim.advanced.sat[x].rotorposition = ConfigInteger(default=1, limits=(1, 255))
-                               lnbnum = 33+x-3601
-                               nim.advanced.sat[x].lnb = ConfigSelection([("0", "not available"), (str(lnbnum), "LNB %d"%(lnbnum))], "0")
-
-                       nim.advanced.lnb = ConfigSubList()
-                       nim.advanced.lnb.append(ConfigNothing())
-
-                       for x in range(1, 37):
-                               nim.advanced.lnb.append(ConfigSubsection())
-                               nim.advanced.lnb[x].lof = ConfigSelection(lnb_choices, lnb_choices_default)
-
-                               nim.advanced.lnb[x].lofl = ConfigInteger(default=9750, limits = (0, 99999))
-                               nim.advanced.lnb[x].lofh = ConfigInteger(default=10600, limits = (0, 99999))
-                               nim.advanced.lnb[x].threshold = ConfigInteger(default=11700, limits = (0, 99999))
-
-                               nim.advanced.lnb[x].unicable = ConfigSelection(unicable_choices, unicable_choices_default)
-
-                               nim.advanced.lnb[x].unicableLnb = unicableLnb # is this okay? all lnb use the same ConfigSubDict ? ! ?
-                               nim.advanced.lnb[x].unicableLnbManufacturer = ConfigSelection(UnicableLnbManufacturers, UnicableLnbManufacturers[0])
-                               
-                               nim.advanced.lnb[x].unicableMatrix = unicableMatrix # is this okay? all lnb use the same ConfigSubDict ? ! ?
-                               nim.advanced.lnb[x].unicableMatrixManufacturer = ConfigSelection(UnicableMatrixManufacturers, UnicableMatrixManufacturers[0])
-                               
-                               nim.advanced.lnb[x].satcruser = ConfigSelection(advanced_lnb_satcruser_choices, "1")
-                               nim.advanced.lnb[x].satcrvcouser = satcrvcouser # is this okay? all lnb use the same ConfigSubDict ? ! ?
-
-#                              nim.advanced.lnb[x].output_12v = ConfigSelection(choices = [("0V", _("0 V")), ("12V", _("12 V"))], default="0V")
-                               nim.advanced.lnb[x].increased_voltage = ConfigYesNo(False)
-                               nim.advanced.lnb[x].toneburst = ConfigSelection(advanced_lnb_toneburst_choices, "none")
-                               if x > 32:
-                                       nim.advanced.lnb[x].diseqcMode = ConfigSelection(advanced_lnb_allsat_diseqcmode_choices, "1_2")
-                               else:
-                                       nim.advanced.lnb[x].diseqcMode = ConfigSelection(advanced_lnb_diseqcmode_choices, "none")
-                               nim.advanced.lnb[x].commitedDiseqcCommand = ConfigSelection(advanced_lnb_csw_choices)
-                               nim.advanced.lnb[x].fastDiseqc = ConfigYesNo(False)
-                               nim.advanced.lnb[x].sequenceRepeat = ConfigYesNo(False)
-                               nim.advanced.lnb[x].commandOrder1_0 = ConfigSelection(advanced_lnb_commandOrder1_0_choices, "ct")
-                               nim.advanced.lnb[x].commandOrder = ConfigSelection(advanced_lnb_commandOrder_choices, "ct")
-                               nim.advanced.lnb[x].uncommittedDiseqcCommand = ConfigSelection(advanced_lnb_ucsw_choices)
-                               nim.advanced.lnb[x].diseqcRepeats = ConfigSelection(advanced_lnb_diseqc_repeat_choices, "none")
-                               nim.advanced.lnb[x].longitude = ConfigFloat(default = [5,100], limits = [(0,359),(0,999)])
-                               nim.advanced.lnb[x].longitudeOrientation = ConfigSelection(longitude_orientation_choices, "east")
-                               nim.advanced.lnb[x].latitude = ConfigFloat(default = [50,767], limits = [(0,359),(0,999)])
-                               nim.advanced.lnb[x].latitudeOrientation = ConfigSelection(latitude_orientation_choices, "north")
-                               nim.advanced.lnb[x].powerMeasurement = ConfigYesNo(default=True)
-                               nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=hw.get_device_name() == "dm8000" and 15 or 50, limits=(0, 100))
-                               nim.advanced.lnb[x].turningSpeed = ConfigSelection(turning_speed_choices, "fast")
-                               nim.advanced.lnb[x].fastTurningBegin = ConfigDateTime(default=advanced_lnb_fast_turning_btime, formatstring = _("%H:%M"), increment = 600)
-                               nim.advanced.lnb[x].fastTurningEnd = ConfigDateTime(default=advanced_lnb_fast_turning_etime, formatstring = _("%H:%M"), increment = 600)
-                               nim.advanced.lnb[x].prio = ConfigSelection(prio_list, "-1")
+                       config_mode_choices = [ ("nothing", _("nothing connected")),
+                               ("simple", _("simple")), ("advanced", _("advanced"))]
+                       if len(nimmgr.getNimListOfType(slot.type, exception = x)) > 0:
+                               config_mode_choices.append(("equal", _("equal to")))
+                               config_mode_choices.append(("satposdepends", _("second cable of motorized LNB")))
+                       if len(nimmgr.canConnectTo(x)) > 0:
+                               config_mode_choices.append(("loopthrough", _("loopthrough to")))
+                       nim.advanced = ConfigNothing()
+                       tmp = ConfigSelection(config_mode_choices, "nothing")
+                       tmp.slot_id = x
+                       tmp.addNotifier(configModeChanged, initial_call = False)
+                       nim.configMode = tmp
                elif slot.isCompatible("DVB-C"):
                        nim.configMode = ConfigSelection(
                                choices = {
index 8c8a3305cc64c18217b12a8b7ac10ea6990cf5ce..d68e01ffd9ddfde9365dd5a85584481fadebf048 100644 (file)
@@ -33,7 +33,7 @@ def InitParentalControl():
 
        config.ParentalControl.servicepin = ConfigSubList()
 
-       for i in range(3):
+       for i in (0, 1, 2):
                config.ParentalControl.servicepin.append(ConfigPIN(default = -1))
                #config.ParentalControl.servicepin.append(configElement("config.ParentalControl.servicepin.level" + str(i), configSequence, "0000", configSequenceArg().get("PINCODE", (4, ""))))
 
@@ -117,10 +117,7 @@ class ParentalControl:
                        return -1
        
        def getPinList(self):
-               pinList = []
-               for x in config.ParentalControl.servicepin:
-                       pinList.append(x.value)
-               return pinList
+               return [ x.value for x in config.ParentalControl.servicepin ]
        
        def servicePinEntered(self, service, result):
 #              levelNeeded = 0
index 71912620437a695ec9bf5a87ab127e3c84b402ec..128e6d3e37844bd7e11f81b8ec885a9e1a0d0abd 100644 (file)
@@ -8,8 +8,10 @@ from Tools.LoadPixmap import LoadPixmap
 lockPicture = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock.png"))
 
 def ParentalControlEntryComponent(service, name, locked = True):
-       res = [ (service, name, locked) ]
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 80, 5, 300, 50, 0, RT_HALIGN_LEFT, name))
+       res = [
+               (service, name, locked),
+               (eListboxPythonMultiContent.TYPE_TEXT, 80, 5, 300, 50, 0, RT_HALIGN_LEFT, name)
+       ]
        if locked:
                res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 0, 0, 32, 32, lockPicture))
        return res
index 6e357cd0431aa3367f10ad4a71644625b7e37ab4..fff5c47575011e35b119b17ee2c59f9e7add53e8 100644 (file)
@@ -96,9 +96,9 @@ class PluginComponent:
                res = [ ]
 
                for x in where:
-                       for p in self.plugins.get(x, [ ]):
-                               res.append(p)
-               return res
+                       res.extend(self.plugins.get(x, [ ]))
+
+               return  res
 
        def getPluginsForMenu(self, menuid):
                res = [ ]
index 63136ccee20a3c78b6b7b4509186d3e2531f0b1b..39c60ff7f5845c41b2ccabf7b7e7fb9f9cf2a7d0 100644 (file)
@@ -7,40 +7,38 @@ from enigma import eListboxPythonMultiContent, gFont
 from Tools.LoadPixmap import LoadPixmap
 
 def PluginEntryComponent(plugin):
-       res = [ plugin ]
-       
-       res.append(MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=plugin.name))
-       res.append(MultiContentEntryText(pos=(120, 26), size=(320, 17), font=1, text=plugin.description))
-
        if plugin.icon is None:
                png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/plugin.png"))
        else:
                png = plugin.icon
-       res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(100, 40), png = png))
-       
-       return res
+
+       return [
+               plugin,
+               MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=plugin.name),
+               MultiContentEntryText(pos=(120, 26), size=(320, 17), font=1, text=plugin.description),
+               MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(100, 40), png = png)
+       ]
 
 def PluginCategoryComponent(name, png):
-       res = [ name ]
-       
-       res.append(MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=name))
-       res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 0), size=(100, 50), png = png))
-       
-       return res
+       return [
+               name,
+               MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=name),
+               MultiContentEntryPixmapAlphaTest(pos=(10, 0), size=(100, 50), png = png)
+       ]
 
 def PluginDownloadComponent(plugin, name):
-       res = [ plugin ]
-       
-       res.append(MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=name))
-       res.append(MultiContentEntryText(pos=(120, 26), size=(320, 17), font=1, text=plugin.description))
-
        if plugin.icon is None:
                png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/plugin.png"))
        else:
                png = plugin.icon
-       res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 0), size=(100, 50), png = png))
+
+       return [
+               plugin,
+               MultiContentEntryText(pos=(120, 5), size=(320, 25), font=0, text=name),
+               MultiContentEntryText(pos=(120, 26), size=(320, 17), font=1, text=plugin.description),
+               MultiContentEntryPixmapAlphaTest(pos=(10, 0), size=(100, 50), png = png)
+       ]
        
-       return res
 
 class PluginList(MenuList):
        def __init__(self, list, enableWrapAround=False):
index cd329b562cebf98e1e1329562260c5e71c0c1736..dcb9cd2fe22c038879ba2b044f42a156f5966ea2 100644 (file)
@@ -2,9 +2,6 @@ from Components.Element import Element
 
 # this is not a GUI renderer.
 class FrontpanelLed(Element):
-       def __init__(self):
-               Element.__init__(self)
-
        def changed(self, *args, **kwargs):
                if self.source.value or 1:
                        pattern = 0x55555555
index de19c9aaf3cc555b1fff8f9555abf94f29447a6c..5ae43ed8b80fab4c3aa70e3cb00381e5166ba25a 100644 (file)
@@ -6,9 +6,9 @@ from enigma import ePixmap
 from Tools.Directories import fileExists, SCOPE_SKIN_IMAGE, SCOPE_CURRENT_SKIN, resolveFilename
 
 class Picon(Renderer):
-       searchPaths = ['/usr/share/enigma2/%s/',
+       searchPaths = ('/usr/share/enigma2/%s/',
                                '/media/cf/%s/',
-                               '/media/usb/%s/']
+                               '/media/usb/%s/')
 
        def __init__(self):
                Renderer.__init__(self)
index 17c4aaa8d062b361dbbdc09871502cb4ae38285a..813c09f896884301254512a67ee334d126746e60 100644 (file)
@@ -114,13 +114,10 @@ def scanDevice(mountpoint):
 
        # ...then remove with_subdir=False when same path exists
        # with with_subdirs=True
-       for p in set(paths_to_scan):
+       for p in paths_to_scan:
                if p.with_subdirs == True and ScanPath(path=p.path) in paths_to_scan:
                        paths_to_scan.remove(ScanPath(path=p.path))
 
-       # convert to list
-       paths_to_scan = list(paths_to_scan)
-
        from Components.Harddisk import harddiskmanager 
        blockdev = mountpoint.rstrip("/").rsplit('/',1)[-1]
        error, blacklisted, removable, is_cdrom, partitions, medium_found = harddiskmanager.getBlockDevInfo(blockdev)
index a4f1d71af02e828f33c5d9fcffa1065b237402f1..08af7d02c31aa53ca35c3906962d0740245c9d10 100644 (file)
@@ -6,8 +6,10 @@ from Tools.LoadPixmap import LoadPixmap
 selectionpng = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/selectioncross.png"))
 
 def SelectionEntryComponent(description, value, index, selected):
-       res = [ (description, value, index, selected) ]
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 30, 3, 500, 30, 0, RT_HALIGN_LEFT, description))
+       res = [
+               (description, value, index, selected),
+               (eListboxPythonMultiContent.TYPE_TEXT, 30, 3, 500, 30, 0, RT_HALIGN_LEFT, description)
+       ]
        if selected:
                res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, 0, 0, 30, 30, selectionpng))
        return res
@@ -23,13 +25,11 @@ class SelectionList(MenuList):
                self.setList(self.list)
 
        def toggleSelection(self):
-               item = self.list[self.getSelectedIndex()][0]
-               self.list[self.getSelectedIndex()] = SelectionEntryComponent(item[0], item[1], item[2], not item[3])
+               idx = self.getSelectedIndex()
+               item = self.list[idx][0]
+               self.list[idx] = SelectionEntryComponent(item[0], item[1], item[2], not item[3])
                self.setList(self.list)
 
        def getSelectionsList(self):
-               list = []
-               for item in self.list:
-                       if item[0][3]:
-                               list.append((item[0][0], item[0][1], item[0][2]))
-               return list
+               return [ (item[0][0], item[0][1], item[0][2]) for item in self.list if item[0][3] ]
+
index dbe442d17271a9b8e432dfc05987d294fcccf57f..1eab32b22db1314cf0ba458b6fa11378592038ce 100644 (file)
@@ -27,7 +27,7 @@ to generate HTML."""
 
        def entry_changed(self, index):
                if not self.disable_callbacks:
-                       self.downstream_elements.entry_changed(self, index)
+                       self.downstream_elements.entry_changed(index)
 
        def modifyEntry(self, index, data):
                self.__list[index] = data
index 3ec9a25db60fa65e02d9c8396eee977dd808140b..26a3e5a74c3b01bc69f0f0028c64b59c373c0ab1 100644 (file)
@@ -23,7 +23,7 @@ class RdsDecoder(PerServiceBase, Source, object):
        decoder = property(getDecoder)
 
        def gotEvent(self, what):
-               if what in [iPlayableService.evStart, iPlayableService.evEnd]:
+               if what in (iPlayableService.evStart, iPlayableService.evEnd):
                        self.changed((self.CHANGED_CLEAR,))
                else:
                        self.changed((self.CHANGED_SPECIFIC, what))
index a237c3644026ebcf805b6ee4119f70a3d978944c..44a7eb4f4cc91fad95b508ec3cb5840a200b4b32 100644 (file)
@@ -21,7 +21,7 @@ class TimerList(HTMLComponent, GUIComponent, object):
                res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 30, width, 20, 1, RT_HALIGN_LEFT|RT_VALIGN_CENTER, timer.name))
 
                repeatedtext = ""
-               days = [ _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") ]
+               days = ( _("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun") )
                if timer.repeated:
                        flags = timer.repeated
                        count = 0
@@ -93,7 +93,7 @@ class TimerList(HTMLComponent, GUIComponent, object):
        def getCurrentIndex(self):
                return self.instance.getCurrentIndex()
 
-       currentIndex = property(moveToIndex, getCurrentIndex)
+       currentIndex = property(getCurrentIndex, moveToIndex)
        currentSelection = property(getCurrent)
 
        def moveDown(self):
index cf50502215000653214a785bb87c31b1ba1c6f6f..c0ca10fa7979d0ce5aae12871ce01ce28bd064f2 100644 (file)
@@ -135,8 +135,7 @@ class TimerSanityCheck:
                                                        self.nrep_eventlist.extend([(new_event_begin, self.bflag, event[1]),(new_event_end, self.eflag, event[1])])
                else:
                        offset_0 = 345600 # the Epoch begins on Thursday
-                       weeks = 2 # test two weeks to take care of Sunday-Monday transitions
-                       for cnt in range(weeks):
+                       for cnt in (0, 1): # test two weeks to take care of Sunday-Monday transitions
                                for event in self.rep_eventlist:
                                        if event[1] == -1: # -1 is the identifier of the changed timer
                                                event_begin = self.newtimer.begin
index f3e24ee6c766eb4cd502c0efa47e050b1a52d849..7f709159286b0065cc3e53fd9a1dd6f76e9b7c74 100644 (file)
@@ -52,11 +52,8 @@ class Timezones:
                        e_tzset()
                
        def getTimezoneList(self):
-               list = []
-               for x in self.timezones:
-                       list.append(str(x[0]))
-               return list
-       
+               return [ str(x[0]) for x in self.timezones ]
+
        def getDefaultTimezone(self):
                # TODO return something more useful - depending on country-settings?
                t = "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Vienna"
index de7b0098b789c531680767dbd95fb6bad75e5ebb..e3b7d9e3c7a6b5df12567d4da5f93f2cab61ffdc 100644 (file)
@@ -4,8 +4,8 @@ class Tuner:
        def __init__(self, frontend):
                self.frontend = frontend
 
-       # transponder = (frequency, symbolrate, polarisation, fec, inversion, orbpos, system, modulation)
-       #                    0         1             2         3       4         5       6        7
+       # transponder = (frequency, symbolrate, polarisation, fec, inversion, orbpos, system, modulation, rolloff, pilot, tsid, onid)
+       #                    0         1             2         3       4         5       6        7          8       9      10    11
        def tune(self, transponder):
                if self.frontend:
                        print "tuning to transponder with data", transponder
@@ -102,8 +102,8 @@ class TuneTest:
                                pidsFailed = False
                                if self.checkPIDs:
                                        if self.currTuned is not None:
-                                               if self.tsid != self.currTuned[8] or self.onid != self.currTuned[9]:
-                                                       self.failedTune.append([self.currTuned, self.oldTuned, "pids_failed", {"real": (self.tsid, self.onid), "expected": (self.currTuned[8], self.currTuned[9])}])
+                                               if self.tsid != self.currTuned[10] or self.onid != self.currTuned[11]:
+                                                       self.failedTune.append([self.currTuned, self.oldTuned, "pids_failed", {"real": (self.tsid, self.onid), "expected": (self.currTuned[10], self.currTuned[11])}])
                                                        pidsFailed = True
                                                else:
                                                        self.successfullyTune.append([self.currTuned, self.oldTuned])
@@ -140,7 +140,7 @@ class TuneTest:
                        # check for tsid != -1 and onid != -1 
                        print "index:", index
                        print "len(self.transponderlist):", len(self.transponderlist)
-                       while (index < len(self.transponderlist) and (self.transponderlist[index][8] == -1 or self.transponderlist[index][9] == -1)):
+                       while (index < len(self.transponderlist) and (self.transponderlist[index][10] == -1 or self.transponderlist[index][11] == -1)):
                                index += 1
                print "FirstTransponder final index:", index
                return index
@@ -153,7 +153,7 @@ class TuneTest:
                        # check for tsid != -1 and onid != -1 
                        print "index:", index
                        print "len(self.transponderlist):", len(self.transponderlist)
-                       while (index < len(self.transponderlist) and (self.transponderlist[index][8] == -1 or self.transponderlist[index][9] == -1)):
+                       while (index < len(self.transponderlist) and (self.transponderlist[index][10] == -1 or self.transponderlist[index][11] == -1)):
                                index += 1
 
                print "next transponder index:", index
@@ -203,8 +203,8 @@ class TuneTest:
                self.progressCallback((self.getProgressLength(), self.tuningtransponder, self.STATUS_START, self.currTuned))
                self.timer.start(100, True)
        
-       # transponder = (frequency, symbolrate, polarisation, fec, inversion, orbpos, <system>, <modulation>, <tsid>, <onid>)
-       #                    0         1             2         3       4         5       6        7              8      9
+       # transponder = (frequency, symbolrate, polarisation, fec, inversion, orbpos, <system>, <modulation>, <rolloff>, <pilot>, <tsid>, <onid>)
+       #                    0         1             2         3       4         5       6        7              8         9        10       11
        def addTransponder(self, transponder):
                self.transponderlist.append(transponder)
                
index a6d34152e0882b153ecb950270a4e6ed37d43954..c810e14beb7de3dfa49bd2a29db4ef3ff3ede541 100755 (executable)
@@ -279,8 +279,8 @@ class ConfigSelection(ConfigElement):
                if default is None:
                        default = self.choices.default()
 
+               self._descr = None
                self.default = self._value = self.last_value = default
-               self.changed()
 
        def setChoices(self, choices, default = None):
                self.choices = choicesList(choices)
@@ -296,6 +296,7 @@ class ConfigSelection(ConfigElement):
                        self._value = value
                else:
                        self._value = self.default
+               self._descr = None
                self.changed()
 
        def tostring(self, val):
@@ -307,7 +308,7 @@ class ConfigSelection(ConfigElement):
        def setCurrentText(self, text):
                i = self.choices.index(self.value)
                self.choices[i] = text
-               self.description[text] = text
+               self._descr = self.description[text] = text
                self._value = text
 
        value = property(getValue, setValue)
@@ -336,13 +337,18 @@ class ConfigSelection(ConfigElement):
                self.value = self.choices[(i + 1) % nchoices]
 
        def getText(self):
-               descr = self.description[self.value]
+               if self._descr is not None:
+                       return self._descr
+               descr = self._descr = self.description[self.value]
                if descr:
                        return _(descr)
                return descr
 
        def getMulti(self, selected):
-               descr = self.description[self.value]
+               if self._descr is not None:
+                       descr = self._descr
+               else:
+                       descr = self._descr = self.description[self.value]
                if descr:
                        return ("text", _(descr))
                return ("text", descr)
@@ -378,7 +384,7 @@ class ConfigBoolean(ConfigElement):
                self.value = self.last_value = self.default = default
 
        def handleKey(self, key):
-               if key in [KEY_LEFT, KEY_RIGHT]:
+               if key in (KEY_LEFT, KEY_RIGHT):
                        self.value = not self.value
                elif key == KEY_HOME:
                        self.value = False
@@ -1022,6 +1028,13 @@ class ConfigNumber(ConfigText):
        value = property(getValue, setValue)
        _value = property(getValue, setValue)
 
+       def isChanged(self):
+               sv = self.saved_value
+               strv = self.tostring(self.value)
+               if sv is None and strv == self.default:
+                       return False
+               return strv != sv
+
        def conform(self):
                pos = len(self.text) - self.marked_pos
                self.text = self.text.lstrip("0")
@@ -1180,7 +1193,7 @@ class ConfigSet(ConfigElement):
                                self.pos = -1
                        else:
                                self.pos += 1
-               elif key in [KEY_HOME, KEY_END]:
+               elif key in (KEY_HOME, KEY_END):
                        self.pos = -1
 
        def genString(self, lst):
@@ -1345,7 +1358,7 @@ class ConfigLocations(ConfigElement):
                        self.pos += 1
                        if self.pos >= len(self.value):
                                self.pos = -1
-               elif key in [KEY_HOME, KEY_END]:
+               elif key in (KEY_HOME, KEY_END):
                        self.pos = -1
 
        def getText(self):
@@ -1607,8 +1620,9 @@ class Config(ConfigSubsection):
                        self.setSavedValue(tree["config"])
 
        def saveToFile(self, filename):
+               text = self.pickle()
                f = open(filename, "w")
-               f.write(self.pickle())
+               f.write(text)
                f.close()
 
        def loadFromFile(self, filename):
index 741d9eb62e6f6e7443cb513ee251fb875be1aef8..ae4fbb4bf55972d34ba8b62073fd87bc19e38726 100644 (file)
@@ -33,7 +33,7 @@
        <map context="CutListEditorActions">
 <!--           <key id="KEY_NEXT" mapto="setIn" flags="m" />
                <key id="KEY_PREVIOUS" mapto="setOut" flags="m" /> -->
-               <key id="KEY_0" mapto="setMark" flags="m" />
+<!--           <key id="KEY_0" mapto="setMark" flags="m" />  -->
 <!--           <key id="KEY_CHANNELUP" mapto="addMark" flags="m" />
                <key id="KEY_CHANNELDOWN" mapto="removeMark" flags="m" /> -->
                <key id="KEY_EXIT" mapto="leave" flags="m" />
index 1ef15a53b9e491232858e297d84441a81e5a754f..ed7cfb70a6cbf173903b43c70eb3a0685d96112d 100644 (file)
@@ -317,7 +317,7 @@ class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, He
                elif result == CutListContextMenu.RET_ENDCUT:
                        # remove in/out marks between the new cut
                        for (where, what) in self.cut_list[:]:
-                               if self.cut_start <= where <= self.context_position and what in [0,1]:
+                               if self.cut_start <= where <= self.context_position and what in (0,1):
                                        self.cut_list.remove((where, what))
 
                        bisect.insort(self.cut_list, (self.cut_start, 1))
@@ -350,7 +350,7 @@ class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, He
                elif result == CutListContextMenu.RET_REMOVEBEFORE:
                        # remove in/out marks before current position
                        for (where, what) in self.cut_list[:]:
-                               if where <= self.context_position and what in [0,1]:
+                               if where <= self.context_position and what in (0,1):
                                        self.cut_list.remove((where, what))
                        # add 'in' point
                        bisect.insort(self.cut_list, (self.context_position, 0))
@@ -358,7 +358,7 @@ class CutListEditor(Screen, InfoBarBase, InfoBarSeek, InfoBarCueSheetSupport, He
                elif result == CutListContextMenu.RET_REMOVEAFTER:
                        # remove in/out marks after current position
                        for (where, what) in self.cut_list[:]:
-                               if where >= self.context_position and what in [0,1]:
+                               if where >= self.context_position and what in (0,1):
                                        self.cut_list.remove((where, what))
                        # add 'out' point
                        bisect.insort(self.cut_list, (self.context_position, 1))
index d0c9d3c63c0b973448139f5fd2e5f36066b57d62..6d9a44918c1ecb9d95dbe4a255488df60fdd757d 100644 (file)
@@ -372,11 +372,11 @@ class CheckDiskspaceTask(Task):
                self.finish(aborted = True)
 
        def run(self, callback):
+               self.callback = callback
                failed_preconditions = self.checkPreconditions(True) + self.checkPreconditions(False)
                if len(failed_preconditions):
                        callback(self, failed_preconditions)
                        return
-               self.callback = callback
                Task.processFinished(self, 0)
 
 class PreviewTask(Task):
index 7407263d0b5d04a8029b43d0e196ede488a9558f..a8888da3cbad2715da86f8329b4dbb38105337c0 100644 (file)
@@ -18,11 +18,12 @@ class FileBrowser(Screen, HelpableScreen):
        <screen name="FileBrowser" position="100,100" size="520,376" title="DVD File Browser" >
                <widget name="filelist" position="0,0" size="520,376" scrollbarMode="showOnDemand" />
        </screen>"""
-       def __init__(self, session, scope, settings):
+       def __init__(self, session, scope, configRef):
                Screen.__init__(self, session)
                HelpableScreen.__init__(self)
                self.scope = scope
                pattern = ""
+               self.configRef = configRef
                currDir = "/"
                if self.scope == "project":
                        currDir = self.getDir()
@@ -31,19 +32,19 @@ class FileBrowser(Screen, HelpableScreen):
                        currDir = self.getDir()
                        pattern = "(?i)^.*\.(ddvdm\.xml)"
                if self.scope == "menubg":
-                       currDir = self.getDir(settings.menubg)
+                       currDir = self.getDir(configRef.getValue())
                        pattern = "(?i)^.*\.(jpeg|jpg|jpe|png|bmp)"
                elif self.scope == "menuaudio":
-                       currDir = self.getDir(settings.menuaudio)
+                       currDir = self.getDir(configRef.getValue())
                        pattern = "(?i)^.*\.(mp2|m2a|ac3)"
                elif self.scope == "vmgm":
-                       currDir = self.getDir(settings.vmgm)
+                       currDir = self.getDir(configRef.getValue())
                        pattern = "(?i)^.*\.(mpg|mpeg)"
                elif self.scope == "font_face":
-                       currDir = self.getDir(settings.font_face, resolveFilename(SCOPE_FONTS))
+                       currDir = self.getDir(configRef.getValue(), resolveFilename(SCOPE_FONTS))
                        pattern = "(?i)^.*\.(ttf)"
                elif self.scope == "isopath":
-                       currDir = settings.isopath.getValue()
+                       currDir = configRef.getValue()
                elif self.scope == "image":
                        currDir = resolveFilename(SCOPE_HDD)
                        pattern = "(?i)^.*\.(iso)"
@@ -57,11 +58,9 @@ class FileBrowser(Screen, HelpableScreen):
                                "cancel": self.exit
                        })
 
-       def getDir(self, key=None, defaultDir=None):
-               if key:
-                       settingDir = key.getValue()
-                       if len(settingDir) > 1:
-                               return (settingDir.rstrip("/").rsplit("/",1))[0]
+       def getDir(self, currentVal=None, defaultDir=None):
+               if currentVal:
+                       return (currentVal.rstrip("/").rsplit("/",1))[0]
                return defaultDir or (resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/")
 
        def ok(self):
@@ -70,15 +69,15 @@ class FileBrowser(Screen, HelpableScreen):
                        if self.scope == "image":
                                path = self["filelist"].getCurrentDirectory() or ""
                                if fileExists(path+"VIDEO_TS"):
-                                       self.close(path,self.scope)
+                                       self.close(path,self.scope,self.configRef)
                else:
                        ret = self["filelist"].getCurrentDirectory() + '/' + self["filelist"].getFilename()
-                       self.close(ret,self.scope)
+                       self.close(ret,self.scope,self.configRef)
 
        def exit(self):
                if self.scope == "isopath":
-                       self.close(self["filelist"].getCurrentDirectory(),self.scope)
-               self.close(None,False)
+                       self.close(self["filelist"].getCurrentDirectory(),self.scope,self.configRef)
+               self.close(None,False,None)
 
 class ProjectSettings(Screen,ConfigListScreen):
        skin = """
@@ -102,18 +101,21 @@ class ProjectSettings(Screen,ConfigListScreen):
                self["key_red"] = StaticText(_("Cancel"))
                self["key_green"] = StaticText(_("OK"))
                self["key_yellow"] = StaticText(_("Load"))
-               self["key_blue"] = StaticText(_("Save"))
+               if config.usage.setup_level.index >= 2: # expert+
+                       self["key_blue"] = StaticText(_("Save"))
+               else:
+                       self["key_blue"] = StaticText()
                
-               infotext = _("Available format variables") + ":\n$i=" + _("Track") + ", $t=" + _("Title") + ", $d=" + _("Description") + ", $l=" + _("length") + ", $c=" + _("chapters") + ",\n" + _("Record") + " $T=" + _("Begin time") + ", $Y=" + _("Year") + ", $M=" + _("month") + ", $D=" + _("day") + ",\n$A=" + _("audio tracks") + ", $C=" + _("Channel") + ", $f=" + _("filename")
+               if config.usage.setup_level.index >= 2: # expert+
+                       infotext = _("Available format variables") + ":\n$i=" + _("Track") + ", $t=" + _("Title") + ", $d=" + _("Description") + ", $l=" + _("length") + ", $c=" + _("chapters") + ",\n" + _("Record") + " $T=" + _("Begin time") + ", $Y=" + _("Year") + ", $M=" + _("month") + ", $D=" + _("day") + ",\n$A=" + _("audio tracks") + ", $C=" + _("Channel") + ", $f=" + _("filename")
+               else:
+                       infotext = ""
                self["info"] = StaticText(infotext)
 
+               self.keydict = {}
                self.settings = project.settings
                ConfigListScreen.__init__(self, [])
                self.initConfigList()
-                       
-               self.keydict = {}
-               for key, val in self.settings.dict().iteritems():
-                       self.keydict[val] = key
                
                self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
                {
@@ -141,9 +143,10 @@ class ProjectSettings(Screen,ConfigListScreen):
                        self.list.append(getConfigListEntry(_("ISO path"), self.settings.isopath))
                if authormode.startswith("menu"):
                        self.list.append(getConfigListEntry(_("Menu")+' '+_("template file"), self.settings.menutemplate))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("Title"), self.project.menutemplate.settings.titleformat))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.project.menutemplate.settings.subtitleformat))
-                       self.list.append(getConfigListEntry(_("Menu")+' '+_("background image"), self.project.menutemplate.settings.menubg))
+                       if config.usage.setup_level.index >= 2: # expert+
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("Title"), self.project.menutemplate.settings.titleformat))
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("Subtitles"), self.project.menutemplate.settings.subtitleformat))
+                               self.list.append(getConfigListEntry(_("Menu")+' '+_("background image"), self.project.menutemplate.settings.menubg))
                        #self.list.append(getConfigListEntry(_("Menu")+' '+_("headline")+' '+_("color"), self.settings.color_headline))
                        #self.list.append(getConfigListEntry(_("Menu")+' '+_("text")+' '+_("color"), self.settings.color_button))
                        #self.list.append(getConfigListEntry(_("Menu")+' '+_("highlighted button")+' '+_("color"), self.settings.color_highlight))
@@ -151,14 +154,20 @@ class ProjectSettings(Screen,ConfigListScreen):
                        #self.list.append(getConfigListEntry(_("Font size")+' ('+_("headline")+', '+_("Title")+', '+_("Subtitles")+')', self.settings.font_size))
                        #self.list.append(getConfigListEntry(_("Menu")+' '+_("spaces (top, between rows, left)"), self.settings.space))
                        #self.list.append(getConfigListEntry(_("Menu")+' '+_("Audio"), self.settings.menuaudio))
-               if authormode != "data_ts":
-                       self.list.append(getConfigListEntry(_("Titleset mode"), self.settings.titlesetmode))
-                       if self.settings.titlesetmode.getValue() == "single" or authormode == "just_linked":
-                               self.list.append(getConfigListEntry(_("VMGM (intro trailer)"), self.settings.vmgm))
-               else:
-                       self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat))
+               if config.usage.setup_level.index >= 2: # expert+
+                       if authormode != "data_ts":
+                               self.list.append(getConfigListEntry(_("Titleset mode"), self.settings.titlesetmode))
+                               if self.settings.titlesetmode.getValue() == "single" or authormode == "just_linked":
+                                       self.list.append(getConfigListEntry(_("VMGM (intro trailer)"), self.settings.vmgm))
+                       else:
+                               self.list.append(getConfigListEntry(("DVD data format"), self.settings.dataformat))
                
                self["config"].setList(self.list)
+               self.keydict = {}
+               for key, val in self.settings.dict().iteritems():
+                       self.keydict[val] = key
+               for key, val in self.project.menutemplate.settings.dict().iteritems():
+                       self.keydict[val] = key
 
        def keyLeft(self):
                ConfigListScreen.keyLeft(self)
@@ -182,8 +191,9 @@ class ProjectSettings(Screen,ConfigListScreen):
                
        def ok(self):
                key = self.keydict[self["config"].getCurrent()[1]]
-               if key in self.project.filekeys:
-                       self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self.settings)
+               from DVDProject import ConfigFilename
+               if type(self["config"].getCurrent()[1]) == ConfigFilename:
+                       self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, key, self["config"].getCurrent()[1])
 
        def cancel(self):
                self.close(False)
@@ -192,26 +202,30 @@ class ProjectSettings(Screen,ConfigListScreen):
                self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, "project", self.settings)
 
        def saveProject(self):
-               self.applySettings()
-               ret = self.project.saveProject(resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/")
-               if ret.startswith:
-                       text = _("Save")+' '+_('OK')+':\n'+ret
-                       self.session.open(MessageBox,text,type = MessageBox.TYPE_INFO)
-               else:
-                       text = _("Save")+' '+_('Error')
-                       self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR)
+               if config.usage.setup_level.index >= 2: # expert+
+                       self.applySettings()
+                       ret = self.project.saveProject(resolveFilename(SCOPE_PLUGINS)+"Extensions/DVDBurn/")
+                       if ret.startswith:
+                               text = _("Save")+' '+_('OK')+':\n'+ret
+                               self.session.open(MessageBox,text,type = MessageBox.TYPE_INFO)
+                       else:
+                               text = _("Save")+' '+_('Error')
+                               self.session.open(MessageBox,text,type = MessageBox.TYPE_ERROR)
 
-       def FileBrowserClosed(self, path, scope):
+       def FileBrowserClosed(self, path, scope, configRef):
                if scope == "menutemplate":
-                       if not self.project.menutemplate.loadTemplate(path):
-                               self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
-                       else:
+                       if self.project.menutemplate.loadTemplate(path):
                                print "[ProjectSettings] menu template loaded"
-
-               if scope in self.project.filekeys:
-                       self.settings.dict()[scope].setValue(path)
-               elif scope == "project":
-                       if not self.project.loadProject(path):
-                               self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
+                               configRef.setValue(path)
+                               self.initConfigList()
                        else:
+                               self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
+               elif scope == "project":
+                       if self.project.loadProject(path):
+                               configRef.setValue(path)
                                self.initConfigList()
+                       else:
+                               self.session.open(MessageBox,self.project.error,MessageBox.TYPE_ERROR)
+               elif scope:
+                       configRef.setValue(path)
+                       self.initConfigList()
index 749f80eb3ab2986e2fd3e31a2240e66700166a67..fd4c713468e8e036f544400e6bfd55f04c1c4b5e 100644 (file)
@@ -44,7 +44,7 @@ class TitleList(Screen, HelpableScreen):
                                "titleProperties": (self.titleProperties, _("Properties of current title"), _("Title properties")),
                                "removeCurrentTitle": (self.removeCurrentTitle, _("Remove currently selected title"), _("Remove title")),
                                "settings": (self.settings, _("Collection settings"), _("Settings")),
-                               "burnProject": (self.burnProject, _("Burn DVD"), _("Burn DVD")),
+                               "burnProject": (self.askBurnProject, _("Burn DVD"), _("Burn DVD")),
                        })
 
                self["MovieSelectionActions"] = HelpableActionMap(self, "MovieSelectionActions",
@@ -57,9 +57,9 @@ class TitleList(Screen, HelpableScreen):
                                "cancel": self.leave
                        })
 
-               self["key_red"] = StaticText(_("Remove title"))
+               self["key_red"] = StaticText()
                self["key_green"] = StaticText(_("Add title"))
-               self["key_yellow"] = StaticText(_("Title properties"))
+               self["key_yellow"] = StaticText()
                self["key_blue"] = StaticText(_("Settings"))
 
                self["title_label"] = StaticText()
@@ -74,6 +74,7 @@ class TitleList(Screen, HelpableScreen):
 
                self["titles"] = List(list = [ ], enableWrapAround = True, item_height=30, fonts = [gFont("Regular", 20)])
                self.updateTitleList()
+               self.previous_size = 0
 
        def checkBackgroundJobs(self):
                for job in job_manager.getPendingJobs():
@@ -90,19 +91,16 @@ class TitleList(Screen, HelpableScreen):
                if self.backgroundJob:
                        j = self.backgroundJob
                        menu.append(("%s: %s (%d%%)" % (j.getStatustext(), j.name, int(100*j.progress/float(j.end))), self.showBackgroundJob))
+               menu.append((_("DVD media toolbox"), self.toolbox))
+               menu.append((_("Preview menu"), self.previewMenu))
                if self.project.settings.output.getValue() == "dvd":
-                       menu.append((_("Burn DVD"), self.burnProject))
+                       if len(self["titles"].list):
+                               menu.append((_("Burn DVD"), self.burnProject))
                elif self.project.settings.output.getValue() == "iso":
                        menu.append((_("Create DVD-ISO"), self.burnProject))
                menu.append((_("Burn existing image to DVD"), self.selectImage))
-               menu.append((_("DVD media toolbox"), self.toolbox))
-               menu.append((_("Preview menu"), self.previewMenu))
-               menu.append((_("Collection settings"), self.settings))
-               menu.append((_("Reset and renumerate title names"), self.resetTitles))
                menu.append((_("Edit chapters of current title"), self.editTitle))
-               menu.append((_("Properties of current title"), self.titleProperties))
-               menu.append((_("Add a new title"), self.addTitle))
-               menu.append((_("Remove title"), self.removeCurrentTitle))
+               menu.append((_("Reset and renumerate title names"), self.resetTitles))
                menu.append((_("Exit"), self.leave))
                self.session.openWithCallback(self.menuCallback, ChoiceBox, title="", list=menu)
 
@@ -199,7 +197,13 @@ class TitleList(Screen, HelpableScreen):
                        self["error_label"].show()
                        return False
 
-       def burnProject(self):
+       def askBurnProject(self):
+               if len(self["titles"].list):
+                       self.session.openWithCallback(self.burnProject,MessageBox,text = _("Do you want to burn this collection to DVD medium?"), type = MessageBox.TYPE_YESNO)
+
+       def burnProject(self, answer=True):
+               if not answer:
+                       return
                if self.project.settings.authormode.getValue() == "data_ts":
                        job = Process.DVDdataJob(self.project)
                        job_manager.AddJob(job)
@@ -211,7 +215,7 @@ class TitleList(Screen, HelpableScreen):
                        job_manager.in_background = False
                        self.session.openWithCallback(self.JobViewCB, JobView, job)
 
-       def burnISO(self, path, scope):
+       def burnISO(self, path, scope, configRef):
                if path:
                        job = Process.DVDisoJob(self.project, path)
                        job_manager.AddJob(job)
@@ -235,6 +239,12 @@ class TitleList(Screen, HelpableScreen):
                        totalsize += title.estimatedDiskspace
                self["titles"].list = res
                self.updateSize(totalsize)
+               if len(res):
+                       self["key_red"].text = _("Remove title")
+                       self["key_yellow"].text = _("Title properties")
+               else:
+                       self["key_red"].text = ""
+                       self["key_yellow"].text = ""
 
        def updateSize(self, totalsize):
                size = int((totalsize/1024)/1024)
@@ -244,14 +254,19 @@ class TitleList(Screen, HelpableScreen):
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB - " % size + _("exceeds dual layer medium!") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+                       if self.previous_size < max_DL:
+                               self.session.open(MessageBox,text = _("exceeds dual layer medium!"), type = MessageBox.TYPE_ERROR)
                elif size > max_SL:
                        percent = 100 * size / float(max_DL)
                        self["space_label"].text = "%d MB  " % size + _("of a DUAL layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+                       if self.previous_size < max_SL:
+                               self.session.open(MessageBox,text = _("Your collection exceeds the size of a single layer medium, you will need a blank dual layer DVD!"), type = MessageBox.TYPE_INFO)
                elif size < max_SL:
                        percent = 100 * size / float(max_SL)
                        self["space_label"].text = "%d MB " % size + _("of a SINGLE layer medium used.") + " (%.2f%% " % (100-percent) + _("free") + ")"
                        self["space_bar"].value = int(percent)
+               self.previous_size = size
 
        def getCurrentTitle(self):
                t = self["titles"].getCurrent()
index 63ae6c1ff16c60093bb955f45f6d45718cd25e66..1c2099fbf91e38a0c27d8dc29afe373a42aade3d 100644 (file)
@@ -72,19 +72,19 @@ class TitleProperties(Screen,ConfigListScreen):
                        self.list.append(getConfigListEntry("DVD " + _("Track"), self.properties.position))
                        self.list.append(getConfigListEntry("DVD " + _("Title"), self.properties.menutitle))
                        self.list.append(getConfigListEntry("DVD " + _("Description"), self.properties.menusubtitle))
-                       for audiotrack in self.properties.audiotracks:
-                               DVB_aud = audiotrack.DVB_lang.getValue() or audiotrack.pid.getValue()
-                               self.list.append(getConfigListEntry(_("burn audio track (%s)") % DVB_aud, audiotrack.active))
-                               if audiotrack.active.getValue():
-                                       self.list.append(getConfigListEntry(_("audio track (%s) format") % DVB_aud, audiotrack.format))
-                                       self.list.append(getConfigListEntry(_("audio track (%s) language") % DVB_aud, audiotrack.language))
-                                       
-                       self.list.append(getConfigListEntry("DVD " + _("Aspect Ratio"), self.properties.aspect))
-                       if self.properties.aspect.getValue() == "16:9":
-                               self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.widescreen))
-                       else:
-                               self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.crop))
-
+                       if config.usage.setup_level.index >= 2: # expert+
+                               for audiotrack in self.properties.audiotracks:
+                                       DVB_aud = audiotrack.DVB_lang.getValue() or audiotrack.pid.getValue()
+                                       self.list.append(getConfigListEntry(_("burn audio track (%s)") % DVB_aud, audiotrack.active))
+                                       if audiotrack.active.getValue():
+                                               self.list.append(getConfigListEntry(_("audio track (%s) format") % DVB_aud, audiotrack.format))
+                                               self.list.append(getConfigListEntry(_("audio track (%s) language") % DVB_aud, audiotrack.language))
+                                               
+                               self.list.append(getConfigListEntry("DVD " + _("Aspect Ratio"), self.properties.aspect))
+                               if self.properties.aspect.getValue() == "16:9":
+                                       self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.widescreen))
+                               else:
+                                       self.list.append(getConfigListEntry("DVD " + "widescreen", self.properties.crop))
                        if len(title.chaptermarks) == 0:
                                self.list.append(getConfigListEntry(_("Auto chapter split every ? minutes (0=never)"), self.properties.autochapter))
                        infotext = "DVB " + _("Title") + ': ' + title.DVBname + "\n" + _("Description") + ': ' + title.DVBdescr + "\n" + _("Channel") + ': ' + title.DVBchannel + '\n' + _("Begin time") + title.formatDVDmenuText(": $D.$M.$Y, $T\n", self.title_idx+1)
@@ -154,7 +154,7 @@ class LanguageChoices():
                        if len(key) == 2:
                                self.langdict[key] = val[0]
                for key, val in self.langdict.iteritems():
-                       if key not in [syslang, 'en']:
+                       if key not in (syslang, 'en'):
                                self.langdict[key] = val
                                self.choices.append((key, val))
                self.choices.sort()
@@ -164,8 +164,7 @@ class LanguageChoices():
 
        def getLanguage(self, DVB_lang):
                DVB_lang = DVB_lang.lower()
-               stripwords = ["stereo", "audio", "description", "2ch", "dolby digital"]
-               for word in stripwords:
+               for word in ("stereo", "audio", "description", "2ch", "dolby digital"):
                        DVB_lang = DVB_lang.replace(word,"").strip()
                for key, val in LanguageCodes.iteritems():
                        if DVB_lang.find(key.lower()) == 0:
@@ -183,4 +182,4 @@ class LanguageChoices():
                                return key
                return "nolang"
 
-languageChoices = LanguageChoices()
\ No newline at end of file
+languageChoices = LanguageChoices()
index 29076cea3bc1904b7550c25328413f27bf842aca..45f438da0142ca8174838ccfe1887e8ee6b045c3 100644 (file)
@@ -12,5 +12,6 @@ def main_add(session, service, **kwargs):
        dvdburn.selectedSource(service)
 
 def Plugins(**kwargs):
-       return [PluginDescriptor(name="DVD Burn", description=_("Burn to DVD..."), where = PluginDescriptor.WHERE_MOVIELIST, fnc=main_add, icon="dvdburn.png"),
-               PluginDescriptor(name="DVD Burn", description=_("Burn to DVD..."), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main, icon="dvdburn.png") ]
+       descr = _("Burn to DVD...")
+       return [PluginDescriptor(name="DVD Burn", description=descr, where = PluginDescriptor.WHERE_MOVIELIST, fnc=main_add, icon="dvdburn.png"),
+               PluginDescriptor(name="DVD Burn", description=descr, where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main, icon="dvdburn.png") ]
index 8e2a9f3a75d242beee20177129d68f2f247b8434..ebcf4f81a657189106cd89c66bd48773f51640b5 100644 (file)
@@ -14,6 +14,7 @@ from Components.ServiceEventTracker import ServiceEventTracker, InfoBarBase
 from Components.config import config
 from Tools.Directories import pathExists, fileExists
 from Components.Harddisk import harddiskmanager
+from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
 
 import servicedvd # load c++ part of dvd player plugin
 
@@ -345,28 +346,15 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                        })
 
                self.onClose.append(self.__onClose)
-               self.physicalDVD = False
-               self.dvd_device = None
+               hotplugNotifier.append(self.hotplugCB)
+               
                if dvd_device:
-                               self.dvd_device = dvd_device
-                               self.physicalDVD = True
+                       self.physicalDVD = True
                else:
-                       devicepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
-                       if pathExists(devicepath):
-                               from Components.Scanner import scanDevice
-                               res = scanDevice(devicepath)
-                               list = [ (r.description, r, res[r], self.session) for r in res ]
-                               if list:
-                                       (desc, scanner, files, session) = list[0]
-                                       for file in files:
-                                               print file
-                                               if file.mimetype == "video/x-dvd":
-                                                       self.dvd_device = devicepath
-                                                       print "physical dvd found:", self.dvd_device
-                                                       self.physicalDVD = True
+                       self.scanHotplug()
 
                self.dvd_filelist = dvd_filelist
-               self.onFirstExecBegin.append(self.showFileBrowser)
+               self.onFirstExecBegin.append(self.opened)
                self.service = None
                self.in_menu = False
 
@@ -511,8 +499,10 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                
        def askLeavePlayer(self):
                choices = [(_("Exit"), "exit"), (_("Continue playing"), "play")]
-               if not self.physicalDVD:
+               if True or not self.physicalDVD:
                        choices.insert(1,(_("Return to file browser"), "browser"))
+               if self.physicalDVD and not self.session.nav.getCurrentlyPlayingServiceReference().toString().endswith(harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())):
+                       choices.insert(0,(_("Play DVD"), "playPhysical" ))
                self.session.openWithCallback(self.exitCB, ChoiceBox, title=_("Leave DVD Player?"), list = choices)
 
        def sendKey(self, key):
@@ -581,23 +571,22 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
        def keyCancel(self):
                self.askLeavePlayer()
 
-       def showFileBrowser(self):
-               if self.physicalDVD and len(self.dvd_filelist) == 0:
-                       if self.dvd_device == harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD()):
-                               self.session.openWithCallback(self.DVDdriveCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 )
-                       else:
-                               self.DVDdriveCB(True)
-               elif len(self.dvd_filelist) == 1:
+       def opened(self):
+               if len(self.dvd_filelist) == 1:
+                       # opened via autoplay
                        self.FileBrowserClosed(self.dvd_filelist[0])
+               elif self.physicalDVD:
+                       # opened from menu with dvd in drive
+                       self.session.openWithCallback(self.playPhysicalCB, MessageBox, text=_("Do you want to play DVD in drive?"), timeout=5 )
                else:
+                       # opened from menu without dvd in drive
                        self.session.openWithCallback(self.FileBrowserClosed, FileBrowser, self.dvd_filelist)
-       
-       def DVDdriveCB(self, answer):
+
+       def playPhysicalCB(self, answer):
                if answer == True:
-                       self.FileBrowserClosed(self.dvd_device)
+                       self.FileBrowserClosed(harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD()))
                else:
                        self.session.openWithCallback(self.FileBrowserClosed, FileBrowser)
-                       self.physicalDVD = False
 
        def FileBrowserClosed(self, val):
                curref = self.session.nav.getCurrentlyPlayingServiceReference()
@@ -627,13 +616,18 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
                                #else
                                if self.service:
                                        self.service = None
-                               self.showFileBrowser()
+                               self.session.openWithCallback(self.FileBrowserClosed, FileBrowser)
+                       if answer[1] == "playPhysical":
+                               if self.service:
+                                       self.service = None
+                               self.playPhysicalCB(True)
                        else:
                                pass
 
        def __onClose(self):
                self.restore_infobar_seek_config()
                self.session.nav.playService(self.oldService)
+               hotplugNotifier.remove(self.hotplugCB)
 
        def playLastCB(self, answer): # overwrite infobar cuesheet function
                print "playLastCB", answer, self.resume_point
@@ -660,6 +654,30 @@ class DVDPlayer(Screen, InfoBarBase, InfoBarNotifications, InfoBarSeek, InfoBarP
        def calcRemainingTime(self):
                return 0
 
+       def hotplugCB(self, dev, media_state):
+               print "[hotplugCB]", dev, media_state
+               if dev == harddiskmanager.getCD():
+                       if media_state == "1":
+                               self.scanHotplug()
+                       else:
+                               self.physicalDVD = False
+
+       def scanHotplug(self):
+               devicepath = harddiskmanager.getAutofsMountpoint(harddiskmanager.getCD())
+               if pathExists(devicepath):
+                       from Components.Scanner import scanDevice
+                       res = scanDevice(devicepath)
+                       list = [ (r.description, r, res[r], self.session) for r in res ]
+                       if list:
+                               (desc, scanner, files, session) = list[0]
+                               for file in files:
+                                       print file
+                                       if file.mimetype == "video/x-dvd":
+                                               print "physical dvd found:", devicepath
+                                               self.physicalDVD = True
+                                               return
+               self.physicalDVD = False
+
 def main(session, **kwargs):
        session.open(DVDPlayer)
 
@@ -705,7 +723,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "DVD",
-                       description = "Play DVD",
+                       description = _("Play DVD"),
                        openfnc = filescan_open,
                )]              
 
index c2590af56cccc46ec8fb34ab27d49a5f1f04094c..e35f2807bdd6369e8d595b547d78b9e6c45beabb 100644 (file)
@@ -103,7 +103,10 @@ eServiceDVD::eServiceDVD(const char *filename):
        // create handle
        ddvd_set_dvd_path(m_ddvdconfig, filename);
        ddvd_set_ac3thru(m_ddvdconfig, 0);
-       ddvd_set_language(m_ddvdconfig, "de");
+
+       std::string ddvd_language;
+       if (!ePythonConfigQuery::getConfigValue("config.osd.language", ddvd_language))
+               ddvd_set_language(m_ddvdconfig, (ddvd_language.substr(0,2)).c_str());
 
        int fd = open("/proc/stb/video/aspect", O_RDONLY);
        if (fd > -1)
index 12389813f35f14c09523fbadc895a227d4d5ec24..62c9e7b2ee6f46d144a4b1e03070f4f326259ac0 100644 (file)
@@ -59,5 +59,6 @@ def main(session, **kwargs):
        session.open(FileManager)
 
 def Plugins(**kwargs):
-       return [PluginDescriptor(name="File-Manager", description="Lets you view/edit files in your Dreambox", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
-                       PluginDescriptor(name="File-Manager", description="Lets you view/edit files in your Dreambox", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]
+       descr = _("Lets you view/edit files in your Dreambox")
+       return [PluginDescriptor(name="File-Manager", description=descr, where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
+                       PluginDescriptor(name="File-Manager", description=descr, where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)]
index 3e02384122a8826c0f9f820abf57017f1ddee89f..e8504ff09e44094aecdeb1068f3e4ecf10638c57 100644 (file)
@@ -148,7 +148,6 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                                self.player.show()
                                return NumberActionMap.action(self, contexts, action)
 
-
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", 
                        {
                                "ok": (self.ok, _("add file to playlist")),
@@ -224,7 +223,8 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
                        {
                                iPlayableService.evUpdatedInfo: self.__evUpdatedInfo,
-                               iPlayableService.evUser+11: self.__evDecodeError,
+                               iPlayableService.evUser+10: self.__evAudioDecodeError,
+                               iPlayableService.evUser+11: self.__evVideoDecodeError,
                                iPlayableService.evUser+12: self.__evPluginError,
                                iPlayableService.evUser+13: self["coverArt"].embeddedCoverArt
                        })
@@ -268,11 +268,17 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                print "[__evUpdatedInfo] title %d of %d (%s)" % (currenttitle, totaltitles, sTitle)
                self.readTitleInformation()
 
-       def __evDecodeError(self):
+       def __evAudioDecodeError(self):
+               currPlay = self.session.nav.getCurrentService()
+               sAudioType = currPlay.info().getInfoString(iServiceInformation.sUser+10)
+               print "[__evAudioDecodeError] audio-codec %s can't be decoded by hardware" % (sAudioType)
+               self.session.open(MessageBox, _("This Dreambox can't decode %s streams!") % sAudioType, type = MessageBox.TYPE_INFO,timeout = 20 )
+
+       def __evVideoDecodeError(self):
                currPlay = self.session.nav.getCurrentService()
                sVideoType = currPlay.info().getInfoString(iServiceInformation.sVideoType)
-               print "[__evDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
-               self.session.open(MessageBox, _("This Dreambox can't decode %s video streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 20 )
+               print "[__evVideoDecodeError] video-codec %s can't be decoded by hardware" % (sVideoType)
+               self.session.open(MessageBox, _("This Dreambox can't decode %s streams!") % sVideoType, type = MessageBox.TYPE_INFO,timeout = 20 )
 
        def __evPluginError(self):
                currPlay = self.session.nav.getCurrentService()
@@ -379,7 +385,7 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                self.updateCurrentInfo()
 
        def showAfterSeek(self):
-               self.show()
+               pass
 
        def showAfterCuesheetOperation(self):
                self.show()
@@ -984,7 +990,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "Movie",
-                       description = "View Movies...",
+                       description = _("View Movies..."),
                        openfnc = filescan_open,
                ),
                Scanner(mimetypes = ["video/x-vcd"],
@@ -994,7 +1000,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "MPEGAV", with_subdirs = False),
                                ],
                        name = "Video CD",
-                       description = "View Video CD...",
+                       description = _("View Video CD..."),
                        openfnc = filescan_open,
                ),
                Scanner(mimetypes = ["audio/mpeg", "audio/x-wav", "application/ogg", "audio/x-flac"],
@@ -1003,7 +1009,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "Music",
-                       description = "Play Music...",
+                       description = _("Play Music..."),
                        openfnc = filescan_open,
                )]
        try:
@@ -1015,7 +1021,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "Audio-CD",
-                       description = "Play Audio-CD...",
+                       description = _("Play Audio-CD..."),
                        openfnc = audioCD_open,
                ))
                return mediatypes
index 2c31197dea5783449a8d816a77273e5bc811d93e..0cefa3531e6be5d4b341e2818a73e2ffd09a4f43 100755 (executable)
@@ -23,16 +23,16 @@ def mountpoint_choosen(option):
 
        list = [ (r.description, r, res[r], session) for r in res ]
 
-       if list == [ ]:
+       if not list:
                from Screens.MessageBox import MessageBox
                if access(mountpoint, F_OK|R_OK):
-                       session.open(MessageBox, "No displayable files on this medium found!", MessageBox.TYPE_ERROR)
+                       session.open(MessageBox, _("No displayable files on this medium found!"), MessageBox.TYPE_ERROR)
                else:
                        print "ignore", mountpoint, "because its not accessible"
                return
 
        session.openWithCallback(execute, ChoiceBox, 
-               title = "The following files were found...",
+               title = _("The following files were found..."),
                list = list)
 
 def scan(session):
@@ -41,7 +41,7 @@ def scan(session):
        from Components.Harddisk import harddiskmanager
 
        parts = [ (r.description, r.mountpoint, session) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)]
-       if len(parts):
+       if parts:
                for x in parts:
                        if not access(x[1], F_OK|R_OK):
                                parts.remove(x) 
@@ -91,7 +91,7 @@ def autostart(reason, **kwargs):
 
 def Plugins(**kwargs):
        return [
-               PluginDescriptor(name="MediaScanner", description="Scan Files...", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
+               PluginDescriptor(name="MediaScanner", description=_("Scan Files..."), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main),
 #              PluginDescriptor(where = PluginDescriptor.WHERE_MENU, fnc=menuHook),
                PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, fnc = sessionstart),
                PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart)
index 05adb633fe1d16c2a9a4828f2aca5c05a1738e14..10e4e514adc19a7856c6dd9c18e9f8b092cc902d 100644 (file)
@@ -586,7 +586,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False),
                                ],
                        name = "Pictures", 
-                       description = "View Photos...",
+                       description = _("View Photos..."),
                        openfnc = filescan_open,
                )
 
index 4eadf2ea2e0aa8cd5db63a2fa37224a9c4283ca6..387c8306d7d8ecd391e85924cf1ede2bbaaefc5d 100644 (file)
@@ -22,6 +22,6 @@ def autostart(reason, **kwargs):
                socketHandler = SocketMMIMessageHandler()
 
 def Plugins(**kwargs):
-       return [ PluginDescriptor(name = "SocketMMI", description = "Python frontend for /tmp/mmi.socket", where = PluginDescriptor.WHERE_MENU, fnc = menu),
+       return [ PluginDescriptor(name = "SocketMMI", description = _("Python frontend for /tmp/mmi.socket"), where = PluginDescriptor.WHERE_MENU, fnc = menu),
                PluginDescriptor(where = PluginDescriptor.WHERE_SESSIONSTART, fnc = sessionstart),
                PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart) ]
old mode 100644 (file)
new mode 100755 (executable)
index 53e7b0b..d7fc689
@@ -49,6 +49,9 @@ class PluginDescriptor:
        # or return a function which is called with session and the interface name for extended setup of this interface
        WHERE_EVENTINFO = 11
 
+       # reason (True: Networkconfig read finished, False: Networkconfig reload initiated )
+       WHERE_NETWORKCONFIG_READ = 12
+
        def __init__(self, name = "Plugin", where = [ ], description = "", icon = None, fnc = None, wakeupfnc = None, internal = False):
                self.name = name
                self.internal = internal
diff --git a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/LICENSE b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/LICENSE
new file mode 100644 (file)
index 0000000..9970059
--- /dev/null
@@ -0,0 +1,12 @@
+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/CommonInterfaceAssignment/Makefile.am b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/Makefile.am
new file mode 100644 (file)
index 0000000..562b149
--- /dev/null
@@ -0,0 +1,6 @@
+installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/CommonInterfaceAssignment
+
+install_PYTHON =       \
+       __init__.py \
+       plugin.py
diff --git a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/__init__.py b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
new file mode 100644 (file)
index 0000000..4c8167d
--- /dev/null
@@ -0,0 +1,630 @@
+from Screens.Screen import Screen
+from Screens.ChannelSelection import *
+from Components.ActionMap import HelpableActionMap, ActionMap, NumberActionMap
+from Components.Sources.List import List
+from Components.Sources.StaticText import StaticText
+from Components.config import ConfigNothing
+from Components.ConfigList import ConfigList
+from Components.Label import Label
+from Components.SelectionList import SelectionList
+from Components.MenuList import MenuList
+from ServiceReference import ServiceReference
+from Plugins.Plugin import PluginDescriptor
+from xml.etree.cElementTree import parse as ci_parse
+from Tools.XMLTools import elementsWithTag, mergeText, stringToXML
+from enigma import eDVBCI_UI, eDVBCIInterfaces
+
+from os import system, path as os_path
+
+class CIselectMainMenu(Screen):
+       skin = """
+               <screen position="205,150" size="310,270"  title="CI Assignment" >
+                       <widget name="CiList" position="10,10" size="290,200" scrollbarMode="showOnDemand" />
+                       <ePixmap position="10,210" size="290,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,220" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,220" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="10,220" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="160,220" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+               </screen>"""
+
+       def __init__(self, session, args = 0):
+               self.skin = CIselectMainMenu.skin
+               Screen.__init__(self, session)
+
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Config"))
+
+               self["actions"] = ActionMap(["ColorActions","SetupActions"],
+                       {
+                               "green": self.greenPressed,
+                               "red": self.redPressed,
+                               "yellow": self.yellowPressed,
+                               "ok": self.greenPressed,
+                               "cancel": self.cancel
+                       }, -1)
+
+               NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots()
+
+               print "[CI_Wizzard] FOUND %d CI Slots " % NUM_CI
+
+               self.dlg = None
+               self.state = { }
+               self.list = [ ]
+               if NUM_CI > 0:
+                       for slot in range(NUM_CI):
+                               state = eDVBCI_UI.getInstance().getState(slot)
+                               if state == 0:
+                                       appname = _("Slot %d") %(slot+1) + " - " + _("no module")
+                               elif state == 1:        
+                                       appname = _("Slot %d") %(slot+1) + " - " + _("init modules")
+                               elif state == 2:
+                                       appname = _("Slot %d") %(slot+1) + " - " + eDVBCI_UI.getInstance().getAppName(slot)
+                               self.list.append( (appname, ConfigNothing(), 0, slot) )
+               else:
+                       self.list.append( (_("no CI slots found") , ConfigNothing(), 1, -1) )
+
+               menuList = ConfigList(self.list)
+               menuList.list = self.list
+               menuList.l.setList(self.list)
+               self["CiList"] = menuList
+
+       def greenPressed(self):
+               cur = self["CiList"].getCurrent()
+               if cur and len(cur) > 2:
+                       action = cur[2]
+                       slot = cur[3]
+                       if action == 1:
+                               print "[CI_Wizzard] there is no CI Slot in your receiver"
+                       else:
+                               print "[CI_Wizzard] selected CI Slot : %d" % slot
+                               if config.usage.setup_level.index > 1: # advanced
+                                       self.session.open(CIconfigMenu, slot)
+                               else:
+                                       self.session.open(easyCIconfigMenu, slot)
+
+       def yellowPressed(self):
+               NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots()
+               print "[CI_Check] FOUND %d CI Slots " % NUM_CI
+               if NUM_CI > 0:
+                       for ci in range(NUM_CI):
+                               print eDVBCIInterfaces.getInstance().getDescrambleRules(ci)
+#              else:
+#                      print "no ci found"
+
+       def redPressed(self):
+               print "[CI_Config] RED BUTTON not implemented yet - only use self.cancel()"
+               self.cancel()
+
+       def cancel(self):
+               self.close()
+
+class CIconfigMenu(Screen):
+       skin = """
+               <screen position="60,80" size="595,436" title="CI Assignment" >
+                       <widget name="CAidList.desc" position="10,10" size="575,22" font="Regular;20" />
+                       <widget name="CAidList" position="10,40" size="575,45" font="Regular;20" />
+                       <widget name="ServiceList.desc" position="10,90" size="575,22" font="Regular;20" />
+                       <widget name="ServiceList" position="10,120" size="575,250" scrollbarMode="showOnDemand" />
+                       <ePixmap position="10,380" size="575,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,390" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="155,390" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="300,390" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="445,390" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="10,390" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="155,390" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_yellow" render="Label" position="300,390" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_blue" render="Label" position="445,390" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+               </screen>"""
+
+       def __init__(self, session, ci_slot="9"):
+               self.skin = CIconfigMenu.skin
+               Screen.__init__(self, session)
+               self.ci_slot=ci_slot
+               self.filename="/etc/enigma2/ci"+str(self.ci_slot)+".xml"
+               
+               self["key_red"] = StaticText(_("delete"))
+               self["key_green"] = StaticText(_("add Service"))
+               self["key_yellow"] = StaticText(_("add Provider"))
+               self["key_blue"] = StaticText(_("select CAId"))
+               self["CAidList.desc"] = Label(_("assigned CAIds"))
+               self["ServiceList.desc"] = Label(_("assigned Services/Provider"))
+
+               self["actions"] = ActionMap(["ColorActions","SetupActions"],
+                       {
+                               "green": self.greenPressed,
+                               "red": self.redPressed,
+                               "yellow": self.yellowPressed,
+                               "blue": self.bluePressed,
+                               "ok": self.okPressed,
+                               "cancel": self.cancel
+                       }, -1)
+                       
+               print "[CI_Wizzard_Config] Configuring CI Slots : %d  " % self.ci_slot
+
+               i=0
+               self.caidlist=[]
+               print eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot)
+               for caid in eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot):
+                       i+=1
+                       self.caidlist.append((str(hex(int(caid))),str(caid),i))
+
+               print "[CI_Wizzard_Config_CI%d] read following CAIds from CI: %s" %(self.ci_slot, self.caidlist)
+               self.selectedcaid =[]
+               self.servicelist = []
+               self.caids=_("no CAId selected")
+               self["CAidList"] = Label(self.caids)
+
+               serviceList = ConfigList(self.servicelist)
+               serviceList.list = self.servicelist
+               serviceList.l.setList(self.servicelist)
+               self["ServiceList"] = serviceList
+
+               self.loadXML()
+               # if config mode !=advanced autoselect any caid
+               if config.usage.setup_level.index <= 1: # advanced
+                       self.selectedcaid=self.caidlist
+
+       def redPressed(self):
+               self.delete()
+
+       def greenPressed(self):
+               self.session.openWithCallback( self.finishedChannelSelection, myChannelSelection, None)
+
+       def yellowPressed(self):
+               self.session.openWithCallback( self.finishedProviderSelection, myProviderSelection, None)
+
+       def bluePressed(self):
+               self.session.openWithCallback(self.finishedCAidSelection, CAidSelect, self.caidlist, self.selectedcaid)
+
+       def okPressed(self):
+               print "[CI_Config_CI%d] OK BUTTON not implemented yet" %self.ci_slot
+
+       def cancel(self):
+               self.saveXML()
+               activate_all(self)
+               self.close()
+
+       def delete(self):
+               cur = self["ServiceList"].getCurrent()
+               if cur and len(cur) > 2:
+                       self.servicelist.remove(cur)
+               self["ServiceList"].l.setList(self.servicelist)
+
+       def finishedChannelSelection(self, *args):
+               if len(args):
+                       ref=args[0]
+                       service_ref = ServiceReference(ref)
+                       service_name = service_ref.getServiceName()
+                       if find_in_list(self.servicelist, service_name, 0)==False:
+                               split_ref=service_ref.ref.toString().split(":")
+                               if split_ref[0] == "1":                 #== dvb service und nicht muell von None
+                                       self.servicelist.append( (service_name , ConfigNothing(), 0, service_ref.ref.toString()) )
+                                       self["ServiceList"].l.setList(self.servicelist)
+
+       def finishedProviderSelection(self, *args):
+               if len(args)>1: # bei nix selected kommt nur 1 arg zurueck (==None)
+                       name=args[0]
+                       dvbnamespace=args[1]
+                       if find_in_list(self.servicelist, name, 0)==False:
+                               self.servicelist.append( (name , ConfigNothing(), 1, dvbnamespace) )
+                               self["ServiceList"].l.setList(self.servicelist)
+
+       def finishedCAidSelection(self, *args):
+               if len(args):
+                       self.selectedcaid=args[0]
+                       self.caids=""
+                       for item in self.selectedcaid:
+                               if len(self.caids):
+                                       self.caids+= ", " + item[0]
+                               else:
+                                       self.caids=item[0]
+               else:
+                       self.selectedcaid=[]
+                       self.caids=_("no CAId selected")
+               self["CAidList"].setText(self.caids)
+
+       def saveXML(self):
+               try:
+                       fp = file(self.filename, 'w')
+                       fp.write("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n")
+                       fp.write("<ci>\n")
+                       fp.write("\t<slot>\n")
+                       fp.write("\t\t<id>%s</id>\n" % self.ci_slot)
+                       for item in self.selectedcaid:
+                               if len(self.selectedcaid):
+                                       fp.write("\t\t<caid id=\"%s\" />\n" % item[0])
+                       for item in self.servicelist:
+                               if len(self.servicelist):
+                                       if item[2]==1:
+                                               fp.write("\t\t<provider name=\"%s\" dvbnamespace=\"%s\" />\n" % (item[0], item[3]))
+                                       else:
+                                               fp.write("\t\t<service name=\"%s\" ref=\"%s\" />\n"  % (item[0], item[3]))
+                       fp.write("\t</slot>\n")
+                       fp.write("</ci>\n")
+                       fp.close()
+               except:
+                       print "[CI_Config_CI%d] xml not written" %self.ci_slot
+                       os.unlink(self.filename)
+
+       def loadXML(self):
+               if not os_path.exists(self.filename):
+                       return
+
+               def getValue(definitions, default):
+                       ret = ""
+                       Len = len(definitions)
+                       return Len > 0 and definitions[Len-1].text or default
+
+               try:
+                       tree = ci_parse(self.filename).getroot()
+                       self.read_services=[]
+                       self.read_providers=[]
+                       self.usingcaid=[]
+                       self.ci_config=[]
+#                      for ci in tree.findall("ci"):
+                       for slot in tree.findall("slot"):
+                               read_slot = getValue(slot.findall("id"), False).encode("UTF-8")
+                               print "ci " + read_slot
+
+                               i=0
+                               for caid in slot.findall("caid"):
+                                       read_caid = caid.get("id").encode("UTF-8")
+                                       self.selectedcaid.append((str(read_caid),str(read_caid),i))
+                                       self.usingcaid.append(long(read_caid,16))
+                                       i+=1
+
+                               for service in  slot.findall("service"):
+                                       read_service_name = service.get("name").encode("UTF-8")
+                                       read_service_ref = service.get("ref").encode("UTF-8")
+                                       self.read_services.append (read_service_ref)
+
+                               for provider in  slot.findall("provider"):
+                                       read_provider_name = provider.get("name").encode("UTF-8")
+                                       read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8")
+                                       self.read_providers.append((read_provider_name,read_provider_dvbname))
+
+                               self.ci_config.append((int(read_slot), (self.read_services, self.read_providers, self.usingcaid)))
+               except:
+                       print "[CI_Config_CI%d] error parsing xml..." %self.ci_slot
+
+               for item in self.read_services:
+                       if len(item):
+                               self.finishedChannelSelection(item)
+
+               for item in self.read_providers:
+                       if len(item):
+                               self.finishedProviderSelection(item[0],item[1])
+
+               print self.ci_config
+               self.finishedCAidSelection(self.selectedcaid)
+               self["ServiceList"].l.setList(self.servicelist)
+
+class easyCIconfigMenu(CIconfigMenu):
+       skin = """
+               <screen position="80,80" size="470,420" title="CI Assignment" >
+                       <widget name="ServiceList.desc" position="10,10" size="420,22" font="Regular;20" />
+                       <widget name="ServiceList" position="10,40" size="450,340" scrollbarMode="showOnDemand" />
+                       <ePixmap position="10,360" size="450,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,370" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,370" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="310,370" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="10,370" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="160,370" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_yellow" render="Label" position="310,370" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+               </screen>"""
+
+       def __init__(self, session, ci_slot="9"):
+               ci=ci_slot
+               CIconfigMenu.__init__(self, session, ci_slot)
+               self.skin = easyCIconfigMenu.skin
+       
+               self["actions"] = ActionMap(["ColorActions","SetupActions"],
+               {
+                       "green": self.greenPressed,
+                       "red": self.redPressed,
+                       "yellow": self.yellowPressed,
+                       "blue": self.bluePressed,
+                       "ok": self.okPressed,
+                       "cancel": self.cancel
+               }, -1)
+       
+       def bluePressed(self):
+               print "do nothing"
+
+class CAidSelect(Screen):
+       skin = """
+               <screen position="210,140" size="310,290"  title="select CAId's" >
+                       <widget name="list" position="10,10" size="290,210" scrollbarMode="showOnDemand" />
+                       <ePixmap position="10,230" size="290,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,240" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,240" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="10,240" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="160,240" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+               </screen>"""
+       
+       def __init__(self, session, list, selected_caids):
+               self.skin = CAidSelect.skin
+               Screen.__init__(self, session)
+
+               self.list = SelectionList()
+               self["list"] = self.list
+
+               for listindex in range(len(list)):
+                       if find_in_list(selected_caids,list[listindex][0],0):
+                               self.list.addSelection(list[listindex][0], list[listindex][1], listindex, True)
+                       else:
+                               self.list.addSelection(list[listindex][0], list[listindex][1], listindex, False)
+
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("Save"))
+
+               self["actions"] = ActionMap(["ColorActions","SetupActions"],
+               {
+                       "ok": self.list.toggleSelection, 
+                       "cancel": self.cancel, 
+                       "green": self.greenPressed,
+                       "red": self.cancel
+               }, -1)
+
+       def greenPressed(self):
+               list = self.list.getSelectionsList()
+               print list
+               self.close(list)
+
+       def cancel(self):
+               self.close()
+
+class myProviderSelection(ChannelSelectionBase):
+       skin = """
+               <screen position="80,80" size="560,430" title="Select provider to add...">
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
+                       <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+                       <widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+                       <widget name="list" position="00,45" size="560,364" scrollbarMode="showOnDemand" />
+               </screen>"""
+
+       def __init__(self, session, title):
+               ChannelSelectionBase.__init__(self, session)
+               self.onShown.append(self.__onExecCallback)
+
+               self["actions"] = ActionMap(["OkCancelActions", "ChannelSelectBaseActions"],
+                       {
+                               "showFavourites": self.doNothing,
+                               "showAllServices": self.doNothing,
+                               "showProviders": self.doNothing,
+                               "showSatellites": self.doNothing,
+                               "cancel": self.cancel,
+                               "ok": self.channelSelected,
+                       })
+               self["key_red"] = StaticText(_(""))
+               self["key_green"] = StaticText(_(""))
+               self["key_yellow"] = StaticText(_(""))
+               self["key_blue"] = StaticText(_(""))
+
+       def doNothing(self):
+               print "nothing to do..."
+
+       def __onExecCallback(self):
+               self.showSatellites()
+
+       def channelSelected(self): # just return selected service
+               ref = self.getCurrentSelection()
+               splited_ref=ref.toString().split(":")
+               if ref.flags == 7 and splited_ref[6] != "0":
+                       self.dvbnamespace=splited_ref[6]
+                       self.enterPath(ref)
+               else:
+                       self.close(ref.getName(), self.dvbnamespace)
+
+       def showSatellites(self):
+               if not self.pathChangeDisabled:
+                       refstr = '%s FROM SATELLITES ORDER BY satellitePosition'%(self.service_types)
+                       if not self.preEnterPath(refstr):
+                               ref = eServiceReference(refstr)
+                               justSet=False
+                               prev = None
+
+                               if self.isBasePathEqual(ref):
+                                       if self.isPrevPathEqual(ref):
+                                               justSet=True
+                                       prev = self.pathUp(justSet)
+                               else:
+                                       currentRoot = self.getRoot()
+                                       if currentRoot is None or currentRoot != ref:
+                                               justSet=True
+                                               self.clearPath()
+                                               self.enterPath(ref, True)
+                               if justSet:
+                                       serviceHandler = eServiceCenter.getInstance()
+                                       servicelist = serviceHandler.list(ref)
+                                       if not servicelist is None:
+                                               while True:
+                                                       service = servicelist.getNext()
+                                                       if not service.valid(): #check if end of list
+                                                               break
+                                                       unsigned_orbpos = service.getUnsignedData(4) >> 16
+                                                       orbpos = service.getData(4) >> 16
+                                                       if orbpos < 0:
+                                                               orbpos += 3600
+                                                       if service.getPath().find("FROM PROVIDER") != -1:
+                                                               service_type = _("Providers")
+                                                               try:
+                                                                       # why we need this cast?
+                                                                       service_name = str(nimmanager.getSatDescription(orbpos))
+                                                               except:
+                                                                       if unsigned_orbpos == 0xFFFF: #Cable
+                                                                               service_name = _("Cable")
+                                                                       elif unsigned_orbpos == 0xEEEE: #Terrestrial
+                                                                               service_name = _("Terrestrial")
+                                                                       else:
+                                                                               if orbpos > 1800: # west
+                                                                                       orbpos = 3600 - orbpos
+                                                                                       h = _("W")
+                                                                               else:
+                                                                                       h = _("E")
+                                                                               service_name = ("%d.%d" + h) % (orbpos / 10, orbpos % 10)
+                                                               service.setName("%s - %s" % (service_name, service_type))
+                                                               self.servicelist.addService(service)
+                                               self.servicelist.finishFill()
+                                               if prev is not None:
+                                                       self.setCurrentSelection(prev)
+
+       def cancel(self):
+               self.close(None)
+
+class myChannelSelection(ChannelSelectionBase):
+       skin = """
+               <screen position="80,80" size="560,430" title="Select service to add...">
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
+                       <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
+                       <widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+                       <widget name="list" position="00,45" size="560,364" scrollbarMode="showOnDemand" />
+               </screen>"""
+
+       def __init__(self, session, title):
+               ChannelSelectionBase.__init__(self, session)
+               self.onShown.append(self.__onExecCallback)
+               service = self.session.nav.getCurrentService()
+               if service:
+                       info = service.info()
+                       if info:
+                               refstr = info.getInfoString(iServiceInformation.sServiceref)
+                               self.servicelist.setPlayableIgnoreService(eServiceReference(refstr))
+
+               self["actions"] = ActionMap(["OkCancelActions", "TvRadioActions", "ChannelSelectBaseActions"],
+                       {
+                               "showProviders": self.doNothing,
+                               "showSatellites": self.doNothing,
+                               "cancel": self.cancel,
+                               "ok": self.channelSelected,
+                               "keyRadio": self.setModeRadio,
+                               "keyTV": self.setModeTv
+                       })
+
+               self["key_green"] = StaticText(_(""))
+               self["key_yellow"] = StaticText(_(""))
+
+       def __onExecCallback(self):
+               self.setModeTv()
+
+       def doNothing(self):
+               print "nothing to do..."
+
+       def channelSelected(self): # just return selected service
+               ref = self.getCurrentSelection()
+               if (ref.flags & 7) == 7:
+                       self.enterPath(ref)
+               elif not (ref.flags & eServiceReference.isMarker):
+                       ref = self.getCurrentSelection()
+                       self.close(ref)
+
+       def setModeTv(self):
+               self.setTvMode()
+               self.showFavourites()
+
+       def setModeRadio(self):
+               self.setRadioMode()
+               self.showFavourites()
+
+       def cancel(self):
+               self.close(None)
+
+def activate_all(session):
+       NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots()
+       print "[CI_Activate] FOUND %d CI Slots " % NUM_CI
+       if NUM_CI > 0:
+               ci_config=[]
+               def getValue(definitions, default):
+                       # Initialize Output
+                       ret = ""
+                       # How many definitions are present
+                       Len = len(definitions)
+                       return Len > 0 and definitions[Len-1].text or default   
+
+               for ci in range(NUM_CI):
+                       filename="/etc/enigma2/ci"+str(ci)+".xml"
+
+                       if not os_path.exists(filename):
+                               print "[CI_Activate_Config_CI%d] no config file found" %ci
+
+                       try:
+                               tree = ci_parse(filename).getroot()
+                               read_services=[]
+                               read_providers=[]
+                               usingcaid=[]
+                               for slot in tree.findall("slot"):
+                                       read_slot = getValue(slot.findall("id"), False).encode("UTF-8")
+
+                                       for caid in slot.findall("caid"):
+                                               read_caid = caid.get("id").encode("UTF-8")
+                                               usingcaid.append(long(read_caid,16))
+
+                                       for service in slot.findall("service"):
+                                               read_service_ref = service.get("ref").encode("UTF-8")
+                                               read_services.append (read_service_ref)
+
+                                       for provider in slot.findall("provider"):
+                                               read_provider_name = provider.get("name").encode("UTF-8")
+                                               read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8")
+                                               read_providers.append((read_provider_name,long(read_provider_dvbname,16)))
+
+                                       ci_config.append((int(read_slot), (read_services, read_providers, usingcaid)))
+                       except:
+                               print "[CI_Activate_Config_CI%d] error parsing xml..." %ci
+
+               for item in ci_config:
+                       print "[CI_Activate] activate CI%d with following settings:" %item[0]
+                       print item[0]
+                       print item[1]
+                       try:
+                               eDVBCIInterfaces.getInstance().setDescrambleRules(item[0],item[1])
+                       except:
+                               print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." %item[0]
+
+def find_in_list(list, search, listpos=0):
+       for item in list:
+               if item[listpos]==search:
+                       return True
+       return False
+
+global_session = None
+
+def sessionstart(reason, session):
+       global global_session
+       global_session = session
+
+def autostart(reason, **kwargs):
+       global global_session
+       if reason == 0:
+               print "[CI_Assignment] activating ci configs:"
+               activate_all(global_session)
+       elif reason == 1:
+               global_session = None
+
+def main(session, **kwargs):
+       session.open(CIselectMainMenu)
+
+def menu(menuid, **kwargs):
+       if menuid == "setup" and eDVBCIInterfaces.getInstance().getNumOfSlots():
+               return [(_("Common Interface Assignment"), main, "ci_assign", 11)]
+       return [ ]
+
+def Plugins(**kwargs):
+       if config.usage.setup_level.index > 1:
+               return [PluginDescriptor( where = PluginDescriptor.WHERE_SESSIONSTART, fnc = sessionstart ),
+                               PluginDescriptor( where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart ),
+                               PluginDescriptor( name = "CommonInterfaceAssignment", description = _("a gui to assign services/providers/caids to common interface modules"), where = PluginDescriptor.WHERE_MENU, fnc = menu )]
+       else:
+               return [PluginDescriptor( where = PluginDescriptor.WHERE_SESSIONSTART, fnc = sessionstart ),
+                               PluginDescriptor( where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart ),
+                               PluginDescriptor( name = "CommonInterfaceAssignment", description = _("a gui to assign services/providers to common interface modules"), where = PluginDescriptor.WHERE_MENU, fnc = menu )]
index 078619542f379a88fbc3427aae4269f11ab331ae..bb4df74a07fff74ceeea80d3d8f41463885d2555 100644 (file)
@@ -78,6 +78,14 @@ class ResultParser:
                                                text += " ==> "
                                                text += str(transponder[0])
                                                text += "\n"
+                                       if reason == "pids_failed":
+                                               text += "(tsid, onid): "
+                                               text += str(transponder[3]['real'])
+                                               text += "(read from sat) != "
+                                               text += str(transponder[3]['expected'])
+                                               text += "(read from file)"
+                                               text += "\n"
+                                       text += "\n"
                if countsuccessful > 0:
                        text += "\n"
                        text += "Successfully tuned transponders' previous planes:\n" 
@@ -265,7 +273,7 @@ class DiseqcTester(Screen, TuneTest, ResultParser):
                for sat in nimmanager.getSatListForNim(self.feid):
                        for transponder in nimmanager.getTransponders(sat[0]):
                                #print transponder
-                               mytransponder = (transponder[1] / 1000, transponder[2] / 1000, transponder[3], transponder[4], transponder[5], sat[0], None, None, transponder[10], transponder[11])
+                               mytransponder = (transponder[1] / 1000, transponder[2] / 1000, transponder[3], transponder[4], transponder[7], sat[0], transponder[5], transponder[6], transponder[8], transponder[9], transponder[10], transponder[11])
                                self.analyseTransponder(mytransponder)
 
        def getIndexForTransponder(self, transponder):
@@ -623,7 +631,7 @@ class DiseqcTesterNimSelection(NimSelection):
        def showNim(self, nim):
                nimConfig = nimmanager.getNimConfig(nim.slot)
                if nim.isCompatible("DVB-S"):
-                       if nimConfig.configMode.value in ["loopthrough", "equal", "satposdepends", "nothing"]:
+                       if nimConfig.configMode.value in ("loopthrough", "equal", "satposdepends", "nothing"):
                                return False
                        if nimConfig.configMode.value == "simple":
                                if nimConfig.diseqcMode.value == "positioner":
index 10151f2c7477877235c7581f4a00aad89ef65d59..634c7f42de3ec9f2acc026a6014f83117382b980 100755 (executable)
@@ -1 +1,3 @@
-SUBDIRS = SoftwareManager FrontprocessorUpgrade PositionerSetup Satfinder SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug DefaultServicesScanner NFIFlash DiseqcTester
+SUBDIRS = SoftwareManager FrontprocessorUpgrade PositionerSetup Satfinder \
+       SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug \
+       DefaultServicesScanner NFIFlash DiseqcTester CommonInterfaceAssignment
index ec223d3e22ffc1ea8622446f7fd9c5b75dca918b..ec472e72f156e1b080df244c7d22ab773ecbc5ca 100644 (file)
@@ -25,7 +25,8 @@ class SecParameterSetup(Screen, ConfigListScreen):
                list = [
                        ("Delay after diseqc reset command", config.sec.delay_after_diseqc_reset_cmd),
                        ("Delay after diseqc peripherial poweron command", config.sec.delay_after_diseqc_peripherial_poweron_cmd),
-                       ("Delay after continuous tone change", config.sec.delay_after_continuous_tone_change),
+                       ("Delay after continuous tone disable before diseqc", config.sec.delay_after_continuous_tone_disable_before_diseqc),
+                       ("Delay after final continuous tone change", config.sec.delay_after_final_continuous_tone_change),
                        ("Delay after last voltage change", config.sec.delay_after_final_voltage_change),
                        ("Delay between diseqc commands", config.sec.delay_between_diseqc_repeats),
                        ("Delay after last diseqc command", config.sec.delay_after_last_diseqc_command),
index 947452e920d227aa2d583d4469906a359ba81b78..327f08ed63b5bfb84d28deaac79d24815f30a60e 100755 (executable)
@@ -308,5 +308,3 @@ class RestoreScreen(Screen, ConfigListScreen):
        def runAsync(self, finished_cb):
                self.finished_cb = finished_cb
                self.doRestore()
-               
-       
\ No newline at end of file
index 09b61bd54793b68c55eb149b97191415f2cf3bcc..3eefa47d8b06d23d94530ccc383204a184cef56a 100755 (executable)
@@ -19,7 +19,7 @@ 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
+from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont, getDesktop
 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
@@ -82,7 +82,7 @@ class UpdatePluginMenu(Screen):
                        <widget source="menu" render="Listbox" position="280,10" size="230,300" scrollbarMode="showNever" selectionDisabled="1">
                                <convert type="TemplatedMultiContent">
                                        {"template": [
-                                                       MultiContentEntryText(pos = (2, 2), size = (230, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 0 is the MenuText,
+                                                       MultiContentEntryText(pos = (2, 2), size = (230, 300), flags = RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, text = 2), # index 2 is the Description,
                                                ],
                                        "fonts": [gFont("Regular", 20)],
                                        "itemHeight": 230
@@ -157,7 +157,8 @@ class UpdatePluginMenu(Screen):
                                if (current == "ipkg-manager"):
                                        self.session.open(PacketManager, self.skin_path)
                                elif (current == "ipkg-source"):
-                                       self.session.open(IPKGSource)
+                                       self.session.open(IPKGMenu, self.skin_path)
+                                       #self.session.open(IPKGSource)
                                elif (current == "ipkg-install"):
                                        try:
                                                from Plugins.Extensions.MediaScanner.plugin import main
@@ -223,34 +224,123 @@ class UpdatePluginMenu(Screen):
                        self.exe = True
                        self.session.open(RestoreScreen, runRestore = True)
 
+class IPKGMenu(Screen):
+       skin = """
+               <screen name="IPKGMenu" position="135,144" size="450,320" title="Select IPKG source......" >
+                       <widget name="filelist" position="10,10" size="430,240" scrollbarMode="showOnDemand" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,280" zPosition="2" size="140,40" transparent="1" alphatest="on" />
+                       <widget name="closetext" position="20,290" size="140,21" zPosition="10" font="Regular;21" transparent="1" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,280" zPosition="2" size="140,40" transparent="1" alphatest="on" />
+                       <widget name="edittext" position="170,290" size="300,21" zPosition="10" font="Regular;21" transparent="1" />
+               </screen>"""
+
+       def __init__(self, session, plugin_path):
+               Screen.__init__(self, session)
+               self.skin_path = plugin_path
+               
+               self["closetext"] = Label(_("Close"))
+               self["edittext"] = Label(_("Edit"))
+
+               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,
+                       "green": 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(_("Select IPKG source to edit..."))
+
+
+       def fill_list(self):
+               self.flist = []
+               self.path = '/etc/ipkg/'
+               if (os_path.exists(self.path) == False):
+                       self.entry = False
+                       return
+               for file in listdir(self.path):
+                       if (file.endswith(".conf")):
+                               if file != 'arch.conf':
+                                       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.open(IPKGSource, self.val)
+
+       def keyCancel(self):
+               self.close()
+
+       def Exit(self):
+               self.close()
+
 
 class IPKGSource(Screen):
        skin = """
-               <screen position="100,100" size="550,60" title="IPKG source" >
-                       <widget name="text" position="0,0" size="550,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
+               <screen name="IPKGSource" position="100,100" size="550,80" title="IPKG source" >
+                       <widget name="text" position="10,10" size="530,25" font="Regular;20" backgroundColor="background" foregroundColor="#cccccc" />
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="10,40" zPosition="2" size="140,40" transparent="1" alphatest="on" />
+                       <widget name="closetext" position="20,50" size="140,21" zPosition="10" font="Regular;21" transparent="1" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="160,40" zPosition="2" size="140,40" transparent="1" alphatest="on" />
+                       <widget name="edittext" position="170,50" size="300,21" zPosition="10" font="Regular;21" transparent="1" />
                </screen>"""
                
-       def __init__(self, session, args = None):
+       def __init__(self, session, configfile = None):
                Screen.__init__(self, session)
                self.session = session
-
-               #FIXMEEEE add handling for more than one feed conf file!
+               self.configfile = configfile
                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"], 
+               if self.configfile:
+                       try:
+                               fp = file(configfile, 'r')
+                               sources = fp.readlines()
+                               if sources:
+                                       text = sources[0]
+                               fp.close()
+                       except IOError:
+                               pass
+
+               desk = getDesktop(0)
+               x= int(desk.size().width())
+               y= int(desk.size().height())
+               #print "[IPKGSource] mainscreen: current desktop size: %dx%d" % (x,y)
+
+               self["closetext"] = Label(_("Cancel"))
+               self["edittext"] = Label(_("Save"))
+               
+               if (y>=720):
+                       self["text"] = Input(text, maxSize=False, type=Input.TEXT)
+               else:
+                       self["text"] = Input(text, maxSize=False, visible_width = 55, type=Input.TEXT)
+                       
+               self["actions"] = NumberActionMap(["WizardActions", "InputActions", "TextEntryActions", "KeyboardInputActions","ShortcutActions"], 
                {
                        "ok": self.go,
                        "back": self.close,
+                       "red": self.close,
+                       "green": self.go,
                        "left": self.keyLeft,
                        "right": self.keyRight,
                        "home": self.keyHome,
@@ -268,12 +358,22 @@ class IPKGSource(Screen):
                        "9": self.keyNumberGlobal,
                        "0": self.keyNumberGlobal
                }, -1)
+
+               self.onLayoutFinish.append(self.layoutFinished)
+
+       def layoutFinished(self):
+               self.setWindowTitle()
+               self["text"].right()
+
+       def setWindowTitle(self):
+               self.setTitle(_("Edit IPKG source URL..."))
                
        def go(self):
                text = self["text"].getText()
                if text:
-                       fp = file('/etc/ipkg/official-feed.conf', 'w')
-                       fp.write()
+                       fp = file(self.configfile, 'w')
+                       fp.write(text)
+                       fp.write("\n")
                        fp.close()
                self.close()
                
@@ -715,7 +815,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False), 
                                ], 
                        name = "Ipkg", 
-                       description = "Install software updates..."
+                       description = _("Install software updates...")
                        openfnc = filescan_open, )
 
 def UpgradeMain(session, **kwargs):
index 6a85c4da9338d6c40802ef8a6c396e13b6ecda9a..64f79e04e6295b07883e1bc091ce479b9d9cdeac 100644 (file)
@@ -67,7 +67,7 @@ class VideoHardware:
                else:
                        mode = config.av.videomode[port].value
                        force_widescreen = self.isWidescreenMode(port, mode)
-                       is_widescreen = force_widescreen or config.av.aspect.value in ["16_9", "16_10"]
+                       is_widescreen = force_widescreen or config.av.aspect.value in ("16_9", "16_10")
                        is_auto = config.av.aspect.value == "auto"
                        if is_widescreen:
                                if force_widescreen:
@@ -283,7 +283,7 @@ class VideoHardware:
 
                force_widescreen = self.isWidescreenMode(port, mode)
 
-               is_widescreen = force_widescreen or config.av.aspect.value in ["16_9", "16_10"]
+               is_widescreen = force_widescreen or config.av.aspect.value in ("16_9", "16_10")
                is_auto = config.av.aspect.value == "auto"
                policy2 = "policy" # use main policy
 
index 1d7ce7b56eff8aa4d35ecf97ccae8fa3e78eb1a5..8f8bea095cc95dc7c4e1612b2a6bbaaa3eb6f2ab 100644 (file)
@@ -13,8 +13,8 @@ config.misc.showtestcard = ConfigBoolean(default = False)
 class VideoWizardSummary(WizardSummary):
        skin = """
        <screen position="0,0" size="132,64">
-               <widget name="text" position="6,4" size="120,42" font="Regular;14" transparent="1" />
-               <widget source="parent.list" render="Label" position="6,25" size="120,21" font="Regular;16">
+               <widget name="text" position="6,4" size="120,40" font="Regular;12" transparent="1" />
+               <widget source="parent.list" render="Label" position="6,40" size="120,21" font="Regular;14">
                        <convert type="StringListSelection" />
                </widget>
                <!--widget name="pic" pixmap="%s" position="6,22" zPosition="10" size="64,64" transparent="1" alphatest="on"/-->
@@ -165,7 +165,7 @@ class VideoWizard(WizardLanguage, Rc):
                        config.misc.showtestcard.value = False
 
        def keyNumberGlobal(self, number):
-               if number in [1,2,3]:
+               if number in (1,2,3):
                        if number == 1:
                                self.hw.saveMode("DVI", "720p", "multi")
                        elif number == 2:
index 30bdf796b429721a87aad24b8184eeea7c138b85..6b6d50451335dfef5834690a8e5c782c258ba07b 100644 (file)
@@ -52,8 +52,9 @@ class VideoSetup(Screen, ConfigListScreen):
        def createSetup(self):
                level = config.usage.setup_level.index
 
-               self.list = [ ]
-               self.list.append(getConfigListEntry(_("Video Output"), config.av.videoport))
+               self.list = [
+                       getConfigListEntry(_("Video Output"), config.av.videoport)
+               ]
 
                # if we have modes for this port:
                if config.av.videoport.value in config.av.videomode:
@@ -76,9 +77,11 @@ class VideoSetup(Screen, ConfigListScreen):
                if not force_wide:
                        self.list.append(getConfigListEntry(_("Aspect Ratio"), config.av.aspect))
 
-               if force_wide or config.av.aspect.value in ["16_9", "16_10"]:
-                       self.list.append(getConfigListEntry(_("Display 4:3 content as"), config.av.policy_43))
-                       self.list.append(getConfigListEntry(_("Display >16:9 content as"), config.av.policy_169))
+               if force_wide or config.av.aspect.value in ("16_9", "16_10"):
+                       self.list.extend((
+                               getConfigListEntry(_("Display 4:3 content as"), config.av.policy_43),
+                               getConfigListEntry(_("Display >16:9 content as"), config.av.policy_169)
+                       ))
                elif config.av.aspect.value == "4_3":
                        self.list.append(getConfigListEntry(_("Display 16:9 content as"), config.av.policy_169))
 
@@ -95,6 +98,10 @@ class VideoSetup(Screen, ConfigListScreen):
                        self.list.append(getConfigListEntry(_("AC3 default"), config.av.defaultac3))
                        if SystemInfo["CanDownmixAC3"]:
                                self.list.append(getConfigListEntry(_("AC3 downmix"), config.av.downmix_ac3))
+                       self.list.extend((
+                               getConfigListEntry(_("General AC3 Delay"), config.av.generalAC3delay),
+                               getConfigListEntry(_("General PCM Delay"), config.av.generalPCMdelay)
+                       ))
 
                if SystemInfo["CanChangeOsdAlpha"]:
                        self.list.append(getConfigListEntry(_("OSD visibility"), config.av.osd_alpha))
index 2a592aae7305f87f991f3fe4ef43dc66de618e63..29ac4297513163bbb3556b6f89c3ff911e5bf97a 100644 (file)
@@ -1,7 +1,7 @@
 <wizard>
-       <step id="inputselection" nextstep="modeselection" timeout="10" timeoutaction="selectnext">
+       <step id="inputselection" nextstep="modeselection" timeout="20" timeoutaction="selectnext">
                <text value="Video input selection\n\nPlease press OK if you can see this page on your TV (or select a different input port).\n\nThe next input port will be automatically probed in 10 seconds." />
-               <displaytext value="Select video input" />
+               <displaytext value="Select video input with up/down buttons" />
                <list type="dynamic" source="listInputChannels" evaluation="inputSelectionMade" onselect="inputSelectionMoved" />
                <code>
 self["portpic"].show()
@@ -9,7 +9,7 @@ self.clearSelectedKeys()
 self.selectKey("OK")
                </code>
        </step>
-       <step id="modeselection" nextstep="rateselection" timeout="10" timeoutaction="selectnext">
+       <step id="modeselection" nextstep="rateselection" timeout="20" timeoutaction="selectnext">
                <text value="Video mode selection." />
                <displaytext value="Select video mode" />
                <list type="dynamic" source="listModes" evaluation="modeSelectionMade" onselect="modeSelectionMoved" />
@@ -20,7 +20,7 @@ self.selectKey("DOWN")
 self["portpic"].hide()
                </code>
        </step>
-       <step id="rateselection" nextstep="dvirateintroduction" timeout="10" timeoutaction="selectnext">
+       <step id="rateselection" nextstep="dvirateintroduction" timeout="20" timeoutaction="selectnext">
                <condition>
 self.condition = (self.port != "DVI" or self.mode == "PC")
                </condition>            
@@ -46,7 +46,7 @@ self.selectKey("DOWN")
 self.rateSelect("60Hz")
                </code>
        </step>
-       <step id="dvirateselection" timeout="10" timeoutaction="changestep" timeoutstep="notworking50Hz">
+       <step id="dvirateselection" timeout="20" timeoutaction="changestep" timeoutstep="notworking50Hz">
                <condition>
 self.condition = (self.port == "DVI" and self.mode in ["720p", "1080i"])
                </condition>
@@ -77,7 +77,7 @@ self.selectKey("UP")
 self.selectKey("DOWN")
                </code>
        </step>
-       <step id="working50Hz" nextstep="end" timeout="10" timeoutaction="nextstep">
+       <step id="working50Hz" nextstep="end" timeout="20" timeoutaction="nextstep">
                <condition>
 self.condition = (self.port == "DVI" and self.mode in ["720p", "1080i"])
                </condition>
index e184512b8ca5ca847b432971039c28fb56e79023..6cf0f7b4558fe445cf9107950efe304c02196c63 100644 (file)
@@ -25,7 +25,7 @@ class About(Screen):
                self["FPVersion"] = StaticText(fp_version)
 
                nims = nimmanager.nimList()
-               for count in range(4):
+               for count in (0, 1, 2, 3):
                        if count < len(nims):
                                self["Tuner" + str(count)] = StaticText(nims[count])
                        else:
@@ -33,7 +33,7 @@ class About(Screen):
 
                self["HDDHeader"] = StaticText(_("Detected HDD:"))
                hddlist = harddiskmanager.HDDList()
-               hdd = len(hddlist) > 0 and hddlist[0][1] or None
+               hdd = hddlist and hddlist[0][1] or None
                if hdd is not None and hdd.model() != "":
                        self["hddA"] = StaticText(_("%s\n(%s, %d MB free)") % (hdd.model(), hdd.capacity(),hdd.free()))
                else:
index ebfbe812fb5e132b04762a0099fc15ed022835d0..0ff4042bf0562b20706835ab0ce7ae84567bf95b 100644 (file)
@@ -95,7 +95,7 @@ class ChannelContextMenu(Screen):
                inBouquet = csel.getMutableList() is not None
                haveBouquets = config.usage.multibouquet.value
 
-               if not (len(current_sel_path) or current_sel_flags & (eServiceReference.isDirectory|eServiceReference.isMarker)):
+               if not (current_sel_path or current_sel_flags & (eServiceReference.isDirectory|eServiceReference.isMarker)):
                        append_when_current_valid(current, menu, (_("show transponder info"), self.showServiceInformations), level = 2)
                if csel.bouquet_mark_edit == OFF and not csel.movemode:
                        if not inBouquetRootList:
@@ -317,11 +317,24 @@ class ChannelSelectionEPG:
 
        def showEPGList(self):
                ref=self.getCurrentSelection()
-               ptr=eEPGCache.getInstance()
-               if ptr.startTimeQuery(ref) != -1:
-                       self.session.open(EPGSelection, ref)
-               else:
-                       print 'no epg for service', ref.toString()
+               if ref:
+                       self.savedService = ref
+                       self.session.openWithCallback(self.SingleServiceEPGClosed, EPGSelection, ref, serviceChangeCB=self.changeServiceCB)
+
+       def SingleServiceEPGClosed(self, ret=False):
+               self.setCurrentSelection(self.savedService)
+
+       def changeServiceCB(self, direction, epg):
+               beg = self.getCurrentSelection()
+               while True:
+                       if direction > 0:
+                               self.moveDown()
+                       else:
+                               self.moveUp()
+                       cur = self.getCurrentSelection()
+                       if cur == beg or not (cur.flags & eServiceReference.isMarker):
+                               break
+               epg.setService(ServiceReference(self.getCurrentSelection()))
 
 class ChannelSelectionEdit:
        def __init__(self):
@@ -558,7 +571,7 @@ class ChannelSelectionEdit:
                del self.servicePath[:] # remove all elements
                self.servicePath += self.savedPath # add saved elements
                del self.savedPath
-               self.setRoot(self.servicePath[len(self.servicePath)-1])
+               self.setRoot(self.servicePath[-1])
 
        def clearMarks(self):
                self.servicelist.clearMarks()
@@ -781,13 +794,13 @@ class ChannelSelectionBase(Screen):
 
        def getServiceName(self, ref):
                str = self.removeModeStr(ServiceReference(ref).getServiceName())
-               if not len(str):
+               if not str:
                        pathstr = ref.getPath()
-                       if pathstr.find('FROM PROVIDERS') != -1:
+                       if 'FROM PROVIDERS' in pathstr:
                                return _("Provider")
-                       if pathstr.find('FROM SATELLITES') != -1:
+                       if 'FROM SATELLITES' in pathstr:
                                return _("Satellites")
-                       if pathstr.find(') ORDER BY name') != -1:
+                       if ') ORDER BY name' in pathstr:
                                return _("All")
                return str
 
@@ -831,9 +844,8 @@ class ChannelSelectionBase(Screen):
 
        def pathUp(self, justSet=False):
                prev = self.servicePath.pop()
-               length = len(self.servicePath)
-               if length:
-                       current = self.servicePath[length-1]
+               if self.servicePath:
+                       current = self.servicePath[-1]
                        self.setRoot(current, justSet)
                        if not justSet:
                                self.setCurrentSelection(prev)
@@ -961,7 +973,7 @@ class ChannelSelectionBase(Screen):
                                self.enterPath(ref)
 
        def inBouquet(self):
-               if len(self.servicePath) > 0 and self.servicePath[0] == self.bouquet_root:
+               if self.servicePath and self.servicePath[0] == self.bouquet_root:
                        return True
                return False
 
@@ -1235,8 +1247,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                del self.servicePath[:]
                self.servicePath += path
                self.saveRoot()
-               plen = len(path)
-               root = path[plen-1]
+               root = path[-1]
                cur_root = self.getRoot()
                if cur_root and cur_root != root:
                        self.setRoot(root)
@@ -1249,7 +1260,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                for i in self.servicePath:
                        path += i.toString()
                        path += ';'
-               if len(path) and path != self.lastroot.value:
+               if path and path != self.lastroot.value:
                        self.lastroot.value = path
                        self.lastroot.save()
 
@@ -1259,7 +1270,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                tmp = re.findall(self.lastroot.value)
                cnt = 0
                for i in tmp:
-                       self.servicePath.append(eServiceReference(i[:len(i)-1]))
+                       self.servicePath.append(eServiceReference(i[:-1]))
                        cnt += 1
                if cnt:
                        path = self.servicePath.pop()
@@ -1269,7 +1280,7 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                        self.saveRoot()
 
        def preEnterPath(self, refstr):
-               if len(self.servicePath) and self.servicePath[0] != eServiceReference(refstr):
+               if self.servicePath and self.servicePath[0] != eServiceReference(refstr):
                        pathstr = self.lastroot.value
                        if pathstr is not None and pathstr.find(refstr) == 0:
                                self.restoreRoot()
@@ -1289,16 +1300,14 @@ class ChannelSelection(ChannelSelectionBase, ChannelSelectionEdit, ChannelSelect
                        self.lastservice.save()
 
        def setCurrentServicePath(self, path):
-               hlen = len(self.history)
-               if hlen > 0:
+               if self.history:
                        self.history[self.history_pos] = path
                else:
                        self.history.append(path)
                self.setHistoryPath()
 
        def getCurrentServicePath(self):
-               hlen = len(self.history)
-               if hlen > 0:
+               if self.history:
                        return self.history[self.history_pos]
                return None
 
@@ -1411,7 +1420,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                for i in self.servicePathRadio:
                        path += i.toString()
                        path += ';'
-               if len(path) and path != config.radio.lastroot.value:
+               if path and path != config.radio.lastroot.value:
                        config.radio.lastroot.value = path
                        config.radio.lastroot.save()
 
@@ -1421,7 +1430,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                tmp = re.findall(config.radio.lastroot.value)
                cnt = 0
                for i in tmp:
-                       self.servicePathRadio.append(eServiceReference(i[:len(i)-1]))
+                       self.servicePathRadio.append(eServiceReference(i[:-1]))
                        cnt += 1
                if cnt:
                        path = self.servicePathRadio.pop()
@@ -1431,7 +1440,7 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                        self.saveRoot()
 
        def preEnterPath(self, refstr):
-               if len(self.servicePathRadio) and self.servicePathRadio[0] != eServiceReference(refstr):
+               if self.servicePathRadio and self.servicePathRadio[0] != eServiceReference(refstr):
                        pathstr = config.radio.lastroot.value
                        if pathstr is not None and pathstr.find(refstr) == 0:
                                self.restoreRoot()
index 4739b7e1d5bb1b5e10476581eaddd98649ceb865..7c8b1427dc16d24976837f47303a05abdf56c255 100644 (file)
@@ -5,9 +5,13 @@ from Components.ChoiceList import ChoiceEntryComponent, ChoiceList
 from Components.Sources.StaticText import StaticText
 
 class ChoiceBox(Screen):
-       def __init__(self, session, title = "", list = [], keys = None, selection = 0):
+       def __init__(self, session, title = "", list = [], keys = None, selection = 0, skin_name = []):
                Screen.__init__(self, session)
 
+               if isinstance(skin_name, str):
+                       skin_name = [skin_name]
+               self.skinName = skin_name + ["ChoiceBox"] 
+
                self["text"] = Label(title)
                self.list = []
                self.summarylist = []
index 5028301e9275c37ad57b2dadf9ce931aa7cdeaa5..0fb0feeb19a366d9a01dbe5830ef84bee2e06f7b 100644 (file)
@@ -12,11 +12,21 @@ from enigma import eTimer, eDVBCI_UI, eDVBCIInterfaces
 
 MAX_NUM_CI = 4
 
+def setCIBitrate(configElement):
+       if configElement.value == "no":
+               eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateNormal)
+       else:
+               eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateHigh)
+
 def InitCiConfig():
        config.ci = ConfigSubList()
        for slot in range(MAX_NUM_CI):
                config.ci.append(ConfigSubsection())
                config.ci[slot].canDescrambleMultipleServices = ConfigSelection(choices = [("auto", _("Auto")), ("no", _("No")), ("yes", _("Yes"))], default = "auto")
+               if SystemInfo["CommonInterfaceSupportsHighBitrates"]:
+                       config.ci[slot].canHandleHighBitrates = ConfigSelection(choices = [("no", _("No")), ("yes", _("Yes"))], default = "no")
+                       config.ci[slot].canHandleHighBitrates.slotid = slot
+                       config.ci[slot].canHandleHighBitrates.addNotifier(setCIBitrate)
 
 class MMIDialog(Screen):
        def __init__(self, session, slotid, action, handler = eDVBCI_UI.getInstance(), wait_text = _("wait for ci...") ):
@@ -121,7 +131,7 @@ class MMIDialog(Screen):
                elif self.tag == "WAIT":
                        self.handler.stopMMI(self.slotid)
                        self.closeMmi()
-               elif self.tag in [ "MENU", "LIST" ]:
+               elif self.tag in ( "MENU", "LIST" ):
                        print "cancel list"
                        self.handler.answerMenu(self.slotid, 0)
                        self.showWait()
@@ -226,7 +236,13 @@ class CiMessageHandler:
                self.ci = { }
                self.dlgs = { }
                eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged)
-               SystemInfo["CommonInterface"]= eDVBCIInterfaces.getInstance().getNumOfSlots() > 0
+               SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0
+               try:
+                       file = open("/proc/stb/tsmux/ci0_tsclk", "r")
+                       file.close()
+                       SystemInfo["CommonInterfaceSupportsHighBitrates"] = True
+               except:
+                       SystemInfo["CommonInterfaceSupportsHighBitrates"] = False
 
        def setSession(self, session):
                self.session = session
@@ -285,7 +301,7 @@ class CiSelection(Screen):
 
        def selectionChanged(self):
                cur_idx = self["entries"].getCurrentIndex()
-               self["text"].setText(_("Slot %d")%((cur_idx / 4)+1))
+               self["text"].setText(_("Slot %d")%((cur_idx / 5)+1))
 
        def keyConfigEntry(self, key):
                try:
@@ -315,6 +331,8 @@ class CiSelection(Screen):
                        self.list.append( (appname, ConfigNothing(), 2, slot) )
 
                self.list.append(getConfigListEntry(_("Multiple service support"), config.ci[slot].canDescrambleMultipleServices))
+               if SystemInfo["CommonInterfaceSupportsHighBitrates"]:
+                       self.list.append(getConfigListEntry(_("High bitrate support"), config.ci[slot].canHandleHighBitrates))
 
        def updateState(self, slot):
                state = eDVBCI_UI.getInstance().getState(slot)
index c6b156cfb7893fc7de31f9e357100ce98e4baddd..2058c041f887ea11951bba5570af639483981bc3 100644 (file)
@@ -11,7 +11,6 @@ class Console(Screen):
                </screen>"""
                
        def __init__(self, session, title = "Console", cmdlist = None, finishedCallback = None, closeOnSuccess = False):
-               self.skin = Console.skin
                Screen.__init__(self, session)
 
                self.finishedCallback = finishedCallback
@@ -68,4 +67,4 @@ class Console(Screen):
                        self.container.dataAvail.remove(self.dataAvail)
 
        def dataAvail(self, str):
-               self["text"].setText(self["text"].getText() + str)
\ No newline at end of file
+               self["text"].setText(self["text"].getText() + str)
index 9883dc8e9ef4259d9885a2ac0cbb017826252ac4..73b07acf5b07c72caa136fee76e2068ffd297c7d 100644 (file)
@@ -96,8 +96,6 @@ def filescan_open(list, session, **kwargs):
 
 def filescan(**kwargs):
        from Components.Scanner import Scanner, ScanPath
-       from mimetypes import add_type
-       add_type("application/x-dream-package", "dmpkg")
        return \
                Scanner(mimetypes = ["application/x-dream-package"], 
                        paths_to_scan = 
@@ -106,7 +104,7 @@ def filescan(**kwargs):
                                        ScanPath(path = "", with_subdirs = False), 
                                ], 
                        name = "Dream-Package", 
-                       description = "Install settings, skins, software..."
+                       description = _("Install settings, skins, software...")
                        openfnc = filescan_open, )
 
 print "add dreampackage scanner plugin"
index e7388fc296812aef5d1b21b9c585085a5730a66b..d09ed004b8c686d52cb8b9810d4f65e6223fd37a 100644 (file)
@@ -25,12 +25,14 @@ class EPGSelection(Screen):
        
        ZAP = 1
 
-       def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None):
+       def __init__(self, session, service, zapFunc=None, eventid=None, bouquetChangeCB=None, serviceChangeCB=None):
                Screen.__init__(self, session)
                self.bouquetChangeCB = bouquetChangeCB
+               self.serviceChangeCB = serviceChangeCB
                self.ask_time = -1 #now
                self["key_red"] = Button("")
                self.closeRecursive = False
+               self.saved_title = None
                if isinstance(service, str) and eventid != None:
                        self.type = EPG_TYPE_SIMILAR
                        self["key_yellow"] = Button()
@@ -68,7 +70,7 @@ class EPGSelection(Screen):
                self["key_green"] = Button(_("Add timer"))
                self.key_green_choice = self.ADD_TIMER
                self.key_red_choice = self.EMPTY
-               self["list"] = EPGList(type = self.type, selChangedCB = self.onSelectionChanged, timer = self.session.nav.RecordTimer)
+               self["list"] = EPGList(type = self.type, selChangedCB = self.onSelectionChanged, timer = session.nav.RecordTimer)
 
                self["actions"] = ActionMap(["EPGSelectActions", "OkCancelActions"],
                        {
@@ -80,11 +82,12 @@ class EPGSelection(Screen):
                                "info": self.infoKeyPressed,
                                "red": self.zapTo,
                                "input_date_time": self.enterDateTime,
-                               "nextBouquet": self.nextBouquet,
-                               "prevBouquet": self.prevBouquet
+                               "nextBouquet": self.nextBouquet, # just used in multi epg yet
+                               "prevBouquet": self.prevBouquet, # just used in multi epg yet
+                               "nextService": self.nextService, # just used in single epg yet
+                               "prevService": self.prevService, # just used in single epg yet
                        })
                self["actions"].csel = self
-
                self.onLayoutFinish.append(self.onCreate)
 
        def nextBouquet(self):
@@ -95,6 +98,14 @@ class EPGSelection(Screen):
                if self.bouquetChangeCB:
                        self.bouquetChangeCB(-1, self)
 
+       def nextService(self):
+               if self.serviceChangeCB:
+                       self.serviceChangeCB(1, self)
+
+       def prevService(self):
+               if self.serviceChangeCB:
+                       self.serviceChangeCB(-1, self)
+
        def enterDateTime(self):
                if self.type == EPG_TYPE_MULTI:
                        global mepg_config_initialized
@@ -129,6 +140,10 @@ class EPGSelection(Screen):
                self.services = services
                self.onCreate()
 
+       def setService(self, service):
+               self.currentService = service
+               self.onCreate()
+
        #just used in multipeg
        def onCreate(self):
                l = self["list"]
@@ -137,7 +152,12 @@ class EPGSelection(Screen):
                        l.fillMultiEPG(self.services, self.ask_time)
                        l.moveToService(self.session.nav.getCurrentlyPlayingServiceReference())
                elif self.type == EPG_TYPE_SINGLE:
-                       l.fillSingleEPG(self.currentService)
+                       service = self.currentService
+                       if self.saved_title is None:
+                               self.saved_title = self.instance.getTitle()
+                       title = self.saved_title + ' - ' + service.getServiceName()
+                       self.instance.setTitle(title)
+                       l.fillSingleEPG(service)
                else:
                        l.fillSimilarList(self.currentService, self.eventid)
 
index 6aed1e113d88b3fbbe8b2984b8ed662b1429705c..c1ffb5851d3e3e34c064076aabdddc90b47480ef 100644 (file)
@@ -20,7 +20,7 @@ class EventViewBase:
                self.similarEPGCB = similarEPGCB
                self.cbFunc = callback
                self.currentService=Ref
-               self.isRecording = (not Ref.ref.flags & eServiceReference.isGroup) and len(Ref.ref.getPath())
+               self.isRecording = (not Ref.ref.flags & eServiceReference.isGroup) and Ref.ref.getPath()
                self.event = Event
                self["epg_description"] = ScrollLabel()
                self["datetime"] = Label()
@@ -71,6 +71,8 @@ class EventViewBase:
                self.key_green_choice = self.ADD_TIMER
        
        def timerAdd(self):
+               if self.isRecording:
+                       return
                event = self.event
                serviceref = self.currentService
                if event is None:
@@ -134,12 +136,12 @@ class EventViewBase:
                text = event.getEventName()
                short = event.getShortDescription()
                ext = event.getExtendedDescription()
-               if len(short) > 0 and short != text:
-                       text = text + '\n\n' + short
-               if len(ext) > 0:
-                       if len(text) > 0:
-                               text = text + '\n\n'
-                       text = text + ext
+               if short and short != text:
+                       text += '\n\n' + short
+               if ext:
+                       if text:
+                               text += '\n\n'
+                       text += ext
 
                self.setTitle(event.getEventName())
                self["epg_description"].setText(text)
@@ -189,7 +191,7 @@ class EventViewBase:
                        self["key_red"].setText(_("Similar"))
 
        def openSimilarList(self):
-               if self.similarEPGCB is not None and len(self["key_red"].getText()):
+               if self.similarEPGCB is not None and self["key_red"].getText():
                        id = self.event and self.event.getEventId()
                        refstr = str(self.currentService)
                        if id is not None:
index 19a674ec66d8da6116f4b61ce820d5a9b585b676..c9f069feb4262fb381870410923f564c7b69ec1c 100644 (file)
@@ -39,7 +39,7 @@ class HarddiskSetup(Screen):
                Screen.__init__(self, session)
                self.hdd = hdd
 
-               if type not in [self.HARDDISK_INITIALIZE, self.HARDDISK_CHECK]:
+               if type not in (self.HARDDISK_INITIALIZE, self.HARDDISK_CHECK):
                        self.type = self.HARDDISK_INITIALIZE
                else:
                        self.type = type
index abef38dbeb12af0abdf9d7a7cad1c812a6576fde..74882a3580d8d3feab41b8655ffac207f096baca 100644 (file)
@@ -29,13 +29,13 @@ class HelpMenu(Screen, Rc):
                #arrow = self["arrowup"]
                print "selection:", selection
 
-               if selection and len(selection) > 1 and selection[1] == "SHIFT":
-                       self.selectKey("SHIFT")
-
-               if selection and len(selection) > 1 and selection[1] == "long":
-                       self["long_key"].setText(_("Long Keypress"))
-               else:
-                       self["long_key"].setText("")
+               longText = ""
+               if selection and len(selection) > 1:
+                       if selection[1] == "SHIFT":
+                               self.selectKey("SHIFT")
+                       elif selection[1] == "long":
+                               longText = _("Long Keypress")
+               self["long_key"].setText(longText)
 
                self.selectKey(selection[0])
                #if selection is None:
@@ -55,6 +55,6 @@ class HelpableScreen:
                self.session.openWithCallback(self.callHelpAction, HelpMenu, self.helpList)
 
        def callHelpAction(self, *args):
-               if len(args):
+               if args:
                        (actionmap, context, action) = args
                        actionmap.action(context, action)
index bd9ea182a7040e62e02eec0a067ee07b70c8d4cb..4d92bd3997413541a7e2a19b548d0717ee997542 100644 (file)
@@ -148,8 +148,8 @@ class MoviePlayer(InfoBarBase, InfoBarShowHide, \
                                InfoBarPlugins:
                        x.__init__(self)
 
-               self.lastservice = self.session.nav.getCurrentlyPlayingServiceReference()
-               self.session.nav.playService(service)
+               self.lastservice = session.nav.getCurrentlyPlayingServiceReference()
+               session.nav.playService(service)
                self.returning = False
                self.onClose.append(self.__onClose)
 
index a50c10be1dd552b2907d4d6a7341ab4f8beee3fc..c161818451d6a7ab0f48f29ddf7264243d86af3d 100644 (file)
@@ -369,25 +369,66 @@ class InfoBarSimpleEventView:
                        })
 
        def openEventView(self):
-               self.epglist = [ ]
+               epglist = [ ]
+               self.epglist = epglist
                service = self.session.nav.getCurrentService()
                ref = self.session.nav.getCurrentlyPlayingServiceReference()
                info = service.info()
                ptr=info.getEvent(0)
                if ptr:
-                       self.epglist.append(ptr)
+                       epglist.append(ptr)
                ptr=info.getEvent(1)
                if ptr:
-                       self.epglist.append(ptr)
-               if len(self.epglist) > 0:
-                       self.session.open(EventViewSimple, self.epglist[0], ServiceReference(ref), self.eventViewCallback)
+                       epglist.append(ptr)
+               if epglist:
+                       self.session.open(EventViewSimple, epglist[0], ServiceReference(ref), self.eventViewCallback)
 
        def eventViewCallback(self, setEvent, setService, val): #used for now/next displaying
-               if len(self.epglist) > 1:
-                       tmp = self.epglist[0]
-                       self.epglist[0]=self.epglist[1]
-                       self.epglist[1]=tmp
-                       setEvent(self.epglist[0])
+               epglist = self.epglist
+               if len(epglist) > 1:
+                       tmp = epglist[0]
+                       epglist[0] = epglist[1]
+                       epglist[1] = tmp
+                       setEvent(epglist[0])
+
+class SimpleServicelist:
+       def __init__(self, services):
+               self.services = services
+               self.length = len(services)
+               self.current = 0
+
+       def selectService(self, service):
+               if not self.length:
+                       self.current = -1
+                       return False
+               else:
+                       self.current = 0
+                       while self.services[self.current].ref != service:
+                               self.current += 1
+                               if self.current >= self.length:
+                                       return False
+               return True
+
+       def nextService(self):
+               if not self.length:
+                       return
+               if self.current+1 < self.length:
+                       self.current += 1
+               else:
+                       self.current = 0
+
+       def prevService(self):
+               if not self.length:
+                       return
+               if self.current-1 > -1:
+                       self.current -= 1
+               else:
+                       self.current = self.length - 1
+
+       def currentService(self):
+               if not self.length or self.current >= self.length:
+                       return None
+               return self.services[self.current]
 
 class InfoBarEPG:
        """ EPG - Opens an EPG list when the showEPGList action fires """
@@ -440,7 +481,7 @@ class InfoBarEPG:
 
        def openBouquetEPG(self, bouquet, withCallback=True):
                services = self.getBouquetServices(bouquet)
-               if len(services):
+               if services:
                        self.epg_bouquet = bouquet
                        if withCallback:
                                self.dlg_stack.append(self.session.openWithCallback(self.closed, EPGSelection, services, self.zapToService, None, self.changeBouquetCB))
@@ -455,7 +496,7 @@ class InfoBarEPG:
                                self.bouquetSel.up()
                        bouquet = self.bouquetSel.getCurrent()
                        services = self.getBouquetServices(bouquet)
-                       if len(services):
+                       if services:
                                self.epg_bouquet = bouquet
                                epg.setServices(services)
 
@@ -485,19 +526,40 @@ class InfoBarEPG:
                elif cnt == 1:
                        self.openBouquetEPG(bouquets[0][1], withCallback)
 
+       def changeServiceCB(self, direction, epg):
+               if self.serviceSel:
+                       if direction > 0:
+                               self.serviceSel.nextService()
+                       else:
+                               self.serviceSel.prevService()
+                       epg.setService(self.serviceSel.currentService())
+
+       def SingleServiceEPGClosed(self, ret=False):
+               self.serviceSel = None
+
        def openSingleServiceEPG(self):
                ref=self.session.nav.getCurrentlyPlayingServiceReference()
-               self.session.open(EPGSelection, ref)
+               if ref:
+                       if self.servicelist.getMutableList() is not None: # bouquet in channellist
+                               current_path = self.servicelist.getRoot()
+                               services = self.getBouquetServices(current_path)
+                               self.serviceSel = SimpleServicelist(services)
+                               if self.serviceSel.selectService(ref):
+                                       self.session.openWithCallback(self.SingleServiceEPGClosed, EPGSelection, ref, serviceChangeCB = self.changeServiceCB)
+                               else:
+                                       self.session.openWithCallback(self.SingleServiceEPGClosed, EPGSelection, ref)
+                       else:
+                               self.session.open(EPGSelection, ref)
 
        def showEventInfoPlugins(self):
                list = [(p.name, boundFunction(self.runPlugin, p)) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EVENTINFO)]
 
                if list:
                        list.append((_("show single service EPG..."), self.openSingleServiceEPG))
-                       self.session.openWithCallback(self.EventInfoPluginChosen, ChoiceBox, title=_("Please choose an extension..."), list = list)
+                       self.session.openWithCallback(self.EventInfoPluginChosen, ChoiceBox, title=_("Please choose an extension..."), list = list, skin_name = "EPGExtensionsList")
                else:
                        self.openSingleServiceEPG()
-                       
+
        def runPlugin(self, plugin):
                plugin(session = self.session, servicelist = self.servicelist)
                
@@ -621,11 +683,6 @@ class InfoBarSeek:
                                iPlayableService.evEOF: self.__evEOF,
                                iPlayableService.evSOF: self.__evSOF,
                        })
-               self.eofState = 0
-               self.eofTimer = eTimer()
-               self.eofTimer.timeout.get().append(self.doEof)
-               self.eofInhibitTimer = eTimer()
-               self.eofInhibitTimer.timeout.get().append(self.inhibitEof)
 
                self.minSpeedBackward = useSeekBackHack and 16 or 0
 
@@ -642,9 +699,9 @@ class InfoBarSeek:
                                        return 1
                                elif action[:8] == "seekdef:":
                                        key = int(action[8:])
-                                       time = [-config.seek.selfdefined_13.value, False, config.seek.selfdefined_13.value,
+                                       time = (-config.seek.selfdefined_13.value, False, config.seek.selfdefined_13.value,
                                                -config.seek.selfdefined_46.value, False, config.seek.selfdefined_46.value,
-                                               -config.seek.selfdefined_79.value, False, config.seek.selfdefined_79.value][key-1]
+                                               -config.seek.selfdefined_79.value, False, config.seek.selfdefined_79.value)[key-1]
                                        self.screen.doSeekRelative(time * 90000)
                                        return 1                                        
                                else:
@@ -761,9 +818,6 @@ class InfoBarSeek:
        def __serviceStarted(self):
                self.seekstate = self.SEEK_STATE_PLAY
                self.__seekableStatusChanged()
-               if self.eofState != 0:
-                       self.eofTimer.stop()
-               self.eofState = 0
 
        def setSeekState(self, state):
                service = self.session.nav.getCurrentService()
@@ -772,7 +826,7 @@ class InfoBarSeek:
                        return False
 
                if not self.isSeekable():
-                       if state not in [self.SEEK_STATE_PLAY, self.SEEK_STATE_PAUSE]:
+                       if state not in (self.SEEK_STATE_PLAY, self.SEEK_STATE_PAUSE):
                                state = self.SEEK_STATE_PLAY
 
                pauseable = service.pause()
@@ -834,16 +888,6 @@ class InfoBarSeek:
                seekable = self.getSeek()
                if seekable is None:
                        return
-               prevstate = self.seekstate
-               if self.eofState == 1:
-                       self.eofState = 2
-                       self.inhibitEof()
-               if self.seekstate == self.SEEK_STATE_EOF:
-                       if prevstate == self.SEEK_STATE_PAUSE:
-                               self.setSeekState(self.SEEK_STATE_PAUSE)
-                       else:
-                               self.setSeekState(self.SEEK_STATE_PLAY)
-               self.eofInhibitTimer.start(200, True)
                seekable.seekTo(pts)
 
        def doSeekRelative(self, pts):
@@ -851,15 +895,12 @@ class InfoBarSeek:
                if seekable is None:
                        return
                prevstate = self.seekstate
-               if self.eofState == 1:
-                       self.eofState = 2
-                       self.inhibitEof()
+
                if self.seekstate == self.SEEK_STATE_EOF:
                        if prevstate == self.SEEK_STATE_PAUSE:
                                self.setSeekState(self.SEEK_STATE_PAUSE)
                        else:
                                self.setSeekState(self.SEEK_STATE_PLAY)
-               self.eofInhibitTimer.start(200, True)
                seekable.seekRelative(pts<0 and -1 or 1, abs(pts))
                if abs(pts) > 100 and config.usage.show_infobar_on_skip.value:
                        self.showAfterSeek()
@@ -894,30 +935,31 @@ class InfoBarSeek:
                        self.setSeekState(self.makeStateSlowMotion(speed))
 
        def seekBack(self):
-               if self.seekstate == self.SEEK_STATE_PLAY:
+               seekstate = self.seekstate
+               if seekstate == self.SEEK_STATE_PLAY:
                        self.setSeekState(self.makeStateBackward(int(config.seek.enter_backward.value)))
-               elif self.seekstate == self.SEEK_STATE_EOF:
+               elif seekstate == self.SEEK_STATE_EOF:
                        self.setSeekState(self.makeStateBackward(int(config.seek.enter_backward.value)))
                        self.doSeekRelative(-6)
-               elif self.seekstate == self.SEEK_STATE_PAUSE:
+               elif seekstate == self.SEEK_STATE_PAUSE:
                        self.doSeekRelative(-3)
-               elif self.isStateForward(self.seekstate):
-                       speed = self.seekstate[1]
-                       if self.seekstate[2]:
-                               speed /= self.seekstate[2]
+               elif self.isStateForward(seekstate):
+                       speed = seekstate[1]
+                       if seekstate[2]:
+                               speed /= seekstate[2]
                        speed = self.getLower(speed, config.seek.speeds_forward.value)
                        if speed:
                                self.setSeekState(self.makeStateForward(speed))
                        else:
                                self.setSeekState(self.SEEK_STATE_PLAY)
-               elif self.isStateBackward(self.seekstate):
-                       speed = -self.seekstate[1]
-                       if self.seekstate[2]:
-                               speed /= self.seekstate[2]
+               elif self.isStateBackward(seekstate):
+                       speed = -seekstate[1]
+                       if seekstate[2]:
+                               speed /= seekstate[2]
                        speed = self.getHigher(speed, config.seek.speeds_backward.value) or config.seek.speeds_backward.value[-1]
                        self.setSeekState(self.makeStateBackward(speed))
-               elif self.isStateSlowMotion(self.seekstate):
-                       speed = self.getHigher(self.seekstate[2], config.seek.speeds_slowmotion.value)
+               elif self.isStateSlowMotion(seekstate):
+                       speed = self.getHigher(seekstate[2], config.seek.speeds_slowmotion.value)
                        if speed:
                                self.setSeekState(self.makeStateSlowMotion(speed))
                        else:
@@ -970,44 +1012,19 @@ class InfoBarSeek:
                return False
                
        def __evEOF(self):
-               if self.eofState == 0 and self.seekstate != self.SEEK_STATE_EOF:
-                       self.eofState = 1
-                       time = self.calcRemainingTime()
-                       if not time:
-                               time = 3000   # Failed to calc, use default
-                       elif time == 0:
-                               time = 300    # Passed end, shortest wait
-                       elif time > 15000:
-                               self.eofState = -2  # Too long, block eof
-                               time = 15000
-                       else:
-                               time += 1000  # Add margin
-                       self.eofTimer.start(time, True)
-
-       def inhibitEof(self):
-               if self.eofState >= 1:
-                       self.eofState = -self.eofState
-                       self.eofTimer.stop()
-                       self.doEof()
-
-       def doEof(self):
                if self.seekstate == self.SEEK_STATE_EOF:
                        return
-               if self.eofState == -2 or self.isStateBackward(self.seekstate):
-                       self.eofState = 0
-                       return
 
-               # if we are seeking, we try to end up ~1s before the end, and pause there.
-               eofstate = self.eofState
+               # if we are seeking forward, we try to end up ~1s before the end, and pause there.
                seekstate = self.seekstate
-               self.eofState = 0
-               if not self.seekstate == self.SEEK_STATE_PAUSE:
+               if self.seekstate != self.SEEK_STATE_PAUSE:
                        self.setSeekState(self.SEEK_STATE_EOF)
-               if eofstate == -1 or not seekstate in [self.SEEK_STATE_PLAY, self.SEEK_STATE_PAUSE]:
+
+               if seekstate not in (self.SEEK_STATE_PLAY, self.SEEK_STATE_PAUSE): # if we are seeking
                        seekable = self.getSeek()
                        if seekable is not None:
                                seekable.seekTo(-1)
-               if eofstate == 1 and seekstate == self.SEEK_STATE_PLAY:
+               if seekstate == self.SEEK_STATE_PLAY: # regular EOF
                        self.doEofInternal(True)
                else:
                        self.doEofInternal(False)
@@ -1284,7 +1301,7 @@ class InfoBarExtensions:
                list.extend([(x[0](), x) for x in extensionsList])
 
                keys += [""] * len(extensionsList)
-               self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list, keys = keys)
+               self.session.openWithCallback(self.extensionCallback, ChoiceBox, title=_("Please choose an extension..."), list = list, keys = keys, skin_name = "ExtensionsList")
 
        def extensionCallback(self, answer):
                if answer is not None:
@@ -1302,7 +1319,9 @@ class InfoBarPlugins:
                return name
 
        def getPluginList(self):
-               return [((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU)]
+               list = [((boundFunction(self.getPluginName, p.name), boundFunction(self.runPlugin, p), lambda: True), None, p.name) for p in plugins.getPlugins(where = PluginDescriptor.WHERE_EXTENSIONSMENU)]
+               list.sort(key = lambda e: e[2]) # sort by name
+               return list
 
        def runPlugin(self, plugin):
                if isinstance(self, InfoBarChannelSelection):
@@ -1489,7 +1508,7 @@ class InfoBarInstantRecord:
 
        def isInstantRecordRunning(self):
                print "self.recording:", self.recording
-               if len(self.recording) > 0:
+               if self.recording:
                        for x in self.recording:
                                if x.isRunning():
                                        return True
@@ -1532,7 +1551,7 @@ class InfoBarInstantRecord:
                print "after:\n", self.recording
 
        def setEndtime(self, entry):
-               if entry is not None:
+               if entry is not None and entry >= 0:
                        self.selectedEntry = entry
                        self.endtime=ConfigClock(default = self.recording[self.selectedEntry].end)
                        dlg = self.session.openWithCallback(self.TimeDateInputClosed, TimeDateInput, self.endtime)
@@ -1549,7 +1568,7 @@ class InfoBarInstantRecord:
                                self.session.nav.RecordTimer.timeChanged(self.recording[self.selectedEntry])
 
        def changeDuration(self, entry):
-               if entry is not None:
+               if entry is not None and entry >= 0:
                        self.selectedEntry = entry
                        self.session.openWithCallback(self.inputCallback, InputBox, title=_("How many minutes do you want to record?"), text="5", maxSize=False, type=Input.NUMBER)
 
@@ -1640,16 +1659,16 @@ class InfoBarAudioSelection:
                                        break
 
                        if SystemInfo["CanDownmixAC3"]:
-                               tlist = [(_("AC3 downmix") + " - " +[_("Off"), _("On")][config.av.downmix_ac3.value and 1 or 0], "CALLFUNC", self.changeAC3Downmix),
-                                       ([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"),
+                               tlist = [(_("AC3 downmix") + " - " +(_("Off"), _("On"))[config.av.downmix_ac3.value and 1 or 0], "CALLFUNC", self.changeAC3Downmix),
+                                       ((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode"),
                                        ("--", "")] + tlist
                                keys = [ "red", "green", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n
                                selection += 3
                        else:
-                               tlist = [([_("Left"), _("Stereo"), _("Right")][self.audioChannel.getCurrentChannel()], "mode"), ("--", "")] + tlist
+                               tlist = [((_("Left"), _("Stereo"), _("Right"))[self.audioChannel.getCurrentChannel()], "mode"), ("--", "")] + tlist
                                keys = [ "red", "", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"] + [""]*n
                                selection += 2
-                       self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection, keys = keys)
+                       self.session.openWithCallback(self.audioSelected, ChoiceBox, title=_("Select audio track"), list = tlist, selection = selection, keys = keys, skin_name = "AudioTrackSelection")
                else:
                        del self.audioTracks
 
@@ -1658,7 +1677,7 @@ class InfoBarAudioSelection:
                list = choicelist.list
                t = list[0][1]
                list[0][1]=(t[0], t[1], t[2], t[3], t[4], t[5], t[6],
-                       _("AC3 downmix") + " - " +[_("On"), _("Off")][config.av.downmix_ac3.value and 1 or 0])
+                       _("AC3 downmix") + " - " + (_("On"), _("Off"))[config.av.downmix_ac3.value and 1 or 0])
                choicelist.setList(list)
                if config.av.downmix_ac3.value:
                        config.av.downmix_ac3.value = False
@@ -1673,7 +1692,7 @@ class InfoBarAudioSelection:
                                        keys = ["red", "green", "yellow"]
                                        selection = self.audioChannel.getCurrentChannel()
                                        tlist = ((_("left"), 0), (_("stereo"), 1), (_("right"), 2))
-                                       self.session.openWithCallback(self.modeSelected, ChoiceBox, title=_("Select audio mode"), list = tlist, selection = selection, keys = keys)
+                                       self.session.openWithCallback(self.modeSelected, ChoiceBox, title=_("Select audio mode"), list = tlist, selection = selection, keys = keys, skin_name ="AudioModeSelection")
                        else:
                                del self.audioChannel
                                if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > audio[1]:
@@ -1774,7 +1793,7 @@ class InfoBarSubserviceSelection:
                                keys = ["red", "",  "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n
                                selection += 2
 
-                       self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection, keys = keys)
+                       self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = selection, keys = keys, skin_name = "SubserviceSelection")
 
        def subserviceSelected(self, service):
                del self.bouquets
@@ -2089,9 +2108,6 @@ class InfoBarSummary(Screen):
 #                      <convert type="ServiceName">Reference</convert>
 #              </widget>
 
-       def __init__(self, session, parent):
-               Screen.__init__(self, session, parent = parent)
-
 class InfoBarSummarySupport:
        def __init__(self):
                pass
@@ -2117,9 +2133,6 @@ class InfoBarMoviePlayerSummary(Screen):
                </widget>
        </screen>"""
 
-       def __init__(self, session, parent):
-               Screen.__init__(self, session)
-
 class InfoBarMoviePlayerSummarySupport:
        def __init__(self):
                pass
@@ -2220,7 +2233,7 @@ class InfoBarServiceErrorPopupSupport:
                else:
                        self.last_error = error
 
-               errors = {
+               error = {
                        eDVBServicePMTHandler.eventNoResources: _("No free tuner!"),
                        eDVBServicePMTHandler.eventTuneFailed: _("Tune failed!"),
                        eDVBServicePMTHandler.eventNoPAT: _("No data on transponder!\n(Timeout reading PAT)"),
@@ -2231,9 +2244,7 @@ class InfoBarServiceErrorPopupSupport:
                        eDVBServicePMTHandler.eventSOF: None,
                        eDVBServicePMTHandler.eventEOF: None,
                        eDVBServicePMTHandler.eventMisconfiguration: _("Service unavailable!\nCheck tuner configuration!"),
-               }
-
-               error = errors.get(error) #this returns None when the key not exist in the dict
+               }.get(error) #this returns None when the key not exist in the dict
 
                if error is not None:
                        Notifications.AddPopup(text = error, type = MessageBox.TYPE_ERROR, timeout = 5, id = "ZapError")
index 94ede08cff9cb0288553dbf7b840f80dbf746025..082daa5562ebf463dc54c571c03ae540549b2937 100644 (file)
@@ -76,21 +76,22 @@ class LanguageSelection(Screen):
                print "ok"
 
        def updateList(self):
-               first_time = len(self.list) == 0
+               first_time = not self.list
 
-               self.list = []
-               if len(language.getLanguageList()) == 0: # no language available => display only english
-                       self.list.append(LanguageEntryComponent("en", _cached("en_EN"), "en_EN"))
+               languageList = language.getLanguageList()
+               if not languageList: # no language available => display only english
+                       list = [ LanguageEntryComponent("en", _cached("en_EN"), "en_EN") ]
                else:
-                       for x in language.getLanguageList():
-                               self.list.append(LanguageEntryComponent(file = x[1][2].lower(), name = _cached("%s_%s" % x[1][1:3]), index = x[0]))
-               #self.list.sort(key=lambda x: x[1][7])
+                       list = [ LanguageEntryComponent(file = x[1][2].lower(), name = _cached("%s_%s" % x[1][1:3]), index = x[0]) for x in languageList]
+               self.list = list
+
+               #list.sort(key=lambda x: x[1][7])
 
                print "updateList"
                if first_time:
-                       self["languages"].list = self.list
+                       self["languages"].list = list
                else:
-                       self["languages"].updateList(self.list)
+                       self["languages"].updateList(list)
                print "done"
 
        def changed(self):
index fa47b1f2fe82bf1f999a5b0f9c22e68700852e6a..61d7105dfbbbc787e86e319fb41ca1827f29b473 100644 (file)
@@ -163,11 +163,11 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen):
                })
 
                # Run some functions when shown
-               self.onShown.extend([
+               self.onShown.extend((
                        boundFunction(self.setTitle, windowTitle),
                        self.updateTarget,
                        self.showHideRename,
-               ])
+               ))
 
                self.onLayoutFinish.append(self.switchToFileListOnStart)
  
@@ -241,7 +241,7 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen):
                        )
 
        def createDirCallback(self, res):
-               if res is not None and len(res):
+               if res:
                        path = os.path.join(self["filelist"].current_directory, res)
                        if not pathExists(path):
                                if not createDir(path):
@@ -454,7 +454,7 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen):
 
        def selectByStart(self):
                # Don't do anything on initial call
-               if not len(self.quickselect):
+               if not self.quickselect:
                        return
 
                # Don't select if no dir
@@ -503,16 +503,12 @@ class LocationBox(Screen, NumericalTextInput, HelpableScreen):
                return str(type(self)) + "(" + self.text + ")"
 
 class MovieLocationBox(LocationBox):
-       skinName = "LocationBox"
-
        def __init__(self, session, text, dir, minFree = None):
                inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var"]
                LocationBox.__init__(self, session, text = text, currDir = dir, bookmarks = config.movielist.videodirs, autoAdd = True, editDir = True, inhibitDirs = inhibitDirs, minFree = minFree)
+               self.skinName = "LocationBox"
 
 class TimeshiftLocationBox(LocationBox):
-
-       skinName = "LocationBox" # XXX: though we could use a custom skin or inherit the hardcoded one we stick with the original :-)
-
        def __init__(self, session):
                inhibitDirs = ["/bin", "/boot", "/dev", "/etc", "/lib", "/proc", "/sbin", "/sys", "/usr", "/var"]
                LocationBox.__init__(
@@ -524,8 +520,9 @@ class TimeshiftLocationBox(LocationBox):
                                autoAdd = True,
                                editDir = True,
                                inhibitDirs = inhibitDirs,
-                               minFree = 1024 # XXX: the same requirement is hardcoded in servicedvb.cpp
+                               minFree = 1024 # the same requirement is hardcoded in servicedvb.cpp
                )
+               self.skinName = "LocationBox"
 
        def cancel(self):
                config.usage.timeshift_path.cancel()
index 93f23dfb620e91b1484e7e6bac9c32a47625fb5c..5f2032f16d2f0fe3608fcf0f82299fb9e83467d5 100644 (file)
@@ -61,9 +61,6 @@ class MenuSummary(Screen):
                </widget>
        </screen>"""
 
-       def __init__(self, session, parent):
-               Screen.__init__(self, session, parent)
-
 class Menu(Screen):
 
        ALLOW_SUSPEND = True
@@ -118,7 +115,7 @@ class Menu(Screen):
                self.menuClosed(*res)
 
        def menuClosed(self, *res):
-               if len(res) and res[0]:
+               if res and res[0]:
                        self.close(True)
 
        def addItem(self, destList, node):
index 8a5989c7234a72f4ef0207618fe27fe5796a6da7..1048568066225650a781dc6c8d52c2b805dab98b 100644 (file)
@@ -43,7 +43,7 @@ class MessageBox(Screen):
                        else:
                                self.list = [ (_("no"), 1), (_("yes"), 0) ]
                
-               if len(self.list):
+               if self.list:
                        self["selectedChoice"].setText(self.list[0][0])
                self["list"] = MenuList(self.list)
 
@@ -134,7 +134,7 @@ class MessageBox(Screen):
                if self.close_on_any_key:
                        self.close(True)
                self["list"].instance.moveSelection(direction)
-               if len(self.list):
+               if self.list:
                        self["selectedChoice"].setText(self["list"].getCurrent()[0])
                self.stopTimer()
 
index 5951653ffc38d5bd249e38146d80a79cd6e49d3c..174a4f072050e6d5961d31ea785a856d9f7aa11d 100644 (file)
@@ -65,20 +65,20 @@ class MovieContextMenu(Screen):
                        })
 
                menu = [(_("delete..."), self.delete)]
-               
-               for p in plugins.getPlugins(PluginDescriptor.WHERE_MOVIELIST):
-                       menu.append((p.description, boundFunction(self.execPlugin, p)))
-               
+               menu.extend([(p.description, boundFunction(self.execPlugin, p)) for p in plugins.getPlugins(PluginDescriptor.WHERE_MOVIELIST)])
+
                if config.movielist.moviesort.value == MovieList.SORT_ALPHANUMERIC:
                        menu.append((_("sort by date"), boundFunction(self.sortBy, MovieList.SORT_RECORDED)))
                else:
                        menu.append((_("alphabetic sort"), boundFunction(self.sortBy, MovieList.SORT_ALPHANUMERIC)))
                
-               menu.append((_("list style default"), boundFunction(self.listType, MovieList.LISTTYPE_ORIGINAL)))
-               menu.append((_("list style compact with description"), boundFunction(self.listType, MovieList.LISTTYPE_COMPACT_DESCRIPTION)))
-               menu.append((_("list style compact"), boundFunction(self.listType, MovieList.LISTTYPE_COMPACT)))
-               menu.append((_("list style single line"), boundFunction(self.listType, MovieList.LISTTYPE_MINIMAL)))
-               
+               menu.extend((
+                       (_("list style default"), boundFunction(self.listType, MovieList.LISTTYPE_ORIGINAL)),
+                       (_("list style compact with description"), boundFunction(self.listType, MovieList.LISTTYPE_COMPACT_DESCRIPTION)),
+                       (_("list style compact"), boundFunction(self.listType, MovieList.LISTTYPE_COMPACT)),
+                       (_("list style single line"), boundFunction(self.listType, MovieList.LISTTYPE_MINIMAL))
+               ))
+
                if config.movielist.description.value == MovieList.SHOW_DESCRIPTION:
                        menu.append((_("hide extended description"), boundFunction(self.showDescription, MovieList.HIDE_DESCRIPTION)))
                else:
index f64be90176cd25845d55573e66c436c2a450cb71..f80267ad43b97fb71072c640e796d232e3fc0f2c 100644 (file)
@@ -1,6 +1,5 @@
 from Screen import Screen
 
 class Mute(Screen):
-       def __init__(self, session):
-               Screen.__init__(self, session)
+       pass
 
index ea2d17e6dfca0acef5276d50b59d64268a5cbb60..50f8c41b182db5616d97d810ec8bd609fe0bc169 100755 (executable)
@@ -28,8 +28,10 @@ class InterfaceList(MenuList):
                self.l.setItemHeight(30)
 
 def InterfaceEntryComponent(index,name,default,active ):
-       res = [ (index) ]
-       res.append(MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name))
+       res = [
+               (index),
+               MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name)
+       ]
        num_configured_if = len(iNetwork.getConfiguredAdapters())
        if num_configured_if >= 2:
                if default is True:
@@ -62,7 +64,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
                
                self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
                
-               if len(self.adapters) == 0:
+               if not self.adapters:
                        self.onFirstExecBegin.append(self.NetworkFallback)
                        
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
@@ -232,17 +234,16 @@ class NameserverSetup(Screen, ConfigListScreen, HelpableScreen):
 
        def createConfig(self):
                self.nameservers = iNetwork.getNameserverList()
-               self.nameserverEntries = []
-               
-               for nameserver in self.nameservers:
-                       self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver)))
+               self.nameserverEntries = [ NoSave(ConfigIP(default=nameserver)) for nameserver in self.nameservers]
 
        def createSetup(self):
                self.list = []
-               
-               for i in range(len(self.nameserverEntries)):
-                       self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i]))
-               
+
+               i = 1
+               for x in self.nameserverEntries:
+                       self.list.append(getConfigListEntry(_("Nameserver %d") % (i), x))
+                       i += 1
+
                self["config"].list = self.list
                self["config"].l.setList(self.list)
 
index 39c644b986fcdd9fba621639e544ef85a06863e5..e097958717226ce7161fb97f1f27849012fb050d 100644 (file)
@@ -4,7 +4,7 @@ from Components.Label import Label
 class NumericalTextInputHelpDialog(Screen):
        def __init__(self, session, textinput):
                Screen.__init__(self, session)
-               for x in range(1, 10):
+               for x in (1, 2, 3, 4, 5, 6, 7, 8, 9):
                        self["key%d" % x] = Label(text=textinput.mapping[x].encode("utf-8"))
                self.last_marked = 0
 
index 8b90c420217321e9dfff63b87029e18497de0410..891379ca8a8578eb054ee9daab7e7b5550eba4b2 100644 (file)
@@ -8,5 +8,5 @@ class PVRState(Screen):
                self["state"] = Label(text="")
 
 class TimeshiftState(PVRState):
-       def __init__(self, session):
-               PVRState.__init__(self, session)
+       pass
+
index 6ae12cae88bce4a7c9206f49ac5d611d8c7aec7d..4c63dd5cfde8e6aa1741f058c8193c3092740433 100644 (file)
@@ -215,9 +215,7 @@ class ParentalControlEditor(Screen):
                if result is not None:
                        print "result:", result
                        self.currentLetter = result[1]
-                       self.list = []
-                       for x in self.servicesList[result[1]]:
-                               self.list.append(ParentalControlEntryComponent(x[0], x[1], parentalControl.getProtectionLevel(x[0]) != -1))
+                       self.list = [ParentalControlEntryComponent(x[0], x[1], parentalControl.getProtectionLevel(x[0]) != -1) for x in self.servicesList[result[1]]]
                        self.servicelist.setList(self.list)
                else:
                        parentalControl.save()
index 0f6ee746b773bbd35a108c827df422f838de05a5..cd17e2e046f6260d297a24730942da33aebc7730 100644 (file)
@@ -51,11 +51,9 @@ class PluginBrowser(Screen):
                plugin(session=self.session)
                
        def updateList(self):
-               self.list = [ ]
                self.pluginlist = plugins.getPlugins(PluginDescriptor.WHERE_PLUGINMENU)
-               for plugin in self.pluginlist:
-                       self.list.append(PluginEntryComponent(plugin))
-               
+               self.list = [PluginEntryComponent(plugin) for plugin in self.pluginlist]
+
                self["list"].l.setList(self.list)
 
        def delete(self):
@@ -187,7 +185,7 @@ class PluginDownloadBrowser(Screen):
                                                self.pluginlist.append(plugin)
        
        def updateList(self):
-               self.list = []
+               list = []
                expandableIcon = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/expandable-plugins.png"))
                expandedIcon = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/expanded-plugins.png"))
                verticallineIcon = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/verticalline-plugins.png"))
@@ -204,10 +202,10 @@ class PluginDownloadBrowser(Screen):
                        
                for x in self.plugins.keys():
                        if x in self.expanded:
-                               self.list.append(PluginCategoryComponent(x, expandedIcon))
-                               for plugin in self.plugins[x]:
-                                       self.list.append(PluginDownloadComponent(plugin[0], plugin[1]))
+                               list.append(PluginCategoryComponent(x, expandedIcon))
+                               list.extend([PluginDownloadComponent(plugin[0], plugin[1]) for plugin in self.plugins[x]])
                        else:
-                               self.list.append(PluginCategoryComponent(x, expandableIcon))
-               self["list"].l.setList(self.list)
+                               list.append(PluginCategoryComponent(x, expandableIcon))
+               self.list = list
+               self["list"].l.setList(list)
 
index 3a7c78b335f2958b90d77d99fd50650c8ed41c7c..27ba1abde55babdf516631698fcbd073e4c16ccd 100644 (file)
@@ -81,4 +81,3 @@ class Rc:
                for selectPic in self.selectpics:
                        for pic in selectPic[1]:
                                self[pic].hide()
-       
\ No newline at end of file
index da6fcc123ea63726cdff2368d7a7706e1098aa5a..8b5089a312b4e10bb2878488a60ff46d600fd038 100644 (file)
@@ -21,7 +21,7 @@ class NimSetup(Screen, ConfigListScreen):
                else:
                        list.append(getConfigListEntry(_("Port A"), nim.diseqcA))
 
-               if mode in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+               if mode in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                        list.append(getConfigListEntry(_("Port B"), nim.diseqcB))
                        if mode == "diseqc_a_b_c_d":
                                list.append(getConfigListEntry(_("Port C"), nim.diseqcC))
@@ -99,7 +99,7 @@ class NimSetup(Screen, ConfigListScreen):
                        if self.nimConfig.configMode.value == "simple":                 #simple setup
                                self.diseqcModeEntry = getConfigListEntry(_("Mode"), self.nimConfig.diseqcMode)
                                self.list.append(self.diseqcModeEntry)
-                               if self.nimConfig.diseqcMode.value in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+                               if self.nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                                        self.createSimpleSetup(self.list, self.nimConfig.diseqcMode.value)
                                if self.nimConfig.diseqcMode.value == "positioner":
                                        self.createPositionerSetup(self.list)
@@ -204,7 +204,7 @@ class NimSetup(Screen, ConfigListScreen):
                if self.have_advanced and self.nim.config_mode == "advanced":
                        self.fillAdvancedList()
                for x in self.list:
-                       if x in [self.turnFastEpochBegin, self.turnFastEpochEnd]:
+                       if x in (self.turnFastEpochBegin, self.turnFastEpochEnd):
                                # workaround for storing only hour*3600+min*60 value in configfile
                                # not really needed.. just for cosmetics..
                                tm = localtime(x[1].value)
@@ -453,7 +453,7 @@ class NimSelection(Screen):
                        text = nimConfig.configMode.value
                        if self.showNim(x):
                                if x.isCompatible("DVB-S"):
-                                       if nimConfig.configMode.value in ["loopthrough", "equal", "satposdepends"]:
+                                       if nimConfig.configMode.value in ("loopthrough", "equal", "satposdepends"):
                                                text = { "loopthrough": _("loopthrough to"),
                                                                 "equal": _("equal to"),
                                                                 "satposdepends": _("second cable of motorized LNB") } [nimConfig.configMode.value]
@@ -461,11 +461,11 @@ class NimSelection(Screen):
                                        elif nimConfig.configMode.value == "nothing":
                                                text = _("nothing connected")
                                        elif nimConfig.configMode.value == "simple":
-                                               if nimConfig.diseqcMode.value in ["single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+                                               if nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                                                        text = _("Sats") + ": " 
                                                        if nimConfig.diseqcA.orbital_position != 3601:
                                                                text += nimmanager.getSatName(int(nimConfig.diseqcA.value))
-                                                       if nimConfig.diseqcMode.value in ["toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"]:
+                                                       if nimConfig.diseqcMode.value in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
                                                                if nimConfig.diseqcB.orbital_position != 3601:
                                                                        text += "," + nimmanager.getSatName(int(nimConfig.diseqcB.value))
                                                        if nimConfig.diseqcMode.value == "diseqc_a_b_c_d":
@@ -491,4 +491,4 @@ class NimSelection(Screen):
                                        
                                self.list.append((slotid, x.friendly_full_description, text, x))
                self["nimlist"].setList(self.list)
-               self["nimlist"].updateList(self.list)
\ No newline at end of file
+               self["nimlist"].updateList(self.list)
index df8af4b4173881e42bbb34ebeb00b993d0c38478..fa2f4474fc5d827406ef4eaa8c0dfc4ca716d811 100644 (file)
@@ -19,11 +19,6 @@ def to_unsigned(x):
        return x & 0xFFFFFFFF
 
 def ServiceInfoListEntry(a, b, valueType=TYPE_TEXT, param=4):
-       res = [ ]
-
-       #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""))
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 25, 0, RT_HALIGN_LEFT, a))
        print "b:", b
        if not isinstance(b, str):
                if valueType == TYPE_VALUE_HEX:
@@ -34,10 +29,13 @@ def ServiceInfoListEntry(a, b, valueType=TYPE_TEXT, param=4):
                        b = ("0x%0" + str(param) + "x (%dd)") % (to_unsigned(b), b)
                else:
                        b = str(b)
-       
-       res.append((eListboxPythonMultiContent.TYPE_TEXT, 220, 0, 350, 25, 0, RT_HALIGN_LEFT, b))
 
-       return res
+       return [
+               #PyObject *type, *px, *py, *pwidth, *pheight, *pfnt, *pstring, *pflags;
+               (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 30, 0, RT_HALIGN_LEFT, ""),
+               (eListboxPythonMultiContent.TYPE_TEXT, 0, 0, 200, 25, 0, RT_HALIGN_LEFT, a),
+               (eListboxPythonMultiContent.TYPE_TEXT, 220, 0, 350, 25, 0, RT_HALIGN_LEFT, b)
+       ]
 
 class ServiceInfoList(HTMLComponent, GUIComponent):
        def __init__(self, source):
@@ -151,9 +149,7 @@ class ServiceInfo(Screen):
                                                 "transmission_mode": _("Transmission Mode"),
                                                 "guard_interval"       : _("Guard Interval"),
                                                 "hierarchy_information": _("Hierarchy Information") }
-                               Labels = [ ]
-                               for i in tp_info.keys():
-                                       Labels.append( (conv[i], tp_info[i], TYPE_VALUE_DEC) )
+                               Labels = [(conv[i], tp_info[i], TYPE_VALUE_DEC) for i in tp_info.keys()]
                                self.fillList(Labels)
 
        def pids(self):
@@ -186,7 +182,7 @@ class ServiceInfo(Screen):
                if frontendDataOrg and len(frontendDataOrg):
                        frontendData = ConvertToHumanReadable(frontendDataOrg)
                        if frontendDataOrg["tuner_type"] == "DVB-S":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                        ("Type", frontendData["system"], TYPE_TEXT),
                                                        ("Modulation", frontendData["modulation"], TYPE_TEXT),
                                                        ("Orbital position", frontendData["orbital_position"], TYPE_VALUE_DEC),
@@ -198,7 +194,7 @@ class ServiceInfo(Screen):
                                                        ("Pilot", frontendData.get("pilot", None), TYPE_TEXT),
                                                        ("Rolloff", frontendData.get("rolloff", None), TYPE_TEXT))
                        elif frontendDataOrg["tuner_type"] == "DVB-C":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
@@ -206,7 +202,7 @@ class ServiceInfo(Screen):
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
                                                ("FEC inner", frontendData["fec_inner"], TYPE_TEXT))
                        elif frontendDataOrg["tuner_type"] == "DVB-T":
-                               return (("NIM", ['A', 'B', 'C', 'D'][frontendData["tuner_number"]], TYPE_TEXT),
+                               return (("NIM", ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
                                                ("Type", frontendData["tuner_type"], TYPE_TEXT),
                                                ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
                                                ("Inversion", frontendData["inversion"], TYPE_TEXT),
index 1d035b8a7f15a8d0209e84fdfeb14a420ae6c7ee..7226562fd5a5431865ac58d874513526b0beb756 100644 (file)
@@ -21,10 +21,10 @@ setupfile.close()
 
 class SetupError(Exception):
     def __init__(self, message):
-        self.message = message
+        self.msg = message
 
     def __str__(self):
-        return self.message
+        return self.msg
 
 class SetupSummary(Screen):
        skin = """
@@ -35,11 +35,10 @@ class SetupSummary(Screen):
        </screen>"""
 
        def __init__(self, session, parent):
-               Screen.__init__(self, session)
+               Screen.__init__(self, session, parent = parent)
                self["SetupTitle"] = Label(_(parent.setup_title))
                self["SetupEntry"] = Label("")
                self["SetupValue"] = Label("")
-               self.parent = parent
                self.onShow.append(self.addWatcher)
                self.onHide.append(self.removeWatcher)
                
index d09f28afb95a19ae78c2f22f61196e5e36eaadef..afea94b992535efb222a7a125c25ed6e9fddacd9 100644 (file)
@@ -87,9 +87,6 @@ class StandbySummary(Screen):
                </widget>
        </screen>"""
 
-       def __init__(self, session, parent):
-               Screen.__init__(self, session)
-
 from enigma import quitMainloop, iRecordableService
 from Screens.MessageBox import MessageBox
 from time import time
@@ -100,7 +97,7 @@ inTryQuitMainloop = False
 class TryQuitMainloop(MessageBox):
        def __init__(self, session, retvalue=1, timeout=-1, default_yes = True):
                self.retval=retvalue
-               recordings = len(session.nav.getRecordings())
+               recordings = session.nav.getRecordings()
                jobs = len(job_manager.getPendingJobs())
                self.connected = False
                reason = ""
@@ -137,7 +134,7 @@ class TryQuitMainloop(MessageBox):
        def getRecordEvent(self, recservice, event):
                if event == iRecordableService.evEnd:
                        recordings = self.session.nav.getRecordings()
-                       if not len(recordings): # no more recordings exist
+                       if not recordings: # no more recordings exist
                                rec_time = self.session.nav.RecordTimer.getNextRecordingTime()
                                if rec_time > 0 and (rec_time - time()) < 360:
                                        self.initTimeout(360) # wait for next starting timer
index 24af517dbc4fd072ea9d02b0ef7f6c23e9bed2f5..3bcc3c4641d571f6370141f84db2cdc623b3de16 100644 (file)
@@ -9,10 +9,17 @@ from Components.ServiceEventTracker import InfoBarBase
 
 from enigma import eTimer
 
-class SubservicesQuickzap(InfoBarBase, InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, InfoBarAudioSelection, Screen):
+class SubservicesQuickzap(InfoBarBase, InfoBarShowHide, InfoBarMenu, \
+               InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, \
+               InfoBarTimeshiftState, InfoBarExtensions, InfoBarSubtitleSupport, \
+               InfoBarAudioSelection, Screen):
+
        def __init__(self, session, subservices):
                Screen.__init__(self, session)
-               for x in [InfoBarBase, InfoBarShowHide, InfoBarMenu, InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, InfoBarTimeshiftState, InfoBarSubtitleSupport, InfoBarExtensions, InfoBarAudioSelection]:
+               for x in InfoBarBase, InfoBarShowHide, InfoBarMenu, \
+                               InfoBarInstantRecord, InfoBarSeek, InfoBarTimeshift, \
+                               InfoBarTimeshiftState, InfoBarSubtitleSupport, \
+                               InfoBarExtensions, InfoBarAudioSelection:
                        x.__init__(self)
 
                self.restoreService = self.session.nav.getCurrentlyPlayingServiceReference()
@@ -97,12 +104,15 @@ class SubservicesQuickzap(InfoBarBase, InfoBarShowHide, InfoBarMenu, InfoBarInst
        def showSelection(self):
                self.updateSubservices()
                tlist = []
-               if self.n is not None:
-                       for x in range(self.n):
-                               i = self.subservices.getSubservice(x)
-                               tlist.append((i.getName(), x))
+               n = self.n or 0
+               if n:
+                       idx = 0
+                       while idx < n:
+                               i = self.subservices.getSubservice(idx)
+                               tlist.append((i.getName(), idx))
+                               idx += 1
 
-               keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * self.n
+               keys = [ "", "1", "2", "3", "4", "5", "6", "7", "8", "9" ] + [""] * n
                self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice..."), list = tlist, selection = self.currentlyPlayingSubservice, keys = keys)
        
        def subserviceSelected(self, service):
index 80d3bd262dbc24f16ad0f01b0e350f8fac0a2e94..13ece59a57f9d9c564e5b12ebfe53551c0c5705a 100644 (file)
@@ -1,7 +1,6 @@
 from Screens.Screen import Screen
 
 class SubtitleDisplay(Screen):
-       def __init__(self, session):
-               Screen.__init__(self, session)
-               
+       pass
+
        # not really much to do...
index e63786192c3f5a57cb5e137cef42a7e37ead6d3d..54bc7a5bea2aef63fa227c77914ddb05eac270a4 100644 (file)
@@ -30,10 +30,11 @@ class Subtitles(Screen, ConfigListScreen):
                self.__selected_subtitle = None
 
        def fillList(self):
-               del self.list[:]
-               print "self.list", self.list
+               list = self.list
+               del list[:]
+               print "self.list", list
                if self.subtitlesEnabled():
-                       self.list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
+                       list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
                        sel = self.infobar.selected_subtitle
                else:
                        sel = None
@@ -44,29 +45,29 @@ class Subtitles(Screen, ConfigListScreen):
                                text = _("Enable")
                        if x[0] == 0:
                                if LanguageCodes.has_key(x[4]):
-                                       self.list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
                                else:
-                                       self.list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
+                                       list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
                        elif x[0] == 1:
                                if x[4] == 'und': #undefined
-                                       self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
+                                       list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
                                else:
                                        if LanguageCodes.has_key(x[4]):
-                                               self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
                                        else:
-                                               self.list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
                        elif x[0] == 2:
-                               types = [" UTF-8 text "," SSA / AAS "," .SRT file "]
+                               types = (" UTF-8 text "," SSA / AAS "," .SRT file ")
                                if x[4] == 'und': #undefined
-                                       self.list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d" % x[1], ConfigNothing(), x))
+                                       list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d" % x[1], ConfigNothing(), x))
                                else:
                                        if LanguageCodes.has_key(x[4]):
-                                               self.list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
                                        else:
-                                               self.list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d " % x[1] +x[4], ConfigNothing(), x))
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d " % x[1] +x[4], ConfigNothing(), x))
 #              return _("Disable subtitles")
-               self["config"].list = self.list
-               self["config"].l.setList(self.list)
+               self["config"].list = list
+               self["config"].l.setList(list)
 
        def __updatedInfo(self):
                self.fillList()
@@ -95,7 +96,7 @@ class Subtitles(Screen, ConfigListScreen):
                ConfigListScreen.keyRight(self)
 
        def ok(self):
-               if len(self.list):
+               if self.list:
                        cur = self["config"].getCurrent()
                        self.enableSubtitle(cur[2])
                self.close(1)
index 69604279fee460cc2edb2d30993e82db7b3702b5..1453c05f338de2a28e142bbde4f7d80afd7738fb 100644 (file)
@@ -80,7 +80,7 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                else:
                        self["job_task"].text = ""
                        self["summary_job_task"].text = j.getStatustext()
-               if j.status in [j.FINISHED, j.FAILED]:
+               if j.status in (j.FINISHED, j.FAILED):
                        self.performAfterEvent()
                        self["backgroundable"].boolean = False
                        if j.status == j.FINISHED:
@@ -94,11 +94,11 @@ class JobView(InfoBarNotifications, Screen, ConfigListScreen):
                        self.close(True)
 
        def ok(self):
-               if self.job.status in [self.job.FINISHED, self.job.FAILED]:
+               if self.job.status in (self.job.FINISHED, self.job.FAILED):
                        self.close(False)
 
        def abort(self):
-               if self.job.status in [self.job.FINISHED, self.job.FAILED]:
+               if self.job.status in (self.job.FINISHED, self.job.FAILED):
                        self.close(False)
                if self["cancelable"].boolean == True:
                        self.job.cancel()
index 7f94090946f0ade8d48c125ac0bb9243ab555e40..56ccae901b2088dc39cc2040566de18d68c9bbf1 100644 (file)
@@ -42,9 +42,10 @@ class TimeDateInput(Screen, ConfigListScreen):
                self.timeinput_time = conf_time
 
        def createSetup(self, configlist):
-               self.list = []
-               self.list.append(getConfigListEntry(_("Date"), self.timeinput_date))
-               self.list.append(getConfigListEntry(_("Time"), self.timeinput_time))
+               self.list = [
+                       getConfigListEntry(_("Date"), self.timeinput_date),
+                       getConfigListEntry(_("Time"), self.timeinput_time)
+               ]
                configlist.list = self.list
                configlist.l.setList(self.list)
 
index 6499ef507202f1f1a8d4fb84a05f9300f0ead89a..caaf8c95eb7279dd54a2aa4c4ff56fafecf76c72 100644 (file)
@@ -171,14 +171,11 @@ class TimerEditList(Screen):
                        self.key_blue_choice = self.EMPTY
 
        def fillTimerList(self):
-               del self.list[:]
-               
-               for timer in self.session.nav.RecordTimer.timer_list:
-                       self.list.append((timer, False))
-               
-               for timer in self.session.nav.RecordTimer.processed_timers:
-                       self.list.append((timer, True))
-               self.list.sort(cmp = lambda x, y: x[0].begin < y[0].begin)
+               list = self.list
+               del list[:]
+               list.extend([(timer, False) for timer in self.session.nav.RecordTimer.timer_list])
+               list.extend([(timer, True) for timer in self.session.nav.RecordTimer.processed_timers])
+               list.sort(cmp = lambda x, y: x[0].begin < y[0].begin)
 
        def showLog(self):
                cur=self["timerlist"].getCurrent()
index 92a16af8f0b27432cfe5683d98412a34503651a3..edd19685755acbefe5f53312b3e9af17f97956a9 100644 (file)
@@ -57,12 +57,12 @@ class TimerEntry(Screen, ConfigListScreen):
                                AFTEREVENT.AUTO: "auto"
                                }[self.timer.afterEvent]
 
-                       weekday_table = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"]
+                       weekday_table = ("mon", "tue", "wed", "thu", "fri", "sat", "sun")
 
                        # calculate default values
                        day = []
                        weekday = 0
-                       for x in range(0,7):
+                       for x in (0, 1, 2, 3, 4, 5, 6):
                                day.append(0)
                        if self.timer.repeated: # repeated
                                type = "repeated"
@@ -74,7 +74,7 @@ class TimerEntry(Screen, ConfigListScreen):
                                        flags = self.timer.repeated
                                        repeated = "user"
                                        count = 0
-                                       for x in range(0, 7):
+                                       for x in (0, 1, 2, 3, 4, 5, 6):
                                                if flags == 1: # weekly
                                                        print "Set to weekday " + str(x)
                                                        weekday = x
@@ -98,7 +98,7 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_name = ConfigText(default = self.timer.name, visible_width = 50, fixed_size = False)
                        self.timerentry_description = ConfigText(default = self.timer.description, visible_width = 50, fixed_size = False)
                        self.timerentry_tags = self.timer.tags[:]
-                       self.timerentry_tagsset = ConfigSelection(choices = [len(self.timerentry_tags) == 0 and "None" or " ".join(self.timerentry_tags)])
+                       self.timerentry_tagsset = ConfigSelection(choices = [not self.timerentry_tags and "None" or " ".join(self.timerentry_tags)])
 
                        self.timerentry_repeated = ConfigSelection(default = repeated, choices = [("daily", _("daily")), ("weekly", _("weekly")), ("weekdays", _("Mon-Fri")), ("user", _("user defined"))])
 
@@ -117,7 +117,7 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_weekday = ConfigSelection(default = weekday_table[weekday], choices = [("mon",_("Monday")), ("tue", _("Tuesday")), ("wed",_("Wednesday")), ("thu", _("Thursday")), ("fri", _("Friday")), ("sat", _("Saturday")), ("sun", _("Sunday"))])
 
                        self.timerentry_day = ConfigSubList()
-                       for x in range(0,7):
+                       for x in (0, 1, 2, 3, 4, 5, 6):
                                self.timerentry_day.append(ConfigYesNo(default = day[x]))
 
                        # FIXME some service-chooser needed here
@@ -197,14 +197,14 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.createSetup("config")
 
        def keyLeft(self):
-               if self["config"].getCurrent() in [self.channelEntry, self.tagsSet]:
+               if self["config"].getCurrent() in (self.channelEntry, self.tagsSet):
                        self.keySelect()
                else:
                        ConfigListScreen.keyLeft(self)
                        self.newConfig()
 
        def keyRight(self):
-               if self["config"].getCurrent() in [self.channelEntry, self.tagsSet]:
+               if self["config"].getCurrent() in (self.channelEntry, self.tagsSet):
                        self.keySelect()
                else:
                        ConfigListScreen.keyRight(self)
@@ -236,7 +236,7 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.keyGo()
 
        def finishedChannelSelection(self, *args):
-               if len(args):
+               if args:
                        self.timerentry_service_ref = ServiceReference(args[0])
                        self.timerentry_service.setCurrentText(self.timerentry_service_ref.getServiceName())
                        self["config"].invalidate(self.channelEntry)
@@ -281,18 +281,18 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timer.begin, self.timer.end = self.getBeginEnd()
                if self.timerentry_type.value == "repeated":
                        if self.timerentry_repeated.value == "daily":
-                               for x in range(0,7):
+                               for x in (0, 1, 2, 3, 4, 5, 6):
                                        self.timer.setRepeated(x)
 
                        if self.timerentry_repeated.value == "weekly":
                                self.timer.setRepeated(self.timerentry_weekday.index)
 
                        if self.timerentry_repeated.value == "weekdays":
-                               for x in range(0,5):
+                               for x in (0, 1, 2, 3, 4):
                                        self.timer.setRepeated(x)
 
                        if self.timerentry_repeated.value == "user":
-                               for x in range(0,7):
+                               for x in (0, 1, 2, 3, 4, 5, 6):
                                        if self.timerentry_day[x].value:
                                                self.timer.setRepeated(x)
 
@@ -310,9 +310,9 @@ class TimerEntry(Screen, ConfigListScreen):
 
                if self.timer.eit is not None:
                        event = eEPGCache.getInstance().lookupEventId(self.timer.service_ref.ref, self.timer.eit)
-                       if event is not None:
+                       if event:
                                n = event.getNumOfLinkageServices()
-                               if n > 0:
+                               if n > 1:
                                        tlist = []
                                        ref = self.session.nav.getCurrentlyPlayingServiceReference()
                                        parent = self.timer.service_ref.ref
@@ -324,7 +324,9 @@ class TimerEntry(Screen, ConfigListScreen):
                                                tlist.append((i.getName(), i))
                                        self.session.openWithCallback(self.subserviceSelected, ChoiceBox, title=_("Please select a subservice to record..."), list = tlist, selection = selection)
                                        return
-
+                               elif n > 0:
+                                       parent = self.timer.service_ref.ref
+                                       self.timer.service_ref = ServiceReference(event.getLinkageService(parent, 0))
                self.saveTimer()
                self.close((True, self.timer))
 
@@ -367,7 +369,7 @@ class TimerEntry(Screen, ConfigListScreen):
        def tagEditFinished(self, ret):
                if ret is not None:
                        self.timerentry_tags = ret
-                       self.timerentry_tagsset.setChoices([len(ret) == 0 and "None" or " ".join(ret)])
+                       self.timerentry_tagsset.setChoices([not ret and "None" or " ".join(ret)])
                        self["config"].invalidate(self.tagsSet)
 
 class TimerLog(Screen):
@@ -410,9 +412,7 @@ class TimerLog(Screen):
                self.updateText()
 
        def fillLogList(self):
-               self.list = [ ]
-               for x in self.log_entries:
-                       self.list.append((str(strftime("%Y-%m-%d %H-%M", localtime(x[0])) + " - " + x[2]), x))
+               self.list = [(str(strftime("%Y-%m-%d %H-%M", localtime(x[0])) + " - " + x[2]), x) for x in self.log_entries]
 
        def clearLog(self):
                self.log_entries = []
@@ -444,7 +444,7 @@ class TimerLog(Screen):
                self.updateText()
 
        def updateText(self):
-               if len(self.list) > 0:
+               if self.list:
                        self["logentry"].setText(str(self["loglist"].getCurrent()[1][2]))
                else:
                        self["logentry"].setText("")
index 7a1d9ecda8e09377e0d3fbabcd887efdd7af6648..a97c7ba3d259abba5881c26925cba60250fbabb3 100644 (file)
@@ -22,4 +22,3 @@ class TimerSelection(Screen):
        
        def selected(self):
                self.close(self["timerlist"].getCurrentIndex())
-       
\ No newline at end of file
index 5dc1a0905e90f57d36ced838cb54e464f02a1c3a..9b676a5ff3eb5c780736c409aeae90cd60dfb750 100755 (executable)
-# -*- coding: iso-8859-1 -*-\r
-from Components.Language import language\r
-from Components.ActionMap import ActionMap\r
-from Components.Label import Label\r
-from Components.Pixmap import Pixmap\r
-from Components.MenuList import MenuList\r
-from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest\r
-from enigma import eListboxPythonMultiContent, gFont, RT_HALIGN_CENTER, RT_VALIGN_CENTER\r
-from Screen import Screen\r
-from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE\r
-from Tools.LoadPixmap import LoadPixmap\r
-\r
-class VirtualKeyBoardList(MenuList):\r
-       def __init__(self, list, enableWrapAround=False):\r
-               MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)\r
-               self.l.setFont(0, gFont("Regular", 22))\r
-               self.l.setItemHeight(45)\r
-\r
-def VirtualKeyBoardEntryComponent(keys, selectedKey,shiftMode=False):\r
-       key_backspace = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_backspace.png"))\r
-       key_bg = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_bg.png"))\r
-       key_clr = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_clr.png"))\r
-       key_esc = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_esc.png"))\r
-       key_ok = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_ok.png"))\r
-       key_sel = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_sel.png"))\r
-       key_shift = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift.png"))\r
-       key_shift_sel = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_shift_sel.png"))\r
-       key_space = LoadPixmap(cached=True, path=resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/vkey_space.png"))\r
-       \r
-       res = [ (keys) ]\r
-       \r
-       x = 0\r
-       count = 0\r
-       if shiftMode:\r
-               shiftkey_png = key_shift_sel\r
-       else:\r
-               shiftkey_png = key_shift\r
-       for key in keys:\r
-               if key == "EXIT":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_esc))\r
-               elif key == "BACKSPACE":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_backspace))\r
-               elif key == "CLEAR":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_clr))\r
-               elif key == "SHIFT":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=shiftkey_png))\r
-               elif key == "SPACE":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_space))\r
-               elif key == "OK":\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_ok))\r
-               #elif key == "<-":\r
-               #       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_left))\r
-               #elif key == "->":\r
-               #       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_right))\r
-               \r
-               else:\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_bg))\r
-                       res.append(MultiContentEntryText(pos=(x, 0), size=(45, 45), font=0, text=key.encode("utf-8"), flags=RT_HALIGN_CENTER | RT_VALIGN_CENTER))\r
-               \r
-               if selectedKey == count:\r
-                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_sel))\r
-               \r
-               x += 45\r
-               count += 1\r
-       \r
-       return res\r
-\r
-\r
-class VirtualKeyBoard(Screen):\r
-\r
-       def __init__(self, session, title="", text=""):\r
-               Screen.__init__(self, session)\r
-               self.keys_list = []\r
-               self.shiftkeys_list = []\r
-               self.lang = language.getLanguage()\r
-               if self.lang == 'de_DE':\r
-                       self.keys_list = [\r
-                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],\r
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ü", u"+"],\r
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],\r
-                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"@", u"ß", u"OK"]]\r
-                       \r
-                       self.shiftkeys_list = [\r
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],\r
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ü", u"*"],\r
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],\r
-                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"?", u"\\", u"OK"]]\r
-                       \r
-               elif self.lang == 'es_ES':\r
-                       #still missing keys (u"ùÙ")\r
-                       self.keys_list = [\r
-                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],\r
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"ú", u"+"],\r
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ó", u"á", u"#"],\r
-                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"@", u"£", u"à", u"é", u"è", u"í", u"ì", u"ñ", u"ò", u"OK"]]\r
-                       \r
-                       self.shiftkeys_list = [\r
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],\r
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"Ú", u"*"],\r
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ó", u"Á", u"'"],\r
-                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"?", u"\\", u"À", u"É", u"È",  u"Í", u"Ì", u"Ñ", u"Ò", u"OK"]]\r
-                               \r
-               elif self.lang in ['sv_SE', 'fi_FI']:\r
-                       self.keys_list = [\r
-                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],\r
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"é", u"+"],\r
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"ö", u"ä", u"#"],\r
-                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"@", u"ß", u"å", u"OK"]]\r
-                               \r
-                       self.shiftkeys_list = [\r
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],\r
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"É", u"*"],\r
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"Ö", u"Ä", u"'"],\r
-                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],\r
-\r
-                               [u"SHIFT", u"SPACE", u"?", u"\\", u"Å", u"OK"]]\r
-               else:\r
-                       self.keys_list = [\r
-                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],\r
-                               [u"q", u"w", u"e", u"r", u"t", u"z", u"u", u"i", u"o", u"p", u"+", u"@"],\r
-                               [u"a", u"s", u"d", u"f", u"g", u"h", u"j", u"k", u"l", u"#", u"\\"],\r
-                               [u"<", u"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"OK"]]\r
-                       \r
-                       self.shiftkeys_list = [\r
-                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],\r
-                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"*"],\r
-                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", u"'", u"?"],\r
-                               [u">", u"Y", u"X", u"C", u"V", u"B", u"N", u"M", u";", u":", u"_", u"CLEAR"],\r
-                               [u"SHIFT", u"SPACE", u"OK"]]\r
-               \r
-               self.shiftMode = False\r
-               self.text = text\r
-               self.selectedKey = 0\r
-               \r
-               self["header"] = Label(title)\r
-               self["text"] = Label(self.text)\r
-               self["list"] = VirtualKeyBoardList([])\r
-               \r
-               self["actions"] = ActionMap(["OkCancelActions", "WizardActions", "ColorActions"],\r
-                       {\r
-                               "ok": self.okClicked,\r
-                               "cancel": self.exit,\r
-                               "left": self.left,\r
-                               "right": self.right,\r
-                               "up": self.up,\r
-                               "down": self.down,\r
-                               "red": self.backClicked,\r
-                               "green": self.ok\r
-                       }, -2)\r
-               \r
-               self.onLayoutFinish.append(self.buildVirtualKeyBoard)\r
-\r
-       def buildVirtualKeyBoard(self, selectedKey=0):\r
-               list = []\r
-               \r
-               if self.shiftMode:\r
-                       self.k_list = self.shiftkeys_list\r
-                       for keys in self.k_list:\r
-                               if selectedKey < 12 and selectedKey > -1:\r
-                                       list.append(VirtualKeyBoardEntryComponent(keys, selectedKey,True))\r
-                               else:\r
-                                       list.append(VirtualKeyBoardEntryComponent(keys, -1,True))\r
-                               selectedKey -= 12\r
-               else:\r
-                       self.k_list = self.keys_list\r
-                       for keys in self.k_list:\r
-                               if selectedKey < 12 and selectedKey > -1:\r
-                                       list.append(VirtualKeyBoardEntryComponent(keys, selectedKey))\r
-                               else:\r
-                                       list.append(VirtualKeyBoardEntryComponent(keys, -1))\r
-                               selectedKey -= 12\r
-               \r
-               self["list"].setList(list)\r
-\r
-       \r
-       def backClicked(self):\r
-               self.text = self["text"].getText()[:-1]\r
-               self["text"].setText(self.text)\r
-                       \r
-       def okClicked(self):\r
-               if self.shiftMode:\r
-                       list = self.shiftkeys_list\r
-               else:\r
-                       list = self.keys_list\r
-               \r
-               selectedKey = self.selectedKey\r
-\r
-               for x in list:\r
-                       if selectedKey < 12:\r
-                               text = x[selectedKey]\r
-                               break\r
-                       else:\r
-                               selectedKey -= 12\r
-\r
-               text = text.encode("utf-8")\r
-\r
-               if text == "EXIT":\r
-                       self.close(None)\r
-               \r
-               elif text == "BACKSPACE":\r
-                       self.text = self["text"].getText()[:-1]\r
-                       self["text"].setText(self.text)\r
-               \r
-               elif text == "CLEAR":\r
-                       self.text = ""\r
-                       self["text"].setText(self.text)\r
-               \r
-               elif text == "SHIFT":\r
-                       if self.shiftMode:\r
-                               self.shiftMode = False\r
-                       else:\r
-                               self.shiftMode = True\r
-                       \r
-                       self.buildVirtualKeyBoard(self.selectedKey)\r
-               \r
-               elif text == "SPACE":\r
-                       self.text += " "\r
-                       self["text"].setText(self.text)\r
-               \r
-               elif text == "OK":\r
-                       self.close(self["text"].getText())\r
-               \r
-               else:\r
-                       self.text = self["text"].getText()\r
-                       self.text += text\r
-                       self["text"].setText(self.text)\r
-\r
-       def ok(self):\r
-               self.close(self["text"].getText())\r
-\r
-       def exit(self):\r
-               self.close(None)\r
-\r
-       def left(self):\r
-               self.selectedKey -= 1\r
-               \r
-               if self.selectedKey == -1:\r
-                       self.selectedKey = 11\r
-               elif self.selectedKey == 11:\r
-                       self.selectedKey = 23\r
-               elif self.selectedKey == 23:\r
-                       self.selectedKey = 35\r
-               elif self.selectedKey == 35:\r
-                       self.selectedKey = 47\r
-               elif self.selectedKey == 47:\r
-                       self.selectedKey = 59\r
-               \r
-               self.showActiveKey()\r
-\r
-       def right(self):\r
-               self.selectedKey += 1\r
-               \r
-               if self.selectedKey == 12:\r
-                       self.selectedKey = 0\r
-               elif self.selectedKey == 24:\r
-                       self.selectedKey = 12\r
-               elif self.selectedKey == 36:\r
-                       self.selectedKey = 24\r
-               elif self.selectedKey == 48:\r
-                       self.selectedKey = 36\r
-               elif self.selectedKey == 60:\r
-                       self.selectedKey = 48\r
-               \r
-               self.showActiveKey()\r
-\r
-       def up(self):\r
-               self.selectedKey -= 12\r
-               \r
-               if self.selectedKey < 0:\r
-                       self.selectedKey += 60\r
-               \r
-               self.showActiveKey()\r
-\r
-       def down(self):\r
-               self.selectedKey += 12\r
-               \r
-               if self.selectedKey > 59:\r
-                       self.selectedKey -= 60\r
-               \r
-               self.showActiveKey()\r
-\r
-       def showActiveKey(self):\r
-               self.buildVirtualKeyBoard(self.selectedKey)\r
+# -*- coding: iso-8859-1 -*-
+from Components.Language import language
+from Components.ActionMap import ActionMap
+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, RT_HALIGN_CENTER, RT_VALIGN_CENTER
+from Screen import Screen
+from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
+from Tools.LoadPixmap import LoadPixmap
+
+class VirtualKeyBoardList(MenuList):
+       def __init__(self, list, enableWrapAround=False):
+               MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
+               self.l.setFont(0, gFont("Regular", 22))
+               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
+       count = 0
+       if shiftMode:
+               shiftkey_png = key_shift_sel
+       else:
+               shiftkey_png = key_shift
+       for key in keys:
+               if key == "EXIT":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_esc))
+               elif key == "BACKSPACE":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_backspace))
+               elif key == "CLEAR":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_clr))
+               elif key == "SHIFT":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=shiftkey_png))
+               elif key == "SPACE":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_space))
+               elif key == "OK":
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_ok))
+               #elif key == "<-":
+               #       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_left))
+               #elif key == "->":
+               #       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_right))
+               
+               else:
+                       res.extend((
+                               MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_bg),
+                               MultiContentEntryText(pos=(x, 0), size=(45, 45), font=0, text=key.encode("utf-8"), flags=RT_HALIGN_CENTER | RT_VALIGN_CENTER)
+                       ))
+               
+               if selectedKey == count:
+                       res.append(MultiContentEntryPixmapAlphaTest(pos=(x, 0), size=(45, 45), png=key_sel))
+               
+               x += 45
+               count += 1
+       
+       return res
+
+
+class VirtualKeyBoard(Screen):
+
+       def __init__(self, session, title="", text=""):
+               Screen.__init__(self, session)
+               self.keys_list = []
+               self.shiftkeys_list = []
+               self.lang = language.getLanguage()
+               if self.lang == 'de_DE':
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [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"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"@", u"ß", u"OK"]]
+                       
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [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"OK"]]
+                       
+               elif self.lang == 'es_ES':
+                       #still missing keys (u"ùÙ")
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [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"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"@", u"£", u"à", u"é", u"è", u"í", u"ì", u"ñ", u"ò", u"OK"]]
+                       
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [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"É", u"È",  u"Í", u"Ì", u"Ñ", u"Ò", u"OK"]]
+                               
+               elif self.lang in ('sv_SE', 'fi_FI'):
+                       self.keys_list = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [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"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"@", u"ß", u"å", u"OK"]]
+                               
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [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 = [
+                               [u"EXIT", u"1", u"2", u"3", u"4", u"5", u"6", u"7", u"8", u"9", u"0", u"BACKSPACE"],
+                               [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"y", u"x", u"c", u"v", u"b", u"n", u"m", u",", ".", u"-", u"CLEAR"],
+                               [u"SHIFT", u"SPACE", u"OK"]]
+                       
+                       self.shiftkeys_list = [
+                               [u"EXIT", u"!", u'"', u"§", u"$", u"%", u"&", u"/", u"(", u")", u"=", u"BACKSPACE"],
+                               [u"Q", u"W", u"E", u"R", u"T", u"Z", u"U", u"I", u"O", u"P", u"*"],
+                               [u"A", u"S", u"D", u"F", u"G", u"H", u"J", u"K", u"L", 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"OK"]]
+               
+               self.shiftMode = False
+               self.text = text
+               self.selectedKey = 0
+               
+               self["header"] = Label(title)
+               self["text"] = Label(self.text)
+               self["list"] = VirtualKeyBoardList([])
+               
+               self["actions"] = ActionMap(["OkCancelActions", "WizardActions", "ColorActions"],
+                       {
+                               "ok": self.okClicked,
+                               "cancel": self.exit,
+                               "left": self.left,
+                               "right": self.right,
+                               "up": self.up,
+                               "down": self.down,
+                               "red": self.backClicked,
+                               "green": self.ok
+                       }, -2)
+               
+               self.onLayoutFinish.append(self.buildVirtualKeyBoard)
+
+       def buildVirtualKeyBoard(self, selectedKey=0):
+               list = []
+               
+               if self.shiftMode:
+                       self.k_list = self.shiftkeys_list
+                       for keys in self.k_list:
+                               if selectedKey < 12 and selectedKey > -1:
+                                       list.append(VirtualKeyBoardEntryComponent(keys, selectedKey,True))
+                               else:
+                                       list.append(VirtualKeyBoardEntryComponent(keys, -1,True))
+                               selectedKey -= 12
+               else:
+                       self.k_list = self.keys_list
+                       for keys in self.k_list:
+                               if selectedKey < 12 and selectedKey > -1:
+                                       list.append(VirtualKeyBoardEntryComponent(keys, selectedKey))
+                               else:
+                                       list.append(VirtualKeyBoardEntryComponent(keys, -1))
+                               selectedKey -= 12
+               
+               self["list"].setList(list)
+
+       
+       def backClicked(self):
+               self.text = self["text"].getText()[:-1]
+               self["text"].setText(self.text)
+                       
+       def okClicked(self):
+               if self.shiftMode:
+                       list = self.shiftkeys_list
+               else:
+                       list = self.keys_list
+               
+               selectedKey = self.selectedKey
+
+               for x in list:
+                       if selectedKey < 12:
+                               text = x[selectedKey]
+                               break
+                       else:
+                               selectedKey -= 12
+
+               text = text.encode("utf-8")
+
+               if text == "EXIT":
+                       self.close(None)
+               
+               elif text == "BACKSPACE":
+                       self.text = self["text"].getText()[:-1]
+                       self["text"].setText(self.text)
+               
+               elif text == "CLEAR":
+                       self.text = ""
+                       self["text"].setText(self.text)
+               
+               elif text == "SHIFT":
+                       if self.shiftMode:
+                               self.shiftMode = False
+                       else:
+                               self.shiftMode = True
+                       
+                       self.buildVirtualKeyBoard(self.selectedKey)
+               
+               elif text == "SPACE":
+                       self.text += " "
+                       self["text"].setText(self.text)
+               
+               elif text == "OK":
+                       self.close(self["text"].getText())
+               
+               else:
+                       self.text = self["text"].getText()
+                       self.text += text
+                       self["text"].setText(self.text)
+
+       def ok(self):
+               self.close(self["text"].getText())
+
+       def exit(self):
+               self.close(None)
+
+       def left(self):
+               self.selectedKey -= 1
+               
+               if self.selectedKey == -1:
+                       self.selectedKey = 11
+               elif self.selectedKey == 11:
+                       self.selectedKey = 23
+               elif self.selectedKey == 23:
+                       self.selectedKey = 35
+               elif self.selectedKey == 35:
+                       self.selectedKey = 47
+               elif self.selectedKey == 47:
+                       self.selectedKey = 59
+               
+               self.showActiveKey()
+
+       def right(self):
+               self.selectedKey += 1
+               
+               if self.selectedKey == 12:
+                       self.selectedKey = 0
+               elif self.selectedKey == 24:
+                       self.selectedKey = 12
+               elif self.selectedKey == 36:
+                       self.selectedKey = 24
+               elif self.selectedKey == 48:
+                       self.selectedKey = 36
+               elif self.selectedKey == 60:
+                       self.selectedKey = 48
+               
+               self.showActiveKey()
+
+       def up(self):
+               self.selectedKey -= 12
+               
+               if self.selectedKey < 0:
+                       self.selectedKey += 60
+               
+               self.showActiveKey()
+
+       def down(self):
+               self.selectedKey += 12
+               
+               if self.selectedKey > 59:
+                       self.selectedKey -= 60
+               
+               self.showActiveKey()
+
+       def showActiveKey(self):
+               self.buildVirtualKeyBoard(self.selectedKey)
index 2326b9156ca5fc4c862b941c16e49a830ab5e375..555110a4f9559e995cf864e244be0f96f62811e1 100755 (executable)
@@ -475,6 +475,11 @@ class Wizard(Screen):
                        self.currStep += 1
                        self.updateValues()
                else:
+                       if self.wizard[self.currStep].has_key("displaytext"):
+                               displaytext = self.wizard[self.currStep]["displaytext"]
+                               print "set LCD text"
+                               for x in self.lcdCallbacks:
+                                       x(displaytext)
                        if len(self.stepHistory) == 0 or self.stepHistory[-1] != self.currStep:
                                self.stepHistory.append(self.currStep)
                        print "wizard step:", self.wizard[self.currStep]
@@ -599,10 +604,7 @@ class WizardManager:
                self.wizards.append((wizard, precondition, priority))
        
        def getWizards(self):
-               list = []
-               for x in self.wizards:
-                       if x[1] == 1: # precondition
-                               list.append((x[2], x[0]))
-               return list
+               # x[1] is precondition
+               return [(x[2], x[0]) for x in self.wizards if x[1] == 1]
 
 wizardManager = WizardManager()
index ec9758d2e318eb13c58693d095d18012121b48bb..91fc80db60bd9ecc0d1733ed21275102b6a2b0a5 100644 (file)
@@ -31,7 +31,3 @@ class WizardLanguage(Wizard):
                self.updateText(firstset = True)
                self.updateValues()
                self.updateLanguageDescription()
-               
-
-               
-               
\ No newline at end of file
index 5461f7b05828adad2d3b12c943bd63eff49fd692..9e81bb476a564e9a72cef9ab8e31eb450da723df 100644 (file)
@@ -23,6 +23,16 @@ def setFPWakeuptime(wutime):
                except IOError:
                        print "setFPWakeupTime failed!"
 
+def setRTCtime(wutime):
+       try:
+               open("/proc/stb/fp/rtc", "w").write(str(wutime))
+       except IOError:
+               try:
+                       fp = open("/dev/dbox/fp0")
+                       ioctl(fp.fileno(), 0x101, pack('L', wutime)) # set wake up
+               except IOError:
+                       print "setRTCtime failed!"
+
 def getFPWakeuptime():
        ret = 0
        try:
index c55764059214c3d33fd0fecb4379d553ebe4fab1..df6a5ea8df7ea30a6e15102fb7c250ab33f2ae16 100644 (file)
@@ -52,7 +52,7 @@ class NumericalTextInput:
                        self.mapping.append (u"pqrs7PQRS") # 7
                        self.mapping.append (u"tuvúù8TUVÚÙ") # 8
                        self.mapping.append (u"wxyz9WXYZ") # 9
-               if self.lang in ['sv_SE', 'fi_FI']:
+               if self.lang in ('sv_SE', 'fi_FI'):
                        self.mapping.append (u".,?'+\"0-()@/:_$!") # 0
                        self.mapping.append (u" 1") # 1
                        self.mapping.append (u"abcåä2ABCÅÄ") # 2
index e78ddc4e1da2928bcd2000b5a7dc33a0528b2f56..e15eebfc979a01a7e79567f302b54fe4462c68ce 100644 (file)
@@ -88,7 +88,7 @@ bool eServiceEvent::loadLanguage(Event *evt, std::string lang, int tsidonid)
                                        lang = cc;  // use first found language
                                if (cc == lang)
                                {
-                                       m_event_name = convertDVBUTF8(sed->getEventName(), table, tsidonid);
+                                       m_event_name = convertDVBUTF8(replace_all(replace_all(sed->getEventName(), "\n", " "), "\t", " "), table, tsidonid);
                                        m_short_description = convertDVBUTF8(sed->getText(), table, tsidonid);
                                        retval=1;
                                }
index 14c849db07d4d6610e1548304f339d142bb06abf..7292e6dfeb76a6be043bc5bf7d74c22027ff3fc7 100644 (file)
@@ -2291,8 +2291,18 @@ void eDVBServicePlay::updateDecoder()
                                }
                        }
                }
-               m_decoder->setAC3Delay(ac3_delay == -1 ? 0 : ac3_delay);
-               m_decoder->setPCMDelay(pcm_delay == -1 ? 0 : pcm_delay);
+
+               std::string config_delay;
+               int config_delay_int = 0;
+               if(ePythonConfigQuery::getConfigValue("config.av.generalAC3delay", config_delay) == 0)
+                       config_delay_int = atoi(config_delay.c_str());
+               m_decoder->setAC3Delay(ac3_delay == -1 ? config_delay_int : ac3_delay + config_delay_int);
+
+               if(ePythonConfigQuery::getConfigValue("config.av.generalPCMdelay", config_delay) == 0)
+                       config_delay_int = atoi(config_delay.c_str());
+               else
+                       config_delay_int = 0;
+               m_decoder->setPCMDelay(pcm_delay == -1 ? config_delay_int : pcm_delay + config_delay_int);
 
                m_decoder->setVideoPID(vpid, vpidtype);
                selectAudioStream();
index bbcb3b5cf061ea165673a79609a38d6ddb769abd..569272b0602fa187f71d3116130490302390533c 100644 (file)
@@ -321,11 +321,11 @@ eServiceMP3::eServiceMP3(const char *filename): m_filename(filename), m_pump(eAp
                switch (sourceinfo.containertype)
                {
                        case ctMPEGTS:
-                               demux_type = "flutsdemux";
+                               demux_type = "mpegtsdemux";
                                break;
                        case ctMPEGPS:
                        case ctVCD:
-                               demux_type = "flupsdemux";
+                               demux_type = "mpegpsdemux";
                                break;
                        case ctMKV:
                                demux_type = "matroskademux";
@@ -838,6 +838,7 @@ int eServiceMP3::getInfo(int w)
        case sGenre:
        case sVideoType:
        case sTimeCreate:
+       case sUser+10:
        case sUser+12:
                return resIsString;
        case sCurrentTitle:
@@ -886,6 +887,9 @@ std::string eServiceMP3::getInfoString(int w)
        case sGenre:
                tag = GST_TAG_GENRE;
                break;
+       case sUser+10:
+               tag = GST_TAG_AUDIO_CODEC;
+               break;
        case sVideoType:
                tag = GST_TAG_VIDEO_CODEC;
                break;
@@ -1025,7 +1029,7 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg)
 
        source = GST_MESSAGE_SRC(msg);
        sourceName = gst_object_get_name(source);
-#if 0
+#if 1
        if (gst_message_get_structure(msg))
        {
                gchar *string = gst_structure_to_string(gst_message_get_structure(msg));
@@ -1050,8 +1054,13 @@ void eServiceMP3::gstBusCall(GstBus *bus, GstMessage *msg)
                        eWarning("Gstreamer error: %s (%i) from %s", err->message, err->code, sourceName );
                        if ( err->domain == GST_STREAM_ERROR )
                        {
-                               if ( err->code == GST_STREAM_ERROR_CODEC_NOT_FOUND && g_strrstr(sourceName, "videosink") )
-                                       m_event((iPlayableService*)this, evUser+11);
+                               if ( err->code == GST_STREAM_ERROR_CODEC_NOT_FOUND )
+                               {
+                                       if ( g_strrstr(sourceName, "videosink") )
+                                               m_event((iPlayableService*)this, evUser+11);
+                                       else if ( g_strrstr(sourceName, "audiosink") )
+                                               m_event((iPlayableService*)this, evUser+10);
+                               }
                                else if ( err->code == GST_STREAM_ERROR_FAILED && g_strrstr(sourceName, "file-source") )
                                {
                                        eWarning("error in tag parsing, linking mp3parse directly to file-sink, bypassing id3demux...");
index c335bf2dd8e5e566a791eb5b45d13c3ce03ed98a..1d9594a9ad77b5489bae307412ae626cb46e227b 100755 (executable)
--- a/mytest.py
+++ b/mytest.py
@@ -50,6 +50,11 @@ eDVBDB.getInstance().reloadBouquets()
 
 config.misc.radiopic = ConfigText(default = resolveFilename(SCOPE_SKIN_IMAGE)+"radio.mvi")
 config.misc.isNextRecordTimerAfterEventActionAuto = ConfigYesNo(default=False)
+config.misc.useTransponderTime = ConfigYesNo(default=True)
+
+def useTransponderTimeChanged(configElement):
+       enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(configElement.value)
+config.misc.useTransponderTime.addNotifier(useTransponderTimeChanged)
 
 profile("Twisted")
 try:
@@ -256,7 +261,7 @@ class Session:
                        self.execEnd(last=False)
 
        def popCurrent(self):
-               if len(self.dialog_stack):
+               if self.dialog_stack:
                        (self.current_dialog, do_show) = self.dialog_stack.pop()
                        self.execBegin(first=False, do_show=do_show)
                else:
@@ -275,7 +280,7 @@ class Session:
                return dlg
 
        def open(self, screen, *arguments, **kwargs):
-               if len(self.dialog_stack) and not self.in_exec:
+               if self.dialog_stack and not self.in_exec:
                        raise RuntimeError("modal open are allowed only from a screen which is modal!")
                        # ...unless it's the very first screen.
 
@@ -371,7 +376,7 @@ class PowerKey:
                        self.standby()
 
        def standby(self):
-               if not Screens.Standby.inStandby and self.session.current_dialog and self.session.current_dialog.ALLOW_SUSPEND:
+               if not Screens.Standby.inStandby and self.session.current_dialog and self.session.current_dialog.ALLOW_SUSPEND and self.session.in_exec:
                        self.session.open(Screens.Standby.Standby)
 
 profile("Scart")
@@ -417,10 +422,7 @@ def runScreenTest():
 
        CiHandler.setSession(session)
 
-       screensToRun = [ ]
-
-       for p in plugins.getPlugins(PluginDescriptor.WHERE_WIZARD):
-               screensToRun.append(p.__call__)
+       screensToRun = [ p.__call__ for p in plugins.getPlugins(PluginDescriptor.WHERE_WIZARD) ]
 
        profile("wizards")
        screensToRun += wizardManager.getWizards()
@@ -444,7 +446,7 @@ def runScreenTest():
 
                screen = screensToRun[0][1]
 
-               if len(screensToRun):
+               if screensToRun:
                        session.openWithCallback(boundFunction(runNextScreen, session, screensToRun[1:]), screen)
                else:
                        session.open(screen)
@@ -464,8 +466,8 @@ def runScreenTest():
        runReactor()
 
        profile("wakeup")
-       from time import time
-       from Tools.DreamboxHardware import setFPWakeuptime, getFPWakeuptime
+       from time import time, strftime, localtime
+       from Tools.DreamboxHardware import setFPWakeuptime, getFPWakeuptime, setRTCtime
        #get currentTime
        nowTime = time()
        wakeupList = [
@@ -476,12 +478,17 @@ def runScreenTest():
        ]
        wakeupList.sort()
        recordTimerWakeupAuto = False
-       if len(wakeupList):
-               startTime = wakeupList.pop(0)
+       if wakeupList:
+               from time import strftime
+               startTime = wakeupList[0]
                if (startTime[0] - nowTime) < 330: # no time to switch box back on
                        wptime = nowTime + 30  # so switch back on in 30 seconds
                else:
                        wptime = startTime[0] - 300
+               if not config.misc.useTransponderTime.value:
+                       print "dvb time sync disabled... so set RTC now to current linux time!", strftime("%Y/%m/%d %H:%M", localtime(nowTime))
+                       setRTCtime(nowTime)
+               print "set wakeup time to", strftime("%Y/%m/%d %H:%M", localtime(wptime))
                setFPWakeuptime(wptime)
                recordTimerWakeupAuto = startTime[1] == 0 and startTime[2]
        config.misc.isNextRecordTimerAfterEventActionAuto.value = recordTimerWakeupAuto
index e9a72693c8d487ffea8083e2eda58281934ba844..77784681f7c2726da2c2c5f145c83c04b35a351b 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Enigma2\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-16 00:05+0100\n"
-"PO-Revision-Date: 2008-11-26 14:22+0100\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-08 13:07+0100\n"
 "Last-Translator: Ingmar Jørgensen <dreambox@ingmar.dk>\n"
 "Language-Team: jazzydane <dreambox@ingmar.dk>\n"
 "MIME-Version: 1.0\n"
@@ -18,62 +18,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Avancerede indstillinger og opsætning."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Efter tryk på OK, vent venligst!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Lav backup af din Dreambox opsætning."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Rediger kildeadressen til opgradering."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 vil genstarte efter gendannelse"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Online opdatering af din Dreambox software."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Tryk OK på din fjernbetjening for at fortsætte."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Gendan din Dreambox opsætning."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Gendan din Dreambox med ny firmware."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Gendan dine backups efter dato."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Scan efter lokale pakker og installer dem."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Vælg din backup enhed.\n"
+"Nuværende enkhed: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Se, installer og fjern nuværende eller installerede pakker."
 
 msgid " "
 msgstr " "
@@ -417,13 +449,13 @@ msgid "Advanced"
 msgstr "Avanceret"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Avancerede indstillinger"
 
 msgid "Advanced Video Setup"
 msgstr "Avanceret Video Instilling"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Avanceret gendannelse"
 
 msgid "After event"
 msgstr "Efter film"
@@ -456,9 +488,6 @@ msgstr "Alternativ kanal tuner prioritet"
 msgid "An empty filename is illegal."
 msgstr "Et tomt filnavn er ugyldigt."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Der opstod en ukendt fejl!"
 
@@ -483,11 +512,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Er du sikker på, at du vil gendanne\n"
+"følgende backup:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Er du sikker på, at du vil gendanne dit Enigma2 backup?\n"
+"Enigma2 vil genstarte efter gendannelsen"
 
 msgid "Artist"
 msgstr "Kunstner"
@@ -559,22 +592,22 @@ msgid "Backup Mode"
 msgstr "Kopi Type"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Backup gennemført."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Backup mislykkedes."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Kopien er færdig. Tryk OK for at se resultat."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Backup kører"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Backup kører..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Lav backup af systemindstillinger"
 
 msgid "Band"
 msgstr "Bånd"
@@ -684,7 +717,7 @@ msgid "Channel Selection"
 msgstr "Kanal Vælger"
 
 msgid "Channel not in services list"
-msgstr ""
+msgstr "Kanalen er ikke kanal oplistningen"
 
 msgid "Channel:"
 msgstr "Kanal:"
@@ -711,10 +744,10 @@ msgid "Choose Tuner"
 msgstr "Vælg Tuner"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Vælg backup filer"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Vælg backup placering"
 
 msgid "Choose bouquet"
 msgstr "Vælg pakke"
@@ -726,16 +759,16 @@ msgid "Choose target folder"
 msgstr "Vælg folder du vil bruge"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Vælg kilde for opgradering"
 
 msgid "Choose your Skin"
 msgstr "Vælg dit Skin"
 
 msgid "Circular left"
-msgstr ""
+msgstr "Venstre-cirkulær"
 
 msgid "Circular right"
-msgstr ""
+msgstr "Højre-cirkulær"
 
 msgid "Cleanup"
 msgstr "Oprydning"
@@ -782,6 +815,9 @@ msgstr "Kommiteret DiSEqC kommando"
 msgid "Common Interface"
 msgstr "CA Modul"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Kompakt Flash"
 
@@ -794,6 +830,9 @@ msgstr "Færdig"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Kompleks (tillader blanding af lydspor og billedformater)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Konfigurations Type"
 
@@ -845,7 +884,7 @@ msgstr "Kunne ikke indlæse media! Ingen disk isat?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
-msgstr ""
+msgstr "Kan ikke optage på grund af konfliktende timere %s"
 
 msgid "Create DVD-ISO"
 msgstr "Opret DVD-ISO"
@@ -950,7 +989,7 @@ msgid "Description"
 msgstr "Beskrivelse"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Fravælg"
 
 msgid "Destination directory"
 msgstr "Destinations mappe"
@@ -1018,7 +1057,7 @@ msgid "Display 4:3 content as"
 msgstr "Vis 4:3 indhold som"
 
 msgid "Display >16:9 content as"
-msgstr ""
+msgstr "Vis > 16:9 indhold som"
 
 msgid "Display Setup"
 msgstr "Display Indstillinger"
@@ -1088,7 +1127,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Vil du installere standard satellit lister?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Vil du installere pakken:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Vil du afspille DVD i drevet?"
@@ -1097,10 +1136,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Vil du gennemse denne DVD inden brænding?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Vil du genstarte din Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Vil du fjerne pakken:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Vil du genskabe dine indstillinger?"
@@ -1109,7 +1148,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Vil du genoptage denne afspilning?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Vil du opdatere din Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1119,7 +1158,7 @@ msgstr ""
 "Efter tryk på OK, vent venligst!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Vil du opgradere pakken:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Vil du se en oversigt?"
@@ -1137,7 +1176,7 @@ msgstr "Færdig - Installerede og opgraderede %d pakker med %d fejl"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
-msgstr ""
+msgstr "Færdig - Installeret, opgraferet eller fjernet %d pakker med %d fejl"
 
 msgid "Download"
 msgstr "Download"
@@ -1188,6 +1227,9 @@ msgstr "Rediger"
 msgid "Edit DNS"
 msgstr "Ændre DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr ""
+
 msgid "Edit Title"
 msgstr "Rediger titel"
 
@@ -1453,6 +1495,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Router Adresse"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Genre"
 
@@ -1498,9 +1552,12 @@ msgstr "Hiraki Information"
 msgid "Hierarchy mode"
 msgstr "Hieraki type"
 
-msgid "Horizontal"
+msgid "High bitrate support"
 msgstr ""
 
+msgid "Horizontal"
+msgstr "Horisontal"
+
 msgid "How many minutes do you want to record?"
 msgstr "Hvor mange minutter vil du optage?"
 
@@ -1593,12 +1650,18 @@ msgid "Input"
 msgstr "Indgang"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Installer et nyt image med en USB stick"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Installer et nyt image med din web browser"
 
 msgid "Install local IPKG"
+msgstr "Installer lokal IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr ""
+
+msgid "Install software updates..."
 msgstr ""
 
 msgid "Installing"
@@ -1645,7 +1708,7 @@ msgid "Invert display"
 msgstr "Inverter display"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Italiensk"
@@ -1694,7 +1757,7 @@ msgid "Latitude"
 msgstr "Breddegrad"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Lettisk"
 
 msgid "Leave DVD Player?"
 msgstr "Forlade DVD Afspiller?"
@@ -1702,6 +1765,9 @@ msgstr "Forlade DVD Afspiller?"
 msgid "Left"
 msgstr "Venstre"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr ""
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Sorte striber i top og bund af billede"
@@ -1746,7 +1812,7 @@ msgid "Lock:"
 msgstr "Lås:"
 
 msgid "Log results to harddisk"
-msgstr ""
+msgstr "Log resultaterne til harddisken"
 
 msgid "Long Keypress"
 msgstr "Langt Tastetryk"
@@ -1776,7 +1842,7 @@ msgid "Make this mark just a mark"
 msgstr "Lave dette mærke til kun et mærke"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Styring af din modtagers software"
 
 msgid "Manual Scan"
 msgstr "Manuel Søgning"
@@ -1785,7 +1851,7 @@ msgid "Manual transponder"
 msgstr "Manuel transponder"
 
 msgid "Manufacturer"
-msgstr ""
+msgstr "Fabrikant"
 
 msgid "Margin after record"
 msgstr "Margin efter optagelse"
@@ -1812,7 +1878,7 @@ msgid "Message"
 msgstr "Besked"
 
 msgid "Message..."
-msgstr ""
+msgstr "Besked..."
 
 msgid "Mkfs failed"
 msgstr "Mkfs fejlede"
@@ -1974,6 +2040,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Ingen detaljer for denne image fil"
 
+msgid "No displayable files on this medium found!"
+msgstr ""
+
 msgid "No event info found, recording indefinitely."
 msgstr "Ingen Program-Data fundet, optagelse startet."
 
@@ -2150,7 +2219,7 @@ msgid "Packet management"
 msgstr "Pakke kontrol"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Pakkestyring"
 
 msgid "Page"
 msgstr "Side"
@@ -2199,6 +2268,12 @@ msgstr "Afspil"
 msgid "Play Audio-CD..."
 msgstr "Afspil Lyd-CD"
 
+msgid "Play DVD"
+msgstr ""
+
+msgid "Play Music..."
+msgstr ""
+
 msgid "Play recorded movies..."
 msgstr "Afspil optagede film..."
 
@@ -2289,7 +2364,7 @@ msgid "Please select a subservice..."
 msgstr "Vælg venligst en underkanal..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Vælg venligst medie der skal benyttes som backup placering"
 
 msgid "Please select tag to filter..."
 msgstr "Vælg venligst tag til filtrering..."
@@ -2329,7 +2404,7 @@ msgid "Please wait for activation of your network configuration..."
 msgstr "Vent venligt på aktivering af din netværks opsætning..."
 
 msgid "Please wait while scanning is in progress..."
-msgstr ""
+msgstr "Vent venligst mens scanningsprocessen er i gang...."
 
 msgid "Please wait while we configure your network..."
 msgstr "Vent venligts, mens vi opsætter dit netværk..."
@@ -2408,7 +2483,7 @@ msgstr "Tryk på OK for at redigere indstillinger."
 
 #, python-format
 msgid "Press OK to get further details for %s"
-msgstr ""
+msgstr "Tryk på OK for at se yderligere detaljer for %s"
 
 msgid "Press OK to scan"
 msgstr "Tryk OK for at søge"
@@ -2426,7 +2501,7 @@ msgid "Primary DNS"
 msgstr "Primær DNS"
 
 msgid "Priority"
-msgstr ""
+msgstr "Prioritet"
 
 msgid "Properties of current title"
 msgstr "Egenskaber for den aktuelle titel"
@@ -2446,9 +2521,12 @@ msgstr "Udbyder til søgning"
 msgid "Providers"
 msgstr "Udbydere"
 
-msgid "Quick"
+msgid "Python frontend for /tmp/mmi.socket"
 msgstr ""
 
+msgid "Quick"
+msgstr "Kvik"
+
 msgid "Quickzap"
 msgstr "Hurtigskift"
 
@@ -2471,7 +2549,7 @@ msgid "Ram Disk"
 msgstr "Ram Disk"
 
 msgid "Random"
-msgstr ""
+msgstr "Tilfældig"
 
 msgid "Really close without saving settings?"
 msgstr "Vil du virkelig lukke uden at gemme indstillinger?"
@@ -2502,7 +2580,7 @@ msgstr "Optage"
 
 #, python-format
 msgid "Record time limited due to conflicting timer %s"
-msgstr ""
+msgstr "Optagelsestid begrænset på grund af konfliktende timer %s"
 
 msgid "Recorded files..."
 msgstr "Optagede filer..."
@@ -2526,7 +2604,7 @@ msgid "Refresh rate selection."
 msgstr "Opdaterings Rate vælger."
 
 msgid "Reload"
-msgstr ""
+msgstr "Genindlæs"
 
 msgid "Remove Bookmark"
 msgstr "Fjern bogmærke"
@@ -2541,7 +2619,7 @@ msgid "Remove currently selected title"
 msgstr "Fjerne nuværende valgte titel"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Sletning afsluttet"
 
 msgid "Remove plugins"
 msgstr "Fjerne plugins"
@@ -2553,13 +2631,13 @@ msgid "Remove the incomplete .NFI file?"
 msgstr "Fjern den ukomplette .NFI fil?"
 
 msgid "Remove timer"
-msgstr ""
+msgstr "Fjern timer"
 
 msgid "Remove title"
 msgstr "Fjerne titel"
 
 msgid "Removing"
-msgstr ""
+msgstr "Sletter"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2611,16 +2689,16 @@ msgid "Restore"
 msgstr "Gendanne"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Gendan backup..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Gendanelse afvikles"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Gendanelse afvikles..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Gendan system opsætning"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2712,6 +2790,9 @@ msgstr "Skalerings Type"
 msgid "Scan "
 msgstr "Søgning"
 
+msgid "Scan Files..."
+msgstr ""
+
 msgid "Scan QAM128"
 msgstr "Søge QAM128"
 
@@ -2800,11 +2881,14 @@ msgid "Seek"
 msgstr "Søg"
 
 msgid "Select"
-msgstr ""
+msgstr "Vælg"
 
 msgid "Select HDD"
 msgstr "Vælg Filsystem"
 
+msgid "Select IPKG source to edit..."
+msgstr ""
+
 msgid "Select Location"
 msgstr "Vælg Lokation"
 
@@ -2824,10 +2908,10 @@ msgid "Select channel to record from"
 msgstr "Vælg optagekanal"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Vælg filer til backup. Nuværende valgte:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Vælg filer/mapper til backup..."
 
 msgid "Select image"
 msgstr "Vælg image"
@@ -2838,6 +2922,9 @@ msgstr "Vælg opdaterings rate"
 msgid "Select video input"
 msgstr "Vælg video indgang"
 
+msgid "Select video input with up/down buttons"
+msgstr ""
+
 msgid "Select video mode"
 msgstr "Vælg video type"
 
@@ -3008,16 +3095,16 @@ msgid "Slow Motion speeds"
 msgstr "Langsom bevægelse hastigheder"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Software styring"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Software styring..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Software gendannelse"
 
 msgid "Software update"
-msgstr ""
+msgstr "Software opdatering"
 
 msgid "Some plugins are not available:\n"
 msgstr "Nogle plugins er ikke tilstede:\n"
@@ -3026,10 +3113,10 @@ msgid "Somewhere else"
 msgstr "Andet steds"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Desværre, MediaScanner er ikke installeret!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Beklager, ingen backup fundet!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3044,12 +3131,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Din placering af backup er desværre ikke skrivbar.\n"
+"Vælg venligst en anden."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Din placering af backup er desværre ikke skrivbar.\n"
+"\n"
+"Vælg venligst en anden."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3120,10 +3212,10 @@ msgid "Stop test"
 msgstr "Stoppe test"
 
 msgid "Stop testing plane after # failed transponders"
-msgstr ""
+msgstr "Stop afprøvning af flade efter # fejlende transpondere"
 
 msgid "Stop testing plane after # successful transponders"
-msgstr ""
+msgstr "Stop afprøvning af flade efter # fungerende transpondere"
 
 msgid "Store position"
 msgstr "Gemme Position"
@@ -3206,10 +3298,10 @@ msgid "Terrestrial provider"
 msgstr "DVB T udbyder"
 
 msgid "Test DiSEqC settings"
-msgstr ""
+msgstr "Afprøv DiSEqC indstillinger"
 
 msgid "Test Type"
-msgstr ""
+msgstr "Afprøv type"
 
 msgid "Test mode"
 msgstr "Test type"
@@ -3260,6 +3352,9 @@ msgstr ""
 "\n"
 "Vil du skrive USB flash til denne stick?"
 
+msgid "The following files were found..."
+msgstr ""
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3313,7 +3408,7 @@ msgstr "De indtastede pin koder er forskellige."
 
 #, python-format
 msgid "The results have been written to %s."
-msgstr ""
+msgstr "Resultaterne skal skrives til %s."
 
 msgid "The sleep timer has been activated."
 msgstr "Sleep timeren er blevet aktiveret."
@@ -3353,6 +3448,9 @@ msgstr ""
 "Der kan være for lidt plads på den valgte Partition.\n"
 "Vil du virkelig fortsætte?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr ""
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Denne .NFI fil indehodler ikke et gyldigt %s image!"
@@ -3378,6 +3476,10 @@ msgstr ""
 "Denne DVD RW er allerede formatteret - reformattering vil slette alt indhold "
 "på disken."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr ""
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Denne Dreambox kan ikke afkode %s video strams!"
@@ -3578,6 +3680,9 @@ msgstr "Prøver at finde Transpondere i kabel netværk.. vent venligst..."
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr "Prøver at finde transpondere i kabel netværk.. vent venligst..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr ""
+
 msgid "Tue"
 msgstr "Tir"
 
@@ -3612,7 +3717,7 @@ msgid "Two"
 msgstr "To"
 
 msgid "Type"
-msgstr ""
+msgstr "Type"
 
 msgid "Type of scan"
 msgstr "Søge type"
@@ -3650,13 +3755,13 @@ msgid "Uncommitted DiSEqC command"
 msgstr "Ukommiteret DiSEqC kommando"
 
 msgid "Unicable"
-msgstr ""
+msgstr "Unikabel"
 
 msgid "Unicable LNB"
-msgstr ""
+msgstr "Unikabel LNB"
 
 msgid "Unicable Martix"
-msgstr ""
+msgstr "Unikabel matrix"
 
 msgid "Universal LNB"
 msgstr "Universal LNB"
@@ -3677,7 +3782,7 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Opdaterer... Vent venligst...  Dette kan tage adskillige minutter..."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Opgradering afsluttet"
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Opgradering færdig. Vil du Genstarte din DreamBox?"
@@ -3758,7 +3863,7 @@ msgid "VMGM (intro trailer)"
 msgstr "VMGM (intro trailer)"
 
 msgid "Vertical"
-msgstr ""
+msgstr "Vertikal"
 
 msgid "Video Fine-Tuning"
 msgstr "Video Fin-Justering..."
@@ -3793,9 +3898,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Video type vælger."
 
+msgid "View Movies..."
+msgstr ""
+
+msgid "View Photos..."
+msgstr ""
+
 msgid "View Rass interactive..."
 msgstr "Se Rass interaktivi..."
 
+msgid "View Video CD..."
+msgstr ""
+
 msgid "View teletext..."
 msgstr "Se teletekst..."
 
@@ -3899,6 +4013,11 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Når du anvender fabrik gendannelse mister du ALLE dine indstillingsdata\n"
+"(Inclusive buketter, kanallister, satellit data ...)\n"
+"Efter afsluttet fabriksgendannelse genstartes DeamBoxen automatisk!\n"
+"\n"
+"Udfør fabriks gendannelse?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Hvor vil du lave en kopi af dine indstillinger?"
@@ -4021,6 +4140,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Du hae valgt dine backup indstillinger. Tryk venligst på OK for at starte "
+"backuppen nu"
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4033,6 +4154,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Du har valgt at gendanne dine indstillinger. Enigma2 vil genstarte efter "
+"gendannelsen. Tryk venligst på OK for at starte gendannelsen nu."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4073,6 +4196,11 @@ msgstr ""
 "Din backup er lykkedes. Vi vil nu forsætte forklaringen på opdaterings "
 "processen."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Din Dreambox slukker nu. Vent venligst..."
 
@@ -4122,6 +4250,12 @@ msgstr "[Favorit redigering]"
 msgid "[move mode]"
 msgstr "[Flytte type]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "Afbryd alternativ redigering"
 
@@ -4137,6 +4271,12 @@ msgstr "Ved at starte"
 msgid "activate current configuration"
 msgstr "aktiver den aktuelle opsætning"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "tilføj en navneserver angivelse"
 
@@ -4195,6 +4335,12 @@ msgstr ""
 "Er du sikker på at du vil gendanne\n"
 "følgende backup:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "lydspor (%s) format"
@@ -4207,7 +4353,7 @@ msgid "audio tracks"
 msgstr "lyd spor"
 
 msgid "auto"
-msgstr ""
+msgstr "auto"
 
 msgid "back"
 msgstr "Tilbage"
@@ -4282,6 +4428,9 @@ msgstr "Daglig"
 msgid "day"
 msgstr "dag"
 
+msgid "delete"
+msgstr "Slet"
+
 msgid "delete cut"
 msgstr "Slet klip"
 
@@ -4455,6 +4604,9 @@ msgstr ""
 msgid "init module"
 msgstr "Initialiser modul"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "Indsæt mærke her"
 
@@ -4560,9 +4712,18 @@ msgstr "Næste kanal i hukommelse"
 msgid "no"
 msgstr "Nej"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "Ingen HDD fundet"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "Ingen modul fundet"
 
@@ -4579,7 +4740,7 @@ msgid "not locked"
 msgstr "Ikke låst"
 
 msgid "not used"
-msgstr ""
+msgstr "ikke anvendt"
 
 msgid "nothing connected"
 msgstr "Intet tilsluttet"
@@ -4735,6 +4896,9 @@ msgstr "vælg"
 msgid "select .NFI flash file"
 msgstr "vælg .NFI flash fil"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "vælg image fra server"
 
@@ -4865,7 +5029,7 @@ msgid "switch to playlist"
 msgstr "Skift til spilleliste"
 
 msgid "switch to the next angle"
-msgstr ""
+msgstr "skift til næste vinkel"
 
 msgid "switch to the next audio track"
 msgstr "Skift til næste lyd spor"
@@ -4874,7 +5038,7 @@ msgid "switch to the next subtitle language"
 msgstr "Skift til næste undertekst sprog"
 
 msgid "template file"
-msgstr ""
+msgstr "skabelon fil"
 
 msgid "textcolor"
 msgstr "tekstfarve"
@@ -4928,7 +5092,7 @@ msgid "whitelist"
 msgstr "Hvidliste"
 
 msgid "working"
-msgstr ""
+msgstr "fungerer"
 
 msgid "yellow"
 msgstr "gul"
@@ -4952,13 +5116,6 @@ msgstr "Zap"
 msgid "zapped"
 msgstr "Zappet"
 
-#~ msgid ""
-#~ "\n"
-#~ "Enigma2 will restart after the restore"
-#~ msgstr ""
-#~ "\n"
-#~ "Enigma2 vil genstarte efter gendannelse"
-
 #~ msgid "\"?"
 #~ msgstr "\"?"
 
@@ -4989,6 +5146,9 @@ msgstr "Zappet"
 #~ msgid "An error has occured. (%s)"
 #~ msgstr "En fejl er opstået. (%s)"
 
+#~ msgid "An error occured!"
+#~ msgstr "Der opstod en fejl!"
+
 #~ msgid ""
 #~ "Are you sure you want to enable WLAN support?\n"
 #~ "Connect your Wlan USB Stick to your Dreambox and press OK.\n"
@@ -5516,9 +5676,6 @@ msgstr "Zappet"
 #~ msgid "color"
 #~ msgstr "farve"
 
-#~ msgid "delete"
-#~ msgstr "Slet"
-
 #~ msgid "equal to Socket A"
 #~ msgstr "Som Tuner A"
 
old mode 100755 (executable)
new mode 100644 (file)
index 5cf7fdd..acf7d8a
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tuxbox-enigma 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-16 00:05+0100\n"
+"POT-Creation-Date: 2009-02-26 14:15+0100\n"
 "PO-Revision-Date: 2008-11-18 13:00+0100\n"
 "Last-Translator: Andreas Frisch <andreas.frisch@multimedia-labs.de>\n"
 "Language-Team: none\n"
@@ -23,62 +23,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Erweiterte Optionen und Einstellungen."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Nach dem Sie OK gedrückt haben, bitte warten!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Sichern Ihrer Dreambox Einstellungen."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Upgrade Quell-Adresse bearbeiten."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 wird nach der Wiederherstellung neu starten"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Online update Ihrer Dreambox Software."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Drücken Sie OK um fortzufahren."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Wiederherstellen Ihrer Dreambox Einstellungen."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Wiederherstellen Ihrer Dreambox mit einer neuen Firmware."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Wiederherstellen Ihrer nach Datum sortierten Sicherungen."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Suche nach lokalen Paketen und installiere sie."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Wählen Sie ihr Sicherungs-Laufwerk.\n"
+"Aktuelles Laufwerk: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Anzeigen, Installieren und Entfernen verfügbarer oder installierter Pakete."
 
 msgid " "
 msgstr ""
@@ -159,11 +191,13 @@ msgid "* Only available when entering hidden SSID or network key"
 msgstr "* Verfügbar für die Eingabe der Netzwerk SSID oder Passwortes"
 
 msgid ".NFI Download failed:"
-msgstr ""
+msgstr ".NFI Download fehlgeschlagen:"
 
 msgid ""
 ".NFI file passed md5sum signature check. You can safely flash this image!"
 msgstr ""
+"Die Signatur-Überprüfung der .NFI-Datei war erfolgreich. Sie können diese "
+"Datei ohne Bedenken installieren!"
 
 msgid "/usr/share/enigma2 directory"
 msgstr "/usr/share/enigma2 Verzeichnis"
@@ -422,13 +456,13 @@ msgid "Advanced"
 msgstr "Erweitert"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Erweiterte Optionen"
 
 msgid "Advanced Video Setup"
 msgstr "Erweiterte Video-Einstellungen"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Erweiterte Wiederherstellung"
 
 msgid "After event"
 msgstr "Nach dem Ereignis"
@@ -448,7 +482,7 @@ msgid "All"
 msgstr "Alle"
 
 msgid "All Satellites"
-msgstr ""
+msgstr "Alle Satelliten"
 
 msgid "Alpha"
 msgstr "Transparenz"
@@ -462,9 +496,6 @@ msgstr "Tuner-Priorität bei Alternativen Services"
 msgid "An empty filename is illegal."
 msgstr "Leerer Dateiname nicht erlaubt."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Es ist ein unbekannter Fehler aufgetreten!"
 
@@ -475,7 +506,7 @@ msgid ""
 "Are you sure you want to activate this network configuration?\n"
 "\n"
 msgstr ""
-"Sind Sie sicher, das diese Netzwerkkonfiguration aktiviert werden soll?\n"
+"Sind Sie sicher, dass diese Netzwerkkonfiguration aktiviert werden soll?\n"
 "\n"
 
 msgid ""
@@ -565,23 +596,23 @@ msgid "Backup Mode"
 msgstr "Sicherungs-Modus"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Sicherung durchgeführt."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Sicherung fehlgeschlagen."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr ""
 "Sicherung wurde durchgeführt. Bitte drücken Sie OK, um das Ergebnis zu sehen."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Sicherung läuft"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Sicherung läuft..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Systemeinstellungen sichern"
 
 msgid "Band"
 msgstr "Band"
@@ -691,7 +722,7 @@ msgid "Channel Selection"
 msgstr "Kanalliste"
 
 msgid "Channel not in services list"
-msgstr ""
+msgstr "Kanal nicht in der Kanalliste"
 
 msgid "Channel:"
 msgstr "Kanal:"
@@ -718,10 +749,10 @@ msgid "Choose Tuner"
 msgstr "Tuner wählen"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Wähle zu sichernde Dateien"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Wähle Sicherungsort"
 
 msgid "Choose bouquet"
 msgstr "Bouquet wählen"
@@ -733,7 +764,7 @@ msgid "Choose target folder"
 msgstr "Zielverzeichnis wählen"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Wähle Upgrade-Quelle"
 
 msgid "Choose your Skin"
 msgstr "Wähle das Aussehen der Bedienoberfläche"
@@ -811,7 +842,7 @@ msgid "Conflicting timer"
 msgstr "In Konflikt stehender Timer"
 
 msgid "Connected to"
-msgstr ""
+msgstr "Verbunden mit"
 
 msgid "Connected to Fritz!Box!"
 msgstr "Mit Fritz!Box verbunden!"
@@ -846,13 +877,15 @@ msgstr "Kontrast"
 
 msgid "Could not connect to Dreambox .NFI Image Feed Server:"
 msgstr ""
+"Verbindung zum Dreambox .NFI Image Feed Server konnte nicht hergestellt "
+"werden:"
 
 msgid "Could not load Medium! No disc inserted?"
 msgstr "Konnte das Medium nicht laden! Keine DVD eingelegt?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
-msgstr ""
+msgstr "Aufnahme wegen in Konflikt stehenedem timer %s fehlgeschlagen"
 
 msgid "Create DVD-ISO"
 msgstr "DVD-ISO erstellen"
@@ -862,7 +895,7 @@ msgstr "Erzeugen des Film-Verzeichnisses fehlgeschlagen"
 
 #, python-format
 msgid "Creating directory %s failed."
-msgstr ""
+msgstr "Erzeugen des Verzeichnisses %s fehlgeschlagen."
 
 msgid "Creating partition failed"
 msgstr "Partitionserzeugung fehlgeschlagen"
@@ -957,7 +990,7 @@ msgid "Description"
 msgstr "Beschreibung"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Markierung aufheben"
 
 msgid "Destination directory"
 msgstr "Zielverzeichnis"
@@ -988,7 +1021,7 @@ msgstr "Direkte Wiedergabe verknüpfter Titel ohne Menü"
 
 #, python-format
 msgid "Directory %s nonexistent."
-msgstr ""
+msgstr "Verzeichnis %s existiert nicht."
 
 msgid "Disable"
 msgstr "Aus"
@@ -1025,7 +1058,7 @@ msgid "Display 4:3 content as"
 msgstr "4:3-Inhalt anzeigen als"
 
 msgid "Display >16:9 content as"
-msgstr ""
+msgstr ">16:9-Inhalt anzeigen als"
 
 msgid "Display Setup"
 msgstr "Display-Einstellungen"
@@ -1034,13 +1067,13 @@ msgstr "Display-Einstellungen"
 msgid ""
 "Do you really want to REMOVE\n"
 "the plugin \"%s\"?"
-msgstr ""
+msgstr "Wollen Sie das plugin \"%s\" wirklich entfernen?"
 
 msgid ""
 "Do you really want to check the filesystem?\n"
 "This could take lots of time!"
 msgstr ""
-"Möchten Sie wirklich das Dateisystem überprüfen?\n"
+"Möchten Sie das Dateisystem wirklich überprüfen?\n"
 "Die Überprüfung könnte einige Zeit in Anspruch nehmen."
 
 #, python-format
@@ -1051,7 +1084,7 @@ msgstr "Wollen Sie \"%s\" wirklich löschen?"
 msgid ""
 "Do you really want to download\n"
 "the plugin \"%s\"?"
-msgstr ""
+msgstr "Wollen Sie das plugin \"%s\" wirklich herunterladen?"
 
 msgid ""
 "Do you really want to initialize the harddisk?\n"
@@ -1062,11 +1095,11 @@ msgstr ""
 
 #, python-format
 msgid "Do you really want to remove directory %s from the disk?"
-msgstr ""
+msgstr "Wollen Sie das Verzeichnis %s wirklich von der Festplatte löschen?"
 
 #, python-format
 msgid "Do you really want to remove your bookmark of %s?"
-msgstr ""
+msgstr "Wollen Sie Ihren Bookmark %s wirklich löschen?"
 
 msgid ""
 "Do you want to backup now?\n"
@@ -1091,7 +1124,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Wollen Sie nun Standardkanallisten installieren?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Wollen Sie das Paket installieren:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Wollen Sie die DVD im Laufwerk abspielen?"
@@ -1100,10 +1133,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Wollen Sie vor dem Brennen eine Vorschau der DVD ansehen?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Wollen Sie die Dreambox neu starten?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Wollen Sie das Paket entfernen:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Wollen Sie die Einstellungen wiederherstellen?"
@@ -1112,7 +1145,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Möchten Sie die Wiedergabe an der letzten Stelle fortsetzen?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Wollen Sie Ihre Dreambox aktualisieren?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1122,7 +1155,7 @@ msgstr ""
 "Nach dem Druck auf OK bitte warten!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Wollen Sie das Paket aktualisieren:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Wollen Sie ein Tutorial sehen?"
@@ -1141,18 +1174,19 @@ msgstr "Beendet - %d installierte oder aktualisierte Pakete mit %d Fehlern"
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
 msgstr ""
+"Beendet - %d Pakete mit %d Fehlern installiert, aktualisiert oder entfernt"
 
 msgid "Download"
 msgstr "Herunterladen"
 
 msgid "Download .NFI-Files for USB-Flasher"
-msgstr ""
+msgstr ".NFI-Files für USB-Flasher runterladen"
 
 msgid "Download Plugins"
 msgstr "Plugins herunterladen"
 
 msgid "Download of USB flasher boot image failed: "
-msgstr ""
+msgstr "Herunterladen des USB flasher boot image fehlgeschlagen: "
 
 msgid "Downloadable new plugins"
 msgstr "Herunterladbare neue Plugins"
@@ -1191,6 +1225,9 @@ msgstr ""
 msgid "Edit DNS"
 msgstr "Bearbeite DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr ""
+
 msgid "Edit Title"
 msgstr "Titel schneiden"
 
@@ -1281,7 +1318,7 @@ msgid "Enter Rewind at speed"
 msgstr "Anfängliche Rücklaufgeschwindigkeit eingeben"
 
 msgid "Enter WLAN network name/SSID:"
-msgstr ""
+msgstr "WLAN Netzwerkname/SSID eingeben:"
 
 msgid "Enter WLAN passphrase/key:"
 msgstr "WLAN Schlüssel/Passwort eingeben:"
@@ -1296,7 +1333,7 @@ msgid "Error"
 msgstr "Fehler"
 
 msgid "Error executing plugin"
-msgstr ""
+msgstr "Ausführen des plugins fehlgeschlagen"
 
 #, python-format
 msgid ""
@@ -1400,7 +1437,7 @@ msgid "Flash"
 msgstr ""
 
 msgid "Flashing failed"
-msgstr ""
+msgstr "Flashen fehlgeschlagen"
 
 msgid "Format"
 msgstr "Formatieren"
@@ -1433,7 +1470,7 @@ msgid "Friday"
 msgstr "Freitag"
 
 msgid "Frisian"
-msgstr ""
+msgstr "Friesisch"
 
 msgid "Fritz!Box FON IP address"
 msgstr "Fritz!Box FON IP-Adresse"
@@ -1504,6 +1541,9 @@ msgstr "Hierarchieinformationen"
 msgid "Hierarchy mode"
 msgstr "Hierarchiemodus"
 
+msgid "High bitrate support"
+msgstr "Kann hohe Datenraten verarbeiten"
+
 msgid "Horizontal"
 msgstr ""
 
@@ -1603,12 +1643,18 @@ msgid "Input"
 msgstr "Eingabe"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Neues Image mittels USB Stick installieren"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Neues Image mittels Webbrowser installieren"
 
 msgid "Install local IPKG"
+msgstr ".ipk Datei installieren"
+
+msgid "Install settings, skins, software..."
+msgstr ""
+
+msgid "Install software updates..."
 msgstr ""
 
 msgid "Installing"
@@ -1646,7 +1692,7 @@ msgstr "Fehlerhafter Ort"
 
 #, python-format
 msgid "Invalid directory selected: %s"
-msgstr ""
+msgstr "Ungültiges Verzeichnis ausgewählt: %s"
 
 msgid "Inversion"
 msgstr "Inversion"
@@ -1712,6 +1758,9 @@ msgstr "DVD Player beenden?"
 msgid "Left"
 msgstr "Links"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr ""
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr ""
@@ -1786,7 +1835,7 @@ msgid "Make this mark just a mark"
 msgstr "Aus dieser Markierung nur eine Markierung machen"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Verwalten Sie die Software Ihrer Dreambox."
 
 msgid "Manual Scan"
 msgstr "Manuelle Suche"
@@ -1795,7 +1844,7 @@ msgid "Manual transponder"
 msgstr "Manueller Transponder"
 
 msgid "Manufacturer"
-msgstr ""
+msgstr "Hersteller"
 
 msgid "Margin after record"
 msgstr "Nachlauf hinter Aufnahme"
@@ -1822,7 +1871,7 @@ msgid "Message"
 msgstr "Nachricht"
 
 msgid "Message..."
-msgstr ""
+msgstr "Nachricht..."
 
 msgid "Mkfs failed"
 msgstr "Mkfs fehlgeschlagen"
@@ -1883,6 +1932,8 @@ msgstr "NÄCHSTE"
 
 msgid "NFI image flashing completed. Press Yellow to Reboot!"
 msgstr ""
+"NFI Image flashen beendet.\n"
+"Drücken Sie gelb um die Dreambox neu zu starten!"
 
 msgid "NOW"
 msgstr "JETZT"
@@ -1969,7 +2020,7 @@ msgstr ""
 "Festplatte nicht initialisiert."
 
 msgid "No Networks found"
-msgstr ""
+msgstr "Keine Netzwerke gefunden"
 
 msgid "No backup needed"
 msgstr "Keine Sicherung benötigt"
@@ -1982,6 +2033,9 @@ msgstr ""
 "(Zeit lief beim Lesen der PAT ab)"
 
 msgid "No details for this image file"
+msgstr "Keine Details zum Image verfügbar"
+
+msgid "No displayable files on this medium found!"
 msgstr ""
 
 msgid "No event info found, recording indefinitely."
@@ -2096,6 +2150,8 @@ msgid ""
 "Not enough diskspace. Please free up some diskspace and try again. (%d MB "
 "required, %d MB available)"
 msgstr ""
+"Nicht genügend freier Speicherplatz. Bitte löschen Sie nicht mehr benötigte "
+"Dateien und versuchen es erneut. (%d MB benötigt, %d MB verfügbar)"
 
 msgid ""
 "Nothing to scan!\n"
@@ -2191,7 +2247,7 @@ msgid "PiPSetup"
 msgstr "PiP-Einstellung"
 
 msgid "PicturePlayer"
-msgstr ""
+msgstr "Bildbetrachter"
 
 #. TRANSLATORS: (aspect ratio policy: black bars on left/right) in doubt, keep english term.
 msgid "Pillarbox"
@@ -2209,6 +2265,12 @@ msgstr "Abspielen"
 msgid "Play Audio-CD..."
 msgstr "Audio-CD abspielen"
 
+msgid "Play DVD"
+msgstr ""
+
+msgid "Play Music..."
+msgstr ""
+
 msgid "Play recorded movies..."
 msgstr "Aufgenommene Filme abspielen..."
 
@@ -2226,6 +2288,7 @@ msgstr "Bitte überprüfen Sie ihre Netzwerkeinstellungen"
 
 msgid "Please choose .NFI image file from feed server to download"
 msgstr ""
+"Bitte wählen Sie eine .NFI Image Datei zum Herunterladen vom Feed-Server"
 
 msgid "Please choose an extension..."
 msgstr "Bitte eine Erweiterung auswählen..."
@@ -2260,7 +2323,7 @@ msgid "Please enter filename (empty = use current date)"
 msgstr "Bitte einen Dateinamen eingeben (leer = Dateiname ist aktuelles Datum)"
 
 msgid "Please enter name of the new directory"
-msgstr ""
+msgstr "Bitte den Namen des neuen Verzeichnisses eingeben"
 
 msgid "Please enter the correct pin code"
 msgstr "Bitte den korrekten Pincode eingeben"
@@ -2283,7 +2346,7 @@ msgid "Please press OK!"
 msgstr "Bitte OK drücken"
 
 msgid "Please select .NFI flash image file from medium"
-msgstr ""
+msgstr "Bitte wählen Sie eine .NFI flash image Datei vom Datenträger"
 
 msgid "Please select a playlist to delete..."
 msgstr "Bitte wählen Sie eine Wiedergabeliste zum Löschen..."
@@ -2298,13 +2361,13 @@ msgid "Please select a subservice..."
 msgstr "Bitte einen Unterkanal auswählen..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Bitte wählen Sie einen Datenträger für eine Sicherung"
 
 msgid "Please select tag to filter..."
 msgstr ""
 
 msgid "Please select target directory or medium"
-msgstr ""
+msgstr "Bitte wählen Sie ein Ziel-Verzeichnis bzw. Datenträger"
 
 msgid "Please select the movie path..."
 msgstr "Bitte den Filmpfad angeben..."
@@ -2338,7 +2401,7 @@ msgid "Please wait for activation of your network configuration..."
 msgstr "Bitte warten während die Netzwerkkonfiguration aktiviert wird..."
 
 msgid "Please wait while scanning is in progress..."
-msgstr ""
+msgstr "Bitte warten während des Suchvorgangs..."
 
 msgid "Please wait while we configure your network..."
 msgstr "Bitte warten während das Netzwerk konfiguriert wird..."
@@ -2413,11 +2476,11 @@ msgid "Press OK to activate the settings."
 msgstr "OK drücken zum Aktivieren."
 
 msgid "Press OK to edit the settings."
-msgstr ""
+msgstr "Drücken Sie OK um die Einstellungen zu bearbeiten"
 
 #, python-format
 msgid "Press OK to get further details for %s"
-msgstr ""
+msgstr "Drücken Sie OK um weitere Details zu %s zu erhalten"
 
 msgid "Press OK to scan"
 msgstr "Zum Starten der Suche OK drücken."
@@ -2435,7 +2498,7 @@ msgid "Primary DNS"
 msgstr "Primärer DNS"
 
 msgid "Priority"
-msgstr ""
+msgstr "Priorität"
 
 msgid "Properties of current title"
 msgstr "Eigenschaften des ausgewählten Titels"
@@ -2455,9 +2518,12 @@ msgstr "Zu durchsuchende Anbieter"
 msgid "Providers"
 msgstr "Anbieter"
 
-msgid "Quick"
+msgid "Python frontend for /tmp/mmi.socket"
 msgstr ""
 
+msgid "Quick"
+msgstr "Schnell"
+
 msgid "Quickzap"
 msgstr "Schnellumschalter"
 
@@ -2480,7 +2546,7 @@ msgid "Ram Disk"
 msgstr "Ramdisk"
 
 msgid "Random"
-msgstr ""
+msgstr "zufällig"
 
 msgid "Really close without saving settings?"
 msgstr "Änderungen gehen verloren. Wirklich schließen?"
@@ -2501,7 +2567,7 @@ msgid "Really shutdown now?"
 msgstr "Wollen Sie trotzdem ausschalten?"
 
 msgid "Reboot"
-msgstr ""
+msgstr "Neustart"
 
 msgid "Reception Settings"
 msgstr "Empfangseinstellungen"
@@ -2511,7 +2577,7 @@ msgstr "Aufnahme"
 
 #, python-format
 msgid "Record time limited due to conflicting timer %s"
-msgstr ""
+msgstr "Aufnahmezeit aufgrund des in Konflikt stehenden Timers %s begrenzt"
 
 msgid "Recorded files..."
 msgstr "Aufgenommene Dateien..."
@@ -2535,7 +2601,7 @@ msgid "Refresh rate selection."
 msgstr "Auswahl der Bildwiederholungsrate."
 
 msgid "Reload"
-msgstr ""
+msgstr "aktualisieren"
 
 msgid "Remove Bookmark"
 msgstr "Bookmark entfernen"
@@ -2550,7 +2616,7 @@ msgid "Remove currently selected title"
 msgstr "entferne aktuell ausgewählten Titel"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Entfernen abgeschlossen."
 
 msgid "Remove plugins"
 msgstr "Plugins entfernen"
@@ -2562,17 +2628,17 @@ msgid "Remove the incomplete .NFI file?"
 msgstr "entferne inkomplette .NFI Datei?"
 
 msgid "Remove timer"
-msgstr ""
+msgstr "Entferne Timer"
 
 msgid "Remove title"
 msgstr "Titel entfernen"
 
 msgid "Removing"
-msgstr ""
+msgstr "Entfernen"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
-msgstr ""
+msgstr "Entfernen des Verzeichnisses %s fehlgeschlagen. (nicht leer?)"
 
 msgid "Rename"
 msgstr "Umbenennen"
@@ -2622,16 +2688,16 @@ msgid "Restore"
 msgstr "Zurückspielen"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Sicherungen wiederherstellen"
 
 msgid "Restore running"
-msgstr ""
+msgstr "Sicherung läuft"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Sicherung läuft..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Systemeinstellungen wiederherstellen"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2725,6 +2791,9 @@ msgstr "Skalierungsmodus"
 msgid "Scan "
 msgstr "Suche "
 
+msgid "Scan Files..."
+msgstr ""
+
 msgid "Scan QAM128"
 msgstr "Durchsuche QAM128"
 
@@ -2817,6 +2886,9 @@ msgstr ""
 msgid "Select HDD"
 msgstr "Festplattenauswahl"
 
+msgid "Select IPKG source to edit..."
+msgstr ""
+
 msgid "Select Location"
 msgstr "Lokation auswählen"
 
@@ -2836,10 +2908,10 @@ msgid "Select channel to record from"
 msgstr "Kanal auswählen, von dem aufgenommen werden soll"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Zu sichernde Dateien auswählen. Aktuell gewählt:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Dateien/Verzeichnisse zum Sichern auswählen..."
 
 msgid "Select image"
 msgstr "Wähle Image"
@@ -2850,6 +2922,9 @@ msgstr "Wähle Bildwiederholrate"
 msgid "Select video input"
 msgstr "Wähle Video-Eingang"
 
+msgid "Select video input with up/down buttons"
+msgstr ""
+
 msgid "Select video mode"
 msgstr "Wähle Video-Modus"
 
@@ -2938,7 +3013,7 @@ msgid "Show Info"
 msgstr "Zeige Infos"
 
 msgid "Show WLAN Status"
-msgstr "Zeige WLAN Status"
+msgstr "Zeige WLAN-Status"
 
 msgid "Show blinking clock in display during recording"
 msgstr "Blinkende Uhr im Display während Aufnahmen"
@@ -3038,10 +3113,10 @@ msgid "Somewhere else"
 msgstr "Andere Stelle"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Entschuldigung, der MediaScanner ist nicht installiert!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Entschuldigung, keine Sicherungen gefunden!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3056,12 +3131,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Entschuldigung, Ihr Sicherungsverzeichnis ist nicht beschreibbar.\n"
+"Bitte wählen Sie ein anderes."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Entschuldigung, Ihr Sicherungsverzeichnis ist nicht beschreibbar.\n"
+"\n"
+"Bitte wählen Sie ein anderes."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3211,10 +3291,10 @@ msgid "Terrestrial provider"
 msgstr "Region"
 
 msgid "Test DiSEqC settings"
-msgstr ""
+msgstr "Teste DiSEqC Einstellungen"
 
 msgid "Test Type"
-msgstr ""
+msgstr "Testtyp"
 
 msgid "Test mode"
 msgstr "Testmodus"
@@ -3267,6 +3347,9 @@ msgstr ""
 "\n"
 "Soll der USB-Flasher auf diesen Stick installiert werden?"
 
+msgid "The following files were found..."
+msgstr ""
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3303,7 +3386,7 @@ msgstr "Das Paket enthält keine Daten"
 
 #, python-format
 msgid "The path %s already exists."
-msgstr ""
+msgstr "Der Pfad %s existiert bereits."
 
 msgid "The pin code has been changed successfully."
 msgstr "Der Pincode wurde erfolgreich geändert."
@@ -3316,7 +3399,7 @@ msgstr "Die Pincodes unterscheiden sich."
 
 #, python-format
 msgid "The results have been written to %s."
-msgstr ""
+msgstr "Die Ergebnisse des Tests wurden in der Datei %s gespeichert."
 
 msgid "The sleep timer has been activated."
 msgstr "Der Ausschalt-Timer wurde aktiviert"
@@ -3332,6 +3415,8 @@ msgid ""
 "The wireless LAN plugin is not installed!\n"
 "Please install it."
 msgstr ""
+"das Wireless LAN plugin ist nicht installiert!\n"
+"Bitte installieren Sie es."
 
 msgid ""
 "The wizard can backup your current settings. Do you want to do a backup now?"
@@ -3356,6 +3441,9 @@ msgstr ""
 "der gewählten Partition vorhanden ist.\n"
 "Wollen Sie wirklich fortfahren?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr ""
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr ""
@@ -3364,11 +3452,16 @@ 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 ""
+"Diese .NFI Datei besitzt keine md5sum Signatur und es kann nicht "
+"sichergestellt werden, dass sie funktioniert.Wollen Sie die Datei trotzdem "
+"in den Flash-Speicher schreiben?"
 
 msgid ""
 "This .NFI file has a valid md5 signature. Continue programming this image to "
 "flash memory?"
 msgstr ""
+"Diese .NFI Datei besitzt eine gültige md5 Signatur. Wollen Sie mit dem "
+"Beschreiben des Flash-Speichers fortfahren?"
 
 msgid ""
 "This DVD RW medium is already formatted - reformatting will erase all "
@@ -3377,6 +3470,10 @@ msgstr ""
 "Dieses wiederbeschreibbare Medium ist bereits formatiert - durch eine "
 "Neuformatierung wird der gesamte Inhalt gelöscht"
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr ""
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Diese Dreambox kann keine Videos vom Typ %s wiedergeben!"
@@ -3508,7 +3605,7 @@ msgid "Timeshift not possible!"
 msgstr "Timeshift nicht möglich!"
 
 msgid "Timeshift path..."
-msgstr ""
+msgstr "Timeshift Verzeichnis..."
 
 msgid "Timezone"
 msgstr "Zeitzone"
@@ -3580,6 +3677,9 @@ msgstr "Suche benutzte Transponder im Kabel Netzwerk.. bitte warten..."
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr "Suche benutzte Transponder im Kabel Netzwerk.. bitte warten..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr ""
+
 msgid "Tue"
 msgstr "Di"
 
@@ -3614,7 +3714,7 @@ msgid "Two"
 msgstr "Zwei"
 
 msgid "Type"
-msgstr ""
+msgstr "Typ"
 
 msgid "Type of scan"
 msgstr "Art der Suche"
@@ -3629,7 +3729,7 @@ msgid "USB Stick"
 msgstr "USB-Stick"
 
 msgid "USB stick wizard"
-msgstr ""
+msgstr "USB Stick Assistent"
 
 msgid "Ukrainian"
 msgstr ""
@@ -3681,7 +3781,7 @@ msgstr ""
 "dauern."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Upgrade beendet."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Aktualisierung beendet. Möchten Sie Ihre Dreambox nun neu starten?"
@@ -3699,7 +3799,7 @@ msgid "Use DHCP"
 msgstr "Adresse automatisch beziehen (DHCP)"
 
 msgid "Use Interface"
-msgstr "Netwerkadapter aktivieren"
+msgstr "Netzwerkadapter aktivieren"
 
 msgid "Use Power Measurement"
 msgstr "Verwende Stromaufnahmen-Messung"
@@ -3763,7 +3863,7 @@ msgid "VMGM (intro trailer)"
 msgstr ""
 
 msgid "Vertical"
-msgstr ""
+msgstr "Vertikal"
 
 msgid "Video Fine-Tuning"
 msgstr "Video-Feineinstellung"
@@ -3798,9 +3898,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Auswahl des Videomodus."
 
+msgid "View Movies..."
+msgstr ""
+
+msgid "View Photos..."
+msgstr ""
+
 msgid "View Rass interactive..."
 msgstr "Rass Interaktiv anzeigen..."
 
+msgid "View Video CD..."
+msgstr ""
+
 msgid "View teletext..."
 msgstr "Videotext anzeigen..."
 
@@ -3901,12 +4010,18 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Wenn Sie die Werkseinstellungen wiederherstellen, verlieren Sie sämtliche "
+"Konfigurationsdateien\n"
+"(einschließlich Kanalliste, Tuner-Konfiguration...)\n"
+"Nach der Wiederherstellung wird die Dreambox automatisch neu starten\n"
+"\n"
+"Werkseinstellungen wirklich wiederherstellen?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Wohin möchten Sie die Einstellungen sichern?"
 
 msgid "Where to save temporary timeshift recordings?"
-msgstr ""
+msgstr "Wo wollen Sie temporäre Timeshift Aufnahmen speichern?"
 
 msgid "Wireless"
 msgstr "Funk"
@@ -3921,7 +4036,7 @@ msgid "Write failed!"
 msgstr "Schreiben fehlgeschlagen!"
 
 msgid "Writing NFI image file to flash completed"
-msgstr ""
+msgstr "Flash-Schreibvorgang der NFI Image Datei abgeschlossen."
 
 msgid "YPbPr"
 msgstr "YPbPr"
@@ -4026,6 +4141,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Sie haben sich entschieden Ihre Einstellungen zu sichern. Drücken Sie OK um "
+"den Vorgang zu starten."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4079,6 +4196,11 @@ msgstr ""
 "Ihre Sicherung ist geglückt. Die Dreambox wird nun den weiteren "
 "Aktualisierungs-Prozess erklären."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Ihre Dreambox schaltet sich nun aus. Bitte warten Sie einen Moment..."
 
@@ -4108,17 +4230,17 @@ msgstr ""
 "Ihre Netzwerkkonfiguration wurde aktiviert.\n"
 "Ein zweiter konfigurierter Netzwerkadapter wurde gefunden.\n"
 "\n"
-"Wollen Sie den zweiten Netzwerkadapter deaktivieren ?"
+"Wollen Sie den zweiten Netzwerkadapter deaktivieren?"
 
 msgid "Zap back to service before positioner setup?"
 msgstr ""
 "Zurückschalten zum Sender der vor dem\n"
-"Ãffnen der Motor-Einstellungen lief?"
+"Ã\96ffnen der Motor-Einstellungen lief?"
 
 msgid "Zap back to service before satfinder?"
 msgstr ""
 "Zurückschalten zum Sender der vor dem\n"
-"Ãffnen des Satfinders lief?"
+"Ã\96ffnen des Satfinders lief?"
 
 msgid "[alternative edit]"
 msgstr "[Alternativen-Bearbeitung]"
@@ -4226,19 +4348,19 @@ msgid "background image"
 msgstr "Hintergrundbild"
 
 msgid "backgroundcolor"
-msgstr ""
+msgstr "Hintergrundfarbe"
 
 msgid "better"
 msgstr "besser"
 
 msgid "black"
-msgstr ""
+msgstr "schwarz"
 
 msgid "blacklist"
 msgstr "Negativliste"
 
 msgid "blue"
-msgstr ""
+msgstr "blau"
 
 #, python-format
 msgid "burn audio track (%s)"
@@ -4398,10 +4520,10 @@ msgid "exit networkadapter setup menu"
 msgstr ""
 
 msgid "failed"
-msgstr ""
+msgstr "fehlgeschlagen"
 
 msgid "fileformats (BMP, PNG, JPG, GIF)"
-msgstr ""
+msgstr "Dateiformate (BMP, PNG, JPG, GIF"
 
 msgid "filename"
 msgstr "Dateiname"
@@ -4425,7 +4547,7 @@ msgid "go to standby"
 msgstr "schalte in Standby"
 
 msgid "green"
-msgstr ""
+msgstr "grün"
 
 msgid "hear radio..."
 msgstr "Radio hören..."
@@ -4434,7 +4556,7 @@ msgid "help..."
 msgstr "Hilfe..."
 
 msgid "hidden network"
-msgstr ""
+msgstr "verstecktes Netzwerk"
 
 msgid "hide extended description"
 msgstr "erweiterte Beschreibung ausblenden"
@@ -4589,7 +4711,7 @@ msgid "not locked"
 msgstr "Kein Signal"
 
 msgid "not used"
-msgstr ""
+msgstr "nicht verwendet"
 
 msgid "nothing connected"
 msgstr "Nichts angeschlossen"
@@ -4637,10 +4759,10 @@ msgid "play entry"
 msgstr "Eintrag abspielen"
 
 msgid "play from next mark or playlist entry"
-msgstr ""
+msgstr "Wiedergabe ab der nächsten Markierung/Listeneintrag"
 
 msgid "play from previous mark or playlist entry"
-msgstr ""
+msgstr "Wiedergabe ab der letzten Markierung/Listeneintrag"
 
 msgid "please press OK when ready"
 msgstr "Bitte OK drücken wenn bereit"
@@ -4661,7 +4783,7 @@ msgid "recording..."
 msgstr "nimmt auf..."
 
 msgid "red"
-msgstr ""
+msgstr "rot"
 
 msgid "remove a nameserver entry"
 msgstr "DNS Servereintrag entfernen"
@@ -4788,10 +4910,10 @@ msgid "show extended description"
 msgstr "zeige erweiterte Beschreibung"
 
 msgid "show first selected tag"
-msgstr ""
+msgstr "Zeige erstgewähltes tag"
 
 msgid "show second selected tag"
-msgstr ""
+msgstr "Zeige zweitgewähltes tag"
 
 msgid "show shutdown menu"
 msgstr "Ausschaltmenü anzeigen"
@@ -4866,7 +4988,7 @@ msgid "swap PiP and main picture"
 msgstr "Tausche PiP mit Hauptbild"
 
 msgid "switch to bookmarks"
-msgstr ""
+msgstr "gehe zu bookmarks"
 
 msgid "switch to filelist"
 msgstr "In Dateiliste wechseln"
@@ -4875,7 +4997,7 @@ msgid "switch to playlist"
 msgstr "In Wiedergabeliste wechseln"
 
 msgid "switch to the next angle"
-msgstr ""
+msgstr "Zur nächsten Kameraperspektive wechseln"
 
 msgid "switch to the next audio track"
 msgstr "Zum nächsten Audio-Titel wechseln"
@@ -4887,7 +5009,7 @@ msgid "template file"
 msgstr ""
 
 msgid "textcolor"
-msgstr ""
+msgstr "Textfarbe"
 
 msgid "this recording"
 msgstr "Diese Aufnahme"
@@ -4941,7 +5063,7 @@ msgid "working"
 msgstr ""
 
 msgid "yellow"
-msgstr ""
+msgstr "gelb"
 
 msgid "yes"
 msgstr "ja"
@@ -4964,10 +5086,10 @@ msgstr "umgeschaltet"
 
 #~ msgid ""
 #~ "\n"
-#~ "Enigma2 will restart after the restore"
+#~ "System will restart after the restore!"
 #~ msgstr ""
 #~ "\n"
-#~ "Enigma2 wird nach der Wiederherstellung neu starten"
+#~ "Das System wird nach der Wiederherstellung neu starten!"
 
 #~ msgid "AGC:"
 #~ msgstr "AGC:"
@@ -4975,6 +5097,9 @@ msgstr "umgeschaltet"
 #~ msgid "All..."
 #~ msgstr "Alle..."
 
+#~ msgid "An error occured!"
+#~ msgstr "Es ist ein Fehler aufgetreten!"
+
 #~ msgid ""
 #~ "Are you sure you want to enable WLAN support?\n"
 #~ "Connect your Wlan USB Stick to your Dreambox and press OK.\n"
index 0e63744ee87ae59628cfc764eb9c2a61043ebce1..e8cc831417148f1f3aef2e5c9a19e170b940a2ae 100644 (file)
@@ -1828,6 +1828,10 @@ msgstr ""
 msgid "Hierarchy mode"
 msgstr ""
 
+#: ../lib/python/Screens/Ci.py:334
+msgid "High bitrate support"
+msgstr ""
+
 #: ../lib/python/Tools/Transponder.py:31
 msgid "Horizontal"
 msgstr ""
index 8620ab15efb3d6440dfe87f8d3b13bb3c4cd40ad..83d22203c656cea22dc77311a437f6a165a3f34e 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,14 +1,14 @@
-# Spanish translations for tuxbox-enigma package.\r
-# Copyright (C) 2006 THE tuxbox-enigma'S COPYRIGHT HOLDER\r
-# This file is distributed under the same license as the tuxbox-enigma package.\r
-# Automatically generated, 2006.\r
-# \r
+# Spanish translations for tuxbox-enigma package.
+# Copyright (C) 2006 THE tuxbox-enigma'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the tuxbox-enigma package.
+# Automatically generated, 2006.
+#
 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-10 13:13+0100\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-12 14:28+0100\n"
 "Last-Translator: José Juan Zapater <josej@zapater.fdns.net>\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -23,62 +23,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Opciones avanzadas y configuración."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Después de pulsar OK, espere!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Backup de su configuración Dreambox."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Editar la dirección fuente de actualización."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 reiniciará después de la restauración"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Actualización online de su software Dreambox."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Pulse OK en su mando para continuar."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Restaurar su configuración Dreambox."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Restaurar su Dreambox con un nuevo firmware."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Restaurar su backup for fecha."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Buscar paquetes locales e instálalos."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Seleccione su dispositivo de backup.\n"
+"Dispositivo actual:"
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Ver, instalar y eliminar paquetes disponibles o instalados."
 
 msgid " "
 msgstr " "
@@ -423,13 +455,13 @@ msgid "Advanced"
 msgstr "Avanzado"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Opciones avanzadas"
 
 msgid "Advanced Video Setup"
 msgstr "Configuración de video avanzada"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Restauración avanzada"
 
 msgid "After event"
 msgstr "Después del evento"
@@ -462,9 +494,6 @@ msgstr "Prioridad de sintonizadores alternativa"
 msgid "An empty filename is illegal."
 msgstr "Un nombre de fichero vacío es ilegal."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "¡Ocurrió un error desconocido!"
 
@@ -489,11 +518,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Está seguro que quiere restaurar\n"
+"el siguiente backup:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"¿Está seguro que quiere restaurar su backup Enigma2?Enigma2 reiniciará "
+"después de restaurar"
 
 msgid "Artist"
 msgstr "Artista"
@@ -565,22 +598,22 @@ msgid "Backup Mode"
 msgstr "Modo Backup"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Backup hecho."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Backup fallido."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Backup hecho. Pulse OK para ver los resultados."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Ejecutando Backup"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Ejecutando Backup..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Configuración sistema de Backup"
 
 msgid "Band"
 msgstr "Banda"
@@ -718,10 +751,10 @@ msgid "Choose Tuner"
 msgstr "Elije Sintonizador"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Elije ficheros de backup"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Elije localización del backup"
 
 msgid "Choose bouquet"
 msgstr "Elegir lista"
@@ -733,7 +766,7 @@ msgid "Choose target folder"
 msgstr "Elegir carpeta destino"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Elije fuente de actualización"
 
 msgid "Choose your Skin"
 msgstr "Elija su Piel"
@@ -789,6 +822,9 @@ msgstr "Comando DISEqC enviado"
 msgid "Common Interface"
 msgstr "Interface común"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Compact Flash"
 
@@ -801,6 +837,9 @@ msgstr "Completado"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Complejo (permite mexclar pistas de audio y aspectos)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Modo Configuración"
 
@@ -957,7 +996,7 @@ msgid "Description"
 msgstr "Descripción"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Deseleccionar"
 
 msgid "Destination directory"
 msgstr "Directorio destino"
@@ -1095,7 +1134,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "¿Quiere instalar las listas de satélite por defecto?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Quiere instalar el paquete:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Ejecutar el DVD de la unidad?"
@@ -1104,10 +1143,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "¿Quiere prever este DVD antes de grabarlo?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "¿Quiere reiniciar su Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Quiere eliminar el paquete:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "¿Quiere restaurar su configuración?"
@@ -1116,7 +1155,7 @@ msgid "Do you want to resume this playback?"
 msgstr "¿Quiere continuar esta reproducción?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "¿Quiere actualizar su Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1126,7 +1165,7 @@ msgstr ""
 "¡Después de pulsar OK, espere!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Quiere actualizar el paquete:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "¿Quiere ver un tutorial?"
@@ -1144,7 +1183,7 @@ msgstr "Hecho - Instalados o actualizados %d paquetes con %d errores"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
-msgstr ""
+msgstr "Hecho - Instalado, actualizado o eliminados %d paquetes con %d errores"
 
 msgid "Download"
 msgstr "Descargar"
@@ -1195,6 +1234,9 @@ msgstr "Editar"
 msgid "Edit DNS"
 msgstr "Editar DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr "Editar la URL de la fuente IPKG..."
+
 msgid "Edit Title"
 msgstr "Editar Título"
 
@@ -1462,6 +1504,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Puerta de enlace"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Género"
 
@@ -1507,6 +1561,9 @@ msgstr "Información jerárquica"
 msgid "Hierarchy mode"
 msgstr "Modo jerárquico"
 
+msgid "High bitrate support"
+msgstr ""
+
 msgid "Horizontal"
 msgstr "Horizontal"
 
@@ -1602,13 +1659,19 @@ msgid "Input"
 msgstr "Entrada"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Instalar una nueva imagen con un pendrive"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Instalar una nueva imagen con su navegador web"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Instalar un IPKG local"
+
+msgid "Install settings, skins, software..."
+msgstr "Instalar configuración, skins, software..."
+
+msgid "Install software updates..."
+msgstr "Instalar actualización de software..."
 
 msgid "Installing"
 msgstr "Instalando"
@@ -1654,7 +1717,7 @@ msgid "Invert display"
 msgstr "Visualización invertida"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Italiano"
@@ -1703,7 +1766,7 @@ msgid "Latitude"
 msgstr "Latitud"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Letón"
 
 msgid "Leave DVD Player?"
 msgstr "Dejar el Reproductor de DVD?"
@@ -1711,6 +1774,9 @@ msgstr "Dejar el Reproductor de DVD?"
 msgid "Left"
 msgstr "Izda"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Permite ver/editar ficheros en su Dreambox"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1785,7 +1851,7 @@ msgid "Make this mark just a mark"
 msgstr "Hacer una marca normal"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Manejar el software de su receptor"
 
 msgid "Manual Scan"
 msgstr "Búsqueda Manual"
@@ -1982,6 +2048,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "No hay detalles para este fichero de imagen"
 
+msgid "No displayable files on this medium found!"
+msgstr "¡No hay ficheros visualizables en su medio!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "No hay info del evento, grabando indefinidamente."
 
@@ -2160,7 +2229,7 @@ msgid "Packet management"
 msgstr "Manejo de paquete"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Manejador de paquetes"
 
 msgid "Page"
 msgstr "Página"
@@ -2209,6 +2278,12 @@ msgstr "Reproducir"
 msgid "Play Audio-CD..."
 msgstr "Reproducir Audio-CD..."
 
+msgid "Play DVD"
+msgstr "Reproducir DVD"
+
+msgid "Play Music..."
+msgstr "Reproducir Música"
+
 msgid "Play recorded movies..."
 msgstr "Reproducir películas grabadas..."
 
@@ -2299,7 +2374,7 @@ msgid "Please select a subservice..."
 msgstr "Por favor, seleccione un subcanal..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Seleccione medio para usar como localización del backup"
 
 msgid "Please select tag to filter..."
 msgstr "Seleccione una etiqueta para filtrar..."
@@ -2456,6 +2531,9 @@ msgstr "Proveedor a buscar"
 msgid "Providers"
 msgstr "Proveedores"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Frontend Python para /tmp/mmi.socket"
+
 msgid "Quick"
 msgstr "Rápido"
 
@@ -2537,7 +2615,7 @@ msgid "Refresh rate selection."
 msgstr "Selección de velocidad de refresco."
 
 msgid "Reload"
-msgstr ""
+msgstr "Recargar"
 
 msgid "Remove Bookmark"
 msgstr "Borrar Marcador"
@@ -2552,7 +2630,7 @@ msgid "Remove currently selected title"
 msgstr "Borrar el título seleccionado"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Borrado finalizado."
 
 msgid "Remove plugins"
 msgstr "Borrar complmentos"
@@ -2570,7 +2648,7 @@ msgid "Remove title"
 msgstr "Borrar el título"
 
 msgid "Removing"
-msgstr ""
+msgstr "Borrando"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2622,16 +2700,16 @@ msgid "Restore"
 msgstr "Restaurar"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Restaurar backups..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Ejecutando la restauración"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Ejecutando la restauración..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Configuración del sistema de restauración"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2725,6 +2803,9 @@ msgstr "Modo de búsqueda"
 msgid "Scan "
 msgstr "Escanear"
 
+msgid "Scan Files..."
+msgstr "Escanear Ficheros..."
+
 msgid "Scan QAM128"
 msgstr "Escanear QAM128"
 
@@ -2812,11 +2893,14 @@ msgid "Seek"
 msgstr "Posicionar"
 
 msgid "Select"
-msgstr ""
+msgstr "Seleccionar"
 
 msgid "Select HDD"
 msgstr "Seleccionar disco duro"
 
+msgid "Select IPKG source to edit..."
+msgstr "Seleccionar fuente IPKG para editar..."
+
 msgid "Select Location"
 msgstr "Seleccionar Localización"
 
@@ -2836,10 +2920,10 @@ msgid "Select channel to record from"
 msgstr "Seleccione canal a grabar"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Seleccione ficheros para backup. Actualmente seleccionado:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Selecciona ficheros/carpetas para backup..."
 
 msgid "Select image"
 msgstr "Seleccionar imagen"
@@ -2850,6 +2934,9 @@ msgstr "Seleccionar la velocidad de refresco"
 msgid "Select video input"
 msgstr "Seleccionar la entrada de video"
 
+msgid "Select video input with up/down buttons"
+msgstr "Seleccione entrada de vídeo con los botones arriba/abajo"
+
 msgid "Select video mode"
 msgstr "Seleccionar el modo de video"
 
@@ -3020,16 +3107,16 @@ msgid "Slow Motion speeds"
 msgstr "Velocidades lentas"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Manejador de software"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Manejador de software..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Restaurar software"
 
 msgid "Software update"
-msgstr ""
+msgstr "Actualizar software"
 
 msgid "Some plugins are not available:\n"
 msgstr "Algunos complementos no están disponibles:\n"
@@ -3038,10 +3125,10 @@ msgid "Somewhere else"
 msgstr "En alguna parte"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Lo siento, pero MediaScanner no está instalado!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Lo siento, no he encontrado backups!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3056,12 +3143,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Lo siento, pero su destino de backup no es escribible.\n"
+"Elija otro."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Lo siento, pero su destino de backup no es escribible.\n"
+"\n"
+"Elija otro."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3270,6 +3362,9 @@ msgstr ""
 "\n"
 "¿Quiere escribir el USB flasher a esta memoria USB?"
 
+msgid "The following files were found..."
+msgstr "Los siguientes ficheros fueron encontrados..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3365,6 +3460,9 @@ msgstr ""
 "No debe haber suficiente especio en la partición seleccionada.\n"
 "¿Seguro que quiere continuar?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Hay un error descargando la lista de paquetes. Intente de nuevo."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "¡Este fichero .NFI no contiene una imagen válida %s!"
@@ -3390,6 +3488,10 @@ msgstr ""
 "El disco DVD-RW está ya formateado - reformatear borrará todos los "
 "contenidos del disco."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Este Dreambox no puede decodificar %s streams!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "¡Este Dreambox no puede reproducir videos %s!"
@@ -3591,6 +3693,9 @@ msgstr ""
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr "Intenta encontrar los transponders en la red de cable.. espere..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Intentando descargar una nueva lista de paquetes. Espere..."
+
 msgid "Tue"
 msgstr "Mar"
 
@@ -3690,7 +3795,7 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Actualizando... Espere... Esto puede tardar varios minutos..."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Actualización finalizada."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Actualización finalizada. ¿Quiere reiniciar su Dreambox?"
@@ -3808,9 +3913,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Selección de modo de vídeo."
 
+msgid "View Movies..."
+msgstr "Ver Películas..."
+
+msgid "View Photos..."
+msgstr "Ver Fotos..."
+
 msgid "View Rass interactive..."
 msgstr "Ver Rass interactivo..."
 
+msgid "View Video CD..."
+msgstr "Ver Video CD..."
+
 msgid "View teletext..."
 msgstr "Ver teletexto..."
 
@@ -3915,6 +4029,11 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Cuando haga un reseteo de fábrica, perderá todos los datos de configuración\n"
+"(incluyendo listas, canales, datos del satélite...)\n"
+"Después de un reseteo, su receptor se reiniciará automáticamente!\n"
+"\n"
+"¿Quiere hacer un reset de fábrica?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "¿Donde quiere backup su configuración?"
@@ -4038,6 +4157,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Ha elegido hacer un backup de su configuración. Pulse OK para comenzar el "
+"backup ahora."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4050,6 +4171,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Ha elegido restaurar su configuración. Enigma2 reiniciará después de "
+"restaurar. Pulse OK para comenzar a restaurar ahora."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4089,6 +4212,13 @@ msgstr ""
 "El backup ha terminado. Nosotros continuamos explicando el proceso de "
 "actualización."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Su colección exede el tamaño de un medio de capa simple, necesitará un DVD "
+"blanco de doble capa!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Su dreambox está reiniciando. Espere un momento..."
 
@@ -4138,6 +4268,12 @@ msgstr "[editar favoritos]"
 msgid "[move mode]"
 msgstr "[modo mover]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "abortar la edición alternativa"
 
@@ -4153,6 +4289,12 @@ msgstr "sobre comenzar"
 msgid "activate current configuration"
 msgstr "activar configuración actual"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "añadir un servidor de nombres"
 
@@ -4211,6 +4353,12 @@ msgstr ""
 "está seguro que quiere restaurar\n"
 "el siguiente backup:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "format de pista de audio (%s)"
@@ -4298,6 +4446,9 @@ msgstr "diariamente"
 msgid "day"
 msgstr "día"
 
+msgid "delete"
+msgstr "borrar"
+
 msgid "delete cut"
 msgstr "borrar corte"
 
@@ -4471,6 +4622,9 @@ msgstr ""
 msgid "init module"
 msgstr "iniciar módulo"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "insertar marca aquí"
 
@@ -4576,9 +4730,18 @@ msgstr "canal siguiente en historia"
 msgid "no"
 msgstr "no"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "disco no encontrado"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "módulo no encontrado"
 
@@ -4751,6 +4914,9 @@ msgstr "seleccionar"
 msgid "select .NFI flash file"
 msgstr "seleccione fichero flash .NFI"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "seleccione imagen desde el servidor"
 
@@ -4968,12 +5134,15 @@ msgstr "zapear"
 msgid "zapped"
 msgstr "zapeado"
 
+#~ msgid "\n"
+#~ msgstr "\n"
+
 #~ msgid ""
 #~ "\n"
-#~ "Enigma2 will restart after the restore"
+#~ "System will restart after the restore!"
 #~ msgstr ""
 #~ "\n"
-#~ "Enigma2 reiniciará después de la restauración"
+#~ "El sistema reiniciará después de restaurar!"
 
 #~ msgid "\"?"
 #~ msgstr "\"?"
@@ -5397,9 +5566,6 @@ msgstr "zapeado"
 #~ msgid "color"
 #~ msgstr "color"
 
-#~ msgid "delete"
-#~ msgstr "borrar"
-
 #~ msgid "empty/unknown"
 #~ msgstr "vacío/desconocido"
 
index e9ddd376e63a625bf12c7a32016acdcb5a7eb071..e5691dfe78f0c096cbfde8167ec8df1e0fdfce96 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -1,11 +1,11 @@
-# Signed-off.by: Dario Croci <spaeleus@croci.org>
+# Signed-off-by: Dario Croci <spaeleus@croci.org>
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: enigma2 Italian Locale\n"
+"Project-Id-Version: enigma2 v2.6 Italian Locale\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-16 00:05+0100\n"
-"PO-Revision-Date: 2009-02-15 18:29+0100\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-24 07:22+0100\n"
 "Last-Translator: Spaeleus <spaeleus@croci.org>\n"
 "Language-Team: WWW.LINSAT.NET <spaeleus@croci.org>\n"
 "MIME-Version: 1.0\n"
@@ -44,6 +44,13 @@ msgstr ""
 "\n"
 "Modificare indirizzo sorgenti aggiornamento."
 
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 sarà riavviato dopo il ripristino!"
+
 msgid ""
 "\n"
 "Online update of your Dreambox software."
@@ -181,7 +188,7 @@ msgid "* Only available when entering hidden SSID or network key"
 msgstr "* Disponibile solo su inserimento SSID nascosto o chiave di rete"
 
 msgid ".NFI Download failed:"
-msgstr "Scaricamento .nfi fallito:"
+msgstr "Download .nfi fallito:"
 
 msgid ""
 ".NFI file passed md5sum signature check. You can safely flash this image!"
@@ -438,7 +445,7 @@ msgstr ""
 "numerici per accedere alle altre schermate."
 
 msgid "Advanced"
-msgstr ""
+msgstr "Avanzato"
 
 msgid "Advanced Options"
 msgstr "Opzioni avanzate"
@@ -480,9 +487,6 @@ msgstr "Priorità Tuner"
 msgid "An empty filename is illegal."
 msgstr "Nome di file vuoto: non consentito!"
 
-msgid "An error occured!"
-msgstr "Si è verificato un errore!"
-
 msgid "An unknown error occured!"
 msgstr "Si è verificato un errore sconosciuto!"
 
@@ -581,10 +585,10 @@ msgid "Backup"
 msgstr "Backup"
 
 msgid "Backup Location"
-msgstr ""
+msgstr "Destinazione backup"
 
 msgid "Backup Mode"
-msgstr ""
+msgstr "Modalità Backup"
 
 msgid "Backup done."
 msgstr "Backup eseguito."
@@ -667,7 +671,7 @@ msgid "Cable"
 msgstr "Cavo"
 
 msgid "Cache Thumbnails"
-msgstr "Cache Miniature"
+msgstr "\"Cache\" Miniature"
 
 msgid "Call monitoring"
 msgstr "Controllo chiamata"
@@ -748,7 +752,7 @@ msgid "Choose bouquet"
 msgstr "Selezionare il bouquet"
 
 msgid "Choose source"
-msgstr ""
+msgstr "Selezionare Origine"
 
 msgid "Choose target folder"
 msgstr "Cartella destinazione"
@@ -808,7 +812,10 @@ msgid "Committed DiSEqC command"
 msgstr "Comando DiSEqC 'Committed'"
 
 msgid "Common Interface"
-msgstr "Common Interface"
+msgstr "\"Common Interface\""
+
+msgid "Common Interface Assignment"
+msgstr "Assegnazione \"Common Interface\""
 
 msgid "Compact Flash"
 msgstr "Compact Flash"
@@ -822,6 +829,9 @@ msgstr "Completo"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Complessa (permette mix tracce audio e aspetti)"
 
+msgid "Config"
+msgstr "Configurazione"
+
 msgid "Configuration Mode"
 msgstr "Configurazione"
 
@@ -1097,6 +1107,8 @@ msgid ""
 "Do you want to backup now?\n"
 "After pressing OK, please wait!"
 msgstr ""
+"Effettuare il Backup ora?\n"
+"Premere OK e attendere!"
 
 msgid "Do you want to burn this collection to DVD medium?"
 msgstr "Masterizzare la raccolta su supporto DVD?"
@@ -1159,7 +1171,7 @@ msgstr "Fatto! Installati o aggiornati %d pacchetti"
 
 #, python-format
 msgid "Done - Installed or upgraded %d packages with %d errors"
-msgstr ""
+msgstr "Fatto! Installati o aggiornati %d pacchetti con %d errori"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
@@ -1169,13 +1181,13 @@ msgid "Download"
 msgstr "Download"
 
 msgid "Download .NFI-Files for USB-Flasher"
-msgstr "Scaricare file .nfi per Flasher USB"
+msgstr "Download file .nfi per Flasher USB"
 
 msgid "Download Plugins"
-msgstr "Scaricare Plugin"
+msgstr "Download Plugin"
 
 msgid "Download of USB flasher boot image failed: "
-msgstr "Scaricamento immagine di avvio Flasher USB fallito: "
+msgstr "Download immagine di avvio Flasher USB fallito: "
 
 msgid "Downloadable new plugins"
 msgstr "Nuovi plugin scaricabili"
@@ -1214,6 +1226,9 @@ msgstr "Modif."
 msgid "Edit DNS"
 msgstr "Mod. DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr "Modificare URL sorgenti IPKG"
+
 msgid "Edit Title"
 msgstr "Mod. Titolo"
 
@@ -1480,6 +1495,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Gateway"
 
+msgid "General AC3 Delay"
+msgstr "Ritardo Generale AC3"
+
+msgid "General AC3 delay"
+msgstr "Ritardo Generale AC3"
+
+msgid "General PCM Delay"
+msgstr "Ritardo Generale PCM"
+
+msgid "General PCM delay"
+msgstr "Ritardo Generale PCM"
+
 msgid "Genre"
 msgstr "Genere"
 
@@ -1525,6 +1552,9 @@ msgstr "Informazioni gerarchia"
 msgid "Hierarchy mode"
 msgstr "Modalità gerarchica"
 
+msgid "High bitrate support"
+msgstr "Supporto \"Hight bitrate\""
+
 msgid "Horizontal"
 msgstr "Orizzontale"
 
@@ -1631,6 +1661,12 @@ msgstr "Installare nuova immagine tramite web browser"
 msgid "Install local IPKG"
 msgstr "Installare IPKG locale"
 
+msgid "Install settings, skins, software..."
+msgstr "Installazione Setting, Skin, Software..."
+
+msgid "Install software updates..."
+msgstr "Installazione Aggiornamenti Software..."
+
 msgid "Installing"
 msgstr "Installazione in corso"
 
@@ -1724,7 +1760,7 @@ msgid "Latitude"
 msgstr "Latitudine"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Lettone"
 
 msgid "Leave DVD Player?"
 msgstr "Uscire dal Player DVD?"
@@ -1732,6 +1768,9 @@ msgstr "Uscire dal Player DVD?"
 msgid "Left"
 msgstr "Sinistro"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Vedere/Modificare File sul Dreambox"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -2002,6 +2041,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Nessun dettaglio disponibile per questo file"
 
+msgid "No displayable files on this medium found!"
+msgstr "Nessun File riproducibile Trovato sul Supporto!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "Nessuna informazione sull'evento, registrazione illimitata."
 
@@ -2227,6 +2269,12 @@ msgstr "Play"
 msgid "Play Audio-CD..."
 msgstr "Rirodurre CD Audio..."
 
+msgid "Play DVD"
+msgstr "Riprodurre DVD"
+
+msgid "Play Music..."
+msgstr "Riprodurre Musica..."
+
 msgid "Play recorded movies..."
 msgstr "Riprodurre Registrazioni"
 
@@ -2476,6 +2524,9 @@ msgstr "Provider su cui cercare"
 msgid "Providers"
 msgstr "Provider"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "\"Frontend\" Python per /tmp/mmi.socket"
+
 msgid "Quick"
 msgstr "Veloce"
 
@@ -2739,11 +2790,14 @@ msgid "Save Playlist"
 msgstr "Salvare la playlist"
 
 msgid "Scaling Mode"
-msgstr "Modalità scaling"
+msgstr "Modalità \"Scaling\""
 
 msgid "Scan "
 msgstr "Ricerca"
 
+msgid "Scan Files..."
+msgstr "Ricercare File..."
+
 msgid "Scan QAM128"
 msgstr "Ricerca su QAM128"
 
@@ -2838,6 +2892,9 @@ msgstr "Selezionare"
 msgid "Select HDD"
 msgstr "Selezionare HDD"
 
+msgid "Select IPKG source to edit..."
+msgstr "Selezionare una sorgente IPKG da modificare"
+
 msgid "Select Location"
 msgstr "Selezionare destinazione"
 
@@ -2871,6 +2928,9 @@ msgstr "Selezionare la frequenza di refresh"
 msgid "Select video input"
 msgstr "Selezionare l'ingresso video"
 
+msgid "Select video input with up/down buttons"
+msgstr "Selezionare l'ingresso video con i tasti Sù/Giù"
+
 msgid "Select video mode"
 msgstr "Selezionare la modalità video"
 
@@ -3028,7 +3088,7 @@ msgid "Sleep timer action:"
 msgstr "Azione: "
 
 msgid "Slideshow Interval (sec.)"
-msgstr "Intevallo presentazione (sec.)"
+msgstr "Intevallo \"Slideshow\" (sec.)"
 
 #, python-format
 msgid "Slot %d"
@@ -3069,6 +3129,9 @@ msgid ""
 "\n"
 "Please choose an other one."
 msgstr ""
+"Destinazione backup inesistente!\n"
+"\n"
+"Selezionarne un'altra!"
 
 msgid ""
 "Sorry your backup destination is not writeable.\n"
@@ -3212,7 +3275,7 @@ msgstr ""
 "enigma2 - Dreambox\n"
 "Dario Croci - www.linsat.net\n"
 "Supporto: spaeleus@croci.org.\n"
-"- 15 febbraio 2009 -"
+"- 24 marzo 2009 -"
 
 msgid "TS file is too large for ISO9660 level 1!"
 msgstr "File TS troppo grande per ISO9660 livello 1!"
@@ -3292,6 +3355,9 @@ msgstr ""
 "\n"
 "Installare il flasher USB su questa penna?"
 
+msgid "The following files were found..."
+msgstr "Trovati i seguenti File..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3384,6 +3450,9 @@ msgstr ""
 "Potrebbe non esserci spazio sufficiente sulla partizione prescelta.\n"
 "Continuare comunque?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Errore in download lista pacchetti! Riprovare."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Il file .nfi non contiene un'immagine %s valida!"
@@ -3409,6 +3478,10 @@ msgstr ""
 "Il DVD-RW è già formattato - una nuova formattazione cancellerà tutto il "
 "contenuto del disco!"
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Impossibile decodificare Flussi Video %s!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Impossibile decodificare il flusso video %s!"
@@ -3612,6 +3685,9 @@ msgstr "Ricerca dei transponder utilizzati sulla rete via cavo... Attendere."
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr "Ricerca dei transponder utilizzati sulla rete via cavo... Attendere."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Tentativo download nuova lista pacchetti. Attendere"
+
 msgid "Tue"
 msgstr "Mar"
 
@@ -3702,7 +3778,7 @@ msgid "Update"
 msgstr "Aggiornare"
 
 msgid "Updates your receiver's software"
-msgstr ""
+msgstr "Aggiornare il software del ricevitore"
 
 msgid "Updating finished. Here is the result:"
 msgstr "Aggiornamento terminato. Esito:"
@@ -3714,7 +3790,7 @@ msgid "Upgrade finished."
 msgstr "Aggiornamento terminato!"
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Aggiornamento terminato. Riavviare il DreamBox?"
 
 msgid "Upgrading"
 msgstr "Aggiornamento in corso"
@@ -3828,9 +3904,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Selezione modalità video"
 
+msgid "View Movies..."
+msgstr "Riprodurre Registrazioni..."
+
+msgid "View Photos..."
+msgstr "Visualizzare Foto..."
+
 msgid "View Rass interactive..."
 msgstr "Rass interattivi"
 
+msgid "View Video CD..."
+msgstr "Riprodurre CD Video"
+
 msgid "View teletext..."
 msgstr "Televideo"
 
@@ -4057,6 +4142,7 @@ msgid ""
 "You have chosen to backup to your harddisk. Please press OK to start the "
 "backup now."
 msgstr ""
+"Si  scelto di effettuare un backup su harddisk. Premere OK per iniziare ora."
 
 msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
@@ -4116,6 +4202,13 @@ msgid ""
 msgstr ""
 "Backup eseguito con successo! Ora proseguirà il processo di aggiornamento."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"La Collezione supera la capacità di un disco Singolo Strato. Sarà necessario "
+"utilizzare un DVD vergine Doppio Strato!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Il DreamBox si sta arrestando. Attendere..."
 
@@ -4169,6 +4262,12 @@ msgstr "[edit preferiti ]"
 msgid "[move mode]"
 msgstr "[modalità muovere]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr "Assegnazione Canali/Provider a moduli \"Common Interface\""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr "Assegnazione Canali/Provider/CAIDs a moduli \"Common Interface\""
+
 msgid "abort alternatives edit"
 msgstr "Annullare edit alternative"
 
@@ -4184,6 +4283,12 @@ msgstr "Avvio in corso"
 msgid "activate current configuration"
 msgstr "Attivare configurazione corrente"
 
+msgid "add Provider"
+msgstr "Agg. Provider"
+
+msgid "add Service"
+msgstr "Agg. Canale"
+
 msgid "add a nameserver entry"
 msgstr "Aggiungere voce Nameserver"
 
@@ -4239,6 +4344,14 @@ msgid ""
 "are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Ripristinare\n"
+"il seguente Backup?\n"
+
+msgid "assigned CAIds"
+msgstr "CAIds assegnati"
+
+msgid "assigned Services/Provider"
+msgstr "Canali/Provider Assegnati"
 
 #, python-format
 msgid "audio track (%s) format"
@@ -4258,10 +4371,10 @@ msgid "back"
 msgstr "Indietro"
 
 msgid "background image"
-msgstr "immagine di sfondo"
+msgstr "Immagine di sfondo"
 
 msgid "backgroundcolor"
-msgstr "Colore di sfondo"
+msgstr "Colore sfondo"
 
 msgid "better"
 msgstr "Migliore"
@@ -4327,6 +4440,9 @@ msgstr "Giornaliero"
 msgid "day"
 msgstr "Giorno"
 
+msgid "delete"
+msgstr "Cancellare"
+
 msgid "delete cut"
 msgstr "Cancellare taglio"
 
@@ -4436,10 +4552,10 @@ msgid "failed"
 msgstr "Fallito"
 
 msgid "fileformats (BMP, PNG, JPG, GIF)"
-msgstr "Formati file (BMP, PNG, JPG, GIF)"
+msgstr "Formati File (BMP, PNG, JPG, GIF)"
 
 msgid "filename"
-msgstr "Nome file"
+msgstr "Nome File"
 
 msgid "fine-tune your display"
 msgstr "Regolazione fine schermo"
@@ -4500,6 +4616,9 @@ msgstr ""
 msgid "init module"
 msgstr "Inizializzazione modulo"
 
+msgid "init modules"
+msgstr "Init Moduli"
+
 msgid "insert mark here"
 msgstr "Inserire contrassegno"
 
@@ -4605,9 +4724,18 @@ msgstr "Canale successivo nella history"
 msgid "no"
 msgstr "No"
 
+msgid "no CAId selected"
+msgstr "Nessun CAId selezionato!"
+
+msgid "no CI slots found"
+msgstr "Nessun Slot CI trovato!"
+
 msgid "no HDD found"
 msgstr "Nessun HDD trovato!"
 
+msgid "no module"
+msgstr "Nessun Modulo"
+
 msgid "no module found"
 msgstr "Nessun modulo trovato!"
 
@@ -4780,6 +4908,9 @@ msgstr "Selezionare"
 msgid "select .NFI flash file"
 msgstr "Selezionare il file flash .nfi"
 
+msgid "select CAId"
+msgstr "Selezionare CAId"
+
 msgid "select image from server"
 msgstr "Selezionare immagine dal server"
 
@@ -4808,7 +4939,7 @@ msgid "show EPG..."
 msgstr "EPG"
 
 msgid "show Infoline"
-msgstr "Mostrare Informazioni"
+msgstr "Mostrare Info"
 
 msgid "show all"
 msgstr "Mostrare tutto"
@@ -4862,7 +4993,7 @@ msgid "skip forward (enter time)"
 msgstr "Skip avanti (inserire intervallo)"
 
 msgid "slide picture in loop"
-msgstr "Scorrere immagini in loop"
+msgstr "Riproduzione Continua"
 
 msgid "sort by date"
 msgstr "Ordine per data"
@@ -4922,7 +5053,7 @@ msgid "template file"
 msgstr "File modello"
 
 msgid "textcolor"
-msgstr "Colore testo"
+msgstr "Colore Testo"
 
 msgid "this recording"
 msgstr "Questa registrazione"
@@ -5007,101 +5138,5 @@ msgstr "Zapped"
 #~ "\n"
 #~ "Il Sistema sarà riavviato dopo il ripristino!"
 
-#~ msgid ".NFI Flasher bootable USB stick successfully created."
-#~ msgstr "Creazione penna USB per Flasher .nfi terminata con successo"
-
-#~ msgid "AGC"
-#~ msgstr "AGC"
-
-#~ msgid "AGC:"
-#~ msgstr "AGC:"
-
-#~ msgid "Copying USB flasher boot image to stick..."
-#~ msgstr "Copia immagine di avvio Flasher USB in corso..."
-
-#~ msgid "Decompressing USB stick flasher boot image..."
-#~ msgstr "Decompressione immagine di avvio USB Flasher in corso..."
-
-#~ msgid "Downloading image description..."
-#~ msgstr "Scaricamento descrizione immagine in corso..."
-
-#~ msgid "Fix USB stick"
-#~ msgstr "Conf. Penna"
-
-#~ msgid "Font size"
-#~ msgstr "Dim. Carattere"
-
-#~ msgid ""
-#~ "Now please insert the USB stick (minimum size is 64 MB) that you want to "
-#~ "format and use as .NFI image flasher. Press OK after you've put the stick "
-#~ "back in."
-#~ msgstr ""
-#~ "Ora inserire la penna USB (min. 64 MB) che sarà formattata per essere "
-#~ "utilizzata come flasher di immagini .nfi. Premere OK dopo aver inserito "
-#~ "la penna."
-
-#~ msgid "Partitioning USB stick..."
-#~ msgstr "Partizione penna USB in corso..."
-
-#~ msgid "Please wait for md5 signature verification..."
-#~ msgstr "Attendere la verifica della firma md5..."
-
-#~ msgid "Really delete this timer?"
-#~ msgstr "Cancellare questo timer?"
-
-#~ msgid "Remounting stick partition..."
-#~ msgstr "\"Remount\" partizione penna in corso..."
-
-#~ msgid ""
-#~ "The .NFI Image flasher USB stick is now ready to use. Please download an ."
-#~ "NFI image file from the feed server and save it on the stick. Then reboot "
-#~ "and hold the 'Down' key on the front panel to boot the .NFI flasher from "
-#~ "the stick!"
-#~ msgstr "La penna USB - Flasher Immagini .nfi è pronta per l'uso. Scaricare "
-
-#~ msgid "Title:"
-#~ msgstr "Titolo:"
-
-#~ msgid ""
-#~ "To make sure you intend to do this, please remove the target USB stick "
-#~ "now and stick it back in upon prompt. Press OK when you have taken the "
-#~ "stick out."
-#~ msgstr ""
-#~ "Ora, per maggiore sicurezza, rimuovere la penna USB e ricollegarla solo "
-#~ "quando verrà richiesto. Premere OK dopo aver rimosso la penna."
-
-#~ msgid "Waiting for USB stick to settle..."
-#~ msgstr "Configurazione penna USB in corso..."
-
-#~ msgid "Writing image file to NAND Flash"
-#~ msgstr "Scrittura file immagine su Flash NAND"
-
-#~ msgid "by Exif"
-#~ msgstr "by Exif"
-
-#~ msgid "color"
-#~ msgstr "colore"
-
-#~ msgid "font face"
-#~ msgstr "Carattere"
-
-#~ msgid "headline"
-#~ msgstr "Intest."
-
-#~ msgid "highlighted button"
-#~ msgstr "Puls. evidenziato"
-
-#~ msgid "no Picture found"
-#~ msgstr "Nessuna immagine trovata!"
-
-#~ msgid "rebooting..."
-#~ msgstr "Riavvio in corso..."
-
-#~ msgid "spaces (top, between rows, left)"
-#~ msgstr "Margini (alto, tra le righe, sinistro)"
-
-#~ msgid "text"
-#~ msgstr "Testo"
-
-#~ msgid "year"
-#~ msgstr "Anno"
+#~ msgid "An error occured!"
+#~ msgstr "Si è verificato un errore!"
index 1f7994f58951ed04ae11443e6bb6ebb812c0fab8..9cb7900ab216e463fbae2ffc9d02c19be5d13775 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -2,8 +2,8 @@ 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: 2008-11-25 00:26+0200\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-08 14:06+0200\n"
 "Last-Translator: Audronis, Grincevicius <audrgrin@takas.lt>\n"
 "Language-Team: Adga / enigma2 (c) <audrgrin@takas.lt>\n"
 "MIME-Version: 1.0\n"
@@ -17,62 +17,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Išplėstiniai pasirinkimai ir nustatymai."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Paspaudus OK, prašome laukti!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Jūsų Dreambox nustatymų atsarginė kopija."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Redaguoti atnaujinimo šaltinio adresą."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 pasileis iš naujo po atkūrimo"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Internetinis jūsų Dreambox programinės įrangos atnaujinimas."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Spauskite OK ant jūsų distancinio valdymo pulto, kad tęsti."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Atkurti jūsų Dreambox nustatymus."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Atkurti jūsų Dreambox su nauja programine įranga."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Atkurti jūsų atsarginę kopiją pagal datą."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Skanuoti vietinius paketus ir įdiegti juos."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Pasirinkite jūsų atsarginės kopijos įrenginį.\n"
+"Dabartinis įrenginys: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Peržiūrėkite, įdiekite ir pašalinkite esamus arba įdiegtus paketus."
 
 msgid " "
 msgstr " "
@@ -340,7 +372,7 @@ msgid ""
 "Disable TV and try again?\n"
 msgstr ""
 "Laikmatis nutraukė įrašymą!\n"
-"Atjungti TV ir pakartoti iš pradžių?\n"
+"jungti TV ir pakartoti iš pradžių?\n"
 
 msgid "A/V Settings"
 msgstr "Garso ir vaizdo nustatymai"
@@ -418,13 +450,13 @@ msgid "Advanced"
 msgstr "Išplėstinis"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Papildomi nustatymai"
 
 msgid "Advanced Video Setup"
 msgstr "Išplėstiniai vaizdo nustatymai"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Papildomas atkūrimas"
 
 msgid "After event"
 msgstr "Po įvykio"
@@ -457,9 +489,6 @@ msgstr "Kitų kanalų imtuvo pirmenybė"
 msgid "An empty filename is illegal."
 msgstr "Tuščias failo pavadinimas negalimas"
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Įvyko nežinoma klaida!"
 
@@ -484,11 +513,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Ar jūs tikrai, norite atkurti\n"
+"atsarginę kopiją:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Jūs esate įsitikinęs, kad norite atkurti savo Enigma2 atsarginę kopiją?\n"
+"Enigma2 iš naujo pasileis po atkūrimo"
 
 msgid "Artist"
 msgstr "Atlikėjas"
@@ -560,22 +593,22 @@ msgid "Backup Mode"
 msgstr "Išsaugojimo būdas"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Atsarginė kopija padaryta."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Atsarginė kopija nepavyko."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Išsaugota. Prašome paspausti OK rezultato peržiūrai."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Atsarginė kopija vykdoma"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Atsarginė kopija vykdoma..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Atsarginė sisteminių nustatymų kopija"
 
 msgid "Band"
 msgstr "Juosta"
@@ -649,7 +682,7 @@ msgid "Cancel"
 msgstr "Atšaukti"
 
 msgid "Cannot parse feed directory"
-msgstr "Negali rasti perdavimo direktorijos"
+msgstr "Negalima nagrinėti serverio direktorijos"
 
 msgid "Capacity: "
 msgstr "Talpa: "
@@ -673,7 +706,7 @@ msgid "Change service pin"
 msgstr "Pakeisti kanalo PIN"
 
 msgid "Change service pins"
-msgstr "Pakeisti kanalo pins"
+msgstr "Pakeisti kanalo pin'us"
 
 msgid "Change setup pin"
 msgstr "Pakeisti nustatymų PIN"
@@ -685,7 +718,7 @@ msgid "Channel Selection"
 msgstr "Kanalo pasirinkimas"
 
 msgid "Channel not in services list"
-msgstr ""
+msgstr "Kanalo nėra kanalų sąraše"
 
 msgid "Channel:"
 msgstr "Kanalas:"
@@ -712,10 +745,10 @@ msgid "Choose Tuner"
 msgstr "Išsirinkite imtuvą"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Pasirinkite atsarginės kopijos failus"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Pasirinkite atsarginės kopijos vietą"
 
 msgid "Choose bouquet"
 msgstr "Išsirinkite paketą"
@@ -727,16 +760,16 @@ msgid "Choose target folder"
 msgstr "Išsirinkite aplanką"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Pasirinkite atnaujinimo šaltinį"
 
 msgid "Choose your Skin"
 msgstr "Išsirinkite savo temą"
 
 msgid "Circular left"
-msgstr ""
+msgstr "Apskritiminė kairė"
 
 msgid "Circular right"
-msgstr ""
+msgstr "Apskritiminė dešinė"
 
 msgid "Cleanup"
 msgstr "Išvalyti"
@@ -783,6 +816,9 @@ msgstr "DiSEqC perjungimo komanda"
 msgid "Common Interface"
 msgstr "Įstatomi moduliai"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Kompaktinė atmintinė"
 
@@ -795,6 +831,9 @@ msgstr "Įvykdyta"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Kompleksas (leidžia sumaišyti garso takelius ir aspektus),"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Konfigūravimo būdas"
 
@@ -846,7 +885,7 @@ msgstr "Negalima užkrauti! Joks diskas neįdėtas?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
-msgstr ""
+msgstr "Neįrašyta dėl prieštaringo laikmačio %s"
 
 msgid "Create DVD-ISO"
 msgstr "Sukurti DVD-ISO"
@@ -883,7 +922,7 @@ msgid "Custom skip time for '7'/'9'-keys"
 msgstr "Praleisti laiką pasirinktinai '7'/'9'-mygtukams"
 
 msgid "Customize"
-msgstr "Vartotojo nustatymai"
+msgstr "Vartotojo pasirinkimai"
 
 msgid "Cut"
 msgstr "Iškirpti"
@@ -916,13 +955,13 @@ msgid "Danish"
 msgstr "Danų"
 
 msgid "Date"
-msgstr "Duomenys"
+msgstr "Data"
 
 msgid "Deep Standby"
 msgstr "Visiškai išjungti"
 
 msgid "Default services lists"
-msgstr "Nustatytas kanalų sąrašas"
+msgstr "Numatytas kanalų sąrašas"
 
 msgid "Default settings"
 msgstr "Numatyti nustatymai"
@@ -937,21 +976,21 @@ msgid "Delete entry"
 msgstr "Pašalinti "
 
 msgid "Delete failed!"
-msgstr "Pašalinimas klaidingas!"
+msgstr "Trinimas klaidingas!"
 
 #, python-format
 msgid ""
 "Delete no more configured satellite\n"
 "%s?"
 msgstr ""
-"Pašalinti nesukonfigūruotą palydovą \n"
+"Trinti nesukonfigūruotą palydovą \n"
 " %s?"
 
 msgid "Description"
 msgstr "Aprašymas"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Nepasirinkti"
 
 msgid "Destination directory"
 msgstr "Direktorijos vieta"
@@ -972,7 +1011,7 @@ msgid "DiSEqC A/B/C/D"
 msgstr "DiSEqC A/B/C/D"
 
 msgid "DiSEqC mode"
-msgstr "DiSEqC pasirinkimas"
+msgstr "DiSEqC būdas"
 
 msgid "DiSEqC repeats"
 msgstr "DiSEqC pakartojimai"
@@ -1019,10 +1058,10 @@ msgid "Display 4:3 content as"
 msgstr "Rodyti kaip 4:3 "
 
 msgid "Display >16:9 content as"
-msgstr ""
+msgstr "Monitorius >16:9 turinys kaip"
 
 msgid "Display Setup"
-msgstr "Monitoriaus nustatymas"
+msgstr "Monitoriaus parametrai"
 
 #, python-format
 msgid ""
@@ -1089,7 +1128,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Jūs norite įdiegti numatytus palydovų sąrašus?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Jūs norite įdiegti package:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Jūs norite paleisti DVD?"
@@ -1098,10 +1137,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Jūs norite peržiūrėti šį DVD prieš išdeginimą?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Jūs norite perjungti savo Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Jūs norite pašalinti paketą:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Jūs norite atkurti nustatymus?"
@@ -1110,7 +1149,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Jūs norite tęsti šį atkūrimą?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Jūs norite atnaujinti savo Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1120,7 +1159,7 @@ msgstr ""
 "Spauskite OK ir palaukite!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Jūs norite atnaujinti paketą:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Ar norite peržiūrėti aprašymą?"
@@ -1138,7 +1177,7 @@ msgstr "Baigta - Įdiegta arba atnaujinta %d paketų su %d klaidomis"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
-msgstr ""
+msgstr "Baigta - Įdiegti, patobulinti ar pašalinti %d paketai su %d klaidomis"
 
 msgid "Download"
 msgstr "Parsisiuntimas"
@@ -1189,6 +1228,9 @@ msgstr "Redaguoti"
 msgid "Edit DNS"
 msgstr "Redaguoti DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr ""
+
 msgid "Edit Title"
 msgstr "Redaguoti pavadinimą"
 
@@ -1279,10 +1321,10 @@ msgid "Enter Rewind at speed"
 msgstr "Eiti į greitą atsukimą "
 
 msgid "Enter WLAN network name/SSID:"
-msgstr "Įveskite WLAN tinklo pavadinimą/SSID:"
+msgstr "Įrašykite WLAN tinklo pavadinimą/SSID:"
 
 msgid "Enter WLAN passphrase/key:"
-msgstr "Įveskite WLAN leidimo frazę/raktą:"
+msgstr "Įrašykite WLAN leidimo frazę/raktą:"
 
 msgid "Enter main menu..."
 msgstr "Eiti į pagrindinį meniu..."
@@ -1429,7 +1471,7 @@ msgid "Friday"
 msgstr "Penktadienis"
 
 msgid "Frisian"
-msgstr ""
+msgstr "Frizų"
 
 msgid "Fritz!Box FON IP address"
 msgstr "Fritz!Box FON IP adresas"
@@ -1454,6 +1496,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Šliuzas"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Žanras"
 
@@ -1499,9 +1553,12 @@ msgstr "Hierarchijos informacija"
 msgid "Hierarchy mode"
 msgstr "Hierarchijos režimas"
 
-msgid "Horizontal"
+msgid "High bitrate support"
 msgstr ""
 
+msgid "Horizontal"
+msgstr "Horizontalus"
+
 msgid "How many minutes do you want to record?"
 msgstr "Kiek minučių norite daryti įrašą?"
 
@@ -1598,13 +1655,19 @@ msgid "Input"
 msgstr "Įėjimas"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Įdiekite naują atvaizdą su USB įrenginiu"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Įdiekite naują atvaizdą su savo tinklo naršykle"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Įdiekite vietinį IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr "Įdiekite nustatymus, temas, programinę įrangą..."
+
+msgid "Install software updates..."
+msgstr "Įdiekite programinius atnaujinimus..."
 
 msgid "Installing"
 msgstr "Įdiegiama"
@@ -1650,7 +1713,7 @@ msgid "Invert display"
 msgstr "Monitoriaus pervertimas"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Italų"
@@ -1699,7 +1762,7 @@ msgid "Latitude"
 msgstr "Platuma"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Latvių"
 
 msgid "Leave DVD Player?"
 msgstr "Išeiti iš DVD grotuvo?"
@@ -1707,6 +1770,9 @@ msgstr "Išeiti iš DVD grotuvo?"
 msgid "Left"
 msgstr "Kairė"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Leidžia jums žiūrėti/redaguoti failus jūsų Dreambox'e"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1751,7 +1817,7 @@ msgid "Lock:"
 msgstr "Lock:"
 
 msgid "Log results to harddisk"
-msgstr ""
+msgstr "Log rezultatus į kietą diską"
 
 msgid "Long Keypress"
 msgstr "Ilgas mygtuko spaudimas"
@@ -1781,7 +1847,7 @@ msgid "Make this mark just a mark"
 msgstr "Padarykite šį žymeklį kaip žymekliu"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Valdykite savo imtuvo programinę įrangą"
 
 msgid "Manual Scan"
 msgstr "Rankinė paieška"
@@ -1790,7 +1856,7 @@ msgid "Manual transponder"
 msgstr "Rankinis transponderis"
 
 msgid "Manufacturer"
-msgstr ""
+msgstr "Gamintojas"
 
 msgid "Margin after record"
 msgstr "Sujungti po įrašymo"
@@ -1817,7 +1883,7 @@ msgid "Message"
 msgstr "Pranešimas"
 
 msgid "Message..."
-msgstr ""
+msgstr "Žinutė..."
 
 msgid "Mkfs failed"
 msgstr "Mkfs nepavyko"
@@ -1979,6 +2045,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Nėra informacijos apie šį atvaizdą"
 
+msgid "No displayable files on this medium found!"
+msgstr "Jokių failų čia nerasta!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "Informacija apie įvykius nerasta, tęsiamas įrašymas."
 
@@ -2153,13 +2222,13 @@ msgid "PIDs"
 msgstr "PIDs"
 
 msgid "Package list update"
-msgstr "Paketų sąrašo atnaujinimas"
+msgstr "Paketo sąrašo atnaujinimas"
 
 msgid "Packet management"
 msgstr "Paketų valdymas"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Paketo valdymas"
 
 msgid "Page"
 msgstr "Puslapis"
@@ -2208,6 +2277,12 @@ msgstr "Leisti"
 msgid "Play Audio-CD..."
 msgstr "Paleisti Garso-CD..."
 
+msgid "Play DVD"
+msgstr "Leisti DVD"
+
+msgid "Play Music..."
+msgstr "Groti muziką..."
+
 msgid "Play recorded movies..."
 msgstr "Leisti įrašytus filmus..."
 
@@ -2230,7 +2305,7 @@ msgid "Please choose an extension..."
 msgstr "Prašome išsirinkti papildymus..."
 
 msgid "Please choose he package..."
-msgstr "Prašom išsirinkti, paketą..."
+msgstr "Prašome pasirinkti, paketą..."
 
 msgid "Please choose the default services lists you want to install."
 msgstr ""
@@ -2299,7 +2374,7 @@ msgid "Please select a subservice..."
 msgstr "Prašome išsirinkti subkanalą..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Prašome pasirinkti tai, kaip atsarginės kopijos vietą"
 
 msgid "Please select tag to filter..."
 msgstr "Prašome išsirinkti kortelę filtravimui..."
@@ -2339,7 +2414,7 @@ msgid "Please wait for activation of your network configuration..."
 msgstr "Prašome laukti jūsų tinklo konfigūracijos aktyvavimo..."
 
 msgid "Please wait while scanning is in progress..."
-msgstr ""
+msgstr "Prašome laukti kol vyksta skanavimas..."
 
 msgid "Please wait while we configure your network..."
 msgstr "Prašome laukti kol konfigūruojamas jūsų tinklas..."
@@ -2418,7 +2493,7 @@ msgstr "Spauskite OK ir redaguokite nustatymus."
 
 #, python-format
 msgid "Press OK to get further details for %s"
-msgstr ""
+msgstr "Spauskite OK, kad gautumėte tolimesnes detales dėl %s"
 
 msgid "Press OK to scan"
 msgstr "Spauskite OK paieškai."
@@ -2436,7 +2511,7 @@ msgid "Primary DNS"
 msgstr "Pirminis DNS"
 
 msgid "Priority"
-msgstr ""
+msgstr "Pirmenybė"
 
 msgid "Properties of current title"
 msgstr "Dabartinio pavadinimo ypatybės"
@@ -2456,8 +2531,11 @@ msgstr "Tiekėjas, kurį norite skanuoti"
 msgid "Providers"
 msgstr "Tiekėjai"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Python pradinė fazė dėl /tmp/mmi.socket"
+
 msgid "Quick"
-msgstr ""
+msgstr "Greitas"
 
 msgid "Quickzap"
 msgstr "Greitas perjungimas"
@@ -2481,7 +2559,7 @@ msgid "Ram Disk"
 msgstr "Ram Diskas"
 
 msgid "Random"
-msgstr ""
+msgstr "Atsitiktinis"
 
 msgid "Really close without saving settings?"
 msgstr "Tikrai uždaryti be nustatymų išsaugojimo ?"
@@ -2502,7 +2580,7 @@ msgid "Really shutdown now?"
 msgstr "Iš tikrųjų išjungti dabar?"
 
 msgid "Reboot"
-msgstr "Perkrauti"
+msgstr "Paleisti iš naujo"
 
 msgid "Reception Settings"
 msgstr "Priėmimo nustatymai"
@@ -2512,7 +2590,7 @@ msgstr "Įrašyti"
 
 #, python-format
 msgid "Record time limited due to conflicting timer %s"
-msgstr ""
+msgstr "Įrašymo laikas apribotas dėl prieštaringo laikmačio %s"
 
 msgid "Recorded files..."
 msgstr "Įrašyti failai..."
@@ -2536,7 +2614,7 @@ msgid "Refresh rate selection."
 msgstr "Atnaujinkite normos pasirinkimą"
 
 msgid "Reload"
-msgstr ""
+msgstr "Užkrauti"
 
 msgid "Remove Bookmark"
 msgstr "Pašalinti žymę"
@@ -2551,7 +2629,7 @@ msgid "Remove currently selected title"
 msgstr "Pašalinkite dabartinį pasirinktą pavadinimą"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Pašalinimas baigtas."
 
 msgid "Remove plugins"
 msgstr "Pašalinti priedus"
@@ -2563,13 +2641,13 @@ msgid "Remove the incomplete .NFI file?"
 msgstr "Pašalinti neužbaigtą .NFI failą?"
 
 msgid "Remove timer"
-msgstr ""
+msgstr "Pašalinkite laikmatį"
 
 msgid "Remove title"
 msgstr "Pašalinti "
 
 msgid "Removing"
-msgstr ""
+msgstr "Pašalinimas"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2621,23 +2699,23 @@ msgid "Restore"
 msgstr "Atkurti"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Atkurkite atsargines kopijas..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Vyksta atkūrimas"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Vyksta atkūrimas..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Atkurkite sisteminius nustatymus"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
 "settings now."
 msgstr ""
-"Nustatymų atkūrimas baigtas. Prašome spausti OK, norint aktyvuoti nustatymus "
-"dabar."
+"Nustatymų atkūrimas baigtas. Prašome spausti OK, norėdami aktyvuoti "
+"nustatymus dabar."
 
 msgid "Resume from last position"
 msgstr "Tęsti nuo paskutinės pozicijos"
@@ -2724,6 +2802,9 @@ msgstr "Skalės režimas"
 msgid "Scan "
 msgstr "Skanuoti"
 
+msgid "Scan Files..."
+msgstr "Skanuoti failus..."
+
 msgid "Scan QAM128"
 msgstr "Skanuoti QAM128"
 
@@ -2813,11 +2894,14 @@ msgid "Seek"
 msgstr "Ieškoti"
 
 msgid "Select"
-msgstr ""
+msgstr "Pasirinkite"
 
 msgid "Select HDD"
 msgstr "Pasirinkite kietą diską"
 
+msgid "Select IPKG source to edit..."
+msgstr ""
+
 msgid "Select Location"
 msgstr "Pasirinkite vietą"
 
@@ -2837,13 +2921,13 @@ msgid "Select channel to record from"
 msgstr "Pasirinkite kanalą įrašymui"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Išsirinkite failus atsarginei kopijai. Dabar išsirinkta:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Išsirinkite failus/aplankus dėl atsarginės kopijos..."
 
 msgid "Select image"
-msgstr "sirinkite atvaizdą"
+msgstr "Pasirinkite atvaizdą"
 
 msgid "Select refresh rate"
 msgstr "Pasirinkite atnujinimo normą"
@@ -2851,11 +2935,14 @@ msgstr "Pasirinkite atnujinimo normą"
 msgid "Select video input"
 msgstr "Pasirinkite vaizdo įėjimą"
 
+msgid "Select video input with up/down buttons"
+msgstr "Pasirinkite vaizdo įėjimą su mygtukais aukštyn/žemyn"
+
 msgid "Select video mode"
 msgstr "Pasirinkite vaizdo būdą"
 
 msgid "Selected source image"
-msgstr "Išsirinktas šaltinio atvaizdas"
+msgstr "Pasirinktas atvaizdo šaltinis"
 
 msgid "Send DiSEqC"
 msgstr "Siųskite DiSEqC"
@@ -2921,7 +3008,7 @@ msgid "Set as default Interface"
 msgstr "Pasirinkti numatytą sąsają"
 
 msgid "Set interface as default Interface"
-msgstr "Nustatytas interfeisas kaip numatytas interfeisas"
+msgstr "Nustatykite sąsają kaip numatytą sąsają"
 
 msgid "Set limits"
 msgstr "Nustatykite ribas"
@@ -3021,16 +3108,16 @@ msgid "Slow Motion speeds"
 msgstr "Palėtinto judėjimo greitis"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Programinės įrangos valdymas"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Programinės įrangos valdymas ..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Programinės įrangos atkūrimas"
 
 msgid "Software update"
-msgstr ""
+msgstr "Programinės įrangos atnaujinimas"
 
 msgid "Some plugins are not available:\n"
 msgstr "Kai kurių priedų nėra:\n"
@@ -3039,10 +3126,10 @@ msgid "Somewhere else"
 msgstr "Dar kur nors"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Gaila MediaScanner nėra įdiegtas!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Gaila, jokios atsarginės kopijos nerastos!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3051,18 +3138,23 @@ msgid ""
 msgstr ""
 "Atsiprašome, bet nurodytos atsarginės kopijos čia nėra.\n"
 "\n"
-"Pasirinkite prašome kitą!"
+"Prašome pasirinkti kitą!"
 
 msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Gaila, jūsų atsarginės kopijos pasirinkimas nėra tinkamas rašymui.\n"
+"Prašome pasirinkti kitą."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Gaila, jūsų atsarginės kopijos pasirinkimas nėra tinkamas rašymui.\n"
+"\n"
+"Prašome pasirinkti kitą."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3115,7 +3207,7 @@ msgid "Stereo"
 msgstr "Stereo"
 
 msgid "Stop"
-msgstr "Stoti"
+msgstr "Stabdyti"
 
 msgid "Stop Timeshift?"
 msgstr "Sustabdyti laiko perstumimą?"
@@ -3133,10 +3225,10 @@ msgid "Stop test"
 msgstr "Stabdyti testavimą"
 
 msgid "Stop testing plane after # failed transponders"
-msgstr ""
+msgstr "Stabdykite testavimą po to kai # klaidingi transponderiai"
 
 msgid "Stop testing plane after # successful transponders"
-msgstr ""
+msgstr "Stabdykite testavimą po to kai # pavykę transponderiai"
 
 msgid "Store position"
 msgstr "Išsaugoti padėtį"
@@ -3212,10 +3304,10 @@ msgid "Terrestrial provider"
 msgstr "Antžeminis tiekėjas"
 
 msgid "Test DiSEqC settings"
-msgstr ""
+msgstr "Testuoti DiSEqC nustatymus"
 
 msgid "Test Type"
-msgstr ""
+msgstr "Testo tipas"
 
 msgid "Test mode"
 msgstr "Testuoti"
@@ -3267,6 +3359,9 @@ msgstr ""
 "\n"
 "Jūs norite įrašyti USB diegėją į šį raktelį?"
 
+msgid "The following files were found..."
+msgstr "Kiti failai buvo surasti..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3320,7 +3415,7 @@ msgstr "Surinkti PIN kodai skiriasi."
 
 #, python-format
 msgid "The results have been written to %s."
-msgstr ""
+msgstr "Rezultatai buvo įrašyti į %s."
 
 msgid "The sleep timer has been activated."
 msgstr "Budėjimo laikmatis jau aktyvuotas."
@@ -3360,6 +3455,10 @@ msgstr ""
 "Gali trukti laisvos vietos pasirinktame skaidinyje.\n"
 "Ar norite tęsti?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr ""
+"Įvyko klaida, parsisiunčiant paketo sąrašą. Prašome pabandyti dar kartą."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Šis .NFI failas neturi galiojančio %s atvaizdo!"
@@ -3385,6 +3484,10 @@ msgstr ""
 "Šis DVD RW diskas jau yra suformatuotas - formatavimas iš naujo, ištrins "
 "visą disko turinį."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Šis Dreambox negali iššifruoti %s srautų!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Šis Dreambox negali iškoduoti %s vaizdo srautų!"
@@ -3584,11 +3687,14 @@ msgstr "Bandymas kairėn:"
 
 msgid "Try to find used Transponders in cable network.. please wait..."
 msgstr ""
-"Pabandykite surasti Transponderius kabeliniuose tinkluose.. prašome laukti..."
+"Bandoma surasti Transponderius kabeliniuose tinkluose.. prašome laukti..."
 
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr ""
-"Pabandykite surasti Transponderius kabeliniuose tinkluose.. prašome laukti..."
+"Bandoma surasti Transponderius kabeliniuose tinkluose.. prašome laukti..."
+
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Bandoma parsisiųsti naują paketo sąrašą. Prašome laukti..."
 
 msgid "Tue"
 msgstr "Ant"
@@ -3624,7 +3730,7 @@ msgid "Two"
 msgstr "Du"
 
 msgid "Type"
-msgstr ""
+msgstr "Tipas"
 
 msgid "Type of scan"
 msgstr "Skanavimo būdas"
@@ -3662,13 +3768,13 @@ msgid "Uncommitted DiSEqC command"
 msgstr "Perjungimo komanda DiSEqC"
 
 msgid "Unicable"
-msgstr ""
+msgstr "Unicable"
 
 msgid "Unicable LNB"
-msgstr ""
+msgstr "Unicable LNB"
 
 msgid "Unicable Martix"
-msgstr ""
+msgstr "Unicable Martix"
 
 msgid "Universal LNB"
 msgstr "Universali LNB"
@@ -3689,7 +3795,7 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Atnaujinama... Prašome palaukti... tai gali trukti keletą minučių..."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Atnaujinimas baigtas."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Atnaujinimas baigtas. Ar jūs norite perjungti imtuvą?"
@@ -3771,7 +3877,7 @@ msgid "VMGM (intro trailer)"
 msgstr "VMGM (įvadas)"
 
 msgid "Vertical"
-msgstr ""
+msgstr "Vertikalus"
 
 msgid "Video Fine-Tuning"
 msgstr "Tikslus vaizdo suderinimas"
@@ -3806,9 +3912,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Vaizdo būdo pasirinkimas."
 
+msgid "View Movies..."
+msgstr "Žiūrėti kino filmus..."
+
+msgid "View Photos..."
+msgstr "Žiūrėti fotografijas..."
+
 msgid "View Rass interactive..."
 msgstr "Žiūrėti Rass interaktyviai..."
 
+msgid "View Video CD..."
+msgstr "Žiūrėti vaizdo CD..."
+
 msgid "View teletext..."
 msgstr "Žiūrėti teletekstą..."
 
@@ -3915,6 +4030,13 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Jeigu jūs atkursite gamyklinius nustatymus, jūs prarasite VISUS savo "
+"konfigūracijos duomenis\n"
+"(įskaitant paketus, kanalus, palydovinius duomenis...) \n"
+"Po to, kai bus atkurti gamykliniai nustatymai imtuvas pasileis iš naujo "
+"automatiškai!\n"
+"\n"
+"Iš tikrųjų norite atkurti?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Kur Jūs norite išsaugoti nustatymų atsarginę kopiją?"
@@ -4040,6 +4162,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Jūs nusprendėte padaryti atsarginę kopiją savo nustatymų. Prašome spausti "
+"OK, kad pradėtumėte atsarginę kopiją dabar."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4052,6 +4176,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Jūs nusprendėte atkurti savo nustatymus. Enigma2 iš naujo pasileis po "
+"atkūrimo. Prašome spausti OK, kad pradėtumėte atkūrimą dabar."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4090,6 +4216,13 @@ msgid ""
 "process."
 msgstr "Atsarginė kopija sukurta. Dabar mes tęsime atnaujinimą. "
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Jūsų kolekcija viršyja vieno sluoksnio DVD disko dydį, jums reikės tuščio "
+"dvigubo sluoksnio DVD!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Jūsų imtuvas išsijungia. Būkite šalia..."
 
@@ -4139,6 +4272,12 @@ msgstr "[mėgstamiausių redagavimas]"
 msgid "[move mode]"
 msgstr "[perkėlimas]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "nutraukti kitų redagavimą"
 
@@ -4154,6 +4293,12 @@ msgstr "apie pradžią"
 msgid "activate current configuration"
 msgstr "aktyvuokite dabartinę konfigūraciją"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "pridėkite serverio pavadinimo įėjimą"
 
@@ -4212,6 +4357,12 @@ msgstr ""
 "Jūs tikrai norite atkurti\n"
 "atsarginė kopija:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "Garso takelio (%s) formatas"
@@ -4224,7 +4375,7 @@ msgid "audio tracks"
 msgstr "garso takeliai"
 
 msgid "auto"
-msgstr ""
+msgstr "auto"
 
 msgid "back"
 msgstr "atgal"
@@ -4252,7 +4403,7 @@ msgid "burn audio track (%s)"
 msgstr "išdeginkite garso takelį (%s)"
 
 msgid "change recording (duration)"
-msgstr "pakeisti įrašymą (trukmę)"
+msgstr "keisti įrašymą (trukmę)"
 
 msgid "change recording (endtime)"
 msgstr "keisti įrašymą (pabaigos laiką)"
@@ -4299,6 +4450,9 @@ msgstr "kasdien"
 msgid "day"
 msgstr "diena"
 
+msgid "delete"
+msgstr "trinti"
+
 msgid "delete cut"
 msgstr "trinti iškirpimą"
 
@@ -4459,7 +4613,7 @@ msgid "hours"
 msgstr "valandos"
 
 msgid "immediate shutdown"
-msgstr "Išjungimas"
+msgstr "neatidėliotinas išjungimas"
 
 #, python-format
 msgid ""
@@ -4472,6 +4626,9 @@ msgstr ""
 msgid "init module"
 msgstr "aptikti modulį"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "įterpkite žymeklį čia"
 
@@ -4577,14 +4734,23 @@ msgstr "Kitas kanalas į istoriją"
 msgid "no"
 msgstr "ne"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "Kietas diskas nerastas"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "modulis nerastas"
 
 msgid "no standby"
-msgstr "ne budėti"
+msgstr "nebudėti"
 
 msgid "no timeout"
 msgstr "nedaryti pertraukos"
@@ -4596,7 +4762,7 @@ msgid "not locked"
 msgstr "neužrakintas"
 
 msgid "not used"
-msgstr ""
+msgstr "nenaudojamas"
 
 msgid "nothing connected"
 msgstr "niekas nepajungta"
@@ -4752,6 +4918,9 @@ msgstr "pasirinkti"
 msgid "select .NFI flash file"
 msgstr "išsirinkite .NFI diegimo failą"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "išsirinkite atvaizdą iš serverio"
 
@@ -4882,7 +5051,7 @@ msgid "switch to playlist"
 msgstr "perjungti į grojaraštį"
 
 msgid "switch to the next angle"
-msgstr ""
+msgstr "perjunkite į kitą kampą"
 
 msgid "switch to the next audio track"
 msgstr "perjungti į kitą garso takelį"
@@ -4891,7 +5060,7 @@ msgid "switch to the next subtitle language"
 msgstr "perjungti į kitą subtitrų kalbą"
 
 msgid "template file"
-msgstr ""
+msgstr "šablono failas"
 
 msgid "textcolor"
 msgstr "teksto spalva"
@@ -4945,7 +5114,7 @@ msgid "whitelist"
 msgstr "baltas sąrašas"
 
 msgid "working"
-msgstr ""
+msgstr "dirba"
 
 msgid "yellow"
 msgstr "geltonas"
@@ -4969,19 +5138,56 @@ msgstr "Jungti"
 msgid "zapped"
 msgstr "įjungta"
 
+#~ msgid "\n"
+#~ msgstr "\n"
+
 #~ msgid ""
 #~ "\n"
-#~ "Enigma2 will restart after the restore"
+#~ "System will restart after the restore!"
 #~ msgstr ""
 #~ "\n"
-#~ "Enigma2 iš naujo pasileis po atkūrimo"
+#~ "Sistema po atkūrimo pasileis iš naujo!"
+
+#~ msgid ""
+#~ "\n"
+#~ "View, install and remove available or installed package."
+#~ msgstr ""
+#~ "\n"
+#~ "Peržiūrėti, įdiekti ir pašalinti pasiekiamą ar įdiegtą paketą."
 
 #~ msgid "\"?"
 #~ msgstr "\"?"
 
+#~ msgid "#00000000"
+#~ msgstr "#00000000"
+
+#~ msgid "#41000000"
+#~ msgstr "#41000000"
+
+#~ msgid "#50000000"
+#~ msgstr "#50000000"
+
+#~ msgid "#77ffffff"
+#~ msgstr "#77ffffff"
+
+#~ msgid "#999999"
+#~ msgstr "#999999"
+
+#~ msgid "#cccccc"
+#~ msgstr "#cccccc"
+
+#~ msgid "#dddddd"
+#~ msgstr "#dddddd"
+
+#~ msgid "..."
+#~ msgstr "..."
+
 #~ msgid ".NFI Flasher bootable USB stick successfully created."
 #~ msgstr ".NFI diegėjo paleidimo USB raktelis sėkmingai sukurtas."
 
+#~ msgid "A (really) simple RSS reader"
+#~ msgstr "Iš tikrųjų paprastas RSS skaitytojas"
+
 #~ msgid "AGC"
 #~ msgstr "AGC"
 
@@ -4998,15 +5204,36 @@ msgstr "įjungta"
 #~ msgid "Adress"
 #~ msgstr "IP adresas"
 
+#~ msgid "Advanced options"
+#~ msgstr "Papildomi nustatymai"
+
+#~ msgid "Alert"
+#~ msgstr "Pavojus"
+
+#~ msgid "Alert at shutdown"
+#~ msgstr "Perspėti prieš išjungiant"
+
 #~ msgid "All..."
 #~ msgstr "Visi..."
 
+#~ msgid "Allow ipkg to overwrite files from another package during an install"
+#~ msgstr "Leiskite ipkg perrašyti failus iš kito paketo įdiegiant"
+
+#~ msgid "Allow ipkg to reinstall a package"
+#~ msgstr "Leiskite ipkg iš naujo įdiegti paketą"
+
+#~ msgid "Allow ipkg to remove package and all that depend on it"
+#~ msgstr "Leiskite ipkg pašalinti paketą ir viską, kas susiję su tai"
+
 #~ msgid "Allow zapping via webif"
 #~ msgstr "Leisti jungti per webif"
 
 #~ msgid "An error has occured. (%s)"
 #~ msgstr "Įvyko klaida. (%s)"
 
+#~ msgid "An error occured!"
+#~ msgstr "Klaida įvyko!"
+
 #~ msgid ""
 #~ "Are you sure you want to enable WLAN support?\n"
 #~ "Connect your Wlan USB Stick to your Dreambox and press OK.\n"
@@ -5024,21 +5251,66 @@ msgstr "įjungta"
 #~ "Jūs esate įsitikinęs, kad jūs norite įjungti savo vietinį tinklą? \n"
 #~ "\n"
 
+#~ msgid "Audio track (%s) format"
+#~ msgstr "Garso takelio (%s) formatas"
+
+#~ msgid "Audio track (%s) language"
+#~ msgstr "Garso takelio (%s) kalba"
+
+#~ msgid "Audio-CD"
+#~ msgstr "Garso CD"
+
 #~ msgid "Automatic SSID lookup"
 #~ msgstr "Automatinė SSID paieška"
 
 #~ msgid "Autowrite timer"
 #~ msgstr "Automatinis laikamačio perrašymas"
 
+#~ msgid "BER :"
+#~ msgstr "BER :"
+
+#~ msgid "Background color"
+#~ msgstr "Foninė spalva"
+
+#~ msgid "Backup and Restore"
+#~ msgstr "Atsarginė kopija ir atkūrimas"
+
+#~ msgid "Barry Allen Menu"
+#~ msgstr "Barry Allen meniu"
+
+#~ msgid "Barry Allen Menu: %s"
+#~ msgstr "Barry Allen meniu: %s"
+
+#~ msgid "Blue Panel"
+#~ msgstr "Mėlyna Panėlė"
+
+#~ msgid "Bookmarks menu"
+#~ msgstr "Adresų meniu"
+
 #~ msgid "Burn"
 #~ msgstr "Išdeginti"
 
 #~ msgid "Burn To DVD..."
 #~ msgstr "Išdeginti į DVD..."
 
+#~ msgid "Burn audio track (%s)"
+#~ msgstr "Išdeginkite garso takelį (%s)"
+
+#~ msgid "CAMD options..."
+#~ msgstr "CAMD nustatymai..."
+
+#~ msgid "Choice action"
+#~ msgstr "Pasirinkite veiksmą"
+
 #~ msgid "Choose Location"
 #~ msgstr "Išsirinkite vietą"
 
+#~ msgid "Common interface"
+#~ msgstr "Įstatomi moduliai"
+
+#~ msgid "Common interface selection"
+#~ msgstr "Įstatomo modulio pasirinkimas"
+
 #, fuzzy
 #~ msgid "Configuration for the Webinterface"
 #~ msgstr "Konfigūravimo būdas"
@@ -5064,39 +5336,87 @@ msgstr "įjungta"
 #~ msgid "Connect to the Internet with your local LAN"
 #~ msgstr "Prisijunkite prie interneto su vietiniu tinklu"
 
+#~ msgid "Console"
+#~ msgstr "Konsolė"
+
 #~ msgid "Copying USB flasher boot image to stick..."
 #~ msgstr "Kopijuojamas USB diegėjo paleidimo atvaizdas į raktelį..."
 
+#~ msgid "Current sleep timer disabled"
+#~ msgstr "Einamasis budėjimo laikmatis išjungtas"
+
+#~ msgid "Current sleep timer enabled"
+#~ msgstr "Einamasis budėjimo laikmatis ijungtas"
+
+#~ msgid "Current timer status:"
+#~ msgstr "Einamojo laikmačio būsena:"
+
+#~ msgid "CutList Editor"
+#~ msgstr "Iškirpimo sąrašo redaktorius"
+
+#~ msgid "Cutlist editor"
+#~ msgstr "Sąrašo iškirpimo redaktorius"
+
 #~ msgid "DVD ENTER key"
 #~ msgstr "DVD SURINKTI raktą"
 
+#~ msgid "DVD File Browser"
+#~ msgstr "DVD failų naršyklė"
+
 #~ msgid "DVD down key"
 #~ msgstr "DVD žemyn raktas"
 
+#~ msgid "DVD file browser"
+#~ msgstr "DVD failų naršyklė"
+
 #~ msgid "DVD left key"
 #~ msgstr "DVD kairėn raktas"
 
+#~ msgid "DVD player"
+#~ msgstr "DVD grotuvas"
+
 #~ msgid "DVD right key"
 #~ msgstr "DVD dešinėn raktas"
 
+#~ msgid "DVD title list"
+#~ msgstr "DVD pavadinimo sąrašas"
+
 #~ msgid "DVD up key"
 #~ msgstr "DVD aukštyn raktas"
 
+#~ msgid "DVDPlayer"
+#~ msgstr "DVD grotuvas"
+
 #~ msgid "Decompressing USB stick flasher boot image..."
 #~ msgstr "Dekompresuojamas USB raktelis, diegėjo paleidžiamasis atvaizdas..."
 
+#~ msgid "Default Satlists"
+#~ msgstr "Numatytieji palydovų sąrašai"
+
+#~ msgid "Default Services Scanner"
+#~ msgstr "Numatytas palydovų skanavimas"
+
+#~ msgid "Default Settings"
+#~ msgstr "Numatytieji nustatymai"
+
 #~ msgid "Default-Wizard"
 #~ msgstr "Numatytas vedlys"
 
 #~ msgid "Device Setup..."
 #~ msgstr "Įrenginių nustatymas..."
 
+#~ msgid "Directory browser"
+#~ msgstr "Direktorijų naršyklė"
+
 #~ msgid "Discontinuous playback at speeds above"
 #~ msgstr "Trukinėjantis atkūrimas prie didelių greičių"
 
 #~ msgid "Discontinuous playback frame repeat count"
 #~ msgstr "Trukinėjantis atkūrimas pasikartojančia struktūra"
 
+#~ msgid "Display Fritzbox-Fon calls on screen"
+#~ msgstr "Rodyti Fritzbox-Fon skambučius ekrane"
+
 #~ msgid ""
 #~ "Do you really want to REMOVE\n"
 #~ "the plugin \""
@@ -5114,9 +5434,21 @@ msgstr "įjungta"
 #~ msgid "Do you really want to exit?"
 #~ msgstr "Jūs tikrai norite išeiti?"
 
+#~ msgid "Do you want to reboot you DreamBox?"
+#~ msgstr "Jūs norite paleisti iš naujo DreamBox?"
+
+#~ msgid "Do you want to restart shell?"
+#~ msgstr "Jūs norite paleisti iš naujo Enigma2?"
+
 #~ msgid "Downloading image description..."
 #~ msgstr "Atvaizdo apibūdinimo parsisiuntimas..."
 
+#~ msgid "Dream Package"
+#~ msgstr "Dream paketas"
+
+#~ msgid "Edit Interface"
+#~ msgstr "Redaguoti sąsają"
+
 #~ msgid "Edit current title"
 #~ msgstr "Suredaguokite dabartinį pavadinimą"
 
@@ -5133,6 +5465,9 @@ msgstr "įjungta"
 #~ msgid "Enable WLAN"
 #~ msgstr "Įjungti belaidį tinklą"
 
+#~ msgid "Enable teletext caching"
+#~ msgstr "Įjungti teleteksto kaupimą"
+
 #~ msgid ""
 #~ "Enable the local network of your Dreambox.\n"
 #~ "\n"
@@ -5140,33 +5475,201 @@ msgstr "įjungta"
 #~ "Įjunkite vietinį tinklą savo imtuve.\n"
 #~ "\n"
 
+#~ msgid "Enabled sleep timer"
+#~ msgstr "Įjungti budėjimo laikmatį"
+
 #~ msgid "End"
 #~ msgstr "Pabaiga"
 
+#~ msgid "Enter pin"
+#~ msgstr "Įrašykite kodą"
+
 #~ msgid "Exit wizard and configure later manually"
 #~ msgstr "Išjunkite nustatymų vedlį ir konfigūruokite vėliau rankiniu būdu "
 
+#~ msgid "FEC :"
+#~ msgstr "FEC :"
+
+#~ msgid "FEC:"
+#~ msgstr "FEC:"
+
+#~ msgid "FP Upgrade"
+#~ msgstr "FP atnaujinimas"
+
+#~ msgid "FP upgrade required"
+#~ msgstr "FP reikalingas atnaujinimas"
+
+#~ msgid "FQ :"
+#~ msgstr "FQ :"
+
 #~ msgid "Factoryreset"
 #~ msgstr "Gamykliniai nustatymai"
 
+#~ msgid "File Manager"
+#~ msgstr "Failų valdymas"
+
+#~ msgid "File list"
+#~ msgstr "Failų sąrašas"
+
+#~ msgid "File list menu"
+#~ msgstr "Failų sąrašo meniu"
+
+#~ msgid "File-Manager"
+#~ msgstr "Failo valdymas"
+
+#~ msgid "File-manager"
+#~ msgstr "Failo valdymas"
+
+#~ msgid "FileManager"
+#~ msgstr "Failų valdymas"
+
+#~ msgid "Filesystem Check"
+#~ msgstr "Failų sistemos tikrinimas"
+
 #~ msgid "Fix USB stick"
 #~ msgstr "Taisyti USB"
 
 #~ msgid "Font size"
 #~ msgstr "Šrifto dydis"
 
+#~ msgid "Forward"
+#~ msgstr "Atsukimas"
+
+#~ msgid "Frequency:"
+#~ msgstr "Dažnis:"
+
+#~ msgid "FritzCall"
+#~ msgstr "FritzCall"
+
+#~ msgid "FritzCall Setup"
+#~ msgstr "FritzCall nustatymas"
+
+#~ msgid "Harddisk wait"
+#~ msgstr "Kietas diskas laukia"
+
+#~ msgid "Help"
+#~ msgstr "Pagalba"
+
+#~ msgid "Hide error message: No data on transponder! (Timeout reading PAT)"
+#~ msgstr ""
+#~ "Slėpti klaidingą žinutę: Nėra duomenų iš transponderio! (Pertrauka, "
+#~ "skaitomas PAT)"
+
+#~ msgid "Hide error message: No free tuner!"
+#~ msgstr "Slėpti klaidingą žinutę: Nėra laisvo imtuvo!"
+
+#~ msgid "Hide error message: Service invalid! (Timeout reading PMT)"
+#~ msgstr ""
+#~ "Slėpti klaidingą žinutę: Klaidingas kanalas! (Pertrauka, skaitomas PMT)"
+
+#~ msgid "Hide error message: Service not found! (SID not found in PAT)"
+#~ msgstr "Slėpti klaidingą žinutę: Kanalas nesurastas! (SID, nesurastas PAT)"
+
+#~ msgid "Hide error message: Tune failed!"
+#~ msgstr "Slėpti klaidingą žinutę: Suderinimas nepavyko!"
+
+#~ msgid "IPKG"
+#~ msgstr "IPKG"
+
+#~ msgid "IPKG frontend"
+#~ msgstr "IPKG pradinė fazė"
+
+#~ msgid "IPKG source"
+#~ msgstr "IPKG šaltinis"
+
+#~ msgid "IPKG upgrade..."
+#~ msgstr "IPKG atnaujinimas..."
+
+#~ msgid "Image Wizard"
+#~ msgstr "Atvaizdo vedlys"
+
+#~ msgid "Immediately"
+#~ msgstr "Nedelsiant"
+
+#~ msgid "Info"
+#~ msgstr "Informacija"
+
+#~ msgid "Initialization"
+#~ msgstr "Inicializavimas"
+
+#~ msgid "Install"
+#~ msgstr "Įdiegti"
+
+#~ msgid "Install local package"
+#~ msgstr "Įdiekite vietinį paketą"
+
+#~ msgid "Install plugin finished."
+#~ msgstr "Priedo įdiegimas baigtas."
+
+#~ msgid "Interactive"
+#~ msgstr "Interaktyvus"
+
 #~ msgid "Jump to video title 1 (play movie from start)"
 #~ msgstr "Šuolis į vaizdo pavadinimą 1 (rodo kino filmą nuo pradžios)"
 
+#~ msgid "Language"
+#~ msgstr "Kalba"
+
+#~ msgid "Language Selection"
+#~ msgstr "Kalbos pasirinkimas"
+
+#~ msgid "Lets you view current RSS entries"
+#~ msgstr "Leidžia jums žiūrėti einamuosius RSS įvykius"
+
+#~ msgid "List of configured interfaces"
+#~ msgstr "Sukonfigūruotų interfeisų sąrašas"
+
 #~ msgid "Load movie-length"
 #~ msgstr "Keisti filmo ilgį"
 
+#~ msgid "MMI"
+#~ msgstr "MMI"
+
+#~ msgid "Main Setup"
+#~ msgstr "Svarbiausi nustatymai"
+
+#~ msgid "Media Player"
+#~ msgstr "Media grotuvas"
+
+#~ msgid "MediaScanner"
+#~ msgstr "Media skaneris"
+
+#~ msgid "Medialist menu"
+#~ msgstr "Media sąrašo meniu"
+
+#~ msgid "Mediaplayer"
+#~ msgstr "Media grotuvas"
+
+#~ msgid "Movie player"
+#~ msgstr "Filmų grotuvas"
+
+#~ msgid "Music"
+#~ msgstr "Muzika"
+
 #~ msgid "Nameserver Setup..."
 #~ msgstr "Serverio nustatymas..."
 
+#~ msgid "Network"
+#~ msgstr "Tinklas"
+
+#~ msgid "Network Adapter test"
+#~ msgstr "Tinklo adapterio testas"
+
+#~ msgid "Network Configuration"
+#~ msgstr "Tinklo konfigūravimas"
+
+#~ msgid "Network Wizard"
+#~ msgstr "Tinklo vedlys"
+
+#~ msgid "Network wizard"
+#~ msgstr "Tinklo vedlys"
+
 #~ msgid "New DVD"
 #~ msgstr "Naujas DVD"
 
+#~ msgid "No new plugins found"
+#~ msgstr "Naujų programų nerasta"
+
 #~ msgid ""
 #~ "No working local networkadapter found.\n"
 #~ "Please verify that you have attached a network cable and your Network is "
@@ -5224,12 +5727,54 @@ msgstr "įjungta"
 #~ "suformatuoti ir naudoti kaip.NFI atvaizdo diegėją. Spauskite OK  po to, "
 #~ "kai jūs įdėjote raktelį."
 
+#~ msgid "OSD Setup by Vali"
+#~ msgstr "OSD nustatymas pagal Vali"
+
+#~ msgid "OSDsetup"
+#~ msgstr "OSD nustatymas"
+
+#~ msgid "Old Softwareupdate"
+#~ msgstr "Senas programinės įrangos atnaujinimas"
+
+#~ msgid "Open settings packages management."
+#~ msgstr "Atidarykite paketų nustatymo valdymą."
+
 #~ msgid "Other..."
 #~ msgstr "Kitas..."
 
+#~ msgid "Package installer"
+#~ msgstr "Paketo įdiegėjas"
+
+#~ msgid "Package management"
+#~ msgstr "Paketo valdymas"
+
 #~ msgid "Partitioning USB stick..."
 #~ msgstr "Padalijamas USB raktelis..."
 
+#~ msgid "Pause"
+#~ msgstr "Pauzė"
+
+#~ msgid "Picture Player"
+#~ msgstr "Paveikslėlių grotuvas"
+
+#~ msgid "Picture player"
+#~ msgstr "Paveikslėlių grotuvas"
+
+#~ msgid "Picture viewer (BMP, PNG, JPG, GIF)"
+#~ msgstr "Paveikslėlių peržiūra (BMP, PNG, JPG, GIF)"
+
+#~ msgid "Play DVDs"
+#~ msgstr "Leisti DVD"
+
+#~ msgid "Play back media files"
+#~ msgstr "Atkurkite media failus"
+
+#~ msgid "Play list"
+#~ msgstr "Grojaraštis"
+
+#~ msgid "Play list menu"
+#~ msgstr "Grojaraščio meniu"
+
 #~ msgid ""
 #~ "Please attach your Zydas ZD1211B chipset compatibe WLAN USB Stick to your "
 #~ "Dreambox and press the OK button on your remote control to enable the "
@@ -5284,6 +5829,13 @@ msgstr "įjungta"
 #~ msgid "Please select keyword to filter..."
 #~ msgstr "Prašome išsirinkti raktinį žodį dėl filtravimo..."
 
+#~ msgid "Please select plugin and press OK for install"
+#~ msgstr "Prašome išsirinkti papildomą programą ir spauskite OK, kad įdiegti"
+
+#~ msgid "Please select plugin and press OK for remove"
+#~ msgstr ""
+#~ "Prašome išsirinkti papildomą programą ir spauskite OK, kad pašalinti"
+
 #, fuzzy
 #~ msgid ""
 #~ "Please select the network interface that you want to use for your "
@@ -5301,6 +5853,9 @@ msgstr "įjungta"
 #~ msgid "Please wait for md5 signature verification..."
 #~ msgstr "Prašome laukti md5 parašo patikrinimo..."
 
+#~ msgid "Plugins list..."
+#~ msgstr "Papildomų programų sąrašas..."
+
 #, fuzzy
 #~ msgid "Port"
 #~ msgstr "Jungtis A"
@@ -5319,6 +5874,15 @@ msgstr "įjungta"
 #~ "OK.\n"
 #~ "\n"
 
+#~ msgid "Project Settings"
+#~ msgstr "Projektiniai nustatymai"
+
+#~ msgid "RSS Reader"
+#~ msgstr "RSS skaitytojas"
+
+#~ msgid "RassInteractive"
+#~ msgstr "Interaktyvus Rass"
+
 #~ msgid "Really delete this timer?"
 #~ msgstr "Tikrai pašalinti šį laikmatį?"
 
@@ -5344,18 +5908,134 @@ msgstr "įjungta"
 #~ msgid "Remounting stick partition..."
 #~ msgstr "Perjungiamas raktelio padalinimas..."
 
+#~ msgid "Remove plugin finished."
+#~ msgstr "Priedo pašalinimas baigtas."
+
+#~ msgid "Repeat playlist"
+#~ msgstr "Pakartoti grojaraštį"
+
+#~ msgid "Restart shell"
+#~ msgstr "Paleisti iš naujo Enigma2"
+
 #~ msgid "Restart your wireless interface"
 #~ msgstr "Paleiskite iš naujo savo belaidį įrenginį"
 
+#~ msgid "Restore Backups"
+#~ msgstr "Atkurkite atsargines kopijas"
+
+#~ msgid "Restore Menu"
+#~ msgstr "Akūrimo meniu"
+
+#~ msgid "Restore backup"
+#~ msgstr "Atkurkite atsarginę kopiją"
+
+#~ msgid "Rewind"
+#~ msgstr "Persukimas"
+
+#~ msgid "SNR :"
+#~ msgstr "SNR :"
+
+#~ msgid "SR :"
+#~ msgstr "SR :"
+
 #~ msgid "Save current project to disk"
 #~ msgstr "Išsaugoti dabartinį projektą į diską"
 
+#~ msgid "Save last directory on exit"
+#~ msgstr "Išsaugoti paskutinę direktoriją išeinant"
+
+#~ msgid "Save playlist on exit"
+#~ msgstr "Išsaugoti grojaraštį išeinant"
+
 #~ msgid "Save..."
 #~ msgstr "Išsaugoti..."
 
+#~ msgid "Seek:"
+#~ msgstr "Ieškokite:"
+
+#~ msgid "Select Your Skin"
+#~ msgstr "Pasirinkite savo temą"
+
+#~ msgid "Select backup location"
+#~ msgstr "Pasirinkite atsarginės kopijos vietą"
+
+#~ msgid "Select files and folders for backup. Currently selected:\n"
+#~ msgstr ""
+#~ "Pasirinkite failus ir aplankus atsarginei kopijai. Šiuo metu pasirinkta:\n"
+
+#~ msgid "Select files and folders to backup"
+#~ msgstr "Pasirinkite failus ir aplankus atsarginės kopijos darymui"
+
+#~ msgid "Select profile CAMD"
+#~ msgstr "Pasirinkite CAMD profilį"
+
+#~ msgid "Setting Sleep Timer"
+#~ msgstr "Budėjimo laikmačio nustatymas"
+
+#~ msgid "Settings package management"
+#~ msgstr "Paketo nustatymų valdymas"
+
+#~ msgid "Setup mode select profile CAMD"
+#~ msgstr "Nustatymo būdu pasirinkite CAMD profilį"
+
+#~ msgid "Shadow color"
+#~ msgstr "Šešėlinė spalva"
+
+#~ msgid "Sherlock"
+#~ msgstr "Sherlock"
+
+#~ msgid "Show Infoline"
+#~ msgstr "Rodyti informacijos liniją"
+
 #~ msgid "Show files from %s"
 #~ msgstr "Rodyti failus iš %s"
 
+#~ msgid "Show infobar in Expert Mode"
+#~ msgstr "Rodyti infojuostą Eksperto režime"
+
+#~ msgid "Show orbital position of infobar"
+#~ msgstr "Rodyti orbitinę padėtį infojuostoje"
+
+#~ msgid "Shutdown"
+#~ msgstr "Išjungti"
+
+#~ msgid "Shutdown after (minutes)"
+#~ msgstr "Išjungimas po (minučių)"
+
+#~ msgid "Similar broadcasts"
+#~ msgstr "Panašios laidos"
+
+#~ msgid "Simple RSS Reader"
+#~ msgstr "Paprastas RSS skaitytojas"
+
+#~ msgid "Skin"
+#~ msgstr "Tema"
+
+#~ msgid "Skinselector"
+#~ msgstr "Temų pasirinkėjas"
+
+#~ msgid "Sleep timer action"
+#~ msgstr "Budėjimo laikmačio veiksmas"
+
+#~ msgid "Slide picture in loop"
+#~ msgstr "Skaidrės paveikslėlis kontūre"
+
+#~ msgid "SocketMMI"
+#~ msgstr "Lizdas MMI"
+
+#~ msgid "Software Update..."
+#~ msgstr "Programinės įrangos atnaujinimas..."
+
+#~ msgid "Softwareupdate"
+#~ msgstr "Programinės įrangos atnaujinimas"
+
+#~ msgid ""
+#~ "Sorry! You use an unregistered version of ruDREAM infinity image! This "
+#~ "image is only for ruDREAM Club members..."
+#~ msgstr ""
+#~ "Gaila! Jūs naudojate neregistruotą ruDREAM infinity atvaizdo versiją! Šis "
+#~ "atvaizdas yra tiktai ruDREAM klubo nariams..."
+
 #~ msgid "Start"
 #~ msgstr "Pradėti"
 
@@ -5363,15 +6043,27 @@ msgstr "įjungta"
 #~ msgid "Start Webinterface"
 #~ msgstr "Pasirinkti numatytą sąsają"
 
+#~ msgid "Start Wizard"
+#~ msgstr "Paleisti vedlį"
+
+#~ msgid "Start directory"
+#~ msgstr "Paleidimo direktorija"
+
 #~ msgid "Startwizard"
 #~ msgstr "Nustatymų vedlys"
 
 #~ msgid "Step "
 #~ msgstr "Žingsnis"
 
+#~ msgid "Symbolrate:"
+#~ msgstr "Simbolių greitis:"
+
 #~ msgid "Table of content to be burned to DVD:"
 #~ msgstr "Turinys, kuris būtų išdegintas į DVD:"
 
+#~ msgid "Text color"
+#~ msgstr "Teksto spalva"
+
 #~ msgid ""
 #~ "Thank you for using the wizard. Your Dreambox is now ready to use.\n"
 #~ "\n"
@@ -5437,6 +6129,12 @@ msgstr "įjungta"
 #~ "raktelyje. Tada perkraukite ir laikykite nuspaustą mygtuką 'Žemyn' ant "
 #~ "priekinės imtuvo panėlės kad paleisti .NFI diegėją iš raktelio!"
 
+#~ msgid "Timeshift path"
+#~ msgstr "Laiko poslinkio kelias"
+
+#~ msgid "Title Properties"
+#~ msgstr "Pavadinimo ypatybės"
+
 #~ msgid ""
 #~ "To make sure you intend to do this, please remove the target USB stick "
 #~ "now and stick it back in upon prompt. Press OK when you have taken the "
@@ -5445,6 +6143,15 @@ msgstr "įjungta"
 #~ "Jeigu jūs ketinate daryti tai, prašome pašalinti USB raktelį dabar. "
 #~ "Spauskite OK, kai išimsite raktelįį."
 
+#~ msgid "Tuner Menu"
+#~ msgstr "Imtuvo meniu"
+
+#~ msgid "Tutorial Wizard"
+#~ msgstr "Mokymo Vedlys"
+
+#~ msgid "Update..."
+#~ msgstr "Atnaujinimas..."
+
 #, fuzzy
 #~ msgid "Use Authorization"
 #~ msgstr "Poliarizacija"
@@ -5456,12 +6163,61 @@ msgstr "įjungta"
 #~ msgid "Use SSL Encryption"
 #~ msgstr "Užšifravimas"
 
+#~ msgid ""
+#~ "Use customazing directory for package installation, removal, upgrading"
+#~ msgstr ""
+#~ "Naudokite pasirinktą direktoriją paketų įdiegimui, pašalinimui, "
+#~ "patobulinimui"
+
+#~ msgid ""
+#~ "Use this directory as the the root directory for package installation, "
+#~ "removal, upgrading"
+#~ msgstr ""
+#~ "Naudokite šią direktoriją kaip pagrindinę direktoriją paketų įdiegimui, "
+#~ "pašalinimui, patobulinimui"
+
 #~ msgid "VCR Switch"
 #~ msgstr "VCR perjungėjas"
 
+#~ msgid "VLC Media List"
+#~ msgstr "VLC media sąrašas"
+
+#~ msgid "VLC Server Configuration"
+#~ msgstr "VLC serverio konfigūracija"
+
+#~ msgid "VLC Server List"
+#~ msgstr "VLC serverių sąrašas"
+
+#~ msgid "Video CD"
+#~ msgstr "Vaizdo CD"
+
+#~ msgid "View RSS"
+#~ msgstr "Žiūrėti RSS"
+
+#~ msgid "VlcMediaListScreen"
+#~ msgstr "Vlc media sąrašo ekranas"
+
+#~ msgid "VlcServerConfigScreen"
+#~ msgstr "Vlc serverio konfigūravimo ekranas"
+
 #~ msgid "Waiting for USB stick to settle..."
 #~ msgstr "Laukite kol USB raktelis susitvarkys..."
 
+#~ msgid "Weather Channel"
+#~ msgstr "Oro kanalas"
+
+#~ msgid "Webinterface"
+#~ msgstr "Web sąsaja"
+
+#~ msgid "Webinterface: Main Setup"
+#~ msgstr "Web sąsaja: Svarbiausi nustatymai"
+
+#~ msgid "Webinterface: edit Interface"
+#~ msgstr "Web sąsaja: redaguoti"
+
+#~ msgid "Webinterface: list of configured Interfaces"
+#~ msgstr "Web sąsaja: konfigūruotų sąsajų sąrašas"
+
 #, fuzzy
 #~ msgid ""
 #~ "Welcome.\n"
@@ -5552,6 +6308,12 @@ msgstr "įjungta"
 #~ "Jūsų belaidžio interneto prisijungimas neveikia!\n"
 #~ "Prašom pasirinkti tai, ką jūs norite padaryti paskui."
 
+#~ msgid "alert at shutdown"
+#~ msgstr "pavojus išjungiant"
+
+#~ msgid "burn to DVD..."
+#~ msgstr "išdeginti į DVD..."
+
 #~ msgid "by Exif"
 #~ msgstr "pagal Exif"
 
@@ -5561,8 +6323,20 @@ msgstr "įjungta"
 #~ msgid "color"
 #~ msgstr "Spalva"
 
-#~ msgid "delete"
-#~ msgstr "trinti"
+#~ msgid "cutlist Editor"
+#~ msgstr "sąrašo iškirpimo Redaktorius"
+
+#~ msgid "cutlist editor"
+#~ msgstr "sąrašo iškirpimo redaktorius"
+
+#~ msgid "cutlist editor..."
+#~ msgstr "sąrašo iškirpimo redaktorius ..."
+
+#~ msgid "delete entry"
+#~ msgstr "trinti užduotį"
+
+#~ msgid "edit settings"
+#~ msgstr "redaguoti nustatymus"
 
 #~ msgid "equal to Socket A"
 #~ msgstr "lygus lizdui A"
@@ -5573,6 +6347,9 @@ msgstr "įjungta"
 #~ msgid "full /etc directory"
 #~ msgstr "pilną /etc direktoriją"
 
+#~ msgid "grab this frame as bitmap"
+#~ msgstr "užgriebti šį rėmą kaip taškinę grafiką"
+
 #~ msgid "headline"
 #~ msgstr "antraštė"
 
@@ -5615,8 +6392,26 @@ msgstr "įjungta"
 #~ msgid "show second tag"
 #~ msgstr "rodyti sekančią kortelę"
 
+#~ msgid "shutdown immediately"
+#~ msgstr "išjungti nedelsiant"
+
 #~ msgid "spaces (top, between rows, left)"
 #~ msgstr "erdvė (viršus, tarp eilių, kairė)"
 
+#~ msgid "subtitle selection"
+#~ msgstr "subtitrų pasirinkimas"
+
 #~ msgid "text"
 #~ msgstr "tekstas"
+
+#~ msgid "view selected subtitles..."
+#~ msgstr "peržiūrėkite išsirinktus subtitrus..."
+
+#~ msgid "view teletext..."
+#~ msgstr "žiūrėti teletekstą..."
+
+#~ msgid "white"
+#~ msgstr "baltas"
+
+#~ msgid "x"
+#~ msgstr "x"
index 03362751b41e75517a78ed572f10157029c4ab45..ee5fae4ae85a6c775f9cfd1ce0e69e4bb1e9f377 100644 (file)
--- a/po/lv.po
+++ b/po/lv.po
@@ -2,8 +2,8 @@ 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"
+"POT-Creation-Date: 2009-02-26 14:15+0100\n"
+"PO-Revision-Date: 2009-02-25 20:35+0200\n"
 "Last-Translator: Ivo Grinbergs <ivog@apollo.lv>\n"
 "Language-Team: Ivo / enigma2 (c) <ivog@apolllo.lv>\n"
 "MIME-Version: 1.0\n"
@@ -17,62 +17,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Paplašinātās opcijas un iestatījumi."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Nospiediet OK un gaidiet!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Veidot Dreambox iestatījumu dublējumkopiju."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Rediģēt atjaunināšanas avota adresi."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 restartēsies pēc atjaunošanas"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Dreambox programmatūras atjaunināšana tiešsaistē."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Spiediet OK uz tālvadības pults, lai turpinātu."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Atjaunot Dreambox iestatījumus."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Atjaunot Dreambox ar jaunu programmatūru."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Atjaunot dublējumkopijas pēc datuma."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Meklēt lokālās pakotnes un uzstādīt tās."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Izvēlieties dublējumkopijas ierīci.\n"
+"Pašreizējā ierīce: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Skatīt, uzstādīt un dzēst pieejamās vai uzstādītās pakotnes."
 
 msgid " "
 msgstr " "
@@ -327,14 +359,14 @@ msgid ""
 "A sleep timer wants to set your\n"
 "Dreambox to standby. Do that now?"
 msgstr ""
-"Sleep taimeris vēlas pārslēgt\n"
+"Miega 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"
+"Miega taimeris vēlas izslēgt\n"
 "Dreambox. Vai darīt to tagad?"
 
 msgid ""
@@ -412,8 +444,8 @@ msgid ""
 "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 "
+"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."
 
@@ -421,13 +453,13 @@ msgid "Advanced"
 msgstr "Paplašināts"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Paplašinātās opcijas"
 
 msgid "Advanced Video Setup"
 msgstr "Paplašinātā attēla iestatne"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Paplašinātā atjaunošana"
 
 msgid "After event"
 msgstr "Pēc notikuma"
@@ -462,9 +494,6 @@ 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!"
 
@@ -489,11 +518,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Vai tiešām vēlaties atjaunot\n"
+"šo kopiju:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Vai tiešām vēlaties atjaunot šo Enigma2 kopiju?\n"
+"Enigma2 restartēsies pēc atjaunošanas"
 
 msgid "Artist"
 msgstr "Izpildītājs"
@@ -566,22 +599,22 @@ msgid "Backup Mode"
 msgstr "Dublējumkopijas režīms"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Dublējumkopija izveidota."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Dublējumkopija neizdevās."
 
 msgid "Backup is done. Please press OK to see the result."
-msgstr "Dublējumkopija izveidota. Lūdzu spiediet OK lai apskatītu rezultātu."
+msgstr "Dublējumkopija izveidota. Lūdzu spiediet OK, lai apskatītu rezultātu."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Dublējumkopija tiek veidota"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Dublējumkopija tiek veidota..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Veidot sistēmas iestatījumu dublējumkopiju"
 
 msgid "Band"
 msgstr "Josla"
@@ -600,7 +633,7 @@ 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"
+msgstr "Darbība, kad filma ir palaista"
 
 msgid "Behavior when a movie is stopped"
 msgstr "Darbība kad filma ir apturēta"
@@ -722,10 +755,10 @@ msgid "Choose Tuner"
 msgstr "Izvēlēties uztvērēju"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Izvēlieties dublējumkopijas datnes"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Izvēlieties dublējumkopijas vietu"
 
 msgid "Choose bouquet"
 msgstr "Izvēlēties buķeti"
@@ -737,7 +770,7 @@ msgid "Choose target folder"
 msgstr "Izvēlēties mērķa mapi"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Izvēlieties atjaunināšanas avotu"
 
 msgid "Choose your Skin"
 msgstr "Izvēlēties ādiņu"
@@ -853,7 +886,7 @@ 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?"
+msgstr "Nevar ielādēt datu nesēju! Disks nav ievietots?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
@@ -962,8 +995,9 @@ msgstr ""
 msgid "Description"
 msgstr "Apraksts"
 
+# ???
 msgid "Deselect"
-msgstr ""
+msgstr "Neizvēlēties"
 
 msgid "Destination directory"
 msgstr "Galamērķa mape"
@@ -1104,7 +1138,7 @@ 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 ""
+msgstr "Vai vēleties uzstādīt pakotni:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Vai vēlaties atskaņot DVD?"
@@ -1113,10 +1147,10 @@ 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 ""
+msgstr "Vai vēlaties atsāknēt Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Vai vēleties dzēst pakotni:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Vai vēlaties atjaunot savus iestatījumus?"
@@ -1125,7 +1159,7 @@ 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 ""
+msgstr "Vai vēlaties atjaunināt Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1135,7 +1169,7 @@ msgstr ""
 "Nospiediet OK un gaidiet!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Vai vēlaties atjaunināt pakotni:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Vai vēlaties skatīt pamācibu?"
@@ -1145,15 +1179,16 @@ 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"
+msgstr "Pabeigts - uzstādītas vai atjauninā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"
+msgstr "Pabeigts - uzstādītas vai atjauninātas %d pakotnes ar %d kļūdām"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
 msgstr ""
+"Pabeigts - uzstādītas, atjauninātas vai dzēstas %d pakotnes ar %d kļūdām"
 
 msgid "Download"
 msgstr "Lejuplādēt"
@@ -1205,6 +1240,9 @@ msgstr "Rediģēt"
 msgid "Edit DNS"
 msgstr "Rediģēt DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr ""
+
 msgid "Edit Title"
 msgstr "Rediģēt nosaukumu"
 
@@ -1311,7 +1349,7 @@ msgid "Error"
 msgstr "Kļūda"
 
 msgid "Error executing plugin"
-msgstr "Kļūda palaižot spraudni"
+msgstr "Kļūda, palaižot spraudni"
 
 #, python-format
 msgid ""
@@ -1467,8 +1505,8 @@ 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?"
+"GUI nepieciešams restartēt, lai lietotu jauno ādiņu\n"
+"Vai vēlaties restartēt GUI tagad?"
 
 msgid "Gateway"
 msgstr "Vārteja"
@@ -1547,7 +1585,7 @@ msgid ""
 "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."
+"SCART savienojumu. Spiediet OK, lai atgrieztos."
 
 msgid ""
 "If your TV has a brightness or contrast enhancement, disable it. If there is "
@@ -1574,7 +1612,7 @@ msgid "Image flash utility"
 msgstr "Imidža ielādes utilītprogramma"
 
 msgid "Image-Upgrade"
-msgstr "Imidža atjaunošana"
+msgstr "Imidža atjaunināšana"
 
 msgid "In Progress"
 msgstr "Izpilda"
@@ -1582,7 +1620,7 @@ 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"
+"TV tika pārslēgts uz ierakstāmo kanālu, lai uzsāktu ierakstu pēc taimera!\n"
 
 msgid "Increased voltage"
 msgstr "Palielināt spriegumu"
@@ -1615,12 +1653,18 @@ msgid "Input"
 msgstr "Ievade"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Uzstādīt jaunu imidžu no USB atmiņas"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Uzstādīt jaunu imidžu no tīmekļa pārlūka"
 
 msgid "Install local IPKG"
+msgstr "Uzstādīt lokālo IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr ""
+
+msgid "Install software updates..."
 msgstr ""
 
 msgid "Installing"
@@ -1667,7 +1711,7 @@ msgid "Invert display"
 msgstr "Inverss displejs"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Itāļu"
@@ -1716,7 +1760,7 @@ msgid "Latitude"
 msgstr "Platums"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Latviešu"
 
 msgid "Leave DVD Player?"
 msgstr "Iziet no DVD atskaņotāja?"
@@ -1724,6 +1768,9 @@ msgstr "Iziet no DVD atskaņotāja?"
 msgid "Left"
 msgstr "Kreisais"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr ""
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1789,16 +1836,16 @@ msgid "Mainmenu"
 msgstr "Galvenā izvēlne"
 
 msgid "Make this mark an 'in' point"
-msgstr "Padarīt šo zīmi par 'iekšā' punktu"
+msgstr "Padarīt šo zīmi par 'ieejas' punktu"
 
 msgid "Make this mark an 'out' point"
-msgstr "Padarīt šo zīmi par 'ārā' punktu"
+msgstr "Padarīt šo zīmi par 'izejas' 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 ""
+msgstr "Pārvaldīt ierīces programmatūru"
 
 msgid "Manual Scan"
 msgstr "Manuālā meklēšana"
@@ -1894,7 +1941,7 @@ 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!"
+msgstr "NFI imidža lādēšana pabeigta. Spiediet dzelteno pogu, lai atsāknētu!"
 
 msgid "NOW"
 msgstr "PAŠREIZ"
@@ -1994,6 +2041,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Nav informācijas par šo imidža datni"
 
+msgid "No displayable files on this medium found!"
+msgstr ""
+
 msgid "No event info found, recording indefinitely."
 msgstr "Nav atrasta informācija par notikumiem, ieraksts turpinās."
 
@@ -2002,7 +2052,7 @@ 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."
+msgstr "Pakotnes netika atjauninātas. 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."
@@ -2122,7 +2172,7 @@ msgid ""
 "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 "
+"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."
 
@@ -2130,7 +2180,7 @@ msgid "OK"
 msgstr "Labi"
 
 msgid "OK, guide me through the upgrade process"
-msgstr "Jā, virzīt mani jaunināšanas procesā"
+msgstr "Jā, pavadīt mani atjaunināšanas procesā"
 
 msgid "OSD Settings"
 msgstr "OSD iestatījumi"
@@ -2166,10 +2216,10 @@ msgid "Package list update"
 msgstr "Pakotņu saraksta atjaunināšana"
 
 msgid "Packet management"
-msgstr "Paku pārvaldība"
+msgstr "Pakotņu pārvaldība"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Pakotņu pārvaldnieks"
 
 msgid "Page"
 msgstr "Lappuse"
@@ -2218,6 +2268,12 @@ msgstr "Atskaņot"
 msgid "Play Audio-CD..."
 msgstr "Atskaņot mūzikas CD..."
 
+msgid "Play DVD"
+msgstr ""
+
+msgid "Play Music..."
+msgstr ""
+
 msgid "Play recorded movies..."
 msgstr "Atskaņot ierakstītās filmas..."
 
@@ -2225,7 +2281,7 @@ 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"
+msgstr "Lūdzu izvēlēties datu nesēju meklēšanai"
 
 msgid "Please change recording endtime"
 msgstr "Lūdzu nomainiet ieraksta beigu laiku"
@@ -2250,12 +2306,12 @@ 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 "
+"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! "
+"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"
@@ -2285,11 +2341,11 @@ 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ēļ "
+"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."
+msgstr "Lūdzu spiediet OK, lai turpinātu."
 
 msgid "Please press OK!"
 msgstr "Lūdzu spiediet OK!"
@@ -2310,7 +2366,7 @@ msgid "Please select a subservice..."
 msgstr "Lūdzu izvēlieties papildkanālu..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Lūdzu izvēlieties datu nesēju dublējumkopijas veidošanai"
 
 msgid "Please select tag to filter..."
 msgstr "Lūdzu izvēlieties etiķeti filtrēšanai..."
@@ -2335,19 +2391,19 @@ msgid ""
 "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"
+"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."
+"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 "
+"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..."
+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..."
@@ -2359,7 +2415,7 @@ 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..."
+msgstr "Lūdzu gaidiet..."
 
 msgid "Please wait... Loading list..."
 msgstr "Lūdzu gaidiet... Ielādē sarakstu..."
@@ -2407,7 +2463,6 @@ msgstr "Pozicioniera kustība"
 msgid "Positioner setup"
 msgstr "Pozicioniera iestatne"
 
-# ???
 msgid "Positioner storage"
 msgstr "Pozicioniera atmiņa"
 
@@ -2421,23 +2476,23 @@ 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."
+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."
+msgstr "Spiediet OK, lai aktivizētu iestatījumus."
 
 msgid "Press OK to edit the settings."
-msgstr "Spiediet OK lai rediģētu iestatījumus."
+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."
+msgstr "Spiediet OK, lai meklētu."
 
 msgid "Press OK to start the scan"
-msgstr "Spiediet OK lai uzsāktu meklēšanu."
+msgstr "Spiediet OK, lai uzsāktu meklēšanu."
 
 msgid "Prev"
 msgstr "Iepriekšējais"
@@ -2451,7 +2506,6 @@ msgstr "Primārā DNS"
 msgid "Priority"
 msgstr "Prioritāte"
 
-# ???
 msgid "Properties of current title"
 msgstr "Aktīvā nosaukuma parametri"
 
@@ -2470,6 +2524,9 @@ msgstr "Operators, kuru vēlaties meklēt"
 msgid "Providers"
 msgstr "Operatori"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr ""
+
 msgid "Quick"
 msgstr "Ātrais"
 
@@ -2535,7 +2592,7 @@ 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ā!"
+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"
@@ -2550,7 +2607,7 @@ msgid "Refresh rate selection."
 msgstr "Atjaunināšanas ātruma izvēle."
 
 msgid "Reload"
-msgstr ""
+msgstr "Pārlādēt"
 
 msgid "Remove Bookmark"
 msgstr "Dzēst grāmatzīmi"
@@ -2565,7 +2622,7 @@ msgid "Remove currently selected title"
 msgstr "Dzēst pašreiz atlasīto virsrakstu"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Dzēst pabeigtos."
 
 msgid "Remove plugins"
 msgstr "Dzēst spraudņus"
@@ -2583,11 +2640,11 @@ msgid "Remove title"
 msgstr "Dzēst virsrakstu"
 
 msgid "Removing"
-msgstr ""
+msgstr "Dzēšana"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
-msgstr "Mapes %s aizvākšana neizdevās. (Varbūt nav tukša.)"
+msgstr "Neizdevās dzēst mapi %s. (Varbūt nav tukša.)"
 
 msgid "Rename"
 msgstr "Pārsaukt"
@@ -2635,22 +2692,22 @@ msgid "Restore"
 msgstr "Atjaunot"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Atjaunot dublējumkopijas..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Notiek atjaunošana"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Notiek atjaunošana..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Atjaunot sistēmas iestatījumus"
 
 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 "
+"Iestatījumu atjaunošana pabeigta. Lūdzu spiediet OK, lai aktivizētu "
 "atjaunotos iestatījumus."
 
 msgid "Resume from last position"
@@ -2739,6 +2796,9 @@ msgstr "Mērogošanas režīms"
 msgid "Scan "
 msgstr "Meklēt "
 
+msgid "Scan Files..."
+msgstr ""
+
 msgid "Scan QAM128"
 msgstr "Meklēt QAM128"
 
@@ -2767,40 +2827,40 @@ msgid "Scan additional SR"
 msgstr "Meklēt papildu SR"
 
 msgid "Scan band EU HYPER"
-msgstr "Skenēt diapazonu EU HYPER "
+msgstr "Meklēt diapazonā EU HYPER "
 
 msgid "Scan band EU MID"
-msgstr "Skenēt diapazonu EU MID"
+msgstr "Meklēt diapazonā EU MID"
 
 msgid "Scan band EU SUPER"
-msgstr "Skenēt diapazonu EU SUPER"
+msgstr "Meklēt diapazonā EU SUPER"
 
 msgid "Scan band EU UHF IV"
-msgstr "Skenēt diapazonu EU UHF IV"
+msgstr "Meklēt diapazonā EU UHF IV"
 
 msgid "Scan band EU UHF V"
-msgstr "Skenēt diapazonu EU UHF V"
+msgstr "Meklēt diapazonā EU UHF V"
 
 msgid "Scan band EU VHF I"
-msgstr "Skenēt diapazonu EU VHF I"
+msgstr "Meklēt diapazonā EU VHF I"
 
 msgid "Scan band EU VHF III"
-msgstr "Skenēt diapazonu EU VHF III"
+msgstr "Meklēt diapazonā EU VHF III"
 
 msgid "Scan band US HIGH"
-msgstr "Skenēt diapazonu US HIGH"
+msgstr "Meklēt diapazonā US HIGH"
 
 msgid "Scan band US HYPER"
-msgstr "Skenēt diapazonu US HYPER"
+msgstr "Meklēt diapazonā US HYPER"
 
 msgid "Scan band US LOW"
-msgstr "Skenēt diapazonu US LOW"
+msgstr "Meklēt diapazonā US LOW"
 
 msgid "Scan band US MID"
-msgstr "Skenēt diapazonu US MID"
+msgstr "Meklēt diapazonā US MID"
 
 msgid "Scan band US SUPER"
-msgstr "Skenēt diapazonu US SUPER"
+msgstr "Meklēt diapazonā US SUPER"
 
 msgid ""
 "Scan your network for wireless Access Points and connect to them using your "
@@ -2828,11 +2888,14 @@ msgid "Seek"
 msgstr "Meklēt"
 
 msgid "Select"
-msgstr ""
+msgstr "Izvēlēties"
 
 msgid "Select HDD"
 msgstr "Izvēlēties cieto disku"
 
+msgid "Select IPKG source to edit..."
+msgstr ""
+
 msgid "Select Location"
 msgstr "Izvēlēties atrašanās vietu"
 
@@ -2852,10 +2915,10 @@ msgid "Select channel to record from"
 msgstr "Izvēlēties ierakstāmo kanālu"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Izvēlēties datnes dublējumkopēšanai. Pašreiz izvēlētas:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Izvēlēties datnes/mapes dublējumkopēšanai..."
 
 msgid "Select image"
 msgstr "Izvēlēties imidžu"
@@ -2866,6 +2929,9 @@ msgstr "Izvēlēties atsvaidzes intensitāti"
 msgid "Select video input"
 msgstr "Izvēlēties attēla ieeju"
 
+msgid "Select video input with up/down buttons"
+msgstr ""
+
 msgid "Select video mode"
 msgstr "Izvēlēties attēla režīmu"
 
@@ -2959,7 +3025,7 @@ 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 "
+msgstr "Ieraksta laikā displejā rādīt mirgojošu pulksteni"
 
 msgid "Show infobar on channel change"
 msgstr "Rādīt infojoslu, mainot kanālu"
@@ -3041,16 +3107,16 @@ msgid "Slow Motion speeds"
 msgstr "Palēninātās kustības ātrumi"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Programmatūras pārvaldnieks"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Programmatūras pārvaldnieks..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Programmatūras atjaunošana"
 
 msgid "Software update"
-msgstr ""
+msgstr "Programmatūras atjaunināšana"
 
 msgid "Some plugins are not available:\n"
 msgstr "Daži spraudņi nav pieejami:\n"
@@ -3059,10 +3125,10 @@ msgid "Somewhere else"
 msgstr "Kaut kur citur"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Atvainojiet, MediaScanner nav uzstādīts!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Atvainojiet, dublējumkopijas nav atrastas!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3071,12 +3137,14 @@ msgid ""
 msgstr ""
 "Izvēlētais dublējumkopijas galamērķis neeksistē.\n"
 "\n"
-"Lūdzu izvēlieties citu!"
+"Lūdzu izvēlieties citu."
 
 msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Izvēlētais dublējumkopijas galamērķis nav ierakstāms.\n"
+"Lūdzu izvēlieties citu."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
@@ -3287,6 +3355,9 @@ msgstr ""
 "\n"
 "Vai vēlaties ierakstīt USB lādētāju šajā atmiņas ierīcē?"
 
+msgid "The following files were found..."
+msgstr ""
+
 # ???
 msgid ""
 "The input port should be configured now.\n"
@@ -3380,6 +3451,9 @@ msgstr ""
 "Izvēlētajā sadaļā var nebūt pietiekami daudz vietas.\n"
 "Vai tiešām vēlaties turpināt?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr ""
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Šī .NFI datne nesatur derīgu %s imidžu!"
@@ -3396,7 +3470,7 @@ msgid ""
 "flash memory?"
 msgstr ""
 "Šai .NFI datnei ir derīgs md5sum paraksts. Vai turpināt imidža programmēšanu "
-"iekšējā atmiņāį?"
+"iekšējā atmiņā?"
 
 msgid ""
 "This DVD RW medium is already formatted - reformatting will erase all "
@@ -3405,6 +3479,10 @@ 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 streams!"
+msgstr ""
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Šis Dreambox modelis nevar atkodēt %s attēla plūsmas!"
@@ -3463,11 +3541,11 @@ 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 "
+" - 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ā."
+"- 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."
@@ -3556,7 +3634,7 @@ msgid ""
 "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"
+"Lūdzu veiciet šādus soļus, lai atjauninātu Dreambox programmatūru:\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ā "
@@ -3605,6 +3683,9 @@ msgstr "Mēģina atrast izmantotus transponderus kabeļu tīklā.. lūdzu gaidie
 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 "Trying to download a new packetlist. Please wait..."
+msgstr ""
+
 msgid "Tue"
 msgstr "Ot"
 
@@ -3705,10 +3786,10 @@ 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 ""
+msgstr "Atjaunināšana pabeigta."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
-msgstr "Atjaunošana pabeigta. Vai vēlaties atsāknēt Dreambox?"
+msgstr "Atjaunināšana pabeigta. Vai vēlaties atsāknēt Dreambox?"
 
 msgid "Upgrading"
 msgstr "Atjaunošana"
@@ -3757,7 +3838,7 @@ msgid ""
 "\n"
 "Please set up tuner A"
 msgstr ""
-"Lietojiet labo un kreiso izvēles taustiņu lai mainītu izvēli.\n"
+"Lietojiet labo un kreiso izvēles taustiņu, lai mainītu izvēli.\n"
 "\n"
 "Lūdzu iestatiet uztvērēju A"
 
@@ -3765,7 +3846,7 @@ 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 "
+"Lietojiet tālvadības pults up/down taustiņus, lai izdarītu izvēli. Pēc tam "
 "spiediet OK."
 
 # ???
@@ -3773,7 +3854,7 @@ 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"
+msgstr "Lietot vedni galveno iespēju iestatīšanai"
 
 msgid "Used service scan type"
 msgstr "Lietotais kanālu meklēšanas veids"
@@ -3782,7 +3863,7 @@ msgid "User defined"
 msgstr "Lietotāja definēts"
 
 msgid "VCR scart"
-msgstr "VCR skart savienojums"
+msgstr "VCR scart savienojums"
 
 msgid "VMGM (intro trailer)"
 msgstr "VMGM (ievada treileris)"
@@ -3822,10 +3903,19 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Attēla režīma izvēle."
 
+msgid "View Movies..."
+msgstr ""
+
+msgid "View Photos..."
+msgstr ""
+
 # ???
 msgid "View Rass interactive..."
 msgstr "Skatīt Rass interaktīvi..."
 
+msgid "View Video CD..."
+msgstr ""
+
 msgid "View teletext..."
 msgstr "Skatīt teletekstu..."
 
@@ -3867,7 +3957,7 @@ 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."
+"Lūdzu spiediet OK, lai sāktu."
 
 msgid "Wed"
 msgstr "Tr"
@@ -3890,9 +3980,9 @@ 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"
+"izvēlētos 'griezuma sākumu'.\n"
 "\n"
-"Tad ejiet uz beigām, spiediet OK, izvēlieties 'beigu griezienu'. Tas arī "
+"Tad ejiet uz beigām, spiediet OK, izvēlieties 'griezuma beigas'. Tas arī "
 "viss."
 
 msgid ""
@@ -3900,9 +3990,9 @@ msgid ""
 "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."
+"Sveicināti imidža atjaunināš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 atjaunināšanu."
 
 msgid ""
 "Welcome.\n"
@@ -3932,6 +4022,11 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Atjaunojot rūpnīcas uzstādījumus, jūs zaudēsiet VISUS konfigurācijas datus\n"
+"(ieskaitot buķetes, kanālus, pavadoņu datus ...)\n"
+"Pēc rūpnīcas uzstādījumu atjaunošanas, ierīce automātiski restartēsies!\n"
+"\n"
+"Vai tiešām atjaunot rūpnīcas uzstādījumus?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Kur Jūs vēlaties veidot savu iestatījumu dublējumkopiju?"
@@ -4001,7 +4096,7 @@ 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!"
+msgstr "Jūs šo nevarat dzēst!"
 
 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."
@@ -4016,7 +4111,7 @@ msgstr ""
 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 "
+"Jūs izvēlējāties neko neuzstādīt. Lūdzu spiediet OK, lai pabeigtu "
 "uzstādīšanas vedni."
 
 msgid ""
@@ -4033,9 +4128,9 @@ msgid ""
 "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 "
+"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."
+"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"
@@ -4043,19 +4138,21 @@ msgid ""
 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."
+"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."
+"Jūs izvēlējāties veidot dublējumkopiju uz 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 ""
+"Jūs izvēlējāties veidot iestatījumu dublējumkopiju. Lūdzu spiediet OK, lai "
+"sāktu kopijas veidošanu."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4068,10 +4165,12 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"You have chosen to restore your settings. Enigma2 will restart after "
+"restore. Please press OK to start the restore now."
 
 #, python-format
 msgid "You have to wait %s!"
-msgstr "Jums jāuzgaidai %s!"
+msgstr "Jums jāuzgaida %s!"
 
 msgid ""
 "You need a PC connected to your dreambox. If you need further instructions, "
@@ -4084,7 +4183,7 @@ msgstr ""
 "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. "
+"iestatījumus."
 
 msgid ""
 "You need to set a pin code and hide it from your children.\n"
@@ -4105,9 +4204,14 @@ 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 "
+"Dublējumkopija izveidota. Tagad izskaidrosim turpmāko atjaunināšanas "
 "procesu. "
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Dreambox izslēdzas. Lūdzu gaidiet..."
 
@@ -4115,14 +4219,15 @@ 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."
+"Dreambox nav pievienots internetam kā nākas. 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."
+"Uztvērēja programmatūru nepieciešams atjaunināt.\n"
+"Spiediet OK, lai sāktu atjaunināšanu."
 
 msgid "Your network configuration has been activated."
 msgstr "Tīkla konfigurācija aktivizēta."
@@ -4426,7 +4531,7 @@ msgid "failed"
 msgstr "neizdevās"
 
 msgid "fileformats (BMP, PNG, JPG, GIF)"
-msgstr "datņu formātii (BMP, PNG, JPG, GIF)"
+msgstr "datņu formāti (BMP, PNG, JPG, GIF)"
 
 msgid "filename"
 msgstr "datnes nosaukums"
@@ -4752,7 +4857,7 @@ msgstr "meklēšana pabeigta!"
 
 #, python-format
 msgid "scan in progress - %d%% done!"
-msgstr "notiek meklēšana - %d %% pabeigts!"
+msgstr "notiek meklēšana - %d%% pabeigts!"
 
 msgid "scan state"
 msgstr "meklēšanas statuss"
@@ -4991,14 +5096,17 @@ msgstr "pārslēgts"
 
 #~ msgid ""
 #~ "\n"
-#~ "Enigma2 will restart after the restore"
+#~ "System will restart after the restore!"
 #~ msgstr ""
 #~ "\n"
-#~ "Enigma2 restartēsies pēc atjaunošanas"
+#~ "Sistēma restartēsies pēc atjaunošanas!"
 
 #~ msgid "5 seconds"
 #~ msgstr "5 sekundes"
 
+#~ msgid "An error occured!"
+#~ msgstr "Kļūda!"
+
 #~ msgid "Autoresolution Settings"
 #~ msgstr "Auto izšķirtspējas iestatījumi"
 
@@ -5062,6 +5170,15 @@ msgstr "pārslēgts"
 #~ msgid "Input 9"
 #~ msgstr "9 ieeja"
 
+#~ msgid ""
+#~ "Sorry, your backup destination is not writeable.\n"
+#~ "\n"
+#~ "Lūdzu izvēlieties citu."
+#~ msgstr ""
+#~ "Izvēlētais dublējumkopijas galamērķis nav ierakstāms.\n"
+#~ "\n"
+#~ "Lūdzu izvēlieties citu."
+
 #~ msgid "committed, toneburst"
 #~ msgstr "aktīvā, toņsignāls"
 
index a61d7f60427b25b3a55931a4ab5c6880991d68ca..3a6b67751400161a39022852bcb1f442319516d9 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,10 +6,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tuxbox-enigma 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-16 00:04+0100\n"
-"PO-Revision-Date: 2009-01-24 12:54+0100\n"
-"Last-Translator: Benny De Tandt <Benny.DeTandt@gmail.com>\n"
-"Language-Team: none <michel@weeren.net>\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-11 20:19+0100\n"
+"Last-Translator: \n"
+"Language-Team:  <Benny.DeTandt@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -22,62 +22,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Geavanceerde opties en instellingen."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Druk op OK en een ogenblik geduld!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Back-up uw Dreambox instellingen."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Bewerk het upgrade bron adres."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 zal herstarten na het terugzetten."
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Online bijwerken van uw Dreambox software."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Druk op de OK toets om door te gaan."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Herstel uw Dreambox instellingen."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Herstel uw Dreambox met een nieuwe firmware."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Terugplaatsen van uw back-ups volgens datum."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Zoek naar lokale pakketten en installeer deze."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Kies een back-up apparaat.\n"
+"Huidige apparaat: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Bekijk, installeer en verwijder beschikbare of geïnstalleerde pakketten."
 
 msgid " "
 msgstr " "
@@ -422,13 +454,13 @@ msgid "Advanced"
 msgstr "Expert"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Geavanceerde opties"
 
 msgid "Advanced Video Setup"
 msgstr "Geavanceerde video instellingen"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Geavanceerd herstellen"
 
 msgid "After event"
 msgstr "Na opname"
@@ -461,9 +493,6 @@ msgstr "Alternatieve tuner prioriteit"
 msgid "An empty filename is illegal."
 msgstr "Een lege bestandsnaam is ongeldig"
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Een onbekende fout is gebeurd!"
 
@@ -474,7 +503,7 @@ msgid ""
 "Are you sure you want to activate this network configuration?\n"
 "\n"
 msgstr ""
-"Bent u zeker om deze netwerk configuratie te activeren?\n"
+"Weet u zeker om deze netwerk configuratie te activeren?\n"
 "\n"
 
 msgid ""
@@ -488,11 +517,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Weet u zeker dat u volgende back-up\n"
+"wilt herstellen:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Weet u zeker dat u uw Enigma2 back-up wilt terugplaatsen?\n"
+"Enigma2 zal herstarten na het terugzetten"
 
 msgid "Artist"
 msgstr "Artiest"
@@ -555,31 +588,31 @@ msgid "Background"
 msgstr "Achtergrond"
 
 msgid "Backup"
-msgstr "Backup"
+msgstr "Back-up"
 
 msgid "Backup Location"
-msgstr "Backup locatie"
+msgstr "Back-up locatie"
 
 msgid "Backup Mode"
-msgstr "Backup modus"
+msgstr "Back-up modus"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Back-up voltooid."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Back-up is mislukt."
 
 msgid "Backup is done. Please press OK to see the result."
-msgstr "Backup is voltooid. Druk op OK om de resultaten te zien."
+msgstr "Back-up is voltooid. Druk op OK om de resultaten te zien."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Back-up bezig"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Back-up bezig..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Back-up instellingen"
 
 msgid "Band"
 msgstr "Band"
@@ -715,13 +748,13 @@ msgid "Checking Filesystem..."
 msgstr "Controleert bestandssysteem..."
 
 msgid "Choose Tuner"
-msgstr "Selecteer een tuner"
+msgstr "Kies een tuner"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Kies back-up bestanden"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Kies een back-up locatie"
 
 msgid "Choose bouquet"
 msgstr "Kies boeket"
@@ -733,16 +766,16 @@ msgid "Choose target folder"
 msgstr "Kies doelmap"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Kies upgrade bron"
 
 msgid "Choose your Skin"
 msgstr "Kies een Skin"
 
 msgid "Circular left"
-msgstr ""
+msgstr "Circulaire links"
 
 msgid "Circular right"
-msgstr ""
+msgstr "Circulaire rechts"
 
 msgid "Cleanup"
 msgstr "Opruimen"
@@ -789,6 +822,9 @@ msgstr "Comitted DiSEqC commando"
 msgid "Common Interface"
 msgstr "Common Interface"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Compact Flash"
 
@@ -801,6 +837,9 @@ msgstr "Compleet"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Complex (mixen audio sporen en aspecten)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Configuratie modus"
 
@@ -852,7 +891,7 @@ msgstr "Kan medium niet laden! Geen disk in speler?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
-msgstr ""
+msgstr "Kan niet opnemen vanwege conflicterende timer %s"
 
 msgid "Create DVD-ISO"
 msgstr "DVD-ISO maken"
@@ -957,7 +996,7 @@ msgid "Description"
 msgstr "Omschrijving"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Deselecteer"
 
 msgid "Destination directory"
 msgstr "Doel map"
@@ -1019,13 +1058,13 @@ msgid "Dish"
 msgstr "Schotel"
 
 msgid "Display 16:9 content as"
-msgstr "16:9 materiaal weergeven als"
+msgstr "Toon 16:9 materiaal als"
 
 msgid "Display 4:3 content as"
-msgstr "4:3 materiaal weergeven als"
+msgstr "Toon 4:3 materiaal als"
 
 msgid "Display >16:9 content as"
-msgstr ""
+msgstr "Toon >16:9 materiaal als"
 
 msgid "Display Setup"
 msgstr "Display instellingen"
@@ -1095,7 +1134,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Wilt u de standaard satellietlijst installeren?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Wilt u het pakket installeren:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Wilt u de DVD in de speler afspelen?"
@@ -1104,10 +1143,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Wilt u de DVD bekijken alvorens te schrijven?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Wilt u uw Dreambox opnieuw opstarten?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Wilt u het pakket verwijderen:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Wilt u uw instelingen nu terugzetten?"
@@ -1116,7 +1155,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Wilt u het afspelen vervolgen?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Wilt u uw Dreambox updaten?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1126,7 +1165,7 @@ msgstr ""
 "Druk op OK en een ogenblik geduld!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Wilt u een upgrade van het pakket:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Wilt u een voorbeeld zien?"
@@ -1145,6 +1184,7 @@ msgstr "Klaar - %d paket(ten) geïnstalleerd of vervangen. %d fout(en)"
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
 msgstr ""
+"Klaar - %d paket(ten) geïnstalleerd, vervangen of verwijderd met %d fout(en)"
 
 msgid "Download"
 msgstr "Downloaden"
@@ -1195,8 +1235,11 @@ msgstr "Bewerk"
 msgid "Edit DNS"
 msgstr "DNS wijzigen"
 
+msgid "Edit IPKG source URL..."
+msgstr "Wijzig IPKG bron URL..."
+
 msgid "Edit Title"
-msgstr "Bewerk Titel"
+msgstr "Wijzig Titel"
 
 msgid "Edit chapters of current title"
 msgstr "Wijzig hoofdstuk van de huidige titel"
@@ -1460,6 +1503,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Gateway"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Genre"
 
@@ -1505,9 +1560,12 @@ msgstr "Hiërarchie informatie"
 msgid "Hierarchy mode"
 msgstr "Hiërarchie modus"
 
-msgid "Horizontal"
+msgid "High bitrate support"
 msgstr ""
 
+msgid "Horizontal"
+msgstr "Horizontaal"
+
 msgid "How many minutes do you want to record?"
 msgstr "Hoeveel minuten wilt u opnemen?"
 
@@ -1602,13 +1660,19 @@ msgid "Input"
 msgstr "Invoer"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Installeer een nieuwe image met een USB-stick"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Installeer een nieuwe image met uw browser"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Installeer lokale IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr "Installeer instellingen, skins, software..."
+
+msgid "Install software updates..."
+msgstr "Installeer software updates..."
 
 msgid "Installing"
 msgstr "Installeert"
@@ -1654,7 +1718,7 @@ msgid "Invert display"
 msgstr "Inverteer display"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Italiaans"
@@ -1703,7 +1767,7 @@ msgid "Latitude"
 msgstr "Breedtegraad"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Lets"
 
 msgid "Leave DVD Player?"
 msgstr "DVD speler afsluiten?"
@@ -1711,6 +1775,9 @@ msgstr "DVD speler afsluiten?"
 msgid "Left"
 msgstr "Links"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Hiermee kunt u bestanden bekijken/bewerken in uw  Dreambox"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1785,7 +1852,7 @@ msgid "Make this mark just a mark"
 msgstr "Universele markering"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Beheer uw ontvanger software"
 
 msgid "Manual Scan"
 msgstr "Handmatig zoeken"
@@ -1794,7 +1861,7 @@ msgid "Manual transponder"
 msgstr "Transponder handmatig"
 
 msgid "Manufacturer"
-msgstr ""
+msgstr "Fabrikant"
 
 msgid "Margin after record"
 msgstr "Marge na afloop opname (minuten)"
@@ -1981,6 +2048,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Geen details voor dit bestand:"
 
+msgid "No displayable files on this medium found!"
+msgstr "Geen weer te geven bestanden op dit medium gevonden!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "Geen EPG gegevens gevonden. Opname voor onbepaalde tijd."
 
@@ -2159,7 +2229,7 @@ msgid "Packet management"
 msgstr "Pakket beheer"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Pakket beheer"
 
 msgid "Page"
 msgstr "Pagina"
@@ -2206,7 +2276,13 @@ msgid "Play"
 msgstr "Afspelen"
 
 msgid "Play Audio-CD..."
-msgstr "Speel Muziek-CD"
+msgstr "Muziek-CD afspelen..."
+
+msgid "Play DVD"
+msgstr "DVD afspelen"
+
+msgid "Play Music..."
+msgstr "Muziek afspelen..."
 
 msgid "Play recorded movies..."
 msgstr "Opname afspelen..."
@@ -2300,7 +2376,7 @@ msgid "Please select a subservice..."
 msgstr "Selecteer een subzender..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Selecteer het te gebruiken medium als back-up locatie..."
 
 msgid "Please select tag to filter..."
 msgstr "Selecteer markering om te filteren..."
@@ -2457,6 +2533,9 @@ msgstr "Zoek op provider"
 msgid "Providers"
 msgstr "Providers"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Python frontend voor /tmp/mmi.socket"
+
 msgid "Quick"
 msgstr "Snel"
 
@@ -2513,7 +2592,7 @@ msgstr "Opname"
 
 #, python-format
 msgid "Record time limited due to conflicting timer %s"
-msgstr ""
+msgstr "Opnametijd beperkt vanwege conflicterende timer %s"
 
 msgid "Recorded files..."
 msgstr "Opgenomen bestanden..."
@@ -2537,7 +2616,7 @@ msgid "Refresh rate selection."
 msgstr "Herhalingsfrequentie selectie"
 
 msgid "Reload"
-msgstr ""
+msgstr "Herlaad"
 
 msgid "Remove Bookmark"
 msgstr "Markeerpunt verwijderen"
@@ -2552,7 +2631,7 @@ msgid "Remove currently selected title"
 msgstr "De momenteel geselecteerde titel verwijderen"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Verwijderen voltooid."
 
 msgid "Remove plugins"
 msgstr "Verwijderen"
@@ -2570,7 +2649,7 @@ msgid "Remove title"
 msgstr "Titel verwijderen"
 
 msgid "Removing"
-msgstr ""
+msgstr "Verwijderen"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2622,16 +2701,16 @@ msgid "Restore"
 msgstr "Herstellen"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Back-ups herstellen ..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Herstellen bezig"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Herstellen bezig..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Herstel instellingen"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2725,6 +2804,9 @@ msgstr "Schaalmodus"
 msgid "Scan "
 msgstr "Zoeken"
 
+msgid "Scan Files..."
+msgstr "Bestanden zoeken..."
+
 msgid "Scan QAM128"
 msgstr "Zoek QAM128"
 
@@ -2813,11 +2895,14 @@ msgid "Seek"
 msgstr "Zoeken"
 
 msgid "Select"
-msgstr ""
+msgstr "Selecteer"
 
 msgid "Select HDD"
 msgstr "Kies harde schijf"
 
+msgid "Select IPKG source to edit..."
+msgstr "Selecteer IPKG bron om te bewerken..."
+
 msgid "Select Location"
 msgstr "Selecteer locatie"
 
@@ -2837,10 +2922,10 @@ msgid "Select channel to record from"
 msgstr "Selecteer een zender voor opname"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Kies bestanden voor back-up. Momenteel geselecteerd:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Kies bestanden/mappen om te back-uppen..."
 
 msgid "Select image"
 msgstr "Selecteer bestand"
@@ -2851,6 +2936,9 @@ msgstr "Selecteer herhalingsfrequentie"
 msgid "Select video input"
 msgstr "Selecteer video ingang"
 
+msgid "Select video input with up/down buttons"
+msgstr "Selecteer video-ingang met de omhoog/omlaag toetsen"
+
 msgid "Select video mode"
 msgstr "Selecteer video modus"
 
@@ -3021,16 +3109,16 @@ msgid "Slow Motion speeds"
 msgstr "Stap snelheid"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Software beheer"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Software beheer"
 
 msgid "Software restore"
-msgstr ""
+msgstr "Software herstellen"
 
 msgid "Software update"
-msgstr ""
+msgstr "Software update"
 
 msgid "Some plugins are not available:\n"
 msgstr "Applicaties die niet beschikbaar zijn:\n"
@@ -3039,10 +3127,10 @@ msgid "Somewhere else"
 msgstr "Ergens anders"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Sorry MediaScanner niet is geïnstalleerd!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Sorry geen back-ups gevonden!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3057,12 +3145,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Sorry uw back-up bestemming is niet beschrijfbaar.\n"
+"Kies een andere."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Sorry uw back-up bestemming is niet beschrijfbaar.\n"
+"\n"
+"Kies een andere."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3186,11 +3279,9 @@ msgstr "Systeem"
 #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline)
 msgid "TRANSLATOR_INFO"
 msgstr ""
-"Vertaling door M. Weeren\n"
-"www.satellietland.nl\n"
-"\n"
-"Officieel distributeur van\n"
-"Dream Multimedia producten"
+"Deze vertaling wordt u aangeboden door :\n"
+"- Michel Weeren\n"
+"- Benny De Tandt"
 
 msgid "TS file is too large for ISO9660 level 1!"
 msgstr "TS bestand is te groot voor ISO9660 level1!"
@@ -3270,6 +3361,9 @@ msgstr ""
 "\n"
 "Wenst u de USB flasher op deze stick te schrijven?"
 
+msgid "The following files were found..."
+msgstr "De volgende bestanden werden gevonden..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3360,6 +3454,11 @@ msgstr ""
 "Er is mogelijk niet genoeg ruimte vrij op de geselecteerde partitie.\n"
 "Weet u zeker dat u wilt doorgaan?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr ""
+"Er is een fout opgetreden bij het downloaden van de pakketlijst. Probeer het "
+"opnieuw."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Dit .NFI bestand bevat geen geldig %s image!"
@@ -3385,6 +3484,10 @@ msgstr ""
 "Deze DVD RW medium is reeds geformatteerd - herformatteren zal alles wissen "
 "op deze disk."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Deze Dreambox kan geen %s decoderen!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Deze Dreambox kan volgende %s video niet decoderen!"
@@ -3590,6 +3693,9 @@ msgstr ""
 "Probeer nu gebruikte transponders op het kabelnetwerk te vinden. Een "
 "ogenblik a.u.b."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Probeert een nieuwe pakketlijst te downloaden. Een ogenblik a.u.b..."
+
 msgid "Tue"
 msgstr "Di"
 
@@ -3624,7 +3730,7 @@ msgid "Two"
 msgstr "Twee"
 
 msgid "Type"
-msgstr ""
+msgstr "Type"
 
 msgid "Type of scan"
 msgstr "Zoekmodus"
@@ -3662,13 +3768,13 @@ msgid "Uncommitted DiSEqC command"
 msgstr "Uncommitted DiSEqC commando"
 
 msgid "Unicable"
-msgstr ""
+msgstr "Unicable"
 
 msgid "Unicable LNB"
-msgstr ""
+msgstr "Unicable LNB"
 
 msgid "Unicable Martix"
-msgstr ""
+msgstr "Unicable Martix"
 
 msgid "Universal LNB"
 msgstr "Universeel LNB"
@@ -3691,7 +3797,7 @@ msgstr ""
 "duren."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Upgrade voltooid."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Software update gereed. Uw Dreambox herstarten?"
@@ -3773,7 +3879,7 @@ msgid "VMGM (intro trailer)"
 msgstr "VMGM (intro trailer)"
 
 msgid "Vertical"
-msgstr ""
+msgstr "Vertikaal"
 
 msgid "Video Fine-Tuning"
 msgstr "Video fijn instellingen..."
@@ -3806,9 +3912,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Video modus selectie"
 
+msgid "View Movies..."
+msgstr "Bekijk opname..."
+
+msgid "View Photos..."
+msgstr "Bekijk foto's..."
+
 msgid "View Rass interactive..."
 msgstr "Rass Interactive weergeven"
 
+msgid "View Video CD..."
+msgstr "Bekijk Video CD..."
+
 msgid "View teletext..."
 msgstr "Teletekst weergeven..."
 
@@ -3913,6 +4028,13 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Wanneer u de fabrieksinstellingen wenst, verliest u\n"
+"alle gegevens van uw configuratie.\n"
+"(inclusief boeketten, zenders, satelliet data ...)\n"
+"Na voltooiing van de fabrieksinstellingen, zal uw ontvanger automatisch "
+"herstarten!\n"
+"\n"
+"Werkelijk uitvoeren?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Waar wilt u de instellingen opslaan?"
@@ -4031,12 +4153,14 @@ msgid ""
 "backup now."
 msgstr ""
 "U heeft gekozen uw instellingen op de harde schijf op te slaan. Druk op OK "
-"om de backup te starten."
+"om de back-up te starten."
 
 msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"U heeft gekozen om uw instellingen te back-uppen. Druk op OK om te beginnen "
+"met de back-up."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4049,6 +4173,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"U heeft gekozen om uw instellingen te herstellen. Enigma2 zal herstarten na "
+"het herstel. Druk op OK om te beginnen met het herstel."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4089,6 +4215,13 @@ msgstr ""
 "De backup is geslaagd. U krijgt nu een korte uitleg over het vervolg van het "
 "update proces."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Uw verzameling is groter dan wat erop een enkel laags medium past , u heeft "
+"een lege dubbel laags DVD nodig!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Uw Dreambox wordt nu afgesloten. Een ogenblik a.u.b..."
 
@@ -4138,6 +4271,12 @@ msgstr "[favorieten bewerken]"
 msgid "[move mode]"
 msgstr "[verplaats modus]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "Alternatieven bewerken afsluiten"
 
@@ -4153,6 +4292,12 @@ msgstr "start direct"
 msgid "activate current configuration"
 msgstr "activeer huidige configuratie"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "voeg een nameserver toe"
 
@@ -4211,6 +4356,12 @@ msgstr ""
 "weet u zeker dat u deze instellingen terug\n"
 "wilt zetten:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "Audio spoor (%s) formaat"
@@ -4298,6 +4449,9 @@ msgstr "dagelijks"
 msgid "day"
 msgstr "dag"
 
+msgid "delete"
+msgstr ""
+
 msgid "delete cut"
 msgstr "Wis snijpunt"
 
@@ -4471,6 +4625,9 @@ msgstr ""
 msgid "init module"
 msgstr "CI module initializeren"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "Markeerpunt invoegen"
 
@@ -4576,9 +4733,18 @@ msgstr "Volgende zender in geschiedenis"
 msgid "no"
 msgstr "nee"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "geen harde schijf gevonden"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "geen CI module gevonden"
 
@@ -4595,7 +4761,7 @@ msgid "not locked"
 msgstr "Nee"
 
 msgid "not used"
-msgstr ""
+msgstr "niet gebruikt"
 
 msgid "nothing connected"
 msgstr "niets aangesloten"
@@ -4751,6 +4917,9 @@ msgstr "selecteer"
 msgid "select .NFI flash file"
 msgstr "selecteer .NFI flash bestand"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "Selecteer image van server"
 
@@ -4881,7 +5050,7 @@ msgid "switch to playlist"
 msgstr "Ga naar afspeellijst"
 
 msgid "switch to the next angle"
-msgstr ""
+msgstr "schakel naar de volgende hoek"
 
 msgid "switch to the next audio track"
 msgstr "Volgend audio spoor"
@@ -4967,3 +5136,6 @@ msgstr "zap"
 
 msgid "zapped"
 msgstr "zapte"
+
+#~ msgid "An error occured!"
+#~ msgstr "Er is een fout opgetreden!"
index 765bf1a314e5d1721275b5342be2bced417dcc92..5acf4f796cac5432722b26cf1e381a484b382311 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,8 +7,8 @@ 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-08 13:44+0100\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-08 18:26+0100\n"
 "Last-Translator: Sebastian <zbigzbig2@op.pl>\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
@@ -20,62 +20,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Zaawansowane opcje i ustawienia."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Po wciśnięciu OK czekaj!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Kopia ustawień Dreamboxa."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Edytuj adres aktualizacji."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 zostanie zrestartowana po przywróceniu"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Aktualizacja Online oprogramowania Dreamboxa."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Wciśnij OK aby kontynułować."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Przywróć ustawienia Dreamboxa."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Przywróć Dreamboxa z nowym softem."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Przywróć kopie według daty."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Szukaj lokalne paczki i instaluj je."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Wybierz urządzenie do kopii.\n"
+"Aktualne urządzenie: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Widok, instalacja lub usuwanie dostępnych lub zainstalowanych paczek."
 
 msgid " "
 msgstr " "
@@ -418,13 +450,13 @@ msgid "Advanced"
 msgstr "Zaawansowane"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Zaawansowane Opcje"
 
 msgid "Advanced Video Setup"
 msgstr "Zawansowana Konfiguracja Wideo"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Zaawansowane przywracanie"
 
 msgid "After event"
 msgstr "Po wydarzeniu"
@@ -458,9 +490,6 @@ msgstr "Alternatywny priorytet usług tunera"
 msgid "An empty filename is illegal."
 msgstr "Pusta nazwa pliku jest nieldozwolona."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Wystąpił nieznany błąd!"
 
@@ -485,11 +514,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Jesteś pewien że chcesz przywrócić\n"
+"daną kopię:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Jesteś pewien że chcesz przywrócić kopię Enigmy2?\n"
+"Enigma2 zostanie zrestartowana po przywróceniu"
 
 msgid "Artist"
 msgstr "Artysta"
@@ -561,22 +594,22 @@ msgid "Backup Mode"
 msgstr "Tryb kopii zapasowej"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Kopia skończona."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Kopia nieudana."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Kopia zapasowa utworzona pomyslnie. Wciśnij OK aby zobaczyć rezultat."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Kopia zapasowa uruchomiona"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Kopia zapasowa uruchomiona..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Kopia ustawień systemowych"
 
 msgid "Band"
 msgstr "Pasmo"
@@ -713,10 +746,10 @@ msgid "Choose Tuner"
 msgstr "Wybierz tuner"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Wybierz pliki do kopii"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Wybierz miejsce kopii"
 
 msgid "Choose bouquet"
 msgstr "Wybierz bukiet"
@@ -728,16 +761,16 @@ msgid "Choose target folder"
 msgstr "Wybierz folder docelowy"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Wybierz źródło aktualizacji"
 
 msgid "Choose your Skin"
 msgstr "Wybierz Skina"
 
 msgid "Circular left"
-msgstr "Okólnik lewo"
+msgstr "Kołój w lewo"
 
 msgid "Circular right"
-msgstr "Okólnik prawo"
+msgstr "Kołój w prawo"
 
 msgid "Cleanup"
 msgstr "Czyść"
@@ -784,6 +817,9 @@ msgstr "Komenda DiSEqC Commited"
 msgid "Common Interface"
 msgstr "Moduł Dostępu"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Compact Flash"
 
@@ -796,6 +832,9 @@ msgstr "Zakończ"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Kompleksowe (pozwala mixować ścieżki audio i aspekty)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Tryb konfiguracji"
 
@@ -952,7 +991,7 @@ msgid "Description"
 msgstr "Opis"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Odznacz"
 
 msgid "Destination directory"
 msgstr "Katalog docelowy"
@@ -1023,7 +1062,7 @@ msgid "Display >16:9 content as"
 msgstr "Wyświetlaj zawartość >16:9 jako"
 
 msgid "Display Setup"
-msgstr "Ustawienia wyświtlania"
+msgstr "Ustawienia wyświetlacza"
 
 #, python-format
 msgid ""
@@ -1090,7 +1129,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Czy chcesz zainstalować domyślna listę satelit?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Chcesz zainstalowac paczkę:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Czy chcesz odtwarzać DVD znajdujące się w czytniku?"
@@ -1099,10 +1138,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Czy chcesz obejrzeć DVD przed jego nagraniem?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Chcesz uruchomić ponownie Dreamboxa?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Chcesz usunąć paczkę:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Czy chcesz przywrócić swoje ustawienia?"
@@ -1111,7 +1150,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Czy chcesz wznowić odtwarzanie?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Chcesz zaktualizować Dreamboxa?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1121,7 +1160,7 @@ msgstr ""
 "Po naciśnięciu OK, proszę czekać!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Chcesz zaktualizować paczkę:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Czy chcesz zobaczyć wprowadzenie?"
@@ -1139,7 +1178,7 @@ msgstr "Zrobione - Instalowanie lub aktualizowanie %d pakietów z %d błędami"
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
-msgstr ""
+msgstr "Zrobione - Instalowanie lub aktualizowanie %d pakietów z %d błędami"
 
 msgid "Download"
 msgstr "Ładuj"
@@ -1190,6 +1229,9 @@ msgstr "Edytuj"
 msgid "Edit DNS"
 msgstr "Edytuj DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr "Edytuj URL źródła IPKG..."
+
 msgid "Edit Title"
 msgstr "Edytuj Tytuł"
 
@@ -1457,6 +1499,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Brama"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Gatunek"
 
@@ -1502,6 +1556,9 @@ msgstr "Informacja hierarchii"
 msgid "Hierarchy mode"
 msgstr "Tryb hierarchii"
 
+msgid "High bitrate support"
+msgstr ""
+
 msgid "Horizontal"
 msgstr "Poziomo [H]"
 
@@ -1598,13 +1655,19 @@ msgid "Input"
 msgstr "Wejście"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Instaluj nowe image z pamięci USB"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Instaluj nowe image z przeglądarki www"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Instaluj lokalny IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr "Instaluj ustawienia, skiny, soft..."
+
+msgid "Install software updates..."
+msgstr "Instaluj aktualizacje oprogramowania..."
 
 msgid "Installing"
 msgstr "Instalowanie"
@@ -1650,7 +1713,7 @@ msgid "Invert display"
 msgstr "Odwrócone wyświetlanie"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Włoski"
@@ -1699,7 +1762,7 @@ msgid "Latitude"
 msgstr "Szerokość geogr."
 
 msgid "Latvian"
-msgstr ""
+msgstr "Łotewski"
 
 msgid "Leave DVD Player?"
 msgstr "Zamknąć odtwarzacz DVD?"
@@ -1707,6 +1770,9 @@ msgstr "Zamknąć odtwarzacz DVD?"
 msgid "Left"
 msgstr "Lewo"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Pozwól przeglądać/edytować pliki Dreamboxa"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1781,7 +1847,7 @@ msgid "Make this mark just a mark"
 msgstr "Traktuj znacznik po prostu jak zaznaczenie"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Zarządzaj oprogramowaniem tunera"
 
 msgid "Manual Scan"
 msgstr "Ręczne skanowanie"
@@ -1939,7 +2005,7 @@ msgid "NetworkWizard"
 msgstr "Kreator sieci"
 
 msgid "New"
-msgstr "Nowy"
+msgstr "Nowe"
 
 msgid "New pin"
 msgstr "Nowy pin"
@@ -1978,6 +2044,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Brak opisu dla tego image'a"
 
+msgid "No displayable files on this medium found!"
+msgstr "Brak plików do wyświetlenia na tym środku!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "Nie znaleziono informacji o wydarzeniu, nagrywanie nieokreślone."
 
@@ -2137,7 +2206,7 @@ msgid "Online-Upgrade"
 msgstr "Online - Aktualizacja"
 
 msgid "Only Free scan"
-msgstr "Tylko wolne skanowanie"
+msgstr "Skanuj tylko FTA"
 
 msgid "Orbital Position"
 msgstr "Pozycja orbitalna"
@@ -2155,7 +2224,7 @@ msgid "Packet management"
 msgstr "Zarządzanie pakietem"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Menadżer pakietów"
 
 msgid "Page"
 msgstr "Strona"
@@ -2204,6 +2273,12 @@ msgstr "Odtwarzaj"
 msgid "Play Audio-CD..."
 msgstr "Odtwarzanie CD-Audio..."
 
+msgid "Play DVD"
+msgstr "Odtwórz DVD"
+
+msgid "Play Music..."
+msgstr "Odtwórz Muzykę..."
+
 msgid "Play recorded movies..."
 msgstr "Odtwarzanie nagranego filmu..."
 
@@ -2294,7 +2369,7 @@ msgid "Please select a subservice..."
 msgstr "Prosze wybierz subserwis..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Wybierz środek aby użyć jako miejsce kopii zapasowej"
 
 msgid "Please select tag to filter..."
 msgstr "Wybierz oznaczenie do filtrowania..."
@@ -2451,6 +2526,9 @@ msgstr "Provider do skanowania"
 msgid "Providers"
 msgstr "Providerzy"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Python frontend dla /tmp/mmi.socket"
+
 msgid "Quick"
 msgstr "Szybko"
 
@@ -2531,7 +2609,7 @@ msgid "Refresh rate selection."
 msgstr "Wybór prędkości odświeżania"
 
 msgid "Reload"
-msgstr ""
+msgstr "Przeładuj"
 
 msgid "Remove Bookmark"
 msgstr "Usuń zakładkę"
@@ -2546,7 +2624,7 @@ msgid "Remove currently selected title"
 msgstr "Usuń aktualnie wybrany tytuł"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Usuwanie zakończone."
 
 msgid "Remove plugins"
 msgstr "Usuń pluginy"
@@ -2564,7 +2642,7 @@ msgid "Remove title"
 msgstr "Usuń tytuł"
 
 msgid "Removing"
-msgstr ""
+msgstr "Usuwanie"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2617,16 +2695,16 @@ msgid "Restore"
 msgstr "Przywróć"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Przywróć kopie..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Przywracanie uruchomione"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Przywracanie uruchomione..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Przywróć ustawienia systemowe"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2664,7 +2742,7 @@ msgid "Right"
 msgstr "Prawo"
 
 msgid "Rolloff"
-msgstr "Wyłącz rolowanie"
+msgstr "Rolloff"
 
 msgid "Rotor turning speed"
 msgstr "Prędkość obrotu rotora"
@@ -2720,6 +2798,9 @@ msgstr "Tryb skalowania"
 msgid "Scan "
 msgstr "Skanuj"
 
+msgid "Scan Files..."
+msgstr "Skanuj Pliki..."
+
 msgid "Scan QAM128"
 msgstr "Skanuj QAM128"
 
@@ -2808,11 +2889,14 @@ msgid "Seek"
 msgstr "Wyszukiwanie"
 
 msgid "Select"
-msgstr ""
+msgstr "Wybierz"
 
 msgid "Select HDD"
 msgstr "Wybierz HDD"
 
+msgid "Select IPKG source to edit..."
+msgstr "Wybierz źródło IPKG aby edytować..."
+
 msgid "Select Location"
 msgstr "Wybierz lokalizację"
 
@@ -2832,10 +2916,10 @@ msgid "Select channel to record from"
 msgstr "Wybierz kanał do nagrania z "
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Wybierz pliki dla kopii zapasowej. Aktualnie wybrane:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Wybierz pliki/katalogi dla kopii zapasowej..."
 
 msgid "Select image"
 msgstr "Wybierz image"
@@ -2846,6 +2930,9 @@ msgstr "Wybierz prędkość odświeżania"
 msgid "Select video input"
 msgstr "Wybierz wejście Wideo"
 
+msgid "Select video input with up/down buttons"
+msgstr "Wybierz wejście video przyciskami góra/dół"
+
 msgid "Select video mode"
 msgstr "Wybierz tryb wideo"
 
@@ -3016,16 +3103,16 @@ msgid "Slow Motion speeds"
 msgstr "Odtwarzanie w zwolnionym tempie"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Menadżer oprogramowania"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Menadżer oprogramowania..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Przywracanie oprogramowania"
 
 msgid "Software update"
-msgstr ""
+msgstr "Aktualizacja oprogramowania"
 
 msgid "Some plugins are not available:\n"
 msgstr "Niektóre pluginy są niedostępne:\n"
@@ -3034,10 +3121,10 @@ msgid "Somewhere else"
 msgstr "Gdzie indziej"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "MediaScanner nie jest zainstalowany!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Nie znaleziono kopii zapasowych !"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3052,12 +3139,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Twoje miejsce na kopię zapasową jest niezapisywalne.\n"
+"Wybierz inne miejsce."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Twoje miejsce na kopię zapasową jest niezapisywalne.\n"
+"\n"
+"Wybierz inne miejsce."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3264,6 +3356,9 @@ msgstr ""
 "\n"
 "Czy chesz zapisać USB flash'er na tym napedzie?"
 
+msgid "The following files were found..."
+msgstr "Dane pliki zostały znalezione..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3356,6 +3451,9 @@ msgstr ""
 "Nie ma wystarczająco miejsca na wybranej partycji.\n"
 "Czy kontynuować?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Wystąpił błąd podczas pobierania listy pakietów. Spróbuj ponownie."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Plik .NFI nie posiada prawidłowego %s image'a!"
@@ -3382,6 +3480,10 @@ msgstr ""
 "Nosnik DVD RW zawiera dane- jego sformatowanie spowoduje utrate danych na "
 "nosniku."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Ten Dreambox nie może zdekodować %s streamu!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Dreambox nie moze zdekodować %s strumienia video!"
@@ -3582,6 +3684,9 @@ msgid "Try to find used transponders in cable network.. please wait..."
 msgstr ""
 "Spróbuj odnaleźć używane transpondery w sieci kablowej... Proszę czekać..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Próbuje pobrać nową listę pakietów. Proszę czekać..."
+
 msgid "Tue"
 msgstr "Wto"
 
@@ -3681,7 +3786,7 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Aktualizowanie... Proszę czekać... To może potrwać kilka minut..."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Aktualizacja zakończona."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Aktualizacja skończona. Czy chcesz uruchomić ponownie Dreamboxa?"
@@ -3764,7 +3869,7 @@ msgid "Vertical"
 msgstr "Pionowo [V]"
 
 msgid "Video Fine-Tuning"
-msgstr "Konfiguracja obrazu..."
+msgstr "Korekcja obrazu..."
 
 msgid "Video Fine-Tuning Wizard"
 msgstr "Kreator czystości obrazu "
@@ -3796,9 +3901,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Wybór trybu wideo"
 
+msgid "View Movies..."
+msgstr "Wyświetl Filmy..."
+
+msgid "View Photos..."
+msgstr "Wyświetl Zdjęcia..."
+
 msgid "View Rass interactive..."
 msgstr "Pokaż interaktywne Rass..."
 
+msgid "View Video CD..."
+msgstr "Wyświetl Video CD..."
+
 msgid "View teletext..."
 msgstr "Pokaż teletext..."
 
@@ -3905,6 +4019,11 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Gdy wybierzesz ustawienia fabryczne, stracisz całą konfigurację\n"
+"(włączając bukiety, kanały, satelity...)\n"
+"Po wykonaniu ustawień fabrycznych twój tuner zrestartuje się sam!\n"
+"\n"
+"Czy chcesz wykonać ustawienia fabryczne?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Gdzie chcesz zrobić kopie zapasową ustawień?"
@@ -4025,6 +4144,7 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Wybrałeś kopię zapasową swoich ustawień. Wciśnij OK aby rozpocząć teraz."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4038,6 +4158,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Wybrałeś przywrócenie swoich ustawień. Enigma2 zostanie zrestartowana po "
+"przywróceniu. Wciśnij OK aby rozpocząć teraz."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4077,6 +4199,13 @@ msgstr ""
 "Twoja kopia zapasowa została zrobiona. Będziemy kontynuować wyjaśnianie "
 "procesu aktualizacji."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Twoja kolekcja przewyższa rozmiar zwykłego nośnika dvd, będziesz potrzebował "
+"czystego nośnika DVD dwuwarstwowego!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Twój Dreambox jest wyłączany. Prosze czekać..."
 
@@ -4126,6 +4255,12 @@ msgstr "[edycja ulubionych]"
 msgid "[move mode]"
 msgstr "[tryb przesuwania]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "przerwij edycje wybranych"
 
@@ -4141,6 +4276,12 @@ msgstr "jak rozpocząć"
 msgid "activate current configuration"
 msgstr "akrywuj aktualną konfigurację"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "dodaj wpis nameservera"
 
@@ -4160,7 +4301,7 @@ msgid "add file to playlist"
 msgstr "dodaj plik do playlisty"
 
 msgid "add files to playlist"
-msgstr "dodaj pliki do playlisty"
+msgstr "Dodaj pliki do playlisty"
 
 msgid "add marker"
 msgstr "Dodaj zaznaczenie"
@@ -4199,6 +4340,12 @@ msgstr ""
 "Jesteś pewien że chcesz przywrócić\n"
 "następującą kopie:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "format ścieżki audio (%s)"
@@ -4251,10 +4398,10 @@ msgid "choose destination directory"
 msgstr "wybierz folder docelowy"
 
 msgid "circular left"
-msgstr "Okólnik lewo"
+msgstr "Kołój w lewo"
 
 msgid "circular right"
-msgstr "Okólnik prawo"
+msgstr "Kołój w prawo"
 
 msgid "clear playlist"
 msgstr "Wyczyść playlistę"
@@ -4286,6 +4433,9 @@ msgstr "Codziennie"
 msgid "day"
 msgstr "dzień"
 
+msgid "delete"
+msgstr "Usuń"
+
 msgid "delete cut"
 msgstr "Usuń wycięte"
 
@@ -4459,6 +4609,9 @@ msgstr ""
 msgid "init module"
 msgstr "Moduł init"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "Wstaw znacznik tutaj"
 
@@ -4564,9 +4717,18 @@ msgstr "Następny kanał w historii"
 msgid "no"
 msgstr "Nie"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "Nie znaleziono HDD"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "Nie znaleziono modułu"
 
@@ -4739,6 +4901,9 @@ msgstr "wybierz"
 msgid "select .NFI flash file"
 msgstr "wybierz plik .NFI flash"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "wybierz plik z serwera"
 
@@ -4956,13 +5121,6 @@ msgstr "Przełącz"
 msgid "zapped"
 msgstr "Przełączony"
 
-#~ msgid ""
-#~ "\n"
-#~ "Enigma2 will restart after the restore"
-#~ msgstr ""
-#~ "\n"
-#~ "Enigma2 zostanie zrestartowana po przywróceniu"
-
 #, fuzzy
 #~ msgid "\"?"
 #~ msgstr "\"?"
@@ -5468,9 +5626,6 @@ msgstr "Przełączony"
 #~ msgid "color"
 #~ msgstr "kolor"
 
-#~ msgid "delete"
-#~ msgstr "Usuń"
-
 #~ msgid "equal to Socket A"
 #~ msgstr "Równaj do Gniazda A"
 
old mode 100755 (executable)
new mode 100644 (file)
index 9a9c29b..4c33bf6
--- a/po/ru.po
+++ b/po/ru.po
@@ -2,9 +2,9 @@ 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: 2007-06-14 10:15+0300\n"
-"Last-Translator: enigma® <enigma.ua@gmail.com>\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-25 10:11+0300\n"
+"Last-Translator:  <peter@dreambox.org.ua>\n"
 "Language-Team: Russian / enigma(c) Ukraine, Kiev>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -18,62 +18,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Дополнительные параметры и настройки."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"После нажатия кнопки ОК, пожалуйста, подождите!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Резервная копия настроек Dreambox."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Редактировать адрес источника обновления."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 будет запущена после восстановления."
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Онлайн обновление Dreambox."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Нажмите ОК на пульте для продолжения."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Восстановить настройки Dreambox."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Восстановить Dreambox с новой микропрограммой."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Восстановить резервные копии по дате"
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Сканирование и установка локальных пакетов."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Выберите устройство для резервного копирования.\n"
+"Текущее устройство: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Просмотр, установка и удаление доступных или установленных пакетов."
 
 msgid " "
 msgstr ""
@@ -113,7 +145,7 @@ msgstr ""
 
 #, python-format
 msgid "%d jobs are running in the background!"
-msgstr ""
+msgstr "%d процесс запущен в фоновом режиме!"
 
 #, python-format
 msgid "%d min"
@@ -142,29 +174,30 @@ msgid "(ZAP)"
 msgstr "(ZAP)"
 
 msgid "(empty)"
-msgstr ""
+msgstr "(пусто)"
 
 msgid "(show optional DVD audio menu)"
-msgstr ""
+msgstr "(показать опцион. DVD аудио меню)"
 
 msgid "* Only available if more than one interface is active."
-msgstr ""
+msgstr "* Доступно если активно более одного интерфейса."
 
 msgid "* Only available when entering hidden SSID or network key"
-msgstr ""
+msgstr "* Доступно только при введенном скрытом SSID или ключе сети"
 
 msgid ".NFI Download failed:"
-msgstr ""
+msgstr ".NFI Download failed:"
 
 msgid ""
 ".NFI file passed md5sum signature check. You can safely flash this image!"
 msgstr ""
+".NFI проверена md5sum сигнатура. Вы можете безопасно прошить этот имидж!"
 
 msgid "/usr/share/enigma2 directory"
-msgstr "папка /usr/share/enigma2"
+msgstr "каÑ\82алог /usr/share/enigma2"
 
 msgid "/var directory"
-msgstr "папка /var"
+msgstr "каÑ\82алог /var"
 
 msgid "0"
 msgstr ""
@@ -188,22 +221,22 @@ msgid "13 V"
 msgstr "13 V"
 
 msgid "16:10"
-msgstr ""
+msgstr "16:10"
 
 msgid "16:10 Letterbox"
-msgstr ""
+msgstr "16:10 Letterbox"
 
 msgid "16:10 PanScan"
-msgstr ""
+msgstr "16:10 PanScan"
 
 msgid "16:9"
-msgstr ""
+msgstr "16:9"
 
 msgid "16:9 Letterbox"
-msgstr ""
+msgstr "16:10 PanScan"
 
 msgid "16:9 always"
-msgstr ""
+msgstr "16:9 always"
 
 msgid "18 V"
 msgstr "18 V"
@@ -221,13 +254,13 @@ msgid "4"
 msgstr ""
 
 msgid "4:3"
-msgstr ""
+msgstr "4:3"
 
 msgid "4:3 Letterbox"
-msgstr ""
+msgstr "4:3 Letterbox"
 
 msgid "4:3 PanScan"
-msgstr ""
+msgstr "4:3 PanScan"
 
 msgid "5"
 msgstr ""
@@ -236,7 +269,7 @@ msgid "5 minutes"
 msgstr "5 минут"
 
 msgid "50 Hz"
-msgstr ""
+msgstr "50 Гц"
 
 msgid "6"
 msgstr ""
@@ -257,7 +290,7 @@ msgid "<unknown>"
 msgstr "<неизвестный>"
 
 msgid "??"
-msgstr ""
+msgstr "??"
 
 msgid "A"
 msgstr "A"
@@ -267,25 +300,33 @@ msgid ""
 "A configuration file (%s) was modified since Installation.\n"
 "Do you want to keep your version?"
 msgstr ""
+"Конфигурационный файл (%s)  был изменен в процессе установки.\n"
+"Сохранить вашу версию?"
 
 msgid ""
 "A finished record timer wants to set your\n"
 "Dreambox to standby. Do that now?"
 msgstr ""
+"Запись по таймеру завершена, Dreambox будет переведен\n"
+"\"в ждущий режим. Сделать это сейчас?\""
 
 msgid ""
 "A finished record timer wants to shut down\n"
 "your Dreambox. Shutdown now?"
 msgstr ""
+"Запись по таймеру закончена, Dreambox\n"
+"\"будет выключен. Сделать это сейчас?\""
 
 msgid "A graphical EPG for all services of an specific bouquet"
-msgstr ""
+msgstr "Графический телегид для всех сервисов в избранном"
 
 #, python-format
 msgid ""
 "A record has been started:\n"
 "%s"
 msgstr ""
+"Запись начата:\n"
+"%s"
 
 msgid ""
 "A recording is currently running.\n"
@@ -304,21 +345,25 @@ msgstr ""
 msgid ""
 "A recording is currently running. Please stop the recording before trying to "
 "start the satfinder."
-msgstr ""
+msgstr "Идет запись. Остановите запись перед поиском спутника."
 
 #, python-format
 msgid "A required tool (%s) was not found."
-msgstr ""
+msgstr "Нужный инструмент (%s), не найден."
 
 msgid ""
 "A sleep timer wants to set your\n"
 "Dreambox to standby. Do that now?"
 msgstr ""
+"Таймер сна хочет перевести Dreambox\n"
+"в ждущий режим. Сделать это сейчас?"
 
 msgid ""
 "A sleep timer wants to shut down\n"
 "your Dreambox. Shutdown now?"
 msgstr ""
+"Таймер сна хочет выключить Dreambox.\n"
+"Сделать это сейчас?\""
 
 msgid ""
 "A timer failed to record!\n"
@@ -328,7 +373,7 @@ msgstr ""
 "Отключить TV и повторить снова?\n"
 
 msgid "A/V Settings"
-msgstr "Аудио / видео установки"
+msgstr "Аудио/Видео"
 
 msgid "AA"
 msgstr "AA"
@@ -340,7 +385,7 @@ msgid "AC3 default"
 msgstr "AC3 по умолчанию"
 
 msgid "AC3 downmix"
-msgstr ""
+msgstr "AC3 микширование"
 
 msgid "About"
 msgstr "Информация"
@@ -349,43 +394,43 @@ msgid "About..."
 msgstr "О ресивере"
 
 msgid "Action on long powerbutton press"
-msgstr ""
+msgstr "Длительное нажатии кнопки питания"
 
 msgid "Action:"
-msgstr ""
+msgstr "Действие:"
 
 msgid "Activate Picture in Picture"
 msgstr "Включить картинку в картинке"
 
 msgid "Activate network settings"
-msgstr "Ð\92клÑ\8eÑ\87ить сетевые установки"
+msgstr "Ð\90кÑ\82ивиÑ\80овать сетевые установки"
 
 msgid "Adapter settings"
-msgstr ""
+msgstr "Настройка адаптера"
 
 msgid "Add"
 msgstr "Добавить"
 
 msgid "Add Bookmark"
-msgstr ""
+msgstr "Добавить Закладку"
 
 msgid "Add a mark"
-msgstr ""
+msgstr "Добавить метку"
 
 msgid "Add a new title"
-msgstr ""
+msgstr "Добавить новое название"
 
 msgid "Add timer"
-msgstr "Ð\94обавиÑ\82Ñ\8c Ñ\82аймер"
+msgstr "Таймер"
 
 msgid "Add title"
-msgstr ""
+msgstr "Добавить название"
 
 msgid "Add to bouquet"
-msgstr ""
+msgstr "Добавить в пакет"
 
 msgid "Add to favourites"
-msgstr ""
+msgstr "Добавить в избранное"
 
 msgid ""
 "Adjust the color settings so that all the color shades are distinguishable, "
@@ -393,18 +438,22 @@ msgid ""
 "OK to close the video fine-tuning, or use the number keys to select other "
 "test screens."
 msgstr ""
+"Настройте параметры цвета, так чтобы все оттенки цветов были максимально "
+"видны, насколько это возможно. Если вы довольны результатом, нажмите кнопку "
+"ОК для закрытия видео настроек, или используйте цифровые клавиши для выбора "
+"других тестов экрана "
 
 msgid "Advanced"
 msgstr "Расширенный"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Расширенные опции"
 
 msgid "Advanced Video Setup"
-msgstr ""
+msgstr "Расширенная настройка видео"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Расширенное восстановление"
 
 msgid "After event"
 msgstr "После события"
@@ -423,7 +472,7 @@ msgid "All"
 msgstr "Все"
 
 msgid "All Satellites"
-msgstr ""
+msgstr "Все Спутники"
 
 msgid "Alpha"
 msgstr "Прозрачность"
@@ -432,16 +481,13 @@ msgid "Alternative radio mode"
 msgstr "Альтернативный радио режим "
 
 msgid "Alternative services tuner priority"
-msgstr ""
+msgstr "Приоритет используемых тюнеров"
 
 msgid "An empty filename is illegal."
-msgstr ""
-
-msgid "An error occured!"
-msgstr ""
+msgstr "Пустое имя недопустимо"
 
 msgid "An unknown error occured!"
-msgstr ""
+msgstr "Неизвестная ошибка!"
 
 msgid "Arabic"
 msgstr "Арабский"
@@ -450,39 +496,47 @@ msgid ""
 "Are you sure you want to activate this network configuration?\n"
 "\n"
 msgstr ""
+"Вы уверены, что хотите активировать эту конфигурацию сети?\n"
+"\n"
 
 msgid ""
 "Are you sure you want to restart your network interfaces?\n"
 "\n"
 msgstr ""
+"Вы уверены, что хотите перезагрузить сетевые интерфейсы?\n"
+"\n"
 
 msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Вы уверены, что хотите восстановить\n"
+"этот бекап:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Вы уверены, что хотите восстановить бекап Enigma2?\n"
+"Enigma2 будет перезапущена после восстановления"
 
 msgid "Artist"
-msgstr "Актер"
+msgstr "Артист"
 
 msgid "Ask before shutdown:"
 msgstr "Спросить перед выключением?: "
 
 msgid "Ask user"
-msgstr ""
+msgstr "Спросить пользователя"
 
 msgid "Aspect Ratio"
-msgstr "Ð\9eтношение сторон"
+msgstr "Сотношение сторон"
 
 msgid "Audio"
 msgstr "Аудио"
 
 msgid "Audio Options..."
-msgstr "Аудио опции"
+msgstr "Аудио опции..."
 
 msgid "Authoring mode"
 msgstr ""
@@ -491,19 +545,19 @@ msgid "Auto"
 msgstr "Автоматически"
 
 msgid "Auto chapter split every ? minutes (0=never)"
-msgstr ""
+msgstr "Автоматически разделять на главы каждые ? минут (0 =никогда)"
 
 msgid "Auto scart switching"
-msgstr ""
+msgstr "Автоматическое переключение SCART"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Автоматически"
 
 msgid "Automatic Scan"
 msgstr "Автоматический поиск"
 
 msgid "Available format variables"
-msgstr ""
+msgstr "Доступные форматы переменных"
 
 msgid "B"
 msgstr "B"
@@ -515,16 +569,16 @@ msgid "BB"
 msgstr "BB"
 
 msgid "BER"
-msgstr ""
+msgstr "BER"
 
 msgid "BER:"
 msgstr "BER:"
 
 msgid "Back"
-msgstr ""
+msgstr "Назад"
 
 msgid "Background"
-msgstr ""
+msgstr "Фон"
 
 msgid "Backup"
 msgstr "Сохранение"
@@ -536,61 +590,61 @@ msgid "Backup Mode"
 msgstr "Режим сохранения"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Сохранение завершено."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Сохранение неудалось."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Сохранено. Пожалуйста, нажмите OK для просмотра результата"
 
 msgid "Backup running"
-msgstr ""
+msgstr "Идет сохранение"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Идет сохранение..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Сохранить настройки"
 
 msgid "Band"
 msgstr "Диапазон"
 
 msgid "Bandwidth"
-msgstr "ШиÑ\80ина Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
+msgstr "ТÑ\80аÑ\84Ñ\84ик"
 
 msgid "Begin time"
-msgstr ""
+msgstr "Время начала"
 
 msgid "Behavior of 'pause' when paused"
-msgstr ""
+msgstr "Действие 'пауза' во время паузы"
 
 msgid "Behavior of 0 key in PiP-mode"
-msgstr ""
+msgstr "Действие кнопки 0 в PiP режиме"
 
 msgid "Behavior when a movie is started"
-msgstr ""
+msgstr "Действие при начале воспроизведения фильма"
 
 msgid "Behavior when a movie is stopped"
-msgstr ""
+msgstr "Действие при остановке воспроизведения фильма"
 
 msgid "Behavior when a movie reaches the end"
-msgstr ""
+msgstr "Действие при окончании фильма"
 
 msgid "Bookmarks"
-msgstr ""
+msgstr "Закладки"
 
 msgid "Brightness"
 msgstr "Яркость"
 
 msgid "Burn DVD"
-msgstr ""
+msgstr "Прожечь DVD"
 
 msgid "Burn existing image to DVD"
-msgstr ""
+msgstr "Прожечь существующий образ на DVD"
 
 msgid "Burn to DVD..."
-msgstr ""
+msgstr "Прожечь на DVD..."
 
 msgid "Bus: "
 msgstr "Шина:"
@@ -601,7 +655,7 @@ msgid ""
 msgstr "Нажмите кнопку OK на пульте, для отображения инфопанели."
 
 msgid "C"
-msgstr ""
+msgstr "С"
 
 msgid "C-Band"
 msgstr "C-Диапазон"
@@ -610,49 +664,49 @@ msgid "CF Drive"
 msgstr "CF карта"
 
 msgid "CVBS"
-msgstr ""
+msgstr "CVBS"
 
 msgid "Cable"
 msgstr "Кабель"
 
 msgid "Cache Thumbnails"
-msgstr ""
+msgstr "Кешировать Эскизы"
 
 msgid "Call monitoring"
-msgstr ""
+msgstr "Мониторинг звонка"
 
 msgid "Cancel"
 msgstr "Отменить"
 
 msgid "Cannot parse feed directory"
-msgstr ""
+msgstr "Невозможно разобрать каталог с пакетами"
 
 msgid "Capacity: "
-msgstr "РазмеÑ\80: "
+msgstr "Ð\95мкоÑ\81Ñ\82Ñ\8c: "
 
 msgid "Card"
-msgstr ""
+msgstr "Карта"
 
 msgid "Catalan"
-msgstr ""
+msgstr "Каталонский"
 
 msgid "Change bouquets in quickzap"
-msgstr "Сменить пакеты пользователя для быстрого переключения"
+msgstr "Сменить пакеты при быстром переключении"
 
 msgid "Change dir."
-msgstr ""
+msgstr "Изменить каталог."
 
 msgid "Change pin code"
 msgstr "Сменить PIN код"
 
 msgid "Change service pin"
-msgstr "СеÑ\80виÑ\81 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f PIN"
+msgstr "Ð\98змениÑ\82Ñ\8c PIN Ñ\81еÑ\80виÑ\81а"
 
 msgid "Change service pins"
-msgstr "СеÑ\80виÑ\81 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f PINs"
+msgstr "Ð\98зменениÑ\82Ñ\8c PINs Ñ\81еÑ\80виÑ\81а"
 
 msgid "Change setup pin"
-msgstr "Изменить установки PIN"
+msgstr "Изменить  PIN настроек"
 
 msgid "Channel"
 msgstr "Канал"
@@ -661,7 +715,7 @@ msgid "Channel Selection"
 msgstr "Выбор канала"
 
 msgid "Channel not in services list"
-msgstr ""
+msgstr "Канала нет в списке"
 
 msgid "Channel:"
 msgstr "Канал:"
@@ -670,28 +724,28 @@ msgid "Channellist menu"
 msgstr "Меню списка каналов"
 
 msgid "Chap."
-msgstr ""
+msgstr "Глава"
 
 msgid "Chapter"
-msgstr ""
+msgstr "Раздел"
 
 msgid "Chapter:"
-msgstr ""
+msgstr "Раздел:"
 
 msgid "Check"
-msgstr ""
+msgstr "Проверить"
 
 msgid "Checking Filesystem..."
-msgstr ""
+msgstr "Файловая система..."
 
 msgid "Choose Tuner"
-msgstr ""
+msgstr "Выбрать тюнер"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Выбрать файлы"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Расположение"
 
 msgid "Choose bouquet"
 msgstr "Выберите пакет пользователя"
@@ -700,19 +754,19 @@ msgid "Choose source"
 msgstr "Выберите иточник"
 
 msgid "Choose target folder"
-msgstr ""
+msgstr "Выбрать целевую папку"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Выбрать источник обновления"
 
 msgid "Choose your Skin"
-msgstr ""
+msgstr "Выбор графической оболочки"
 
 msgid "Circular left"
-msgstr ""
+msgstr "Круговая левая"
 
 msgid "Circular right"
-msgstr ""
+msgstr "Круговая правая"
 
 msgid "Cleanup"
 msgstr "Очистить"
@@ -724,7 +778,7 @@ msgid "Clear log"
 msgstr "Очистить лог"
 
 msgid "Close"
-msgstr ""
+msgstr "Закрыть"
 
 msgid "Code rate high"
 msgstr "Скорость кодирования высокая "
@@ -733,22 +787,22 @@ msgid "Code rate low"
 msgstr "Скорость кодирования низкая"
 
 msgid "Coderate HP"
-msgstr ""
+msgstr "Скорость кодирования HP"
 
 msgid "Coderate LP"
-msgstr ""
+msgstr "Скорость кодирования LP"
 
 msgid "Collection name"
-msgstr ""
+msgstr "Название коллекции"
 
 msgid "Collection settings"
-msgstr ""
+msgstr "Настройки коллекции"
 
 msgid "Color Format"
 msgstr "Тип видеовыхода"
 
 msgid "Command execution..."
-msgstr ""
+msgstr "Выполнение команды..."
 
 msgid "Command order"
 msgstr "Последовательность команд"
@@ -759,9 +813,12 @@ msgstr "Команда переключения DiSEqC"
 msgid "Common Interface"
 msgstr "Common Interfaсе"
 
-msgid "Compact Flash"
+msgid "Common Interface Assignment"
 msgstr ""
 
+msgid "Compact Flash"
+msgstr "Compact Flash"
+
 msgid "Compact flash card"
 msgstr "Compact Flash карта"
 
@@ -769,25 +826,28 @@ msgid "Complete"
 msgstr "Полное"
 
 msgid "Complex (allows mixing audio tracks and aspects)"
+msgstr "Комплекс (микширование звуковых дорожек и разрешения видео)"
+
+msgid "Config"
 msgstr ""
 
 msgid "Configuration Mode"
 msgstr "Режим конфигурации"
 
 msgid "Configuring"
-msgstr ""
+msgstr "Настройка"
 
 msgid "Conflicting timer"
 msgstr "Конфликт таймеров"
 
 msgid "Connected to"
-msgstr ""
+msgstr "Подключен к"
 
 msgid "Connected to Fritz!Box!"
-msgstr ""
+msgstr "Подключен к Fritz!Box!"
 
 msgid "Connecting to Fritz!Box..."
-msgstr ""
+msgstr "Подключение к Fritz!Box!..."
 
 #, python-format
 msgid ""
@@ -795,83 +855,86 @@ msgid ""
 "failed! (%s)\n"
 "retrying..."
 msgstr ""
+"Подключение к  Fritz!Box\n"
+"неудалось! (%s)\n"
+"повтор..."
 
 msgid "Constellation"
-msgstr ""
+msgstr "Созвездие"
 
 msgid "Content does not fit on DVD!"
-msgstr ""
+msgstr "Содержание не помещается на DVD"
 
 msgid "Continue in background"
-msgstr ""
+msgstr "Продолжить в фоновом режиме"
 
 msgid "Continue playing"
-msgstr ""
+msgstr "Продолжить воспроизведение"
 
 msgid "Contrast"
 msgstr "Контрастность"
 
 msgid "Could not connect to Dreambox .NFI Image Feed Server:"
-msgstr ""
+msgstr "Не удалось подключиться к Dreambox. NFI Feed Image серверу:"
 
 msgid "Could not load Medium! No disc inserted?"
-msgstr ""
+msgstr "Не удалось загрузить носитель! Проверьте, вставлен ли диск?"
 
 #, python-format
 msgid "Couldn't record due to conflicting timer %s"
-msgstr ""
+msgstr "Запись невозможна - конфликт таймеров %s"
 
 msgid "Create DVD-ISO"
-msgstr ""
+msgstr "Создать DVD-ISO"
 
 msgid "Create movie folder failed"
-msgstr ""
+msgstr "Папка movie не создана"
 
 #, python-format
 msgid "Creating directory %s failed."
-msgstr ""
+msgstr "Не удалось создать каталог %s"
 
 msgid "Creating partition failed"
-msgstr ""
+msgstr "Не удалось создать раздел"
 
 msgid "Croatian"
-msgstr ""
+msgstr "Хорватский"
 
 msgid "Current Transponder"
-msgstr ""
+msgstr "Текущий транспондер"
 
 msgid "Current settings:"
-msgstr ""
+msgstr "Текущие настройки:"
 
 msgid "Current version:"
 msgstr "Текущая версия:"
 
 msgid "Custom skip time for '1'/'3'-keys"
-msgstr ""
+msgstr "Время пропуска для кнопок '1'/'3'"
 
 msgid "Custom skip time for '4'/'6'-keys"
-msgstr ""
+msgstr "Время пропуска для кнопок '4'/'6'"
 
 msgid "Custom skip time for '7'/'9'-keys"
-msgstr ""
+msgstr "Время пропуска для кнопок '7'/'9'"
 
 msgid "Customize"
 msgstr "Опции"
 
 msgid "Cut"
-msgstr ""
+msgstr "Редактировать"
 
 msgid "Cutlist editor..."
-msgstr ""
+msgstr "видео редактор..."
 
 msgid "Czech"
-msgstr ""
+msgstr "Чешский"
 
 msgid "D"
-msgstr ""
+msgstr "D"
 
 msgid "DHCP"
-msgstr ""
+msgstr "DHCP"
 
 msgid "DVB-S"
 msgstr "DVB-S"
@@ -880,10 +943,10 @@ msgid "DVB-S2"
 msgstr "DVB-S2"
 
 msgid "DVD Player"
-msgstr ""
+msgstr "DVD плеер"
 
 msgid "DVD media toolbox"
-msgstr ""
+msgstr "DVD медиа-инструменты"
 
 msgid "Danish"
 msgstr "Датский"
@@ -892,13 +955,13 @@ msgid "Date"
 msgstr "Дата"
 
 msgid "Deep Standby"
-msgstr "Ð\9fолное Ð²Ñ\8bклÑ\8eÑ\87ение"
+msgstr "Ð\92Ñ\8bклÑ\8eÑ\87иÑ\82Ñ\8c"
 
 msgid "Default services lists"
-msgstr ""
+msgstr "Сервисы по умолчанию"
 
 msgid "Default settings"
-msgstr ""
+msgstr "Настройки по умолчанию"
 
 msgid "Delay"
 msgstr "Задержка"
@@ -910,22 +973,24 @@ msgid "Delete entry"
 msgstr "Удалить выбранное"
 
 msgid "Delete failed!"
-msgstr "УдалиÑ\82Ñ\8c Ð¾Ñ\88ибки"
+msgstr "Ð\9dелÑ\8cзÑ\8f Ñ\83далиÑ\82Ñ\8c!"
 
 #, python-format
 msgid ""
 "Delete no more configured satellite\n"
 "%s?"
 msgstr ""
+"Удалить не настроенный спутник\n"
+"%s?"
 
 msgid "Description"
 msgstr "Описание"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Отменить"
 
 msgid "Destination directory"
-msgstr ""
+msgstr "Каталог назначения"
 
 msgid "Detected HDD:"
 msgstr "Найден HDD:"
@@ -943,17 +1008,17 @@ msgid "DiSEqC A/B/C/D"
 msgstr "DiSEqC A/B/C/D"
 
 msgid "DiSEqC mode"
-msgstr "DiSEqC-режим"
+msgstr "DiSEqC режим"
 
 msgid "DiSEqC repeats"
 msgstr "DiSEqC повтор"
 
 msgid "Direct playback of linked titles without menu"
-msgstr ""
+msgstr "Воспроизводить связанные названия без меню"
 
 #, python-format
 msgid "Directory %s nonexistent."
-msgstr ""
+msgstr "Каталог %s отсутствует."
 
 msgid "Disable"
 msgstr "Отключен"
@@ -962,10 +1027,10 @@ msgid "Disable Picture in Picture"
 msgstr "Отключить режим PiP"
 
 msgid "Disable Subtitles"
-msgstr ""
+msgstr "Отключить субтитры"
 
 msgid "Disable timer"
-msgstr ""
+msgstr "Отключить таймер"
 
 msgid "Disabled"
 msgstr "Отключен"
@@ -976,32 +1041,39 @@ msgid ""
 "Fritz!Box! (%s)\n"
 "retrying..."
 msgstr ""
+"Отключен от\n"
+"Fritz!Box! (%s)\n"
+"повтор..."
 
 msgid "Dish"
 msgstr "Тарелка"
 
 msgid "Display 16:9 content as"
-msgstr ""
+msgstr "Показывать 16:9 контент как"
 
 msgid "Display 4:3 content as"
-msgstr ""
+msgstr "Показывать 4:3 контент как"
 
 msgid "Display >16:9 content as"
-msgstr ""
+msgstr "Показывать >16:9 контент как"
 
 msgid "Display Setup"
-msgstr ""
+msgstr "Настройка дисплея"
 
 #, python-format
 msgid ""
 "Do you really want to REMOVE\n"
 "the plugin \"%s\"?"
 msgstr ""
+"Вы действительно хотите УДАЛИТЬ\n"
+"плагин \"%s\"?"
 
 msgid ""
 "Do you really want to check the filesystem?\n"
 "This could take lots of time!"
 msgstr ""
+"Вы действительно хотите проверить файловую систему?\n"
+"Это займет некоторое время!"
 
 #, python-format
 msgid "Do you really want to delete %s?"
@@ -1012,21 +1084,23 @@ msgid ""
 "Do you really want to download\n"
 "the plugin \"%s\"?"
 msgstr ""
+"Вы действительно хотите загрузить\n"
+"плагин \"%s\"?"
 
 msgid ""
 "Do you really want to initialize the harddisk?\n"
 "All data on the disk will be lost!"
 msgstr ""
-"Вы действительно хотите произвести установку жесткого диска?\n"
+"Вы действительно хотите форматировать жесткий диск?\n"
 "Все  данные на данном диске будут удалены!"
 
 #, python-format
 msgid "Do you really want to remove directory %s from the disk?"
-msgstr ""
+msgstr "Вы действительно хотите удалить каталог %s с диска?"
 
 #, python-format
 msgid "Do you really want to remove your bookmark of %s?"
-msgstr ""
+msgstr "Вы действительно хотите удалить закладку %s?"
 
 msgid ""
 "Do you want to backup now?\n"
@@ -1036,34 +1110,34 @@ msgstr ""
 "После нажатия OK, пожалуйста, ждите!"
 
 msgid "Do you want to burn this collection to DVD medium?"
-msgstr ""
+msgstr "Вы хотите прожечь эту коллекцию на DVD носитель?"
 
 msgid "Do you want to do a service scan?"
 msgstr "Вы хотите сканировать спутник?"
 
 msgid "Do you want to do another manual service scan?"
-msgstr "Ð\92Ñ\8b Ñ\85оÑ\82иÑ\82е Ñ\81делаÑ\82Ñ\8c Ñ\80Ñ\83Ñ\87ной Ð¿Ð¾Ð¸Ñ\81к?"
+msgstr "Ð\98Ñ\81каÑ\82Ñ\8c ÐµÑ\89е Ð²Ñ\80Ñ\83Ñ\87нÑ\83Ñ\8e?"
 
 msgid "Do you want to enable the parental control feature on your dreambox?"
 msgstr "Вы желаете установить родительский контроль на Вашем dreambox?"
 
 msgid "Do you want to install default sat lists?"
-msgstr ""
+msgstr "Вы хотите установить спутники по умолчанию?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Вы хотите установить пакет?:\n"
 
 msgid "Do you want to play DVD in drive?"
-msgstr ""
+msgstr "Вы хотите воспроизвести DVD в приводе?"
 
 msgid "Do you want to preview this DVD before burning?"
-msgstr ""
+msgstr "Вы хотите просмотреть DVD перед прожигом?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Вы хотите перезагрузить Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Вы хотите удалить пакет:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Вы хотите восстановить Ваши установки?"
@@ -1072,7 +1146,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Вы хотите продолжить воспроизведение?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Вы хотите обновить Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1082,13 +1156,13 @@ msgstr ""
 "После нажатия OK, пожалуйста, ждите!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Вы хотите обновить пакет:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Вы хотите посмотреть описание?"
 
 msgid "Don't stop current event but disable coming events"
-msgstr ""
+msgstr "Не останавливать текущее событие, но отключить ближайшие события"
 
 #, python-format
 msgid "Done - Installed or upgraded %d packages"
@@ -1100,19 +1174,19 @@ msgstr "Выполнено - Установлено или обновлено %d
 
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
-msgstr ""
+msgstr "Готово - Установлено, обновлено или удалено %d пакетов с %d ошибками"
 
 msgid "Download"
-msgstr ""
+msgstr "Загрузить"
 
 msgid "Download .NFI-Files for USB-Flasher"
-msgstr ""
+msgstr "Загрузить .NFI-файлы для USB-флешера"
 
 msgid "Download Plugins"
 msgstr "Скачать плагины"
 
 msgid "Download of USB flasher boot image failed: "
-msgstr ""
+msgstr "Не удалось скачать загрузочный имидж:"
 
 msgid "Downloadable new plugins"
 msgstr "Доступные новые плагины"
@@ -1124,10 +1198,10 @@ msgid "Downloading"
 msgstr "Загрузка"
 
 msgid "Downloading plugin information. Please wait..."
-msgstr "Ð\98деÑ\82 Ð·агрузка информации о плагинах. Ждите..."
+msgstr "Ð\97агрузка информации о плагинах. Ждите..."
 
 msgid "Dreambox format data DVD (HDTV compatible)"
-msgstr ""
+msgstr "Dreambox формат данных DVD (HDTV-совместимый"
 
 msgid "Dutch"
 msgstr "Нидерландский"
@@ -1146,34 +1220,37 @@ msgid "East"
 msgstr "Восток"
 
 msgid "Edit"
-msgstr ""
+msgstr "Редактировать"
 
 msgid "Edit DNS"
-msgstr ""
+msgstr "Изменить DNS"
+
+msgid "Edit IPKG source URL..."
+msgstr "Редактировать "
 
 msgid "Edit Title"
-msgstr ""
+msgstr "Изменить заголовок"
 
 msgid "Edit chapters of current title"
-msgstr ""
+msgstr "Изменить главы текущего заголовка"
 
 msgid "Edit services list"
 msgstr "Редактировать список сервисов"
 
 msgid "Edit settings"
-msgstr ""
+msgstr "Изменить настройки"
 
 msgid "Edit the Nameserver configuration of your Dreambox.\n"
-msgstr ""
+msgstr "Изменить сервер DNS вашего Dreambox.\n"
 
 msgid "Edit the network configuration of your Dreambox.\n"
-msgstr ""
+msgstr "Изменить конфигурацию сети  вашего Dreambox.\n"
 
 msgid "Edit title"
-msgstr ""
+msgstr "Изменить заголовок"
 
 msgid "Electronic Program Guide"
-msgstr ""
+msgstr "Телегид"
 
 msgid "Enable"
 msgstr "Включить"
@@ -1182,31 +1259,31 @@ msgid "Enable 5V for active antenna"
 msgstr "Включить 5V для антенны"
 
 msgid "Enable multiple bouquets"
-msgstr "Включить  multiple bouquets"
+msgstr "Включить мультипакеты"
 
 msgid "Enable parental control"
 msgstr "Включить родительский контроль"
 
 msgid "Enable timer"
-msgstr ""
+msgstr "Включить таймер"
 
 msgid "Enabled"
 msgstr "Включен"
 
 msgid "Encryption"
-msgstr ""
+msgstr "Кодировка"
 
 msgid "Encryption Key"
-msgstr ""
+msgstr "Ключ шифрования"
 
 msgid "Encryption Keytype"
-msgstr ""
+msgstr "Тип ключа шифрования"
 
 msgid "Encryption Type"
-msgstr ""
+msgstr "Тип шифрования"
 
 msgid "End time"
-msgstr ""
+msgstr "Время окончания"
 
 msgid "EndTime"
 msgstr "Время окончания"
@@ -1222,6 +1299,12 @@ msgid ""
 "\n"
 "© 2006 - Stephan Reichholf"
 msgstr ""
+"Enigma2 Skinselector v0.5 BETA\n"
+"\n"
+"Если у вас возникли проблемы пишите\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
@@ -1229,40 +1312,42 @@ msgstr ""
 #.       which "winding mode" is entered when first pressing "rewind" or
 #.       "fast forward". 
 msgid "Enter Fast Forward at speed"
-msgstr ""
+msgstr "Скорость перемотки вперед"
 
 msgid "Enter Rewind at speed"
-msgstr ""
+msgstr "Скорость перемотки назад"
 
 msgid "Enter WLAN network name/SSID:"
-msgstr ""
+msgstr "Введите имя беспроводной сети/SSID:"
 
 msgid "Enter WLAN passphrase/key:"
-msgstr ""
+msgstr "Введите ключ сети"
 
 msgid "Enter main menu..."
 msgstr "Войти в главное меню..."
 
 msgid "Enter the service pin"
-msgstr ""
+msgstr "Введите pin-код для сервиса"
 
 msgid "Error"
-msgstr ""
+msgstr "Ошибка"
 
 msgid "Error executing plugin"
-msgstr ""
+msgstr "Ошибка выполнения плагина"
 
 #, python-format
 msgid ""
 "Error: %s\n"
 "Retry?"
 msgstr ""
+"Ошибка: %s\n"
+"Повторить?"
 
 msgid "Eventview"
 msgstr "Просмотр событий"
 
 msgid "Everything is fine"
-msgstr ""
+msgstr "Все хорошо"
 
 msgid "Execution Progress:"
 msgstr "Процесс выполнения:"
@@ -1271,28 +1356,28 @@ msgid "Execution finished!!"
 msgstr "Выполнение закончено!"
 
 msgid "Exif"
-msgstr ""
+msgstr "Exif"
 
 msgid "Exit"
-msgstr ""
+msgstr "Выйти"
 
 msgid "Exit editor"
-msgstr ""
+msgstr "Выйти из редактора"
 
 msgid "Exit the wizard"
-msgstr "Выход из мастера настроек"
+msgstr "Выйти из мастера настроек"
 
 msgid "Exit wizard"
-msgstr "Выход из мастера настроек"
+msgstr "Выйти из мастера настроек"
 
 msgid "Expert"
-msgstr ""
+msgstr "Эксперт"
 
 msgid "Extended Networksetup Plugin..."
-msgstr ""
+msgstr "Расширенный плагин настроек сети..."
 
 msgid "Extended Setup..."
-msgstr ""
+msgstr "Расширенные настройки..."
 
 msgid "Extensions"
 msgstr "Расширения"
@@ -1301,19 +1386,19 @@ msgid "FEC"
 msgstr "FEC"
 
 msgid "Factory reset"
-msgstr ""
+msgstr "Заводские установки"
 
 msgid "Failed"
-msgstr ""
+msgstr "Неудачный"
 
 msgid "Fast"
-msgstr ""
+msgstr "Быстро"
 
 msgid "Fast DiSEqC"
 msgstr "Быстрый DiSEqC"
 
 msgid "Fast Forward speeds"
-msgstr ""
+msgstr "Скорость перемотки вперед"
 
 msgid "Fast epoch"
 msgstr ""
@@ -1322,44 +1407,44 @@ msgid "Favourites"
 msgstr "Избранное"
 
 msgid "Filesystem Check..."
-msgstr ""
+msgstr "Файловая система..."
 
 msgid "Filesystem contains uncorrectable errors"
-msgstr ""
+msgstr "Файловая система содержит неисправимые ошибки"
 
 msgid "Finetune"
 msgstr "Точно"
 
 msgid "Finished"
-msgstr ""
+msgstr "Завершено"
 
 msgid "Finished configuring your network"
-msgstr ""
+msgstr "Настройка сети закончена"
 
 msgid "Finished restarting your network"
-msgstr ""
+msgstr "Перезагрузка сети завершена"
 
 msgid "Finnish"
-msgstr "Ð\9eконÑ\87ание"
+msgstr "ФинÑ\81кий"
 
 msgid ""
 "First we need to download the latest boot environment for the USB flasher."
-msgstr ""
+msgstr "Сначала нужно скачать загрузочную среду для USB flasher."
 
 msgid "Flash"
-msgstr ""
+msgstr "Прошивка"
 
 msgid "Flashing failed"
-msgstr ""
+msgstr "Прошивка не удалась"
 
 msgid "Format"
-msgstr ""
+msgstr "Формат"
 
 msgid "Frame repeat count during non-smooth winding"
-msgstr ""
+msgstr "Расчет повтора кадров для покадрового воспроизведения"
 
 msgid "Frame size in full view"
-msgstr ""
+msgstr "Размер рамки при просмотре во весь экран"
 
 msgid "French"
 msgstr "Французский"
@@ -1368,13 +1453,13 @@ msgid "Frequency"
 msgstr "Частота"
 
 msgid "Frequency bands"
-msgstr ""
+msgstr "Частотные диапазоны"
 
 msgid "Frequency scan step size(khz)"
-msgstr ""
+msgstr "Шаг частоты сканирования(khz)"
 
 msgid "Frequency steps"
-msgstr ""
+msgstr "Шаг частоты"
 
 msgid "Fri"
 msgstr "Пт"
@@ -1383,17 +1468,17 @@ msgid "Friday"
 msgstr "Пятница"
 
 msgid "Frisian"
-msgstr ""
+msgstr "Фризский"
 
 msgid "Fritz!Box FON IP address"
-msgstr ""
+msgstr "Fritz!Box FON IP адрес"
 
 #, python-format
 msgid "Frontprocessor version: %d"
 msgstr "Версия фронтпроцессора: %d"
 
 msgid "Fsck failed"
-msgstr ""
+msgstr "Ошибка fsck"
 
 msgid "Function not yet implemented"
 msgstr "Функция не реализована"
@@ -1402,10 +1487,24 @@ msgid ""
 "GUI needs a restart to apply a new skin\n"
 "Do you want to Restart the GUI now?"
 msgstr ""
+"Для активации нового скина необходимо перезагрузить GUI\n"
+"Хотите перезагрузить GUI сейчас?"
 
 msgid "Gateway"
 msgstr "Шлюз"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Жанр"
 
@@ -1422,13 +1521,13 @@ msgid "Goto position"
 msgstr "Переход на позицию"
 
 msgid "Graphical Multi EPG"
-msgstr ""
+msgstr "Графический телегид"
 
 msgid "Greek"
-msgstr ""
+msgstr "Греческий"
 
 msgid "Guard Interval"
-msgstr ""
+msgstr "Интервал защиты"
 
 msgid "Guard interval mode"
 msgstr "Guard interval mode"
@@ -1437,48 +1536,53 @@ msgid "Harddisk"
 msgstr "Жесткий диск"
 
 msgid "Harddisk setup"
-msgstr ""
+msgstr "Настройка диска"
 
 msgid "Harddisk standby after"
-msgstr ""
+msgstr "Отключение HDD через"
 
 msgid "Hidden network SSID"
-msgstr ""
+msgstr "Скрытый SSID сети"
 
 msgid "Hierarchy Information"
-msgstr ""
+msgstr "Иерархия информации"
 
 msgid "Hierarchy mode"
-msgstr "Hierarchy mode"
+msgstr "Режим иерархии"
 
-msgid "Horizontal"
+msgid "High bitrate support"
 msgstr ""
 
+msgid "Horizontal"
+msgstr "Горизонтальная"
+
 msgid "How many minutes do you want to record?"
-msgstr "СколÑ\8cко Ð¼Ð¸Ð½Ñ\83Ñ\82 Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ð¿Ñ\80оизводиÑ\82Ñ\8c Ð·Ð°Ð¿Ð¸Ñ\81ь?"
+msgstr "СколÑ\8cко Ð¼Ð¸Ð½Ñ\83Ñ\82 Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ð·Ð°Ð¿Ð¸Ñ\81аÑ\82ь?"
 
 msgid "Hungarian"
-msgstr ""
+msgstr "Венгерский"
 
 msgid "IP Address"
 msgstr "IP адрес"
 
 msgid "ISO file is too large for this filesystem!"
-msgstr ""
+msgstr "ISO файл слишком велик для этой файловой системы!"
 
 msgid "ISO path"
-msgstr ""
+msgstr "ISO путь"
 
 msgid "Icelandic"
 msgstr "Исландский"
 
 msgid "If you can see this page, please press OK."
-msgstr ""
+msgstr "Если вы видите эту страницу нажмите ОК."
 
 msgid ""
 "If you see this, something is wrong with\n"
 "your scart connection. Press OK to return."
 msgstr ""
+"Если вы видите это, то что-то не так с вашим\n"
+"SCART соединением. Нажмите кнопку ОК, чтобы вернуться."
 
 msgid ""
 "If your TV has a brightness or contrast enhancement, disable it. If there is "
@@ -1491,28 +1595,37 @@ msgid ""
 "step.\n"
 "If you are happy with the result, press OK."
 msgstr ""
+"Если в Вашем телевизоре наблюдается превышение яркости или контрастности, "
+"устраните это. Если в Вашем TB выбран один из режимов настроек изображения,"
+"например \"динамичный\", сбросьте настройки в стандартные .Уменьшите "
+"контрастность Вашего ТВ  на максимально возможное значение.\n"
+"Теперь уменьшите яркость на максимально низкое значение, на сколько это "
+"возможно, но при этом следите, чтобы два самых нижних оттенка "
+"былиразличимы.\n"
+"Не беспокойтесь о ярких оттенках, они будут настроены на следующем этапе.\n"
+"Если Вас устраивает результат, нажмите OK."
 
 msgid "Image flash utility"
-msgstr ""
+msgstr "Утилита прошивки имиджа"
 
 msgid "Image-Upgrade"
 msgstr "Обновление имиджа"
 
 msgid "In Progress"
-msgstr ""
+msgstr "В Процессе"
 
 msgid ""
 "In order to record a timer, the TV was switched to the recording service!\n"
-msgstr ""
+msgstr "Таймер переключил телевизор на записываемый канал!\n"
 
 msgid "Increased voltage"
 msgstr "Повышенное напряжение"
 
 msgid "Index"
-msgstr ""
+msgstr "Индекс"
 
 msgid "InfoBar"
-msgstr ""
+msgstr "ИнфоПанель"
 
 msgid "Infobar timeout"
 msgstr "Время показа инфопанели"
@@ -1536,50 +1649,56 @@ msgid "Input"
 msgstr "Вход"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Установить новый имидж с USB стика"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Установить новый имидж через web браузер"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Установить локальный IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr "Установить настройки, скины, программное обеспечение..."
+
+msgid "Install software updates..."
+msgstr "Установить обновления..."
 
 msgid "Installing"
-msgstr ""
+msgstr "Установка"
 
 msgid "Installing Software..."
-msgstr ""
+msgstr "Установка программы..."
 
 msgid "Installing default sat lists... Please wait..."
-msgstr ""
+msgstr "Установка "
 
 msgid "Installing defaults... Please wait..."
-msgstr ""
+msgstr "Установка настроек по умолчанию... Пожалуйста, подождите..."
 
 msgid "Installing package content... Please wait..."
-msgstr ""
+msgstr "Установка содержимого пакета... Пожалуйста, подождите.."
 
 msgid "Instant Record..."
 msgstr "Немедленная запись..."
 
 msgid "Integrated Ethernet"
-msgstr ""
+msgstr "Адаптер локальной сети"
 
 msgid "Integrated Wireless"
-msgstr ""
+msgstr "Адаптер беспроводной сети"
 
 msgid "Intermediate"
-msgstr ""
+msgstr "Промежуточный"
 
 msgid "Internal Flash"
-msgstr ""
+msgstr "Внутренняя флешь"
 
 msgid "Invalid Location"
-msgstr ""
+msgstr "Неправильное расположение"
 
 #, python-format
 msgid "Invalid directory selected: %s"
-msgstr ""
+msgstr "Выбран неправильный каталог: %s"
 
 msgid "Inversion"
 msgstr "Инверсия"
@@ -1588,17 +1707,17 @@ msgid "Invert display"
 msgstr "Инверсия экрана"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Итальянский"
 
 msgid "Job View"
-msgstr ""
+msgstr "Просмотр задания"
 
 #. TRANSLATORS: (aspect ratio policy: display as fullscreen, even if this breaks the aspect)
 msgid "Just Scale"
-msgstr ""
+msgstr "Just Scale"
 
 msgid "Keyboard Map"
 msgstr "Раскладка клавиатуры"
@@ -1610,7 +1729,7 @@ msgid "Keymap"
 msgstr "Keymap"
 
 msgid "LAN Adapter"
-msgstr ""
+msgstr "Сетевой адаптер"
 
 msgid "LNB"
 msgstr "LNB"
@@ -1631,23 +1750,26 @@ msgid "Language..."
 msgstr "Язык..."
 
 msgid "Last speed"
-msgstr ""
+msgstr "Последняя скорость"
 
 msgid "Latitude"
 msgstr "Широта"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Латвийский"
 
 msgid "Leave DVD Player?"
-msgstr ""
+msgstr "Выйти из DVD плеера?"
 
 msgid "Left"
 msgstr "Левый"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Позволяет просматривать и редактировать файлы на Dreambox"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
-msgstr ""
+msgstr "Letterbox"
 
 msgid "Limit east"
 msgstr "Ограничение восток"
@@ -1662,43 +1784,43 @@ msgid "Limits on"
 msgstr "Ограничения включены"
 
 msgid "Link:"
-msgstr ""
+msgstr "Ссылка:"
 
 msgid "Linked titles with a DVD menu"
-msgstr ""
+msgstr "Заголовки связанные с DVD меню"
 
 msgid "List of Storage Devices"
-msgstr ""
+msgstr "Список устройств хранения"
 
 msgid "Lithuanian"
-msgstr ""
+msgstr "Литовский"
 
 msgid "Load"
-msgstr ""
+msgstr "Загрузить"
 
 msgid "Load Length of Movies in Movielist"
-msgstr ""
+msgstr "Загружать длительность видео в список фильмов"
 
 msgid "Local Network"
-msgstr ""
+msgstr "Локальная сеть"
 
 msgid "Location"
-msgstr ""
+msgstr "Расположение"
 
 msgid "Lock:"
-msgstr ""
+msgstr "Захват:"
 
 msgid "Log results to harddisk"
-msgstr ""
+msgstr "Записывать журнал на диск"
 
 msgid "Long Keypress"
-msgstr ""
+msgstr "Длинное нажатие"
 
 msgid "Longitude"
 msgstr "Долгота"
 
 msgid "MMC Card"
-msgstr ""
+msgstr "MMC карта"
 
 msgid "MORE"
 msgstr "БОЛЬШЕ"
@@ -1710,25 +1832,25 @@ msgid "Mainmenu"
 msgstr "Главное меню"
 
 msgid "Make this mark an 'in' point"
-msgstr ""
+msgstr "Отметить эту точку как 'начало'"
 
 msgid "Make this mark an 'out' point"
-msgstr ""
+msgstr "Отметить эту точку как 'конец'"
 
 msgid "Make this mark just a mark"
-msgstr ""
+msgstr "Создать простую метку"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Менеджер ПО ресивера"
 
 msgid "Manual Scan"
 msgstr "Ручной поиск"
 
 msgid "Manual transponder"
-msgstr "Manual transponder"
+msgstr "Транспондер вручную"
 
 msgid "Manufacturer"
-msgstr ""
+msgstr "Производитель"
 
 msgid "Margin after record"
 msgstr "Объединить после записи"
@@ -1737,16 +1859,16 @@ msgid "Margin before record (minutes)"
 msgstr "Объединить перед записью (в минутах)"
 
 msgid "Media player"
-msgstr "Медиа проигрыватель"
+msgstr "Медиаплеер"
 
 msgid "MediaPlayer"
-msgstr "Медиа проигрыватель"
+msgstr "Медиаплеер"
 
 msgid "Medium is not a writeable DVD!"
-msgstr ""
+msgstr "Носитель не записываемый DVD!"
 
 msgid "Medium is not empty!"
-msgstr ""
+msgstr "Носитель не пустой!"
 
 msgid "Menu"
 msgstr "Меню"
@@ -1755,13 +1877,13 @@ msgid "Message"
 msgstr "Сообщение"
 
 msgid "Message..."
-msgstr ""
+msgstr "Сообщение..."
 
 msgid "Mkfs failed"
-msgstr ""
+msgstr "Ошибка mkfs"
 
 msgid "Mode"
-msgstr "режим"
+msgstr "Режим"
 
 msgid "Model: "
 msgstr "Модель:"
@@ -1782,7 +1904,7 @@ msgid "Monday"
 msgstr "Понедельник"
 
 msgid "Mount failed"
-msgstr ""
+msgstr "Ошибка подключения"
 
 msgid "Move Picture in Picture"
 msgstr "Переместить PiP"
@@ -1794,16 +1916,16 @@ msgid "Move west"
 msgstr "Переместить на запад"
 
 msgid "Movielist menu"
-msgstr ""
+msgstr "Меню списка видео"
 
 msgid "Multi EPG"
-msgstr "Multi-EPG"
+msgstr "Граф. EPG"
 
 msgid "Multiple service support"
 msgstr "Поддержка мультисервисов"
 
 msgid "Multisat"
-msgstr "Multisat"
+msgstr "Несколько спутников"
 
 msgid "Mute"
 msgstr "Без звука"
@@ -1815,13 +1937,13 @@ msgid "NEXT"
 msgstr "Следующий"
 
 msgid "NFI image flashing completed. Press Yellow to Reboot!"
-msgstr ""
+msgstr "NFI имидж удачно установлен. Нажмите ЖЕЛТЫЙ для перезагрузки!"
 
 msgid "NOW"
 msgstr "СЕЙЧАС"
 
 msgid "NTSC"
-msgstr ""
+msgstr "NTSC"
 
 msgid "Name"
 msgstr "Имя"
@@ -1831,49 +1953,49 @@ msgstr "DNS сервер"
 
 #, python-format
 msgid "Nameserver %d"
-msgstr ""
+msgstr "DNS сервер %d"
 
 msgid "Nameserver Setup"
-msgstr ""
+msgstr "Настройка DNS"
 
 msgid "Nameserver settings"
-msgstr ""
+msgstr "Настройка DNS"
 
 msgid "Netmask"
 msgstr "Маска подсети"
 
 msgid "Network Configuration..."
-msgstr ""
+msgstr "Конфигурация сети..."
 
 msgid "Network Mount"
-msgstr ""
+msgstr "Сетевые подключения"
 
 msgid "Network SSID"
-msgstr ""
+msgstr "SSID сети"
 
 msgid "Network Setup"
-msgstr "УÑ\81Ñ\82ановка сети"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка сети"
 
 msgid "Network scan"
 msgstr "Поиск сети"
 
 msgid "Network setup"
-msgstr ""
+msgstr "Настройка сети"
 
 msgid "Network test"
-msgstr ""
+msgstr "Тест сети"
 
 msgid "Network test..."
-msgstr ""
+msgstr "Тест сети..."
 
 msgid "Network..."
 msgstr "Сеть..."
 
 msgid "Network:"
-msgstr ""
+msgstr "Сеть:"
 
 msgid "NetworkWizard"
-msgstr ""
+msgstr "Мастер настройки сети"
 
 msgid "New"
 msgstr "Новые"
@@ -1891,10 +2013,10 @@ msgid "No"
 msgstr "Нет"
 
 msgid "No (supported) DVDROM found!"
-msgstr ""
+msgstr "Не найден (поддерживаемый) DVDROM!"
 
 msgid "No 50 Hz, sorry. :("
-msgstr ""
+msgstr "Нет 50 Hz, извините. :("
 
 msgid "No HDD found or HDD not initialized!"
 msgstr ""
@@ -1902,7 +2024,7 @@ msgstr ""
 "не установлен."
 
 msgid "No Networks found"
-msgstr ""
+msgstr "Сети не найдены"
 
 msgid "No backup needed"
 msgstr "Резервное копирование не требуется"
@@ -1911,9 +2033,14 @@ msgid ""
 "No data on transponder!\n"
 "(Timeout reading PAT)"
 msgstr ""
+"Нет данный на транспондере!\n"
+"(Таймаут чтенияPAT)"
 
 msgid "No details for this image file"
-msgstr ""
+msgstr "Нет подробностей об этом имидже"
+
+msgid "No displayable files on this medium found!"
+msgstr "Нет отображаемых файлов на этом носителе!"
 
 msgid "No event info found, recording indefinitely."
 msgstr "Информация о событиях не найдена, запись продолжена."
@@ -1926,16 +2053,16 @@ msgid ""
 msgstr "Пакеты не были обновлены. Проверьте настройки сети и попробуйте снова."
 
 msgid "No picture on TV? Press EXIT and retry."
-msgstr ""
+msgstr "Нет картинки на ТВ? Нажмите EXIT и повторите."
 
 msgid "No positioner capable frontend found."
-msgstr "Нет позиционера способного найти передний край."
+msgstr "Нет фронтэнда с позиционером"
 
 msgid "No satellite frontend found!!"
-msgstr ""
+msgstr "Не найден спутниковый интерфейс!"
 
 msgid "No tags are set on these movies."
-msgstr ""
+msgstr "Нет меток для этих фильмов."
 
 msgid "No tuner is configured for use with a diseqc positioner!"
 msgstr "Нет тюнера, настроенного для использования с diseqc позиционером!"
@@ -1944,9 +2071,11 @@ msgid ""
 "No tuner is enabled!\n"
 "Please setup your tuner settings before you start a service scan."
 msgstr ""
+"Нет включенного тюнера!\n"
+"Пожалуйста настройте тюнер перед поиском каналов."
 
 msgid "No useable USB stick found"
-msgstr ""
+msgstr "Не найден пригодный USB стик"
 
 msgid ""
 "No valid service PIN found!\n"
@@ -1954,7 +2083,7 @@ msgid ""
 "When you say 'No' here the service protection stay disabled!"
 msgstr ""
 "Не найден валидный PIN!\n"
-"Вы хотите изменить сервис PIN сейчас?\n"
+"Вы хотите изменить PIN сервисасейчас?\n"
 "Если вы ответите 'НЕТ', то защита сервиса \n"
 "не будет включена!"
 
@@ -1964,7 +2093,7 @@ msgid ""
 "When you say 'No' here the setup protection stay disabled!"
 msgstr ""
 "Не найден валидный PIN!\n"
-"Вы хотите изменить сервис PIN сейчас?\n"
+"Вы хотите изменить PIN настроек сейчас?\n"
 "Если вы ответите 'НЕТ', то защита настроек \n"
 "не будет включена!"
 
@@ -1973,27 +2102,36 @@ msgid ""
 "Please verify that you have attached a network cable and your network is "
 "configured correctly."
 msgstr ""
+"Не найден сетевой адаптер.\n"
+"Пожалуйста, убедитесь, что сетевой кабель подключен и ваша сеть настроена "
+"правильно."
 
 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 ""
+"Не найден ,беспроводный адаптер.\n"
+"Пожалуйста, убедитесь, что совместимый беспроводной адаптер подключен и ваша "
+"сеть настроена правильно."
 
 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 ""
+"Не найден ,беспроводный интерфейс.\n"
+"Пожалуйста, убедитесь, что совместимый беспроводной адаптер подключен и ваша "
+"сеть настроена правильно."
 
 msgid "No, but restart from begin"
-msgstr ""
+msgstr "Нет, но начать сначала"
 
 msgid "No, do nothing."
 msgstr "Нет, не делать"
 
 msgid "No, just start my dreambox"
-msgstr "Нет,включить мой dreamdox"
+msgstr "Нет, включить мой dreamdox"
 
 msgid "No, scan later manually"
 msgstr "Нет, найти позже вручную."
@@ -2003,7 +2141,7 @@ msgstr "Никакой"
 
 #. TRANSLATORS: (aspect ratio policy: display as fullscreen, with stretching the left/right)
 msgid "Nonlinear"
-msgstr ""
+msgstr "Nonlinear"
 
 msgid "North"
 msgstr "Север"
@@ -2016,13 +2154,15 @@ msgid ""
 "Not enough diskspace. Please free up some diskspace and try again. (%d MB "
 "required, %d MB available)"
 msgstr ""
+"Нет места на диске. Пожалуйста освободите немного места и попробуйте снова. "
+"(%d MB required, %d MB available)"
 
 msgid ""
 "Nothing to scan!\n"
 "Please setup your tuner settings before you start a service scan."
 msgstr ""
 "Нечего искать!\n"
-"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð½Ð°Ñ\81Ñ\82Ñ\80ойÑ\82е Ð\92аÑ\88 Ñ\82Ñ\8eнеÑ\80 Ð¿ÐµÑ\80ед Ð·Ð°Ð¿Ñ\83Ñ\81ком Ñ\81еÑ\80виÑ\81а поиска."
+"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð½Ð°Ñ\81Ñ\82Ñ\80ойÑ\82е Ð\92аÑ\88 Ñ\82Ñ\8eнеÑ\80 Ð¿ÐµÑ\80ед Ð½Ð°Ñ\87алом поиска."
 
 msgid "Now Playing"
 msgstr "Воспроизводится "
@@ -2032,6 +2172,10 @@ msgid ""
 "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 ""
+"Теперь используйте  настройки  контрастности для поднятия фона в максимально "
+"возможный уровень, но при этом необходимо следить,чтобы Вы могли видеть "
+"различия между двумя самыми яркими уровнями оттенков.Если все нормально "
+"нажмите OK."
 
 msgid "OK"
 msgstr "OK"
@@ -2043,7 +2187,7 @@ msgid "OSD Settings"
 msgstr "OSD установки"
 
 msgid "OSD visibility"
-msgstr ""
+msgstr "Прозрачность OSD"
 
 msgid "Off"
 msgstr "Выкл."
@@ -2058,16 +2202,16 @@ msgid "Online-Upgrade"
 msgstr "Online-обновление"
 
 msgid "Only Free scan"
-msgstr ""
+msgstr "Только бесплатные"
 
 msgid "Orbital Position"
-msgstr ""
+msgstr "Орбитальная позиция"
 
 msgid "PAL"
-msgstr ""
+msgstr "PAL"
 
 msgid "PIDs"
-msgstr ""
+msgstr "ПИДы"
 
 msgid "Package list update"
 msgstr "Обновление списка пакетов"
@@ -2076,17 +2220,17 @@ msgid "Packet management"
 msgstr "Управление пакетами"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Менеджер пакетов"
 
 msgid "Page"
-msgstr ""
+msgstr "Страница"
 
 #. TRANSLATORS: (aspect ratio policy: cropped content on left/right) in doubt, keep english term
 msgid "Pan&Scan"
-msgstr ""
+msgstr "Pan&Scan"
 
 msgid "Parent Directory"
-msgstr ""
+msgstr "Родительский каталог"
 
 msgid "Parental control"
 msgstr "Родительский контроль"
@@ -2101,64 +2245,74 @@ msgid "Parental control type"
 msgstr "Тип родительского контроля"
 
 msgid "Pause movie at end"
-msgstr ""
+msgstr "Пауза в конце фильма"
 
 msgid "PiPSetup"
 msgstr "PiP установка"
 
 msgid "PicturePlayer"
-msgstr ""
+msgstr "Просмотр фото"
 
 #. TRANSLATORS: (aspect ratio policy: black bars on left/right) in doubt, keep english term.
 msgid "Pillarbox"
-msgstr ""
+msgstr "Pillarbox"
 
 msgid "Pilot"
-msgstr ""
+msgstr "Пилот"
 
 msgid "Pin code needed"
-msgstr ""
+msgstr "Нужен pin код"
 
 msgid "Play"
-msgstr ""
+msgstr "Воспроизвести"
 
 msgid "Play Audio-CD..."
-msgstr ""
+msgstr "Воспроизвести Аудио-CD"
+
+msgid "Play DVD"
+msgstr "Воспроизвести DVD"
+
+msgid "Play Music..."
+msgstr "Воспроизвести Музыку..."
 
 msgid "Play recorded movies..."
 msgstr "Воспроизвести записанное видео..."
 
 msgid "Please Reboot"
-msgstr ""
+msgstr "Пожалуйста Перезагрузите"
 
 msgid "Please Select Medium to be Scanned"
-msgstr ""
+msgstr "Пожалуйста, выберите носитель для сканирования"
 
 msgid "Please change recording endtime"
-msgstr ""
+msgstr "Пожалуйста, измените время окончания записи"
 
 msgid "Please check your network settings!"
-msgstr ""
+msgstr "Пожалуйста, проверьте настройки сети!"
 
 msgid "Please choose .NFI image file from feed server to download"
-msgstr ""
+msgstr "Пожалуйста, выберите .NFI имидж на сервере для загрузки"
 
 msgid "Please choose an extension..."
 msgstr "Пожалуйста, выберите дополнение..."
 
 msgid "Please choose he package..."
-msgstr ""
+msgstr "Пожалуйста выберите пакет..."
 
 msgid "Please choose the default services lists you want to install."
 msgstr ""
+"Пожалуйста, выберите список каналов по умолчанию который вы хотите "
+"установить."
 
 msgid ""
 "Please disconnect all USB devices from your Dreambox and (re-)attach the "
 "target USB stick (minimum size is 64 MB) now!"
 msgstr ""
+"Пожалуйста, отключите все USB устройства от ресивера и (пере-)подключите USB-"
+"стик (минимальный размер 64Мб) сейчас!"
 
 msgid "Please do not change any values unless you know what you are doing!"
-msgstr ""
+msgstr "Пожалуйста, не изменяйте значения пока не знаете что делаете!"
 
 msgid "Please enter a name for the new bouquet"
 msgstr "Пожалуйста, введите имя для нового пакета"
@@ -2167,42 +2321,44 @@ msgid "Please enter a name for the new marker"
 msgstr "Пожалуйста, введите имя для нового маркера"
 
 msgid "Please enter a new filename"
-msgstr ""
+msgstr "Пожалуйста, введите новое имя файла"
 
 msgid "Please enter filename (empty = use current date)"
-msgstr ""
+msgstr "Пожалуйста, введите имя файла(пусто = текущая дата)"
 
 msgid "Please enter name of the new directory"
-msgstr ""
+msgstr "Пожалуйста, введите имя нового каталого"
 
 msgid "Please enter the correct pin code"
-msgstr "Пожалуйста введите правильный PIN"
+msgstr "Пожалуйста, введите правильный PIN"
 
 msgid "Please enter the old pin code"
 msgstr "Введите старый PIN"
 
 msgid "Please follow the instructions on the TV"
-msgstr ""
+msgstr "Пожалуйста, следуйте инструкциям на ТВ"
 
 msgid ""
 "Please note that the previously selected media could not be accessed and "
 "therefore the default directory is being used instead."
 msgstr ""
+"Пожалуйста, обратите внимание, что ранее выбранный носитель недоступен, и "
+"вместо него будет использован каталог по умолчанию"
 
 msgid "Please press OK to continue."
-msgstr ""
+msgstr "Пожалуйста, нажмите ОК для продолжения."
 
 msgid "Please press OK!"
-msgstr ""
+msgstr "Пожалуйста, нажмите ОК!"
 
 msgid "Please select .NFI flash image file from medium"
-msgstr ""
+msgstr "Пожалуйста, выберите .NFI имидж с носителя"
 
 msgid "Please select a playlist to delete..."
-msgstr ""
+msgstr "Пожалуйста, выберите плейлист для удаления"
 
 msgid "Please select a playlist..."
-msgstr ""
+msgstr "Пожалуйста, выберите плейлист..."
 
 msgid "Please select a subservice to record..."
 msgstr "Пожалуйста, выберите подсервис для записи..."
@@ -2211,32 +2367,32 @@ msgid "Please select a subservice..."
 msgstr "Пожалуйста, выберите подсервис..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Пожалуйста, выберите носитель для резерного копирования"
 
 msgid "Please select tag to filter..."
-msgstr ""
+msgstr "Пожалуйста, выберите тэг для фильтра..."
 
 msgid "Please select target directory or medium"
-msgstr ""
+msgstr "Пожалуйста, выберите целевой каталог или носитель"
 
 msgid "Please select the movie path..."
-msgstr ""
+msgstr "Пожалуйста, выберите путь ..."
 
 msgid "Please set up tuner B"
-msgstr "Пожалйуста, произведите установку тюнера B."
+msgstr "Пожалуйста, настройте тюнер B."
 
 msgid "Please set up tuner C"
-msgstr ""
+msgstr "Пожалуйста, настройте тюнер C"
 
 msgid "Please set up tuner D"
-msgstr ""
+msgstr "Пожалуйста, настройте тюнер D"
 
 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 ""
-"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е ÐºÐ»Ð°Ð²Ð¸Ñ\88и Ð½Ð°Ð¿Ñ\80авлениÑ\8f для перемещения PiP окна.\n"
+"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е ÐºÐ»Ð°Ð²Ð¸Ñ\88и Ð½Ð°Ð²Ð¸Ð³Ð°Ñ\86ии для перемещения PiP окна.\n"
 "Нажимайте Bouquet +/- для изменения размеров окна.\n"
 "Нажмите OK  для возвращения в режим TV или EXIT для отмены движения."
 
@@ -2244,21 +2400,23 @@ msgid ""
 "Please use the UP and DOWN keys to select your language. Afterwards press "
 "the OK button."
 msgstr ""
+"Пожалуйста, используйте кнопки ВВЕРХ и ВНИЗ для выбора языка. Далее нажмите "
+"ОК."
 
 msgid "Please wait for activation of your network configuration..."
-msgstr ""
+msgstr "Подождите, идет активация вашей сетевой конфигурации ..."
 
 msgid "Please wait while scanning is in progress..."
-msgstr ""
+msgstr "Пожалуйста, подождите пока идет сканирование..."
 
 msgid "Please wait while we configure your network..."
-msgstr ""
+msgstr "Пожалуйста, подождите, пока мы настроим сеть ..."
 
 msgid "Please wait while your network is restarting..."
-msgstr ""
+msgstr "Пожалуйста, подождите, пока идет перезагрузка сети..."
 
 msgid "Please wait..."
-msgstr ""
+msgstr "Пожалуйста, подождите..."
 
 msgid "Please wait... Loading list..."
 msgstr "Пожалуйста, ждите...Загружается список"
@@ -2267,7 +2425,7 @@ msgid "Plugin browser"
 msgstr "Установленные плагины"
 
 msgid "Plugins"
-msgstr ""
+msgstr "Плагины"
 
 msgid "Polarity"
 msgstr "Поляризация"
@@ -2276,7 +2434,7 @@ msgid "Polarization"
 msgstr "Поляризация"
 
 msgid "Polish"
-msgstr ""
+msgstr "Польский"
 
 msgid "Port A"
 msgstr "Port A"
@@ -2291,7 +2449,7 @@ msgid "Port D"
 msgstr "Port D"
 
 msgid "Portuguese"
-msgstr ""
+msgstr "Португальский"
 
 msgid "Positioner"
 msgstr "Позиционер"
@@ -2309,26 +2467,26 @@ msgid "Positioner storage"
 msgstr "Сохранение позиционера"
 
 msgid "Power threshold in mA"
-msgstr ""
+msgstr "Порог тока в mA"
 
 msgid "Predefined transponder"
-msgstr ""
+msgstr "Предопределенный транспондер"
 
 msgid "Preparing... Please wait"
-msgstr ""
+msgstr "Подготовка ... Пожалуйста, подождите"
 
 msgid "Press OK on your remote control to continue."
-msgstr ""
+msgstr "Нажмите OK на пульте, чтобы продолжить"
 
 msgid "Press OK to activate the settings."
 msgstr "Нажмите OK для активации установок"
 
 msgid "Press OK to edit the settings."
-msgstr ""
+msgstr "Нажмите OK, чтобы изменить настройки."
 
 #, python-format
 msgid "Press OK to get further details for %s"
-msgstr ""
+msgstr "Нажмите ОК, чтобы получить подробную информацию о %s"
 
 msgid "Press OK to scan"
 msgstr "Нажмите OK для поиска."
@@ -2340,16 +2498,16 @@ msgid "Prev"
 msgstr "Пред."
 
 msgid "Preview menu"
-msgstr ""
+msgstr "Просмотреть меню"
 
 msgid "Primary DNS"
-msgstr ""
+msgstr "Первичный DNS"
 
 msgid "Priority"
-msgstr ""
+msgstr "Очередность"
 
 msgid "Properties of current title"
-msgstr ""
+msgstr "Свойства текущего заголовка"
 
 msgid "Protect services"
 msgstr "Защитить сервисы"
@@ -2361,13 +2519,16 @@ msgid "Provider"
 msgstr "Провайдер"
 
 msgid "Provider to scan"
-msgstr ""
+msgstr "Провайдер для поиска"
 
 msgid "Providers"
 msgstr "Провайдеры"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Python интерфейс для /tmp/mmi.socket"
+
 msgid "Quick"
-msgstr ""
+msgstr "Быстро"
 
 msgid "Quickzap"
 msgstr "Quickzap"
@@ -2379,19 +2540,19 @@ msgid "RF output"
 msgstr "ВЧ выход"
 
 msgid "RGB"
-msgstr ""
+msgstr "RGB"
 
 msgid "RSS Feed URI"
-msgstr ""
+msgstr "RSS Feed URI"
 
 msgid "Radio"
-msgstr ""
+msgstr "Радио"
 
 msgid "Ram Disk"
-msgstr ""
+msgstr "Ram Disk"
 
 msgid "Random"
-msgstr ""
+msgstr "Случайно"
 
 msgid "Really close without saving settings?"
 msgstr "Действительно закрыть без сохранения настроек ?"
@@ -2403,35 +2564,35 @@ msgid "Really exit the subservices quickzap?"
 msgstr "Действительно выйти из подсервиса quickzap?"
 
 msgid "Really reboot now?"
-msgstr ""
+msgstr "Действительно перезагрузить сейчас?"
 
 msgid "Really restart now?"
-msgstr ""
+msgstr "Действительно перезагрузить сейчас?"
 
 msgid "Really shutdown now?"
-msgstr ""
+msgstr "Действительно выключить сейчас?"
 
 msgid "Reboot"
-msgstr ""
+msgstr "Перезагрузка"
 
 msgid "Reception Settings"
-msgstr ""
+msgstr "Параметры приема"
 
 msgid "Record"
 msgstr "Записать"
 
 #, python-format
 msgid "Record time limited due to conflicting timer %s"
-msgstr ""
+msgstr "Время записи ограничено ввиду конфликта таймера %s"
 
 msgid "Recorded files..."
-msgstr ""
+msgstr "Записанные файлы..."
 
 msgid "Recording"
 msgstr "Запись"
 
 msgid "Recording(s) are in progress or coming up in few seconds!"
-msgstr ""
+msgstr "Запись(и) идет или начнется в ближайшие несколько секунд!"
 
 msgid "Recordings always have priority"
 msgstr "Записи всегда имеют приоритет"
@@ -2440,53 +2601,53 @@ msgid "Reenter new pin"
 msgstr "Повторите новый PIN"
 
 msgid "Refresh Rate"
-msgstr ""
+msgstr "Частота обновления"
 
 msgid "Refresh rate selection."
-msgstr ""
+msgstr "Выбор частоты обновления"
 
 msgid "Reload"
-msgstr ""
+msgstr "Обновить"
 
 msgid "Remove Bookmark"
-msgstr ""
+msgstr "Удалить Закладку"
 
 msgid "Remove Plugins"
 msgstr "Удаление плагинов "
 
 msgid "Remove a mark"
-msgstr ""
+msgstr "Удалить метку"
 
 msgid "Remove currently selected title"
-msgstr ""
+msgstr "Удалить выбранный заголовок"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Удаление завершено"
 
 msgid "Remove plugins"
 msgstr "Удаление плагинов "
 
 msgid "Remove the broken .NFI file?"
-msgstr ""
+msgstr "Удалить поврежденный .NFI файл?"
 
 msgid "Remove the incomplete .NFI file?"
-msgstr ""
+msgstr "Удалить неполный .NFI файл?"
 
 msgid "Remove timer"
-msgstr ""
+msgstr "Удалить таймер"
 
 msgid "Remove title"
-msgstr ""
+msgstr "Удалить описание"
 
 msgid "Removing"
-msgstr ""
+msgstr "Удаление"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
-msgstr ""
+msgstr "Ошибка удаления %s каталога. (Возможно он не пуст)"
 
 msgid "Rename"
-msgstr ""
+msgstr "Переименовать"
 
 msgid "Repeat"
 msgstr "Повторить"
@@ -2495,62 +2656,61 @@ msgid "Repeat Type"
 msgstr "Повторить тип"
 
 msgid "Repeating event currently recording... What do you want to do?"
-msgstr ""
+msgstr "Повторяющееся событие записывается...Что вы хотите сделать?"
 
 msgid "Repeats"
-msgstr ""
+msgstr "Повторы"
 
 msgid "Reset"
 msgstr "Сброс"
 
 msgid "Reset and renumerate title names"
-msgstr ""
+msgstr "Сбросить и перенумеровать заголовки"
 
 msgid "Resolution"
-msgstr ""
+msgstr "Разрешение"
 
 msgid "Restart"
 msgstr "Перезагрузить"
 
 msgid "Restart GUI"
-msgstr ""
+msgstr "Перезагрузить GUI"
 
 msgid "Restart GUI now?"
-msgstr ""
+msgstr "Перезагрузить GUI сейчас?"
 
 msgid "Restart network"
-msgstr ""
+msgstr "Перезапустить сеть"
 
 msgid "Restart test"
-msgstr ""
+msgstr "Перезапустить тест"
 
 msgid "Restart your network connection and interfaces.\n"
-msgstr ""
+msgstr "Перезагрузка сетевых подключений и интерфейсов.\n"
 
 msgid "Restore"
 msgstr "Восстановить"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Востановление резервной копии"
 
 msgid "Restore running"
-msgstr ""
+msgstr "Выполняется восстановление"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Выполняется восстановление..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Восстановить настройки"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
 "settings now."
 msgstr ""
-"Восстановление установок завершено. Пожалуйста, нажмите OK для активации "
-"востановленных установок."
+"Восстановление установок завершено. Пожалуйста, нажмите OK для активации."
 
 msgid "Resume from last position"
-msgstr ""
+msgstr "Возобновить с последней позиции"
 
 #. TRANSLATORS: The string "Resuming playback" flashes for a moment
 #. TRANSLATORS: at the start of a movie, when the user has selected
@@ -2560,43 +2720,43 @@ msgstr ""
 #. TRANSLATORS: (Some translators seem to have interpreted it as a
 #. TRANSLATORS: question or a choice, but it is a statement.)
 msgid "Resuming playback"
-msgstr ""
+msgstr "Возобновление воспроизведения"
 
 msgid "Return to file browser"
-msgstr ""
+msgstr "Вернуться в проводник"
 
 msgid "Return to movie list"
-msgstr ""
+msgstr "Вернуться к списку фильмов"
 
 msgid "Return to previous service"
-msgstr ""
+msgstr "Вернуться на предыдущий сервис"
 
 msgid "Rewind speeds"
-msgstr ""
+msgstr "Скорость перемотки назад"
 
 msgid "Right"
 msgstr "Правый"
 
 msgid "Rolloff"
-msgstr ""
+msgstr "Rolloff"
 
 msgid "Rotor turning speed"
-msgstr ""
+msgstr "Скорость вращения мотора"
 
 msgid "Running"
-msgstr ""
+msgstr "Запущено"
 
 msgid "Russian"
 msgstr "Русский"
 
 msgid "S-Video"
-msgstr ""
+msgstr "S-Video"
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SNR:"
-msgstr ""
+msgstr "SNR:"
 
 msgid "Sat"
 msgstr "Сб"
@@ -2608,7 +2768,7 @@ msgid "Satellite"
 msgstr "Спутник"
 
 msgid "Satellite Equipment Setup"
-msgstr ""
+msgstr "Настройки спутникового оборудования"
 
 msgid "Satellites"
 msgstr "Спутники"
@@ -2617,94 +2777,99 @@ msgid "Satfinder"
 msgstr "Поиск спутника"
 
 msgid "Sats"
-msgstr ""
+msgstr "Спутники"
 
 msgid "Saturday"
 msgstr "Суббота"
 
 msgid "Save"
-msgstr ""
+msgstr "Сохранить"
 
 msgid "Save Playlist"
-msgstr ""
+msgstr "Сохранить плейлист"
 
 msgid "Scaling Mode"
 msgstr "Режим вычисления"
 
 msgid "Scan "
-msgstr ""
+msgstr "Сканирование"
+
+msgid "Scan Files..."
+msgstr "Сканировать файлы..."
 
 msgid "Scan QAM128"
-msgstr ""
+msgstr "Сканировать QAM128"
 
 msgid "Scan QAM16"
-msgstr ""
+msgstr "Сканировать QAM16"
 
 msgid "Scan QAM256"
-msgstr ""
+msgstr "Сканировать QAM256"
 
 msgid "Scan QAM32"
-msgstr ""
+msgstr "Сканировать QAM32"
 
 msgid "Scan QAM64"
-msgstr ""
+msgstr "Сканировать QAM64"
 
 msgid "Scan SR6875"
-msgstr ""
+msgstr "Сканировать SR6875"
 
 msgid "Scan SR6900"
-msgstr ""
+msgstr "Сканировать SR6900"
 
 msgid "Scan Wireless Networks"
-msgstr ""
+msgstr "Сканировать беспроводные сети"
 
 msgid "Scan additional SR"
-msgstr ""
+msgstr "Сканировать дополн. SR"
 
 msgid "Scan band EU HYPER"
-msgstr ""
+msgstr "Сканировать диапазон EU HUPER"
 
 msgid "Scan band EU MID"
-msgstr ""
+msgstr "Сканировать диапазон EU MID"
 
 msgid "Scan band EU SUPER"
-msgstr ""
+msgstr "Сканировать диапазон EU SUPER"
 
 msgid "Scan band EU UHF IV"
-msgstr ""
+msgstr "Сканировать диапазон EU UHF IV"
 
 msgid "Scan band EU UHF V"
-msgstr ""
+msgstr "Сканировать диапазон EU UHF V"
 
 msgid "Scan band EU VHF I"
-msgstr ""
+msgstr "Сканировать диапазон EU VHF I"
 
 msgid "Scan band EU VHF III"
-msgstr ""
+msgstr "Сканировать диапазон EU VHF III"
 
 msgid "Scan band US HIGH"
-msgstr ""
+msgstr "Сканировать диапазон US HIGH"
 
 msgid "Scan band US HYPER"
-msgstr ""
+msgstr "Сканировать диапазон US HYPER"
 
 msgid "Scan band US LOW"
-msgstr ""
+msgstr "Сканировать диапазон US LOW"
 
 msgid "Scan band US MID"
-msgstr ""
+msgstr "Сканировать диапазон US MID"
 
 msgid "Scan band US SUPER"
-msgstr ""
+msgstr "Сканировать диапазон US SUPER"
 
 msgid ""
 "Scan your network for wireless Access Points and connect to them using your "
 "WLAN USB Stick\n"
 msgstr ""
+"Поиск и подключение беспроводных точек доступа в вашей сети используя "
+"беспроводный USB адаптер\n"
 
 msgid ""
 "Scans default lamedbs sorted by satellite with a connected dish positioner"
-msgstr ""
+msgstr "Сканировать lamedb по спутникам с подключенным мотоподвесом"
 
 msgid "Search east"
 msgstr "Поиск восток"
@@ -2713,22 +2878,25 @@ msgid "Search west"
 msgstr "Поиск запад"
 
 msgid "Secondary DNS"
-msgstr ""
+msgstr "Вторичный DNS"
 
 msgid "Seek"
 msgstr "Искать"
 
 msgid "Select"
-msgstr ""
+msgstr "Выбрать"
 
 msgid "Select HDD"
 msgstr "Выбрать HDD"
 
+msgid "Select IPKG source to edit..."
+msgstr "Выберите IPKG источник для редактирования..."
+
 msgid "Select Location"
-msgstr ""
+msgstr "Выбор расположения"
 
 msgid "Select Network Adapter"
-msgstr ""
+msgstr "Выбор сетевого адаптера"
 
 msgid "Select a movie"
 msgstr "Выбрать видеопрограмму"
@@ -2737,46 +2905,49 @@ msgid "Select audio mode"
 msgstr "Выбрать аудио режим"
 
 msgid "Select audio track"
-msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c Ð°Ñ\83диоÑ\82Ñ\80ек"
+msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c Ð·Ð²Ñ\83ковÑ\83Ñ\8e Ð´Ð¾Ñ\80ожкÑ\83"
 
 msgid "Select channel to record from"
 msgstr "Выбрать канал для записи"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Выбор файлов для резервной копии. Выбрано:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Выбор файлов/папок для сохранения"
 
 msgid "Select image"
-msgstr ""
+msgstr "Выбор имиджа"
 
 msgid "Select refresh rate"
-msgstr ""
+msgstr "Выберите частоту обновления"
 
 msgid "Select video input"
-msgstr ""
+msgstr "Выбор видео входа"
+
+msgid "Select video input with up/down buttons"
+msgstr "Выберите видео вход кнопками ВВЕРХ/ВНИЗ"
 
 msgid "Select video mode"
-msgstr ""
+msgstr "Выберите видеорежим"
 
 msgid "Selected source image"
-msgstr ""
+msgstr "Выбранный имидж"
 
 msgid "Send DiSEqC"
-msgstr ""
+msgstr "Отправить DiSEqC"
 
 msgid "Send DiSEqC only on satellite change"
-msgstr ""
+msgstr "Отправить DiSEqC только при смене спутника"
 
 msgid "Seperate titles with a main menu"
-msgstr ""
+msgstr "Отдельные главы в главном меню"
 
 msgid "Sequence repeat"
-msgstr "Последовательный повторения"
+msgstr "Последовательность повторения"
 
 msgid "Service"
-msgstr "СеÑ\80виÑ\81"
+msgstr "Ð\9e Ñ\81еÑ\80виÑ\81е"
 
 msgid "Service Scan"
 msgstr "Поиск сервисов"
@@ -2785,43 +2956,49 @@ msgid "Service Searching"
 msgstr "Поиск сервисов"
 
 msgid "Service has been added to the favourites."
-msgstr ""
+msgstr "Сервис был добавлен в избранное."
 
 msgid "Service has been added to the selected bouquet."
-msgstr ""
+msgstr "Сервис был добавлен в выбранный пакет"
 
 msgid ""
 "Service invalid!\n"
 "(Timeout reading PMT)"
 msgstr ""
+"Сервис неисправен!\n"
+"(Таймаут чтения PMT)"
 
 msgid ""
 "Service not found!\n"
 "(SID not found in PAT)"
 msgstr ""
+"Сервис не найден!\n"
+"(SID не найден в PAT)"
 
 msgid "Service scan"
-msgstr ""
+msgstr "Поиск сервисов"
 
 msgid ""
 "Service unavailable!\n"
 "Check tuner configuration!"
 msgstr ""
+"Сервис недоступен!\n"
+"Проверьте конфигурацию тюнера!"
 
 msgid "Serviceinfo"
-msgstr "Ð\98нÑ\84оÑ\80маÑ\86иÑ\8f Ð¾ Ñ\81еÑ\80виÑ\81е"
+msgstr "СеÑ\80виÑ\81"
 
 msgid "Services"
 msgstr "Сервисы"
 
 msgid "Set Voltage and 22KHz"
-msgstr ""
+msgstr "Установить напряжение и 22КГц"
 
 msgid "Set as default Interface"
-msgstr ""
+msgstr "Установить как интерфейс по умолчанию"
 
 msgid "Set interface as default Interface"
-msgstr ""
+msgstr "Установить интерфейс по умолчанию"
 
 msgid "Set limits"
 msgstr "Набор ограничений"
@@ -2833,22 +3010,22 @@ msgid "Setup"
 msgstr "Настройка"
 
 msgid "Setup Mode"
-msgstr ""
+msgstr "Режим настроек"
 
 msgid "Show Info"
-msgstr ""
+msgstr "Показать инфо"
 
 msgid "Show WLAN Status"
-msgstr ""
+msgstr "Показать состояние WLAN"
 
 msgid "Show blinking clock in display during recording"
-msgstr ""
+msgstr "Показать мигать часы на дисплее во время записи"
 
 msgid "Show infobar on channel change"
 msgstr "Показать инфопанель при смене каналов"
 
 msgid "Show infobar on event change"
-msgstr ""
+msgstr "Показывать инфопанель при смене информации"
 
 msgid "Show infobar on skip forward/backward"
 msgstr "Показать инфопанель при навигации"
@@ -2866,7 +3043,7 @@ msgid "Show the tv player..."
 msgstr "Включить режим TV..."
 
 msgid "Shows the state of your wireless LAN connection.\n"
-msgstr ""
+msgstr "Показывает состояние вашего беспроводного соединения.\n"
 
 msgid "Shutdown Dreambox after"
 msgstr "Выключить через :  "
@@ -2875,34 +3052,34 @@ msgid "Similar"
 msgstr "Подобный"
 
 msgid "Similar broadcasts:"
-msgstr "Ð\9fодобнÑ\8bе Ñ\80адиопередачи:"
+msgstr "Ð\90налогиÑ\87нÑ\8bе передачи:"
 
 msgid "Simple"
-msgstr ""
+msgstr "Простой"
 
 msgid "Simple titleset (compatibility for legacy players)"
-msgstr ""
+msgstr "Простой заголовок (совместимость с DVD плеерами)"
 
 msgid "Single"
-msgstr "Одиночный"
+msgstr "Один"
 
 msgid "Single EPG"
-msgstr "Одиночный EPG"
+msgstr "EPG"
 
 msgid "Single satellite"
-msgstr "Одиночный спутник"
+msgstr "Один спутник"
 
 msgid "Single transponder"
-msgstr "Одиночный транспондер"
+msgstr "Один транспондер"
 
 msgid "Singlestep (GOP)"
-msgstr ""
+msgstr "Один шаг (GOP)"
 
 msgid "Skin..."
-msgstr ""
+msgstr "Скин..."
 
 msgid "Sleep Timer"
-msgstr "Таймер дежурного режима"
+msgstr "Таймер сна"
 
 msgid "Sleep timer action:"
 msgstr "Действие таймера:"
@@ -2912,37 +3089,37 @@ msgstr "Интервал слайдшоу (сек.)"
 
 #, python-format
 msgid "Slot %d"
-msgstr ""
+msgstr "Слот %d"
 
 msgid "Slow"
-msgstr ""
+msgstr "Медленно"
 
 msgid "Slow Motion speeds"
-msgstr ""
+msgstr "Низкая скорость"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Менеджер ПО"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Менеджер ПО..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Восстановление ПО"
 
 msgid "Software update"
-msgstr ""
+msgstr "Обновление ПО"
 
 msgid "Some plugins are not available:\n"
-msgstr ""
+msgstr "Некоторые плагины недоступны:\n"
 
 msgid "Somewhere else"
 msgstr "где-нибудь еще"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Извините, Медиа Сканер не установлен!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Не найдены резервные копии!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -2957,20 +3134,24 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Извините, сюда нельзя сохранить резервную копию.\n"
+"Пожалуйста, выберите другое место"
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Извините, сюда нельзя сохранить резервную копию.\n"
+"/nПожалуйста, выберите другое место"
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
-msgstr ""
+msgstr "Сортировать A-Z"
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort Time"
-msgstr ""
+msgstr "По времени"
 
 msgid "Sound"
 msgstr "Звук"
@@ -2985,25 +3166,25 @@ msgid "Spanish"
 msgstr "Испанский"
 
 msgid "Standby"
-msgstr "Ð\92Ñ\8bклÑ\8eÑ\87ение"
+msgstr "Ð\96дÑ\83Ñ\89ий Ñ\80ежим"
 
 msgid "Standby / Restart"
 msgstr "Выключение"
 
 msgid "Start from the beginning"
-msgstr ""
+msgstr "Начать с самого начала"
 
 msgid "Start recording?"
 msgstr "Начать запись?"
 
 msgid "Start test"
-msgstr ""
+msgstr "Начать тест"
 
 msgid "StartTime"
 msgstr "Время пуска"
 
 msgid "Starting on"
-msgstr ""
+msgstr "Начиная с"
 
 msgid "Step east"
 msgstr "Шаг на восток"
@@ -3012,7 +3193,7 @@ msgid "Step west"
 msgstr "Шаг на запад"
 
 msgid "Stereo"
-msgstr ""
+msgstr "Стерео"
 
 msgid "Stop"
 msgstr "Стоп"
@@ -3021,22 +3202,22 @@ msgid "Stop Timeshift?"
 msgstr "Остановить сдвиг времени?"
 
 msgid "Stop current event and disable coming events"
-msgstr ""
+msgstr "Остановить текущее событие и отключить ближайшие события"
 
 msgid "Stop current event but not coming events"
-msgstr ""
+msgstr "Остановить текущее событие, но не отключать ближащие события"
 
 msgid "Stop playing this movie?"
 msgstr "Остановить воспроизведение?"
 
 msgid "Stop test"
-msgstr ""
+msgstr "Остановить тест"
 
 msgid "Stop testing plane after # failed transponders"
-msgstr ""
+msgstr "Остановить тестирование после # ошибки транспондера"
 
 msgid "Stop testing plane after # successful transponders"
-msgstr ""
+msgstr "Остановить тестирование после # исправного транспондера"
 
 msgid "Store position"
 msgstr "Сохранить положение"
@@ -3078,32 +3259,32 @@ msgid "Symbol Rate"
 msgstr "Символьная скорость"
 
 msgid "Symbolrate"
-msgstr ""
+msgstr "Символьная скорость"
 
 msgid "System"
 msgstr "Система"
 
 #. TRANSLATORS: Add here whatever should be shown in the "translator" about screen, up to 6 lines (use \n for newline)
 msgid "TRANSLATOR_INFO"
-msgstr ""
+msgstr "TRANSLATOR_INFO"
 
 msgid "TS file is too large for ISO9660 level 1!"
-msgstr ""
+msgstr "TS файл слишком большой для ISO9660 level 1!"
 
 msgid "TV System"
 msgstr "TV система"
 
 msgid "Table of content for collection"
-msgstr ""
+msgstr "Содержание коллекции"
 
 msgid "Tag 1"
-msgstr ""
+msgstr "Тэг 1"
 
 msgid "Tag 2"
-msgstr ""
+msgstr "Тэг 2"
 
 msgid "Tags"
-msgstr ""
+msgstr "Теги"
 
 msgid "Terrestrial"
 msgstr "Наземный"
@@ -3112,19 +3293,19 @@ msgid "Terrestrial provider"
 msgstr "Наземный провайдер"
 
 msgid "Test DiSEqC settings"
-msgstr ""
+msgstr "Тест настроек DiSEqC"
 
 msgid "Test Type"
-msgstr ""
+msgstr "Тип теста"
 
 msgid "Test mode"
 msgstr "Режим теста"
 
 msgid "Test the network configuration of your Dreambox.\n"
-msgstr ""
+msgstr "Тест сетевой конфигурации вашего Dreambox.\n"
 
 msgid "Test-Messagebox?"
-msgstr ""
+msgstr "Тест сообщения?"
 
 msgid ""
 "Thank you for using the wizard. Your box is now ready to use.\n"
@@ -3138,11 +3319,16 @@ msgid ""
 "create a Dreambox format data DVD (which will not play in stand-alone DVD "
 "players) instead?"
 msgstr ""
+"DVD стандарт не поддерживает H.264 (HDTV) видео потоков. Вы хотите создать "
+"Dreambox DVD  (который не будет проигрываться в стационарных DVD "
+"проигрывателях)?"
 
 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 стик теперь загрузочный. Вы хотите загрузить последний имидж с сервера и "
+"сохранить его на стик?"
 
 msgid "The backup failed. Please choose a different backup location."
 msgstr "Сохранение не выполнено. Выберите другое место ресположения. "
@@ -3155,38 +3341,56 @@ msgid ""
 "\n"
 "Do you want to write the USB flasher to this stick?"
 msgstr ""
+"Найдено устройство:\n"
+"\n"
+"%s\n"
+"\n"
+"Хотите установить USB flasher на это устройство?"
+
+msgid "The following files were found..."
+msgstr "Следующие файлы были найдены ..."
 
 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 ""
+"Видеовход уже настроен.\n"
+"Теперь Вы можете настроить экран с помошью тестовых изображений. Хотите "
+"сделать это сейчас?"
 
 msgid "The installation of the default services lists is finished."
-msgstr ""
+msgstr "Установка списков сервисов по умолчанию закончена."
 
 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 ""
+"Установка по умолчанию закончена. Теперь Вы можете продолжить настройку "
+"Dreambox, нажав на кнопку ОК на пульте ДУ."
 
 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 проверка неудачна, файл может быть поврежден! Вы уверены, что вы "
+"хотите записать этот образ во флэш-память? Вы делаете это на свой страх и "
+"риск!"
 
 msgid ""
 "The md5sum validation failed, the file may be downloaded incompletely or be "
 "corrupted!"
 msgstr ""
+"Md5sum проверка неудачна, файл может быть загружен не полностью или "
+"поврежден!"
 
 msgid "The package doesn't contain anything."
-msgstr ""
+msgstr "Этот пакет ничего не содержит."
 
 #, python-format
 msgid "The path %s already exists."
-msgstr ""
+msgstr "Этот путь %s уже существует."
 
 msgid "The pin code has been changed successfully."
 msgstr "PIN код удачно изменен."
@@ -3199,21 +3403,23 @@ msgstr "Введенный PIN код отличается."
 
 #, python-format
 msgid "The results have been written to %s."
-msgstr ""
+msgstr "Результаты были записаны в %s."
 
 msgid "The sleep timer has been activated."
-msgstr ""
+msgstr "Таймер сна был включен."
 
 msgid "The sleep timer has been disabled."
-msgstr ""
+msgstr "Таймер сна был выключен."
 
 msgid "The timer file (timers.xml) is corrupt and could not be loaded."
-msgstr ""
+msgstr "Файл таймеров (timers.xml) поврежден и не может быть загружен."
 
 msgid ""
 "The wireless LAN plugin is not installed!\n"
 "Please install it."
 msgstr ""
+"Плагин Witeless LAN не установлен!\n"
+"Пожалуйста, установите его."
 
 msgid ""
 "The wizard can backup your current settings. Do you want to do a backup now?"
@@ -3224,38 +3430,53 @@ msgid "The wizard is finished now."
 msgstr "Мастер закончил работу."
 
 msgid "There are no default services lists in your image."
-msgstr ""
+msgstr "В этом имидже нет сервисов по умолчанию."
 
 msgid "There are no default settings in your image."
-msgstr ""
+msgstr "В этом имидже нет настроек по умолчанию."
 
 msgid ""
 "There might not be enough Space on the selected Partition.\n"
 "Do you really want to continue?"
 msgstr ""
+"Возможно  недостаточно места на выбранном разделе. \n"
+"Вы действительно хотите продолжить?"
+
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Ошибка загрузки списка пактов. Пожалуйста, попробуйте еще раз."
 
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
-msgstr ""
+msgstr "Этот .NFI файл не содержит валидный %s имидж!"
 
 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 ""
+"Этот .NFI файл не имеет md5sum сигнатуры и это не гарантирует его работу. Вы "
+"действительно хотите записать этот образ во флэш-память?"
 
 msgid ""
 "This .NFI file has a valid md5 signature. Continue programming this image to "
 "flash memory?"
 msgstr ""
+"Этот .NFI файл имеет действительную md5 подпись. Продолжить запись образа во "
+"флэш-память?"
 
 msgid ""
 "This DVD RW medium is already formatted - reformatting will erase all "
 "content on the disc."
 msgstr ""
+"Этот DVD RW  уже отформатирован - переформатирование может удалить все "
+"содержимое диска."
+
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Этот Dreambox не может декодировать %s потоки!"
 
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
-msgstr ""
+msgstr "Этот Dreambox не может декодировать %s видео потоки!"
 
 msgid "This is step number 2."
 msgstr "Это шаг номер 2."
@@ -3270,6 +3491,12 @@ msgid ""
 "- if you configured your Nameservers manually please verify your entries in "
 "the \"Nameserver\" Configuration"
 msgstr ""
+"Этот тест проверяет конфигурацию DNS серверов.\n"
+"При появлении сообщения \"не присвоен\":\n"
+"- пожалуйста проверьте настройки DHCP, сетевого адаптера и состояние "
+"сетевого кабеля\n"
+"- Если Вы прописали вручную DNS сервера, пожалуйста проверьте конфигурацию "
+"\"DNS сервер\""
 
 msgid ""
 "This test checks whether a network cable is connected to your LAN-Adapter.\n"
@@ -3277,6 +3504,11 @@ msgid ""
 "- verify that a network cable is attached\n"
 "- verify that the cable is not broken"
 msgstr ""
+"Этот тест проверяет наличие подключения сетевого кабеля к сетевому "
+"адаптеру.\n"
+"При появлении сообщения \" нет соединения\":\n"
+"- проверьте, что сетевой кабель подключен\n"
+"- проверьте, что сетевой кабель не оборван"
 
 msgid ""
 "This test checks whether a valid IP Address is found for your LAN Adapter.\n"
@@ -3284,6 +3516,11 @@ msgid ""
 "- no valid IP Address was found\n"
 "- please check your DHCP, cabling and adapter setup"
 msgstr ""
+"Этот тест проверяет присвоен ли IP адрес сетевому адаптеру..\n"
+"При появлении сообщения \" не присвоен\":\n"
+"- IP адрес не был найден\n"
+"- пожалуйста проверьте настройки DHCP, сетевого адаптера и состояние "
+"сетевого кабеля"
 
 msgid ""
 "This test checks whether your LAN Adapter is set up for automatic IP Address "
@@ -3295,9 +3532,16 @@ msgid ""
 "If you get an \"enabeld\" message:\n"
 "-verify that you have a configured and working DHCP Server in your network."
 msgstr ""
+"Этот тест проверяет,включен ли DHCP в настройках сетевого адаптера, для "
+"присвоения автоматического IP.\n"
+"При появлении сообщения \" отключен\":\n"
+"- введите вручную IP адрес при настройке сетевого адаптера .\n"
+"- проверьте,что Вы ввели корректную информацию в меню настройка сети.\n"
+"При появлении сообщения \" подключен\":\n"
+"- это подтверждает, что сформирован рабочий DHCP сервер в Вашей сети."
 
 msgid "This test detects your configured LAN-Adapter."
-msgstr ""
+msgstr "Данный тест определит ваш сетевой-адаптер."
 
 msgid "Three"
 msgstr "Три"
@@ -3309,7 +3553,7 @@ msgid "Thu"
 msgstr "Чт"
 
 msgid "Thumbnails"
-msgstr ""
+msgstr "Эскизы"
 
 msgid "Thursday"
 msgstr "Четверг"
@@ -3327,7 +3571,7 @@ msgid "Timer Edit"
 msgstr "Редактирование таймера"
 
 msgid "Timer Editor"
-msgstr "РедакÑ\82оÑ\80 Ñ\82аймеÑ\80а"
+msgstr "РедакÑ\82оÑ\80 Ñ\82аймеÑ\80ов"
 
 msgid "Timer Type"
 msgstr "Тип таймера"
@@ -3342,6 +3586,8 @@ msgid ""
 "Timer overlap in timers.xml detected!\n"
 "Please recheck it!"
 msgstr ""
+"Обнаружено дублирование таймера в timers.xml!\n"
+"Проверьте его!"
 
 msgid "Timer sanity error"
 msgstr "Ошибка состояния таймера"
@@ -3359,7 +3605,7 @@ msgid "Timeshift not possible!"
 msgstr "Сдвиг времени не возможен!"
 
 msgid "Timeshift path..."
-msgstr ""
+msgstr "Таймшифт файл..."
 
 msgid "Timezone"
 msgstr "Часовой пояс"
@@ -3368,10 +3614,10 @@ msgid "Title"
 msgstr "Название"
 
 msgid "Title properties"
-msgstr ""
+msgstr "Свойства заголовка"
 
 msgid "Titleset mode"
-msgstr ""
+msgstr "Режим установки заголовка"
 
 msgid ""
 "To update your Dreambox firmware, please follow these steps:\n"
@@ -3381,6 +3627,12 @@ msgid ""
 "for 10 seconds.\n"
 "3) Wait for bootup and follow instructions of the wizard."
 msgstr ""
+"Для обновления микропрограммы Dreambox, выполните следующие действия:\n"
+"1) Выключите Dreambox кнопкой на задней панели и вставьте загрузочный USB "
+"стик.\n"
+"2) Включите ресивер и удерживайте кнопку ВНИЗ на передней панели около 10 "
+"секунд.\n"
+"3) Дождитесь загрузки и следуйте инструкциям мастера."
 
 msgid "Today"
 msgstr "Сегодня"
@@ -3395,16 +3647,16 @@ msgid "Toneburst A/B"
 msgstr "тоновый сигнал A/B"
 
 msgid "Track"
-msgstr ""
+msgstr "Дорожка"
 
 msgid "Translation"
-msgstr ""
+msgstr "Перевод"
 
 msgid "Translation:"
-msgstr ""
+msgstr "Перевод:"
 
 msgid "Transmission Mode"
-msgstr ""
+msgstr "Режим передачи"
 
 msgid "Transmission mode"
 msgstr "Режим передачи"
@@ -3413,16 +3665,23 @@ msgid "Transponder"
 msgstr "Транспондер"
 
 msgid "Transponder Type"
-msgstr ""
+msgstr "Тип транспондера"
 
 msgid "Tries left:"
-msgstr ""
+msgstr "Осталось попыток:"
 
 msgid "Try to find used Transponders in cable network.. please wait..."
 msgstr ""
+"Пытаемся найти транспондеры, используемые в кабельной сети .. Пожалуйста, "
+"подождите ..."
 
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr ""
+"Пытаемся найти транспондеры, используемые в кабельной сети .. Пожалуйста, "
+"подождите ..."
+
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Пытаемся загрузить новый список пакетов. Пожалуйста, подождите..."
 
 msgid "Tue"
 msgstr "Вт"
@@ -3434,13 +3693,13 @@ msgid "Tune"
 msgstr "Настройка"
 
 msgid "Tune failed!"
-msgstr ""
+msgstr "Tune failed!"
 
 msgid "Tuner"
 msgstr "Тюнер"
 
 msgid "Tuner "
-msgstr ""
+msgstr "Тюнер"
 
 msgid "Tuner Slot"
 msgstr "Tuner Slot"
@@ -3449,7 +3708,7 @@ msgid "Tuner configuration"
 msgstr "Настройка тюнера"
 
 msgid "Tuner status"
-msgstr ""
+msgstr "Состояние тюнера"
 
 msgid "Turkish"
 msgstr "Турецкий"
@@ -3458,7 +3717,7 @@ msgid "Two"
 msgstr "Два"
 
 msgid "Type"
-msgstr ""
+msgstr "Тип"
 
 msgid "Type of scan"
 msgstr "Тип сканирования"
@@ -3473,44 +3732,48 @@ msgid "USB Stick"
 msgstr "USB флешь"
 
 msgid "USB stick wizard"
-msgstr ""
+msgstr "Мастер USB"
 
 msgid "Ukrainian"
-msgstr ""
+msgstr "Украинский"
 
 msgid ""
 "Unable to complete filesystem check.\n"
 "Error: "
 msgstr ""
+"Невозможно проверить файловую систему.\n"
+"Ошибка:"
 
 msgid ""
 "Unable to initialize harddisk.\n"
 "Error: "
 msgstr ""
+"Невозможно отформатировать жесткий диск:\n"
+"Ошибка:"
 
 msgid "Uncommitted DiSEqC command"
-msgstr "Команда переключения DoSEqC"
+msgstr "Команда переключения DiSEqC"
 
 msgid "Unicable"
-msgstr ""
+msgstr "Unicable"
 
 msgid "Unicable LNB"
-msgstr ""
+msgstr "Unicable LNB"
 
 msgid "Unicable Martix"
-msgstr ""
+msgstr "Unicable Martix"
 
 msgid "Universal LNB"
 msgstr "универсальный-LNB"
 
 msgid "Unmount failed"
-msgstr ""
+msgstr "Ошибка отключения"
 
 msgid "Update"
-msgstr ""
+msgstr "Обновление"
 
 msgid "Updates your receiver's software"
-msgstr ""
+msgstr "Обновление программы вашего ресивера"
 
 msgid "Updating finished. Here is the result:"
 msgstr "Обновление завершено.Результат:"
@@ -3519,31 +3782,31 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Обновление... Пожалуйста ждите... Это может занять несколько минут... "
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Обновление завершено"
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Обновление завершено. Вы хотите перезагрузить Dreambox?"
 
 msgid "Upgrading"
-msgstr ""
+msgstr "Обновление"
 
 msgid "Upgrading Dreambox... Please wait"
-msgstr ""
+msgstr "Обновление Dreambox... Пожалуйста, подождите."
 
 msgid "Use"
-msgstr ""
+msgstr "Использовать"
 
 msgid "Use DHCP"
 msgstr "Использовать DHCP"
 
 msgid "Use Interface"
-msgstr ""
+msgstr "Использовать интерфейс"
 
 msgid "Use Power Measurement"
-msgstr ""
+msgstr "Использовать измерение мощности"
 
 msgid "Use a gateway"
-msgstr ""
+msgstr "Использовать шлюз"
 
 #.   TRANSLATORS: The effect of "Non-smooth winding" is that rather
 #.       than using ordinary "continuous" or "smooth" winding, a fast
@@ -3558,13 +3821,13 @@ msgstr ""
 #.       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 ""
+msgstr "Использовать прерывистую перемотку на скоростях выше"
 
 msgid "Use power measurement"
 msgstr "Используйте измерение мощности"
 
 msgid "Use the Networkwizard to configure your Network\n"
-msgstr ""
+msgstr "Использовать мастер для настройки сети\n"
 
 msgid ""
 "Use the left and right buttons to change an option.\n"
@@ -3583,13 +3846,13 @@ msgstr ""
 "нажмите OK."
 
 msgid "Use usals for this sat"
-msgstr "Используйте USALS для этого спутника "
+msgstr "Использовать USALS для этого спутника "
 
 msgid "Use wizard to set up basic features"
 msgstr "Пользуйтесь мастером для настройки основных параметров"
 
 msgid "Used service scan type"
-msgstr ""
+msgstr "Используемый тип сканирования"
 
 msgid "User defined"
 msgstr "Определены пользователем"
@@ -3598,25 +3861,25 @@ msgid "VCR scart"
 msgstr "Видеомагнитофон"
 
 msgid "VMGM (intro trailer)"
-msgstr ""
+msgstr "VMGM (трейлер)"
 
 msgid "Vertical"
-msgstr ""
+msgstr "Вартикальная"
 
 msgid "Video Fine-Tuning"
-msgstr ""
+msgstr "Настройка экрана"
 
 msgid "Video Fine-Tuning Wizard"
-msgstr ""
+msgstr "Мастер точной настройки видео"
 
 msgid "Video Output"
-msgstr ""
+msgstr "Видеовыход"
 
 msgid "Video Setup"
-msgstr ""
+msgstr "Настройка видео"
 
 msgid "Video Wizard"
-msgstr ""
+msgstr "Мастер видео"
 
 msgid ""
 "Video input selection\n"
@@ -3626,18 +3889,33 @@ msgid ""
 "\n"
 "The next input port will be automatically probed in 10 seconds."
 msgstr ""
+"Выбор видео входа\n"
+"\n"
+"Нажмите ОК если вы видите эту страницу на экране ТВ (или выберите другой "
+"вход).\n"
+"\n"
+"Следующий вход будет автоматически выбран через 10 сек."
 
 msgid "Video mode selection."
-msgstr ""
+msgstr "Выбор режима видео"
+
+msgid "View Movies..."
+msgstr "Смотреть фильмы..."
+
+msgid "View Photos..."
+msgstr "Смотреть фото..."
 
 msgid "View Rass interactive..."
-msgstr ""
+msgstr "Интерактивный просмотр RASS"
+
+msgid "View Video CD..."
+msgstr "Смотреть Video CD..."
 
 msgid "View teletext..."
 msgstr "Смотреть телетекст"
 
 msgid "Virtual KeyBoard"
-msgstr ""
+msgstr "Виртуальная клавиатура"
 
 msgid "Voltage mode"
 msgstr "Режим напряжения"
@@ -3649,28 +3927,32 @@ msgid "W"
 msgstr "W"
 
 msgid "WEP"
-msgstr ""
+msgstr "WEP"
 
 msgid "WPA"
-msgstr ""
+msgstr "WPA"
 
 msgid "WPA or WPA2"
-msgstr ""
+msgstr "WPA или WPA2"
 
 msgid "WPA2"
-msgstr ""
+msgstr "WPA2"
 
 msgid "WSS on 4:3"
 msgstr "WSS on 4:3"
 
 msgid "Waiting"
-msgstr ""
+msgstr "Ожидание"
 
 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 ""
+"Сейчас мы проверим, может ли ваш ТВ работать в этом разрешении на частоте 50 "
+"Гц. Если ваш экран станет черным, подождите 20 секунд, и он будет переключен "
+"на 60 Гц.\n"
+"Пожалуйста, нажмите кнопку \"ОК\", чтобы начать."
 
 msgid "Wed"
 msgstr "Ср"
@@ -3689,6 +3971,13 @@ msgid ""
 "\n"
 "Then seek to the end, press OK, select 'end cut'. That's it."
 msgstr ""
+"Добро пожаловать в редактор видео.\n"
+"\n"
+"Отметьте место с которого вы хотите начать редактирование. Нажмите OK, "
+"выберите 'начало редактирования'.\n"
+"\"\n"
+"\"После, отметьте точку окончания редактирования, нажмите OK, выберите "
+"'конец редактирования'. Вот и все;)"
 
 msgid ""
 "Welcome to the Image upgrade wizard. The wizard will assist you in upgrading "
@@ -3711,7 +4000,7 @@ msgstr ""
 "Нажмите OK на пульте управления для перехода к следующему шагу."
 
 msgid "Welcome..."
-msgstr ""
+msgstr "Добро пожаловать..."
 
 msgid "West"
 msgstr "Запад"
@@ -3727,30 +4016,35 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"При сбросе на заводские установки будут удалены все конфигурационные данные\n"
+"(включая пакеты, каналы, данные спутников...)\n"
+"После завершения сброса, ваш ресивер будет автоматически перезагружен!\n"
+"\n"
+"Действительно выполнить сброс на заводские установки?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Где вы хотите сохранить установки?"
 
 msgid "Where to save temporary timeshift recordings?"
-msgstr ""
+msgstr "Куда сохранить временные файлы отложенного просмотра?"
 
 msgid "Wireless"
-msgstr ""
+msgstr "Беспроводный"
 
 msgid "Wireless Network"
-msgstr ""
+msgstr "Беспроводная сеть"
 
 msgid "Write error while recording. Disk full?\n"
-msgstr ""
+msgstr "Ошибка во время записи. Диск переполнен?\n"
 
 msgid "Write failed!"
-msgstr ""
+msgstr "Запись неудачна!"
 
 msgid "Writing NFI image file to flash completed"
-msgstr ""
+msgstr "Запись NFI образа во влешь-память завершена"
 
 msgid "YPbPr"
-msgstr ""
+msgstr "YPbPr"
 
 msgid "Year"
 msgstr "Год"
@@ -3759,7 +4053,7 @@ msgid "Yes"
 msgstr "Да"
 
 msgid "Yes, and delete this movie"
-msgstr ""
+msgstr "Да, удалить эту запись"
 
 msgid "Yes, backup my settings!"
 msgstr "Да, сохранить мои установки!"
@@ -3780,7 +4074,7 @@ msgid "Yes, restore the settings now"
 msgstr "Да, восстановить установки сейчас"
 
 msgid "Yes, returning to movie list"
-msgstr ""
+msgstr "Да, вернуться к списку записей"
 
 msgid "Yes, view the tutorial"
 msgstr "Да, смотреть инструкцию "
@@ -3789,31 +4083,35 @@ msgid ""
 "You can choose some default settings now. Please select the settings you "
 "want to be installed."
 msgstr ""
+"Вы можете выбрать настройки по умолчанию. Пожалуйста, выберите настройки "
+"которые вы хотели бы установить."
 
 msgid "You can choose, what you want to install..."
-msgstr ""
+msgstr "Вы можете выбрать то, что хотите установить..."
 
 msgid "You cannot delete this!"
 msgstr "Вы не можете удалит это."
 
 msgid "You chose not to install any default services lists."
-msgstr ""
+msgstr "Вы не выбрали установку списка сервисов по умолчанию."
 
 msgid ""
 "You chose not to install any default settings. You can however install the "
 "default settings later in the settings menu."
 msgstr ""
+"Вы не выбрали установку настроек по умолчанию. В любом случае Вы можете "
+"установить их позже из меню настроек."
 
 msgid ""
 "You chose not to install anything. Please press OK finish the install wizard."
-msgstr ""
+msgstr "Вы ничего не выбрали. Пожалуйста нажмите ОК чтобы закончить установку."
 
 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 ""
-"Ð\9fÑ\80едположиÑ\82елÑ\8cно  Ñ\83 Ð\92аÑ\81 Ð½ÐµÑ\82 Ð¶ÐµÑ\81Ñ\82кого Ð´Ð¸Ñ\81ка Ð² Dreambox. Ð\9fоÑ\8dÑ\82омÑ\83 Ð²Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е "
-"вÑ\8bбÑ\80аÑ\82Ñ\8c Ñ\81оÑ\85Ñ\80анение Ð½Ð° HDD."
+"Ð\92озможно Ð½Ðµ Ñ\83Ñ\81Ñ\82ановлен Ð¶ÐµÑ\81Ñ\82кий Ð´Ð¸Ñ\81к. Ð\9fоÑ\8dÑ\82омÑ\83 Ð²Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð²Ñ\8bбÑ\80аÑ\82Ñ\8c Ñ\81оÑ\85Ñ\80анение "
+"на HDD."
 
 msgid ""
 "You have chosen to backup to a compact flash card. The card must be in the "
@@ -3844,20 +4142,26 @@ 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 ""
+"Вы выбрали создание нового загрузочного внешнего USB накопителя. USB "
+"накопитель будет отформатирован и все данные будут утеряны."
 
 msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Вы выбрали восстановление настроек. Enigma2 будет перезапущена сразу после "
+"восстановления. Нажмите ОК для восстановления."
 
 #, python-format
 msgid "You have to wait %s!"
-msgstr ""
+msgstr "Необходимо подождать %s!"
 
 msgid ""
 "You need a PC connected to your dreambox. If you need further instructions, "
@@ -3882,16 +4186,23 @@ msgstr ""
 "Вы хотите установить PIN сейчас?"
 
 msgid "Your Dreambox will restart after pressing OK on your remote control."
-msgstr ""
+msgstr "Ваш Dreambox будет перезагружен после нажатия кнопки OK на пульте."
 
 msgid "Your TV works with 50 Hz. Good!"
-msgstr ""
+msgstr "Ваш ТВ поддерживает 50 Гц. Отлично!"
 
 msgid ""
 "Your backup succeeded. We will now continue to explain the further upgrade "
 "process."
 msgstr "Резервная копия создана. Теперь мы продолжим процесс обновления. "
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Ваша коллекция превышает размер однослойного диска. Вам нужен чистый "
+"двухслойный DVD!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Ваш Dreambox выключается. Пожалуйста, ожидайте..."
 
@@ -3899,6 +4210,8 @@ msgid ""
 "Your dreambox isn't connected to the internet properly. Please check it and "
 "try again."
 msgstr ""
+"Ваш ресивер не подключен к интернету. Пожалуйста, проверьте и попробуйте "
+"снова."
 
 msgid ""
 "Your frontprocessor firmware must be upgraded.\n"
@@ -3908,7 +4221,7 @@ msgstr ""
 "Нажмите OK для начала обновления."
 
 msgid "Your network configuration has been activated."
-msgstr ""
+msgstr "Ваши сетевые настройки активированы."
 
 msgid ""
 "Your network configuration has been activated.\n"
@@ -3916,6 +4229,10 @@ msgid ""
 "\n"
 "Do you want to disable the second network interface?"
 msgstr ""
+"Ваши сетевые настройки активированы.\n"
+"В системе найден второй сетевой интерфейс.\n"
+"\n"
+"Вы желаете отключить второй интерфейс?"
 
 msgid "Zap back to service before positioner setup?"
 msgstr "Переключить на предыдущий сервис?"
@@ -3935,9 +4252,15 @@ msgstr "[редактирование избранного]"
 msgid "[move mode]"
 msgstr "[режим перемещения]"
 
-msgid "abort alternatives edit"
+msgid "a gui to assign services/providers to common interface modules"
 msgstr ""
 
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
+msgid "abort alternatives edit"
+msgstr "отменить редактирование alternatives"
+
 msgid "abort bouquet edit"
 msgstr "отменить редактирование пакета пользователя "
 
@@ -3948,16 +4271,22 @@ msgid "about to start"
 msgstr "about to start"
 
 msgid "activate current configuration"
+msgstr "активировать текущие настройки"
+
+msgid "add Provider"
 msgstr ""
 
-msgid "add a nameserver entry"
+msgid "add Service"
 msgstr ""
 
+msgid "add a nameserver entry"
+msgstr "Добавить DNS сервер"
+
 msgid "add alternatives"
-msgstr ""
+msgstr "добавить alternatives"
 
 msgid "add bookmark"
-msgstr ""
+msgstr "добавить закладку"
 
 msgid "add bouquet"
 msgstr "добавить пакет пользователя "
@@ -3969,7 +4298,7 @@ msgid "add file to playlist"
 msgstr "добавить файл к списку воспроизведения"
 
 msgid "add files to playlist"
-msgstr ""
+msgstr "добавить файлы в плейлист"
 
 msgid "add marker"
 msgstr "добавить маркер"
@@ -3993,13 +4322,13 @@ msgid "add service to favourites"
 msgstr "добавить сервис к избранному"
 
 msgid "add to parental protection"
-msgstr ""
+msgstr "добавить в родительский контроль"
 
 msgid "advanced"
 msgstr "Расширенный"
 
 msgid "alphabetic sort"
-msgstr ""
+msgstr "сортировать по алфавиту"
 
 msgid ""
 "are you sure you want to restore\n"
@@ -4008,104 +4337,113 @@ msgstr ""
 "Вы действительно хотите восстановить\n"
 "следующий б:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
-msgstr ""
+msgstr "Звуковая дорожка (%s) формат"
 
 #, python-format
 msgid "audio track (%s) language"
-msgstr ""
+msgstr "звуковая дорожка (%s) язык"
 
 msgid "audio tracks"
-msgstr ""
+msgstr "звуковая дорожки"
 
 msgid "auto"
-msgstr ""
+msgstr "авто"
 
 msgid "back"
 msgstr "назад"
 
 msgid "background image"
-msgstr ""
+msgstr "фоновое изображение"
 
 msgid "backgroundcolor"
-msgstr ""
+msgstr "цвет фона"
 
 msgid "better"
-msgstr ""
+msgstr "лучше"
 
 msgid "black"
-msgstr ""
+msgstr "черный"
 
 msgid "blacklist"
-msgstr ""
+msgstr "черный список"
 
 msgid "blue"
-msgstr ""
+msgstr "синий"
 
 #, python-format
 msgid "burn audio track (%s)"
-msgstr ""
+msgstr "прожечь аудио дорожку (%s)"
 
 msgid "change recording (duration)"
 msgstr "сменить запись (длительность)"
 
 msgid "change recording (endtime)"
-msgstr ""
+msgstr "изменить запись (время окончания)"
 
 msgid "chapters"
-msgstr ""
+msgstr "разделы"
 
 msgid "choose destination directory"
-msgstr ""
+msgstr "выберите каталог назначения"
 
 msgid "circular left"
-msgstr "кÑ\80Ñ\83говой Ð»ÐµÐ²Ñ\8bй"
+msgstr "кÑ\80Ñ\83говаÑ\8f Ð»ÐµÐ²Ð°Ñ\8f"
 
 msgid "circular right"
-msgstr "кÑ\80Ñ\83говой Ð¿Ñ\80авÑ\8bй"
+msgstr "кÑ\80Ñ\83говаÑ\8f Ð¿Ñ\80аваÑ\8f"
 
 msgid "clear playlist"
 msgstr "очистить список воспроизведения"
 
 msgid "complex"
-msgstr ""
+msgstr "комплекс"
 
 msgid "config menu"
 msgstr "меню конфигурации"
 
 msgid "confirmed"
-msgstr ""
+msgstr "присвоен"
 
 msgid "connected"
-msgstr ""
+msgstr "подключено"
 
 msgid "continue"
 msgstr "Продолжить"
 
 msgid "copy to bouquets"
-msgstr ""
+msgstr "копировать в пакет"
 
 msgid "create directory"
-msgstr ""
+msgstr "создать каталог"
 
 msgid "daily"
 msgstr "ежедневно"
 
 msgid "day"
-msgstr ""
+msgstr "день"
+
+msgid "delete"
+msgstr "Удалить"
 
 msgid "delete cut"
-msgstr ""
+msgstr "удалить вырезанное"
 
 msgid "delete file"
-msgstr ""
+msgstr "удалить файл"
 
 msgid "delete playlist entry"
-msgstr ""
+msgstr "удалить запись из плейлиста"
 
 msgid "delete saved playlist"
-msgstr ""
+msgstr "удалить сохраненный плейлист"
 
 msgid "delete..."
 msgstr "удалить..."
@@ -4117,13 +4455,13 @@ msgid "disable move mode"
 msgstr "выключить режим перемещения"
 
 msgid "disabled"
-msgstr ""
+msgstr "отключено"
 
 msgid "disconnected"
-msgstr ""
+msgstr "отключено"
 
 msgid "do not change"
-msgstr ""
+msgstr "не изменять"
 
 msgid "do nothing"
 msgstr "не делать ничего"
@@ -4135,10 +4473,10 @@ msgid "done!"
 msgstr "выполнено!"
 
 msgid "edit alternatives"
-msgstr ""
+msgstr "изменить alternatives"
 
 msgid "empty"
-msgstr ""
+msgstr "пустой"
 
 msgid "enable"
 msgstr "включить"
@@ -4153,70 +4491,70 @@ msgid "enable move mode"
 msgstr "включить режим перемещения"
 
 msgid "enabled"
-msgstr ""
+msgstr "включено"
 
 msgid "end alternatives edit"
-msgstr ""
+msgstr "закончить редактирование alternatives"
 
 msgid "end bouquet edit"
 msgstr "конец редактирования пакета"
 
 msgid "end cut here"
-msgstr ""
+msgstr "конец редактирования"
 
 msgid "end favourites edit"
 msgstr "конец редактирования избранного"
 
 msgid "enigma2 and network"
-msgstr ""
+msgstr "enigma2 и сеть"
 
 msgid "equal to"
-msgstr ""
+msgstr "также как"
 
 msgid "exceeds dual layer medium!"
-msgstr ""
+msgstr "превышает двухслойный носитель"
 
 msgid "exit DVD player or return to file browser"
-msgstr ""
+msgstr "Закрыть DVD плеер и вернуться в проводник"
 
 msgid "exit mediaplayer"
-msgstr ""
+msgstr "закрыть медиаплеер"
 
 msgid "exit movielist"
-msgstr ""
+msgstr "закрыть список фильмов"
 
 msgid "exit nameserver configuration"
-msgstr ""
+msgstr "закрыть конфигуратор DNS"
 
 msgid "exit network adapter configuration"
-msgstr ""
+msgstr "закрыть конфигуратор сети"
 
 msgid "exit network adapter setup menu"
-msgstr ""
+msgstr "закрыть настройки сетевого адаптера"
 
 msgid "exit network interface list"
-msgstr ""
+msgstr "закрыть список сетевых интерфейсов"
 
 msgid "exit networkadapter setup menu"
-msgstr ""
+msgstr "закрыть настройки сетевого адаптера"
 
 msgid "failed"
-msgstr ""
+msgstr "ошибка"
 
 msgid "fileformats (BMP, PNG, JPG, GIF)"
-msgstr ""
+msgstr "формат файла (BMP, PNG, JPG, GIF)"
 
 msgid "filename"
-msgstr ""
+msgstr "имя файла"
 
 msgid "fine-tune your display"
-msgstr ""
+msgstr "точная настройка дисплея"
 
 msgid "forward to the next chapter"
-msgstr ""
+msgstr "вперед к следующему разделу"
 
 msgid "free"
-msgstr ""
+msgstr "свободно"
 
 msgid "free diskspace"
 msgstr "свободное место на диске"
@@ -4225,10 +4563,10 @@ msgid "go to deep standby"
 msgstr "полностью выключить"
 
 msgid "go to standby"
-msgstr ""
+msgstr "перейти в ждущий режим"
 
 msgid "green"
-msgstr ""
+msgstr "зеленый"
 
 msgid "hear radio..."
 msgstr "Слушать радио"
@@ -4237,55 +4575,60 @@ msgid "help..."
 msgstr "помощь..."
 
 msgid "hidden network"
-msgstr ""
+msgstr "скрытая сеть"
 
 msgid "hide extended description"
-msgstr ""
+msgstr "скрыть расширенное описание"
 
 msgid "hide player"
 msgstr "скрыть проигрыватель"
 
 msgid "horizontal"
-msgstr "горизонтальный"
+msgstr "горизонтальная"
 
 msgid "hour"
-msgstr ""
+msgstr "час"
 
 msgid "hours"
-msgstr ""
+msgstr "часов"
 
 msgid "immediate shutdown"
-msgstr ""
+msgstr "немедленное выключение"
 
 #, python-format
 msgid ""
 "incoming call!\n"
 "%s calls on %s!"
 msgstr ""
+"входящий звонок!\n"
+"%sзвонок на %s!"
 
 msgid "init module"
 msgstr "init модуль"
 
-msgid "insert mark here"
+msgid "init modules"
 msgstr ""
 
+msgid "insert mark here"
+msgstr "вставить метку"
+
 msgid "jump back to the previous title"
-msgstr ""
+msgstr "перейти к предыдущей главе"
 
 msgid "jump forward to the next title"
-msgstr ""
+msgstr "перейти к следующей главе"
 
 msgid "jump to listbegin"
-msgstr ""
+msgstr "перейти в начало списка"
 
 msgid "jump to listend"
-msgstr ""
+msgstr "перейти в конец списка"
 
 msgid "jump to next marked position"
-msgstr ""
+msgstr "перейти к следующей метке"
 
 msgid "jump to previous marked position"
-msgstr ""
+msgstr "перейти к предыдущей метке"
 
 msgid "leave movie player..."
 msgstr "покинуть проигрыватель..."
@@ -4294,73 +4637,73 @@ msgid "left"
 msgstr "левый"
 
 msgid "length"
-msgstr ""
+msgstr "длина"
 
 msgid "list style compact"
-msgstr ""
+msgstr "компактный список"
 
 msgid "list style compact with description"
-msgstr ""
+msgstr "компактный  список описанием"
 
 msgid "list style default"
-msgstr ""
+msgstr "список по умолчанию"
 
 msgid "list style single line"
-msgstr ""
+msgstr "список в одну строку"
 
 msgid "load playlist"
-msgstr ""
+msgstr "загрузить плейлист"
 
 msgid "locked"
-msgstr ""
+msgstr "захвачено"
 
 msgid "loopthrough to"
-msgstr ""
+msgstr "петля к"
 
 msgid "manual"
 msgstr "ручной"
 
 msgid "menu"
-msgstr ""
+msgstr "меню"
 
 msgid "menulist"
-msgstr ""
+msgstr "список меню"
 
 msgid "mins"
 msgstr "mins"
 
 msgid "minute"
-msgstr ""
+msgstr "минута"
 
 msgid "minutes"
 msgstr "минут"
 
 msgid "month"
-msgstr ""
+msgstr "месяц"
 
 msgid "move PiP to main picture"
-msgstr ""
+msgstr "переместить PiP на основной экран"
 
 msgid "move down to last entry"
-msgstr ""
+msgstr "переместить вниз к последней записи"
 
 msgid "move down to next entry"
-msgstr ""
+msgstr "переместить вниз к следующей записи"
 
 msgid "move up to first entry"
-msgstr ""
+msgstr "переместить вверх к первой записи"
 
 msgid "move up to previous entry"
-msgstr ""
+msgstr "переместить вверх к предыдущей записи"
 
 msgid "movie list"
-msgstr ""
+msgstr "список фильмов"
 
 msgid "multinorm"
-msgstr ""
+msgstr "мультинорм"
 
 msgid "never"
-msgstr ""
+msgstr "никогда"
 
 msgid "next channel"
 msgstr "Следующий канал"
@@ -4371,35 +4714,44 @@ msgstr "Следующий канал в истории"
 msgid "no"
 msgstr "нет"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "не найден HDD"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "не найден модуль"
 
 msgid "no standby"
-msgstr ""
+msgstr "не переходить в ждущий режим"
 
 msgid "no timeout"
-msgstr ""
+msgstr "нет задержки"
 
 msgid "none"
 msgstr "никакой"
 
 msgid "not locked"
-msgstr ""
+msgstr "не захвачен"
 
 msgid "not used"
-msgstr ""
+msgstr "не использовано"
 
 msgid "nothing connected"
-msgstr ""
+msgstr "ничего не подключено"
 
 msgid "of a DUAL layer medium used."
-msgstr ""
+msgstr "используемого двухслойного носителя."
 
 msgid "of a SINGLE layer medium used."
-msgstr ""
+msgstr "используемого однослойного носителя."
 
 msgid "off"
 msgstr "выкл."
@@ -4408,13 +4760,13 @@ msgid "on"
 msgstr "вкл."
 
 msgid "on READ ONLY medium."
-msgstr ""
+msgstr "на диск только для чтения."
 
 msgid "once"
 msgstr "один раз"
 
 msgid "open nameserver configuration"
-msgstr ""
+msgstr "открыть конфигуратор DNS"
 
 msgid "open servicelist"
 msgstr "Открыть список сервисов"
@@ -4426,7 +4778,7 @@ msgid "open servicelist(up)"
 msgstr "Открыть список сервисов(вверх)"
 
 msgid "open virtual keyboard input help"
-msgstr ""
+msgstr "показать помошь к вирт. клавиатуре"
 
 msgid "pass"
 msgstr "передать"
@@ -4435,13 +4787,13 @@ msgid "pause"
 msgstr "Пауза"
 
 msgid "play entry"
-msgstr ""
+msgstr "воспроизвести запись"
 
 msgid "play from next mark or playlist entry"
-msgstr ""
+msgstr "воспроизвести начиная со следующей метки или записи в плейлисте"
 
 msgid "play from previous mark or playlist entry"
-msgstr ""
+msgstr "воспроизвести начиная с предыдущей метки или записи в плейлисте"
 
 msgid "please press OK when ready"
 msgstr "пожалуйста, нажмите OK когда будете готовы"
@@ -4462,64 +4814,64 @@ msgid "recording..."
 msgstr "запись..."
 
 msgid "red"
-msgstr ""
+msgstr "красный"
 
 msgid "remove a nameserver entry"
-msgstr ""
+msgstr "удалить данные DNS"
 
 msgid "remove after this position"
-msgstr ""
+msgstr "удалить после этой позиции"
 
 msgid "remove all alternatives"
-msgstr ""
+msgstr "удалить все альтернативы"
 
 msgid "remove all new found flags"
 msgstr "удалить все новые найденные флаги"
 
 msgid "remove before this position"
-msgstr ""
+msgstr "удалить перед этой позицией"
 
 msgid "remove bookmark"
-msgstr ""
+msgstr "удалить закладку"
 
 msgid "remove directory"
-msgstr ""
+msgstr "удалить каталог"
 
 msgid "remove entry"
 msgstr "удалить выбранное"
 
 msgid "remove from parental protection"
-msgstr ""
+msgstr "удалить из родительского контроля"
 
 msgid "remove new found flag"
 msgstr "удалить флаг новый найденный "
 
 msgid "remove selected satellite"
-msgstr ""
+msgstr "удалить выбранный спутник"
 
 msgid "remove this mark"
-msgstr ""
+msgstr "удалить метку"
 
 msgid "repeat playlist"
-msgstr ""
+msgstr "повторить плейлист"
 
 msgid "repeated"
 msgstr "повторный"
 
 msgid "rewind to the previous chapter"
-msgstr ""
+msgstr "назад на предыдущую главу"
 
 msgid "right"
 msgstr "правый"
 
 msgid "save last directory on exit"
-msgstr ""
+msgstr "сохранить последний каталог при выходе"
 
 msgid "save playlist"
-msgstr ""
+msgstr "сохранить плейлист"
 
 msgid "save playlist on exit"
-msgstr ""
+msgstr "сохранить плейлист при выходе"
 
 msgid "scan done!"
 msgstr "поиск завершен."
@@ -4532,163 +4884,166 @@ msgid "scan state"
 msgstr "состояние поиска"
 
 msgid "second"
-msgstr ""
+msgstr "секунда"
 
 msgid "second cable of motorized LNB"
-msgstr ""
+msgstr "второй кабель мотоподвеса"
 
 msgid "seconds"
-msgstr ""
+msgstr "секунд"
 
 msgid "select"
-msgstr ""
+msgstr "выбрать"
 
 msgid "select .NFI flash file"
+msgstr "выбрать .NFI имидж"
+
+msgid "select CAId"
 msgstr ""
 
 msgid "select image from server"
-msgstr ""
+msgstr "выбрать имидж с сервера"
 
 msgid "select interface"
-msgstr ""
+msgstr "выбрать интерфейс"
 
 msgid "select menu entry"
-msgstr ""
+msgstr "выбрать из меню"
 
 msgid "select movie"
-msgstr ""
+msgstr "выбрать фильм"
 
 msgid "select the movie path"
-msgstr ""
+msgstr "выбрать путь к фильму"
 
 msgid "service pin"
-msgstr ""
+msgstr "pin сервиса"
 
 msgid "setup pin"
-msgstr ""
+msgstr "pin настроек"
 
 msgid "show DVD main menu"
-msgstr ""
+msgstr "показать главное меню DVD"
 
 msgid "show EPG..."
 msgstr "Показать EPG..."
 
 msgid "show Infoline"
-msgstr ""
+msgstr "показать инфолинию"
 
 msgid "show all"
-msgstr ""
+msgstr "показать все"
 
 msgid "show alternatives"
-msgstr ""
+msgstr "показать альтернативы"
 
 msgid "show event details"
 msgstr "оказать детали событий"
 
 msgid "show extended description"
-msgstr ""
+msgstr "показать расширенное описание"
 
 msgid "show first selected tag"
-msgstr ""
+msgstr "показать первую выбранную метку"
 
 msgid "show second selected tag"
-msgstr ""
+msgstr "показать вторую выбранную метку"
 
 msgid "show shutdown menu"
-msgstr ""
+msgstr "показать меню выключения"
 
 msgid "show single service EPG..."
-msgstr ""
+msgstr "показать телегид"
 
 msgid "show tag menu"
-msgstr ""
+msgstr "показать метки меню"
 
 msgid "show transponder info"
-msgstr ""
+msgstr "показать инфо транспондера"
 
 msgid "shuffle playlist"
-msgstr ""
+msgstr "перемешать плейлист"
 
 msgid "shutdown"
-msgstr ""
+msgstr "Выключить"
 
 msgid "simple"
-msgstr "Ð\9fростой"
+msgstr "простой"
 
 msgid "skip backward"
 msgstr "Перемотка назад"
 
 msgid "skip backward (enter time)"
-msgstr ""
+msgstr "перейти назад (введите время)"
 
 msgid "skip forward"
 msgstr "Перемотка вперед"
 
 msgid "skip forward (enter time)"
-msgstr ""
+msgstr "перейти вперед (введите время)"
 
 msgid "slide picture in loop"
-msgstr ""
+msgstr "циклический показ слайдов"
 
 msgid "sort by date"
-msgstr ""
+msgstr "сортировать по дате"
 
 msgid "standard"
-msgstr ""
+msgstr "стандарт"
 
 msgid "standby"
-msgstr ""
+msgstr "ждущий режим"
 
 msgid "start cut here"
-msgstr ""
+msgstr "начало редактирования"
 
 msgid "start directory"
-msgstr ""
+msgstr "начальный каталог"
 
 msgid "start timeshift"
-msgstr "Начать сдвиг времени"
+msgstr "таймшифт"
 
 msgid "stereo"
-msgstr ""
+msgstr "стерео"
 
 msgid "stop PiP"
-msgstr ""
+msgstr "отключить PIP"
 
 msgid "stop entry"
-msgstr ""
+msgstr "остановить вход"
 
 msgid "stop recording"
-msgstr "Ð\9eстановить запись"
+msgstr "остановить запись"
 
 msgid "stop timeshift"
-msgstr "Ð\9eÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\81двиг Ð²Ñ\80емени"
+msgstr "Ð\9eÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\82аймÑ\88иÑ\84Ñ\82"
 
 msgid "swap PiP and main picture"
-msgstr ""
+msgstr "поменять PiP и основную картинку"
 
 msgid "switch to bookmarks"
-msgstr ""
+msgstr "перейти на закладки"
 
 msgid "switch to filelist"
 msgstr "переключить на список файлов"
 
 msgid "switch to playlist"
-msgstr "переключить на список восизведения"
+msgstr "переключить на плейлист"
 
 msgid "switch to the next angle"
-msgstr ""
+msgstr "перейти в следующей угол"
 
 msgid "switch to the next audio track"
-msgstr ""
+msgstr "перейти к следующей звуковой дорожке"
 
 msgid "switch to the next subtitle language"
-msgstr ""
+msgstr "переключиться на следующий язык субтитров"
 
 msgid "template file"
-msgstr ""
+msgstr "Шаблон файла"
 
 msgid "textcolor"
-msgstr ""
+msgstr "цвет текста"
 
 msgid "this recording"
 msgstr "это записано"
@@ -4697,25 +5052,25 @@ msgid "this service is protected by a parental control pin"
 msgstr "этот сервис защищен PIN-кодом родительского контроля"
 
 msgid "toggle a cut mark at the current position"
-msgstr ""
+msgstr "расположить метку редактирования в этой позициим"
 
 msgid "toggle time, chapter, audio, subtitle info"
-msgstr ""
+msgstr "время переключения, разделы, аудио, информация субтитров"
 
 msgid "unconfirmed"
-msgstr ""
+msgstr "не присвоен"
 
 msgid "unknown service"
 msgstr "неизвестный сервис"
 
 msgid "until restart"
-msgstr ""
+msgstr "во время перезагрузки"
 
 msgid "user defined"
 msgstr "определен пользователем"
 
 msgid "vertical"
-msgstr "вертикальный"
+msgstr "вертикальная"
 
 msgid "view extensions..."
 msgstr "Смотреть дополнения"
@@ -4724,10 +5079,10 @@ msgid "view recordings..."
 msgstr "Смотреть запись"
 
 msgid "wait for ci..."
-msgstr ""
+msgstr "ожидание ci..."
 
 msgid "wait for mmi..."
-msgstr ""
+msgstr "ожидание mmi..."
 
 msgid "waiting"
 msgstr "ожидание"
@@ -4736,13 +5091,13 @@ msgid "weekly"
 msgstr "Еженедельно"
 
 msgid "whitelist"
-msgstr ""
+msgstr "белый список"
 
 msgid "working"
-msgstr ""
+msgstr "работающий"
 
 msgid "yellow"
-msgstr ""
+msgstr "желтый"
 
 msgid "yes"
 msgstr "да"
@@ -4754,19 +5109,21 @@ msgid ""
 "your dreambox might be unusable now. Please consult the manual for further "
 "assistance before rebooting your dreambox."
 msgstr ""
+"Сейчас ваш ресивер может быть непригодным для использования. Обратитесь к "
+"руководству для получения дополнительной помощи до его перезагрузки."
 
 msgid "zap"
-msgstr ""
+msgstr "переключить"
 
 msgid "zapped"
-msgstr ""
+msgstr "переключено"
 
 #~ msgid ""
 #~ "\n"
-#~ "Enigma2 will restart after the restore"
+#~ "System will restart after the restore!"
 #~ msgstr ""
 #~ "\n"
-#~ "Enigma2 будет запущена после восстановления."
+#~ "Система будет перезагружена после восстановления!"
 
 #~ msgid "\"?"
 #~ msgstr "\"?"
@@ -4800,6 +5157,9 @@ msgstr ""
 #~ msgid "Movie Menu"
 #~ msgstr "Меню видеопрограмм"
 
+#~ msgid "Output"
+#~ msgstr "Действие"
+
 #~ msgid "Really delete this timer?"
 #~ msgstr "Действительно удалить данный таймер?"
 
@@ -4830,9 +5190,6 @@ msgstr ""
 #~ msgid "You selected a playlist"
 #~ msgstr "Вы выбрали список воспроизведения"
 
-#~ msgid "delete"
-#~ msgstr "Удалить"
-
 #~ msgid "full /etc directory"
 #~ msgstr "всю папку /etc"
 
index 979fbacc6daf7724951933d1a5098e97a318fdb1..fc20dc431b0c60847a8acc5063f15454a66ff51c 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,8 +7,8 @@ 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-06 07:42+0100\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-03 08:47+0100\n"
 "Last-Translator: WeeGull <weegull@hotmail.com>\n"
 "Language-Team: WeeGull <weegull@hotmail.com>\n"
 "MIME-Version: 1.0\n"
@@ -23,62 +23,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Avancerade val och inställningar."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"Tryck OK och vänligen vänta!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Backup av din Dreamboxs inställningar."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Ändra uppgraderingskällas adress."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 kommer startas om efter återställningen"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Online uppdatering av din Dreamboxs mjukvara."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Tryck OK på fjärrkontrollen för att forsätta."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Återskapa din Dreamboxs inställningar."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Återskapa din reambox med en ny firmware."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Återskapa med datum på backup."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Sök efter lokala paket och installera dem."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Välj din backupenhet.\n"
+"Nuvarande enhet: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Visa, installera och ta bort tillgängliga eller installerade paket."
 
 msgid " "
 msgstr " "
@@ -422,13 +454,13 @@ msgid "Advanced"
 msgstr "Avancerat"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Avancerade Inställningar"
 
 msgid "Advanced Video Setup"
 msgstr "Avancerad videoinställning"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Avancerad återskapning"
 
 msgid "After event"
 msgstr "Efter program"
@@ -461,9 +493,6 @@ msgstr "Alternativ tunerprioritering"
 msgid "An empty filename is illegal."
 msgstr "Ett tomt filnamn är inte tillåtet."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Ett okänt fel uppstod!"
 
@@ -488,11 +517,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Är du säker att du vill återskapa\n"
+"följande backup:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Är du säker på att du vill återskapa Enigma2 från backup?\n"
+"Enigma2 kommer starta om efter återskapningen"
 
 msgid "Artist"
 msgstr "Artist"
@@ -564,22 +597,22 @@ msgid "Backup Mode"
 msgstr "Backupläge"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Backup klar."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Backup misslyckades."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Backup klar. Vänligen tryck OK för resultat."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Backup pågår"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Backup pågår..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Backup av systeminställningar"
 
 msgid "Band"
 msgstr "Band"
@@ -716,10 +749,10 @@ msgid "Choose Tuner"
 msgstr "Välj tuner"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Välj backupfil"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Välj backupdestination"
 
 msgid "Choose bouquet"
 msgstr "Välj favoritlista"
@@ -731,7 +764,7 @@ msgid "Choose target folder"
 msgstr "Välj målkatalog"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Välj uppgraderingskälla"
 
 msgid "Choose your Skin"
 msgstr "Välj utseende"
@@ -787,6 +820,9 @@ msgstr "Committed DiSEqC kommando"
 msgid "Common Interface"
 msgstr "Common Interface"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Compact Flash"
 
@@ -799,6 +835,9 @@ msgstr "Komplett"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Komplex (tillåter mixning av ljudspår och aspekt)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Konfigurationsläge"
 
@@ -929,7 +968,7 @@ msgid "Default services lists"
 msgstr "Grundservicelista"
 
 msgid "Default settings"
-msgstr "Grundinstallningar"
+msgstr "Grundinställningar"
 
 msgid "Delay"
 msgstr "Fördröjning"
@@ -955,7 +994,7 @@ msgid "Description"
 msgstr "Beskrivning"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Avmarkera"
 
 msgid "Destination directory"
 msgstr "Målbibliotek"
@@ -1093,7 +1132,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Vill du installera grundsatellitlista?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Vill du installera paketet:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "Vill du spela upp DVD i spelaren?"
@@ -1102,10 +1141,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "Vill du förhandsvisa denna DVD innan bränning?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Vill du starta om din Dreambox?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Vill du avinstallera paketet:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Vill du återställa dina inställningar?"
@@ -1114,7 +1153,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Vill du återuppta uppspelningen?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Vill du uppdatera din Dreambox?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1124,7 +1163,7 @@ msgstr ""
 "Tryck OK och vänligen vänta!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Vill du uppgradera paketet:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Vill du se en guide?"
@@ -1143,6 +1182,7 @@ msgstr "Klar - Installerat eller uppgraderat %d paket med %d fel"
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
 msgstr ""
+"Klar - installerat, uppgraderat eller avinstallerat %d paket med %d fel"
 
 msgid "Download"
 msgstr "Nedladdning"
@@ -1193,6 +1233,9 @@ msgstr "Ändra"
 msgid "Edit DNS"
 msgstr "Ändra DNS"
 
+msgid "Edit IPKG source URL..."
+msgstr "Edit IPKG source URL..."
+
 msgid "Edit Title"
 msgstr "Ändra titel"
 
@@ -1458,9 +1501,21 @@ msgstr ""
 msgid "Gateway"
 msgstr "Gateway"
 
-msgid "Genre"
+msgid "General AC3 Delay"
 msgstr ""
 
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
+msgid "Genre"
+msgstr "Genre"
+
 msgid "German"
 msgstr "Tyska"
 
@@ -1503,6 +1558,9 @@ msgstr "Hierarkisk information "
 msgid "Hierarchy mode"
 msgstr "Hierarkiskt läge"
 
+msgid "High bitrate support"
+msgstr ""
+
 msgid "Horizontal"
 msgstr "horisontal"
 
@@ -1598,13 +1656,19 @@ msgid "Input"
 msgstr "Ingång"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Installera ny image med hjälp av en USB pinne"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Installera ny image med hjälp av din webläsare"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Installera lokal IPKG"
+
+msgid "Install settings, skins, software..."
+msgstr "Installera inställningar, utseende, mjukvara..."
+
+msgid "Install software updates..."
+msgstr "Installera mjukvaruuppdateringar..."
 
 msgid "Installing"
 msgstr "Installera"
@@ -1637,7 +1701,7 @@ msgid "Internal Flash"
 msgstr "Intern Flash"
 
 msgid "Invalid Location"
-msgstr "Ogiltig lokation"
+msgstr "Ogiltig sökväg"
 
 #, python-format
 msgid "Invalid directory selected: %s"
@@ -1650,7 +1714,7 @@ msgid "Invert display"
 msgstr "Invertera LCD"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "Italienska"
@@ -1699,7 +1763,7 @@ msgid "Latitude"
 msgstr "Latitud"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Lettiska"
 
 msgid "Leave DVD Player?"
 msgstr "Avsluta DVD Spelare?"
@@ -1707,6 +1771,9 @@ msgstr "Avsluta DVD Spelare?"
 msgid "Left"
 msgstr "Vänster"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Låter dig visa/ändra filer i din Dreambox"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1745,7 +1812,7 @@ msgid "Local Network"
 msgstr "Lokalt Nätverk"
 
 msgid "Location"
-msgstr "Lokation"
+msgstr "Sökväg"
 
 msgid "Lock:"
 msgstr "Lås:"
@@ -1781,7 +1848,7 @@ msgid "Make this mark just a mark"
 msgstr "Behåll denna markör som vanlig markör"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Hantera din mottagares mjukvara"
 
 msgid "Manual Scan"
 msgstr "Manuell sökning"
@@ -1977,6 +2044,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Inga detaljer för denna image fil"
 
+msgid "No displayable files on this medium found!"
+msgstr "Inga visningsbara filer hittade på detta media!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "Ingen programinfo hittades, inspelning oändlig."
 
@@ -2152,7 +2222,7 @@ msgid "Packet management"
 msgstr "Pakethantering"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Pakethanterare"
 
 msgid "Page"
 msgstr "Sida"
@@ -2201,6 +2271,12 @@ msgstr "Spela upp"
 msgid "Play Audio-CD..."
 msgstr "Spela Audio-CD..."
 
+msgid "Play DVD"
+msgstr "Spela DVD"
+
+msgid "Play Music..."
+msgstr "Spela Musik..."
+
 msgid "Play recorded movies..."
 msgstr "Spela inspelade filmer..."
 
@@ -2291,7 +2367,7 @@ msgid "Please select a subservice..."
 msgstr "Vänligen välj en underkanal..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Vänligen välj media som ska användas som backupdestination"
 
 msgid "Please select tag to filter..."
 msgstr "Vänligen välj märkning för filtrering..."
@@ -2449,6 +2525,9 @@ msgstr "Leverantör att scanna"
 msgid "Providers"
 msgstr "Leverantörer"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "Python frontend för /tmp/mmi.socket"
+
 msgid "Quick"
 msgstr "Snabb"
 
@@ -2529,7 +2608,7 @@ msgid "Refresh rate selection."
 msgstr "Uppdateringsfrekvens val."
 
 msgid "Reload"
-msgstr ""
+msgstr "Uppdatera"
 
 msgid "Remove Bookmark"
 msgstr "Ta bort Bokmärke"
@@ -2544,7 +2623,7 @@ msgid "Remove currently selected title"
 msgstr "Ta bort vald titel"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Ta bort färdiga."
 
 msgid "Remove plugins"
 msgstr "Ta bort plugins"
@@ -2562,7 +2641,7 @@ msgid "Remove title"
 msgstr "Ta bort titel"
 
 msgid "Removing"
-msgstr ""
+msgstr "Tar bvort"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2614,16 +2693,16 @@ msgid "Restore"
 msgstr "Återställ"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Återskapa backup..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Återskapning pågår"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Återskapning pågår..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Återskapa systeminställningar"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2717,6 +2796,9 @@ msgstr "Scalingläge"
 msgid "Scan "
 msgstr "Söka "
 
+msgid "Scan Files..."
+msgstr "Sök Filer..."
+
 msgid "Scan QAM128"
 msgstr "Söka QAM128"
 
@@ -2804,13 +2886,16 @@ msgid "Seek"
 msgstr "Sök"
 
 msgid "Select"
-msgstr ""
+msgstr "Välj"
 
 msgid "Select HDD"
 msgstr "Välj hårddisk"
 
+msgid "Select IPKG source to edit..."
+msgstr "Välj IPKG källa att ändra..."
+
 msgid "Select Location"
-msgstr "Välj lokation"
+msgstr "Välj Sökväg"
 
 msgid "Select Network Adapter"
 msgstr "Välj nätverksadapter"
@@ -2828,10 +2913,10 @@ msgid "Select channel to record from"
 msgstr "Välj kanal att spela in från"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Välj filer för backuptagning. Nuvarande valda:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Välj filer/kataloger för backuptagning..."
 
 msgid "Select image"
 msgstr "Välj image"
@@ -2842,6 +2927,9 @@ msgstr "Välj uppdateringsfrekvens"
 msgid "Select video input"
 msgstr "Välj video insignal"
 
+msgid "Select video input with up/down buttons"
+msgstr "Välj video ingång med upp/ner knapparna"
+
 msgid "Select video mode"
 msgstr "Välj videoläge"
 
@@ -3012,16 +3100,16 @@ msgid "Slow Motion speeds"
 msgstr "Hastigheter för slow motion"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Mjukvaruhanterare"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Mjukvaruhanterare..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Mjukvaruåterskapa"
 
 msgid "Software update"
-msgstr ""
+msgstr "Mjukvaruuppdatera"
 
 msgid "Some plugins are not available:\n"
 msgstr "Några plugins är inte tillgängliga:\n"
@@ -3030,10 +3118,10 @@ msgid "Somewhere else"
 msgstr "Någon annanstans"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Ledsen Mediascanner är inte installerad!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Ledsen inga backuper hittades!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3048,12 +3136,17 @@ msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Ledsen din backupdestination är inte skrivbar.\n"
+"Vänligen välj en annan destination."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Ledsen, din backupdestination är inte skrivbar.\n"
+"\n"
+"Vänligen välj annan destination."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3260,6 +3353,9 @@ msgstr ""
 "\n"
 "Vill du skriva USB flasher till den stickan?"
 
+msgid "The following files were found..."
+msgstr "Följande filer hittades..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3351,6 +3447,9 @@ msgstr ""
 "partition.\n"
 "Vill du verkligen fortsätta?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Ett fel uppstod vid nedladdningen av paketlistan. Vänligen prova igen."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr "Denna .NFI fil innehåller ingen giltig %s image!"
@@ -3376,6 +3475,10 @@ msgstr ""
 "Detta DVD RW media är redan formaterat - omformatering kommer ta bort all "
 "data på skivan."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Den här dreamboxen kan in avkoda %s strömmar!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Denna Dreambox kan inte avkoda %s videoströmmar!"
@@ -3578,6 +3681,9 @@ msgstr "Försöker hitta Transponders i kabelnätverket... vänligen vänta..."
 msgid "Try to find used transponders in cable network.. please wait..."
 msgstr "Försöker hitta transponders i kabelnätverket... vänligen vänta..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Försöker ladda ner ny paketlista. Vänligen vänta..."
+
 msgid "Tue"
 msgstr "Tis"
 
@@ -3677,7 +3783,7 @@ msgid "Updating... Please wait... This can take some minutes..."
 msgstr "Uppdaterar... Vänlig vänta... Detta tar några minuter...."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Uppgradering färdig."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr "Uppgradering klar. Vill du starta om din Dreambox?"
@@ -3793,9 +3899,18 @@ msgstr ""
 msgid "Video mode selection."
 msgstr "Videoläges val."
 
+msgid "View Movies..."
+msgstr "Visa Filmer..."
+
+msgid "View Photos..."
+msgstr "Visa Foton..."
+
 msgid "View Rass interactive..."
 msgstr "Visa Rass interaktivitet..."
 
+msgid "View Video CD..."
+msgstr "Visa Video CD..."
+
 msgid "View teletext..."
 msgstr "Visa teletext..."
 
@@ -3900,6 +4015,11 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"När du utför en fabriksreset, du kommer förlora ALL konfigurationsdata\n"
+"(inkl bouquets, kanaler, satellite data ...)\n"
+"När fabriksreset är klar, din mottagare kommer automatiskt starta om!\n"
+"\n"
+"Verkligen utföra en fabriksreset?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Var vill du spara dina inställningar?"
@@ -3926,7 +4046,7 @@ msgid "YPbPr"
 msgstr "YPbPr"
 
 msgid "Year"
-msgstr ""
+msgstr "År"
 
 msgid "Yes"
 msgstr "Ja"
@@ -4024,6 +4144,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Du har valt att ta backup på dina inställningar. Vänligen tryck OK för att "
+"starta backup nu."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4036,6 +4158,8 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Du har valt att återskapa dina inställningar. Enigma2 kommer starta om efter "
+"återskapningen. Vänligen tryck OK för att starta återskapningen nu."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4076,6 +4200,13 @@ msgstr ""
 "Backupen lyckades. Vi kommer nu att fortsätta förklara "
 "uppgraderingsprocessen."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Din samling överstiger storleken på single layer media, du kommer behöva en "
+"tom dual layer DVD!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Din Dreambox håller på att stängas av. Vänligen vänta..."
 
@@ -4125,6 +4256,12 @@ msgstr "[favorit editor]"
 msgid "[move mode]"
 msgstr "[flyttläge]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "avbryt ändra alternativ"
 
@@ -4140,6 +4277,12 @@ msgstr "håller på att starta"
 msgid "activate current configuration"
 msgstr "aktivera nuvarande konfiguration"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "lägga till en namnserver post"
 
@@ -4198,6 +4341,12 @@ msgstr ""
 "vill du verkligen återställa\n"
 "med följande backup:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "ljudspår (%s) format"
@@ -4285,6 +4434,9 @@ msgstr "daglig"
 msgid "day"
 msgstr "dag"
 
+msgid "delete"
+msgstr "ta bort"
+
 msgid "delete cut"
 msgstr "ta bort klipp"
 
@@ -4458,6 +4610,9 @@ msgstr ""
 msgid "init module"
 msgstr "initiera modul"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "infoga markör här"
 
@@ -4563,9 +4718,18 @@ msgstr "nästa kanal i historiken"
 msgid "no"
 msgstr "nej"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "ingen hårddisk hittad"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "ingen modul hittad"
 
@@ -4738,6 +4902,9 @@ msgstr "välj"
 msgid "select .NFI flash file"
 msgstr "välj .NFI flash fil"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "välj image från server"
 
@@ -4955,13 +5122,6 @@ msgstr "zap"
 msgid "zapped"
 msgstr "zapped"
 
-#~ msgid ""
-#~ "\n"
-#~ "Enigma2 will restart after the restore"
-#~ msgstr ""
-#~ "\n"
-#~ "Enigma2 kommer startas om efter återställningen"
-
 #~ msgid "\"?"
 #~ msgstr "\"?"
 
@@ -4992,6 +5152,9 @@ msgstr "zapped"
 #~ msgid "An error has occured. (%s)"
 #~ msgstr "Ett fel har uppstått. (%s)"
 
+#~ msgid "An error occured!"
+#~ msgstr "Ett fel inträffade!"
+
 #~ msgid ""
 #~ "Are you sure you want to enable WLAN support?\n"
 #~ "Connect your Wlan USB Stick to your Dreambox and press OK.\n"
@@ -5431,9 +5594,6 @@ msgstr "zapped"
 #~ msgid "color"
 #~ msgstr "färg"
 
-#~ msgid "delete"
-#~ msgstr "ta bort"
-
 #~ msgid "equal to Socket A"
 #~ msgstr "likadant som Ingång A"
 
index 02bdcea5b6a22b51639c04b8aa7a0f7d9e56edab..de13da288515b5a7500c90bd28207cc94e3a827c 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -2,8 +2,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: enigma2 Turkish Locale\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-16 00:05+0100\n"
-"PO-Revision-Date: 2009-02-08 09:39+0200\n"
+"POT-Creation-Date: 2009-03-26 17:08+0100\n"
+"PO-Revision-Date: 2009-03-03 11:16+0200\n"
 "Last-Translator: Zülfikar VEYİSOĞLU <zveyis@gmail.com>\n"
 "Language-Team: http://www.turkeyforum.com/satforum <zveyis@gmail.com>\n"
 "MIME-Version: 1.0\n"
@@ -16,62 +16,94 @@ msgid ""
 "\n"
 "Advanced options and settings."
 msgstr ""
+"\n"
+"Gelişmiş seçenekler ve ayarlar."
 
 msgid ""
 "\n"
 "After pressing OK, please wait!"
 msgstr ""
+"\n"
+"OK'a bastıktan sonra lütfen bekleyin!"
 
 msgid ""
 "\n"
 "Backup your Dreambox settings."
 msgstr ""
+"\n"
+"Dreambox ayarlarınızı yedekleyin."
 
 msgid ""
 "\n"
 "Edit the upgrade source address."
 msgstr ""
+"\n"
+"Güncelleme sunucusu adresini düzenleyin."
+
+msgid ""
+"\n"
+"Enigma2 will restart after the restore"
+msgstr ""
+"\n"
+"Enigma2 geri yüklemeden sonra yeniden başlatılacak"
 
 msgid ""
 "\n"
 "Online update of your Dreambox software."
 msgstr ""
+"\n"
+"Dreambox yazılımını çevrimiçi güncelleyin."
 
 msgid ""
 "\n"
 "Press OK on your remote control to continue."
 msgstr ""
+"\n"
+"Devam etmek için kumandanızın OK tuşuna basın."
 
 msgid ""
 "\n"
 "Restore your Dreambox settings."
 msgstr ""
+"\n"
+"Dreambox ayarlarınızı geri yükleyin."
 
 msgid ""
 "\n"
 "Restore your Dreambox with a new firmware."
 msgstr ""
+"\n"
+"Dreambox'ınızı yeni sistem yazılımıyla birlikte geri yükleyin."
 
 msgid ""
 "\n"
 "Restore your backups by date."
 msgstr ""
+"\n"
+"Yedeklerinizi tarihe göre geri yükleyin."
 
 msgid ""
 "\n"
 "Scan for local packages and install them."
 msgstr ""
+"\n"
+"Yereldeki paketleri ara ve yükle."
 
 msgid ""
 "\n"
 "Select your backup device.\n"
 "Current device: "
 msgstr ""
+"\n"
+"Yedekleme aygıtını seçin.\n"
+"Mevcut aygıt: "
 
 msgid ""
 "\n"
 "View, install and remove available or installed packages."
 msgstr ""
+"\n"
+"Paketleri görün, yükleyin veya yüklü paketleri kaldırın."
 
 msgid " "
 msgstr " "
@@ -416,16 +448,16 @@ msgid "Advanced"
 msgstr "Gelişmiş"
 
 msgid "Advanced Options"
-msgstr ""
+msgstr "Gelişmiş seçenekler"
 
 msgid "Advanced Video Setup"
 msgstr "Gelişmiş Görüntü Kurulumu"
 
 msgid "Advanced restore"
-msgstr ""
+msgstr "Gelişmiş geri yükleme"
 
 msgid "After event"
-msgstr "Eylem bittikten sonra"
+msgstr "Program bittikten sonra"
 
 msgid ""
 "After the start wizard is completed, you need to protect single services. "
@@ -456,9 +488,6 @@ msgstr "Alternatifli kanallarda tuner önceliği"
 msgid "An empty filename is illegal."
 msgstr "Boş dosya adı geçersiz."
 
-msgid "An error occured!"
-msgstr ""
-
 msgid "An unknown error occured!"
 msgstr "Bilinmeyen bir hata oluştu!"
 
@@ -483,11 +512,15 @@ msgid ""
 "Are you sure you want to restore\n"
 "following backup:\n"
 msgstr ""
+"Aşağıdaki belirtilen yedeği\n"
+"geri yüklemek istiyor musunuz?:\n"
 
 msgid ""
 "Are you sure you want to restore your Enigma2 backup?\n"
 "Enigma2 will restart after the restore"
 msgstr ""
+"Enigma2 yedeğinizi geri yüklemek istiyor musunuz?\n"
+"Geri yükleme işleminden sonra Enigma2 yeniden başlayacaktır"
 
 msgid "Artist"
 msgstr "Sanatçı"
@@ -559,22 +592,22 @@ msgid "Backup Mode"
 msgstr "Yedeklenecek klasör"
 
 msgid "Backup done."
-msgstr ""
+msgstr "Yedekleme tamamlandı."
 
 msgid "Backup failed."
-msgstr ""
+msgstr "Yedekleme sırasında hata oluştu."
 
 msgid "Backup is done. Please press OK to see the result."
 msgstr "Yedekleme tamamlandı. OK tuşuna basarak sonucu görebilirsiniz."
 
 msgid "Backup running"
-msgstr ""
+msgstr "Yedekleme çalışıyor"
 
 msgid "Backup running..."
-msgstr ""
+msgstr "Yedekleme çalışıyor..."
 
 msgid "Backup system settings"
-msgstr ""
+msgstr "Sistem ayarını yedekle"
 
 msgid "Band"
 msgstr "Bant"
@@ -586,10 +619,10 @@ msgid "Begin time"
 msgstr "Başlangıç"
 
 msgid "Behavior of 'pause' when paused"
-msgstr "Duraklama kipinde 'duraklat' tuşuna basıldığında"
+msgstr "Duraklama kipinde 'duraklat' tuşu görevi"
 
 msgid "Behavior of 0 key in PiP-mode"
-msgstr "PiP kipinde 0 tuşuna basıldığında"
+msgstr "PiP kipinde 0 tuşu görevi"
 
 msgid "Behavior when a movie is started"
 msgstr "Film başlatıldığı zaman"
@@ -660,7 +693,7 @@ msgid "Catalan"
 msgstr "Katalanca"
 
 msgid "Change bouquets in quickzap"
-msgstr "Kanal değiştirirken buketler arası geçişe izin ver"
+msgstr "Kanal değiştirirken buketler arası geçişe izin"
 
 msgid "Change dir."
 msgstr "Klasör değiştir"
@@ -711,10 +744,10 @@ msgid "Choose Tuner"
 msgstr "Tuner Seç"
 
 msgid "Choose backup files"
-msgstr ""
+msgstr "Yedekleme dosyası seç"
 
 msgid "Choose backup location"
-msgstr ""
+msgstr "Yedekleme konumu seç"
 
 msgid "Choose bouquet"
 msgstr "Buket Seç"
@@ -726,7 +759,7 @@ msgid "Choose target folder"
 msgstr "Hedef klasörü seç"
 
 msgid "Choose upgrade source"
-msgstr ""
+msgstr "Güncelleme kaynağı..."
 
 msgid "Choose your Skin"
 msgstr "Arayüzünüzü Seçin"
@@ -741,7 +774,7 @@ msgid "Cleanup"
 msgstr "Temizle"
 
 msgid "Clear before scan"
-msgstr "Kanal aramadan önce eski kanal listesini temizle"
+msgstr "Arama öncesi kanal listesini temizle"
 
 msgid "Clear log"
 msgstr "Kayıt günlüğünü temizle"
@@ -762,10 +795,10 @@ msgid "Coderate LP"
 msgstr "Düşük güç (LP) kod oranı"
 
 msgid "Collection name"
-msgstr "Kolleksiyon adı"
+msgstr "Koleksiyon adı"
 
 msgid "Collection settings"
-msgstr "Kolleksiyon ayarları"
+msgstr "Koleksiyon ayarları"
 
 msgid "Color Format"
 msgstr "Renk Biçimi"
@@ -782,6 +815,9 @@ msgstr "Bağlı DiSEqC emri"
 msgid "Common Interface"
 msgstr "Ortak Arayüz"
 
+msgid "Common Interface Assignment"
+msgstr ""
+
 msgid "Compact Flash"
 msgstr "Compact Flash"
 
@@ -794,6 +830,9 @@ msgstr "Tamamı"
 msgid "Complex (allows mixing audio tracks and aspects)"
 msgstr "Kompleks (karışık ses izlerine ve açılara izin verir)"
 
+msgid "Config"
+msgstr ""
+
 msgid "Configuration Mode"
 msgstr "Konfigürasyon kipi"
 
@@ -873,13 +912,13 @@ msgid "Current version:"
 msgstr "Geçerli sürüm:"
 
 msgid "Custom skip time for '1'/'3'-keys"
-msgstr "'1'/'3' Tuşlarına basıldığında atlanılacak süre"
+msgstr "'1'/'3' tuşlarında atlanılacak süre"
 
 msgid "Custom skip time for '4'/'6'-keys"
-msgstr "'4'/'6' Tuşlarına basıldığında atlanılacak süre"
+msgstr "'4'/'6' tuşlarında atlanılacak süre"
 
 msgid "Custom skip time for '7'/'9'-keys"
-msgstr "'7'/'9' Tuşlarına basıldığında atlanılacak süre"
+msgstr "'7'/'9' tuşlarında atlanılacak süre"
 
 msgid "Customize"
 msgstr "Özelleştir"
@@ -950,7 +989,7 @@ msgid "Description"
 msgstr "Açıklama"
 
 msgid "Deselect"
-msgstr ""
+msgstr "Seçimi kaldır"
 
 msgid "Destination directory"
 msgstr "Hedef Klasör"
@@ -1088,7 +1127,7 @@ msgid "Do you want to install default sat lists?"
 msgstr "Varsayılan kanal listesini yüklemek ister misiniz?"
 
 msgid "Do you want to install the package:\n"
-msgstr ""
+msgstr "Seçilen paketi yüklemek istiyor musunuz?:\n"
 
 msgid "Do you want to play DVD in drive?"
 msgstr "DVD'yi oynatmak istiyor musunuz?"
@@ -1097,10 +1136,10 @@ msgid "Do you want to preview this DVD before burning?"
 msgstr "DVD'yi yazmadan önce önizleme yapmak istiyor musunuz?"
 
 msgid "Do you want to reboot your Dreambox?"
-msgstr ""
+msgstr "Dreambox'ı yeniden başlatmak istiyor musunuz?"
 
 msgid "Do you want to remove the package:\n"
-msgstr ""
+msgstr "Seçilen paketi kaldırmak istiyor musunuz?:\n"
 
 msgid "Do you want to restore your settings?"
 msgstr "Ayarlarınızı geri yüklemek istiyor musunuz?"
@@ -1109,7 +1148,7 @@ msgid "Do you want to resume this playback?"
 msgstr "Oynatmaya kaldığınız yerden devam etmek istiyor musunuz?"
 
 msgid "Do you want to update your Dreambox?"
-msgstr ""
+msgstr "Dreambox'ı güncellemek istiyor musunuz?"
 
 msgid ""
 "Do you want to update your Dreambox?\n"
@@ -1119,7 +1158,7 @@ msgstr ""
 "Lütfen OK'a bastıktan sonra bekleyin!"
 
 msgid "Do you want to upgrade the package:\n"
-msgstr ""
+msgstr "Seçilen paketi güncellemek istiyor musunuz?:\n"
 
 msgid "Do you want to view a tutorial?"
 msgstr "Cihaz kullanımını anlatan öğreticiyi görmek ister misiniz?"
@@ -1138,12 +1177,14 @@ msgstr "Tamamlandı - %d paket yüklendi veya güncellendi %d pakette hata oluş
 #, python-format
 msgid "Done - Installed, upgraded or removed %d packages with %d errors"
 msgstr ""
+"Tamamlandı - %d paket yüklendi, güncellendi veya kaldırıldı. %d pakette hata "
+"oluştu"
 
 msgid "Download"
 msgstr "İndir"
 
 msgid "Download .NFI-Files for USB-Flasher"
-msgstr "USB-Flaş için .NFI dosyası indir"
+msgstr "USB Flaşlayıcı için .NFI dosyası indir"
 
 msgid "Download Plugins"
 msgstr "Eklenti İndir"
@@ -1189,6 +1230,9 @@ msgstr "Düzenle"
 msgid "Edit DNS"
 msgstr "DNS Düzenle"
 
+msgid "Edit IPKG source URL..."
+msgstr "IPKG kaynak adresi..."
+
 msgid "Edit Title"
 msgstr "Başlık Düzenle"
 
@@ -1260,10 +1304,10 @@ msgid ""
 "\n"
 "© 2006 - Stephan Reichholf"
 msgstr ""
-"Enigma2 Arayüz Seçici v0.5 BETA\n"
+"Enigma2 Arayüz Seçtirici v0.5 BETA\n"
 "\n"
 "Herhangi bir hatayla karşılaşırsanız lüften\n"
-"stephan@reichholf.net ile irtibata geçiniz\n"
+"stephan@reichholf.net ile irtibata geçin\n"
 "\n"
 "© 2006 - Stephan Reichholf"
 
@@ -1273,10 +1317,10 @@ msgstr ""
 #.       which "winding mode" is entered when first pressing "rewind" or
 #.       "fast forward". 
 msgid "Enter Fast Forward at speed"
-msgstr "Hızlı sardırma hızını (FF) seçin"
+msgstr "Hızlı sardırma hızı (FF)"
 
 msgid "Enter Rewind at speed"
-msgstr "Geri sardırma hızını (RW) seçin"
+msgstr "Geri sardırma hızı (RW)"
 
 msgid "Enter WLAN network name/SSID:"
 msgstr "Kablosuz (WLAN) ağ adı/SSID girin:"
@@ -1395,7 +1439,7 @@ msgstr ""
 "gerekiyor."
 
 msgid "Flash"
-msgstr "Flaşa yaz"
+msgstr "Flaş"
 
 msgid "Flashing failed"
 msgstr "Flaşa yazma başarısız"
@@ -1456,6 +1500,18 @@ msgstr ""
 msgid "Gateway"
 msgstr "Ağ geçidi"
 
+msgid "General AC3 Delay"
+msgstr ""
+
+msgid "General AC3 delay"
+msgstr ""
+
+msgid "General PCM Delay"
+msgstr ""
+
+msgid "General PCM delay"
+msgstr ""
+
 msgid "Genre"
 msgstr "Tür"
 
@@ -1501,6 +1557,9 @@ msgstr "Hiyerarşi Bilgisi"
 msgid "Hierarchy mode"
 msgstr "Hiyerarşi kipi"
 
+msgid "High bitrate support"
+msgstr ""
+
 msgid "Horizontal"
 msgstr "Yatay (H)"
 
@@ -1600,13 +1659,19 @@ msgid "Input"
 msgstr "Giriş"
 
 msgid "Install a new image with a USB stick"
-msgstr ""
+msgstr "Yeni imajı USB bellekten yükle"
 
 msgid "Install a new image with your web browser"
-msgstr ""
+msgstr "Yeni imajı internet gezgin (ie,firefox vb.) programıyla yükle"
 
 msgid "Install local IPKG"
-msgstr ""
+msgstr "Çevrimdışı IPKG yükle"
+
+msgid "Install settings, skins, software..."
+msgstr "Yapılandırma ayarı, arayüz, yazılım yükleyin..."
+
+msgid "Install software updates..."
+msgstr "Yazılım güncellemelerini yükle..."
 
 msgid "Installing"
 msgstr "Kuruluyor"
@@ -1652,7 +1717,7 @@ msgid "Invert display"
 msgstr "Ekranı ters çevir"
 
 msgid "Ipkg"
-msgstr ""
+msgstr "Ipkg"
 
 msgid "Italian"
 msgstr "İtalyanca"
@@ -1692,7 +1757,7 @@ msgid "Language selection"
 msgstr "Dil seçimi"
 
 msgid "Language..."
-msgstr "Dil Ayarları (Language)..."
+msgstr "Dil Ayarları..."
 
 msgid "Last speed"
 msgstr "Son hız"
@@ -1701,7 +1766,7 @@ msgid "Latitude"
 msgstr "Enlem"
 
 msgid "Latvian"
-msgstr ""
+msgstr "Letonca"
 
 msgid "Leave DVD Player?"
 msgstr "DVD Oynatıcıyı Kapat?"
@@ -1709,6 +1774,9 @@ msgstr "DVD Oynatıcıyı Kapat?"
 msgid "Left"
 msgstr "Sol"
 
+msgid "Lets you view/edit files in your Dreambox"
+msgstr "Dreambox'ınızdaki dosyaları görün/düzenleyin"
+
 #. TRANSLATORS: (aspect ratio policy: black bars on top/bottom) in doubt, keep english term.
 msgid "Letterbox"
 msgstr "Letterbox"
@@ -1783,7 +1851,7 @@ msgid "Make this mark just a mark"
 msgstr "Bu işareti sadece bir işaret olarak kullan"
 
 msgid "Manage your receiver's software"
-msgstr ""
+msgstr "Uydu alıcınızın sistem yazılımı yönetin"
 
 msgid "Manual Scan"
 msgstr "Elle arama"
@@ -1795,10 +1863,10 @@ msgid "Manufacturer"
 msgstr "Üretici"
 
 msgid "Margin after record"
-msgstr "Kayıt sonrasında marj süresi ekle"
+msgstr "Kayıt sonrasına marj süresi ekle (dk.)"
 
 msgid "Margin before record (minutes)"
-msgstr "Kayıt başına marj süresi ekle (dakika)"
+msgstr "Kayıt başına marj süresi ekle (dk.)"
 
 msgid "Media player"
 msgstr "Ortam oynatıcı"
@@ -1980,6 +2048,9 @@ msgstr ""
 msgid "No details for this image file"
 msgstr "Bu imaj dosyası için detay bilgisi yok"
 
+msgid "No displayable files on this medium found!"
+msgstr "Bu medyada gösterilecek dosya bulunamadı!"
+
 msgid "No event info found, recording indefinitely."
 msgstr "EPG bilgisi bulunamadı, süresiz kaydediliyor."
 
@@ -2005,7 +2076,7 @@ msgid "No tags are set on these movies."
 msgstr "Bu filmler için etiket tanımlanmamış"
 
 msgid "No tuner is configured for use with a diseqc positioner!"
-msgstr "DiSEqC pozisyoner kullanımı için tuner ayarı yapılmamış."
+msgstr "DiSEqC pozisyoner kullanımı için tuner ayarı yapılmamış!"
 
 msgid ""
 "No tuner is enabled!\n"
@@ -2157,7 +2228,7 @@ msgid "Packet management"
 msgstr "Paket yönetimi"
 
 msgid "Packet manager"
-msgstr ""
+msgstr "Paket yönetimi"
 
 msgid "Page"
 msgstr "Sayfa"
@@ -2206,6 +2277,12 @@ msgstr "Oynat"
 msgid "Play Audio-CD..."
 msgstr "Ses CD'si (Audio CD) oynat..."
 
+msgid "Play DVD"
+msgstr "DVD Oynat"
+
+msgid "Play Music..."
+msgstr "Müzik dinle..."
+
 msgid "Play recorded movies..."
 msgstr "Kayıtlı video dosyalarını göster..."
 
@@ -2213,7 +2290,7 @@ msgid "Please Reboot"
 msgstr "Lütfen yeniden başlatın"
 
 msgid "Please Select Medium to be Scanned"
-msgstr "Lütfen bakmak istediğiniz DVD medyasını seçiniz"
+msgstr "Lütfen araştırmak istediğiniz medyayı seçin"
 
 msgid "Please change recording endtime"
 msgstr "Lütfen kayıt bitiş saatini değiştirin"
@@ -2279,7 +2356,7 @@ msgid "Please press OK!"
 msgstr "Lütfen OK'a basın!"
 
 msgid "Please select .NFI flash image file from medium"
-msgstr "Lütfen DVD/CD medyasından, istediğiniz .NFI imajını seçin"
+msgstr "Lütfen medyadan .NFI imajını seçin"
 
 msgid "Please select a playlist to delete..."
 msgstr "Seçili oynatma listesini sil..."
@@ -2294,7 +2371,7 @@ msgid "Please select a subservice..."
 msgstr "Lütfen bir alt servis seçin..."
 
 msgid "Please select medium to use as backup location"
-msgstr ""
+msgstr "Lütfen yedekleme konumu için medya seçin"
 
 msgid "Please select tag to filter..."
 msgstr "Lütfen filtreleme için etiket seçin ..."
@@ -2451,6 +2528,9 @@ msgstr "Yayıncıya göre ara"
 msgid "Providers"
 msgstr "Yayıncılar"
 
+msgid "Python frontend for /tmp/mmi.socket"
+msgstr "/tmp/mmi.socket için Python uç birimi"
+
 msgid "Quick"
 msgstr "Hızlı"
 
@@ -2531,7 +2611,7 @@ msgid "Refresh rate selection."
 msgstr "Tazeleme hızı seçimi."
 
 msgid "Reload"
-msgstr ""
+msgstr "Yenile"
 
 msgid "Remove Bookmark"
 msgstr "Yer imini sil"
@@ -2546,7 +2626,7 @@ msgid "Remove currently selected title"
 msgstr "Seçilen geçerli başlığı sil"
 
 msgid "Remove finished."
-msgstr ""
+msgstr "Kaldırma işlemi tamamlandı."
 
 msgid "Remove plugins"
 msgstr "Eklentileri kaldır"
@@ -2564,7 +2644,7 @@ msgid "Remove title"
 msgstr "Başlığı sil"
 
 msgid "Removing"
-msgstr ""
+msgstr "Kaldırılıyor"
 
 #, python-format
 msgid "Removing directory %s failed. (Maybe not empty.)"
@@ -2617,16 +2697,16 @@ msgid "Restore"
 msgstr "Geri yükle"
 
 msgid "Restore backups..."
-msgstr ""
+msgstr "Yedekten geri yükle..."
 
 msgid "Restore running"
-msgstr ""
+msgstr "Geri yükleme çalışıyor"
 
 msgid "Restore running..."
-msgstr ""
+msgstr "Geri yükleme çalışıyor..."
 
 msgid "Restore system settings"
-msgstr ""
+msgstr "Sistem ayarını geri yükle"
 
 msgid ""
 "Restoring the settings is done. Please press OK to activate the restored "
@@ -2720,6 +2800,9 @@ msgstr "Ölçeklendirme Kipi"
 msgid "Scan "
 msgstr "Ara : "
 
+msgid "Scan Files..."
+msgstr "Dosyaları ara..."
+
 msgid "Scan QAM128"
 msgstr "QAM128'i ara"
 
@@ -2808,11 +2891,14 @@ msgid "Seek"
 msgstr "Ara"
 
 msgid "Select"
-msgstr ""
+msgstr "Seç"
 
 msgid "Select HDD"
 msgstr "HDD Seç"
 
+msgid "Select IPKG source to edit..."
+msgstr "IPKG kaynağını seçin..."
+
 msgid "Select Location"
 msgstr "Konum Seç"
 
@@ -2832,10 +2918,10 @@ msgid "Select channel to record from"
 msgstr "Kaydın yapılacağı kanalı seçin"
 
 msgid "Select files for backup. Currently selected:\n"
-msgstr ""
+msgstr "Yedeklemek istediğiniz dosyaları seçin. Mevcut seçiminiz:\n"
 
 msgid "Select files/folders to backup..."
-msgstr ""
+msgstr "Yedekleme için dosya/klasör seçin..."
 
 msgid "Select image"
 msgstr "İmajı seçin"
@@ -2846,6 +2932,9 @@ msgstr "Tazeleme hızı seçin"
 msgid "Select video input"
 msgstr "Görüntü girişini seç"
 
+msgid "Select video input with up/down buttons"
+msgstr "Yukarı/aşağı tuşlarıyla Video girişini seçin"
+
 msgid "Select video mode"
 msgstr "Görüntü kipini seç"
 
@@ -2856,7 +2945,7 @@ msgid "Send DiSEqC"
 msgstr "DiSEqC komutu gönder"
 
 msgid "Send DiSEqC only on satellite change"
-msgstr "DiSEqC komutunu yalnızca uydu değiştiğinde gönder"
+msgstr "Yalnızca uydu değiştiğinde DiSEqC gönder"
 
 msgid "Seperate titles with a main menu"
 msgstr "Ana menü ile başlıkları ayır"
@@ -2937,16 +3026,16 @@ msgid "Show WLAN Status"
 msgstr "WLAN Durumunu Göster"
 
 msgid "Show blinking clock in display during recording"
-msgstr "OLED üzerindeki saat, kayıt esnasında yanıp sönsün"
+msgstr "OLED kayıt esnasında yanıp sönsün"
 
 msgid "Show infobar on channel change"
 msgstr "Kanal değiştirildiğinde bilgi çubuğunu göster"
 
 msgid "Show infobar on event change"
-msgstr "EPG programı değişikliklerinde bilgi çubuğunu göster"
+msgstr "EPG değişikliklerinde bilgi çubuğunu göster"
 
 msgid "Show infobar on skip forward/backward"
-msgstr "İleri/geri sardırma yapıldığında bilgi çubuğunu göster"
+msgstr "İleri/geri sardırmada bilgi çubuğunu göster"
 
 msgid "Show positioner movement"
 msgstr "Pozisyoner haraketini göster"
@@ -3003,7 +3092,7 @@ msgid "Sleep timer action:"
 msgstr "Uyku zamanlayıcı eylemi:"
 
 msgid "Slideshow Interval (sec.)"
-msgstr "Slideshow geçiş aralığı (saniye)"
+msgstr "Slayt gösterisi geçiş aralığı (sn.)"
 
 #, python-format
 msgid "Slot %d"
@@ -3016,16 +3105,16 @@ msgid "Slow Motion speeds"
 msgstr "Ağır çekim hızları"
 
 msgid "Software manager"
-msgstr ""
+msgstr "Yazılım yönetimi"
 
 msgid "Software manager..."
-msgstr ""
+msgstr "Yazılım yönetimi..."
 
 msgid "Software restore"
-msgstr ""
+msgstr "Yazılım geri yükle"
 
 msgid "Software update"
-msgstr ""
+msgstr "Yazılım güncelle"
 
 msgid "Some plugins are not available:\n"
 msgstr "Bazı eklentiler kullanılamaz:\n"
@@ -3034,10 +3123,10 @@ msgid "Somewhere else"
 msgstr "Başka bir yere"
 
 msgid "Sorry MediaScanner is not installed!"
-msgstr ""
+msgstr "Üzgünüm, MediaScanner eklentisi yüklü değil!"
 
 msgid "Sorry no backups found!"
-msgstr ""
+msgstr "Üzgünüm, yedekleme dosyası bulunamadı!"
 
 msgid ""
 "Sorry your Backup destination does not exist\n"
@@ -3046,18 +3135,23 @@ msgid ""
 msgstr ""
 "Yedek almak istediğiniz hedef bulunamadı\n"
 "\n"
-"Lütfen başka bir tane seçin."
+"Lütfen başka bir hedef seçin."
 
 msgid ""
 "Sorry your backup destination is not writeable.\n"
 "Please choose an other one."
 msgstr ""
+"Üzgünüm seçtiğiniz yedekleme hedefinde yazma hakkı yok.\n"
+"Lütfen başka bir hedef seçin."
 
 msgid ""
 "Sorry, your backup destination is not writeable.\n"
 "\n"
 "Please choose another one."
 msgstr ""
+"Üzgünüm, seçtiğiniz yedekleme hedefinde yazma hakkı yok.\n"
+"\n"
+"Lütfen başka bir hedef seçin."
 
 #. TRANSLATORS: This must fit into the header button in the EPG-List
 msgid "Sort A-Z"
@@ -3116,7 +3210,7 @@ msgid "Stop Timeshift?"
 msgstr "Zaman bükücü durdurulsun mu?"
 
 msgid "Stop current event and disable coming events"
-msgstr "Geçerli eylemi durdur ve gelecek eylemleri devre dışı bırak"
+msgstr "Geçerli programı durdur ve gelecek programları devre dışı bırak"
 
 msgid "Stop current event but not coming events"
 msgstr "Geçerli eylemi durdur ama gelecek eylemlere dokunma"
@@ -3189,7 +3283,7 @@ msgid "TV System"
 msgstr "TV Sistemi"
 
 msgid "Table of content for collection"
-msgstr "Kolleksiyonun içerik listesi tablosu (TOC)"
+msgstr "Koleksiyonun içerik tablosu (TOC)"
 
 msgid "Tag 1"
 msgstr "Etiket 1"
@@ -3262,6 +3356,9 @@ msgstr ""
 "\n"
 "USB flaşlayıcıyı bu USB belleğe yazmak istiyor musunuz?"
 
+msgid "The following files were found..."
+msgstr "Aşağıdaki dosyalar bulundu..."
+
 msgid ""
 "The input port should be configured now.\n"
 "You can now configure the screen by displaying some test pictures. Do you "
@@ -3353,6 +3450,9 @@ msgstr ""
 "Seçtiğiniz disk bölümü (partition) yeterli boş alana sahip olmayabilir.\n"
 "Devam etmek istiyor musunuz?"
 
+msgid "There was an error downloading the packetlist. Please try again."
+msgstr "Paket listesi indirilirken hata oluştu. Lütfen tekrar deneyin."
+
 #, python-format
 msgid "This .NFI file does not contain a valid %s image!"
 msgstr ".NFI dosyası geçeli bir %s imajı içermiyor!"
@@ -3378,6 +3478,10 @@ msgstr ""
 "DVD-RW medyası zaten biçimlendirilmiş - yeniden biçimlendirme tüm disk "
 "içeriğini silecektir."
 
+#, python-format
+msgid "This Dreambox can't decode %s streams!"
+msgstr "Dreambox %s streamlarını çözemez!"
+
 #, python-format
 msgid "This Dreambox can't decode %s video streams!"
 msgstr "Dreambox %s video dosyalarını gösteremez!"
@@ -3584,6 +3688,9 @@ msgid "Try to find used transponders in cable network.. please wait..."
 msgstr ""
 "Kullanılan transponderlar kablolu yayın ağında aranıyor.. lütfen bekleyin..."
 
+msgid "Trying to download a new packetlist. Please wait..."
+msgstr "Paket listesi indiriliyor. Lütfen bekleyin..."
+
 msgid "Tue"
 msgstr "Salı"
 
@@ -3682,7 +3789,7 @@ msgstr ""
 "Güncelleniyor... Lütfen bekleyin... Bu işlem birkaç dakika sürebilir..."
 
 msgid "Upgrade finished."
-msgstr ""
+msgstr "Güncelleme tamamlandı."
 
 msgid "Upgrade finished. Do you want to reboot your Dreambox?"
 msgstr ""
@@ -3792,17 +3899,26 @@ msgid ""
 msgstr ""
 "Görüntü kaynak seçimi\n"
 "\n"
-"Lütfen bu sayfayı TV'nizde görebiliyorsanız OK tuşuna basınız (yada farklı "
-"bir giriş seçiniz).\n"
+"Lütfen bu sayfayı TV'nizde görebiliyorsanız OK tuşuna basın (yada farklı bir "
+"giriş seçin).\n"
 "\n"
-"Sonraki giriş otomatik olarak 10 saniye sonra test edilecektir."
+"Sonraki giriş 10 saniye sonra otomatik olarak test edilecektir."
 
 msgid "Video mode selection."
 msgstr "Görüntü kipi seçimi."
 
+msgid "View Movies..."
+msgstr "Film izle..."
+
+msgid "View Photos..."
+msgstr "Fotoğraflara bak..."
+
 msgid "View Rass interactive..."
 msgstr "Etkileşimli Rass'ı (Radio acoustic sounding system) göster"
 
+msgid "View Video CD..."
+msgstr "Video CD izle..."
+
 msgid "View teletext..."
 msgstr "Teleteksi aç..."
 
@@ -3909,6 +4025,13 @@ msgid ""
 "\n"
 "Really do a factory reset?"
 msgstr ""
+"Fabrika ayarlarına geri döndüğünüzde, yapılandırma dosyalarınızın tamamını "
+"KAYBEDEBİLİRSİNİZ\n"
+"(buketler, kanallar, uydu verileri ve özel ayar dosyalarınız ...)\n"
+"Fabrika ayarlarına geri dönüldükten sonra, uydu alıcınız otomatik olarak "
+"yeniden başlatılacaktır!\n"
+"\n"
+"Fabrika ayarlarına geri dönmek istediğinizden emin misiniz?"
 
 msgid "Where do you want to backup your settings?"
 msgstr "Ayarlarınızın yedeğini nereye almak istiyorsunuz?"
@@ -3975,7 +4098,7 @@ msgstr ""
 "istediğiniz ayarları seçin."
 
 msgid "You can choose, what you want to install..."
-msgstr "Yüklemek istediğinizi seçiniz..."
+msgstr "Yüklemek istediğinizi seçebilirsiniz..."
 
 msgid "You cannot delete this!"
 msgstr "Bunu silemezsiniz!"
@@ -4033,6 +4156,8 @@ msgid ""
 "You have chosen to backup your settings. Please press OK to start the backup "
 "now."
 msgstr ""
+"Ayarlarınızı yedeklemeyi seçtiniz. Yedeklemeyi başlatmak için OK tuşuna "
+"basın..."
 
 msgid ""
 "You have chosen to create a new .NFI flasher bootable USB stick. This will "
@@ -4046,6 +4171,9 @@ msgid ""
 "You have chosen to restore your settings. Enigma2 will restart after "
 "restore. Please press OK to start the restore now."
 msgstr ""
+"Ayarlarınızı geri yüklemeyi seçtiniz. Geri yükleme işleminin ardından "
+"Enigma2 yeniden başlayacaktır. Geri yüklemeyi başlatmak için OK tuşuna "
+"basın..."
 
 #, python-format
 msgid "You have to wait %s!"
@@ -4059,9 +4187,10 @@ msgid ""
 "your settings."
 msgstr ""
 "Dreambox'ınızın PC bağlantısına ihtiyacı var. Eğer daha fazla açıklamaya "
-"ihtiyacınız varsa, lütfen http://www.dm7025.de adresini ziyaret edin.\n"
-"Şimdi Dreambox'ınız kapatılıyor. Web sitesinde belirtilen güncelleme "
-"talimatlarını yerine getirdikten sonra, yeni cihaz yazılımı ayarlarınızı "
+"ihtiyacınız varsa, lütfen http://www.dream-multimedia-tv.de/ adresini "
+"ziyaret edin.\n"
+"Dreambox'ınız şimdi kapatılıyor. Web sitesinde belirtilen güncelleme "
+"talimatlarını yerine getirdikten sonra yeni sistem yazılımı, ayarlarınızı "
 "geri yüklemek isteyip istemediğiniz sorusunu soracaktır."
 
 msgid ""
@@ -4085,6 +4214,13 @@ msgid ""
 "process."
 msgstr "Yedek başarıyla alındı. Şimdi güncelleme işlemine devam edeceğiz."
 
+msgid ""
+"Your collection exceeds the size of a single layer medium, you will need a "
+"blank dual layer DVD!"
+msgstr ""
+"Koleksiyonunuz tek katman DVD'ye sığmıyor, çift katman DVD kullanmanız "
+"gerekiyor!"
+
 msgid "Your dreambox is shutting down. Please stand by..."
 msgstr "Dreambox'ınız kapatılıyor. Lütfen bekleyin..."
 
@@ -4136,6 +4272,12 @@ msgstr "[favori düzenle]"
 msgid "[move mode]"
 msgstr "[taşıma kipi]"
 
+msgid "a gui to assign services/providers to common interface modules"
+msgstr ""
+
+msgid "a gui to assign services/providers/caids to common interface modules"
+msgstr ""
+
 msgid "abort alternatives edit"
 msgstr "alternatif düzenlemekten vazgeç"
 
@@ -4151,6 +4293,12 @@ msgstr "başlamak üzere"
 msgid "activate current configuration"
 msgstr "geçerli yapılandırmayı etkinleştir"
 
+msgid "add Provider"
+msgstr ""
+
+msgid "add Service"
+msgstr ""
+
 msgid "add a nameserver entry"
 msgstr "isim sunucu kaydı ekle"
 
@@ -4158,10 +4306,10 @@ msgid "add alternatives"
 msgstr "alternatiflere ekle"
 
 msgid "add bookmark"
-msgstr "yer imlerine ekle"
+msgstr "yer imi ekle"
 
 msgid "add bouquet"
-msgstr "bukete ekle"
+msgstr "yeni buket oluştur"
 
 msgid "add directory to playlist"
 msgstr "klasörü oynatma listesine ekle"
@@ -4176,16 +4324,16 @@ msgid "add marker"
 msgstr "işaret ekle"
 
 msgid "add recording (enter recording duration)"
-msgstr "kayıt ekle (kayıt süresi belirleyerek)"
+msgstr "kaydet (kayıt süresi belirleyerek)"
 
 msgid "add recording (enter recording endtime)"
-msgstr "kayıt ekle (kayıt bitiş zamanını girerek)"
+msgstr "kaydet (kayıt bitiş zamanı girerek)"
 
 msgid "add recording (indefinitely)"
-msgstr "kayıt ekle (süresiz)"
+msgstr "kaydet (süresiz)"
 
 msgid "add recording (stop after current event)"
-msgstr "kayıt ekle (geçerli EPG olayı bitene kadar)"
+msgstr "kaydet (geçerli EPG programı bitene kadar)"
 
 msgid "add service to bouquet"
 msgstr "kanalı bukete ekle"
@@ -4209,6 +4357,12 @@ msgstr ""
 "Belirtilen yedeği geri yüklemek\n"
 "istediğinizden emin misiniz?:\n"
 
+msgid "assigned CAIds"
+msgstr ""
+
+msgid "assigned Services/Provider"
+msgstr ""
+
 #, python-format
 msgid "audio track (%s) format"
 msgstr "(%s) ses izi biçimi"
@@ -4296,6 +4450,9 @@ msgstr "günlük"
 msgid "day"
 msgstr "gün"
 
+msgid "delete"
+msgstr "sil"
+
 msgid "delete cut"
 msgstr "kesimi sil"
 
@@ -4330,7 +4487,7 @@ msgid "do nothing"
 msgstr "birşey yapma"
 
 msgid "don't record"
-msgstr "keydetme"
+msgstr "kaydetme"
 
 msgid "done!"
 msgstr "tamamlandı!"
@@ -4469,6 +4626,9 @@ msgstr ""
 msgid "init module"
 msgstr "modülü başlat"
 
+msgid "init modules"
+msgstr ""
+
 msgid "insert mark here"
 msgstr "buraya işaret koy"
 
@@ -4574,9 +4734,18 @@ msgstr "Hafızadaki sonraki kanal"
 msgid "no"
 msgstr "hayır"
 
+msgid "no CAId selected"
+msgstr ""
+
+msgid "no CI slots found"
+msgstr ""
+
 msgid "no HDD found"
 msgstr "HDD bulunamadı"
 
+msgid "no module"
+msgstr ""
+
 msgid "no module found"
 msgstr "modül bulunamadı"
 
@@ -4650,7 +4819,7 @@ msgid "please press OK when ready"
 msgstr "Lütfen hazır olduğunuzda OK'a basın"
 
 msgid "please wait, loading picture..."
-msgstr "resim/fotoğraf yükleniyor, lütfen bekleyiniz..."
+msgstr "fotoğraf yükleniyor, lütfen bekleyin..."
 
 msgid "previous channel"
 msgstr "Önceki kanal"
@@ -4749,6 +4918,9 @@ msgstr "seç"
 msgid "select .NFI flash file"
 msgstr ".NFI flaş dosyası seçin"
 
+msgid "select CAId"
+msgstr ""
+
 msgid "select image from server"
 msgstr "imajı sunucudan seç"
 
@@ -4798,7 +4970,7 @@ msgid "show second selected tag"
 msgstr "seçili ikinci etiketi göster"
 
 msgid "show shutdown menu"
-msgstr "kapatma menüsünü göster"
+msgstr "kapatma menüsü"
 
 msgid "show single service EPG..."
 msgstr "Kanal EPG'sini göster..."
@@ -4966,13 +5138,6 @@ msgstr "değiştir"
 msgid "zapped"
 msgstr "kanal değiştirildi"
 
-#~ msgid ""
-#~ "\n"
-#~ "Enigma2 will restart after the restore"
-#~ msgstr ""
-#~ "\n"
-#~ "Enigma2 geri yüklemeden sonra yeniden başlatılacak"
-
 #~ msgid "\"?"
 #~ msgstr "\"?"
 
@@ -4995,6 +5160,9 @@ msgstr "kanal değiştirildi"
 #~ msgid "All..."
 #~ msgstr "Tümü..."
 
+#~ msgid "An error occured!"
+#~ msgstr "Bir hata oluştu!"
+
 #~ msgid ""
 #~ "Are you sure you want to enable WLAN support?\n"
 #~ "Connect your Wlan USB Stick to your Dreambox and press OK.\n"
@@ -5038,6 +5206,12 @@ msgstr "kanal değiştirildi"
 #~ msgid "Connect to the Internet with your local LAN"
 #~ msgstr "Internete yerel ağ donanımı ile bağlanın"
 
+#~ msgid "Console"
+#~ msgstr "Konsol"
+
+#~ msgid "Console..."
+#~ msgstr "Konsol..."
+
 #~ msgid "Copying USB flasher boot image to stick..."
 #~ msgstr "Önyükleme yapabilir USB flaşlayıcı imajı belleğe kopyalanıyor..."
 
@@ -5414,9 +5588,6 @@ msgstr "kanal değiştirildi"
 #~ msgid "color"
 #~ msgstr "renk"
 
-#~ msgid "delete"
-#~ msgstr "sil"
-
 #~ msgid "equal to Socket A"
 #~ msgstr "Soket A'ya eşit"
 
diff --git a/skin.py b/skin.py
index 6baf6b71df836215a2b33558066287fbfab484b0..a37716f1e1f2be0ddbbcacbe4fe206063d33e4b3 100644 (file)
--- a/skin.py
+++ b/skin.py
@@ -26,10 +26,10 @@ def dump(x, i=0):
 
 class SkinError(Exception):
        def __init__(self, message):
-               self.message = message
+               self.msg = message
 
        def __str__(self):
-               return "{%s}: %s" % (config.skin.primary_skin, self.message)
+               return "{%s}: %s" % (config.skin.primary_skin, self.msg)
 
 dom_skins = [ ]
 
@@ -98,7 +98,7 @@ def collectAttributes(skinAttributes, node, skin_path_prefix=None, ignore=[]):
                attrib = a[0]
                value = a[1]
 
-               if attrib in ["pixmap", "pointer", "seek_pointer", "backgroundPixmap", "selectionPixmap"]:
+               if attrib in ("pixmap", "pointer", "seek_pointer", "backgroundPixmap", "selectionPixmap"):
                        value = resolveFilename(SCOPE_SKIN_IMAGE, value, path_prefix=skin_path_prefix)
 
                if attrib not in ignore:
@@ -131,7 +131,7 @@ def applySingleAttribute(guiObject, desktop, attrib, value, scale = ((1,1),(1,1)
                        guiObject.setFont(parseFont(value, scale))
                elif attrib == 'zPosition':
                        guiObject.setZPosition(int(value))
-               elif attrib in ["pixmap", "backgroundPixmap", "selectionPixmap"]:
+               elif attrib in ("pixmap", "backgroundPixmap", "selectionPixmap"):
                        ptr = loadPixmap(value, desktop) # this should already have been filename-resolved.
                        if attrib == "pixmap":
                                guiObject.setPixmap(ptr)
index fd5bb5afe00e6655ce1c0ccc28df57a06d6a95c4..64df9c8854780ffb4b19732d5425d62667afc67e 100644 (file)
--- a/timer.py
+++ b/timer.py
@@ -222,7 +222,7 @@ class Timer:
                min = int(time()) + self.MaxWaitTime
                
                # calculate next activation point
-               if len(self.timer_list):
+               if self.timer_list:
                        w = self.timer_list[0].getNextActivation()
                        if w < min:
                                min = w
@@ -278,5 +278,5 @@ class Timer:
                t = int(time()) + 1
                
                # we keep on processing the first entry until it goes into the future.
-               while len(self.timer_list) and self.timer_list[0].getNextActivation() < t:
+               while self.timer_list and self.timer_list[0].getNextActivation() < t:
                        self.doActivate(self.timer_list[0])