Merge commit 'origin/bug_202_networkconfig_cleanup' into experimental
[vuplus_dvbapp] / lib / python / Screens / NetworkSetup.py
index 580673e..3e9354e 100755 (executable)
@@ -5,6 +5,8 @@ from Screens.Standby import *
 from Screens.VirtualKeyBoard import VirtualKeyBoard
 from Screens.HelpMenu import HelpableScreen
 from Components.Network import iNetwork
 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
 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 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
 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 ):
                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:
        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:
                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:
                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:
        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
 
        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.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.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()]
                
                
                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",
                        self.onFirstExecBegin.append(self.NetworkFallback)
                        
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
@@ -73,34 +79,35 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
 
                self["ColorActions"] = HelpableActionMap(self, "ColorActions",
                        {
 
                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",
                        {
                        })
                
                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()
                self.list = []
                self["list"] = InterfaceList(self.list)
                self.updateList()
-               
+
                if len(self.adapters) == 1:
                        self.onFirstExecBegin.append(self.okbuttonClick)
                self.onClose.append(self.cleanup)
                if len(self.adapters) == 1:
                        self.onFirstExecBegin.append(self.okbuttonClick)
                self.onClose.append(self.cleanup)
-               
+
+
        def updateList(self):
        def updateList(self):
-               iNetwork.getInterfaces()
                self.list = []
                default_gw = None
                num_configured_if = len(iNetwork.getConfiguredAdapters())
                if num_configured_if >= 2:
                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["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"):
                        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 ))
                                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):
                self["list"].l.setList(self.list)
 
        def setDefaultInterface(self):
@@ -175,6 +183,7 @@ class NetworkAdapterSelection(Screen,HelpableScreen):
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
                iNetwork.stopRestartConsole()
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
                iNetwork.stopRestartConsole()
+               iNetwork.stopGetInterfacesConsole()
 
        def restartLan(self):
                iNetwork.restartNetwork(self.restartLanDataAvail)
 
        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)
 
 
                        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)
 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.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.createConfig()
-               
+
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
                        {
                        "cancel": (self.cancel, _("exit nameserver configuration")),
                        "ok": (self.ok, _("activate current configuration")),
                        })
                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["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.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 = []
 
        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)
 
                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()
 
        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()
                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)
 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.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",
                        {
                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",
                        {
                        })
 
                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")),
                        })
 
                        "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"],
                {
                self["actions"] = NumberActionMap(["SetupActions"],
                {
-                       "ok": self.ok,
+                       "ok": self.keySave,
                }, -2)
                }, -2)
-               
-               
+
                self.list = []
                ConfigListScreen.__init__(self, self.list,session = self.session)
                self.createSetup()
                self.onLayoutFinish.append(self.layoutFinished)
                self.onClose.append(self.cleanup)
                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())
        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["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["Gateway"].setText(_("N/A"))
                        else:
+                               self["Gatewaytext"].setText(_("Gateway"))
                                self["Gateway"].setText(self.gatewayConfigEntry.getText())
                else:
                                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["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
 
        def createConfig(self):
                self.InterfaceEntry = None
@@ -394,7 +397,7 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
                self.weplist = None
                self.wsconfig = None
                self.default = None
                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)
                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:
                                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']:
                                                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.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']
 
                        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:
                        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:
                        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))
 
                        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))
                        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])
                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)
        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.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.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:
                        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.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)
                                                                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)
                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 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()
        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()
                        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:
                        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()
        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 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):
 
        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)
                                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:
                        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)
        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:
 
        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:
                        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 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:
                if self.oldInterfaceState is False:
-                       iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB)
+                       iNetwork.deactivateInterface(self.iface,self.keyCancelCB)
                else:
                        self.close('cancel')
 
                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')
                if data is not None:
                        if data is True:
                                self.close('cancel')
-                               
+
        def runAsync(self, finished_cb):
                self.finished_cb = finished_cb
        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]
        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()
                self.secondaryDNS = NoSave(ConfigIP(default=nameserver[1]))
                self.createSetup()
                self.layoutFinished()
-               
+
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
        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):
 
 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.session = session
                self.iface = iface
                self.restartLanRef = None
+               self.LinkState = None
                self.mainmenu = self.genMainMenu()
                self["menulist"] = MenuList(self.mainmenu)
                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["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.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)
                
                        "right": self.right,
                }, -2)
                
-               iNetwork.getInterfaces(self.updateStatusbar)
+               self.updateStatusbar()
                self.onLayoutFinish.append(self.layoutFinished)
                self.onClose.append(self.cleanup)
 
        def ok(self):
                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:
                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):
                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':
                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':
                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':
                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["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:
                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:
                        except:
-                                       self["statuspic"].setPixmapNum(1)
-                                       self["statuspic"].show()
+                               self["statuspic"].setPixmapNum(1)
+                               self["statuspic"].show()
                        else:
                                iStatus.getDataForInterface(self.iface,self.getInfoCB)
                else:
                        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
                        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"):
                                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:
                                                # 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:
                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()
 
        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:
 
        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()
                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):
                        
        def restartLan(self, ret = False):
                if (ret == True):
@@ -947,18 +918,23 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
 
        def restartfinishedCB(self,data):
                if data is True:
 
        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.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 )
 
        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()
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
                iNetwork.stopDeactivateInterfaceConsole()
+               iNetwork.stopPingConsole()
                try:
                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):
                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:
                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"].setPixmapNum(1)
+                                               self["statuspic"].show()
                                        else:
                                        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")
 
 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)
                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["infoshortcuts"].setEnabled(False)
                self["InfoText"].hide()
                self["InfoTextBorder"].hide()
-               self["ButtonRedtext"].setText(_("Close"))
+               self["key_red"].setText(_("Close"))
 
        def delTimer(self):
                del self.steptimer
 
        def delTimer(self):
                del self.steptimer
@@ -1135,8 +1130,7 @@ class NetworkAdapterTest(Screen):
        def doStep1(self):
                self.steptimer = True
                self.nextStepTimer.start(3000)
        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))
 
        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["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)
 
                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["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)
 
                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["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()
                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()
                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()
                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()
                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)
 
                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["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()
 
                self.steptimer = False
                self.nextStepTimer.stop()
 
@@ -1266,8 +1259,7 @@ class NetworkAdapterTest(Screen):
                self["EditSettingsButton"].hide()
                self["InfoText"].hide()
                self["InfoTextBorder"].hide()
                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"))
 
        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["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()
                
                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["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)
                self["shortcutsgreen"].setEnabled(False)
                self["shortcutsgreen_restart"].setEnabled(True)
                self["shortcutsyellow"].setEnabled(False)
@@ -1410,4 +1396,4 @@ class NetworkAdapterTest(Screen):
                        pass
                else:
                        iStatus.stopWlanConsole()
                        pass
                else:
                        iStatus.stopWlanConsole()
-                       
+