Merge branch 'master' of git.opendreambox.org:/git/enigma2 into acid-burn/network_cha...
authorMladen Horvat <acid-burn@opendreambox.org>
Wed, 13 Apr 2011 14:17:43 +0000 (16:17 +0200)
committerMladen Horvat <acid-burn@opendreambox.org>
Wed, 13 Apr 2011 14:17:43 +0000 (16:17 +0200)
16 files changed:
lib/driver/rcsdl.cpp
lib/dvb/db.cpp
lib/python/Components/PluginComponent.py
lib/python/Components/config.py
lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py
lib/python/Plugins/SystemPlugins/Satfinder/plugin.py
lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py
lib/python/Screens/DefaultWizard.py
lib/python/Screens/InputBox.py
lib/python/Screens/ScanSetup.py
lib/python/Screens/Screen.py
lib/python/Screens/ServiceInfo.py
lib/python/Tools/Directories.py
lib/python/Tools/Transponder.py
lib/python/connections.h
mytest.py

index 145b23c..0705cb0 100644 (file)
@@ -1,3 +1,4 @@
+#include <lib/base/etrace.h>
 #include <lib/driver/rcsdl.h>
 //#include <lib/actions/action.h>
 #include <lib/base/init.h>
@@ -18,6 +19,8 @@ eSDLInputDevice::~eSDLInputDevice()
 
 void eSDLInputDevice::handleCode(long arg)
 {
+       D_ENTER();
+
        const SDL_KeyboardEvent *event = (const SDL_KeyboardEvent *)arg;
        const SDL_keysym *key = &event->keysym;
        int km = input->getKeyboardMode();
@@ -32,48 +35,43 @@ void eSDLInputDevice::handleCode(long arg)
 
        if (km == eRCInput::kmNone) {
                code = translateKey(key->sym);
+               D_PRINT("translated code: %d", code);
        } else {
-               // ASCII keys should only generate key press events
-               if (flags == eRCKey::flagBreak)
-                       return;
-
-               eDebug("unicode=%04x scancode=%02x", m_unicode, key->scancode);
-               if (m_unicode & 0xff80) {
-                       eDebug("SDL: skipping unicode character");
-                       return;
-               }
-               code = m_unicode & ~0xff80;
-               // unicode not set...!? use key symbol
-               if (code == 0) {
-                       // keysym is ascii
-                       if (key->sym >= 128) {
-                               eDebug("SDL: cannot emulate ASCII");
-                               return;
-                       }
-                       eDebug("SDL: emulate ASCII");
+               code = m_unicode;
+               D_PRINT("native virtual code: %d / sym: %d", code, key->sym);
+               if ((code == 0) && (key->sym < 128)) {
                        code = key->sym;
+                       D_PRINT("ASCII code: %u", code);
                }
-               if (km == eRCInput::kmAscii) {
-                       // skip ESC c or ESC '[' c
-                       if (m_escape) {
-                               if (code != '[')
-                                       m_escape = false;
-                               return;
-                       }
 
-                       if (code == SDLK_ESCAPE)
-                               m_escape = true;
+               if ((km == eRCInput::kmAscii) &&
+                   ((code < SDLK_SPACE) ||
+                    (code == 0x7e) ||
+                    (code == SDLK_DELETE) ||
+                    (code > 255))) {
+                       code = translateKey(key->sym);
+               } else {
+                       // ASCII keys should only generate key press events
+                       if (flags == eRCKey::flagBreak)
+                               D_RETURN();
 
-                       if ((code < SDLK_SPACE) ||
-                           (code == 0x7e) ||   // really?
-                           (code == SDLK_DELETE))
-                               return;
+                       if (km == eRCInput::kmAscii) {
+                               // skip ESC c or ESC '[' c
+                               if (m_escape) {
+                                       if (code != '[')
+                                               m_escape = false;
+                                       D_RETURN();
+                               }
+                               if (code == SDLK_ESCAPE)
+                                       m_escape = true;
+                       }
+                       flags |= eRCKey::flagAscii;
                }
-               flags |= eRCKey::flagAscii;
        }
 
-       eDebug("SDL code=%d flags=%d", code, flags);
+       D_PRINT("code=%d (%#x) flags=%d (%#x)", code, code, flags, flags);
        input->keyPressed(eRCKey(this, code, flags));
+       D_RETURN();
 }
 
 const char *eSDLInputDevice::getDescription() const
index 522035e..0547407 100644 (file)
@@ -325,19 +325,11 @@ void eDVBDB::loadServicelist(const char *file)
 {
        eDebug("---- opening lame channel db");
        FILE *f=fopen(file, "rt");
-       if (!f && strcmp(file, eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str()) == 0)
-       {
-               struct stat s;
-               if ( !stat("lamedb", &s) )
-               {
-                       if ( !stat(eEnv::resolve("${sysconfdir}/enigma2").c_str(), &s) )
-                       {
-                               rename("lamedb", eEnv::resolve("${sysconfdir}/enigma2/lamedb").c_str());
-                               reloadServicelist();
-                       }
-               }
+       if (!f) {
+               eDebug("can't open %s: %m", file);
                return;
        }
+
        char line[256];
        int version=3;
        if ((!fgets(line, 256, f)) || sscanf(line, "eDVB services /%d/", &version) != 1)
@@ -623,24 +615,16 @@ void eDVBDB::loadBouquet(const char *path)
        p+=path;
        eDebug("loading bouquet... %s", p.c_str());
        FILE *fp=fopen(p.c_str(), "rt");
-       int entries=0;
        if (!fp)
        {
-               struct stat s;
-               if ( !stat(path, &s) )
-               {
-                       rename(path, p.c_str() );
-                       loadBouquet(path);
-                       return;
-               }
-               eDebug("failed to open.");
-               if ( strstr(path, "bouquets.tv") )
+               eDebug("can't open %s: %m", p.c_str());
+               if (!strcmp(path, "bouquets.tv"))
                {
                        eDebug("recreate bouquets.tv");
                        bouquet.m_bouquet_name="Bouquets (TV)";
                        bouquet.flushChanges();
                }
-               else if ( strstr(path, "bouquets.radio") )
+               else if (!strcmp(path, "bouquets.radio"))
                {
                        eDebug("recreate bouquets.radio");
                        bouquet.m_bouquet_name="Bouquets (Radio)";
@@ -648,6 +632,7 @@ void eDVBDB::loadBouquet(const char *path)
                }
                return;
        }
+       int entries=0;
        char line[256];
        bool read_descr=false;
        eServiceReference *e = NULL;
index c6ad584..b06246b 100755 (executable)
@@ -49,7 +49,6 @@ class PluginComponent:
                        directory_category = directory + c
                        if not os_path.isdir(directory_category):
                                continue
-                       open(directory_category + "/__init__.py", "a").close()
                        for pluginname in os_listdir(directory_category):
                                path = directory_category + "/" + pluginname
                                if os_path.isdir(path):
index 6e56085..5507cae 100755 (executable)
@@ -1661,9 +1661,12 @@ class Config(ConfigSubsection):
 
        def saveToFile(self, filename):
                text = self.pickle()
-               f = open(filename, "w")
-               f.write(text)
-               f.close()
+               try:
+                       f = open(filename, "w")
+                       f.write(text)
+                       f.close()
+               except IOError:
+                       print "Config: Couldn't write %s" % filename
 
        def loadFromFile(self, filename, base_file=False):
                f = open(filename, "r")
index be246db..e097117 100644 (file)
@@ -441,15 +441,15 @@ class TunerScreen(ScanSetup):
                                self.scan_sat.system.value = eDVBFrontendParametersSatellite.System_DVB_S
                        self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency))
                        self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion))
