better async handling
authoracid-burn <acidburn@opendreambox.org>
Thu, 6 Nov 2008 13:48:51 +0000 (14:48 +0100)
committeracid-burn <acidburn@opendreambox.org>
Thu, 6 Nov 2008 13:48:51 +0000 (14:48 +0100)
dont open adaptersetup after wlanscan close, only open on connect inside wlanscan
some cleanups and fixes

lib/python/Components/Network.py
lib/python/Screens/NetworkSetup.py

index e317ef055855682aed00963582f1681b2e8db29c..c41469da87b9533d5c5748195c9575f3b1940cde 100755 (executable)
@@ -18,6 +18,7 @@ class Network:
                self.LinkConsole = Console()
                self.restartConsole = Console()
                self.deactivateConsole = Console()
                self.LinkConsole = Console()
                self.restartConsole = Console()
                self.deactivateConsole = Console()
+               self.deactivateInterfaceConsole = Console()
                self.activateConsole = Console()
                self.resetNetworkConsole = Console()
                self.DnsConsole = Console()
                self.activateConsole = Console()
                self.resetNetworkConsole = Console()
                self.DnsConsole = Console()
@@ -74,7 +75,7 @@ class Network:
                macRegexp = '[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[a-z0-9]{2}\:[a-z0-9]{2}\:[a-z0-9]{2}'
                ipLinePattern = re_compile('inet ' + ipRegexp + '/')
                ipPattern = re_compile(ipRegexp)
                macRegexp = '[0-9]{2}\:[0-9]{2}\:[0-9]{2}\:[a-z0-9]{2}\:[a-z0-9]{2}\:[a-z0-9]{2}'
                ipLinePattern = re_compile('inet ' + ipRegexp + '/')
                ipPattern = re_compile(ipRegexp)
-               netmaskLinePattern = re_compile(ipRegexp + '/' + netRegexp)
+               netmaskLinePattern = re_compile('/' + netRegexp)
                netmaskPattern = re_compile(netRegexp)
                bcastLinePattern = re_compile(' brd ' + ipRegexp)
                upPattern = re_compile('UP')
                netmaskPattern = re_compile(netRegexp)
                bcastLinePattern = re_compile(' brd ' + ipRegexp)
                upPattern = re_compile('UP')
@@ -412,7 +413,7 @@ class Network:
                                if len(self.PingConsole.appContainers) == 0:
                                        statecallback(self.NetworkState)
                
                                if len(self.PingConsole.appContainers) == 0:
                                        statecallback(self.NetworkState)
                
-       def restartNetwork(self,callback):
+       def restartNetwork(self,callback = None):
                self.restartConsole = Console()
                self.commands = []
                self.commands.append("/etc/init.d/avahi-daemon stop")
                self.restartConsole = Console()
                self.commands = []
                self.commands.append("/etc/init.d/avahi-daemon stop")
@@ -427,8 +428,8 @@ class Network:
                self.restartConsole.eBatch(self.commands, self.restartNetworkFinished, callback, debug=True)
        
        def restartNetworkFinished(self,extra_args):
                self.restartConsole.eBatch(self.commands, self.restartNetworkFinished, callback, debug=True)
        
        def restartNetworkFinished(self,extra_args):
-               callback = extra_args
-               if len(self.restartConsole.appContainers) == 0:
+               ( callback ) = extra_args
+               if callback is not None:
                        callback(True)
 
        def getLinkState(self,iface,callback):
                        callback(True)
 
        def getLinkState(self,iface,callback):
@@ -454,12 +455,13 @@ class Network:
                if self.restartConsole is not None:
                        self.restartConsole = None
                        
                if self.restartConsole is not None:
                        self.restartConsole = None
                        
-       def RestartConsoleRunning(self):
-               if self.restartConsole is not None:
-                       if len(self.restartConsole.appContainers) == 0:
-                               return False
-                       else:
-                               return True
+       def stopGetInterfacesConsole(self):
+               if self.Console is not None:
+                       self.Console = None
+
+       def stopDeactivateInterfaceConsole(self):
+               if self.deactivateInterfaceConsole:
+                       self.deactivateInterfaceConsole = None
                        
        def checkforInterface(self,iface):
                if self.getAdapterAttribute(iface, 'up') is True:
                        
        def checkforInterface(self,iface):
                if self.getAdapterAttribute(iface, 'up') is True:
@@ -492,17 +494,20 @@ class Network:
                                if len(self.DnsConsole.appContainers) == 0:
                                        statecallback(self.DnsState)
 
                                if len(self.DnsConsole.appContainers) == 0:
                                        statecallback(self.DnsState)
 
-       def deactivateInterface(self,iface):
+       def deactivateInterface(self,iface,callback = None):
                self.deactivateInterfaceConsole = Console()
                self.commands = []
                cmd1 = "ip addr flush " + iface
                cmd2 = "ifconfig " + iface + " down"
                self.commands.append(cmd1)
                self.commands.append(cmd2)
                self.deactivateInterfaceConsole = Console()
                self.commands = []
                cmd1 = "ip addr flush " + iface
                cmd2 = "ifconfig " + iface + " down"
                self.commands.append(cmd1)
                self.commands.append(cmd2)
