1 from enigma import eDVBDB, getLinkedSlotID, isFBCLink
2 from Screen import Screen
3 from Components.SystemInfo import SystemInfo
4 from Components.ActionMap import ActionMap
5 from Components.ConfigList import ConfigListScreen
6 from Components.MenuList import MenuList
7 from Components.NimManager import nimmanager
8 from Components.config import getConfigListEntry, config, ConfigNothing, ConfigSelection, updateConfigElement,\
10 from Components.Sources.List import List
11 from Screens.MessageBox import MessageBox
12 from Screens.ChoiceBox import ChoiceBox
13 from Screens.ServiceStopScreen import ServiceStopScreen
15 from time import mktime, localtime
16 from datetime import datetime
18 from Components.PluginComponent import plugins
19 from Plugins.Plugin import PluginDescriptor
21 class NimSetup(Screen, ConfigListScreen, ServiceStopScreen):
22 def createSimpleSetup(self, list, mode):
25 list.append(getConfigListEntry(_("Satellite"), nim.diseqcA))
26 list.append(getConfigListEntry(_("Send DiSEqC"), nim.simpleSingleSendDiSEqC))
28 list.append(getConfigListEntry(_("Port A"), nim.diseqcA))
30 if mode in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
31 list.append(getConfigListEntry(_("Port B"), nim.diseqcB))
32 if mode == "diseqc_a_b_c_d":
33 list.append(getConfigListEntry(_("Port C"), nim.diseqcC))
34 list.append(getConfigListEntry(_("Port D"), nim.diseqcD))
35 if mode != "toneburst_a_b":
36 list.append(getConfigListEntry(_("Set Voltage and 22KHz"), nim.simpleDiSEqCSetVoltageTone))
37 list.append(getConfigListEntry(_("Send DiSEqC only on satellite change"), nim.simpleDiSEqCOnlyOnSatChange))
39 def createPositionerSetup(self, list):
41 list.append(getConfigListEntry(_("Longitude"), nim.longitude))
42 list.append(getConfigListEntry(" ", nim.longitudeOrientation))
43 list.append(getConfigListEntry(_("Latitude"), nim.latitude))
44 list.append(getConfigListEntry(" ", nim.latitudeOrientation))
45 if SystemInfo["CanMeasureFrontendInputPower"]:
46 self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), nim.powerMeasurement)
47 list.append(self.advancedPowerMeasurement)
48 if nim.powerMeasurement.value:
49 list.append(getConfigListEntry(_("Power threshold in mA"), nim.powerThreshold))
50 self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), nim.turningSpeed)
51 list.append(self.turningSpeed)
52 if nim.turningSpeed.value == "fast epoch":
53 self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), nim.fastTurningBegin)
54 self.turnFastEpochEnd = getConfigListEntry(_("End time"), nim.fastTurningEnd)
55 list.append(self.turnFastEpochBegin)
56 list.append(self.turnFastEpochEnd)
58 if nim.powerMeasurement.value:
59 nim.powerMeasurement.value = False
60 nim.powerMeasurement.save()
62 def createConfigMode(self):
63 if self.nim.isCompatible("DVB-S"):
64 choices = { "nothing": _("not configured"),
65 "simple": _("simple"),
66 "advanced": _("advanced")}
67 #if len(nimmanager.getNimListOfType(nimmanager.getNimType(self.slotid), exception = x)) > 0:
68 # choices["equal"] = _("equal to")
69 # choices["satposdepends"] = _("second cable of motorized LNB")
70 if len(nimmanager.canEqualTo(self.slotid)) > 0:
71 choices["equal"] = _("equal to")
72 if len(nimmanager.canDependOn(self.slotid)) > 0:
73 choices["satposdepends"] = _("second cable of motorized LNB")
74 if len(nimmanager.canConnectTo(self.slotid)) > 0:
75 choices["loopthrough"] = _("loopthrough to")
76 if isFBCLink(self.nim.slot):
77 choices = { "nothing": _("not configured"),
78 "advanced": _("advanced")}
79 self.nimConfig.configMode.setChoices(choices, default = "nothing")
81 def createSetup(self):
82 print "Creating setup"
86 self.configMode = None
87 self.diseqcModeEntry = None
88 self.advancedSatsEntry = None
89 self.advancedLnbsEntry = None
90 self.advancedDiseqcMode = None
91 self.advancedUsalsEntry = None
92 self.advancedLof = None
93 self.advancedPowerMeasurement = None
94 self.turningSpeed = None
95 self.turnFastEpochBegin = None
96 self.turnFastEpochEnd = None
97 self.uncommittedDiseqcCommand = None
98 self.cableScanType = None
99 self.have_advanced = False
100 self.advancedUnicable = None
101 self.advancedType = None
102 self.advancedManufacturer = None
103 self.advancedSCR = None
104 self.advancedDiction = None
105 self.advancedConnected = None
107 if self.nim.isMultiType():
108 multiType = self.nimConfig.multiType
109 self.multiType = getConfigListEntry(_("Tuner type"), multiType)
110 self.list.append(self.multiType)
112 if self.nim.isCompatible("DVB-S"):
113 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
114 self.list.append(self.configMode)
116 if self.nimConfig.configMode.value == "simple": #simple setup
117 self.diseqcModeEntry = getConfigListEntry(_("Mode"), self.nimConfig.diseqcMode)
118 self.list.append(self.diseqcModeEntry)
119 if self.nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
120 self.createSimpleSetup(self.list, self.nimConfig.diseqcMode.value)
121 if self.nimConfig.diseqcMode.value == "positioner":
122 self.createPositionerSetup(self.list)
123 elif self.nimConfig.configMode.value == "equal":
125 nimlist = nimmanager.canEqualTo(self.nim.slot)
127 #choices.append((str(id), str(chr(65 + id))))
128 choices.append((str(id), nimmanager.getNimDescription(id)))
129 self.nimConfig.connectedTo.setChoices(choices)
130 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
131 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
132 elif self.nimConfig.configMode.value == "satposdepends":
134 nimlist = nimmanager.canDependOn(self.nim.slot)
136 #choices.append((str(id), str(chr(65 + id))))
137 choices.append((str(id), nimmanager.getNimDescription(id)))
138 self.nimConfig.connectedTo.setChoices(choices)
139 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
140 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
141 elif self.nimConfig.configMode.value == "loopthrough":
143 print "connectable to:", nimmanager.canConnectTo(self.slotid)
144 connectable = nimmanager.canConnectTo(self.slotid)
145 for id in connectable:
146 choices.append((str(id), nimmanager.getNimDescription(id)))
147 self.nimConfig.connectedTo.setChoices(choices)
148 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
149 self.list.append(getConfigListEntry(_("Connected to"), self.nimConfig.connectedTo))
150 elif self.nimConfig.configMode.value == "nothing":
152 elif self.nimConfig.configMode.value == "advanced": # advanced
154 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
155 self.list.append(self.advancedSatsEntry)
156 cur_orb_pos = self.nimConfig.advanced.sats.orbital_position
157 satlist = self.nimConfig.advanced.sat.keys()
158 if cur_orb_pos is not None:
159 if cur_orb_pos not in satlist:
160 cur_orb_pos = satlist[0]
161 currSat = self.nimConfig.advanced.sat[cur_orb_pos]
162 self.fillListWithAdvancedSatEntrys(currSat)
163 self.have_advanced = True
164 if self.nim.description == "Alps BSBE2" and config.usage.setup_level.index >= 2: # expert
165 self.list.append(getConfigListEntry(_("Tone Amplitude"), self.nimConfig.toneAmplitude))
166 elif self.nim.isCompatible("DVB-C"):
167 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
168 self.list.append(self.configMode)
169 if self.nimConfig.configMode.value == "enabled":
170 self.cableScanType=getConfigListEntry(_("Used service scan type"), self.nimConfig.cable.scan_type)
171 self.list.append(self.cableScanType)
172 if self.nimConfig.cable.scan_type.value == "provider":
173 self.list.append(getConfigListEntry(_("Provider to scan"), self.nimConfig.cable.scan_provider))
175 if self.nimConfig.cable.scan_type.value == "bands":
176 self.list.append(getConfigListEntry(_("Scan band EU VHF I"), self.nimConfig.cable.scan_band_EU_VHF_I))
177 self.list.append(getConfigListEntry(_("Scan band EU MID"), self.nimConfig.cable.scan_band_EU_MID))
178 self.list.append(getConfigListEntry(_("Scan band EU VHF III"), self.nimConfig.cable.scan_band_EU_VHF_III))
179 self.list.append(getConfigListEntry(_("Scan band EU UHF IV"), self.nimConfig.cable.scan_band_EU_UHF_IV))
180 self.list.append(getConfigListEntry(_("Scan band EU UHF V"), self.nimConfig.cable.scan_band_EU_UHF_V))
181 self.list.append(getConfigListEntry(_("Scan band EU SUPER"), self.nimConfig.cable.scan_band_EU_SUPER))
182 self.list.append(getConfigListEntry(_("Scan band EU HYPER"), self.nimConfig.cable.scan_band_EU_HYPER))
183 self.list.append(getConfigListEntry(_("Scan band US LOW"), self.nimConfig.cable.scan_band_US_LOW))
184 self.list.append(getConfigListEntry(_("Scan band US MID"), self.nimConfig.cable.scan_band_US_MID))
185 self.list.append(getConfigListEntry(_("Scan band US HIGH"), self.nimConfig.cable.scan_band_US_HIGH))
186 self.list.append(getConfigListEntry(_("Scan band US SUPER"), self.nimConfig.cable.scan_band_US_SUPER))
187 self.list.append(getConfigListEntry(_("Scan band US HYPER"), self.nimConfig.cable.scan_band_US_HYPER))
188 elif self.nimConfig.cable.scan_type.value == "steps":
189 self.list.append(getConfigListEntry(_("Frequency scan step size(khz)"), self.nimConfig.cable.scan_frequency_steps))
190 self.list.append(getConfigListEntry(_("Scan QAM16"), self.nimConfig.cable.scan_mod_qam16))
191 self.list.append(getConfigListEntry(_("Scan QAM32"), self.nimConfig.cable.scan_mod_qam32))
192 self.list.append(getConfigListEntry(_("Scan QAM64"), self.nimConfig.cable.scan_mod_qam64))
193 self.list.append(getConfigListEntry(_("Scan QAM128"), self.nimConfig.cable.scan_mod_qam128))
194 self.list.append(getConfigListEntry(_("Scan QAM256"), self.nimConfig.cable.scan_mod_qam256))
195 self.list.append(getConfigListEntry(_("Scan SR6900"), self.nimConfig.cable.scan_sr_6900))
196 self.list.append(getConfigListEntry(_("Scan SR6875"), self.nimConfig.cable.scan_sr_6875))
197 self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext1))
198 self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext2))
199 self.have_advanced = False
200 elif self.nim.isCompatible("DVB-T"):
201 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
202 self.list.append(self.configMode)
203 self.have_advanced = False
204 if self.nimConfig.configMode.value == "enabled":
205 self.list.append(getConfigListEntry(_("Terrestrial provider"), self.nimConfig.terrestrial))
206 self.list.append(getConfigListEntry(_("Enable 5V for active antenna"), self.nimConfig.terrestrial_5V))
208 self.have_advanced = False
209 self["config"].list = self.list
210 self["config"].l.setList(self.list)
213 checkList = (self.configMode, self.diseqcModeEntry, self.advancedSatsEntry, \
214 self.advancedLnbsEntry, self.advancedDiseqcMode, self.advancedUsalsEntry, \
215 self.advancedLof, self.advancedPowerMeasurement, self.turningSpeed, \
216 self.advancedType, self.advancedSCR, self.advancedDiction, self.advancedManufacturer, self.advancedUnicable, self.advancedConnected, \
217 self.uncommittedDiseqcCommand, self.cableScanType, self.multiType)
218 if self["config"].getCurrent() == self.multiType:
219 update_slots = [self.slotid]
220 from Components.NimManager import InitNimManager
221 InitNimManager(nimmanager, update_slots)
222 self.nim = nimmanager.nim_slots[self.slotid]
223 self.nimConfig = self.nim.config
226 if self["config"].getCurrent() == x:
231 if self.have_advanced and self.nim.config_mode == "advanced":
232 self.fillAdvancedList()
234 if x in (self.turnFastEpochBegin, self.turnFastEpochEnd):
235 # workaround for storing only hour*3600+min*60 value in configfile
236 # not really needed.. just for cosmetics..
237 tm = localtime(x[1].value)
238 dt = datetime(1970, 1, 1, tm.tm_hour, tm.tm_min)
239 x[1].value = int(mktime(dt.timetuple()))
241 nimmanager.sec.update()
244 def fillListWithAdvancedSatEntrys(self, Sat):
245 lnbnum = int(Sat.lnb.value)
246 currLnb = self.nimConfig.advanced.lnb[lnbnum]
248 if isinstance(currLnb, ConfigNothing):
252 self.advancedLnbsEntry = getConfigListEntry(_("LNB"), Sat.lnb)
253 self.list.append(self.advancedLnbsEntry)
256 if isFBCLink(self.nim.slot):
257 if currLnb.lof.value != "unicable":
258 currLnb.lof.value = "unicable"
260 self.list.append(getConfigListEntry(_("Priority"), currLnb.prio))
261 self.advancedLof = getConfigListEntry(_("LOF"), currLnb.lof)
262 self.list.append(self.advancedLof)
263 if currLnb.lof.value == "user_defined":
264 self.list.append(getConfigListEntry(_("LOF/L"), currLnb.lofl))
265 self.list.append(getConfigListEntry(_("LOF/H"), currLnb.lofh))
266 self.list.append(getConfigListEntry(_("Threshold"), currLnb.threshold))
267 # self.list.append(getConfigListEntry(_("12V Output"), currLnb.output_12v))
269 if currLnb.lof.value == "unicable":
270 self.advancedUnicable = getConfigListEntry("Unicable "+_("Configuration Mode"), currLnb.unicable)
271 self.list.append(self.advancedUnicable)
272 if currLnb.unicable.value == "unicable_user":
273 self.advancedDiction = getConfigListEntry(_("Diction"), currLnb.dictionuser)
274 self.list.append(self.advancedDiction)
276 if currLnb.dictionuser.value == "EN50494":
277 satcr = currLnb.satcruserEN50494
278 stcrvco = currLnb.satcrvcouserEN50494[currLnb.satcruserEN50494.index]
279 elif currLnb.dictionuser.value == "EN50607":
280 satcr = currLnb.satcruserEN50607
281 stcrvco = currLnb.satcrvcouserEN50607[currLnb.satcruserEN50607.index]
283 self.advancedSCR = getConfigListEntry(_("Channel"), satcr)
284 self.list.append(self.advancedSCR)
285 self.list.append(getConfigListEntry(_("Frequency"), stcrvco))
287 self.list.append(getConfigListEntry(_("LOF/L"), currLnb.lofl))
288 self.list.append(getConfigListEntry(_("LOF/H"), currLnb.lofh))
289 self.list.append(getConfigListEntry(_("Threshold"), currLnb.threshold))
290 elif currLnb.unicable.value == "unicable_matrix":
291 manufacturer_name = currLnb.unicableMatrixManufacturer.value
292 manufacturer = currLnb.unicableMatrix[manufacturer_name]
293 # if "product" in manufacturer.content:
294 product_name = manufacturer.product.value
295 self.advancedManufacturer = getConfigListEntry(_("Manufacturer"), currLnb.unicableMatrixManufacturer)
296 self.list.append(self.advancedManufacturer)
297 if product_name in manufacturer.scr:
298 diction = manufacturer.diction[product_name].value
299 self.advancedType = getConfigListEntry(_("Type"), manufacturer.product)
300 self.advancedSCR = getConfigListEntry(_("Channel"), manufacturer.scr[product_name])
301 self.list.append(self.advancedType)
302 self.list.append(self.advancedSCR)
303 self.list.append(getConfigListEntry(_("Frequency"), manufacturer.vco[product_name][manufacturer.scr[product_name].index]))
304 elif currLnb.unicable.value == "unicable_lnb":
305 manufacturer_name = currLnb.unicableLnbManufacturer.value
306 manufacturer = currLnb.unicableLnb[manufacturer_name]
307 # if "product" in manufacturer.content:
308 product_name = manufacturer.product.value
309 self.advancedManufacturer = getConfigListEntry(_("Manufacturer"), currLnb.unicableLnbManufacturer)
310 self.list.append(self.advancedManufacturer)
311 if product_name in manufacturer.scr:
312 diction = manufacturer.diction[product_name].value
313 self.advancedType = getConfigListEntry(_("Type"), manufacturer.product)
314 self.advancedSCR = getConfigListEntry(_("Channel"), manufacturer.scr[product_name])
315 self.list.append(self.advancedType)
316 self.list.append(self.advancedSCR)
317 self.list.append(getConfigListEntry(_("Frequency"), manufacturer.vco[product_name][manufacturer.scr[product_name].index]))
320 connectable = nimmanager.canConnectTo(self.slotid)
321 for id in connectable:
322 choices.append((str(id), nimmanager.getNimDescription(id)))
324 if isFBCLink(self.nim.slot):
325 if self.nimConfig.advanced.unicableconnected.value != True:
326 self.nimConfig.advanced.unicableconnected.value = True
328 self.advancedConnected = getConfigListEntry(_("connected"), self.nimConfig.advanced.unicableconnected)
329 self.list.append(self.advancedConnected)
330 if self.nimConfig.advanced.unicableconnected.value == True:
331 self.nimConfig.advanced.unicableconnectedTo.setChoices(choices)
332 self.list.append(getConfigListEntry(_("Connected to"),self.nimConfig.advanced.unicableconnectedTo))
335 self.list.append(getConfigListEntry(_("Voltage mode"), Sat.voltage))
336 self.list.append(getConfigListEntry(_("Increased voltage"), currLnb.increased_voltage))
337 self.list.append(getConfigListEntry(_("Tone mode"), Sat.tonemode))
339 if lnbnum < 65 and diction !="EN50607":
340 self.advancedDiseqcMode = getConfigListEntry(_("DiSEqC mode"), currLnb.diseqcMode)
341 self.list.append(self.advancedDiseqcMode)
342 if currLnb.diseqcMode.value != "none":
343 self.list.append(getConfigListEntry(_("Toneburst"), currLnb.toneburst))
344 self.list.append(getConfigListEntry(_("Committed DiSEqC command"), currLnb.commitedDiseqcCommand))
345 self.list.append(getConfigListEntry(_("Fast DiSEqC"), currLnb.fastDiseqc))
346 self.list.append(getConfigListEntry(_("Sequence repeat"), currLnb.sequenceRepeat))
347 if currLnb.diseqcMode.value == "1_0":
348 self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder1_0))
350 if currLnb.uncommittedDiseqcCommand.index:
351 if currLnb.commandOrder.value == "ct":
352 currLnb.commandOrder.value = "cut"
353 elif currLnb.commandOrder.value == "tc":
354 currLnb.commandOrder.value = "tcu"
356 if currLnb.commandOrder.index & 1:
357 currLnb.commandOrder.value = "tc"
359 currLnb.commandOrder.value = "ct"
360 self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder))
361 self.uncommittedDiseqcCommand = getConfigListEntry(_("Uncommitted DiSEqC command"), currLnb.uncommittedDiseqcCommand)
362 self.list.append(self.uncommittedDiseqcCommand)
363 self.list.append(getConfigListEntry(_("DiSEqC repeats"), currLnb.diseqcRepeats))
364 if currLnb.diseqcMode.value == "1_2":
365 self.list.append(getConfigListEntry(_("Longitude"), currLnb.longitude))
366 self.list.append(getConfigListEntry(" ", currLnb.longitudeOrientation))
367 self.list.append(getConfigListEntry(_("Latitude"), currLnb.latitude))
368 self.list.append(getConfigListEntry(" ", currLnb.latitudeOrientation))
369 if SystemInfo["CanMeasureFrontendInputPower"]:
370 self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), currLnb.powerMeasurement)
371 self.list.append(self.advancedPowerMeasurement)
372 if currLnb.powerMeasurement.value:
373 self.list.append(getConfigListEntry(_("Power threshold in mA"), currLnb.powerThreshold))
374 self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), currLnb.turningSpeed)
375 self.list.append(self.turningSpeed)
376 if currLnb.turningSpeed.value == "fast epoch":
377 self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), currLnb.fastTurningBegin)
378 self.turnFastEpochEnd = getConfigListEntry(_("End time"), currLnb.fastTurningEnd)
379 self.list.append(self.turnFastEpochBegin)
380 self.list.append(self.turnFastEpochEnd)
382 if currLnb.powerMeasurement.value:
383 currLnb.powerMeasurement.value = False
384 currLnb.powerMeasurement.save()
385 self.advancedUsalsEntry = getConfigListEntry(_("Use usals for this sat"), Sat.usals)
386 self.list.append(self.advancedUsalsEntry)
387 if not Sat.usals.value:
388 self.list.append(getConfigListEntry(_("Stored position"), Sat.rotorposition))
392 def fillAdvancedList(self):
394 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
395 self.list.append(self.configMode)
396 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
397 self.list.append(self.advancedSatsEntry)
398 for x in self.nimConfig.advanced.sat.keys():
399 Sat = self.nimConfig.advanced.sat[x]
400 self.fillListWithAdvancedSatEntrys(Sat)
401 self["config"].list = self.list
403 def checkLoopthrough(self):
404 if self.nimConfig.configMode.value == "loopthrough":
405 loopthrough_count = 0
406 dvbs_slots = nimmanager.getNimListOfType('DVB-S')
407 dvbs_slots_len = len(dvbs_slots)
411 nim_slot = nimmanager.nim_slots[x]
412 if nim_slot == self.nimConfig:
414 if nim_slot.config.configMode.value == "loopthrough":
415 loopthrough_count += 1
417 if loopthrough_count >= dvbs_slots_len:
420 self.slot_dest_list = []
421 def checkRecursiveConnect(slot_id):
422 if slot_id in self.slot_dest_list:
424 self.slot_dest_list.append(slot_id)
425 slot_config = nimmanager.nim_slots[slot_id].config
426 if slot_config.configMode.value == "loopthrough":
427 return checkRecursiveConnect(int(slot_config.connectedTo.value))
430 return checkRecursiveConnect(self.slotid)
433 if not self.checkLoopthrough():
434 self.session.open(MessageBox, _("The loopthrough setting is wrong."),MessageBox.TYPE_ERROR,timeout=10)
437 old_configured_sats = nimmanager.getConfiguredSats()
439 new_configured_sats = nimmanager.getConfiguredSats()
440 self.unconfed_sats = old_configured_sats - new_configured_sats
441 self.satpos_to_remove = None
442 self.deleteConfirmed((None, "no"))
444 def deleteConfirmed(self, confirmed):
445 if confirmed is None:
446 confirmed = (None, "no")
448 if confirmed[1] == "yes" or confirmed[1] == "yestoall":
449 eDVBDB.getInstance().removeServices(-1, -1, -1, self.satpos_to_remove)
451 if self.satpos_to_remove is not None:
452 self.unconfed_sats.remove(self.satpos_to_remove)
454 self.satpos_to_remove = None
455 for orbpos in self.unconfed_sats:
456 self.satpos_to_remove = orbpos
457 orbpos = self.satpos_to_remove
459 # why we need this cast?
460 sat_name = str(nimmanager.getSatDescription(orbpos))
462 if orbpos > 1800: # west
463 orbpos = 3600 - orbpos
467 sat_name = ("%d.%d" + h) % (orbpos / 10, orbpos % 10)
469 if confirmed[1] == "yes" or confirmed[1] == "no":
470 self.session.openWithCallback(self.deleteConfirmed, ChoiceBox, _("Delete no more configured satellite\n%s?") %(sat_name), [(_("Yes"), "yes"), (_("No"), "no"), (_("Yes to all"), "yestoall"), (_("No to all"), "notoall")])
471 if confirmed[1] == "yestoall" or confirmed[1] == "notoall":
472 self.deleteConfirmed(confirmed)
475 self.restoreService(_("Zap back to service before tuner setup?"))
477 def __init__(self, session, slotid):
478 Screen.__init__(self, session)
481 ServiceStopScreen.__init__(self)
484 ConfigListScreen.__init__(self, self.list)
486 self["actions"] = ActionMap(["SetupActions", "SatlistShortcutAction"],
489 "cancel": self.keyCancel,
490 "nothingconnected": self.nothingConnectedShortcut
494 self.nim = nimmanager.nim_slots[slotid]
495 self.nimConfig = self.nim.config
496 self.createConfigMode()
500 if isFBCLink(self.nim.slot):
501 checkList = (self.advancedLof, self.advancedConnected)
502 curEntry = self["config"].getCurrent()
503 if curEntry in checkList:
506 ConfigListScreen.keyLeft(self)
510 if isFBCLink(self.nim.slot):
511 checkList = (self.advancedLof, self.advancedConnected)
512 curEntry = self["config"].getCurrent()
513 if curEntry in checkList:
516 ConfigListScreen.keyRight(self)
520 if self["config"].isChanged():
521 self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
523 self.restoreService(_("Zap back to service before tuner setup?"))
526 if self.nim.isCompatible("DVB-S"):
527 # reset connectedTo to all choices to properly store the default value
529 nimlist = nimmanager.getNimListOfType("DVB-S", self.slotid)
531 choices.append((str(id), nimmanager.getNimDescription(id)))
532 self.nimConfig.connectedTo.setChoices(choices)
533 for x in self["config"].list:
536 def cancelConfirm(self, result):
540 for x in self["config"].list:
542 # we need to call saveAll to reset the connectedTo choices
544 self.restoreService(_("Zap back to service before tuner setup?"))
546 def nothingConnectedShortcut(self):
547 if type(self["config"].getCurrent()[1]) is ConfigSatlist:
548 self["config"].getCurrent()[1].setValue("3601")
549 self["config"].invalidateCurrent()
551 class NimSelection(Screen):
552 def __init__(self, session):
553 Screen.__init__(self, session)
555 self.list = [None] * nimmanager.getSlotCount()
556 self["nimlist"] = List(self.list)
560 self.setResultClass()
562 self["actions"] = ActionMap(["OkCancelActions"],
564 "ok": self.okbuttonClick ,
568 def loadFBCLinks(self):
569 for x in nimmanager.nim_slots:
571 nimConfig = nimmanager.getNimConfig(x.slot)
572 configMode = nimConfig.configMode.value
574 if x.isCompatible("DVB-S"):
575 if isFBCLink(x.slot) and configMode != "advanced":
576 link = getLinkedSlotID(x.slot)
579 nimConfig.configMode.value = "nothing"
581 nimConfig.configMode.value = "loopthrough"
582 nimConfig.connectedTo.value = str(link)
584 def setResultClass(self):
585 self.resultclass = NimSetup
587 def okbuttonClick(self):
588 nim = self["nimlist"].getCurrent()
591 nimConfig = nimmanager.getNimConfig(nim.slot)
592 if isFBCLink(nim.slot) and nimConfig.configMode.value == "loopthrough":
595 if nim is not None and not nim.empty and nim.isSupported():
596 self.session.openWithCallback(self.NimSetupCB, self.resultclass, nim.slot)
598 def NimSetupCB(self):
602 def showNim(self, nim):
605 def updateList(self):
607 for x in nimmanager.nim_slots:
609 nimConfig = nimmanager.getNimConfig(x.slot)
610 text = nimConfig.configMode.value
612 if x.isCompatible("DVB-S"):
613 if nimConfig.configMode.value in ("loopthrough", "equal", "satposdepends"):
614 text = { "loopthrough": _("loopthrough to"),
615 "equal": _("equal to"),
616 "satposdepends": _("second cable of motorized LNB") } [nimConfig.configMode.value]
617 text += " " + _("Tuner") + " " + chr(ord('A')+int(nimConfig.connectedTo.value))
618 elif nimConfig.configMode.value == "nothing":
619 text = _("not configured")
620 elif nimConfig.configMode.value == "simple":
621 if nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
622 text = {"single": _("Single"), "toneburst_a_b": _("Toneburst A/B"), "diseqc_a_b": _("DiSEqC A/B"), "diseqc_a_b_c_d": _("DiSEqC A/B/C/D")}[nimConfig.diseqcMode.value] + "\n"
623 text += _("Sats") + ": "
625 if nimConfig.diseqcA.orbital_position != 3601:
626 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcA.value)))
627 if nimConfig.diseqcMode.value in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
628 if nimConfig.diseqcB.orbital_position != 3601:
629 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcB.value)))
630 if nimConfig.diseqcMode.value == "diseqc_a_b_c_d":
631 if nimConfig.diseqcC.orbital_position != 3601:
632 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcC.value)))
633 if nimConfig.diseqcD.orbital_position != 3601:
634 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcD.value)))
635 if len(satnames) <= 2:
636 text += ", ".join(satnames)
637 elif len(satnames) > 2:
638 # we need a newline here, since multi content lists don't support automtic line wrapping
639 text += ", ".join(satnames[:2]) + ",\n"
640 text += " " + ", ".join(satnames[2:])
641 elif nimConfig.diseqcMode.value == "positioner":
642 text = _("Positioner") + ":"
643 if nimConfig.positionerMode.value == "usals":
645 elif nimConfig.positionerMode.value == "manual":
649 elif nimConfig.configMode.value == "advanced":
651 if isFBCLink(x.slot) and nimConfig.configMode.value != "advanced":
652 text += _("\n<This tuner is configured automatically>")
653 elif x.isCompatible("DVB-T") or x.isCompatible("DVB-C"):
654 if nimConfig.configMode.value == "nothing":
655 text = _("nothing connected")
656 elif nimConfig.configMode.value == "enabled":
659 text = _("Switchable tuner types:") + "(" + ','.join(x.getMultiTypeList().values()) + ")" + "\n" + text
660 if not x.isSupported():
661 text = _("tuner is not supported")
663 self.list.append((slotid, x.friendly_full_description, text, x))
664 self["nimlist"].setList(self.list)
665 self["nimlist"].updateList(self.list)