wifi_list.py 23 KB

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