also show SNR in dB in PositionerSetup
[enigma2.git] / lib / python / Plugins / SystemPlugins / Satfinder / plugin.py
index 906504069fe167f2617bfc19e4625c0b88e63cdd..064ac673f7b9b8fdff348fef2aa866d8fca2882f 100644 (file)
@@ -39,46 +39,6 @@ class Tuner:
                        self.frontend.tune(self.lastparm)
 
 class Satfinder(ScanSetup):
-       skin = """
-               <screen position="90,100" size="520,400" title="Tune">
-                       <widget name="config" position="20,10" size="460,210" scrollbarMode="showOnDemand" />
-                       <widget name="introduction" position="20,360" zPosition="-10" size="350,30" font="Regular;23" />
-                       <eLabel text="dB:" position="23,230" size="60,22" font="Regular;21" />
-                       <eLabel text="SNR:" position="23,255" size="60,22" font="Regular;21" />
-                       <eLabel text="AGC:" position="23,280" size="60,22" font="Regular;21" />
-                       <eLabel text="BER:" position="23,305" size="60,22" font="Regular;21" />
-                       <eLabel text="Lock:" position="23,330" size="60,22" font="Regular;21" />
-                       <widget source="Frontend" render="Label" position="295,230" size="60,22" font="Regular;21" >
-                               <convert type="FrontendInfo">SNRdB</convert>
-                       </widget>
-                       <widget source="Frontend" render="Label" position="295,255" size="60,22" font="Regular;21" >
-                               <convert type="FrontendInfo">SNR</convert>
-                       </widget>
-                       <widget source="Frontend" render="Label" position="295,280" size="60,22" font="Regular;21" >
-                               <convert type="FrontendInfo">AGC</convert>
-                       </widget>
-                       <widget source="Frontend" render="Label" position="295,305" size="60,22" font="Regular;21" >
-                               <convert type="FrontendInfo">BER</convert>
-                       </widget>
-                       <widget source="Frontend" render="Progress" position="85,257" size="200,22" >
-                               <convert type="FrontendInfo">SNR</convert>
-                       </widget>
-                       <widget source="Frontend" render="Progress" position="85,282" size="200,22" >
-                               <convert type="FrontendInfo">AGC</convert>
-                       </widget>
-                       <widget source="Frontend" render="Progress" position="85,307" size="200,22" >
-                               <convert type="FrontendInfo">BER</convert>
-                       </widget>
-                       <widget source="Frontend" render="Pixmap" pixmap="skin_default/buttons/key_green.png" position="295,330" zPosition="4" size="28,20" alphatest="on" >
-                               <convert type="FrontendInfo">LOCK</convert>
-                       <convert type="ConditionalShowHide" />
-                       </widget>
-                       <widget source="Frontend" render="Pixmap" pixmap="skin_default/buttons/key_red.png" position="295,330" zPosition="4" size="28,20" alphatest="on" >
-                               <convert type="FrontendInfo">LOCK</convert>
-                       <convert type="ConditionalShowHide">Invert</convert>
-                       </widget>
-               </screen>"""
-
        def openFrontend(self):
                res_mgr = eDVBResourceManager.getInstance()
                if res_mgr:
@@ -115,6 +75,10 @@ class Satfinder(ScanSetup):
                self["introduction"].setText("")
                self["Frontend"] = FrontendStatus(frontend_source = lambda : self.frontend, update_interval = 100)
                self.initcomplete = True
+               self.onClose.append(self.__onClose)
+
+       def __onClose(self):
+               self.session.nav.playService(self.oldref)
 
        def createSetup(self):
                self.typeOfTuningEntry = None
@@ -154,10 +118,14 @@ class Satfinder(ScanSetup):
                if satpos is not None:
                        if self.tuning_type.value == "manual_transponder":
                                returnvalue = (self.scan_sat.frequency.value, self.scan_sat.symbolrate.value, self.scan_sat.polarization.index, self.scan_sat.fec.index, self.scan_sat.inversion.index, satpos)
+                               self.tune(returnvalue)
                        elif self.tuning_type.value == "predefined_transponder":
-                               transponder = nimmanager.getTransponders(satpos)[self.tuning_transponder.index]
-                               returnvalue = (int(transponder[1] / 1000), int(transponder[2] / 1000), transponder[3], transponder[4], 2, satpos)
-                       self.tune(returnvalue)
+                               tps = nimmanager.getTransponders(satpos)
+                               l = len(tps)
+                               if l > self.tuning_transponder.index:
+                                       transponder = nimmanager.getTransponders(satpos)[self.tuning_transponder.index]
+                                       returnvalue = (int(transponder[1] / 1000), int(transponder[2] / 1000), transponder[3], transponder[4], 2, satpos)
+                                       self.tune(returnvalue)
 
        def createConfig(self, foo):
                self.tuning_transponder = None
@@ -180,6 +148,7 @@ class Satfinder(ScanSetup):
                if orb_pos is not None:
                        transponderlist = nimmanager.getTransponders(orb_pos)
                        list = []
+                       default = None
                        for x in transponderlist:
                                if x[3] == 0:
                                        pol = "H"
@@ -215,8 +184,11 @@ class Satfinder(ScanSetup):
                                        fec = "FEC_None"
                                else:
                                        fec = "FEC_Unknown"
-                               list.append(str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec)
-                       self.tuning_transponder = ConfigSelection(choices = list)
+                               e = str(x[1]) + "," + str(x[2]) + "," + pol + "," + fec
+                               if default is None:
+                                       default = e
+                               list.append(e)
+                       self.tuning_transponder = ConfigSelection(choices = list, default = default)
                        self.tuning_transponder.addNotifier(self.retune, initial_call = False)
 
        def keyGo(self):
@@ -227,7 +199,8 @@ class Satfinder(ScanSetup):
                        if self.frontend:
                                self.frontend = None
                                del self.raw_channel
-                       self.session.nav.playService(self.oldref)
+               else:
+                       self.oldref = None
                self.close(None)
 
        def keyCancel(self):
@@ -241,7 +214,7 @@ class Satfinder(ScanSetup):
                        if transponder is not None:
                                self.tuner.tune(transponder)
 
-class NimSelection(Screen):
+class SatNimSelection(Screen):
        skin = """
                <screen position="140,165" size="400,100" title="select Slot">
                        <widget name="nimlist" position="20,10" size="360,75" />
@@ -278,7 +251,7 @@ def SatfinderMain(session, **kwargs):
                        if len(nimList) == 1:
                                session.open(Satfinder, nimList[0])
                        else:
-                               session.open(NimSelection)
+                               session.open(SatNimSelection)
 
 def SatfinderStart(menuid, **kwargs):
        if menuid == "scan":