wifi_list.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from beeprint import pp
  4. from libs.roundrects import aa_round_rect
  5. import gobject
  6. from wicd import misc
  7. ## local UI import
  8. from UI.constants import Width,Height
  9. from UI.page import Page,PageSelector
  10. from UI.label import Label
  11. from UI.util_funcs import midRect,SwapAndShow
  12. from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB
  13. from UI.scroller import ListScroller
  14. from UI.confirm_page import ConfirmPage
  15. from UI.skin_manager import MySkinManager
  16. from UI.lang_manager import MyLangManager
  17. from UI.info_page_list_item import InfoPageListItem
  18. from UI.info_page_selector import InfoPageSelector
  19. from libs.DBUS import is_wifi_connected_now
  20. from net_item import NetItem
  21. import myvars
  22. class WifiDisconnectConfirmPage(ConfirmPage):
  23. _ConfirmText = MyLangManager.Tr("ConfirmDisconnectQ")
  24. def KeyDown(self,event):
  25. if IsKeyMenuOrB(event.key):
  26. self.ReturnToUpLevelPage()
  27. self._Screen.Draw()
  28. self._Screen.SwapAndShow()
  29. if IsKeyStartOrA(event.key):
  30. self.SnapMsg(MyLangManager.Tr("Disconnecting"))
  31. self._Screen.Draw()
  32. self._Screen.SwapAndShow()
  33. self._Parent._Daemon.Disconnect()
  34. pygame.time.delay(400)
  35. self.ReturnToUpLevelPage()
  36. self._Screen.Draw()
  37. self._Screen.SwapAndShow()
  38. def Draw(self):
  39. #self.ClearCanvas()
  40. self.DrawBG()
  41. for i in self._MyList:
  42. i.Draw()
  43. self.Reset()
  44. class WifiInfoPage(Page):
  45. _FootMsg = ["Nav","","","Back",""]
  46. _MyList = []
  47. _ListFontObj = MyLangManager.TrFont("varela15")
  48. _Wireless = None
  49. _Daemon = None
  50. _AList = {}
  51. _NetworkId = -1
  52. def GenList(self):
  53. self._MyList = []
  54. if self._NetworkId != -1:
  55. self._AList["ip"]["value"] = "Not Connected"
  56. if self._Wireless.GetCurrentNetworkID(self._Wireless.GetIwconfig()) == self._NetworkId:
  57. ip = self._Wireless.GetWirelessIP('')
  58. if ip is not None:
  59. self._AList["ip"]["value"] = ip
  60. self._AList["bssid"]["value"] = self._Wireless.GetWirelessProperty(self._NetworkId,"bssid")
  61. start_x = 0
  62. start_y = 0
  63. for i,v in enumerate( self._AList):
  64. li = InfoPageListItem()
  65. li._Parent = self
  66. li._PosX = start_x
  67. li._PosY = start_y + i*InfoPageListItem._Height
  68. li._Width = Width
  69. li._Fonts["normal"] = self._ListFontObj
  70. li._Fonts["small"] = MyLangManager.TrFont("varela12")
  71. if self._AList[v]["label"] != "":
  72. li.Init( self._AList[v]["label"] )
  73. else:
  74. li.Init( self._AList[v]["key"] )
  75. li._Flag = self._AList[v]["key"]
  76. li.SetSmallText( self._AList[v]["value"] )
  77. self._MyList.append(li)
  78. def Init(self):
  79. if self._Screen != None:
  80. if self._Screen._CanvasHWND != None and self._CanvasHWND == None:
  81. self._CanvasHWND = self._Screen._CanvasHWND
  82. self._PosX = self._Index*self._Screen._Width
  83. self._Width = self._Screen._Width ## equal to screen width
  84. self._Height = self._Screen._Height
  85. ps = InfoPageSelector()
  86. ps._Parent = self
  87. ps._PosX = 2
  88. self._Ps = ps
  89. self._PsIndex = 0
  90. ip = {}
  91. ip["key"] = "ip"
  92. ip["label"] = "IP"
  93. ip["value"] = "Not Connected"
  94. bssid = {}
  95. bssid["key"] = "bssid"
  96. bssid["label"] = "BSSID"
  97. bssid["value"] = ""
  98. self._AList["ip"] = ip
  99. self._AList["bssid"] = bssid
  100. self.GenList()
  101. self._DisconnectConfirmPage = WifiDisconnectConfirmPage()
  102. self._DisconnectConfirmPage._Screen = self._Screen
  103. self._DisconnectConfirmPage._Name = "Confirm Disconnect"
  104. self._DisconnectConfirmPage._Parent = self
  105. self._DisconnectConfirmPage.Init()
  106. def Click(self):
  107. cur_li = self._MyList[self._PsIndex]
  108. print(cur_li._Flag)
  109. def TryDisconnect(self):
  110. if self._Wireless.GetCurrentNetworkID(self._Wireless.GetIwconfig()) == self._NetworkId \
  111. and self._Wireless.GetWirelessIP('') is not None:
  112. self._Screen.PushPage(self._DisconnectConfirmPage)
  113. self._Screen.Draw()
  114. self._Screen.SwapAndShow()
  115. else:
  116. return
  117. def OnLoadCb(self):
  118. if self._Wireless.GetCurrentNetworkID(self._Wireless.GetIwconfig()) == self._NetworkId \
  119. and self._Wireless.GetWirelessIP('') is not None:
  120. self._FootMsg[2] = "Disconnect"
  121. else:
  122. self._FootMsg[2] = ""
  123. self.GenList()
  124. def OnReturnBackCb(self):
  125. self.ReturnToUpLevelPage()
  126. self._Screen.Draw()
  127. self._Screen.SwapAndShow()
  128. def KeyDown(self,event):
  129. if IsKeyMenuOrB(event.key):
  130. self.ReturnToUpLevelPage()
  131. self._Screen.Draw()
  132. self._Screen.SwapAndShow()
  133. if event.key == CurKeys["Up"]:
  134. self.ScrollUp()
  135. self._Screen.Draw()
  136. self._Screen.SwapAndShow()
  137. if event.key == CurKeys["Down"]:
  138. self.ScrollDown()
  139. self._Screen.Draw()
  140. self._Screen.SwapAndShow()
  141. if IsKeyStartOrA(event.key):
  142. self.Click()
  143. if event.key == CurKeys["X"]:
  144. self.TryDisconnect()
  145. def Draw(self):
  146. self.ClearCanvas()
  147. self._Ps.Draw()
  148. for i in self._MyList:
  149. i.Draw()
  150. class WifiListSelector(PageSelector):
  151. _BackgroundColor = MySkinManager.GiveColor('Front')
  152. def __init__(self):
  153. pass
  154. def AnimateDraw(self,x2,y2):
  155. pass
  156. def Draw(self):
  157. idx = self._Parent._PsIndex
  158. if idx < len( self._Parent._MyList):
  159. x = self._Parent._MyList[idx]._PosX+11
  160. y = self._Parent._MyList[idx]._PosY+1
  161. h = self._Parent._MyList[idx]._Height -3
  162. self._PosX = x
  163. self._PosY = y
  164. self._Height = h
  165. aa_round_rect(self._Parent._CanvasHWND,
  166. (x,y,self._Width,h),self._BackgroundColor,4,0,self._BackgroundColor)
  167. class WifiListMessageBox(Label):
  168. _Parent = None
  169. def Draw(self):
  170. my_text = self._FontObj.render( self._Text,True,self._Color)
  171. w = my_text.get_width()
  172. h = my_text.get_height()
  173. x = (self._Parent._Width - w)/2
  174. y = (self._Parent._Height - h)/2
  175. padding = 10
  176. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),(x-padding,y-padding, w+padding*2,h+padding*2))
  177. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Black'),(x-padding,y-padding, w+padding*2,h+padding*2),1)
  178. self._CanvasHWND.blit(my_text,(x,y,w,h))
  179. class WifiList(Page):
  180. _MyList = []
  181. #Wicd dbus part
  182. _Wireless = None
  183. _Daemon = None
  184. _Dbus = None
  185. _WifiPassword = ""
  186. _Connecting = False
  187. _Scanning = False
  188. _PrevWicdState = None
  189. _Selector = None
  190. _ShowingMessageBox = False
  191. _MsgBox = None
  192. _ConnectTry = 0
  193. _BlockingUI = False
  194. _BlockCb = None
  195. _LastStatusMsg = ""
  196. _FootMsg = ["Nav","Info","Scan","Back","Enter"]
  197. _EncMethods = None
  198. _Scroller = None
  199. _ListFontObj = MyLangManager.TrFont("notosanscjk15")
  200. _InfoPage = None
  201. _CurBssid = ""
  202. def __init__(self):
  203. Page.__init__(self)
  204. self._MyList = []
  205. self._CanvasHWND = None
  206. def ShowBox(self,msg):
  207. self._MsgBox._Text = msg
  208. self._ShowingMessageBox = True
  209. self._Screen.Draw()
  210. self._MsgBox.Draw()
  211. self._Screen.SwapAndShow()
  212. def HideBox(self):
  213. self.Draw()
  214. self._ShowingMessageBox = False
  215. self._Screen.SwapAndShow()
  216. def GenNetworkList(self):
  217. self._MyList = []
  218. start_x = 0
  219. start_y = 0
  220. for network_id in range(0,self._Wireless.GetNumberOfNetworks()):
  221. is_active = \
  222. self._Wireless.GetCurrentSignalStrength("") != 0 and \
  223. self._Wireless.GetCurrentNetworkID(self._Wireless.GetIwconfig()) == network_id \
  224. and self._Wireless.GetWirelessIP('') is not None
  225. ni = NetItem()
  226. ni._Parent = self
  227. ni._PosX = start_x
  228. ni._PosY = start_y + network_id* NetItem._Height
  229. ni._Width = Width
  230. ni._FontObj = self._ListFontObj
  231. #ni._Bssid = self._Wireless.GetWirelessProperty(network_id,"bssid")
  232. ni.Init(network_id,is_active)
  233. self._MyList.append(ni)
  234. self._PsIndex = 0
  235. def Disconnect(self):
  236. self._Connecting= False
  237. self._Daemon.Disconnect()
  238. ## force to disconnect
  239. def ShutDownConnecting(self):
  240. print("Shutdownconnecting...",self._ConnectTry)
  241. self._Daemon.CancelConnect()
  242. self._Daemon.SetForcedDisconnect(True)
  243. self._Connecting = False
  244. def Rescan(self,sync=False):
  245. print("start Rescan")
  246. if self._Wireless != None:
  247. self._Wireless.Scan(sync)
  248. ## dbus signal functions
  249. def DbusScanFinishedSig(self):
  250. if self._Screen._CurrentPage != self:
  251. return
  252. self.ResetPageSelector()
  253. self.UpdateNetList(force_check=True)
  254. self._Scanning = False
  255. self.HideBox()
  256. self._BlockingUI = False
  257. print("dbus says scan finished")
  258. def DbusScanStarted(self):
  259. if self._Screen._CurrentPage !=self:
  260. return
  261. self._Scanning = True
  262. self.ShowBox(MyLangManager.Tr("Wifi scanning"))
  263. self._BlockingUI = True
  264. print("dbus says start scan...")
  265. def UpdateNetList(self,state=None,info=None,force_check=False,firstrun=False):
  266. if self._Daemon == None:
  267. return
  268. if not state:
  269. state,trash = self._Daemon.GetConnectionStatus()
  270. print("state")
  271. pp(state)
  272. print("Trash: ")
  273. pp(trash)
  274. if force_check or self._PrevWicdState != state:
  275. self.GenNetworkList() ## refresh the network list
  276. if info != None:
  277. if len(info) > 3:
  278. _id = int(info[3])
  279. if _id < len(self._MyList):
  280. self._MyList[_id].UpdateStrenLabel( str(info[2]))
  281. self._PrevWicdState = state
  282. def SetConnectingStatus(self,fast):
  283. wireless_connecting = self._Wireless.CheckIfWirelessConnecting()
  284. """
  285. if self._ConnectTry > 5000:
  286. #wicd itself will take a very long time to try to connect ,will not block forever,just make it faster to dropout
  287. self.ShutDownConnecting()
  288. self._ConnectTry = 0
  289. self._BlockingUI = False
  290. return False
  291. """
  292. if wireless_connecting:
  293. if not fast:
  294. iwconfig = self._Wireless.GetIwconfig()
  295. else:
  296. iwconfig = ''
  297. essid = self._Wireless.GetCurrentNetwork(iwconfig)
  298. stat = self._Wireless.CheckWirelessConnectingMessage()
  299. if self._LastStatusMsg != "%s: %s"%(essid,stat):
  300. print("%s: %s" %(essid,stat))
  301. self._LastStatusMsg = "%s: %s"%(essid,stat)
  302. self.ShowBox(self._LastStatusMsg)
  303. self._Screen._FootBar.UpdateNavText(self._LastStatusMsg)
  304. SwapAndShow()
  305. #self._ConnectTry+=1
  306. return True
  307. else:
  308. self._Connecting = False
  309. return self._Connecting
  310. def UpdateStatus(self):
  311. print("UpdateStatus")
  312. wireless_connecting = self._Wireless.CheckIfWirelessConnecting()
  313. fast = not self._Daemon.NeedsExternalCalls()
  314. self._Connecting = wireless_connecting
  315. if self._Connecting:
  316. gobject.timeout_add(250,self.SetConnectingStatus,fast)
  317. else:
  318. if not fast:
  319. iwconfig = self._Wireless.GetIwconfig()
  320. else:
  321. iwconfig = ''
  322. if self.CheckForWireless(iwconfig,self._Wireless.GetWirelessIP(''),None):
  323. return True
  324. else:
  325. print("Not Connected")
  326. return True
  327. def DbusDaemonStatusChangedSig(self,state=None,info=None):
  328. if self._Screen._CurrentPage != self:
  329. return
  330. print("in DbusDaemonStatusChangedSig")
  331. """
  332. dbus.UInt32(2L)
  333. ['192.168.31.141', 'TP-LINK4G', '88', '0', '72.2 Mb/s']
  334. """
  335. # pp(info)
  336. self.UpdateNetList(state,info)
  337. if info != None:
  338. self._Screen.Draw()
  339. self._Screen.SwapAndShow()
  340. def DbusConnectResultsSent(self,result):
  341. print(" in DbusConnectResultsSent")
  342. """
  343. in DbusConnectResultsSent
  344. 'dhcp_failed'
  345. dbus says start scan...
  346. """
  347. if result != None:
  348. print(result)
  349. self._Connecting = False
  350. self._BlockingUI = False
  351. if self._BlockCb != None:
  352. self._BlockCb()
  353. self._BlockCb = None
  354. self._Screen._FootBar.ResetNavText()
  355. def CheckForWireless(self,iwconfig,wireless_ip,set_status):
  356. if not wireless_ip:
  357. return False
  358. network = self._Wireless.GetCurrentNetwork(iwconfig)
  359. if not network:
  360. return False
  361. network = misc.to_unicode(network)
  362. if daemon.GetSignalDisplayType() == 0:
  363. strength = self._Wireless.GetCurrentSignalStrength(iwconfig)
  364. else:
  365. strength = self._Wireless.GetCurrentDBMStrength(iwconfig)
  366. if strength is None:
  367. return False
  368. strength = misc.to_unicode(self._Daemon.FormatSignalForPrinting(strength))
  369. ip = misc.to_unicode(wireless_ip)
  370. print(_('Connected to $A at $B (IP: $C)').replace
  371. ('$A', network).replace
  372. ('$B', strength).replace
  373. ('$C', ip))
  374. return True
  375. def ConfigWireless(self,password):
  376. netid = self._PsIndex
  377. for i,v in enumerate(self._MyList):
  378. if v._Bssid == self._CurBssid:
  379. netid = i
  380. break
  381. print(netid," ", password)
  382. """
  383. self._Wireless.SetWirelessProperty(netid,"dhcphostname","GameShell")
  384. self._Wireless.SetWirelessProperty(netid,"ip","None")
  385. self._Wireless.SetWirelessProperty(netid,"dns_domain","None")
  386. self._Wireless.SetWirelessProperty(netid,"gateway","None")
  387. self._Wireless.SetWirelessProperty(netid,"use_global_dns",0)
  388. self._Wireless.SetWirelessProperty(netid,"netmask","None")
  389. self._Wireless.SetWirelessProperty(netid,"usedhcphostname",0) ## set 1 to use hostname above
  390. self._Wireless.SetWirelessProperty(netid,"bitrate","auto")
  391. self._Wireless.SetWirelessProperty(netid,"allow_lower_bitrates",0)
  392. self._Wireless.SetWirelessProperty(netid,"dns3","None")
  393. self._Wireless.SetWirelessProperty(netid,"dns2","None")
  394. self._Wireless.SetWirelessProperty(netid,"dns1","None")
  395. self._Wireless.SetWirelessProperty(netid,"use_settings_globally",0)
  396. self._Wireless.SetWirelessProperty(netid,"use_static_dns",0)
  397. self._Wireless.SetWirelessProperty(netid,"search_domain","None")
  398. """
  399. self._Wireless.SetWirelessProperty(netid,"enctype","wpa-psk")
  400. self._Wireless.SetWirelessProperty(netid,"apsk",password)
  401. self._Wireless.SetWirelessProperty(netid,"automatic",1)
  402. self.ShowBox(MyLangManager.Tr("Connecting"))
  403. self._MyList[netid].Connect()
  404. print("after Connect")
  405. self.UpdateStatus()
  406. def GetWirelessEncrypt(self,network_id):
  407. results = []
  408. activeID = -1
  409. for x,enc_type in enumerate(self._EncMethods):
  410. if enc_type["type"] == self._Wireless.GetWirelessProperty(network_id,"enctype"):
  411. activeID = x
  412. break
  413. if activeID == -1:
  414. return results
  415. for type_ in ['required','optional']:
  416. fields = self._EncMethods[activeID][type_]
  417. for field in fields:
  418. try:
  419. text = field[1].lower().replace(' ','_')
  420. except KeyError:
  421. text = field[1].replace(' ','_')
  422. value = self._Wireless.GetWirelessProperty(network_id, field[0])
  423. results.append({text:value})
  424. """
  425. [{'preshared_key': 'blah blah blah',},]
  426. or nothing
  427. [{'identity': None,},{'password': None,},]
  428. """
  429. return results
  430. def AbortedAndReturnToUpLevel(self):
  431. self.HideBox()
  432. self._Screen._FootBar.ResetNavText()
  433. self.ReturnToUpLevelPage()
  434. self._Screen.Draw()
  435. self._Screen.SwapAndShow()
  436. def OnKbdReturnBackCb(self):
  437. password_inputed = "".join(myvars.PasswordPage._Textarea._MyWords)
  438. if is_wifi_connected_now() == False:
  439. self.ConfigWireless(password_inputed)
  440. else:
  441. for i in range(0,10):
  442. if is_wifi_connected_now() == True:
  443. self.ShowBox(MyLangManager.Tr("Launching"))
  444. self._Daemon.Disconnect()
  445. self._Daemon.SetForcedDisconnect(True)
  446. self._Connecting = False
  447. else:
  448. break
  449. pygame.time.delay(100)
  450. if is_wifi_connected_now() == False:
  451. self.ConfigWireless(password_inputed)
  452. else:
  453. self.ShowBox(MyLangManager.Tr("Disconnect first"))
  454. def OnReturnBackCb(self):
  455. pass
  456. def KeyDown(self,event):
  457. # if self._BlockingUI == True:
  458. # print("UI blocking ...")
  459. # return
  460. if IsKeyMenuOrB(event.key):
  461. if self._Wireless != None:
  462. wireless_connecting = self._Wireless.CheckIfWirelessConnecting()
  463. if wireless_connecting:
  464. self.ShutDownConnecting()
  465. self.ShowBox(MyLangManager.Tr("ShutDownConnecting"))
  466. self._BlockingUI=True
  467. self._BlockCb = self.AbortedAndReturnToUpLevel
  468. else:
  469. self.AbortedAndReturnToUpLevel()
  470. else:
  471. self.HideBox()
  472. self.ReturnToUpLevelPage()
  473. self._Screen.Draw()
  474. self._Screen.SwapAndShow()
  475. if event.key == CurKeys["Up"]:
  476. self.ScrollUp()
  477. self._Screen.Draw()
  478. self._Screen.SwapAndShow()
  479. if event.key == CurKeys["Down"]:
  480. self.ScrollDown()
  481. self._Screen.Draw()
  482. self._Screen.SwapAndShow()
  483. if IsKeyStartOrA(event.key): ## enter to set password,enter is B on GM
  484. if len(self._MyList) == 0:
  485. return
  486. self._CurBssid = self._MyList[self._PsIndex]._Bssid
  487. wicd_wirelss_encrypt_pwd = self.GetWirelessEncrypt(self._PsIndex)
  488. if self._MyList[self._PsIndex]._IsActive:
  489. self.ShowBox( self._Wireless.GetWirelessIP('') )
  490. else:
  491. self._Screen.PushCurPage()
  492. self._Screen.SetCurPage( myvars.PasswordPage )
  493. thepass = ""
  494. for i in wicd_wirelss_encrypt_pwd:
  495. if "preshared_key" in i:
  496. if i["preshared_key"] != None:
  497. if len(str(i["preshared_key"])) > 0:
  498. thepass = str(i["preshared_key"])
  499. break
  500. myvars.PasswordPage.SetPassword(thepass)
  501. self._Screen.Draw()
  502. self._Screen.SwapAndShow()
  503. """
  504. try:
  505. self._Screen.Draw()
  506. self._Screen.SwapAndShow()
  507. except Exception as e:
  508. print(e)
  509. exit(-1)
  510. """
  511. if event.key == CurKeys["X"]:
  512. self.Rescan(False)
  513. if event.key == CurKeys["Y"]:
  514. if len(self._MyList) == 0:
  515. return
  516. self._InfoPage._NetworkId = self._PsIndex
  517. self._InfoPage._Wireless = self._Wireless
  518. self._InfoPage._Daemon = self._Daemon
  519. self._Screen.PushPage(self._InfoPage)
  520. self._Screen.Draw()
  521. self._Screen.SwapAndShow()
  522. def Init(self):
  523. self._PosX = self._Index * self._Screen._Width
  524. self._Width = self._Screen._Width
  525. self._Height = self._Screen._Height
  526. #self._CanvasHWND = pygame.Surface((self._Width,self._Height))
  527. self._CanvasHWND = self._Screen._CanvasHWND
  528. ps = WifiListSelector()
  529. ps._Parent = self
  530. ps._Width = Width - 12
  531. self._Ps = ps
  532. self._PsIndex = 0
  533. msgbox = WifiListMessageBox()
  534. msgbox._CanvasHWND = self._CanvasHWND
  535. msgbox.Init(" ",MyLangManager.TrFont("veramono12"))
  536. msgbox._Parent = self
  537. self._MsgBox = msgbox
  538. self._EncMethods = misc.LoadEncryptionMethods() # load predefined templates from /etc/wicd/...
  539. """
  540. {
  541. 'fields': [],
  542. 'name': 'WPA 1/2 (Passphrase)',
  543. 'optional': [],
  544. 'protected': [
  545. ['apsk', 'Preshared_Key'],
  546. ],
  547. 'required': [
  548. ['apsk', 'Preshared_Key'],
  549. ],
  550. 'type': 'wpa-psk',
  551. },
  552. """
  553. self.UpdateNetList(force_check=True,firstrun=True)
  554. self._Scroller = ListScroller()
  555. self._Scroller._Parent = self
  556. self._Scroller._PosX = 2
  557. self._Scroller._PosY = 2
  558. self._Scroller.Init()
  559. self._InfoPage = WifiInfoPage()
  560. self._InfoPage._Screen = self._Screen
  561. self._InfoPage._Name = MyLangManager.Tr("Wifi info")
  562. self._InfoPage.Init()
  563. def Draw(self):
  564. self.ClearCanvas()
  565. if len(self._MyList) == 0:
  566. return
  567. self._Ps.Draw()
  568. for i in self._MyList:
  569. i.Draw()
  570. self._Scroller.UpdateSize( len(self._MyList)*NetItem._Height, self._PsIndex*NetItem._Height)
  571. self._Scroller.Draw()