-                       self.list.append(getConfigListEntry(_('Symbol Rate'), self.scan_sat.symbolrate))
-                       self.list.append(getConfigListEntry(_("Polarity"), self.scan_sat.polarization))
+                       self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate))
+                       self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization))
                        if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S:
                                self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec))
                        elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2:
                                self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2))
                                self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation)
                                self.list.append(self.modulationEntry)
-                               self.list.append(getConfigListEntry(_('Rolloff'), self.scan_sat.rolloff))
+                               self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff))
                                self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
                elif tuning.type.value == "predefined_transponder":
                        self.list.append(getConfigListEntry(_("Transponder"), tuning.transponder))
index e737466..e611ca5 100644 (file)
@@ -79,15 +79,15 @@ class Satfinder(ScanSetup):
                                self.scan_sat.system.value = eDVBFrontendParametersSatellite.System_DVB_S
                        self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency))
                        self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion))
-                       self.list.append(getConfigListEntry(_('Symbol Rate'), self.scan_sat.symbolrate))
-                       self.list.append(getConfigListEntry(_("Polarity"), self.scan_sat.polarization))
+                       self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate))
+                       self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization))
                        if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S:
                                self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec))
                        elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2:
                                self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2))
                                self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation)
                                self.list.append(self.modulationEntry)
