add newlines at end of file
[enigma2.git] / lib / python / Plugins / SystemPlugins / DiseqcTester / plugin.py
index f997acd10b924982764d4130233f0feffde88fc4..2c8c5c389e8b5d990d1a59585e9fff6aa10c51d0 100644 (file)
@@ -15,6 +15,8 @@ from Components.Sources.StaticText import StaticText
 from Components.ConfigList import ConfigListScreen
 from Components.config import getConfigListEntry, ConfigSelection
 
+import random
+
 # always use:
 # setResultType(type)
 # setResultParameter(parameter)
@@ -58,6 +60,27 @@ class ResultParser:
                        
                        for reason in reasons.keys():
                                text += "%s: %d transponders failed\n" % (reason, len(reasons[reason]))
+                       
+                       for reason in reasons.keys():
+                               text += "\n"
+                               text += "%s previous planes:\n" % reason
+                               for transponder in reasons[reason]:
+                                       if transponder[1] is not None:
+                                               text += self.getTextualIndexRepresentation(self.getIndexForTransponder(transponder[1]))
+                                       else:
+                                               text += "No transponder tuned"
+                                       text += " ==> " + self.getTextualIndexRepresentation(self.getIndexForTransponder(transponder[0]))
+                                       text += "\n"
+               if countsuccessful > 0:
+                       text += "\n"
+                       text += "Successfully tuned transponders' previous planes:\n" 
+                       for transponder in successful:
+                               if transponder[1] is not None:
+                                       text += self.getTextualIndexRepresentation(self.getIndexForTransponder(transponder[1]))
+                               else:
+                                       text += "No transponder tuned"
+                               text += " ==> " + self.getTextualIndexRepresentation(self.getIndexForTransponder(transponder[0]))
+                               text += "\n"
                return text
 
        def getTextualResult(self):
@@ -291,6 +314,13 @@ class DiseqcTester(Screen, TuneTest, ResultParser):
                        self["overall_progress"].setRange(len(keys))
                        self["overall_progress"].setValue(self.myindex)
                        return keys[0]
+               elif self.test_type == self.TEST_TYPE_RANDOM:
+                       self.randomkeys = self.indexlist.keys()
+                       random.shuffle(self.randomkeys)
+                       self.myindex = 0
+                       self["overall_progress"].setRange(len(self.randomkeys))
+                       self["overall_progress"].setValue(self.myindex)
+                       return self.randomkeys[0]
                
        # after each index is finished, getNextIndex is called to get the next index to scan 
        def getNextIndex(self):
@@ -305,11 +335,20 @@ class DiseqcTester(Screen, TuneTest, ResultParser):
                                return keys[self.myindex]
                        else:
                                return None
-       
+               elif self.test_type == self.TEST_TYPE_RANDOM:
+                       self.myindex += 1
+                       keys = self.randomkeys
+                       
+                       self["overall_progress"].setValue(self.myindex)
+                       if self.myindex < len(keys):
+                               return keys[self.myindex]
+                       else:
+                               return None
+                               
        # after each index is finished and the next index is returned by getNextIndex
        # the algorithm checks, if we should continue scanning
        def getContinueScanning(self):
-               if self.test_type == self.TEST_TYPE_QUICK:
+               if self.test_type == self.TEST_TYPE_QUICK or self.test_type == self.TEST_TYPE_RANDOM:
                        return (self.myindex < len(self.indexlist.keys()))
                
        def addResult(self, index, status, failedTune, successfullyTune):
@@ -414,7 +453,7 @@ class DiseqcTesterTestTypeSelection(Screen, ConfigListScreen):
                self.createSetup()
                
        def createSetup(self):
-               self.testtype = ConfigSelection(choices={"quick": _("Quick")}, default = "quick")
+               self.testtype = ConfigSelection(choices={"quick": _("Quick"), "random": _("Random")}, default = "quick")
                self.testtypeEntry = getConfigListEntry(_("Test Type"), self.testtype)
                self.list.append(self.testtypeEntry)
                
@@ -485,4 +524,4 @@ def autostart(reason, **kwargs):
 
 def Plugins(**kwargs):
        return [ PluginDescriptor(name="DiSEqC Tester", description=_("Test DiSEqC settings"), where = PluginDescriptor.WHERE_PLUGINMENU, fnc=DiseqcTesterMain),
-                       PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart)]
\ No newline at end of file
+                       PluginDescriptor(where = PluginDescriptor.WHERE_AUTOSTART, fnc = autostart)]