-               self.deactivateInterfaceConsole.eBatch(self.commands, self.deactivateInterfaceFinished, extra_args = None, debug=True)
+               self.deactivateInterfaceConsole.eBatch(self.commands, self.deactivateInterfaceFinished, callback, debug=True)
 
        def deactivateInterfaceFinished(self,extra_args):
 
        def deactivateInterfaceFinished(self,extra_args):
-               pass
+               callback = extra_args
+               if len(self.deactivateInterfaceConsole.appContainers) == 0:
+                       if callback is not None:
+                               callback(True)
 
        def detectWlanModule(self):
                self.wlanmodule = None
 
        def detectWlanModule(self):
                self.wlanmodule = None
index 619db4e1bbd269d7afc559e3a33559c91a51e7ff..887e1674417e87d3e9f362ee7a59380ef77e39cc 100755 (executable)
@@ -285,13 +285,12 @@ 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")
-               #iNetwork.getInterfaces()
                
                self.createConfig()
 
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
                        {
                
                self.createConfig()
 
                self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions",
                        {
-                       "cancel": (self.close, _("exit networkadapter setup menu")),
+                       "cancel": (self.cancel, _("exit networkadapter setup menu")),
                        "ok": (self.ok, _("select menu entry")),
                        })
 
                        "ok": (self.ok, _("select menu entry")),
                        })
 
@@ -413,7 +412,6 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
                                        self.aps = self.w.getNetworkList()
                                        if self.aps is not None:
                                                print "[NetworkSetup.py] got Accespoints!"
                                        self.aps = self.w.getNetworkList()
                                        if self.aps is not None:
                                                print "[NetworkSetup.py] got Accespoints!"
-                                               #print self.aps
                                                for ap in self.aps:
                                                        a = self.aps[ap]
                                                        if a['active']:
                                                for ap in self.aps:
                                                        a = self.aps[ap]
                                                        if a['active']:
@@ -638,17 +636,26 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
                                self.applyConfig(True)
                        
        def ConfigfinishedCB(self,data):
                                self.applyConfig(True)
                        
        def ConfigfinishedCB(self,data):
-               if data is True:
-                       self.close('ok')
+               if data is not None:
+                       if data is True:
+                               self.close('ok')
 
        def cancel(self):
 
        def cancel(self):
-               iNetwork.setAdapterAttribute(self.iface, "up", self.oldInterfaceState)
-               self.activateInterfaceEntry.value = self.oldInterfaceState
-               if self.activateInterfaceEntry.value is False:
-                       iNetwork.deactivateInterface(self.iface)
-               iNetwork.getInterfaces()
-               self.close('cancel')
+               if self.oldInterfaceState is False:
+                       iNetwork.deactivateInterface(self.iface,self.deactivateInterfaceCB)
+               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):                        
+               if data is not None:
+                       if data is True:
+                               self.close('cancel')
+                               
        def runAsync(self, finished_cb):
                self.finished_cb = finished_cb
                self.ok()
        def runAsync(self, finished_cb):
                self.finished_cb = finished_cb
                self.ok()
@@ -663,7 +670,8 @@ class AdapterSetup(Screen, ConfigListScreen, HelpableScreen):
                
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
                
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
-               iNetwork.stopRestartConsole()   
+               iNetwork.stopDeactivateInterfaceConsole()
+               
 
 class AdapterSetupConfiguration(Screen, HelpableScreen):
        def __init__(self, session,iface):
 
 class AdapterSetupConfiguration(Screen, HelpableScreen):
        def __init__(self, session,iface):
@@ -722,7 +730,6 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
                iNetwork.getInterfaces(self.updateStatusbar)
                self.onLayoutFinish.append(self.layoutFinished)
                self.onClose.append(self.cleanup)
                iNetwork.getInterfaces(self.updateStatusbar)
                self.onLayoutFinish.append(self.layoutFinished)
                self.onClose.append(self.cleanup)
-               self.onHide.append(self.cleanup)
 
        def ok(self):
                if self["menulist"].getCurrent()[1] == 'edit':
 
        def ok(self):
                if self["menulist"].getCurrent()[1] == 'edit':
@@ -914,8 +921,12 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
                if ret[0] is not None:
                        self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
                else:
                if ret[0] is not None:
                        self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,ret[0],ret[1])
                else:
-                       self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface,None,None)
-
+                       from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
+                       iStatus.stopWlanConsole()
+                       self.mainmenu = self.genMainMenu()
+                       self["menulist"].l.setList(self.mainmenu)
+                       iNetwork.getInterfaces(self.updateStatusbar)
+                       
        def restartLan(self, ret = False):
                if (ret == True):
                        iNetwork.restartNetwork(self.restartLanDataAvail)
        def restartLan(self, ret = False):
                if (ret == True):
                        iNetwork.restartNetwork(self.restartLanDataAvail)
@@ -949,6 +960,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
                
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
                
        def cleanup(self):
                iNetwork.stopLinkStateConsole()
+               iNetwork.stopDeactivateInterfaceConsole()
                try:
                        from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
                except ImportError:
                try:
                        from Plugins.SystemPlugins.WirelessLan.Wlan import iStatus,Status
                except ImportError: