1 from Screens.Wizard import wizardManager, WizardSummary
2 from Screens.WizardLanguage import WizardLanguage
3 from Screens.Rc import Rc
4 from Screens.MessageBox import MessageBox
6 from Components.Pixmap import Pixmap, MovingPixmap, MultiPixmap
7 from Components.Sources.Boolean import Boolean
8 from Components.config import config, ConfigBoolean, configfile, ConfigYesNo, NoSave, ConfigSubsection, ConfigText, getConfigListEntry, ConfigSelection, ConfigPassword
9 from Components.Network import iNetwork
11 from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE
14 config.misc.firstrun = ConfigBoolean(default = True)
19 list.append("WPA/WPA2")
22 weplist.append("ASCII")
25 config.plugins.wlan = ConfigSubsection()
26 config.plugins.wlan.essid = NoSave(ConfigText(default = "home", fixed_size = False))
27 config.plugins.wlan.hiddenessid = NoSave(ConfigText(default = "home", fixed_size = False))
29 config.plugins.wlan.encryption = ConfigSubsection()
30 config.plugins.wlan.encryption.enabled = NoSave(ConfigYesNo(default = False))
31 config.plugins.wlan.encryption.type = NoSave(ConfigSelection(list, default = "WPA/WPA2" ))
32 config.plugins.wlan.encryption.wepkeytype = NoSave(ConfigSelection(weplist, default = "ASCII"))
33 config.plugins.wlan.encryption.psk = NoSave(ConfigPassword(default = "mysecurewlan", fixed_size = False))
35 class NetworkWizard(WizardLanguage, Rc):
37 <screen position="0,0" size="720,576" title="Welcome..." flags="wfNoBorder" >
38 <widget name="text" position="153,40" size="340,300" font="Regular;22" />
39 <widget source="list" render="Listbox" position="53,340" size="440,180" scrollbarMode="showOnDemand" >
40 <convert type="StringList" />
42 <widget name="config" position="53,340" zPosition="1" size="440,180" transparent="1" scrollbarMode="showOnDemand" />
43 <ePixmap pixmap="skin_default/buttons/button_red.png" position="40,225" zPosition="0" size="15,16" transparent="1" alphatest="on" />
44 <widget name="languagetext" position="55,225" size="95,30" font="Regular;18" />
45 <widget name="wizard" pixmap="skin_default/wizard.png" position="40,50" zPosition="10" size="110,174" alphatest="on" />
46 <widget name="rc" pixmaps="skin_default/rc.png,skin_default/rcold.png" position="500,50" zPosition="10" size="154,500" alphatest="on" />
47 <widget name="arrowdown" pixmap="skin_default/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
48 <widget name="arrowdown2" pixmap="skin_default/arrowdown.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
49 <widget name="arrowup" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
50 <widget name="arrowup2" pixmap="skin_default/arrowup.png" position="-100,-100" zPosition="11" size="37,70" alphatest="on" />
51 <widget source="VKeyIcon" render="Pixmap" pixmap="skin_default/buttons/key_text.png" position="40,260" zPosition="0" size="35,25" transparent="1" alphatest="on" >
52 <convert type="ConditionalShowHide" />
54 <widget name="HelpWindow" pixmap="skin_default/buttons/key_text.png" position="125,170" zPosition="1" size="1,1" transparent="1" alphatest="on" />
56 def __init__(self, session):
57 self.xmlfile = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/NetworkWizard/networkwizard.xml")
58 WizardLanguage.__init__(self, session, showSteps = False, showStepSlider = False)
60 self.session = session
61 self["wizard"] = Pixmap()
62 self["HelpWindow"] = Pixmap()
63 self["HelpWindow"].hide()
64 self["VKeyIcon"] = Boolean(False)
66 self.InterfaceState = None
67 self.isInterfaceUp = None
68 self.WlanPluginInstalled = None
70 self.selectedInterface = None
74 self.AdapterRef = None
76 self.isWlanPluginInstalled()
78 def listInterfaces(self):
79 list = [(iNetwork.getFriendlyAdapterName(x),x) for x in iNetwork.getAdapterList()]
80 list.append((_("Exit network wizard"), "end"))
83 def InterfaceSelectionMade(self, index):
84 self.selectedInterface = index
85 self.InterfaceSelect(index)
87 def InterfaceSelect(self, index):
91 self.NextStep = 'nwconfig'
93 self.NextStep = 'scanwlan'
95 def InterfaceSelectionMoved(self):
96 self.InterfaceSelect(self.selection)
98 def checkInterface(self,iface):
99 self.Adapterlist = iNetwork.getAdapterList()
100 if self.NextStep is not 'end':
101 if len(self.Adapterlist) == 0:
102 #Reset Network to defaults if network broken
103 iNetwork.resetNetworkConfig('lan', self.checkInterfaceCB)
104 self.myref = self.session.openWithCallback(self.resetfinishedCB, MessageBox, _("Please wait while we prepare your network interfaces..."), type = MessageBox.TYPE_INFO, enable_input = False)
106 if iface in iNetwork.configuredNetworkAdapters and len(iNetwork.configuredNetworkAdapters) == 1:
107 if iNetwork.getAdapterAttribute(iface, 'up') is True:
108 self.isInterfaceUp = True
110 self.isInterfaceUp = False
111 self.resetfinishedCB(False)
113 iNetwork.resetNetworkConfig('lan',self.checkInterfaceCB)
114 self.myref = self.session.openWithCallback(self.resetfinishedCB, MessageBox, _("Please wait while we prepare your network interfaces..."), type = MessageBox.TYPE_INFO, enable_input = False)
115 elif iface == 'wlan0':
116 if iface in iNetwork.configuredNetworkAdapters and len(iNetwork.configuredNetworkAdapters) == 1:
117 if iNetwork.getAdapterAttribute(iface, 'up') is True:
118 self.isInterfaceUp = True
120 self.isInterfaceUp = False
121 self.resetfinishedCB(False)
123 iNetwork.resetNetworkConfig('wlan',self.checkInterfaceCB)
124 self.myref = self.session.openWithCallback(self.resetfinishedCB, MessageBox, _("Please wait while we prepare your network interfaces..."), type = MessageBox.TYPE_INFO, enable_input = False)
125 elif iface == 'ath0':
126 if iface in iNetwork.configuredNetworkAdapters and len(iNetwork.configuredNetworkAdapters) == 1:
127 if iNetwork.getAdapterAttribute(iface, 'up') is True:
128 self.isInterfaceUp = True
130 self.isInterfaceUp = False
131 self.resetfinishedCB(False)
133 iNetwork.resetNetworkConfig('wlan-mpci',self.checkInterfaceCB)
134 self.myref = self.session.openWithCallback(self.resetfinishedCB, MessageBox, _("Please wait while we prepare your network interfaces..."), type = MessageBox.TYPE_INFO, enable_input = False)
136 self.resetfinishedCB(False)
138 def resetfinishedCB(self,data):
140 self.currStep = self.getStepWithID(self.NextStep)
141 self.afterAsyncCode()
143 self.currStep = self.getStepWithID(self.NextStep)
144 self.afterAsyncCode()
146 def checkInterfaceCB(self,callback,iface):
147 if callback is not None:
149 iNetwork.getInterfaces(self.getInterfacesDataAvail)
152 def getInterfacesDataAvail(self, data):
154 if iNetwork.getAdapterAttribute(self.selectedInterface, 'up') is True:
155 self.isInterfaceUp = True
157 self.isInterfaceUp = False
158 self.myref.close(True)
160 def AdapterSetupEnd(self, iface):
161 if iNetwork.getAdapterAttribute(iface, "dhcp") is True:
162 iNetwork.checkNetworkState(self.AdapterSetupEndFinished)
163 self.AdapterRef = self.session.openWithCallback(self.AdapterSetupEndCB, MessageBox, _("Please wait while we test your network..."), type = MessageBox.TYPE_INFO, enable_input = False)
166 self.currStep = self.getStepWithID("confdns")
167 self.afterAsyncCode()
169 def AdapterSetupEndCB(self,data):
171 self.currStep = self.getStepWithID("checklanstatusend")
172 self.afterAsyncCode()
174 def AdapterSetupEndFinished(self,data):
176 self.InterfaceState = True
178 self.InterfaceState = False
179 self.AdapterRef.close(True)
181 def checkNetwork(self):
182 iNetwork.checkNetworkState(self.checkNetworkStateFinished)
183 self.checkRef = self.session.openWithCallback(self.checkNetworkCB, MessageBox, _("Please wait while we test your network..."), type = MessageBox.TYPE_INFO, enable_input = False)
185 def checkNetworkCB(self,data):
187 self.currStep = self.getStepWithID("checklanstatusend")
188 self.afterAsyncCode()
190 def checkNetworkStateFinished(self,data):
192 self.InterfaceState = True
194 self.InterfaceState = False
195 self.checkRef.close(True)
204 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
206 list.append( ( _("No networks found"),_("unavailable") ) )
207 self.WlanList.append(_("No networks found"))
210 self.w = Wlan(self.selectedInterface)
211 aps = self.w.getNetworkList()
213 print "[NetworkWizard.py] got Accespoints!"
218 #a['essid'] = a['bssid']
219 list.append( (a['essid'], a['essid']) )
220 self.WlanList.append(a['essid'])
221 if "hidden..." not in list:
222 list.append( ( _("enter hidden network SSID"),_("hidden...") ) )
223 self.WlanList.append(_("hidden..."))
226 def modeSelectionMade(self, index):
227 self.modeSelect(index)
229 def modeSelectionMoved(self):
230 self.modeSelect(self.selection)
232 def modeSelect(self, mode):
234 print "ModeSelected:", mode
236 def restartNetwork(self):
237 iNetwork.restartNetwork()
240 def isWlanPluginInstalled(self):
242 from Plugins.SystemPlugins.WirelessLan.Wlan import Wlan
244 self.WlanPluginInstalled = False
246 self.WlanPluginInstalled = True