fixes bug #258
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 6 Nov 2009 15:23:29 +0000 (16:23 +0100)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Fri, 6 Nov 2009 15:23:29 +0000 (16:23 +0100)
removed some wrong ConfigSatList handling

lib/python/Components/NimManager.py
lib/python/Components/config.py
lib/python/Screens/ScanSetup.py

index 5154e2b..4732532 100644 (file)
@@ -799,15 +799,15 @@ class NimManager:
                                dm = nim.diseqcMode.value
                                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])
+                                               list.append(nim.diseqcA.getSat())
                                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])
+                                               list.append(nim.diseqcB.getSat())
                                if dm == "diseqc_a_b_c_d":
                                        if nim.diseqcC.orbital_position != 3601:
-                                               list.append(self.satList[nim.diseqcC.index-1])
+                                               list.append(nim.diseqcC.getSat())
                                        if nim.diseqcD.orbital_position != 3601:
-                                               list.append(self.satList[nim.diseqcD.index-1])
+                                               list.append(nim.diseqcD.getSat())
                                if dm == "positioner":
                                        for x in self.satList:
                                                list.append(x)
index 49501f9..cf2c5e2 100755 (executable)
@@ -1148,15 +1148,25 @@ class ConfigSatlist(ConfigSelection):
        def __init__(self, list, default = None):
                if default is not None:
                        default = str(default)
+               list.sort(key = lambda x: int(x[0]))
+               self._satList = list
                choices = [(str(orbpos), desc) for (orbpos, desc, flags) in list]
-               choices.sort(key = lambda x: int(x[0]))
                
                ConfigSelection.__init__(self, choices = choices, default = default)
 
+       # use this function to get the orbital position, don't rely on .index
        def getOrbitalPosition(self):
                if self.value == "":
                        return None
                return int(self.value)
+       
+       def getSatList(self):
+               return self._satList
+       
+       def getSat(self):
+               return self.satList[self.index]
+       
+       satList = property(getSatList)
 
        orbital_position = property(getOrbitalPosition)
 
index d0af8f7..aed9026 100644 (file)
@@ -729,11 +729,10 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                assert len(self.scan_satselection) > index_to_scan
                                
                                nimsats = self.satList[index_to_scan]
-                               selsatidx = self.scan_satselection[index_to_scan].index
+                               orbpos = self.scan_satselection[index_to_scan].getOrbitalPosition()
 
                                # however, the satList itself could be empty. in that case, "index" is 0 (for "None").
                                if len(nimsats):
-                                       orbpos = nimsats[selsatidx][0]
                                        if self.scan_sat.system.value == eDVBFrontendParametersSatellite.System_DVB_S:
                                                fec = self.scan_sat.fec.value
                                        else:
@@ -751,7 +750,7 @@ class ScanSetup(ConfigListScreen, Screen, CableTransponderSearchSupport):
                                                                self.scan_sat.pilot.value)
                                removeAll = False
                        elif self.scan_type.value == "single_satellite":
-                               sat = self.satList[index_to_scan][self.scan_satselection[index_to_scan].index]
+                               sat = self.scan_satselection[index_to_scan].getSat()
                                getInitialTransponderList(tlist, sat[0])
                        elif self.scan_type.value.find("multisat") != -1:
                                SatList = nimmanager.getSatListForNim(index_to_scan)