1 from Screen import Screen
2 from Screens.MessageBox import MessageBox
3 from Screens.InputBox import InputBox
4 from Screens.Standby import *
5 from Screens.VirtualKeyBoard import VirtualKeyBoard
6 from Screens.HelpMenu import HelpableScreen
7 from Components.Network import iNetwork
8 from Components.Sources.StaticText import StaticText
9 from Components.Sources.Boolean import Boolean
10 from Components.Label import Label,MultiColorLabel
11 from Components.Pixmap import Pixmap,MultiPixmap
12 from Components.MenuList import MenuList
13 from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigPassword, ConfigSelection, getConfigListEntry, ConfigNothing
14 from Components.ConfigList import ConfigListScreen
15 from Components.PluginComponent import plugins
16 from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest
17 from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap
18 from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN
19 from Tools.LoadPixmap import LoadPixmap
20 from Plugins.Plugin import PluginDescriptor
21 from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont
22 from os import path as os_path, system as os_system, unlink
23 from re import compile as re_compile, search as re_search
26 class InterfaceList(MenuList):
27 def __init__(self, list, enableWrapAround=False):
28 MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
29 self.l.setFont(0, gFont("Regular", 20))
30 self.l.setItemHeight(30)
32 def InterfaceEntryComponent(index,name,default,active ):
35 MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name)
37 num_configured_if = len(iNetwork.getConfiguredAdapters())
38 if num_configured_if >= 2:
40 png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png"))
42 png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue_off.png"))
43 res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(25, 25), png = png))
45 png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png"))
47 png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png"))
48 res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2))
52 class NetworkAdapterSelection(Screen,HelpableScreen):
53 def __init__(self, session):
54 Screen.__init__(self, session)
55 HelpableScreen.__init__(self)
57 self.wlan_errortext = _("No working wireless network adapter found.\nPlease verify that you have attached a compatible WLAN device and your network is configured correctly.")
58 self.lan_errortext = _("No working local network adapter found.\nPlease verify that you have attached a network cable and your network is configured correctly.")
59 self.oktext = _("Press OK on your remote control to continue.")
60 self.edittext = _("Press OK to edit the settings.")
61 self.defaulttext = _("Press yellow to set this interface as default interface.")
62 self.restartLanRef = None
64 self["key_red"] = StaticText(_("Close"))
65 self["key_green"] = StaticText(_("Select"))
66 self["key_yellow"] = StaticText("")
67 self["introduction"] = StaticText(self.edittext)
69 self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
72 self.onFirstExecBegin.append(self.NetworkFallback)
74 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
76 "cancel": (self.close, _("exit network interface list")),
77 "ok": (self.okbuttonClick, _("select interface")),
80 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
82 "red": (self.close, _("exit network interface list")),
83 "green": (self.okbuttonClick, _("select interface")),
86 self["DefaultInterfaceAction"] = HelpableActionMap(self, "ColorActions",
88 "yellow": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ),
92 self["list"] = InterfaceList(self.list)
95 if len(self.adapters) == 1:
96 self.onFirstExecBegin.append(self.okbuttonClick)
97 self.onClose.append(self.cleanup)
100 def updateList(self):
103 num_configured_if = len(iNetwork.getConfiguredAdapters())
104 if num_configured_if >= 2:
105 self["key_yellow"].setText(_("Default"))
106 self["introduction"].setText(self.defaulttext)
107 self["DefaultInterfaceAction"].setEnabled(True)
109 self["key_yellow"].setText("")
110 self["introduction"].setText(self.edittext)
111 self["DefaultInterfaceAction"].setEnabled(False)
113 if num_configured_if < 2 and os_path.exists("/etc/default_gw"):
114 unlink("/etc/default_gw")
116 if os_path.exists("/etc/default_gw"):
117 fp = file('/etc/default_gw', 'r')
122 if len(self.adapters) == 0: # no interface available => display only eth0
123 self.list.append(InterfaceEntryComponent("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True ))
125 for x in self.adapters:
126 if x[1] == default_gw:
130 if iNetwork.getAdapterAttribute(x[1], 'up') is True:
134 self.list.append(InterfaceEntryComponent(index = x[1],name = _(x[0]),default=default_int,active=active_int ))
136 self["list"].l.setList(self.list)
138 def setDefaultInterface(self):
139 selection = self["list"].getCurrent()
140 num_if = len(self.list)
141 old_default_gw = None
142 num_configured_if = len(iNetwork.getConfiguredAdapters())
143 if os_path.exists("/etc/default_gw"):
144 fp = open('/etc/default_gw', 'r')
145 old_default_gw = fp.read()
147 if num_configured_if > 1 and (not old_default_gw or old_default_gw != selection[0]):
148 fp = open('/etc/default_gw', 'w+')
149 fp.write(selection[0])
152 elif old_default_gw and num_configured_if < 2:
153 unlink("/etc/default_gw")
156 def okbuttonClick(self):
157 selection = self["list"].getCurrent()
158 if selection is not None:
159 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[0])
161 def AdapterSetupClosed(self, *ret):
162 if len(self.adapters) == 1:
167 def NetworkFallback(self):
168 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
169 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
170 if iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
171 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
173 self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10)
175 def ErrorMessageClosed(self, *ret):
176 if iNetwork.configuredNetworkAdapters.has_key('wlan0') is True:
177 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0')
178 elif iNetwork.configuredNetworkAdapters.has_key('ath0') is True:
179 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0')
181 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0')
184 iNetwork.stopLinkStateConsole()
185 iNetwork.stopRestartConsole()
186 iNetwork.stopGetInterfacesConsole()
188 def restartLan(self):
189 iNetwork.restartNetwork(self.restartLanDataAvail)
190 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while we configure your network..."), type = MessageBox.TYPE_INFO, enable_input = False)
192 def restartLanDataAvail(self, data):
194 iNetwork.getInterfaces(self.getInterfacesDataAvail)
196 def getInterfacesDataAvail(self, data):
198 self.restartLanRef.close(True)
200 def restartfinishedCB(self,data):
203 self.session.open(MessageBox, _("Finished configuring your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
207 class NameserverSetup(Screen, ConfigListScreen, HelpableScreen):
208 def __init__(self, session):
209 Screen.__init__(self, session)
210 HelpableScreen.__init__(self)
211 self.backupNameserverList = iNetwork.getNameserverList()[:]
212 print "backup-list:", self.backupNameserverList
214 self["key_red"] = StaticText(_("Cancel"))
215 self["key_green"] = StaticText(_("Add"))
216 self["key_yellow"] = StaticText(_("Delete"))
218 self["introduction"] = StaticText(_("Press OK to activate the settings."))
221 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
223 "cancel": (self.cancel, _("exit nameserver configuration")),
224 "ok": (self.ok, _("activate current configuration")),
227 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
229 "red": (self.cancel, _("exit nameserver configuration")),
230 "green": (self.add, _("add a nameserver entry")),
231 "yellow": (self.remove, _("remove a nameserver entry")),
234 self["actions"] = NumberActionMap(["SetupActions"],
240 ConfigListScreen.__init__(self, self.list)
243 def createConfig(self):
244 self.nameservers = iNetwork.getNameserverList()
245 self.nameserverEntries = [ NoSave(ConfigIP(default=nameserver)) for nameserver in self.nameservers]
247 def createSetup(self):
251 for x in self.nameserverEntries:
252 self.list.append(getConfigListEntry(_("Nameserver %d") % (i), x))
255 self["config"].list = self.list
256 self["config"].l.setList(self.list)
259 iNetwork.clearNameservers()
260 for nameserver in self.nameserverEntries:
261 iNetwork.addNameserver(nameserver.value)
262 iNetwork.writeNameserverConfig()
269 iNetwork.clearNameservers()
270 print "backup-list:", self.backupNameserverList
271 for nameserver in self.backupNameserverList:
272 iNetwork.addNameserver(nameserver)
276 iNetwork.addNameserver([0,0,0,0])
281 print "currentIndex:", self["config"].getCurrentIndex()
282 index = self["config"].getCurrentIndex()
283 if index < len(self.nameservers):
284 iNetwork.removeNameserver(self.nameservers[index])
289 class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
290 def __init__(self, session, networkinfo, essid=None, aplist=None):
291 Screen.__init__(self, session)
292 HelpableScreen.__init__(self)
293 self.session = session
294 if isinstance(networkinfo, (list, tuple)):
295 self.iface = networkinfo[0]
296 self.essid = networkinfo[1]
297 self.aplist = networkinfo[2]
299 self.iface = networkinfo
303 self.applyConfigRef = None
304 self.finished_cb = None
305 self.oktext = _("Press OK on your remote control to continue.")
306 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
310 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
312 "cancel": (self.keyCancel, _("exit network adapter configuration")),
313 "ok": (self.keySave, _("activate network adapter configuration")),
316 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
318 "red": (self.keyCancel, _("exit network adapter configuration")),
319 "blue": (self.KeyBlue, _("open nameserver configuration")),
322 self["actions"] = NumberActionMap(["SetupActions"],
328 ConfigListScreen.__init__(self, self.list,session = self.session)
330 self.onLayoutFinish.append(self.layoutFinished)
331 self.onClose.append(self.cleanup)
333 self["DNS1text"] = StaticText(_("Primary DNS"))
334 self["DNS2text"] = StaticText(_("Secondary DNS"))
335 self["DNS1"] = StaticText()
336 self["DNS2"] = StaticText()
337 self["introduction"] = StaticText(_("Current settings:"))
339 self["IPtext"] = StaticText(_("IP Address"))
340 self["Netmasktext"] = StaticText(_("Netmask"))
341 self["Gatewaytext"] = StaticText(_("Gateway"))
343 self["IP"] = StaticText()
344 self["Mask"] = StaticText()
345 self["Gateway"] = StaticText()
347 self["Adaptertext"] = StaticText(_("Network:"))
348 self["Adapter"] = StaticText()
349 self["introduction2"] = StaticText(_("Press OK to activate the settings."))
350 self["key_red"] = StaticText(_("Cancel"))
351 self["key_blue"] = StaticText(_("Edit DNS"))
353 self["VKeyIcon"] = Boolean(False)
354 self["HelpWindow"] = Pixmap()
355 self["HelpWindow"].hide()
357 def layoutFinished(self):
358 self["DNS1"].setText(self.primaryDNS.getText())
359 self["DNS2"].setText(self.secondaryDNS.getText())
360 if self.ipConfigEntry.getText() is not None:
361 if self.ipConfigEntry.getText() == "0.0.0.0":
362 self["IP"].setText(_("N/A"))
364 self["IP"].setText(self.ipConfigEntry.getText())
366 self["IP"].setText(_("N/A"))
367 if self.netmaskConfigEntry.getText() is not None:
368 if self.netmaskConfigEntry.getText() == "0.0.0.0":
369 self["Mask"].setText(_("N/A"))
371 self["Mask"].setText(self.netmaskConfigEntry.getText())
373 self["IP"].setText(_("N/A"))
374 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
375 if self.gatewayConfigEntry.getText() == "0.0.0.0":
376 self["Gatewaytext"].setText(_("Gateway"))
377 self["Gateway"].setText(_("N/A"))
379 self["Gatewaytext"].setText(_("Gateway"))
380 self["Gateway"].setText(self.gatewayConfigEntry.getText())
382 self["Gateway"].setText("")
383 self["Gatewaytext"].setText("")
384 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
386 def createConfig(self):
387 self.InterfaceEntry = None
388 self.dhcpEntry = None
389 self.gatewayEntry = None
390 self.hiddenSSID = None
392 self.encryptionEnabled = None
393 self.encryptionKey = None
394 self.encryptionType = None
396 self.encryptionlist = None
401 if self.iface == "wlan0" or self.iface == "ath0" :
402 from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan
403 self.w = Wlan(self.iface)
404 self.ws = wpaSupplicant()
405 self.encryptionlist = []
406 self.encryptionlist.append(("WEP", _("WEP")))
407 self.encryptionlist.append(("WPA", _("WPA")))
408 self.encryptionlist.append(("WPA2", _("WPA2")))
409 self.encryptionlist.append(("WPA/WPA2", _("WPA or WPA2")))
411 self.weplist.append("ASCII")
412 self.weplist.append("HEX")
413 if self.aplist is not None:
414 self.nwlist = self.aplist
415 self.nwlist.sort(key = lambda x: x[0])
420 self.aps = self.w.getNetworkList()
421 if self.aps is not None:
426 self.nwlist.append((a['essid'],a['essid']))
427 self.nwlist.sort(key = lambda x: x[0])
429 self.nwlist.append(("No Networks found",_("No Networks found")))
431 self.wsconfig = self.ws.loadConfig()
432 if self.essid is not None: # ssid from wlan scan
433 self.default = self.essid
435 self.default = self.wsconfig['ssid']
437 if "hidden..." not in self.nwlist:
438 self.nwlist.append(("hidden...",_("enter hidden network SSID")))
439 if self.default not in self.nwlist:
440 self.nwlist.append((self.default,self.default))
441 config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default ))
442 config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = self.wsconfig['hiddenessid'], visible_width = 50, fixed_size = False))
444 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = self.wsconfig['encryption'] ))
445 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption_type'] ))
446 config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['encryption_wepkeytype'] ))
447 config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False))
449 self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False))
450 self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False))
451 self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0])
452 self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0]))
453 if iNetwork.getAdapterAttribute(self.iface, "gateway"):
454 self.dhcpdefault=True
456 self.dhcpdefault=False
457 self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False))
458 self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0]))
459 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
460 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
461 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
463 def createSetup(self):
465 self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry)
467 self.list.append(self.InterfaceEntry)
468 if self.activateInterfaceEntry.value:
469 self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry)
470 self.list.append(self.dhcpEntry)
471 if not self.dhcpConfigEntry.value:
472 self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry))
473 self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry))
474 self.gatewayEntry = getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry)
475 self.list.append(self.gatewayEntry)
476 if self.hasGatewayConfigEntry.value:
477 self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry))
480 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
481 callFnc = p.__call__["ifaceSupported"](self.iface)
482 if callFnc is not None:
483 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
484 self.extended = callFnc
485 if p.__call__.has_key("configStrings"):
486 self.configStrings = p.__call__["configStrings"]
488 self.configStrings = None
489 if config.plugins.wlan.essid.value == 'hidden...':
490 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
491 self.list.append(self.wlanSSID)
492 self.hiddenSSID = getConfigListEntry(_("Hidden network SSID"), config.plugins.wlan.hiddenessid)
493 self.list.append(self.hiddenSSID)
495 self.wlanSSID = getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)
496 self.list.append(self.wlanSSID)
497 self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled)
498 self.list.append(self.encryptionEnabled)
500 if config.plugins.wlan.encryption.enabled.value:
501 self.encryptionType = getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type)
502 self.list.append(self.encryptionType)
503 if config.plugins.wlan.encryption.type.value == 'WEP':
504 self.list.append(getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.encryption.wepkeytype))
505 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
506 self.list.append(self.encryptionKey)
508 self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)
509 self.list.append(self.encryptionKey)
511 self["config"].list = self.list
512 self["config"].l.setList(self.list)
515 self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup)
518 if self["config"].getCurrent() == self.InterfaceEntry:
520 if self["config"].getCurrent() == self.dhcpEntry:
522 if self["config"].getCurrent() == self.gatewayEntry:
524 if self.iface == "wlan0" or self.iface == "ath0" :
525 if self["config"].getCurrent() == self.wlanSSID:
527 if self["config"].getCurrent() == self.encryptionEnabled:
529 if self["config"].getCurrent() == self.encryptionType:
533 ConfigListScreen.keyLeft(self)
537 ConfigListScreen.keyRight(self)
542 if self["config"].isChanged():
543 self.session.openWithCallback(self.keySaveConfirm, MessageBox, (_("Are you sure you want to activate this network configuration?\n\n") + self.oktext ) )
550 def keySaveConfirm(self, ret = False):
552 num_configured_if = len(iNetwork.getConfiguredAdapters())
553 if num_configured_if >= 1:
554 if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters():
555 self.applyConfig(True)
557 self.session.openWithCallback(self.secondIfaceFoundCB, MessageBox, _("A second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True)
559 self.applyConfig(True)
563 def secondIfaceFoundCB(self,data):
565 self.applyConfig(True)
567 configuredInterfaces = iNetwork.getConfiguredAdapters()
568 for interface in configuredInterfaces:
569 if interface == self.iface:
571 iNetwork.setAdapterAttribute(interface, "up", False)
572 iNetwork.deactivateInterface(interface)
573 self.applyConfig(True)
575 def applyConfig(self, ret = False):
577 iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value)
578 iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value)
579 iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value)
580 iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value)
581 if self.hasGatewayConfigEntry.value:
582 iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value)
584 iNetwork.removeAdapterAttribute(self.iface, "gateway")
585 if self.extended is not None and self.configStrings is not None:
586 iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface))
587 self.ws.writeConfig()
588 if self.activateInterfaceEntry.value is False:
589 iNetwork.deactivateInterface(self.iface)
590 iNetwork.writeNetworkConfig()
591 iNetwork.restartNetwork(self.applyConfigDataAvail)
592 self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False)
596 def applyConfigDataAvail(self, data):
598 iNetwork.getInterfaces(self.getInterfacesDataAvail)
600 def getInterfacesDataAvail(self, data):
602 self.applyConfigRef.close(True)
604 def applyConfigfinishedCB(self,data):
607 self.session.openWithCallback(lambda x : self.finished_cb(), MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
609 self.session.openWithCallback(self.ConfigfinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10)
611 def ConfigfinishedCB(self,data):
616 def keyCancelConfirm(self, result):
619 if self.oldInterfaceState is False:
620 iNetwork.deactivateInterface(self.iface,self.keyCancelCB)
626 if self["config"].isChanged():
627 self.session.openWithCallback(self.keyCancelConfirm, MessageBox, _("Really close without saving settings?"))
631 def keyCancelCB(self,data):
636 def runAsync(self, finished_cb):
637 self.finished_cb = finished_cb
640 def NameserverSetupClosed(self, *ret):
641 iNetwork.loadNameserverConfig()
642 nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2]
643 self.primaryDNS = NoSave(ConfigIP(default=nameserver[0]))
644 self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
646 self.layoutFinished()
649 iNetwork.stopLinkStateConsole()
651 def hideInputHelp(self):
652 current = self["config"].getCurrent()
653 if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...':
654 if current[1].help_window.instance is not None:
655 current[1].help_window.instance.hide()
656 elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value:
657 if current[1].help_window.instance is not None:
658 current[1].help_window.instance.hide()
661 class AdapterSetupConfiguration(Screen, HelpableScreen):
662 def __init__(self, session,iface):
663 Screen.__init__(self, session)
664 HelpableScreen.__init__(self)
665 self.session = session
667 self.restartLanRef = None
668 self.LinkState = None
669 self.mainmenu = self.genMainMenu()
670 self["menulist"] = MenuList(self.mainmenu)
671 self["key_red"] = StaticText(_("Close"))
672 self["description"] = StaticText()
673 self["IFtext"] = StaticText()
674 self["IF"] = StaticText()
675 self["Statustext"] = StaticText()
676 self["statuspic"] = MultiPixmap()
677 self["statuspic"].hide()
679 self.oktext = _("Press OK on your remote control to continue.")
680 self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
681 self.errortext = _("No working wireless network interface found.\n Please verify that you have attached a compatible WLAN device or enable your local network interface.")
683 self["WizardActions"] = HelpableActionMap(self, "WizardActions",
685 "up": (self.up, _("move up to previous entry")),
686 "down": (self.down, _("move down to next entry")),
687 "left": (self.left, _("move up to first entry")),
688 "right": (self.right, _("move down to last entry")),
691 self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
693 "cancel": (self.close, _("exit networkadapter setup menu")),
694 "ok": (self.ok, _("select menu entry")),
697 self["ColorActions"] = HelpableActionMap(self, "ColorActions",
699 "red": (self.close, _("exit networkadapter setup menu")),
702 self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
713 self.updateStatusbar()
714 self.onLayoutFinish.append(self.layoutFinished)
715 self.onClose.append(self.cleanup)
719 if self["menulist"].getCurrent()[1] == 'edit':
720 if self.iface == 'wlan0' or self.iface == 'ath0':
722 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
723 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
725 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
727 ifobj = Wireless(self.iface) # a Wireless NIC Object
728 self.wlanresponse = ifobj.getStatistics()
729 if self.wlanresponse[0] != 19: # Wlan Interface found.
730 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
732 # Display Wlan not available Message
733 self.showErrorMessage()
735 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface)
736 if self["menulist"].getCurrent()[1] == 'test':
737 self.session.open(NetworkAdapterTest,self.iface)
738 if self["menulist"].getCurrent()[1] == 'dns':
739 self.session.open(NameserverSetup)
740 if self["menulist"].getCurrent()[1] == 'scanwlan':
742 from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
743 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
745 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
747 ifobj = Wireless(self.iface) # a Wireless NIC Object
748 self.wlanresponse = ifobj.getStatistics()
749 if self.wlanresponse[0] != 19:
750 self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
752 # Display Wlan not available Message
753 self.showErrorMessage()
754 if self["menulist"].getCurrent()[1] == 'wlanstatus':
756 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
757 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
759 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
761 ifobj = Wireless(self.iface) # a Wireless NIC Object
762 self.wlanresponse = ifobj.getStatistics()
763 if self.wlanresponse[0] != 19:
764 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
766 # Display Wlan not available Message
767 self.showErrorMessage()
768 if self["menulist"].getCurrent()[1] == 'lanrestart':
769 self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) )
770 if self["menulist"].getCurrent()[1] == 'openwizard':
771 from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
772 self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard)
773 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
774 self.extended = self["menulist"].getCurrent()[1][2]
775 self.extended(self.session, self.iface)
778 self["menulist"].up()
779 self.loadDescription()
782 self["menulist"].down()
783 self.loadDescription()
786 self["menulist"].pageUp()
787 self.loadDescription()
790 self["menulist"].pageDown()
791 self.loadDescription()
793 def layoutFinished(self):
795 self["menulist"].moveToIndex(idx)
796 self.loadDescription()
798 def loadDescription(self):
799 if self["menulist"].getCurrent()[1] == 'edit':
800 self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
801 if self["menulist"].getCurrent()[1] == 'test':
802 self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
803 if self["menulist"].getCurrent()[1] == 'dns':
804 self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
805 if self["menulist"].getCurrent()[1] == 'scanwlan':
806 self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your selected wireless device.\n" ) + self.oktext )
807 if self["menulist"].getCurrent()[1] == 'wlanstatus':
808 self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext )
809 if self["menulist"].getCurrent()[1] == 'lanrestart':
810 self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext )
811 if self["menulist"].getCurrent()[1] == 'openwizard':
812 self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext )
813 if self["menulist"].getCurrent()[1][0] == 'extendedSetup':
814 self["description"].setText(_(self["menulist"].getCurrent()[1][1]) + self.oktext )
816 def updateStatusbar(self, data = None):
817 self.mainmenu = self.genMainMenu()
818 self["menulist"].l.setList(self.mainmenu)
819 self["IFtext"].setText(_("Network:"))
820 self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface))
821 self["Statustext"].setText(_("Link:"))
823 if self.iface == 'wlan0' or self.iface == 'ath0':
825 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus
827 self["statuspic"].setPixmapNum(1)
828 self["statuspic"].show()
830 iStatus.getDataForInterface(self.iface,self.getInfoCB)
832 iNetwork.getLinkState(self.iface,self.dataAvail)
837 def genMainMenu(self):
839 menu.append((_("Adapter settings"), "edit"))
840 menu.append((_("Nameserver settings"), "dns"))
841 menu.append((_("Network test"), "test"))
842 menu.append((_("Restart network"), "lanrestart"))
845 self.extendedSetup = None
846 for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP):
847 callFnc = p.__call__["ifaceSupported"](self.iface)
848 if callFnc is not None:
849 self.extended = callFnc
850 if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin
851 menu.append((_("Scan Wireless Networks"), "scanwlan"))
852 if iNetwork.getAdapterAttribute(self.iface, "up"):
853 menu.append((_("Show WLAN Status"), "wlanstatus"))
855 if p.__call__.has_key("menuEntryName"):
856 menuEntryName = p.__call__["menuEntryName"](self.iface)
858 menuEntryName = _('Extended Setup...')
859 if p.__call__.has_key("menuEntryDescription"):
860 menuEntryDescription = p.__call__["menuEntryDescription"](self.iface)
862 menuEntryDescription = _('Extended Networksetup Plugin...')
863 self.extendedSetup = ('extendedSetup',menuEntryDescription, self.extended)
864 menu.append((menuEntryName,self.extendedSetup))
866 if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
867 menu.append((_("NetworkWizard"), "openwizard"))
871 def AdapterSetupClosed(self, *ret):
872 if ret is not None and len(ret):
873 if ret[0] == 'ok' and (self.iface == 'wlan0' or self.iface == 'ath0') and iNetwork.getAdapterAttribute(self.iface, "up") is True:
875 from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus
876 from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless
878 self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 )
880 ifobj = Wireless(self.iface) # a Wireless NIC Object
881 self.wlanresponse = ifobj.getStatistics()
882 if self.wlanresponse[0] != 19:
883 self.session.openWithCallback(self.WlanStatusClosed, WlanStatus,self.iface)
885 # Display Wlan not available Message
886 self.showErrorMessage()
888 self.updateStatusbar()
890 self.updateStatusbar()
892 def WlanStatusClosed(self, *ret):
893 if ret is not None and len(ret):
894 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
895 iStatus.stopWlanConsole()
896 self.updateStatusbar()
898 def WlanScanClosed(self,*ret):
899 if ret[0] is not None:
900 self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
902 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
903 iStatus.stopWlanConsole()
904 self.updateStatusbar()
906 def restartLan(self, ret = False):
908 iNetwork.restartNetwork(self.restartLanDataAvail)
909 self.restartLanRef = self.session.openWithCallback(self.restartfinishedCB, MessageBox, _("Please wait while your network is restarting..."), type = MessageBox.TYPE_INFO, enable_input = False)
911 def restartLanDataAvail(self, data):
913 iNetwork.getInterfaces(self.getInterfacesDataAvail)
915 def getInterfacesDataAvail(self, data):
917 self.restartLanRef.close(True)
919 def restartfinishedCB(self,data):
921 self.updateStatusbar()
922 self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False)
924 def dataAvail(self,data):
925 self.LinkState = None
926 for line in data.splitlines():
928 if 'Link detected:' in line:
930 self.LinkState = True
932 self.LinkState = False
933 if self.LinkState == True:
934 iNetwork.checkNetworkState(self.checkNetworkCB)
936 self["statuspic"].setPixmapNum(1)
937 self["statuspic"].show()
939 def showErrorMessage(self):
940 self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 )
943 iNetwork.stopLinkStateConsole()
944 iNetwork.stopDeactivateInterfaceConsole()
945 iNetwork.stopPingConsole()
947 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus
951 iStatus.stopWlanConsole()
953 def getInfoCB(self,data,status):
954 self.LinkState = None
957 if status is not None:
958 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
959 self.LinkState = False
960 self["statuspic"].setPixmapNum(1)
961 self["statuspic"].show()
963 self.LinkState = True
964 iNetwork.checkNetworkState(self.checkNetworkCB)
966 def checkNetworkCB(self,data):
967 if iNetwork.getAdapterAttribute(self.iface, "up") is True:
968 if self.LinkState is True:
970 self["statuspic"].setPixmapNum(0)
972 self["statuspic"].setPixmapNum(1)
973 self["statuspic"].show()
975 self["statuspic"].setPixmapNum(1)
976 self["statuspic"].show()
978 self["statuspic"].setPixmapNum(1)
979 self["statuspic"].show()
982 class NetworkAdapterTest(Screen):
983 def __init__(self, session,iface):
984 Screen.__init__(self, session)
986 self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up")
988 self.onClose.append(self.cleanup)
989 self.onHide.append(self.cleanup)
991 self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"],
995 "up": lambda: self.updownhandler('up'),
996 "down": lambda: self.updownhandler('down'),
1000 self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
1003 "back": self.cancel,
1005 self["infoshortcuts"] = ActionMap(["ShortcutActions","WizardActions"],
1007 "red": self.closeInfo,
1008 "back": self.closeInfo,
1010 self["shortcutsgreen"] = ActionMap(["ShortcutActions"],
1012 "green": self.KeyGreen,
1014 self["shortcutsgreen_restart"] = ActionMap(["ShortcutActions"],
1016 "green": self.KeyGreenRestart,
1018 self["shortcutsyellow"] = ActionMap(["ShortcutActions"],
1020 "yellow": self.KeyYellow,
1023 self["shortcutsgreen_restart"].setEnabled(False)
1024 self["updown_actions"].setEnabled(False)
1025 self["infoshortcuts"].setEnabled(False)
1026 self.onClose.append(self.delTimer)
1027 self.onLayoutFinish.append(self.layoutFinished)
1028 self.steptimer = False
1030 self.activebutton = 0
1031 self.nextStepTimer = eTimer()
1032 self.nextStepTimer.callback.append(self.nextStepTimerFire)
1035 if self.oldInterfaceState is False:
1036 iNetwork.setAdapterAttribute(self.iface, "up", self.oldInterfaceState)
1037 iNetwork.deactivateInterface(self.iface)
1040 def closeInfo(self):
1041 self["shortcuts"].setEnabled(True)
1042 self["infoshortcuts"].setEnabled(False)
1043 self["InfoText"].hide()
1044 self["InfoTextBorder"].hide()
1045 self["key_red"].setText(_("Close"))
1049 del self.nextStepTimer
1051 def nextStepTimerFire(self):
1052 self.nextStepTimer.stop()
1053 self.steptimer = False
1056 def updownhandler(self,direction):
1057 if direction == 'up':
1058 if self.activebutton >=2:
1059 self.activebutton -= 1
1061 self.activebutton = 6
1062 self.setActiveButton(self.activebutton)
1063 if direction == 'down':
1064 if self.activebutton <=5:
1065 self.activebutton += 1
1067 self.activebutton = 1
1068 self.setActiveButton(self.activebutton)
1070 def setActiveButton(self,button):
1072 self["EditSettingsButton"].setPixmapNum(0)
1073 self["EditSettings_Text"].setForegroundColorNum(0)
1074 self["NetworkInfo"].setPixmapNum(0)
1075 self["NetworkInfo_Text"].setForegroundColorNum(1)
1076 self["AdapterInfo"].setPixmapNum(1) # active
1077 self["AdapterInfo_Text"].setForegroundColorNum(2) # active
1079 self["AdapterInfo_Text"].setForegroundColorNum(1)
1080 self["AdapterInfo"].setPixmapNum(0)
1081 self["DhcpInfo"].setPixmapNum(0)
1082 self["DhcpInfo_Text"].setForegroundColorNum(1)
1083 self["NetworkInfo"].setPixmapNum(1) # active
1084 self["NetworkInfo_Text"].setForegroundColorNum(2) # active
1086 self["NetworkInfo"].setPixmapNum(0)
1087 self["NetworkInfo_Text"].setForegroundColorNum(1)
1088 self["IPInfo"].setPixmapNum(0)
1089 self["IPInfo_Text"].setForegroundColorNum(1)
1090 self["DhcpInfo"].setPixmapNum(1) # active
1091 self["DhcpInfo_Text"].setForegroundColorNum(2) # active
1093 self["DhcpInfo"].setPixmapNum(0)
1094 self["DhcpInfo_Text"].setForegroundColorNum(1)
1095 self["DNSInfo"].setPixmapNum(0)
1096 self["DNSInfo_Text"].setForegroundColorNum(1)
1097 self["IPInfo"].setPixmapNum(1) # active
1098 self["IPInfo_Text"].setForegroundColorNum(2) # active
1100 self["IPInfo"].setPixmapNum(0)
1101 self["IPInfo_Text"].setForegroundColorNum(1)
1102 self["EditSettingsButton"].setPixmapNum(0)
1103 self["EditSettings_Text"].setForegroundColorNum(0)
1104 self["DNSInfo"].setPixmapNum(1) # active
1105 self["DNSInfo_Text"].setForegroundColorNum(2) # active
1107 self["DNSInfo"].setPixmapNum(0)
1108 self["DNSInfo_Text"].setForegroundColorNum(1)
1109 self["EditSettingsButton"].setPixmapNum(1) # active
1110 self["EditSettings_Text"].setForegroundColorNum(2) # active
1111 self["AdapterInfo"].setPixmapNum(0)
1112 self["AdapterInfo_Text"].setForegroundColorNum(1)
1115 next = self.nextstep
1131 self.steptimer = True
1132 self.nextStepTimer.start(3000)
1133 self["key_yellow"].setText(_("Stop test"))
1136 self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface))
1137 self["Adapter"].setForegroundColorNum(2)
1138 self["Adaptertext"].setForegroundColorNum(1)
1139 self["AdapterInfo_Text"].setForegroundColorNum(1)
1140 self["AdapterInfo_OK"].show()
1141 self.steptimer = True
1142 self.nextStepTimer.start(3000)
1145 self["Networktext"].setForegroundColorNum(1)
1146 self["Network"].setText(_("Please wait..."))
1147 self.getLinkState(self.iface)
1148 self["NetworkInfo_Text"].setForegroundColorNum(1)
1149 self.steptimer = True
1150 self.nextStepTimer.start(3000)
1153 self["Dhcptext"].setForegroundColorNum(1)
1154 if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True:
1155 self["Dhcp"].setForegroundColorNum(2)
1156 self["Dhcp"].setText(_("enabled"))
1157 self["DhcpInfo_Check"].setPixmapNum(0)
1159 self["Dhcp"].setForegroundColorNum(1)
1160 self["Dhcp"].setText(_("disabled"))
1161 self["DhcpInfo_Check"].setPixmapNum(1)
1162 self["DhcpInfo_Check"].show()
1163 self["DhcpInfo_Text"].setForegroundColorNum(1)
1164 self.steptimer = True
1165 self.nextStepTimer.start(3000)
1168 self["IPtext"].setForegroundColorNum(1)
1169 self["IP"].setText(_("Please wait..."))
1170 iNetwork.checkNetworkState(self.NetworkStatedataAvail)
1173 self.steptimer = False
1174 self.nextStepTimer.stop()
1175 self["DNStext"].setForegroundColorNum(1)
1176 self["DNS"].setText(_("Please wait..."))
1177 iNetwork.checkDNSLookup(self.DNSLookupdataAvail)
1180 self["shortcutsgreen"].setEnabled(False)
1181 self["shortcutsyellow"].setEnabled(True)
1182 self["updown_actions"].setEnabled(False)
1183 self["key_yellow"].setText("")
1184 self["key_green"].setText("")
1185 self.steptimer = True
1186 self.nextStepTimer.start(1000)
1188 def KeyGreenRestart(self):
1190 self.layoutFinished()
1191 self["Adapter"].setText((""))
1192 self["Network"].setText((""))
1193 self["Dhcp"].setText((""))
1194 self["IP"].setText((""))
1195 self["DNS"].setText((""))
1196 self["AdapterInfo_Text"].setForegroundColorNum(0)
1197 self["NetworkInfo_Text"].setForegroundColorNum(0)
1198 self["DhcpInfo_Text"].setForegroundColorNum(0)
1199 self["IPInfo_Text"].setForegroundColorNum(0)
1200 self["DNSInfo_Text"].setForegroundColorNum(0)
1201 self["shortcutsgreen_restart"].setEnabled(False)
1202 self["shortcutsgreen"].setEnabled(False)
1203 self["shortcutsyellow"].setEnabled(True)
1204 self["updown_actions"].setEnabled(False)
1205 self["key_yellow"].setText("")
1206 self["key_green"].setText("")
1207 self.steptimer = True
1208 self.nextStepTimer.start(1000)
1211 self["infoshortcuts"].setEnabled(True)
1212 self["shortcuts"].setEnabled(False)
1213 if self.activebutton == 1: # Adapter Check
1214 self["InfoText"].setText(_("This test detects your configured LAN-Adapter."))
1215 self["InfoTextBorder"].show()
1216 self["InfoText"].show()
1217 self["key_red"].setText(_("Back"))
1218 if self.activebutton == 2: #LAN Check
1219 self["InfoText"].setText(_("This test checks whether a network cable is connected to your LAN-Adapter.\nIf you get a \"disconnected\" message:\n- verify that a network cable is attached\n- verify that the cable is not broken"))
1220 self["InfoTextBorder"].show()
1221 self["InfoText"].show()
1222 self["key_red"].setText(_("Back"))
1223 if self.activebutton == 3: #DHCP Check
1224 self["InfoText"].setText(_("This test checks whether your LAN Adapter is set up for automatic IP Address configuration with DHCP.\nIf you get a \"disabled\" message:\n - then your LAN Adapter is configured for manual IP Setup\n- verify thay you have entered correct IP informations in the AdapterSetup dialog.\nIf you get an \"enabeld\" message:\n-verify that you have a configured and working DHCP Server in your network."))
1225 self["InfoTextBorder"].show()
1226 self["InfoText"].show()
1227 self["key_red"].setText(_("Back"))
1228 if self.activebutton == 4: # IP Check
1229 self["InfoText"].setText(_("This test checks whether a valid IP Address is found for your LAN Adapter.\nIf you get a \"unconfirmed\" message:\n- no valid IP Address was found\n- please check your DHCP, cabling and adapter setup"))
1230 self["InfoTextBorder"].show()
1231 self["InfoText"].show()
1232 self["key_red"].setText(_("Back"))
1233 if self.activebutton == 5: # DNS Check
1234 self["InfoText"].setText(_("This test checks for configured Nameservers.\nIf you get a \"unconfirmed\" message:\n- please check your DHCP, cabling and Adapter setup\n- if you configured your Nameservers manually please verify your entries in the \"Nameserver\" Configuration"))
1235 self["InfoTextBorder"].show()
1236 self["InfoText"].show()
1237 self["key_red"].setText(_("Back"))
1238 if self.activebutton == 6: # Edit Settings
1239 self.session.open(AdapterSetup,self.iface)
1241 def KeyYellow(self):
1243 self["shortcutsgreen_restart"].setEnabled(True)
1244 self["shortcutsgreen"].setEnabled(False)
1245 self["shortcutsyellow"].setEnabled(False)
1246 self["key_green"].setText(_("Restart test"))
1247 self["key_yellow"].setText("")
1248 self.steptimer = False
1249 self.nextStepTimer.stop()
1251 def layoutFinished(self):
1252 self["shortcutsyellow"].setEnabled(False)
1253 self["AdapterInfo_OK"].hide()
1254 self["NetworkInfo_Check"].hide()
1255 self["DhcpInfo_Check"].hide()
1256 self["IPInfo_Check"].hide()
1257 self["DNSInfo_Check"].hide()
1258 self["EditSettings_Text"].hide()
1259 self["EditSettingsButton"].hide()
1260 self["InfoText"].hide()
1261 self["InfoTextBorder"].hide()
1262 self["key_yellow"].setText("")
1264 def setLabels(self):
1265 self["Adaptertext"] = MultiColorLabel(_("LAN Adapter"))
1266 self["Adapter"] = MultiColorLabel()
1267 self["AdapterInfo"] = MultiPixmap()
1268 self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info"))
1269 self["AdapterInfo_OK"] = Pixmap()
1271 if self.iface == 'wlan0' or self.iface == 'ath0':
1272 self["Networktext"] = MultiColorLabel(_("Wireless Network"))
1274 self["Networktext"] = MultiColorLabel(_("Local Network"))
1276 self["Network"] = MultiColorLabel()
1277 self["NetworkInfo"] = MultiPixmap()
1278 self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info"))
1279 self["NetworkInfo_Check"] = MultiPixmap()
1281 self["Dhcptext"] = MultiColorLabel(_("DHCP"))
1282 self["Dhcp"] = MultiColorLabel()
1283 self["DhcpInfo"] = MultiPixmap()
1284 self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info"))
1285 self["DhcpInfo_Check"] = MultiPixmap()
1287 self["IPtext"] = MultiColorLabel(_("IP Address"))
1288 self["IP"] = MultiColorLabel()
1289 self["IPInfo"] = MultiPixmap()
1290 self["IPInfo_Text"] = MultiColorLabel(_("Show Info"))
1291 self["IPInfo_Check"] = MultiPixmap()
1293 self["DNStext"] = MultiColorLabel(_("Nameserver"))
1294 self["DNS"] = MultiColorLabel()
1295 self["DNSInfo"] = MultiPixmap()
1296 self["DNSInfo_Text"] = MultiColorLabel(_("Show Info"))
1297 self["DNSInfo_Check"] = MultiPixmap()
1299 self["EditSettings_Text"] = MultiColorLabel(_("Edit settings"))
1300 self["EditSettingsButton"] = MultiPixmap()
1302 self["key_red"] = StaticText(_("Close"))
1303 self["key_green"] = StaticText(_("Start test"))
1304 self["key_yellow"] = StaticText(_("Stop test"))
1306 self["InfoTextBorder"] = Pixmap()
1307 self["InfoText"] = Label()
1309 def getLinkState(self,iface):
1310 if iface == 'wlan0' or iface == 'ath0':
1312 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1314 self["Network"].setForegroundColorNum(1)
1315 self["Network"].setText(_("disconnected"))
1316 self["NetworkInfo_Check"].setPixmapNum(1)
1317 self["NetworkInfo_Check"].show()
1319 iStatus.getDataForInterface(self.iface,self.getInfoCB)
1321 iNetwork.getLinkState(iface,self.LinkStatedataAvail)
1323 def LinkStatedataAvail(self,data):
1324 self.output = data.strip()
1325 result = self.output.split('\n')
1326 pattern = re_compile("Link detected: yes")
1328 if re_search(pattern, item):
1329 self["Network"].setForegroundColorNum(2)
1330 self["Network"].setText(_("connected"))
1331 self["NetworkInfo_Check"].setPixmapNum(0)
1333 self["Network"].setForegroundColorNum(1)
1334 self["Network"].setText(_("disconnected"))
1335 self["NetworkInfo_Check"].setPixmapNum(1)
1336 self["NetworkInfo_Check"].show()
1338 def NetworkStatedataAvail(self,data):
1340 self["IP"].setForegroundColorNum(2)
1341 self["IP"].setText(_("confirmed"))
1342 self["IPInfo_Check"].setPixmapNum(0)
1344 self["IP"].setForegroundColorNum(1)
1345 self["IP"].setText(_("unconfirmed"))
1346 self["IPInfo_Check"].setPixmapNum(1)
1347 self["IPInfo_Check"].show()
1348 self["IPInfo_Text"].setForegroundColorNum(1)
1349 self.steptimer = True
1350 self.nextStepTimer.start(3000)
1352 def DNSLookupdataAvail(self,data):
1354 self["DNS"].setForegroundColorNum(2)
1355 self["DNS"].setText(_("confirmed"))
1356 self["DNSInfo_Check"].setPixmapNum(0)
1358 self["DNS"].setForegroundColorNum(1)
1359 self["DNS"].setText(_("unconfirmed"))
1360 self["DNSInfo_Check"].setPixmapNum(1)
1361 self["DNSInfo_Check"].show()
1362 self["DNSInfo_Text"].setForegroundColorNum(1)
1363 self["EditSettings_Text"].show()
1364 self["EditSettingsButton"].setPixmapNum(1)
1365 self["EditSettings_Text"].setForegroundColorNum(2) # active
1366 self["EditSettingsButton"].show()
1367 self["key_yellow"].setText("")
1368 self["key_green"].setText(_("Restart test"))
1369 self["shortcutsgreen"].setEnabled(False)
1370 self["shortcutsgreen_restart"].setEnabled(True)
1371 self["shortcutsyellow"].setEnabled(False)
1372 self["updown_actions"].setEnabled(True)
1373 self.activebutton = 6
1375 def getInfoCB(self,data,status):
1376 if data is not None:
1378 if status is not None:
1379 if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False:
1380 self["Network"].setForegroundColorNum(1)
1381 self["Network"].setText(_("disconnected"))
1382 self["NetworkInfo_Check"].setPixmapNum(1)
1383 self["NetworkInfo_Check"].show()
1385 self["Network"].setForegroundColorNum(2)
1386 self["Network"].setText(_("connected"))
1387 self["NetworkInfo_Check"].setPixmapNum(0)
1388 self["NetworkInfo_Check"].show()
1391 iNetwork.stopLinkStateConsole()
1392 iNetwork.stopDNSConsole()
1394 from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
1398 iStatus.stopWlanConsole()