-                               self.list.append(getConfigListEntry(_('Rolloff'), self.scan_sat.rolloff))
+                               self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff))
                                self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
                elif self.tuning_transponder and self.tuning_type.value == "predefined_transponder":
                        self.list.append(getConfigListEntry(_("Transponder"), self.tuning_transponder))
index dc4e8c5..6ecbfd4 100644 (file)
@@ -196,10 +196,12 @@ class VideoHardware:
                print "saveMode", port, mode, rate
                config.av.videoport.value = port
                config.av.videoport.save()
-               config.av.videomode[port].value = mode
-               config.av.videomode[port].save()
-               config.av.videorate[mode].value = rate
-               config.av.videorate[mode].save()
+               if port in config.av.videomode:
+                       config.av.videomode[port].value = mode
+                       config.av.videomode[port].save()
+               if mode in config.av.videorate:
+                       config.av.videorate[mode].value = rate
+                       config.av.videorate[mode].save()
 
        def isPortAvailable(self, port):
                # fixme
index 73b07ac..54e241d 100644 (file)
@@ -25,9 +25,10 @@ class DefaultWizard(WizardLanguage, DreamInfoHandler):
                self["arrowup2"] = MovingPixmap()
        
        def setDirectory(self):
-               os_system("mount %s %s" % (resolveFilename(SCOPE_DEFAULTPARTITION), resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)))
                self.directory = resolveFilename(SCOPE_DEFAULTPARTITIONMOUNTDIR)
                self.xmlfile = "defaultwizard.xml"
+               if self.directory:
+                       os_system("mount %s %s" % (resolveFilename(SCOPE_DEFAULTPARTITION), self.directory))
         
        def markDone(self):
                config.misc.defaultchosen.value = 0
index 61ce356..7dd7b12 100644 (file)
@@ -41,9 +41,11 @@ class InputBox(Screen):
                        "9": self.keyNumberGlobal,
                        "0": self.keyNumberGlobal
                }, -1)
+
                if self["input"].type == Input.TEXT:
-                       rcinput = eRCInput.getInstance()
-                       rcinput.setKeyboardMode(rcinput.kmAscii)
+                       self.onExecBegin.append(self.setKeyboardModeAscii)
+               else:
+                       self.onExecBegin.append(self.setKeyboardModeNone)
 
        def gotAsciiCode(self):
                self["input"].handleAscii(getPrevAsciiCode())
@@ -61,13 +63,9 @@ class InputBox(Screen):
                self["input"].delete()
 
        def go(self):
-               rcinput = eRCInput.getInstance()
-               rcinput.setKeyboardMode(rcinput.kmNone)
                self.close(self["input"].getText())
 
        def cancel(self):
-               rcinput = eRCInput.getInstance()
-               rcinput.setKeyboardMode(rcinput.kmNone)
                self.close(None)
 
        def keyHome(self):
@@ -142,19 +140,13 @@ class PinInput(InputBox):
                                pass
        
        def closePinWrong(self, *args):
-               rcinput = eRCInput.getInstance()
-               rcinput.setKeyboardMode(rcinput.kmNone)
                print "args:", args
                self.close(False)
                
        def closePinCorrect(self, *args):
-               rcinput = eRCInput.getInstance()
-               rcinput.setKeyboardMode(rcinput.kmNone)
                self.close(True)
                
        def closePinCancel(self, *args):
-               rcinput = eRCInput.getInstance()
-               rcinput.setKeyboardMode(rcinput.kmNone)
                self.close(None)
                        
        def cancel(self):
index f9263d8..f8bfeb7 100644 (file)
@@ -361,15 +361,15 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                self.list.append(getConfigListEntry(_('Satellite'), self.scan_satselection[index_to_scan]))
                                self.list.append(getConfigListEntry(_('Frequency'), self.scan_sat.frequency))
                                self.list.append(getConfigListEntry(_('Inversion'), self.scan_sat.inversion))
