From: Mladen Horvat Date: Wed, 13 Apr 2011 14:17:43 +0000 (+0200) Subject: Merge branch 'master' of git.opendreambox.org:/git/enigma2 into acid-burn/network_cha... X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=8a21c8eebc037850431ac627061e46e48e93a0ec;hp=c3c412e8765520205b7cf8413ddf8abca74f1bc3 Merge branch 'master' of git.opendreambox.org:/git/enigma2 into acid-burn/network_changes_next --- diff --git a/lib/driver/rcsdl.cpp b/lib/driver/rcsdl.cpp index 145b23c..0705cb0 100644 --- a/lib/driver/rcsdl.cpp +++ b/lib/driver/rcsdl.cpp @@ -1,3 +1,4 @@ +#include #include //#include #include @@ -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 diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 522035e..0547407 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -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; diff --git a/lib/python/Components/PluginComponent.py b/lib/python/Components/PluginComponent.py index c6ad584..b06246b 100755 --- a/lib/python/Components/PluginComponent.py +++ b/lib/python/Components/PluginComponent.py @@ -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): diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py index 6e56085..5507cae 100755 --- a/lib/python/Components/config.py +++ b/lib/python/Components/config.py @@ -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") diff --git a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py index be246db..e097117 100644 --- a/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py +++ b/lib/python/Plugins/SystemPlugins/PositionerSetup/plugin.py @@ -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)) diff --git a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py index e737466..e611ca5 100644 --- a/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py +++ b/lib/python/Plugins/SystemPlugins/Satfinder/plugin.py @@ -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)) diff --git a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py index dc4e8c5..6ecbfd4 100644 --- a/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py +++ b/lib/python/Plugins/SystemPlugins/Videomode/VideoHardware.py @@ -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 diff --git a/lib/python/Screens/DefaultWizard.py b/lib/python/Screens/DefaultWizard.py index 73b07ac..54e241d 100644 --- a/lib/python/Screens/DefaultWizard.py +++ b/lib/python/Screens/DefaultWizard.py @@ -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 diff --git a/lib/python/Screens/InputBox.py b/lib/python/Screens/InputBox.py index 61ce356..7dd7b12 100644 --- a/lib/python/Screens/InputBox.py +++ b/lib/python/Screens/InputBox.py @@ -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): diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index f9263d8..f8bfeb7 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -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 = [ diff --git a/lib/python/Screens/Screen.py b/lib/python/Screens/Screen.py index f0bf773..4a0accd 100644 --- a/lib/python/Screens/Screen.py +++ b/lib/python/Screens/Screen.py @@ -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 = [ ] diff --git a/lib/python/Screens/ServiceInfo.py b/lib/python/Screens/ServiceInfo.py index fa2f447..61885df 100644 --- a/lib/python/Screens/ServiceInfo.py +++ b/lib/python/Screens/ServiceInfo.py @@ -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 diff --git a/lib/python/Tools/Directories.py b/lib/python/Tools/Directories.py index 8e4d004..f0ef0de 100755 --- a/lib/python/Tools/Directories.py +++ b/lib/python/Tools/Directories.py @@ -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): diff --git a/lib/python/Tools/Transponder.py b/lib/python/Tools/Transponder.py index 6868929..0b8b96a 100644 --- a/lib/python/Tools/Transponder.py +++ b/lib/python/Tools/Transponder.py @@ -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"), diff --git a/lib/python/connections.h b/lib/python/connections.h index b4cd1c7..374749a 100644 --- a/lib/python/connections.h +++ b/lib/python/connections.h @@ -80,4 +80,23 @@ public: } }; +template +class PSignal3: public PSignal, public Signal3 +{ +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::operator()(a0, a1, a2); + } +}; + #endif diff --git a/mytest.py b/mytest.py index 7a8d7b7..99695e0 100755 --- 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: