Skip to content

Commit f02572c

Browse files
committed
[NetworkSetup]
* change OK action in AdapterSelection * add MENU action in AdapterSelection * revert remove NetworkWizard and NetworkRestart
1 parent d27771f commit f02572c

File tree

1 file changed

+67
-33
lines changed

1 file changed

+67
-33
lines changed

lib/python/Screens/NetworkSetup.py

Lines changed: 67 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,38 @@
3333
from Screens.Processing import Processing
3434
from Screens.Screen import Screen
3535
from Screens.Setup import Setup
36-
from Tools.Directories import SCOPE_SKINS, SCOPE_GUISKIN, fileReadLines, fileReadXML, fileWriteLine, fileWriteLines, resolveFilename
36+
from Tools.Directories import SCOPE_SKINS, SCOPE_GUISKIN, SCOPE_PLUGINS, fileReadLines, fileReadXML, fileWriteLine, fileWriteLines, resolveFilename
3737
from Tools.LoadPixmap import LoadPixmap
3838

3939
MODULE_NAME = __name__.split(".")[-1]
4040
BASE_GROUP = "packagegroup-base"
4141

4242

43+
def queryWirelessDevice(iface):
44+
try:
45+
from wifi.scan import Cell
46+
import errno
47+
except ImportError:
48+
return False
49+
else:
50+
from wifi.exceptions import InterfaceError
51+
try:
52+
system(f"ifconfig {iface} up")
53+
wlanresponse = list(Cell.all(iface)) # noqa F841
54+
except InterfaceError as ie:
55+
print(f"[NetworkSetup] queryWirelessDevice InterfaceError: {str(ie)}")
56+
return False
57+
except OSError as xxx_todo_changeme:
58+
(error_no, error_str) = xxx_todo_changeme.args
59+
if error_no in (errno.EOPNOTSUPP, errno.ENODEV, errno.EPERM):
60+
return False
61+
else:
62+
print(f"[NetworkSetup] queryWirelessDevice OSError: {error_no} '{error_str}'")
63+
return True
64+
else:
65+
return True
66+
67+
4368
class NetworkAdapterSelection(Screen):
4469
def __init__(self, session):
4570
Screen.__init__(self, session, enableHelp=True)
@@ -53,12 +78,13 @@ def __init__(self, session):
5378
self["key_yellow"] = StaticText("")
5479
self["key_blue"] = StaticText(_("Network Restart"))
5580
self["introduction"] = StaticText(self.edittext)
56-
self["OkCancelActions"] = HelpableActionMap(self, ["OkCancelActions", "ColorActions"], {
81+
self["OkCancelActions"] = HelpableActionMap(self, ["OkCancelActions", "ColorActions", "MenuActions"], {
5782
"cancel": (self.close, _("Exit network interface list")),
5883
"ok": (self.okbuttonClick, _("Select interface")),
5984
"red": (self.close, _("Exit network interface list")),
6085
"green": (self.okbuttonClick, _("Select interface")),
61-
"blue": (self.restartLanAsk, _("Restart network to with current setup"))
86+
"blue": (self.restartLanAsk, _("Restart network to with current setup")),
87+
"menu": (self.menubuttonClick, _("Select interface"))
6288
}, prio=0, description=_("Network Adapter Actions"))
6389
self.adapters = [(iNetwork.getFriendlyAdapterName(x), x) for x in iNetwork.getAdapterList()]
6490
if not self.adapters:
@@ -122,11 +148,24 @@ def updateList(self):
122148
self.list.append(self.buildInterfaceList(adapter[1], _(adapter[0]), 0, active_int))
123149
self["list"].setList(self.list)
124150

125-
def okbuttonClick(self):
151+
def menubuttonClick(self):
126152
selection = self["list"].getCurrent()
127-
if selection is not None:
153+
if selection:
128154
self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetupConfiguration, selection[0])
129155

156+
def okbuttonClick(self):
157+
selection = self["list"].getCurrent()
158+
if selection:
159+
if iNetwork.isWirelessInterface(selection[0]):
160+
try:
161+
from Plugins.SystemPlugins.WirelessLan.plugin import WlanScan
162+
if queryWirelessDevice(selection[0]):
163+
self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, selection[0])
164+
except ImportError:
165+
self.session.open(MessageBox, _("No working wireless network interface found.\n Please verify that you have attached a compatible WLAN device or enable your local network interface."), type=MessageBox.TYPE_INFO, timeout=10)
166+
else:
167+
self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, selection[0])
168+
130169
def AdapterSetupClosed(self, *ret):
131170
if len(self.adapters) == 1:
132171
self.close()
@@ -823,30 +862,6 @@ def __init__(self, session, iface):
823862
self["menulist"].onSelectionChanged.append(self.selectionChanged)
824863
self.selectionChanged()
825864