-                               self.list.append(getConfigListEntry(_('Symbol Rate'), self.scan_sat.symbolrate))
-                               self.list.append(getConfigListEntry(_("Polarity"), self.scan_sat.polarization))
+                               self.list.append(getConfigListEntry(_('Symbol rate'), self.scan_sat.symbolrate))
+                               self.list.append(getConfigListEntry(_('Polarization'), self.scan_sat.polarization))
                                if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S:
                                        self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec))
                                elif self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S2:
                                        self.list.append(getConfigListEntry(_("FEC"), self.scan_sat.fec_s2))
                                        self.modulationEntry = getConfigListEntry(_('Modulation'), self.scan_sat.modulation)
                                        self.list.append(self.modulationEntry)
-                                       self.list.append(getConfigListEntry(_('Rolloff'), self.scan_sat.rolloff))
+                                       self.list.append(getConfigListEntry(_('Roll-off'), self.scan_sat.rolloff))
                                        self.list.append(getConfigListEntry(_('Pilot'), self.scan_sat.pilot))
                        elif self.scan_type.value == "single_satellite":
                                self.updateSatList()
@@ -391,7 +391,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                        if self.scan_typecable.value == "single_transponder":
                                self.list.append(getConfigListEntry(_("Frequency"), self.scan_cab.frequency))
                                self.list.append(getConfigListEntry(_("Inversion"), self.scan_cab.inversion))
-                               self.list.append(getConfigListEntry(_("Symbol Rate"), self.scan_cab.symbolrate))
+                               self.list.append(getConfigListEntry(_("Symbol rate"), self.scan_cab.symbolrate))
                                self.list.append(getConfigListEntry(_("Modulation"), self.scan_cab.modulation))
                                self.list.append(getConfigListEntry(_("FEC"), self.scan_cab.fec))
                elif nim.isCompatible("DVB-T"):
@@ -399,12 +399,12 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                self.list.append(getConfigListEntry(_("Frequency"), self.scan_ter.frequency))
                                self.list.append(getConfigListEntry(_("Inversion"), self.scan_ter.inversion))
                                self.list.append(getConfigListEntry(_("Bandwidth"), self.scan_ter.bandwidth))
-                               self.list.append(getConfigListEntry(_("Code rate high"), self.scan_ter.fechigh))
-                               self.list.append(getConfigListEntry(_("Code rate low"), self.scan_ter.feclow))
+                               self.list.append(getConfigListEntry(_("Code rate HP"), self.scan_ter.fechigh))
+                               self.list.append(getConfigListEntry(_("Code rate LP"), self.scan_ter.feclow))
                                self.list.append(getConfigListEntry(_("Modulation"), self.scan_ter.modulation))
                                self.list.append(getConfigListEntry(_("Transmission mode"), self.scan_ter.transmission))
-                               self.list.append(getConfigListEntry(_("Guard interval mode"), self.scan_ter.guard))
-                               self.list.append(getConfigListEntry(_("Hierarchy mode"), self.scan_ter.hierarchy))
+                               self.list.append(getConfigListEntry(_("Guard interval"), self.scan_ter.guard))
+                               self.list.append(getConfigListEntry(_("Hierarchy info"), self.scan_ter.hierarchy))
                self.list.append(getConfigListEntry(_("Network scan"), self.scan_networkScan))
                self.list.append(getConfigListEntry(_("Clear before scan"), self.scan_clearallservices))
                self.list.append(getConfigListEntry(_("Only Free scan"), self.scan_onlyfree))
