X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FScreens%2FNetworkSetup.py;h=3e9354ead818872950be3067608a96ffb11a4db4;hp=580673e4320c2ff41f93ab174c9588a91c0a68c9;hb=f5f419866f81d7c356c633acdb39c9da91c3377c;hpb=4c2cba9ccb6f754aac9378e2fc2c7b546e6d589c diff --git a/lib/python/Screens/NetworkSetup.py b/lib/python/Screens/NetworkSetup.py index 580673e..3e9354e 100755 --- a/lib/python/Screens/NetworkSetup.py +++ b/lib/python/Screens/NetworkSetup.py @@ -5,6 +5,8 @@ from Screens.Standby import * from Screens.VirtualKeyBoard import VirtualKeyBoard from Screens.HelpMenu import HelpableScreen from Components.Network import iNetwork +from Components.Sources.StaticText import StaticText +from Components.Sources.Boolean import Boolean from Components.Label import Label,MultiColorLabel from Components.Pixmap import Pixmap,MultiPixmap from Components.MenuList import MenuList @@ -13,7 +15,7 @@ from Components.ConfigList import ConfigListScreen from Components.PluginComponent import plugins from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest from Components.ActionMap import ActionMap, NumberActionMap, HelpableActionMap -from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE +from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN from Tools.LoadPixmap import LoadPixmap from Plugins.Plugin import PluginDescriptor from enigma import eTimer, ePoint, eSize, RT_HALIGN_LEFT, eListboxPythonMultiContent, gFont @@ -28,19 +30,21 @@ class InterfaceList(MenuList): 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)) + res = [ + (index), + MultiContentEntryText(pos=(80, 5), size=(430, 25), font=0, text=name) + ] num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if >= 2: if default is True: - png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue.png")) + png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/buttons/button_blue.png")) if default is False: - png = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/buttons/button_blue_off.png")) + png = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "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")) + png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_on.png")) if active is False: - png2 = LoadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, "skin_default/icons/lock_error.png")) + png2 = LoadPixmap(cached=True, path=resolveFilename(SCOPE_CURRENT_SKIN, "skin_default/icons/lock_error.png")) res.append(MultiContentEntryPixmapAlphaTest(pos=(40, 1), size=(25, 25), png = png2)) return res @@ -53,16 +57,18 @@ class NetworkAdapterSelection(Screen,HelpableScreen): 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.") self.lan_errortext = _("No working local network adapter found.\nPlease verify that you have attached a network cable and your network is configured correctly.") self.oktext = _("Press OK on your remote control to continue.") + self.edittext = _("Press OK to edit the settings.") + self.defaulttext = _("Press yellow to set this interface as default interface.") self.restartLanRef = None - self["ButtonBluetext"] = Label(_("Set as default Interface")) - self["ButtonBlue"] = Pixmap() - self["ButtonRedtext"] = Label(_("Close")) - self["introduction"] = Label(_("Press OK to edit the settings.")) + self["key_red"] = StaticText(_("Close")) + self["key_green"] = StaticText(_("Select")) + self["key_yellow"] = StaticText("") + self["introduction"] = StaticText(self.edittext) self.adapters = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()] - if len(self.adapters) == 0: + if not self.adapters: self.onFirstExecBegin.append(self.NetworkFallback) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", @@ -73,34 +79,35 @@ class NetworkAdapterSelection(Screen,HelpableScreen): self["ColorActions"] = HelpableActionMap(self, "ColorActions", { - "red": (self.close, _("exit network interface list")), + "red": (self.close, _("exit network interface list")), + "green": (self.okbuttonClick, _("select interface")), }) self["DefaultInterfaceAction"] = HelpableActionMap(self, "ColorActions", { - "blue": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ), + "yellow": (self.setDefaultInterface, [_("Set interface as default Interface"),_("* Only available if more than one interface is active.")] ), }) - + self.list = [] self["list"] = InterfaceList(self.list) self.updateList() - + if len(self.adapters) == 1: self.onFirstExecBegin.append(self.okbuttonClick) self.onClose.append(self.cleanup) - + + def updateList(self): - iNetwork.getInterfaces() self.list = [] default_gw = None num_configured_if = len(iNetwork.getConfiguredAdapters()) if num_configured_if >= 2: - self["ButtonBlue"].show() - self["ButtonBluetext"].show() + self["key_yellow"].setText(_("Default")) + self["introduction"].setText(self.defaulttext) self["DefaultInterfaceAction"].setEnabled(True) else: - self["ButtonBlue"].hide() - self["ButtonBluetext"].hide() + self["key_yellow"].setText("") + self["introduction"].setText(self.edittext) self["DefaultInterfaceAction"].setEnabled(False) if num_configured_if < 2 and os_path.exists("/etc/default_gw"): @@ -125,6 +132,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen): 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): @@ -175,6 +183,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen): def cleanup(self): iNetwork.stopLinkStateConsole() iNetwork.stopRestartConsole() + iNetwork.stopGetInterfacesConsole() def restartLan(self): iNetwork.restartNetwork(self.restartLanDataAvail) @@ -194,6 +203,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen): self.session.open(MessageBox, _("Finished configuring your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False) + class NameserverSetup(Screen, ConfigListScreen, HelpableScreen): def __init__(self, session): Screen.__init__(self, session) @@ -201,43 +211,47 @@ class NameserverSetup(Screen, ConfigListScreen, HelpableScreen): self.backupNameserverList = iNetwork.getNameserverList()[:] print "backup-list:", self.backupNameserverList - self["ButtonGreentext"] = Label(_("Add")) - self["ButtonYellowtext"] = Label(_("Delete")) - self["ButtonRedtext"] = Label(_("Close")) - self["introduction"] = Label(_("Press OK to activate the settings.")) + self["key_red"] = StaticText(_("Cancel")) + self["key_green"] = StaticText(_("Add")) + self["key_yellow"] = StaticText(_("Delete")) + + self["introduction"] = StaticText(_("Press OK to activate the settings.")) self.createConfig() - + self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.cancel, _("exit nameserver configuration")), "ok": (self.ok, _("activate current configuration")), }) - + self["ColorActions"] = HelpableActionMap(self, "ColorActions", { "red": (self.cancel, _("exit nameserver configuration")), "green": (self.add, _("add a nameserver entry")), "yellow": (self.remove, _("remove a nameserver entry")), }) - - + + self["actions"] = NumberActionMap(["SetupActions"], + { + "ok": self.ok, + }, -2) + self.list = [] ConfigListScreen.__init__(self, self.list) self.createSetup() def createConfig(self): self.nameservers = iNetwork.getNameserverList() - self.nameserverEntries = [] - - for nameserver in self.nameservers: - self.nameserverEntries.append(NoSave(ConfigIP(default=nameserver))) + self.nameserverEntries = [ NoSave(ConfigIP(default=nameserver)) for nameserver in self.nameservers] def createSetup(self): self.list = [] - - for i in range(len(self.nameserverEntries)): - self.list.append(getConfigListEntry(_("Nameserver %d") % (i + 1), self.nameserverEntries[i])) - + + i = 1 + for x in self.nameserverEntries: + self.list.append(getConfigListEntry(_("Nameserver %d") % (i), x)) + i += 1 + self["config"].list = self.list self["config"].l.setList(self.list) @@ -265,13 +279,13 @@ class NameserverSetup(Screen, ConfigListScreen, HelpableScreen): 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, HelpableScreen): def __init__(self, session, networkinfo, essid=None, aplist=None): Screen.__init__(self, session) @@ -290,65 +304,56 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.finished_cb = None self.oktext = _("Press OK on your remote control to continue.") self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up") - + self.createConfig() self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { - "cancel": (self.cancel, _("exit network adapter setup menu")), - "ok": (self.ok, _("select menu entry")), + "cancel": (self.keyCancel, _("exit network adapter configuration")), + "ok": (self.keySave, _("activate network adapter configuration")), }) self["ColorActions"] = HelpableActionMap(self, "ColorActions", { - "red": (self.cancel, _("exit network adapter configuration")), + "red": (self.keyCancel, _("exit network adapter configuration")), "blue": (self.KeyBlue, _("open nameserver configuration")), }) - self["VirtualKB"] = HelpableActionMap(self, "ColorActions", - { - "green": (self.KeyGreen, [_("open virtual keyboard input help"),_("* Only available when entering hidden SSID or network key")] ), - }) - self["actions"] = NumberActionMap(["SetupActions"], { - "ok": self.ok, + "ok": self.keySave, }, -2) - - + self.list = [] ConfigListScreen.__init__(self, self.list,session = self.session) self.createSetup() self.onLayoutFinish.append(self.layoutFinished) self.onClose.append(self.cleanup) - - self["DNS1text"] = Label(_("Primary DNS")) - self["DNS2text"] = Label(_("Secondary DNS")) - self["DNS1"] = Label() - self["DNS2"] = Label() - - self["introduction"] = Label(_("Current settings:")) - - self["IPtext"] = Label(_("IP Address")) - self["Netmasktext"] = Label(_("Netmask")) - self["Gatewaytext"] = Label(_("Gateway")) - - self["IP"] = Label() - self["Mask"] = Label() - self["Gateway"] = Label() - - self["BottomBG"] = Pixmap() - self["Adaptertext"] = Label(_("Network:")) - self["Adapter"] = Label() - self["introduction2"] = Label(_("Press OK to activate the settings.")) - self["ButtonRed"] = Pixmap() - self["ButtonRedtext"] = Label(_("Close")) - self["ButtonBlue"] = Pixmap() - self["ButtonBluetext"] = Label(_("Edit DNS")) - self["ButtonGreen"] = Pixmap() - self["VKeyIcon"] = Pixmap() - self["HelpWindow"] = Pixmap() + self["DNS1text"] = StaticText(_("Primary DNS")) + self["DNS2text"] = StaticText(_("Secondary DNS")) + self["DNS1"] = StaticText() + self["DNS2"] = StaticText() + self["introduction"] = StaticText(_("Current settings:")) + + self["IPtext"] = StaticText(_("IP Address")) + self["Netmasktext"] = StaticText(_("Netmask")) + self["Gatewaytext"] = StaticText(_("Gateway")) + + self["IP"] = StaticText() + self["Mask"] = StaticText() + self["Gateway"] = StaticText() + + self["Adaptertext"] = StaticText(_("Network:")) + self["Adapter"] = StaticText() + self["introduction2"] = StaticText(_("Press OK to activate the settings.")) + self["key_red"] = StaticText(_("Cancel")) + self["key_blue"] = StaticText(_("Edit DNS")) + + self["VKeyIcon"] = Boolean(False) + self["HelpWindow"] = Pixmap() + self["HelpWindow"].hide() + def layoutFinished(self): self["DNS1"].setText(self.primaryDNS.getText()) self["DNS2"].setText(self.secondaryDNS.getText()) @@ -368,17 +373,15 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self["IP"].setText(_("N/A")) if iNetwork.getAdapterAttribute(self.iface, "gateway"): if self.gatewayConfigEntry.getText() == "0.0.0.0": + self["Gatewaytext"].setText(_("Gateway")) self["Gateway"].setText(_("N/A")) else: + self["Gatewaytext"].setText(_("Gateway")) self["Gateway"].setText(self.gatewayConfigEntry.getText()) else: - self["Gateway"].hide() - self["Gatewaytext"].hide() + self["Gateway"].setText("") + self["Gatewaytext"].setText("") self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface)) - self["ButtonGreen"].hide() - self["VKeyIcon"].hide() - self["VirtualKB"].setEnabled(False) - self["HelpWindow"].hide() def createConfig(self): self.InterfaceEntry = None @@ -394,7 +397,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.weplist = None self.wsconfig = None self.default = None - + if self.iface == "wlan0" or self.iface == "ath0" : from Plugins.SystemPlugins.WirelessLan.Wlan import wpaSupplicant,Wlan self.w = Wlan(self.iface) @@ -416,28 +419,25 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): try: self.aps = self.w.getNetworkList() if self.aps is not None: - print "[NetworkSetup.py] got Accespoints!" for ap in self.aps: a = self.aps[ap] if a['active']: - if a['essid'] == "": - a['essid'] = a['bssid'] - self.nwlist.append( a['essid']) + if a['essid'] != '': + self.nwlist.append((a['essid'],a['essid'])) self.nwlist.sort(key = lambda x: x[0]) except: - self.nwlist.append("No Networks found") + self.nwlist.append(("No Networks found",_("No Networks found"))) self.wsconfig = self.ws.loadConfig() if self.essid is not None: # ssid from wlan scan self.default = self.essid else: self.default = self.wsconfig['ssid'] - + if "hidden..." not in self.nwlist: - self.nwlist.append("hidden...") + self.nwlist.append(("hidden...",_("enter hidden network SSID"))) if self.default not in self.nwlist: - self.nwlist.append(self.default) - + self.nwlist.append((self.default,self.default)) config.plugins.wlan.essid = NoSave(ConfigSelection(self.nwlist, default = self.default )) config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = self.wsconfig['hiddenessid'], visible_width = 50, fixed_size = False)) @@ -445,7 +445,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): config.plugins.wlan.encryption.type = NoSave(ConfigSelection(self.encryptionlist, default = self.wsconfig['encryption_type'] )) config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(self.weplist, default = self.wsconfig['encryption_wepkeytype'] )) config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = self.wsconfig['key'], visible_width = 50, fixed_size = False)) - + 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.ipConfigEntry = NoSave(ConfigIP(default=iNetwork.getAdapterAttribute(self.iface, "ip")) or [0,0,0,0]) @@ -463,7 +463,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): 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) @@ -475,8 +475,8 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.list.append(self.gatewayEntry) if self.hasGatewayConfigEntry.value: self.list.append(getConfigListEntry(_('Gateway'), self.gatewayConfigEntry)) - - self.extended = None + + self.extended = None for p in plugins.getPlugins(PluginDescriptor.WHERE_NETWORKSETUP): callFnc = p.__call__["ifaceSupported"](self.iface) if callFnc is not None: @@ -502,39 +502,18 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.list.append(self.encryptionType) if config.plugins.wlan.encryption.type.value == 'WEP': self.list.append(getConfigListEntry(_("Encryption Keytype"), config.plugins.wlan.encryption.wepkeytype)) - self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) - self.list.append(self.encryptionKey) - else: - self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) + self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) self.list.append(self.encryptionKey) - - + else: + self.encryptionKey = getConfigListEntry(_("Encryption Key"), config.plugins.wlan.encryption.psk) + self.list.append(self.encryptionKey) + self["config"].list = self.list self["config"].l.setList(self.list) - if not self.selectionChanged in self["config"].onSelectionChanged: - self["config"].onSelectionChanged.append(self.selectionChanged) def KeyBlue(self): self.session.openWithCallback(self.NameserverSetupClosed, NameserverSetup) - def KeyGreen(self): - if self.iface == "wlan0" or self.iface == "ath0" : - if self["config"].getCurrent() == self.hiddenSSID: - if config.plugins.wlan.essid.value == 'hidden...': - self.session.openWithCallback(self.VirtualKeyBoardSSIDCallback, VirtualKeyBoard, title = (_("Enter WLAN network name/SSID:")), text = config.plugins.wlan.essid.value) - if self["config"].getCurrent() == self.encryptionKey: - self.session.openWithCallback(self.VirtualKeyBoardKeyCallback, VirtualKeyBoard, title = (_("Enter WLAN passphrase/key:")), text = config.plugins.wlan.encryption.psk.value) - - def VirtualKeyBoardSSIDCallback(self, callback = None): - if callback is not None and len(callback): - config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = callback, visible_width = 50, fixed_size = False)) - self.createSetup() - - def VirtualKeyBoardKeyCallback(self, callback = None): - if callback is not None and len(callback): - config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = callback, visible_width = 50, fixed_size = False)) - self.createSetup() - def newConfig(self): if self["config"].getCurrent() == self.InterfaceEntry: self.createSetup() @@ -542,13 +521,14 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.createSetup() if self["config"].getCurrent() == self.gatewayEntry: self.createSetup() - if self.iface == "wlan0" or self.iface == "ath0" : + if self.iface == "wlan0" or self.iface == "ath0" : if self["config"].getCurrent() == self.wlanSSID: self.createSetup() if self["config"].getCurrent() == self.encryptionEnabled: self.createSetup() if self["config"].getCurrent() == self.encryptionType: - self.createSetup() + self.createSetup() + def keyLeft(self): ConfigListScreen.keyLeft(self) self.newConfig() @@ -556,37 +536,41 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): def keyRight(self): ConfigListScreen.keyRight(self) self.newConfig() + + def keySave(self): + self.hideInputHelp() + if self["config"].isChanged(): + self.session.openWithCallback(self.keySaveConfirm, MessageBox, (_("Are you sure you want to activate this network configuration?\n\n") + self.oktext ) ) + else: + if self.finished_cb: + self.finished_cb() + else: + self.close('cancel') - def selectionChanged(self): - current = self["config"].getCurrent() - if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...': - helpwindowpos = self["HelpWindow"].getPosition() - if current[1].help_window.instance is not None: - current[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1])) - self["ButtonGreen"].show() - self["VKeyIcon"].show() - self["VirtualKB"].setEnabled(True) - elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value: - helpwindowpos = self["HelpWindow"].getPosition() - if current[1].help_window.instance is not None: - current[1].help_window.instance.move(ePoint(helpwindowpos[0],helpwindowpos[1])) - self["ButtonGreen"].show() - self["VKeyIcon"].show() - self["VirtualKB"].setEnabled(True) - else: - self["ButtonGreen"].hide() - self["VKeyIcon"].hide() - self["VirtualKB"].setEnabled(False) + def keySaveConfirm(self, ret = False): + if (ret == True): + num_configured_if = len(iNetwork.getConfiguredAdapters()) + if num_configured_if >= 1: + if num_configured_if == 1 and self.iface in iNetwork.getConfiguredAdapters(): + self.applyConfig(True) + else: + 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) + else: + self.applyConfig(True) + else: + self.keyCancel() - def ok(self): - current = self["config"].getCurrent() - if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...': - if current[1].help_window.instance is not None: - current[1].help_window.instance.hide() - elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value: - if current[1].help_window.instance is not None: - current[1].help_window.instance.hide() - self.session.openWithCallback(self.applyConfig, MessageBox, (_("Are you sure you want to activate this network configuration?\n\n") + self.oktext ) ) + def secondIfaceFoundCB(self,data): + if data is False: + self.applyConfig(True) + else: + configuredInterfaces = iNetwork.getConfiguredAdapters() + for interface in configuredInterfaces: + if interface == self.iface: + continue + iNetwork.setAdapterAttribute(interface, "up", False) + iNetwork.deactivateInterface(interface) + self.applyConfig(True) def applyConfig(self, ret = False): if (ret == True): @@ -603,12 +587,12 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.ws.writeConfig() if self.activateInterfaceEntry.value is False: iNetwork.deactivateInterface(self.iface) - iNetwork.writeNetworkConfig() + iNetwork.writeNetworkConfig() iNetwork.restartNetwork(self.applyConfigDataAvail) self.applyConfigRef = self.session.openWithCallback(self.applyConfigfinishedCB, MessageBox, _("Please wait for activation of your network configuration..."), type = MessageBox.TYPE_INFO, enable_input = False) else: - self.cancel() - + self.keyCancel() + def applyConfigDataAvail(self, data): if data is True: iNetwork.getInterfaces(self.getInterfacesDataAvail) @@ -619,52 +603,40 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): def applyConfigfinishedCB(self,data): if data is True: - num_configured_if = len(iNetwork.getConfiguredAdapters()) - if num_configured_if >= 2: - self.session.openWithCallback(self.secondIfaceFoundCB, MessageBox, _("Your network configuration has been activated.\nA second configured interface has been found.\n\nDo you want to disable the second network interface?"), default = True) + if self.finished_cb: + self.session.openWithCallback(lambda x : self.finished_cb(), MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10) else: - if self.finished_cb: - self.session.openWithCallback(lambda x : self.finished_cb(), MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10) - else: - self.session.openWithCallback(self.ConfigfinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10) - - def secondIfaceFoundCB(self,data): - if data is False: - self.close('ok') - else: - configuredInterfaces = iNetwork.getConfiguredAdapters() - for interface in configuredInterfaces: - if interface == self.iface: - continue - iNetwork.setAdapterAttribute(interface, "up", False) - iNetwork.deactivateInterface(interface) - self.applyConfig(True) - + self.session.openWithCallback(self.ConfigfinishedCB, MessageBox, _("Your network configuration has been activated."), type = MessageBox.TYPE_INFO, timeout = 10) + def ConfigfinishedCB(self,data): if data is not None: if data is True: self.close('ok') - def cancel(self): + def keyCancelConfirm(self, result): + if not result: + return if self.oldInterfaceState is False: - iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB) + iNetwork.deactivateInterface(self.iface,self.keyCancelCB) else: self.close('cancel') - def deactivateInterfaceCB(self,data): - if data is not None: - if data is True: - iNetwork.getInterfaces(self.cancelCB) - - def cancelCB(self,data): + def keyCancel(self): + self.hideInputHelp() + if self["config"].isChanged(): + self.session.openWithCallback(self.keyCancelConfirm, MessageBox, _("Really close without saving settings?")) + else: + self.close('cancel') + + def keyCancelCB(self,data): if data is not None: if data is True: self.close('cancel') - + def runAsync(self, finished_cb): self.finished_cb = finished_cb - self.ok() - + self.keySave() + def NameserverSetupClosed(self, *ret): iNetwork.loadNameserverConfig() nameserver = (iNetwork.getNameserverList() + [[0,0,0,0]] * 2)[0:2] @@ -672,11 +644,19 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen): self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1])) self.createSetup() self.layoutFinished() - + def cleanup(self): iNetwork.stopLinkStateConsole() - iNetwork.stopDeactivateInterfaceConsole() + def hideInputHelp(self): + current = self["config"].getCurrent() + if current == self.hiddenSSID and config.plugins.wlan.essid.value == 'hidden...': + if current[1].help_window.instance is not None: + current[1].help_window.instance.hide() + elif current == self.encryptionKey and config.plugins.wlan.encryption.enabled.value: + if current[1].help_window.instance is not None: + current[1].help_window.instance.hide() + class AdapterSetupConfiguration(Screen, HelpableScreen): def __init__(self, session,iface): @@ -685,18 +665,16 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): self.session = session self.iface = iface self.restartLanRef = None + self.LinkState = None self.mainmenu = self.genMainMenu() self["menulist"] = MenuList(self.mainmenu) - self["description"] = Label() - self["IFtext"] = Label() - self["IF"] = Label() - self["BottomBG"] = Label() - self["Statustext"] = Label() + self["key_red"] = StaticText(_("Close")) + self["description"] = StaticText() + self["IFtext"] = StaticText() + self["IF"] = StaticText() + self["Statustext"] = StaticText() 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.") @@ -732,11 +710,12 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): "right": self.right, }, -2) - iNetwork.getInterfaces(self.updateStatusbar) + self.updateStatusbar() self.onLayoutFinish.append(self.layoutFinished) self.onClose.append(self.cleanup) def ok(self): + self.cleanup() if self["menulist"].getCurrent()[1] == 'edit': if self.iface == 'wlan0' or self.iface == 'ath0': try: @@ -817,7 +796,6 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): self.loadDescription() def loadDescription(self): - print self["menulist"].getCurrent()[1] if self["menulist"].getCurrent()[1] == 'edit': self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'test': @@ -825,7 +803,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): 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': - self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your WLAN USB Stick\n" ) + self.oktext ) + self["description"].setText(_("Scan your network for wireless Access Points and connect to them using your selected wireless device.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'wlanstatus': self["description"].setText(_("Shows the state of your wireless LAN connection.\n" ) + self.oktext ) if self["menulist"].getCurrent()[1] == 'lanrestart': @@ -836,16 +814,18 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): self["description"].setText(_(self["menulist"].getCurrent()[1][1]) + self.oktext ) def updateStatusbar(self, data = None): + self.mainmenu = self.genMainMenu() + self["menulist"].l.setList(self.mainmenu) self["IFtext"].setText(_("Network:")) self["IF"].setText(iNetwork.getFriendlyAdapterName(self.iface)) self["Statustext"].setText(_("Link:")) if self.iface == 'wlan0' or self.iface == 'ath0': try: - from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status + from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus except: - self["statuspic"].setPixmapNum(1) - self["statuspic"].show() + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() else: iStatus.getDataForInterface(self.iface,self.getInfoCB) else: @@ -867,7 +847,6 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): callFnc = p.__call__["ifaceSupported"](self.iface) if callFnc is not None: self.extended = callFnc - print p.__call__ if p.__call__.has_key("WlanPluginEntry"): # internally used only for WLAN Plugin menu.append((_("Scan Wireless Networks"), "scanwlan")) if iNetwork.getAdapterAttribute(self.iface, "up"): @@ -906,21 +885,15 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): # Display Wlan not available Message self.showErrorMessage() else: - self.mainmenu = self.genMainMenu() - self["menulist"].l.setList(self.mainmenu) - iNetwork.getInterfaces(self.updateStatusbar) + self.updateStatusbar() else: - self.mainmenu = self.genMainMenu() - self["menulist"].l.setList(self.mainmenu) - iNetwork.getInterfaces(self.updateStatusbar) + self.updateStatusbar() def WlanStatusClosed(self, *ret): if ret is not None and len(ret): from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status iStatus.stopWlanConsole() - self.mainmenu = self.genMainMenu() - self["menulist"].l.setList(self.mainmenu) - iNetwork.getInterfaces(self.updateStatusbar) + self.updateStatusbar() def WlanScanClosed(self,*ret): if ret[0] is not None: @@ -928,9 +901,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): else: from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status iStatus.stopWlanConsole() - self.mainmenu = self.genMainMenu() - self["menulist"].l.setList(self.mainmenu) - iNetwork.getInterfaces(self.updateStatusbar) + self.updateStatusbar() def restartLan(self, ret = False): if (ret == True): @@ -947,18 +918,23 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): def restartfinishedCB(self,data): if data is True: + self.updateStatusbar() self.session.open(MessageBox, _("Finished restarting your network"), type = MessageBox.TYPE_INFO, timeout = 10, default = False) def dataAvail(self,data): - self.output = data.strip() - result = self.output.split('\n') - pattern = re_compile("Link detected: yes") - for item in result: - if re_search(pattern, item): - self["statuspic"].setPixmapNum(1) - else: - self["statuspic"].setPixmapNum(0) - self["statuspic"].show() + self.LinkState = None + for line in data.splitlines(): + line = line.strip() + if 'Link detected:' in line: + if "yes" in line: + self.LinkState = True + else: + self.LinkState = False + if self.LinkState == True: + iNetwork.checkNetworkState(self.checkNetworkCB) + else: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() def showErrorMessage(self): self.session.open(MessageBox, self.errortext, type = MessageBox.TYPE_INFO,timeout = 10 ) @@ -966,29 +942,48 @@ class AdapterSetupConfiguration(Screen, HelpableScreen): def cleanup(self): iNetwork.stopLinkStateConsole() iNetwork.stopDeactivateInterfaceConsole() + iNetwork.stopPingConsole() try: - from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status + from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus except ImportError: pass else: iStatus.stopWlanConsole() def getInfoCB(self,data,status): + self.LinkState = None if data is not None: if data is True: if status is not None: if status[self.iface]["acesspoint"] == "No Connection" or status[self.iface]["acesspoint"] == "Not-Associated" or status[self.iface]["acesspoint"] == False: + self.LinkState = False self["statuspic"].setPixmapNum(1) + self["statuspic"].show() else: - self["statuspic"].setPixmapNum(0) - self["statuspic"].show() + self.LinkState = True + iNetwork.checkNetworkState(self.checkNetworkCB) + + def checkNetworkCB(self,data): + if iNetwork.getAdapterAttribute(self.iface, "up") is True: + if self.LinkState is True: + if data <= 2: + self["statuspic"].setPixmapNum(0) + else: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() + else: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() + else: + self["statuspic"].setPixmapNum(1) + self["statuspic"].show() + class NetworkAdapterTest(Screen): def __init__(self, session,iface): Screen.__init__(self, session) self.iface = iface self.oldInterfaceState = iNetwork.getAdapterAttribute(self.iface, "up") - iNetwork.getInterfaces() self.setLabels() self.onClose.append(self.cleanup) self.onHide.append(self.cleanup) @@ -1047,7 +1042,7 @@ class NetworkAdapterTest(Screen): self["infoshortcuts"].setEnabled(False) self["InfoText"].hide() self["InfoTextBorder"].hide() - self["ButtonRedtext"].setText(_("Close")) + self["key_red"].setText(_("Close")) def delTimer(self): del self.steptimer @@ -1135,8 +1130,7 @@ class NetworkAdapterTest(Screen): def doStep1(self): self.steptimer = True self.nextStepTimer.start(3000) - self["ButtonYellow_Check"].show() - self["ButtonYellowtext"].show() + self["key_yellow"].setText(_("Stop test")) def doStep2(self): self["Adapter"].setText(iNetwork.getFriendlyAdapterName(self.iface)) @@ -1186,8 +1180,8 @@ class NetworkAdapterTest(Screen): self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(True) self["updown_actions"].setEnabled(False) - self["ButtonYellow_Check"].setPixmapNum(0) - self["ButtonGreen_Check"].setPixmapNum(1) + self["key_yellow"].setText("") + self["key_green"].setText("") self.steptimer = True self.nextStepTimer.start(1000) @@ -1208,8 +1202,8 @@ class NetworkAdapterTest(Screen): self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(True) self["updown_actions"].setEnabled(False) - self["ButtonYellow_Check"].setPixmapNum(0) - self["ButtonGreen_Check"].setPixmapNum(1) + self["key_yellow"].setText("") + self["key_green"].setText("") self.steptimer = True self.nextStepTimer.start(1000) @@ -1220,27 +1214,27 @@ class NetworkAdapterTest(Screen): self["InfoText"].setText(_("This test detects your configured LAN-Adapter.")) self["InfoTextBorder"].show() self["InfoText"].show() - self["ButtonRedtext"].setText(_("Back")) + self["key_red"].setText(_("Back")) 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")) + self["key_red"].setText(_("Back")) 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")) + self["key_red"].setText(_("Back")) 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")) + self["key_red"].setText(_("Back")) 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")) + self["key_red"].setText(_("Back")) if self.activebutton == 6: # Edit Settings self.session.open(AdapterSetup,self.iface) @@ -1249,9 +1243,8 @@ class NetworkAdapterTest(Screen): self["shortcutsgreen_restart"].setEnabled(True) self["shortcutsgreen"].setEnabled(False) self["shortcutsyellow"].setEnabled(False) - self["ButtonGreentext"].setText(_("Restart test")) - self["ButtonYellow_Check"].setPixmapNum(1) - self["ButtonGreen_Check"].setPixmapNum(0) + self["key_green"].setText(_("Restart test")) + self["key_yellow"].setText("") self.steptimer = False self.nextStepTimer.stop() @@ -1266,8 +1259,7 @@ class NetworkAdapterTest(Screen): self["EditSettingsButton"].hide() self["InfoText"].hide() self["InfoTextBorder"].hide() - self["ButtonYellow_Check"].hide() - self["ButtonYellowtext"].hide() + self["key_yellow"].setText("") def setLabels(self): self["Adaptertext"] = MultiColorLabel(_("LAN Adapter")) @@ -1307,14 +1299,9 @@ class NetworkAdapterTest(Screen): self["EditSettings_Text"] = MultiColorLabel(_("Edit settings")) self["EditSettingsButton"] = MultiPixmap() - self["ButtonRedtext"] = Label(_("Close")) - self["ButtonRed"] = Pixmap() - - self["ButtonGreentext"] = Label(_("Start test")) - self["ButtonGreen_Check"] = MultiPixmap() - - self["ButtonYellowtext"] = Label(_("Stop test")) - self["ButtonYellow_Check"] = MultiPixmap() + self["key_red"] = StaticText(_("Close")) + self["key_green"] = StaticText(_("Start test")) + self["key_yellow"] = StaticText(_("Stop test")) self["InfoTextBorder"] = Pixmap() self["InfoText"] = Label() @@ -1377,9 +1364,8 @@ class NetworkAdapterTest(Screen): 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_Check"].setPixmapNum(0) + self["key_yellow"].setText("") + self["key_green"].setText(_("Restart test")) self["shortcutsgreen"].setEnabled(False) self["shortcutsgreen_restart"].setEnabled(True) self["shortcutsyellow"].setEnabled(False) @@ -1410,4 +1396,4 @@ class NetworkAdapterTest(Screen): pass else: iStatus.stopWlanConsole() - +