826-
def queryWirelessDevice(self, iface):
827-
try:
828-
from wifi.scan import Cell
829-
import errno
830-
except ImportError:
831-
return False
832-
else:
833-
from wifi.exceptions import InterfaceError
834-
try:
835-
system(f"ifconfig {self.iface} up")
836-
wlanresponse = list(Cell.all(iface)) # noqa F841
837-
except InterfaceError as ie:
838-
print(f"[NetworkSetup] queryWirelessDevice InterfaceError: {str(ie)}")
839-
return False
840-
except OSError as xxx_todo_changeme:
841-
(error_no, error_str) = xxx_todo_changeme.args
842-
if error_no in (errno.EOPNOTSUPP, errno.ENODEV, errno.EPERM):
843-
return False
844-
else:
845-
print(f"[NetworkSetup] queryWirelessDevice OSError: {error_no} '{error_str}'")
846-
return True
847-
else:
848-
return True
849-
850865
def ok(self):
851866
self.cleanup()
852867
if self["menulist"].getCurrent()[1] == "edit":
@@ -856,7 +871,7 @@ def ok(self):
856871
except ImportError:
857872
self.session.open(MessageBox, self.missingwlanplugintxt, type=MessageBox.TYPE_INFO, timeout=10)
858873
else:
859-
if self.queryWirelessDevice(self.iface):
874+
if queryWirelessDevice(self.iface):
860875
self.session.openWithCallback(self.AdapterSetupClosed, AdapterSetup, self.iface)
861876
else:
862877
self.showErrorMessage() # Display Wlan not available message.
@@ -872,7 +887,7 @@ def ok(self):
872887
except ImportError:
873888
self.session.open(MessageBox, self.missingwlanplugintxt, type=MessageBox.TYPE_INFO, timeout=10)
874889
else:
875-
if self.queryWirelessDevice(self.iface):
890+
if queryWirelessDevice(self.iface):
876891
self.session.openWithCallback(self.WlanScanClosed, WlanScan, self.iface)
877892
else:
878893
self.showErrorMessage() # Display Wlan not available message.
@@ -882,10 +897,15 @@ def ok(self):
882897
except ImportError:
883898
self.session.open(MessageBox, self.missingwlanplugintxt, type=MessageBox.TYPE_INFO, timeout=10)
884899
else:
885-
if self.queryWirelessDevice(self.iface):
900+
if queryWirelessDevice(self.iface):
886901
self.session.openWithCallback(self.WlanStatusClosed, WlanStatus, self.iface)
887902
else:
888903
self.showErrorMessage() # Display Wlan not available message.
904+
if self["menulist"].getCurrent()[1] == "lanrestart":
905+
self.session.openWithCallback(self.restartLan, MessageBox, "%s\n\n%s" % (_("Are you sure you want to restart your network interfaces?"), self.oktext))
906+
if self["menulist"].getCurrent()[1] == "openwizard":
907+
from Plugins.SystemPlugins.NetworkWizard.NetworkWizard import NetworkWizard
908+
self.session.openWithCallback(self.AdapterSetupClosed, NetworkWizard, self.iface)
889909
if self["menulist"].getCurrent()[1][0] == "extendedSetup":
890910
self.extended = self["menulist"].getCurrent()[1][2]
891911
self.extended(self.session, self.iface)
@@ -905,6 +925,10 @@ def selectionChanged(self):
905925
self["description"].setText("%s\n\n%s" % (_("Scan your network for wireless access points and connect to them using your selected wireless device."), self.oktext))
906926
if self["menulist"].getCurrent()[1] == "wlanstatus":
907927
self["description"].setText("%s\n\n%s" % (_("Shows the state of your wireless LAN connection."), self.oktext))
928+
if self["menulist"].getCurrent()[1] == "lanrestart":
929+
self["description"].setText("%s\n\n%s" % (_("Restart your network connection and interfaces."), self.oktext))
930+
if self["menulist"].getCurrent()[1] == "openwizard":
931+
self["description"].setText("%s\n\n%s" % (_("Use the network wizard to configure your Network."), self.oktext))
908932
if self["menulist"].getCurrent()[1][0] == "extendedSetup":
909933
self["description"].setText("%s\n\n%s" % (_(self["menulist"].getCurrent()[1][1]), self.oktext))
910934
item = self["menulist"].getCurrent()
@@ -942,6 +966,7 @@ def genMainMenu(self):
942966
(_("Adapter Settings"), "edit"),
943967
(_("Nameserver settings"), "dns"),
944968
(_("Network test"), "test"),
969+
(_("Restart Network"), "lanrestart")
945970
]
946971
self.extended = None
947972
self.extendedSetup = None
@@ -958,6 +983,8 @@ def genMainMenu(self):
958983
menuEntryDescription = p.__call__["menuEntryDescription"](self.iface) if "menuEntryDescription" in p.__call__ else _("Extended Networksetup Plugin...")
959984
self.extendedSetup = ("extendedSetup", menuEntryDescription, self.extended)
960985
menu.append((menuEntryName, self.extendedSetup))
986+
if exists(resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")):
987+
menu.append((_("Network Wizard"), "openwizard"))
961988
return menu
962989

963990
def AdapterSetupClosed(self, *ret):
@@ -968,7 +995,7 @@ def AdapterSetupClosed(self, *ret):
968995
except ImportError:
969996
self.session.open(MessageBox, self.missingwlanplugintxt, type=MessageBox.TYPE_INFO, timeout=10)
970997
else:
971-
if self.queryWirelessDevice(self.iface):
998+
if queryWirelessDevice(self.iface):
972999
self.session.openWithCallback(self.WlanStatusClosed, WlanStatus, self.iface)
9731000
else:
9741001
self.showErrorMessage() # Display Wlan not available message.
@@ -996,6 +1023,13 @@ def WlanScanClosed(self, *ret):
9961023
iStatus.stopWlanConsole()
9971024
self.updateStatusbar()
9981025

1026+
def restartLan(self, ret=False):
1027+
if ret is True:
1028+
def restartfinishedCB():
1029+
self.updateStatusbar()
1030+
self.session.open(MessageBox, _("Finished configuring your network"), type=MessageBox.TYPE_INFO, timeout=10, default=False)
1031+
RestartNetworkNew.start(callback=restartfinishedCB)
1032+
9991033
def dataAvail(self, data):
10001034
self.LinkState = None
10011035
for line in data.splitlines():

0 commit comments

Comments
 (0)