@@ -557,8 +557,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                (eDVBFrontendParametersSatellite.System_DVB_S2, _("DVB-S2"))])
                        self.scan_sat.frequency = ConfigInteger(default = defaultSat["frequency"], limits = (1, 99999))
                        self.scan_sat.inversion = ConfigSelection(default = defaultSat["inversion"], choices = [
-                               (eDVBFrontendParametersSatellite.Inversion_Off, _("off")),
-                               (eDVBFrontendParametersSatellite.Inversion_On, _("on")),
+                               (eDVBFrontendParametersSatellite.Inversion_Off, _("Off")),
+                               (eDVBFrontendParametersSatellite.Inversion_On, _("On")),
                                (eDVBFrontendParametersSatellite.Inversion_Unknown, _("Auto"))])
                        self.scan_sat.symbolrate = ConfigInteger(default = defaultSat["symbolrate"], limits = (1, 99999))
                        self.scan_sat.polarization = ConfigSelection(default = defaultSat["polarization"], choices = [
@@ -592,15 +592,15 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                (eDVBFrontendParametersSatellite.RollOff_alpha_0_25, "0.25"),
                                (eDVBFrontendParametersSatellite.RollOff_alpha_0_20, "0.20")])
                        self.scan_sat.pilot = ConfigSelection(default = defaultSat.get("pilot", eDVBFrontendParametersSatellite.Pilot_Unknown), choices = [
-                               (eDVBFrontendParametersSatellite.Pilot_Off, _("off")),
-                               (eDVBFrontendParametersSatellite.Pilot_On, _("on")),
+                               (eDVBFrontendParametersSatellite.Pilot_Off, _("Off")),
+                               (eDVBFrontendParametersSatellite.Pilot_On, _("On")),
                                (eDVBFrontendParametersSatellite.Pilot_Unknown, _("Auto"))])
 
                        # cable
                        self.scan_cab.frequency = ConfigInteger(default = defaultCab["frequency"], limits = (50, 999))
                        self.scan_cab.inversion = ConfigSelection(default = defaultCab["inversion"], choices = [
-                               (eDVBFrontendParametersCable.Inversion_Off, _("off")),
-                               (eDVBFrontendParametersCable.Inversion_On, _("on")),
+                               (eDVBFrontendParametersCable.Inversion_Off, _("Off")),
+                               (eDVBFrontendParametersCable.Inversion_On, _("On")),
                                (eDVBFrontendParametersCable.Inversion_Unknown, _("Auto"))])
                        self.scan_cab.modulation = ConfigSelection(default = defaultCab["modulation"], choices = [
                                (eDVBFrontendParametersCable.Modulation_QAM16, "16-QAM"),
@@ -622,8 +622,8 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                        # terrestial
                        self.scan_ter.frequency = ConfigInteger(default = 466000, limits = (50000, 999000))
                        self.scan_ter.inversion = ConfigSelection(default = defaultTer["inversion"], choices = [
-                               (eDVBFrontendParametersTerrestrial.Inversion_Off, _("off")),
-                               (eDVBFrontendParametersTerrestrial.Inversion_On, _("on")),
+                               (eDVBFrontendParametersTerrestrial.Inversion_Off, _("Off")),
+                               (eDVBFrontendParametersTerrestrial.Inversion_On, _("On")),
                                (eDVBFrontendParametersTerrestrial.Inversion_Unknown, _("Auto"))])
                        # WORKAROUND: we can't use BW-auto
                        self.scan_ter.bandwidth = ConfigSelection(default = defaultTer["bandwidth"], choices = [
index f0bf773..4a0accd 100644 (file)
@@ -6,6 +6,8 @@ profile("LOAD:Source")
 from Components.Sources.Source import Source
 profile("LOAD:GUIComponent")
 from Components.GUIComponent import GUIComponent
+profile("LOAD:eRCInput")
+from enigma import eRCInput
 
 class Screen(dict, GUISkin):
 
@@ -46,6 +48,24 @@ class Screen(dict, GUISkin):
                # stand alone screens (for example web screens)
                # don't care about having or not having focus.
                self.stand_alone = False
+               self.keyboardMode = None
+
+       def saveKeyboardMode(self):
+               rcinput = eRCInput.getInstance()
+               self.keyboardMode = rcinput.getKeyboardMode()
+
+       def setKeyboardModeAscii(self):
+               rcinput = eRCInput.getInstance()
+               rcinput.setKeyboardMode(rcinput.kmAscii)
+
+       def setKeyboardModeNone(self):
+               rcinput = eRCInput.getInstance()
+               rcinput.setKeyboardMode(rcinput.kmNone)
+
+       def restoreKeyboardMode(self):
+               rcinput = eRCInput.getInstance()
+               if self.keyboardMode is not None:
+                       rcinput.setKeyboardMode(self.keyboardMode)
 
        def execBegin(self):
                self.active_components = [ ]
index fa2f447..61885df 100644 (file)
@@ -81,9 +81,9 @@ class ServiceInfo(Screen):
                        self.feinfo = None
                else:
                        self.type = TYPE_SERVICE_INFO
-                       self["red"] = Label(_("Serviceinfo"))
+                       self["red"] = Label(_("Service"))
                        self["green"] = Label(_("PIDs"))
-                       self["yellow"] = Label(_("Transponder"))
+                       self["yellow"] = Label(_("Multiplex"))
                        self["blue"] = Label(_("Tuner status"))
                        service = session.nav.getCurrentService()
                        if service is not None:
@@ -105,63 +105,63 @@ class ServiceInfo(Screen):
                                name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
                                refstr = self.session.nav.getCurrentlyPlayingServiceReference().toString()
                        else:
-                               name = "N/A"
-                               refstr = "N/A"
+                               name = _("N/A")
+                               refstr = _("N/A")
                        aspect = self.getServiceInfoValue(iServiceInformation.sAspect)
                        if aspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ):
-                               aspect = "4:3"
+                               aspect = _("4:3")
                        else:
-                               aspect = "16:9"
+                               aspect = _("16:9")
                        width = self.info and self.info.getInfo(iServiceInformation.sVideoWidth) or -1
                        height = self.info and self.info.getInfo(iServiceInformation.sVideoHeight) or -1
                        if width != -1 and height != -1:
-                               Labels = ( ("Name", name, TYPE_TEXT),
-                                                  ("Provider", self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
-                                                  ("Videoformat", aspect, TYPE_TEXT),
-                                                  ("Videosize", "%dx%d" %(width, height), TYPE_TEXT),
-                                                  ("Namespace", self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
-                                                  ("Service Reference", refstr, TYPE_TEXT))
+                               Labels = ( (_("Name"), name, TYPE_TEXT),
+                                                  (_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
+                                                  (_("Aspect ratio"), aspect, TYPE_TEXT),
+                                                  (_("Resolution"), "%dx%d" %(width, height), TYPE_TEXT),
+                                                  (_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
+                                                  (_("Service reference"), refstr, TYPE_TEXT))
                        else:
-                               Labels = ( ("Name", name, TYPE_TEXT),
-                                                  ("Provider", self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
-                                                  ("Videoformat", aspect, TYPE_TEXT),
-                                                  ("Namespace", self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
-                                                  ("Service Reference", refstr, TYPE_TEXT))
+                               Labels = ( (_("Name"), name, TYPE_TEXT),
+                                                  (_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
+                                                  (_("Aspect ratio"), aspect, TYPE_TEXT),
+                                                  (_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
+                                                  (_("Service reference"), refstr, TYPE_TEXT))
                        self.fillList(Labels)
                else:
                        if self.transponder_info:
                                tp_info = ConvertToHumanReadable(self.transponder_info)
-                               conv = { "tuner_type"           : _("Transponder Type"),
-                                                "system"                       : _("System"),
-                                                "modulation"           : _("Modulation"),
-                                                "orbital_position" : _("Orbital Position"),
-                                                "frequency"            : _("Frequency"),
-                                                "symbol_rate"          : _("Symbolrate"),
-                                                "bandwidth"            : _("Bandwidth"),
-                                                "polarization"         : _("Polarization"),
-                                                "inversion"            : _("Inversion"),
-                                                "pilot"                        : _("Pilot"),
-                                                "rolloff"                      : _("Rolloff"),
-                                                "fec_inner"            : _("FEC"),
-                                                "code_rate_lp"         : _("Coderate LP"),
-                                                "code_rate_hp"         : _("Coderate HP"),
-                                                "constellation"        : _("Constellation"),
-                                                "transmission_mode": _("Transmission Mode"),
-                                                "guard_interval"       : _("Guard Interval"),
-                                                "hierarchy_information": _("Hierarchy Information") }
+                               conv = { "tuner_type"                   : _("Type"),
+                                        "system"                       : _("System"),
+                                        "modulation"                   : _("Modulation"),
+                                        "orbital_position"             : _("Orbital position"),
+                                        "frequency"                    : _("Frequency"),
+                                        "symbol_rate"                  : _("Symbol rate"),
+                                        "bandwidth"                    : _("Bandwidth"),
+                                        "polarization"                 : _("Polarization"),
+                                        "inversion"                    : _("Inversion"),
+                                        "pilot"                        : _("Pilot"),
+                                        "rolloff"                      : _("Roll-off"),
+                                        "fec_inner"                    : _("FEC"),
+                                        "code_rate_lp"                 : _("Code rate LP"),
+                                        "code_rate_hp"                 : _("Code rate HP"),
+                                        "constellation"                : _("Constellation"),
+                                        "transmission_mode"            : _("Transmission mode"),
+                                        "guard_interval"               : _("Guard interval"),
+                                        "hierarchy_information"        : _("Hierarchy info") }
                                Labels = [(conv[i], tp_info[i], TYPE_VALUE_DEC) for i in tp_info.keys()]
                                self.fillList(Labels)
 
        def pids(self):
                if self.type == TYPE_SERVICE_INFO:
-                       Labels = ( ("VideoPID", self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("AudioPID", self.getServiceInfoValue(iServiceInformation.sAudioPID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("PCRPID", self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("PMTPID", self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("TXTPID", self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("TSID", self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("ONID", self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
-                                          ("SID", self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4))
+                       Labels = ( (_("Video PID"), self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("Audio PID"), self.getServiceInfoValue(iServiceInformation.sAudioPID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("PCR PID"), self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("PMT PID"), self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("TXT PID"), self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("TSID"), self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("ONID"), self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
+                                          (_("SID"), self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4))
                        self.fillList(Labels)
        
        def showFrontendData(self, real):
@@ -182,37 +182,38 @@ 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),
-                                                       ("Type", frontendData["system"], TYPE_TEXT),
-                                                       ("Modulation", frontendData["modulation"], TYPE_TEXT),
-                                                       ("Orbital position", frontendData["orbital_position"], TYPE_VALUE_DEC),
-                                                       ("Frequency", frontendData["frequency"], TYPE_VALUE_DEC),
-                                                       ("Symbolrate", frontendData["symbol_rate"], TYPE_VALUE_DEC),
-                                                       ("Polarization", frontendData["polarization"], TYPE_TEXT),
-                                                       ("Inversion", frontendData["inversion"], TYPE_TEXT),
-                                                       ("FEC inner", frontendData["fec_inner"], TYPE_TEXT),
-                                                       ("Pilot", frontendData.get("pilot", None), TYPE_TEXT),
-                                                       ("Rolloff", frontendData.get("rolloff", None), TYPE_TEXT))
+                               return ((_("NIM"), ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
+                                               (_("Type"), frontendData["tuner_type"], TYPE_TEXT),
+                                               (_("System"), frontendData["system"], TYPE_TEXT),
+                                               (_("Modulation"), frontendData["modulation"], TYPE_TEXT),
+                                               (_("Orbital position"), frontendData["orbital_position"], TYPE_VALUE_DEC),
+                                               (_("Frequency"), frontendData["frequency"], TYPE_VALUE_DEC),
+                                               (_("Symbol rate"), frontendData["symbol_rate"], TYPE_VALUE_DEC),
+                                               (_("Polarization"), frontendData["polarization"], TYPE_TEXT),
+                                               (_("Inversion"), frontendData["inversion"], TYPE_TEXT),
+                                               (_("FEC"), frontendData["fec_inner"], TYPE_TEXT),
+                                               (_("Pilot"), frontendData.get("pilot", None), TYPE_TEXT),
+                                               (_("Roll-off"), frontendData.get("rolloff", None), TYPE_TEXT))
                        elif frontendDataOrg["tuner_type"] == "DVB-C":
-                               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),
-                                               ("Modulation", frontendData["modulation"], TYPE_TEXT),
-                                               ("Inversion", frontendData["inversion"], TYPE_TEXT),
-                                               ("FEC inner", frontendData["fec_inner"], TYPE_TEXT))
+                               return ((_("NIM"), ('A', 'B', 'C', 'D')[frontendData["tuner_number"]], TYPE_TEXT),
+                                               (_("Type"), frontendData["tuner_type"], TYPE_TEXT),
+                                               (_("Modulation"), frontendData["modulation"], TYPE_TEXT),
+                                               (_("Frequency"), frontendData["frequency"], TYPE_VALUE_DEC),
+                                               (_("Symbol rate"), frontendData["symbol_rate"], TYPE_VALUE_DEC),
+                                               (_("Inversion"), frontendData["inversion"], TYPE_TEXT),
+                                               (_("FEC"), frontendData["fec_inner"], TYPE_TEXT))
                        elif frontendDataOrg["tuner_type"] == "DVB-T":
-                               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),
-                                               ("Bandwidth", frontendData["bandwidth"], TYPE_VALUE_DEC),
-                                               ("CodeRateLP", frontendData["code_rate_lp"], TYPE_TEXT),
-                                               ("CodeRateHP", frontendData["code_rate_hp"], TYPE_TEXT),
-                                               ("Constellation", frontendData["constellation"], TYPE_TEXT),
-                                               ("Transmission Mode", frontendData["transmission_mode"], TYPE_TEXT),
-                                               ("Guard Interval", frontendData["guard_interval"], TYPE_TEXT),
-                                               ("Hierarchy Inform.", frontendData["hierarchy_information"], 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),
+                                               (_("Bandwidth"), frontendData["bandwidth"], TYPE_VALUE_DEC),
+                                               (_("Code rate LP"), frontendData["code_rate_lp"], TYPE_TEXT),
+                                               (_("Code rate HP"), frontendData["code_rate_hp"], TYPE_TEXT),
+                                               (_("Constellation"), frontendData["constellation"], TYPE_TEXT),
+                                               (_("Transmission mode"), frontendData["transmission_mode"], TYPE_TEXT),
+                                               (_("Guard interval"), frontendData["guard_interval"], TYPE_TEXT),
+                                               (_("Hierarchy info"), frontendData["hierarchy_information"], TYPE_TEXT))
                return [ ]
 
        def fillList(self, Labels):
@@ -237,6 +238,6 @@ class ServiceInfo(Screen):
                if v == -2:
                        v = self.info.getInfoString(what)
                elif v == -1:
-                       v = "N/A"
+                       v = _("N/A")
 
                return v
index 8e4d004..f0ef0de 100755 (executable)
@@ -118,7 +118,11 @@ def resolveFilename(scope, base = "", path_prefix = None):
 
        if flags == PATH_CREATE:
                if not pathExists(path):
-                       mkdir(path)
+                       try:
+                               mkdir(path)
+                       except OSError:
+                               print "resolveFilename: Couldn't create %s" % path
+                               return None
 
        fallbackPath = fallbackPaths.get(scope)
 
@@ -224,12 +228,13 @@ def InitFallbackFiles():
 # returns a list of tuples containing pathname and filename matching the given pattern
 # example-pattern: match all txt-files: ".*\.txt$"
 def crawlDirectory(directory, pattern):
-       expression = compile(pattern)
        list = []
-       for root, dirs, files in walk(directory):
-               for file in files:
-                       if expression.match(file) is not None:
-                               list.append((root, file))
+       if directory:
+               expression = compile(pattern)
+               for root, dirs, files in walk(directory):
+                       for file in files:
+                               if expression.match(file) is not None:
+                                       list.append((root, file))
        return list
 
 def copyfile(src, dst):
index 6868929..0b8b96a 100644 (file)
@@ -1,4 +1,5 @@
 from enigma import eDVBFrontendParametersSatellite, eDVBFrontendParametersCable, eDVBFrontendParametersTerrestrial
+from Components.NimManager import nimmanager
 
 def ConvertToHumanReadable(tp, type = None):
        ret = { }
@@ -27,6 +28,7 @@ def ConvertToHumanReadable(tp, type = None):
                        eDVBFrontendParametersSatellite.Modulation_QPSK : "QPSK",
                        eDVBFrontendParametersSatellite.Modulation_QAM16 : "QAM16",
                        eDVBFrontendParametersSatellite.Modulation_8PSK : "8PSK"}[tp["modulation"]]
+               ret["orbital_position"] = nimmanager.getSatName(int(tp["orbital_position"]))
                ret["polarization"] = {
                        eDVBFrontendParametersSatellite.Polarisation_Horizontal : _("Horizontal"),
                        eDVBFrontendParametersSatellite.Polarisation_Vertical : _("Vertical"),
index b4cd1c7..374749a 100644 (file)
@@ -80,4 +80,23 @@ public:
        }
 };
 
+template <class R, class V0, class V1, class V2>
+class PSignal3: public PSignal, public Signal3<R,V0,V1,V2>
+{
+public:
+       R operator()(V0 a0, V1 a1, V2 a2)
+       {
+               if (m_list)
+               {
+                       PyObject *pArgs = PyTuple_New(3);
+                       PyTuple_SET_ITEM(pArgs, 0, PyFrom(a0));
+                       PyTuple_SET_ITEM(pArgs, 1, PyFrom(a1));
+                       PyTuple_SET_ITEM(pArgs, 2, PyFrom(a2));
+                       callPython(pArgs);
+                       Org_Py_DECREF(pArgs);
+               }
+               return Signal3<R,V0,V1,V2>::operator()(a0, a1, a2);
+       }
+};
+
 #endif
index 7a8d7b7..99695e0 100755 (executable)
--- a/mytest.py
+++ b/mytest.py
@@ -214,6 +214,7 @@ class Session:
                        self.summary.show()
                        c.addSummary(self.summary)
 
+               c.saveKeyboardMode()
                c.execBegin()
 
                # when execBegin opened a new dialog, don't bother showing the old one.
@@ -225,6 +226,7 @@ class Session:
                self.in_exec = False
 
                self.current_dialog.execEnd()
+               self.current_dialog.restoreKeyboardMode()
                self.current_dialog.hide()
 
                if last: