X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/39c00f9efaef1ef0591fe110e388871d41d5af20..8fd90e2e7a3097863bef72cf9e3dca656683988f:/lib/python/Screens/NetworkSetup.py diff --git a/lib/python/Screens/NetworkSetup.py b/lib/python/Screens/NetworkSetup.py index 5e7e8114..8cc473fc 100644 --- a/lib/python/Screens/NetworkSetup.py +++ b/lib/python/Screens/NetworkSetup.py @@ -2,71 +2,155 @@ from Screen import Screen from Components.ActionMap import ActionMap,NumberActionMap from Screens.MessageBox import MessageBox from Screens.Standby import * -from Components.ConfigList import ConfigListScreen -from Components.config import config, getConfigListEntry from Components.Network import iNetwork -from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE -from Components.Label import Label -from Components.Pixmap import Pixmap -from Tools.LoadPixmap import LoadPixmap +from Components.Label import Label,MultiColorLabel +from Components.Pixmap import Pixmap,MultiPixmap from Components.MenuList import MenuList -from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigNothing, ConfigSubsection, ConfigText, ConfigSelection, getConfigListEntry +from Components.config import config, ConfigYesNo, ConfigIP, NoSave, ConfigText, ConfigSelection, getConfigListEntry +from Components.ConfigList import ConfigListScreen from Components.PluginComponent import plugins +from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest from Plugins.Plugin import PluginDescriptor -#from Plugins.SystemPlugins.WirelessLan.plugin import * -#from Plugins.SystemPlugins.WirelessLan.Wlan import * -from enigma import eTimer, eConsoleAppContainer,gRGB -import time, os, re +from enigma import eTimer +from os import path as os_path, system as os_system +from re import compile as re_compile, search as re_search +from Tools.Directories import resolveFilename, SCOPE_PLUGINS +from Tools.Directories import SCOPE_SKIN_IMAGE,SCOPE_PLUGINS, resolveFilename +from Tools.LoadPixmap import LoadPixmap +from enigma import RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont + +class InterfaceList(MenuList): + def __init__(self, list, enableWrapAround=False): + MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) + self.l.setFont(0, gFont("Regular", 20)) + self.l.setItemHeight(30) + +def InterfaceEntryComponent(index,name,default,active ): + res = [ (index) ] + res.append(MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name)) + if default is True: + png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue.png")) + if default is False: + png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue_off.png")) + res.append(MultiContentEntryPixmapAlphaTest(pos=(10, 5), size=(25, 25), png = png)) + if active is True: + png2 = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_on.png")) + if active is False: + png2 = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_error.png")) + res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2)) + return res -Black = "#000000" -Grey = "#8c8c93" -Green = "1cff1c" -nextstep = None -activebutton = None - -def getColor(str): - return gRGB(int(str[1:], 0x10)) class NetworkAdapterSelection(Screen): def __init__(self, session): Screen.__init__(self, session) - + iNetwork.getInterfaces() + self.wlan_errortext = _("No working wireless networkadapter found.\nPlease verify that you have attached a compatible WLAN USB Stick and your Network is configured correctly.") + self.lan_errortext = _("No working local networkadapter found.\nPlease verify that you have attached a network cable and your Network is configured correctly.") + + self["ButtonBluetext"] = Label(_("Set as default Interface")) + self["ButtonRedtext"] = Label(_("Close")) + self["introduction"] = Label(_("Press OK to edit the settings.")) + self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()] + if len(self.adapters) == 0: - #Reset Network to defaults if network broken - iNetwork.resetNetworkConfig('lan') - - self["adapterlist"] = MenuList(self.adapters) - self["actions"] = ActionMap(["OkCancelActions"], + self.onFirstExecBegin.append(self.NetworkFallback) + + self.list = [] + self["list"] = InterfaceList(self.list) + self.updateList() + self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], { "ok": self.okbuttonClick, - "cancel": self.close - }) + "cancel": self.close, + "blue": self.setDefaultInterface, + "red": self.close + }, -2) if len(self.adapters) == 1: self.onFirstExecBegin.append(self.okbuttonClick) + def updateList(self): + print "update list" + self.list = [] + default_gw = None + if os_path.exists("/etc/default_gw"): + fp = file('/etc/default_gw', 'r') + result = fp.read() + fp.close() + default_gw = result + + if len(self.adapters) == 0: # no interface available => display only eth0 + self.list.append(InterfaceEntryComponent("eth0",iNetwork.getFriendlyAdapterName('eth0'),True,True )) + else: + for x in self.adapters: + if x[1] == default_gw: + default_int = True + else: + default_int = False + if iNetwork.getAdapterAttribute(x[1], 'up') is True: + active_int = True + else: + active_int = False + self.list.append(InterfaceEntryComponent(index = x[1],name = _(x[0]),default=default_int,active=active_int )) + self["list"].l.setList(self.list) + + def setDefaultInterface(self): + selection = self["list"].getCurrent() + backupdefault_gw = None + if os_path.exists("/etc/default_gw"): + fp = file('/etc/default_gw', 'r') + backupdefault_gw = fp.read() + fp.close() + if selection[0] != backupdefault_gw: + os_system("rm -rf /etc/default_gw") + fp = file('/etc/default_gw', 'w') + fp.write(selection[0]) + fp.close() + iNetwork.restartNetwork() + self.updateList() + def okbuttonClick(self): - selection = self["adapterlist"].getCurrent() + selection = self["list"].getCurrent() + print "selection",selection if selection is not None: - self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[1]) + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[0]) + def AdapterSetupClosed(self, *ret): - if len(self.adapters) == 1: # just one network adapter.. close selection + if len(self.adapters) == 1: self.close() -class NameserverSetup(Screen, ConfigListScreen): + def NetworkFallback(self): + if iNetwork.configuredInterfaces.has_key('wlan0') is True: + self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10) + if iNetwork.configuredInterfaces.has_key('ath0') is True: + self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.wlan_errortext, type = MessageBox.TYPE_INFO,timeout = 10) + else: + self.session.openWithCallback(self.ErrorMessageClosed, MessageBox, self.lan_errortext, type = MessageBox.TYPE_INFO,timeout = 10) + def ErrorMessageClosed(self, *ret): + if iNetwork.configuredInterfaces.has_key('wlan0') is True: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'wlan0') + elif iNetwork.configuredInterfaces.has_key('ath0') is True: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'ath0') + else: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, 'eth0') + +class NameserverSetup(Screen, ConfigListScreen): def __init__(self, session): Screen.__init__(self, session) + iNetwork.getInterfaces() self.backupNameserverList = iNetwork.getNameserverList()[:] print "backup-list:", self.backupNameserverList - + self["ButtonGreentext"] = Label(_("Add")) self["ButtonYellowtext"] = Label(_("Delete")) - self["ButtonRedtext"] = Label(_("Close")) + self["ButtonRedtext"] = Label(_("Close")) + self["introduction"] = Label(_("Press OK to activate the settings.")) self.createConfig() - + self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], { "ok": self.ok, @@ -75,7 +159,7 @@ class NameserverSetup(Screen, ConfigListScreen): "green": self.add, "yellow": self.remove }, -2) - + self.list = [] ConfigListScreen.__init__(self, self.list) self.createSetup() @@ -83,16 +167,16 @@ class NameserverSetup(Screen, ConfigListScreen): def createConfig(self): self.nameservers = iNetwork.getNameserverList() self.nameserverEntries = [] - + for nameserver in self.nameservers: self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver))) def createSetup(self): self.list = [] - + for i in range(len(self.nameserverEntries)): self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i])) - + self["config"].list = self.list self["config"].l.setList(self.list) @@ -103,6 +187,9 @@ class NameserverSetup(Screen, ConfigListScreen): iNetwork.writeNameserverConfig() self.close() + def run(self): + self.ok() + def cancel(self): iNetwork.clearNameservers() print "backup-list:", self.backupNameserverList @@ -117,49 +204,75 @@ class NameserverSetup(Screen, ConfigListScreen): def remove(self): print "currentIndex:", self["config"].getCurrentIndex() - + index = self["config"].getCurrentIndex() if index < len(self.nameservers): iNetwork.removeNameserver(self.nameservers[index]) self.createConfig() self.createSetup() - - + class AdapterSetup(Screen, ConfigListScreen): - def __init__(self, session, iface): + def __init__(self, session, iface,essid=None, aplist=None): Screen.__init__(self, session) self.session = session - ## FIXME , workaround against current wizzard not able to send arguments - if iface == 0: - self.iface = "eth0" - elif iface == 1: - self.iface = "wlan0" - else: - self.iface = iface + self.iface = iface + self.essid = essid + self.aplist = aplist + self.extended = None + iNetwork.getInterfaces() - if self.iface == 'wlan0': - from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant + if self.iface == "wlan0" or self.iface == "ath0" : + from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan self.ws = wpaSupplicant() list = [] list.append(_("WEP")) list.append(_("WPA")) list.append(_("WPA2")) - - config.plugins.wlan.essid = NoSave(ConfigText(default = "home", fixed_size = False)) - config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = False)) - config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = _("WPA"))) - config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = "mysecurewlan", fixed_size = False)) - self.ws.loadConfig() - + if self.aplist is not None: + self.nwlist = self.aplist + self.nwlist.sort(key = lambda x: x[0]) + else: + self.nwlist = [] + self.w = None + self.aps = None + try: + self.w = Wlan(self.iface) + self.aps = self.w.getNetworkList() + if self.aps is not None: + print "[Wlan.py] got Accespoints!" + for ap in aps: + a = aps[ap] + if a['active']: + if a['essid'] == "": + a['essid'] = a['bssid'] + self.nwlist.append( a['essid']) + self.nwlist.sort(key = lambda x: x[0]) + except: + self.nwlist.append("No Networks found") + + wsconfig = self.ws.loadConfig() + default = self.essid or wsconfig['ssid'] + if default not in self.nwlist: + self.nwlist.append(default) + config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = default )) + config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = wsconfig['encryption'] )) + config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = wsconfig['encryption_type'] )) + config.plugins.wlan.encryption.psk = NoSave(ConfigText(default = wsconfig['key'], fixed_size = False,visible_width = 30)) + + self.activateInterfaceEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "up") or False)) self.dhcpConfigEntry = NoSave(ConfigYesNo(default=iNetwork.getAdapterAttribute(self.iface, "dhcp") or False)) - self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=True)) self.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]) self.netmaskConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "netmask") or [255,0,0,0])) + if iNetwork.getAdapterAttribute(self.iface, "gateway"): + self.dhcpdefault=True + else: + self.dhcpdefault=False + self.hasGatewayConfigEntry = NoSave(ConfigYesNo(default=self.dhcpdefault or False)) self.gatewayConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "gateway") or [0,0,0,0])) nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2] self.primaryDNS = NoSave(ConfigIP(default=nameserver[0])) self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1])) - + self["actions"] = ActionMap(["SetupActions","ShortcutActions"], { "ok": self.ok, @@ -167,7 +280,7 @@ class AdapterSetup(Screen, ConfigListScreen): "red": self.cancel, "blue": self.KeyBlue, }, -2) - + self.list = [] ConfigListScreen.__init__(self, self.list) self.createSetup() @@ -200,49 +313,55 @@ class AdapterSetup(Screen, ConfigListScreen): def layoutFinished(self): self["DNS1"].setText(self.primaryDNS.getText()) self["DNS2"].setText(self.secondaryDNS.getText()) - self["IP"].setText(self.ipConfigEntry.getText()) + if self.ipConfigEntry.getText() is not None: + self["IP"].setText(self.ipConfigEntry.getText()) + else: + self["IP"].setText([0,0,0,0]) self["Mask"].setText(self.netmaskConfigEntry.getText()) - self["Gateway"].setText(self.gatewayConfigEntry.getText()) + if iNetwork.getAdapterAttribute(self.iface, "gateway"): + self["Gateway"].setText(self.gatewayConfigEntry.getText()) + else: + self["Gateway"].hide() + self["Gatewaytext"].hide() self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface)) - - def createSetup(self): - self.list = [] - self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry) - self.list.append(self.dhcpEntry) - if not self.dhcpConfigEntry.value: - self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry)) - self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry)) - self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry)) - if self.hasGatewayConfigEntry.value: - self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry)) - self.extended = None - self.extendedSetup = None - for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP): - callFnc = p.__call__["ifaceSupported"](self.iface) - if callFnc is not None: - self.extended = callFnc - print p.__call__ - if p.__call__.has_key("configStrings"): - self.configStrings = p.__call__["configStrings"] - else: - self.configStrings = None - - self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)) - self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled) - self.list.append(self.encryptionEnabled) + def createSetup(self): + self.list = [] + self.InterfaceEntry = getConfigListEntry(_("Use Interface"), self.activateInterfaceEntry) + self.list.append(self.InterfaceEntry) + if self.activateInterfaceEntry.value: + self.dhcpEntry = getConfigListEntry(_("Use DHCP"), self.dhcpConfigEntry) + self.list.append(self.dhcpEntry) + if not self.dhcpConfigEntry.value: + self.list.append(getConfigListEntry(_('IP Address'), self.ipConfigEntry)) + self.list.append(getConfigListEntry(_('Netmask'), self.netmaskConfigEntry)) + self.list.append(getConfigListEntry(_('Use a gateway'), self.hasGatewayConfigEntry)) + if self.hasGatewayConfigEntry.value: + self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry)) + + for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP): + callFnc = p.__call__["ifaceSupported"](self.iface) + if callFnc is not None: + self.extended = callFnc + if p.__call__.has_key("configStrings"): + self.configStrings = p.__call__["configStrings"] + else: + self.configStrings = None + + self.list.append(getConfigListEntry(_("Network SSID"), config.plugins.wlan.essid)) + self.encryptionEnabled = getConfigListEntry(_("Encryption"), config.plugins.wlan.encryption.enabled) + self.list.append(self.encryptionEnabled) + + if config.plugins.wlan.encryption.enabled.value: + self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type)) + self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)) - if config.plugins.wlan.encryption.enabled.value: - self.list.append(getConfigListEntry(_("Encryption Type"), config.plugins.wlan.encryption.type)) - self.list.append(getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk)) - - self["config"].list = self.list self["config"].l.setList(self.list) def KeyBlue(self): - self.session.open(NameserverSetup) + self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup) def newConfig(self): print self["config"].getCurrent() @@ -258,10 +377,8 @@ class AdapterSetup(Screen, ConfigListScreen): self.createSetup() def ok(self): - selection = self["config"].getCurrent() - if selection == self.extendedSetup: - self.extended(self.session, self.iface) - else: + iNetwork.setAdapterAttribute(self.iface, "up", self.activateInterfaceEntry.value) + if self.activateInterfaceEntry.value is True: iNetwork.setAdapterAttribute(self.iface, "dhcp", self.dhcpConfigEntry.value) iNetwork.setAdapterAttribute(self.iface, "ip", self.ipConfigEntry.value) iNetwork.setAdapterAttribute(self.iface, "netmask", self.netmaskConfigEntry.value) @@ -269,35 +386,43 @@ class AdapterSetup(Screen, ConfigListScreen): iNetwork.setAdapterAttribute(self.iface, "gateway", self.gatewayConfigEntry.value) else: iNetwork.removeAdapterAttribute(self.iface, "gateway") - if self.extended is not None and self.configStrings is not None: iNetwork.setAdapterAttribute(self.iface, "configStrings", self.configStrings(self.iface)) self.ws.writeConfig() - - iNetwork.deactivateNetworkConfig() - iNetwork.writeNetworkConfig() - iNetwork.activateNetworkConfig() - #if self.iface == 'wlan0': - # iNetwork.restartNetwork() - self.close() + else: + iNetwork.removeAdapterAttribute(self.iface, "ip") + iNetwork.removeAdapterAttribute(self.iface, "netmask") + iNetwork.removeAdapterAttribute(self.iface, "gateway") + iNetwork.deactivateInterface(self.iface) + + iNetwork.deactivateNetworkConfig() + iNetwork.writeNetworkConfig() + iNetwork.activateNetworkConfig() + self.close() def cancel(self): + if self.activateInterfaceEntry.value is False: + iNetwork.deactivateInterface(self.iface) iNetwork.getInterfaces() self.close() def run(self): self.ok() + def NameserverSetupClosed(self, *ret): + iNetwork.loadNameserverConfig() + nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2] + self.primaryDNS = NoSave(ConfigIP(default=nameserver[0])) + self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1])) + self.createSetup() + self.layoutFinished() + class AdapterSetupConfiguration(Screen): - def __init__(self, session,iface): Screen.__init__(self, session) - self.iface = iface self.session = session - #self.ethtool_bin = "/usr/sbin/ethtool" - #self.output = None - #self.container = eConsoleAppContainer() + self.iface = iface self.mainmenu = self.genMainMenu() self["menulist"] = MenuList(self.mainmenu) self["description"] = Label() @@ -305,16 +430,15 @@ class AdapterSetupConfiguration(Screen): self["IF"] = Label() self["BottomBG"] = Label() self["Statustext"] = Label() - self["statuspic_active"] = Pixmap() - self["statuspic_active"].hide() - self["statuspic_inactive"] = Pixmap() - self["statuspic_inactive"].hide() + self["statuspic"] = MultiPixmap() + self["statuspic"].hide() self["BottomBG"] = Pixmap() self["ButtonRed"] = Pixmap() self["ButtonRedtext"] = Label(_("Close")) - + self.oktext = _("Press OK on your remote control to continue.") self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.") + self.errortext = _("No working wireless interface found.\n Please verify that you have attached a compatible WLAN device or enable you local network interface.") self["actions"] = NumberActionMap(["WizardActions","ShortcutActions"], { @@ -324,33 +448,71 @@ class AdapterSetupConfiguration(Screen): "down": self.down, "red": self.close, "left": self.left, - "right": self.right, + "right": self.right, }, -2) - + iNetwork.getInterfaces() self.onLayoutFinish.append(self.layoutFinished) self.updateStatusbar() def ok(self): + print "SELF.iFACE im OK Klick",self.iface + print "self.menulist.getCurrent()[1]",self["menulist"].getCurrent()[1] if self["menulist"].getCurrent()[1] == 'edit': - self.session.open(AdapterSetup,self.iface) + if self.iface == 'wlan0' or self.iface == 'ath0': + try: + from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan + from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless + except ImportError: + self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 ) + else: + ifobj = Wireless(self.iface) # a Wireless NIC Object + self.wlanresponse = ifobj.getStatistics() + if self.wlanresponse[0] != 19: # Wlan Interface found. + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface) + else: + # Display Wlan not available Message + self.showErrorMessage() + else: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup,self.iface) if self["menulist"].getCurrent()[1] == 'test': self.session.open(NetworkAdapterTest,self.iface) if self["menulist"].getCurrent()[1] == 'dns': self.session.open(NameserverSetup) if self["menulist"].getCurrent()[1] == 'scanwlan': - from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan - self.session.open(WlanScan,self.iface) + try: + from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan + from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless + except ImportError: + self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 ) + else: + ifobj = Wireless(self.iface) # a Wireless NIC Object + self.wlanresponse = ifobj.getStatistics() + if self.wlanresponse[0] != 19: + self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface) + else: + # Display Wlan not available Message + self.showErrorMessage() if self["menulist"].getCurrent()[1] == 'wlanstatus': - from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus - self.session.open(WlanStatus,self.iface) + try: + from Plugins.SystemPlugins.WirelessLan.plugin import WlanStatus + from Plugins.SystemPlugins.WirelessLan.iwlibs import Wireless + except ImportError: + self.session.open(MessageBox, _("The wireless LAN plugin is not installed!\nPlease install it."), type = MessageBox.TYPE_INFO,timeout = 10 ) + else: + ifobj = Wireless(self.iface) # a Wireless NIC Object + self.wlanresponse = ifobj.getStatistics() + if self.wlanresponse[0] != 19: + self.session.open(WlanStatus,self.iface) + else: + # Display Wlan not available Message + self.showErrorMessage() if self["menulist"].getCurrent()[1] == 'lanrestart': self.session.openWithCallback(self.restartLan, MessageBox, (_("Are you sure you want to restart your network interfaces?\n\n") + self.oktext ) ) - if self["menulist"].getCurrent()[1] == 'enablewlan': - self.session.openWithCallback(self.enablewlan, MessageBox, (_("Are you sure you want to enable WLAN support?\nConnect your Wlan USB Stick to your Dreambox and press OK.\n\n") + self.reboottext ) ) - if self["menulist"].getCurrent()[1] == 'resetconfig': - self.session.openWithCallback(self.resetconfig, MessageBox, (_("Are you sure you want to reset \nyour network configuration to defaults?\n\n") + self.reboottext ) ) - + if self["menulist"].getCurrent()[1] == 'openwizard': + from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard + self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard) + def up(self): self["menulist"].up() self.loadDescription() @@ -377,8 +539,6 @@ class AdapterSetupConfiguration(Screen): self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'test': self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext ) - if self["menulist"].getCurrent()[1] == 'resetconfig': - self["description"].setText(_("Reset the network configuration of your Dreambox.\n\n" ) + self.reboottext ) if self["menulist"].getCurrent()[1] == 'dns': self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'scanwlan': @@ -387,60 +547,63 @@ class AdapterSetupConfiguration(Screen): self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'lanrestart': self["description"].setText(_("Restart your network connection and interfaces.\n" ) + self.oktext ) - if self["menulist"].getCurrent()[1] == 'enablewlan': - self["description"].setText(_("Pressing OK enables the built in wireless LAN support of your Dreambox.\nWlan USB Sticks with Zydas ZD1211B and RAlink RT73 Chipset are supported.\nConnect your Wlan USB Stick to your Dreambox before pressing OK.\n\n" ) + self.reboottext ) - + if self["menulist"].getCurrent()[1] == 'openwizard': + self["description"].setText(_("Use the Networkwizard to configure your Network\n" ) + self.oktext ) def updateStatusbar(self): self["IFtext"].setText(_("Network:")) self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface)) self["Statustext"].setText(_("Link:")) - - if self.iface == 'wlan0': - from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan, WlanList, wpaSupplicant - w = Wlan(self.iface) - stats = w.getStatus() - if stats['BSSID'] == "00:00:00:00:00:00": - self["statuspic_active"].hide() - self["statuspic_inactive"].show() - else: - self["statuspic_active"].show() - self["statuspic_inactive"].hide() + + if self.iface == 'wlan0' or self.iface == 'ath0': + try: + from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan + w = Wlan(self.iface) + stats = w.getStatus() + if stats['BSSID'] == "00:00:00:00:00:00": + self["statuspic"].setPixmapNum(1) + else: + self["statuspic"].setPixmapNum(0) + self["statuspic"].show() + except: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() else: self.getLinkState(self.iface) - + def doNothing(self): pass def genMainMenu(self): menu = [] - menu.append((_("Adapter settings"), "edit")); - menu.append((_("Nameserver settings"), "dns")); - menu.append((_("Network test"), "test")); - menu.append((_("Restart network"), "lanrestart")); - menu.append((_("Reset configuration"), "resetconfig")); - - self.extended = None - self.extendedSetup = None + menu.append((_("Adapter settings"), "edit")) + menu.append((_("Nameserver settings"), "dns")) + menu.append((_("Network test"), "test")) + menu.append((_("Restart network"), "lanrestart")) + for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP): callFnc = p.__call__["ifaceSupported"](self.iface) if callFnc is not None: - menu.append((_("Scan Wireless Networks"), "scanwlan")); - menu.append((_("Show WLAN Status"), "wlanstatus")); - if callFnc is None and iNetwork.ifaces.has_key('wlan0') is False: - menu.append((_("Enable WLAN Support"), "enablewlan")); + menu.append((_("Scan Wireless Networks"), "scanwlan")) + if iNetwork.getAdapterAttribute(self.iface, "up"): + menu.append((_("Show WLAN Status"), "wlanstatus")) + + if os_path.exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")): + menu.append((_("NetworkWizard"), "openwizard")); return menu - - def enablewlan(self, ret = False): - if (ret == True): - iNetwork.resetNetworkConfig('wlan') - TryQuitMainloop(self.session,2) - - def resetconfig(self, ret = False): - if (ret == True): - iNetwork.resetNetworkConfig('lan') - TryQuitMainloop(self.session,2) + def AdapterSetupClosed(self, *ret): + self.mainmenu = self.genMainMenu() + self["menulist"].l.setList(self.mainmenu) + iNetwork.getInterfaces() + self.updateStatusbar() + + def WlanScanClosed(self,*ret): + if ret[0] is not None: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1]) + else: + self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,None,ret[0]) + def restartLan(self, ret = False): if (ret == True): @@ -452,32 +615,34 @@ class AdapterSetupConfiguration(Screen): def dataAvail(self,data): self.output = data.strip() result = self.output.split('\n') - pattern = re.compile("Link detected: yes") + pattern = re_compile("Link detected: yes") for item in result: - if re.search(pattern, item): - self["statuspic_active"].show() - self["statuspic_inactive"].hide() + if re_search(pattern, item): + self["statuspic"].setPixmapNum(0) else: - self["statuspic_active"].hide() - self["statuspic_inactive"].show() - + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() + + def showErrorMessage(self): + self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 ) -class NetworkAdapterTest(Screen): +class NetworkAdapterTest(Screen): def __init__(self, session,iface): Screen.__init__(self, session) self.iface = iface - + iNetwork.getInterfaces() self.setLabels() - - self["updown_actions"] = NumberActionMap(["WizardActions"], + + self["updown_actions"] = NumberActionMap(["WizardActions","ShortcutActions"], { "ok": self.KeyOK, + "blue": self.KeyOK, "up": lambda: self.updownhandler('up'), "down": lambda: self.updownhandler('down'), - + }, -2) - + self["shortcuts"] = ActionMap(["ShortcutActions","WizardActions"], { "red": self.close, @@ -500,17 +665,15 @@ class NetworkAdapterTest(Screen): { "yellow": self.KeyYellow, }, -2) - + self["shortcutsgreen_restart"].setEnabled(False) self["updown_actions"].setEnabled(False) self["infoshortcuts"].setEnabled(False) self.onClose.append(self.delTimer) self.onLayoutFinish.append(self.layoutFinished) self.steptimer = False - global nextstep - nextstep = 0 - global activebutton - activebutton = 0 + self.nextstep = 0 + self.activebutton = 0 self.nextStepTimer = eTimer() self.nextStepTimer.callback.append(self.nextStepTimerFire) @@ -520,355 +683,342 @@ class NetworkAdapterTest(Screen): self["InfoText"].hide() self["InfoTextBorder"].hide() self["ButtonRedtext"].setText(_("Close")) - + def delTimer(self): del self.steptimer del self.nextStepTimer def nextStepTimerFire(self): - global nextstep - self.nextstep= nextstep self.nextStepTimer.stop() self.steptimer = False - self.runTest(self.nextstep) + self.runTest() def updownhandler(self,direction): - global activebutton if direction == 'up': - if activebutton >=2: - activebutton = activebutton -1 - self.setActiveButton(activebutton) + if self.activebutton >=2: + self.activebutton -= 1 + else: + self.activebutton = 6 + self.setActiveButton(self.activebutton) if direction == 'down': - if activebutton <=5: - activebutton = activebutton +1 - self.setActiveButton(activebutton) + if self.activebutton <=5: + self.activebutton += 1 + else: + self.activebutton = 1 + self.setActiveButton(self.activebutton) def setActiveButton(self,button): if button == 1: - self["NetworkInfo"].show() - self["NetworkInfo_selected"].hide() - self["AdapterInfo"].hide() - self["AdapterInfo_selected"].show() + self["EditSettingsButton"].setPixmapNum(0) + self["EditSettings_Text"].setForegroundColorNum(0) + self["NetworkInfo"].setPixmapNum(0) + self["NetworkInfo_Text"].setForegroundColorNum(1) + self["AdapterInfo"].setPixmapNum(1) # active + self["AdapterInfo_Text"].setForegroundColorNum(2) # active if button == 2: - self["AdapterInfo"].show() - self["AdapterInfo_selected"].hide() - self["DhcpInfo"].show() - self["DhcpInfo_selected"].hide() - self["NetworkInfo"].hide() - self["NetworkInfo_selected"].show() + self["AdapterInfo_Text"].setForegroundColorNum(1) + self["AdapterInfo"].setPixmapNum(0) + self["DhcpInfo"].setPixmapNum(0) + self["DhcpInfo_Text"].setForegroundColorNum(1) + self["NetworkInfo"].setPixmapNum(1) # active + self["NetworkInfo_Text"].setForegroundColorNum(2) # active if button == 3: - self["NetworkInfo"].show() - self["NetworkInfo_selected"].hide() - self["IPInfo"].show() - self["IPInfo_selected"].hide() - self["DhcpInfo"].hide() - self["DhcpInfo_selected"].show() + self["NetworkInfo"].setPixmapNum(0) + self["NetworkInfo_Text"].setForegroundColorNum(1) + self["IPInfo"].setPixmapNum(0) + self["IPInfo_Text"].setForegroundColorNum(1) + self["DhcpInfo"].setPixmapNum(1) # active + self["DhcpInfo_Text"].setForegroundColorNum(2) # active if button == 4: - self["DhcpInfo"].show() - self["DhcpInfo_selected"].hide() - self["DNSInfo"].show() - self["DNSInfo_selected"].hide() - self["IPInfo"].hide() - self["IPInfo_selected"].show() + self["DhcpInfo"].setPixmapNum(0) + self["DhcpInfo_Text"].setForegroundColorNum(1) + self["DNSInfo"].setPixmapNum(0) + self["DNSInfo_Text"].setForegroundColorNum(1) + self["IPInfo"].setPixmapNum(1) # active + self["IPInfo_Text"].setForegroundColorNum(2) # active if button == 5: - self["IPInfo"].show() - self["IPInfo_selected"].hide() - self["EditSettingsButton"].show() - self["EditSettingsButton_selected"].hide() - self["DNSInfo"].hide() - self["DNSInfo_selected"].show() + self["IPInfo"].setPixmapNum(0) + self["IPInfo_Text"].setForegroundColorNum(1) + self["EditSettingsButton"].setPixmapNum(0) + self["EditSettings_Text"].setForegroundColorNum(0) + self["DNSInfo"].setPixmapNum(1) # active + self["DNSInfo_Text"].setForegroundColorNum(2) # active if button == 6: - self["DNSInfo"].show() - self["DNSInfo_selected"].hide() - self["EditSettingsButton"].hide() - self["EditSettingsButton_selected"].show() + self["DNSInfo"].setPixmapNum(0) + self["DNSInfo_Text"].setForegroundColorNum(1) + self["EditSettingsButton"].setPixmapNum(1) # active + self["EditSettings_Text"].setForegroundColorNum(2) # active + self["AdapterInfo"].setPixmapNum(0) + self["AdapterInfo_Text"].setForegroundColorNum(1) - def runTest(self,next): - global nextstep + def runTest(self): + next = self.nextstep if next == 0: - nextstep = next + 1 self.doStep1() - if next == 1: - nextstep = next + 1 - self.doStep2() - if next == 2: - nextstep = next + 1 + elif next == 1: + self.doStep2() + elif next == 2: self.doStep3() - if next == 3: - nextstep = next + 1 + elif next == 3: self.doStep4() - if next == 4: - nextstep = next + 1 + elif next == 4: self.doStep5() - if next == 5: - nextstep = next + 1 - self.doStep6() - + elif next == 5: + self.doStep6() + self.nextstep += 1 + def doStep1(self): self.steptimer = True self.nextStepTimer.start(3000) def doStep2(self): self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface)) - self["Adapter"].instance.setForegroundColor(getColor(Green)) - self["AdapterInfo_Text"].instance.setForegroundColor(getColor(Black)) - self["AdapterInfo_OK"].show() + self["Adapter"].setForegroundColorNum(2) + self["Adaptertext"].setForegroundColorNum(1) + self["AdapterInfo_Text"].setForegroundColorNum(1) + self["AdapterInfo_OK"].show() self.steptimer = True - self.nextStepTimer.start(3000) + self.nextStepTimer.start(3000) def doStep3(self): + self["Networktext"].setForegroundColorNum(1) self.getLinkState(self.iface) - self["NetworkInfo_Text"].instance.setForegroundColor(getColor(Black)) + self["NetworkInfo_Text"].setForegroundColorNum(1) self.steptimer = True - self.nextStepTimer.start(3000) + self.nextStepTimer.start(3000) def doStep4(self): + self["Dhcptext"].setForegroundColorNum(1) if iNetwork.getAdapterAttribute(self.iface, 'dhcp') is True: - self["Dhcp"].instance.setForegroundColor(getColor(Green)) + self["Dhcp"].setForegroundColorNum(2) self["Dhcp"].setText(_("enabled")) - self["DhcpInfo_OK"].show() - self["DhcpInfo_NOK"].hide() + self["DhcpInfo_Check"].setPixmapNum(0) else: - self["Dhcp"].instance.setForegroundColor(getColor(Grey)) - self["Dhcp"].setText(_("disabled")) - self["DhcpInfo_NOK"].show() - self["DhcpInfo_OK"].hide() - self["DhcpInfo_Text"].instance.setForegroundColor(getColor(Black)) + self["Dhcp"].setForegroundColorNum(1) + self["Dhcp"].setText(_("disabled")) + self["DhcpInfo_Check"].setPixmapNum(1) + self["DhcpInfo_Check"].show() + self["DhcpInfo_Text"].setForegroundColorNum(1) self.steptimer = True self.nextStepTimer.start(3000) def doStep5(self): - if len(iNetwork.getAdapterAttribute(self.iface,'ip')) != 0: - self["IP"].instance.setForegroundColor(getColor(Green)) + self["IPtext"].setForegroundColorNum(1) + ret = iNetwork.checkNetworkState() + if ret == True: + self["IP"].setForegroundColorNum(2) self["IP"].setText(_("confirmed")) - self["IPInfo_OK"].show() - self["IPInfo_NOK"].hide() + self["IPInfo_Check"].setPixmapNum(0) else: - self["IP"].instance.setForegroundColor(getColor(Grey)) - self["IP"].setText(_("unconfirmed")) - self["IPInfo_NOK"].show() - self["IPInfo_OK"].hide() - self["IPInfo_Text"].instance.setForegroundColor(getColor(Black)) + self["IP"].setForegroundColorNum(1) + self["IP"].setText(_("unconfirmed")) + self["IPInfo_Check"].setPixmapNum(1) + self["IPInfo_Check"].show() + self["IPInfo_Text"].setForegroundColorNum(1) self.steptimer = True self.nextStepTimer.start(3000) def doStep6(self): self.steptimer = False self.nextStepTimer.stop() - if len (iNetwork.getNameserverList()) != 0: - self["DNS"].instance.setForegroundColor(getColor(Green)) + self["DNStext"].setForegroundColorNum(1) + ret = iNetwork.checkDNSLookup() + if ret == True: + self["DNS"].setForegroundColorNum(2) self["DNS"].setText(_("confirmed")) - self["DNSInfo_OK"].show() - self["DNSInfo_NOK"].hide() + self["DNSInfo_Check"].setPixmapNum(0) else: - self["DNS"].instance.setForegroundColor(getColor(Grey)) + self["DNS"].setForegroundColorNum(1) self["DNS"].setText(_("unconfirmed")) - self["DNSInfo_NOK"].show() - self["DNSInfo_OK"].hide() - - self["DNSInfo_Text"].instance.setForegroundColor(getColor(Black)) + self["DNSInfo_Check"].setPixmapNum(1) + self["DNSInfo_Check"].show() + self["DNSInfo_Text"].setForegroundColorNum(1) + self["EditSettings_Text"].show() - self["EditSettingsButton_selected"].show() - self["ButtonYellow_off"].show() - self["ButtonYellow"].hide() + self["EditSettingsButton"].setPixmapNum(1) + self["EditSettings_Text"].setForegroundColorNum(2) # active + self["EditSettingsButton"].show() + self["ButtonYellow_Check"].setPixmapNum(1) self["ButtonGreentext"].setText(_("Restart test")) - self["ButtonGreen"].show() - self["ButtonGreen_off"].hide() + self["ButtonGreen_Check"].setPixmapNum(0) self["shortcutsgreen"].setEnabled(False) self["shortcutsgreen_restart"].setEnabled(True) self["shortcutsyellow"].setEnabled(False) self["updown_actions"].setEnabled(True) - global activebutton - activebutton = 6 - + self.activebutton = 6 + def KeyGreen(self): self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(True) self["updown_actions"].setEnabled(False) - self["ButtonYellow_off"].hide() - self["ButtonYellow"].show() - self["ButtonGreen"].hide() - self["ButtonGreen_off"].show() + self["ButtonYellow_Check"].setPixmapNum(0) + self["ButtonGreen_Check"].setPixmapNum(1) self.steptimer = True self.nextStepTimer.start(1000) def KeyGreenRestart(self): - global nextstep - nextstep = 0 + self.nextstep = 0 self.layoutFinished() self["Adapter"].setText(("")) self["Network"].setText(("")) self["Dhcp"].setText(("")) self["IP"].setText(("")) self["DNS"].setText(("")) - self["AdapterInfo_Text"].instance.setForegroundColor(getColor(Grey)) - self["NetworkInfo_Text"].instance.setForegroundColor(getColor(Grey)) - self["DhcpInfo_Text"].instance.setForegroundColor(getColor(Grey)) - self["IPInfo_Text"].instance.setForegroundColor(getColor(Grey)) - self["DNSInfo_Text"].instance.setForegroundColor(getColor(Grey)) + self["AdapterInfo_Text"].setForegroundColorNum(0) + self["NetworkInfo_Text"].setForegroundColorNum(0) + self["DhcpInfo_Text"].setForegroundColorNum(0) + self["IPInfo_Text"].setForegroundColorNum(0) + self["DNSInfo_Text"].setForegroundColorNum(0) self["shortcutsgreen_restart"].setEnabled(False) self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(True) self["updown_actions"].setEnabled(False) - self["ButtonYellow_off"].hide() - self["ButtonYellow"].show() - self["ButtonGreen"].hide() - self["ButtonGreen_off"].show() + self["ButtonYellow_Check"].setPixmapNum(0) + self["ButtonGreen_Check"].setPixmapNum(1) self.steptimer = True self.nextStepTimer.start(1000) - + def KeyOK(self): - global activebutton self["infoshortcuts"].setEnabled(True) self["shortcuts"].setEnabled(False) - if activebutton == 1: # Adapter Check + if self.activebutton == 1: # Adapter Check self["InfoText"].setText(_("This test detects your configured LAN-Adapter.")) self["InfoTextBorder"].show() self["InfoText"].show() self["ButtonRedtext"].setText(_("Back")) - if activebutton == 2: #LAN Check + if self.activebutton == 2: #LAN Check 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")) self["InfoTextBorder"].show() self["InfoText"].show() self["ButtonRedtext"].setText(_("Back")) - if activebutton == 3: #DHCP Check + if self.activebutton == 3: #DHCP Check 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.")) self["InfoTextBorder"].show() self["InfoText"].show() self["ButtonRedtext"].setText(_("Back")) - if activebutton == 4: # IP Check + if self.activebutton == 4: # IP Check 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")) self["InfoTextBorder"].show() self["InfoText"].show() self["ButtonRedtext"].setText(_("Back")) - if activebutton == 5: # DNS Check + if self.activebutton == 5: # DNS Check 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")) self["InfoTextBorder"].show() self["InfoText"].show() self["ButtonRedtext"].setText(_("Back")) - if activebutton == 6: # Edit Settings + if self.activebutton == 6: # Edit Settings self.session.open(AdapterSetup,self.iface) def KeyYellow(self): - global nextstep - nextstep = 0 + self.nextstep = 0 self["shortcutsgreen_restart"].setEnabled(True) self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(False) self["ButtonGreentext"].setText(_("Restart test")) - self["ButtonYellow_off"].show() - self["ButtonYellow"].hide() - self["ButtonGreen"].show() - self["ButtonGreen_off"].hide() + self["ButtonYellow_Check"].setPixmapNum(1) + self["ButtonGreen_Check"].setPixmapNum(0) self.steptimer = False self.nextStepTimer.stop() - + def layoutFinished(self): self["shortcutsyellow"].setEnabled(False) - self["AdapterInfo_selected"].hide() self["AdapterInfo_OK"].hide() - - self["NetworkInfo_selected"].hide() - self["NetworkInfo_OK"].hide() - self["NetworkInfo_NOK"].hide() - - self["DhcpInfo_selected"].hide() - self["DhcpInfo_OK"].hide() - self["DhcpInfo_NOK"].hide() - - self["IPInfo_selected"].hide() - self["IPInfo_OK"].hide() - self["IPInfo_NOK"].hide() - - self["DNSInfo_selected"].hide() - self["DNSInfo_OK"].hide() - self["DNSInfo_NOK"].hide() - + self["NetworkInfo_Check"].hide() + self["DhcpInfo_Check"].hide() + self["IPInfo_Check"].hide() + self["DNSInfo_Check"].hide() self["EditSettings_Text"].hide() self["EditSettingsButton"].hide() - self["EditSettingsButton_selected"].hide() - self["ButtonYellow"].hide() - self["ButtonGreen_off"].hide() self["InfoText"].hide() self["InfoTextBorder"].hide() - + def setLabels(self): - self["Adaptertext"] = Label(_("LAN Adapter")) - self["Adapter"] = Label() - self["AdapterInfo"] = Pixmap() - self["AdapterInfo_selected"] = Pixmap() - self["AdapterInfo_Text"] = Label(_("Show Info")) + self["Adaptertext"] = MultiColorLabel(_("LAN Adapter")) + self["Adapter"] = MultiColorLabel() + self["AdapterInfo"] = MultiPixmap() + self["AdapterInfo_Text"] = MultiColorLabel(_("Show Info")) self["AdapterInfo_OK"] = Pixmap() - if self.iface == 'wlan0': - self["Networktext"] = Label(_("Wireless Network")) + if self.iface == 'wlan0' or self.iface == 'ath0': + self["Networktext"] = MultiColorLabel(_("Wireless Network")) else: - self["Networktext"] = Label(_("Local Network")) - - self["Network"] = Label() - self["NetworkInfo"] = Pixmap() - self["NetworkInfo_selected"] = Pixmap() - self["NetworkInfo_Text"] = Label(_("Show Info")) - self["NetworkInfo_OK"] = Pixmap() - self["NetworkInfo_NOK"] = Pixmap() - - self["Dhcptext"] = Label(_("DHCP")) - self["Dhcp"] = Label() - self["DhcpInfo"] = Pixmap() - self["DhcpInfo_selected"] = Pixmap() - self["DhcpInfo_Text"] = Label(_("Show Info")) - self["DhcpInfo_OK"] = Pixmap() - self["DhcpInfo_NOK"] = Pixmap() + self["Networktext"] = MultiColorLabel(_("Local Network")) - self["IPtext"] = Label(_("IP Address")) - self["IP"] = Label() - self["IPInfo"] = Pixmap() - self["IPInfo_selected"] = Pixmap() - self["IPInfo_Text"] = Label(_("Show Info")) - self["IPInfo_OK"] = Pixmap() - self["IPInfo_NOK"] = Pixmap() - - self["DNStext"] = Label(_("Nameserver")) - self["DNS"] = Label() - self["DNSInfo"] = Pixmap() - self["DNSInfo_selected"] = Pixmap() - self["DNSInfo_Text"] = Label(_("Show Info")) - self["DNSInfo_OK"] = Pixmap() - self["DNSInfo_NOK"] = Pixmap() - - self["EditSettings_Text"] = Label(_("Edit settings")) - self["EditSettingsButton"] = Pixmap() - self["EditSettingsButton_selected"] = Pixmap() + self["Network"] = MultiColorLabel() + self["NetworkInfo"] = MultiPixmap() + self["NetworkInfo_Text"] = MultiColorLabel(_("Show Info")) + self["NetworkInfo_Check"] = MultiPixmap() + + self["Dhcptext"] = MultiColorLabel(_("DHCP")) + self["Dhcp"] = MultiColorLabel() + self["DhcpInfo"] = MultiPixmap() + self["DhcpInfo_Text"] = MultiColorLabel(_("Show Info")) + self["DhcpInfo_Check"] = MultiPixmap() + + self["IPtext"] = MultiColorLabel(_("IP Address")) + self["IP"] = MultiColorLabel() + self["IPInfo"] = MultiPixmap() + self["IPInfo_Text"] = MultiColorLabel(_("Show Info")) + self["IPInfo_Check"] = MultiPixmap() + + self["DNStext"] = MultiColorLabel(_("Nameserver")) + self["DNS"] = MultiColorLabel() + self["DNSInfo"] = MultiPixmap() + self["DNSInfo_Text"] = MultiColorLabel(_("Show Info")) + self["DNSInfo_Check"] = MultiPixmap() + + self["EditSettings_Text"] = MultiColorLabel(_("Edit settings")) + self["EditSettingsButton"] = MultiPixmap() self["ButtonRedtext"] = Label(_("Close")) self["ButtonRed"] = Pixmap() + self["ButtonGreentext"] = Label(_("Start test")) - self["ButtonGreen"] = Pixmap() - self["ButtonGreen_off"] = Pixmap() + self["ButtonGreen_Check"] = MultiPixmap() + self["ButtonYellowtext"] = Label(_("Stop test")) - self["ButtonYellow"] = Pixmap() - self["ButtonYellow_off"] = Pixmap() + self["ButtonYellow_Check"] = MultiPixmap() self["InfoTextBorder"] = Pixmap() self["InfoText"] = Label() def getLinkState(self,iface): - iNetwork.getLinkState(iface,self.dataAvail) + if iface == 'wlan0' or iface == 'ath0': + try: + from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan + w = Wlan(iface) + stats = w.getStatus() + if stats['BSSID'] == "00:00:00:00:00:00": + self["Network"].setForegroundColorNum(1) + self["Network"].setText(_("disconnected")) + self["NetworkInfo_Check"].setPixmapNum(1) + self["NetworkInfo_Check"].show() + else: + self["Network"].setForegroundColorNum(2) + self["Network"].setText(_("connected")) + self["NetworkInfo_Check"].setPixmapNum(0) + self["NetworkInfo_Check"].show() + except: + self["Network"].setForegroundColorNum(1) + self["Network"].setText(_("disconnected")) + self["NetworkInfo_Check"].setPixmapNum(1) + self["NetworkInfo_Check"].show() + else: + iNetwork.getLinkState(iface,self.dataAvail) def dataAvail(self,data): self.output = data.strip() result = self.output.split('\n') - pattern = re.compile("Link detected: yes") + pattern = re_compile("Link detected: yes") for item in result: - if re.search(pattern, item): - self["Network"].instance.setForegroundColor(getColor(Green)) + if re_search(pattern, item): + self["Network"].setForegroundColorNum(2) self["Network"].setText(_("connected")) - self["NetworkInfo_OK"].show() - self["NetworkInfo_NOK"].hide() + self["NetworkInfo_Check"].setPixmapNum(0) else: - self["Network"].instance.setForegroundColor(getColor(Grey)) + self["Network"].setForegroundColorNum(1) self["Network"].setText(_("disconnected")) - self["NetworkInfo_OK"].hide() - self["NetworkInfo_NOK"].show() + self["NetworkInfo_Check"].setPixmapNum(1) + self["NetworkInfo_Check"].show()