wifi_list.py 25 KB

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