1 from enigma import eDVBDB
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 class NimSetup(Screen, ConfigListScreen, ServiceStopScreen):
19 def createSimpleSetup(self, list, mode):
22 list.append(getConfigListEntry(_("Satellite"), nim.diseqcA))
23 list.append(getConfigListEntry(_("Send DiSEqC"), nim.simpleSingleSendDiSEqC))
25 list.append(getConfigListEntry(_("Port A"), nim.diseqcA))
27 if mode in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
28 list.append(getConfigListEntry(_("Port B"), nim.diseqcB))
29 if mode == "diseqc_a_b_c_d":
30 list.append(getConfigListEntry(_("Port C"), nim.diseqcC))
31 list.append(getConfigListEntry(_("Port D"), nim.diseqcD))
32 if mode != "toneburst_a_b":
33 list.append(getConfigListEntry(_("Set Voltage and 22KHz"), nim.simpleDiSEqCSetVoltageTone))
34 list.append(getConfigListEntry(_("Send DiSEqC only on satellite change"), nim.simpleDiSEqCOnlyOnSatChange))
36 def createPositionerSetup(self, list):
38 list.append(getConfigListEntry(_("Longitude"), nim.longitude))
39 list.append(getConfigListEntry(" ", nim.longitudeOrientation))
40 list.append(getConfigListEntry(_("Latitude"), nim.latitude))
41 list.append(getConfigListEntry(" ", nim.latitudeOrientation))
42 if SystemInfo["CanMeasureFrontendInputPower"]:
43 self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), nim.powerMeasurement)
44 list.append(self.advancedPowerMeasurement)
45 if nim.powerMeasurement.value:
46 list.append(getConfigListEntry(_("Power threshold in mA"), nim.powerThreshold))
47 self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), nim.turningSpeed)
48 list.append(self.turningSpeed)
49 if nim.turningSpeed.value == "fast epoch":
50 self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), nim.fastTurningBegin)
51 self.turnFastEpochEnd = getConfigListEntry(_("End time"), nim.fastTurningEnd)
52 list.append(self.turnFastEpochBegin)
53 list.append(self.turnFastEpochEnd)
55 if nim.powerMeasurement.value:
56 nim.powerMeasurement.value = False
57 nim.powerMeasurement.save()
59 def createConfigMode(self):
60 if self.nim.isCompatible("DVB-S"):
61 choices = { "nothing": _("not configured"),
62 "simple": _("simple"),
63 "advanced": _("advanced")}
64 #if len(nimmanager.getNimListOfType(nimmanager.getNimType(self.slotid), exception = x)) > 0:
65 # choices["equal"] = _("equal to")
66 # choices["satposdepends"] = _("second cable of motorized LNB")
67 if len(nimmanager.canEqualTo(self.slotid)) > 0:
68 choices["equal"] = _("equal to")
69 if len(nimmanager.canDependOn(self.slotid)) > 0:
70 choices["satposdepends"] = _("second cable of motorized LNB")
71 if len(nimmanager.canConnectTo(self.slotid)) > 0:
72 choices["loopthrough"] = _("loopthrough to")
73 self.nimConfig.configMode.setChoices(choices, default = "nothing")
75 def createSetup(self):
76 print "Creating setup"
80 self.configMode = None
81 self.diseqcModeEntry = None
82 self.advancedSatsEntry = None
83 self.advancedLnbsEntry = None
84 self.advancedDiseqcMode = None
85 self.advancedUsalsEntry = None
86 self.advancedLof = None
87 self.advancedPowerMeasurement = None
88 self.turningSpeed = None
89 self.turnFastEpochBegin = None
90 self.turnFastEpochEnd = None
91 self.uncommittedDiseqcCommand = None
92 self.cableScanType = None
93 self.have_advanced = False
94 self.advancedUnicable = None
95 self.advancedType = None
96 self.advancedManufacturer = None
97 self.advancedSCR = None
98 self.advancedDiction = None
99 self.advancedConnected = None
101 if self.nim.isMultiType():
102 multiType = self.nimConfig.multiType
103 self.multiType = getConfigListEntry(_("Tuner type"), multiType)
104 self.list.append(self.multiType)
106 if self.nim.isCompatible("DVB-S"):
107 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
108 self.list.append(self.configMode)
110 if self.nimConfig.configMode.value == "simple": #simple setup
111 self.diseqcModeEntry = getConfigListEntry(_("Mode"), self.nimConfig.diseqcMode)
112 self.list.append(self.diseqcModeEntry)
113 if self.nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
114 self.createSimpleSetup(self.list, self.nimConfig.diseqcMode.value)
115 if self.nimConfig.diseqcMode.value == "positioner":
116 self.createPositionerSetup(self.list)
117 elif self.nimConfig.configMode.value == "equal":
119 nimlist = nimmanager.canEqualTo(self.nim.slot)
121 #choices.append((str(id), str(chr(65 + id))))
122 choices.append((str(id), nimmanager.getNimDescription(id)))
123 self.nimConfig.connectedTo.setChoices(choices)
124 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
125 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
126 elif self.nimConfig.configMode.value == "satposdepends":
128 nimlist = nimmanager.canDependOn(self.nim.slot)
130 #choices.append((str(id), str(chr(65 + id))))
131 choices.append((str(id), nimmanager.getNimDescription(id)))
132 self.nimConfig.connectedTo.setChoices(choices)
133 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
134 self.list.append(getConfigListEntry(_("Tuner"), self.nimConfig.connectedTo))
135 elif self.nimConfig.configMode.value == "loopthrough":
137 print "connectable to:", nimmanager.canConnectTo(self.slotid)
138 connectable = nimmanager.canConnectTo(self.slotid)
139 for id in connectable:
140 choices.append((str(id), nimmanager.getNimDescription(id)))
141 self.nimConfig.connectedTo.setChoices(choices)
142 #self.nimConfig.connectedTo = updateConfigElement(self.nimConfig.connectedTo, ConfigSelection(choices = choices))
143 self.list.append(getConfigListEntry(_("Connected to"), self.nimConfig.connectedTo))
144 elif self.nimConfig.configMode.value == "nothing":
146 elif self.nimConfig.configMode.value == "advanced": # advanced
148 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
149 self.list.append(self.advancedSatsEntry)
150 cur_orb_pos = self.nimConfig.advanced.sats.orbital_position
151 satlist = self.nimConfig.advanced.sat.keys()
152 if cur_orb_pos is not None:
153 if cur_orb_pos not in satlist:
154 cur_orb_pos = satlist[0]
155 currSat = self.nimConfig.advanced.sat[cur_orb_pos]
156 self.fillListWithAdvancedSatEntrys(currSat)
157 self.have_advanced = True
158 if self.nim.description == "Alps BSBE2" and config.usage.setup_level.index >= 2: # expert
159 self.list.append(getConfigListEntry(_("Tone Amplitude"), self.nimConfig.toneAmplitude))
160 elif self.nim.isCompatible("DVB-C"):
161 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
162 self.list.append(self.configMode)
163 if self.nimConfig.configMode.value == "enabled":
164 self.cableScanType=getConfigListEntry(_("Used service scan type"), self.nimConfig.cable.scan_type)
165 self.list.append(self.cableScanType)
166 if self.nimConfig.cable.scan_type.value == "provider":
167 self.list.append(getConfigListEntry(_("Provider to scan"), self.nimConfig.cable.scan_provider))
169 if self.nimConfig.cable.scan_type.value == "bands":
170 self.list.append(getConfigListEntry(_("Scan band EU VHF I"), self.nimConfig.cable.scan_band_EU_VHF_I))
171 self.list.append(getConfigListEntry(_("Scan band EU MID"), self.nimConfig.cable.scan_band_EU_MID))
172 self.list.append(getConfigListEntry(_("Scan band EU VHF III"), self.nimConfig.cable.scan_band_EU_VHF_III))
173 self.list.append(getConfigListEntry(_("Scan band EU UHF IV"), self.nimConfig.cable.scan_band_EU_UHF_IV))
174 self.list.append(getConfigListEntry(_("Scan band EU UHF V"), self.nimConfig.cable.scan_band_EU_UHF_V))
175 self.list.append(getConfigListEntry(_("Scan band EU SUPER"), self.nimConfig.cable.scan_band_EU_SUPER))
176 self.list.append(getConfigListEntry(_("Scan band EU HYPER"), self.nimConfig.cable.scan_band_EU_HYPER))
177 self.list.append(getConfigListEntry(_("Scan band US LOW"), self.nimConfig.cable.scan_band_US_LOW))
178 self.list.append(getConfigListEntry(_("Scan band US MID"), self.nimConfig.cable.scan_band_US_MID))
179 self.list.append(getConfigListEntry(_("Scan band US HIGH"), self.nimConfig.cable.scan_band_US_HIGH))
180 self.list.append(getConfigListEntry(_("Scan band US SUPER"), self.nimConfig.cable.scan_band_US_SUPER))
181 self.list.append(getConfigListEntry(_("Scan band US HYPER"), self.nimConfig.cable.scan_band_US_HYPER))
182 elif self.nimConfig.cable.scan_type.value == "steps":
183 self.list.append(getConfigListEntry(_("Frequency scan step size(khz)"), self.nimConfig.cable.scan_frequency_steps))
184 self.list.append(getConfigListEntry(_("Scan QAM16"), self.nimConfig.cable.scan_mod_qam16))
185 self.list.append(getConfigListEntry(_("Scan QAM32"), self.nimConfig.cable.scan_mod_qam32))
186 self.list.append(getConfigListEntry(_("Scan QAM64"), self.nimConfig.cable.scan_mod_qam64))
187 self.list.append(getConfigListEntry(_("Scan QAM128"), self.nimConfig.cable.scan_mod_qam128))
188 self.list.append(getConfigListEntry(_("Scan QAM256"), self.nimConfig.cable.scan_mod_qam256))
189 self.list.append(getConfigListEntry(_("Scan SR6900"), self.nimConfig.cable.scan_sr_6900))
190 self.list.append(getConfigListEntry(_("Scan SR6875"), self.nimConfig.cable.scan_sr_6875))
191 self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext1))
192 self.list.append(getConfigListEntry(_("Scan additional SR"), self.nimConfig.cable.scan_sr_ext2))
193 self.have_advanced = False
194 elif self.nim.isCompatible("DVB-T"):
195 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
196 self.list.append(self.configMode)
197 self.have_advanced = False
198 if self.nimConfig.configMode.value == "enabled":
199 self.list.append(getConfigListEntry(_("Terrestrial provider"), self.nimConfig.terrestrial))
200 self.list.append(getConfigListEntry(_("Enable 5V for active antenna"), self.nimConfig.terrestrial_5V))
202 self.have_advanced = False
203 self["config"].list = self.list
204 self["config"].l.setList(self.list)
207 checkList = (self.configMode, self.diseqcModeEntry, self.advancedSatsEntry, \
208 self.advancedLnbsEntry, self.advancedDiseqcMode, self.advancedUsalsEntry, \
209 self.advancedLof, self.advancedPowerMeasurement, self.turningSpeed, \
210 self.advancedType, self.advancedSCR, self.advancedDiction, self.advancedManufacturer, self.advancedUnicable, self.advancedConnected, \
211 self.uncommittedDiseqcCommand, self.cableScanType, self.multiType)
212 if self["config"].getCurrent() == self.multiType:
213 from Components.NimManager import InitNimManager
214 InitNimManager(nimmanager)
215 self.nim = nimmanager.nim_slots[self.slotid]
216 self.nimConfig = self.nim.config
219 if self["config"].getCurrent() == x:
224 if self.have_advanced and self.nim.config_mode == "advanced":
225 self.fillAdvancedList()
227 if x in (self.turnFastEpochBegin, self.turnFastEpochEnd):
228 # workaround for storing only hour*3600+min*60 value in configfile
229 # not really needed.. just for cosmetics..
230 tm = localtime(x[1].value)
231 dt = datetime(1970, 1, 1, tm.tm_hour, tm.tm_min)
232 x[1].value = int(mktime(dt.timetuple()))
234 nimmanager.sec.update()
237 def fillListWithAdvancedSatEntrys(self, Sat):
238 lnbnum = int(Sat.lnb.value)
239 currLnb = self.nimConfig.advanced.lnb[lnbnum]
241 if isinstance(currLnb, ConfigNothing):
245 self.advancedLnbsEntry = getConfigListEntry(_("LNB"), Sat.lnb)
246 self.list.append(self.advancedLnbsEntry)
249 self.list.append(getConfigListEntry(_("Priority"), currLnb.prio))
250 self.advancedLof = getConfigListEntry(_("LOF"), currLnb.lof)
251 self.list.append(self.advancedLof)
252 if currLnb.lof.value == "user_defined":
253 self.list.append(getConfigListEntry(_("LOF/L"), currLnb.lofl))
254 self.list.append(getConfigListEntry(_("LOF/H"), currLnb.lofh))
255 self.list.append(getConfigListEntry(_("Threshold"), currLnb.threshold))
256 # self.list.append(getConfigListEntry(_("12V Output"), currLnb.output_12v))
258 if currLnb.lof.value == "unicable":
259 self.advancedUnicable = getConfigListEntry("Unicable "+_("Configuration Mode"), currLnb.unicable)
260 self.list.append(self.advancedUnicable)
261 if currLnb.unicable.value == "unicable_user":
262 self.advancedDiction = getConfigListEntry(_("Diction"), currLnb.dictionuser)
263 self.list.append(self.advancedDiction)
265 if currLnb.dictionuser.value == "EN50494":
266 satcr = currLnb.satcruserEN50494
267 stcrvco = currLnb.satcrvcouserEN50494[currLnb.satcruserEN50494.index]
268 elif currLnb.dictionuser.value == "EN50607":
269 satcr = currLnb.satcruserEN50607
270 stcrvco = currLnb.satcrvcouserEN50607[currLnb.satcruserEN50607.index]
272 self.advancedSCR = getConfigListEntry(_("Channel"), satcr)
273 self.list.append(self.advancedSCR)
274 self.list.append(getConfigListEntry(_("Frequency"), stcrvco))
276 self.list.append(getConfigListEntry(_("LOF/L"), currLnb.lofl))
277 self.list.append(getConfigListEntry(_("LOF/H"), currLnb.lofh))
278 self.list.append(getConfigListEntry(_("Threshold"), currLnb.threshold))
279 elif currLnb.unicable.value == "unicable_matrix":
280 manufacturer_name = currLnb.unicableMatrixManufacturer.value
281 manufacturer = currLnb.unicableMatrix[manufacturer_name]
282 # if "product" in manufacturer.content:
283 product_name = manufacturer.product.value
284 self.advancedManufacturer = getConfigListEntry(_("Manufacturer"), currLnb.unicableMatrixManufacturer)
285 self.list.append(self.advancedManufacturer)
286 if product_name in manufacturer.scr:
287 diction = manufacturer.diction[product_name].value
288 self.advancedType = getConfigListEntry(_("Type"), manufacturer.product)
289 self.advancedSCR = getConfigListEntry(_("Channel"), manufacturer.scr[product_name])
290 self.list.append(self.advancedType)
291 self.list.append(self.advancedSCR)
292 self.list.append(getConfigListEntry(_("Frequency"), manufacturer.vco[product_name][manufacturer.scr[product_name].index]))
293 elif currLnb.unicable.value == "unicable_lnb":
294 manufacturer_name = currLnb.unicableLnbManufacturer.value
295 manufacturer = currLnb.unicableLnb[manufacturer_name]
296 # if "product" in manufacturer.content:
297 product_name = manufacturer.product.value
298 self.advancedManufacturer = getConfigListEntry(_("Manufacturer"), currLnb.unicableLnbManufacturer)
299 self.list.append(self.advancedManufacturer)
300 if product_name in manufacturer.scr:
301 diction = manufacturer.diction[product_name].value
302 self.advancedType = getConfigListEntry(_("Type"), manufacturer.product)
303 self.advancedSCR = getConfigListEntry(_("Channel"), manufacturer.scr[product_name])
304 self.list.append(self.advancedType)
305 self.list.append(self.advancedSCR)
306 self.list.append(getConfigListEntry(_("Frequency"), manufacturer.vco[product_name][manufacturer.scr[product_name].index]))
309 connectable = nimmanager.canConnectTo(self.slotid)
310 for id in connectable:
311 choices.append((str(id), nimmanager.getNimDescription(id)))
313 self.advancedConnected = getConfigListEntry(_("connected"), self.nimConfig.advanced.unicableconnected)
314 self.list.append(self.advancedConnected)
315 if self.nimConfig.advanced.unicableconnected.value == True:
316 self.nimConfig.advanced.unicableconnectedTo.setChoices(choices)
317 self.list.append(getConfigListEntry(_("Connected to"),self.nimConfig.advanced.unicableconnectedTo))
320 self.list.append(getConfigListEntry(_("Voltage mode"), Sat.voltage))
321 self.list.append(getConfigListEntry(_("Increased voltage"), currLnb.increased_voltage))
322 self.list.append(getConfigListEntry(_("Tone mode"), Sat.tonemode))
324 if lnbnum < 65 and diction !="EN50607":
325 self.advancedDiseqcMode = getConfigListEntry(_("DiSEqC mode"), currLnb.diseqcMode)
326 self.list.append(self.advancedDiseqcMode)
327 if currLnb.diseqcMode.value != "none":
328 self.list.append(getConfigListEntry(_("Toneburst"), currLnb.toneburst))
329 self.list.append(getConfigListEntry(_("Committed DiSEqC command"), currLnb.commitedDiseqcCommand))
330 self.list.append(getConfigListEntry(_("Fast DiSEqC"), currLnb.fastDiseqc))
331 self.list.append(getConfigListEntry(_("Sequence repeat"), currLnb.sequenceRepeat))
332 if currLnb.diseqcMode.value == "1_0":
333 self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder1_0))
335 if currLnb.uncommittedDiseqcCommand.index:
336 if currLnb.commandOrder.value == "ct":
337 currLnb.commandOrder.value = "cut"
338 elif currLnb.commandOrder.value == "tc":
339 currLnb.commandOrder.value = "tcu"
341 if currLnb.commandOrder.index & 1:
342 currLnb.commandOrder.value = "tc"
344 currLnb.commandOrder.value = "ct"
345 self.list.append(getConfigListEntry(_("Command order"), currLnb.commandOrder))
346 self.uncommittedDiseqcCommand = getConfigListEntry(_("Uncommitted DiSEqC command"), currLnb.uncommittedDiseqcCommand)
347 self.list.append(self.uncommittedDiseqcCommand)
348 self.list.append(getConfigListEntry(_("DiSEqC repeats"), currLnb.diseqcRepeats))
349 if currLnb.diseqcMode.value == "1_2":
350 self.list.append(getConfigListEntry(_("Longitude"), currLnb.longitude))
351 self.list.append(getConfigListEntry(" ", currLnb.longitudeOrientation))
352 self.list.append(getConfigListEntry(_("Latitude"), currLnb.latitude))
353 self.list.append(getConfigListEntry(" ", currLnb.latitudeOrientation))
354 if SystemInfo["CanMeasureFrontendInputPower"]:
355 self.advancedPowerMeasurement = getConfigListEntry(_("Use Power Measurement"), currLnb.powerMeasurement)
356 self.list.append(self.advancedPowerMeasurement)
357 if currLnb.powerMeasurement.value:
358 self.list.append(getConfigListEntry(_("Power threshold in mA"), currLnb.powerThreshold))
359 self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), currLnb.turningSpeed)
360 self.list.append(self.turningSpeed)
361 if currLnb.turningSpeed.value == "fast epoch":
362 self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), currLnb.fastTurningBegin)
363 self.turnFastEpochEnd = getConfigListEntry(_("End time"), currLnb.fastTurningEnd)
364 self.list.append(self.turnFastEpochBegin)
365 self.list.append(self.turnFastEpochEnd)
367 if currLnb.powerMeasurement.value:
368 currLnb.powerMeasurement.value = False
369 currLnb.powerMeasurement.save()
370 self.advancedUsalsEntry = getConfigListEntry(_("Use usals for this sat"), Sat.usals)
371 self.list.append(self.advancedUsalsEntry)
372 if not Sat.usals.value:
373 self.list.append(getConfigListEntry(_("Stored position"), Sat.rotorposition))
377 def fillAdvancedList(self):
379 self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
380 self.list.append(self.configMode)
381 self.advancedSatsEntry = getConfigListEntry(_("Satellite"), self.nimConfig.advanced.sats)
382 self.list.append(self.advancedSatsEntry)
383 for x in self.nimConfig.advanced.sat.keys():
384 Sat = self.nimConfig.advanced.sat[x]
385 self.fillListWithAdvancedSatEntrys(Sat)
386 self["config"].list = self.list
388 def checkLoopthrough(self):
389 if self.nimConfig.configMode.value == "loopthrough":
390 loopthrough_count = 0
391 dvbs_slots = nimmanager.getNimListOfType('DVB-S')
392 dvbs_slots_len = len(dvbs_slots)
396 nim_slot = nimmanager.nim_slots[x]
397 if nim_slot == self.nimConfig:
399 if nim_slot.config.configMode.value == "loopthrough":
400 loopthrough_count += 1
402 if loopthrough_count >= dvbs_slots_len:
405 self.slot_dest_list = []
406 def checkRecursiveConnect(slot_id):
407 if slot_id in self.slot_dest_list:
409 self.slot_dest_list.append(slot_id)
410 slot_config = nimmanager.nim_slots[slot_id].config
411 if slot_config.configMode.value == "loopthrough":
412 return checkRecursiveConnect(int(slot_config.connectedTo.value))
415 return checkRecursiveConnect(self.slotid)
418 if not self.checkLoopthrough():
419 self.session.open(MessageBox, _("The loopthrough setting is wrong."),MessageBox.TYPE_ERROR,timeout=10)
422 old_configured_sats = nimmanager.getConfiguredSats()
424 new_configured_sats = nimmanager.getConfiguredSats()
425 self.unconfed_sats = old_configured_sats - new_configured_sats
426 self.satpos_to_remove = None
427 self.deleteConfirmed((None, "no"))
429 def deleteConfirmed(self, confirmed):
430 if confirmed[1] == "yes" or confirmed[1] == "yestoall":
431 eDVBDB.getInstance().removeServices(-1, -1, -1, self.satpos_to_remove)
433 if self.satpos_to_remove is not None:
434 self.unconfed_sats.remove(self.satpos_to_remove)
436 self.satpos_to_remove = None
437 for orbpos in self.unconfed_sats:
438 self.satpos_to_remove = orbpos
439 orbpos = self.satpos_to_remove
441 # why we need this cast?
442 sat_name = str(nimmanager.getSatDescription(orbpos))
444 if orbpos > 1800: # west
445 orbpos = 3600 - orbpos
449 sat_name = ("%d.%d" + h) % (orbpos / 10, orbpos % 10)
451 if confirmed[1] == "yes" or confirmed[1] == "no":
452 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")])
453 if confirmed[1] == "yestoall" or confirmed[1] == "notoall":
454 self.deleteConfirmed(confirmed)
457 self.restoreService(_("Zap back to service before tuner setup?"))
459 def __init__(self, session, slotid):
460 Screen.__init__(self, session)
463 ServiceStopScreen.__init__(self)
466 ConfigListScreen.__init__(self, self.list)
468 self["actions"] = ActionMap(["SetupActions", "SatlistShortcutAction"],
471 "cancel": self.keyCancel,
472 "nothingconnected": self.nothingConnectedShortcut
476 self.nim = nimmanager.nim_slots[slotid]
477 self.nimConfig = self.nim.config
478 self.createConfigMode()
482 ConfigListScreen.keyLeft(self)
486 ConfigListScreen.keyRight(self)
490 if self["config"].isChanged():
491 self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
493 self.restoreService(_("Zap back to service before tuner setup?"))
496 if self.nim.isCompatible("DVB-S"):
497 # reset connectedTo to all choices to properly store the default value
499 nimlist = nimmanager.getNimListOfType("DVB-S", self.slotid)
501 choices.append((str(id), nimmanager.getNimDescription(id)))
502 self.nimConfig.connectedTo.setChoices(choices)
503 for x in self["config"].list:
506 def cancelConfirm(self, result):
510 for x in self["config"].list:
512 # we need to call saveAll to reset the connectedTo choices
514 self.restoreService(_("Zap back to service before tuner setup?"))
516 def nothingConnectedShortcut(self):
517 if type(self["config"].getCurrent()[1]) is ConfigSatlist:
518 self["config"].getCurrent()[1].setValue("3601")
519 self["config"].invalidateCurrent()
521 class NimSelection(Screen):
522 def __init__(self, session):
523 Screen.__init__(self, session)
525 self.list = [None] * nimmanager.getSlotCount()
526 self["nimlist"] = List(self.list)
529 self.setResultClass()
531 self["actions"] = ActionMap(["OkCancelActions"],
533 "ok": self.okbuttonClick ,
537 def setResultClass(self):
538 self.resultclass = NimSetup
540 def okbuttonClick(self):
541 nim = self["nimlist"].getCurrent()
543 if nim is not None and not nim.empty and nim.isSupported():
544 self.session.openWithCallback(self.updateList, self.resultclass, nim.slot)
546 def showNim(self, nim):
549 def updateList(self):
551 for x in nimmanager.nim_slots:
553 nimConfig = nimmanager.getNimConfig(x.slot)
554 text = nimConfig.configMode.value
556 if x.isCompatible("DVB-S"):
557 if nimConfig.configMode.value in ("loopthrough", "equal", "satposdepends"):
558 text = { "loopthrough": _("loopthrough to"),
559 "equal": _("equal to"),
560 "satposdepends": _("second cable of motorized LNB") } [nimConfig.configMode.value]
561 text += " " + _("Tuner") + " " + ["A", "B", "C", "D"][int(nimConfig.connectedTo.value)]
562 elif nimConfig.configMode.value == "nothing":
563 text = _("not configured")
564 elif nimConfig.configMode.value == "simple":
565 if nimConfig.diseqcMode.value in ("single", "toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
566 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"
567 text += _("Sats") + ": "
569 if nimConfig.diseqcA.orbital_position != 3601:
570 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcA.value)))
571 if nimConfig.diseqcMode.value in ("toneburst_a_b", "diseqc_a_b", "diseqc_a_b_c_d"):
572 if nimConfig.diseqcB.orbital_position != 3601:
573 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcB.value)))
574 if nimConfig.diseqcMode.value == "diseqc_a_b_c_d":
575 if nimConfig.diseqcC.orbital_position != 3601:
576 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcC.value)))
577 if nimConfig.diseqcD.orbital_position != 3601:
578 satnames.append(nimmanager.getSatName(int(nimConfig.diseqcD.value)))
579 if len(satnames) <= 2:
580 text += ", ".join(satnames)
581 elif len(satnames) > 2:
582 # we need a newline here, since multi content lists don't support automtic line wrapping
583 text += ", ".join(satnames[:2]) + ",\n"
584 text += " " + ", ".join(satnames[2:])
585 elif nimConfig.diseqcMode.value == "positioner":
586 text = _("Positioner") + ":"
587 if nimConfig.positionerMode.value == "usals":
589 elif nimConfig.positionerMode.value == "manual":
593 elif nimConfig.configMode.value == "advanced":
595 elif x.isCompatible("DVB-T") or x.isCompatible("DVB-C"):
596 if nimConfig.configMode.value == "nothing":
597 text = _("nothing connected")
598 elif nimConfig.configMode.value == "enabled":
601 text = _("Switchable tuner types:") + "(" + ','.join(x.getMultiTypeList().values()) + ")" + "\n" + text
602 if not x.isSupported():
603 text = _("tuner is not supported")
605 self.list.append((slotid, x.friendly_full_description, text, x))
606 self["nimlist"].setList(self.list)
607 self["nimlist"].updateList(self.list)