wifi_list.py 25 KB

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