123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- # -*- coding: utf-8 -*-
- import pygame
- ## local UI import
- from UI.page import Page
- from UI.label import Label
- from UI.fonts import fonts
- from UI.icon_item import IconItem
- from UI.multi_icon_item import MultiIconItem
- from UI.icon_pool import MyIconPool
- class NetItemMultiIcon(MultiIconItem):
- _CanvasHWND = None
- _Parent = None
- _Width = 18
- _Height = 18
-
- def Draw(self):
- self._CanvasHWND.blit(self._ImgSurf,(self._PosX,self._PosY+(self._Parent._Height-self._Height)/2,self._Width,self._Height),
- (0,self._IconIndex*self._IconHeight,self._IconWidth,self._IconHeight))
-
- class NetItemIcon(IconItem):
- _CanvasHWND = None
- _Parent = None
- _Width = 18
- _Height = 18
-
- def Draw(self):
- self._CanvasHWND.blit(self._ImgSurf,(self._PosX,self._PosY+(self._Parent._Height-self._Height)/2,self._Width,self._Height))
-
- class NetItem(object):
- _PosX = 0
- _PosY = 0
- _Width = 0
- _Height = 30
- _Bssid="" # 50:3A:A0:51:18:3C
- _Essid="" # MERCURY_EB88
- ## extra infomations
- _dhcphostname = "GameShell"
- _ip = None #eg 192.168.31.141
- _dns_domain = None
- _gateway = None #eg 192.168.31.1
- _use_global_dns = 0 ## eg 0 == False, 1 == True
- _netmask = None ##eg 255.255.255.0
- _usedhcphostname= 0
- _bitrate = "auto"
- _allow_lower_bitrates = 0
- _dns3 = None
- _dns2 = None ## eg 1.1.1.1
- _dns1 = None ## eg 8.8.8.8
- _use_settings_globally = 0
- _use_static_dns = 0 # eg: 1 == True
- _search_domain = None
-
- _Encrypt="" # WPA2
- _Channel="" # '10'
- _Stren = "" ## 19%
- _NetId = 0 ## 0-n
- _Mode = "" ## Master or AdHoc
- _Parent = None
- _IsActive = False
- _Icons = {} ## wifi strength and security icons
- _Labels = {}
- _FontObj = None
-
- def __init__(self):
- self._Labels = {}
- self._Icons = {}
- def SetActive(self,act):
- self._IsActive = act
-
- def UpdateStrenLabel(self, strenstr): ## strenstr should be 'number',eg:'90'
- self._Stren = self._Parent._Daemon.FormatSignalForPrinting(strenstr)
- self._Labels["stren"]._Text = self._Stren
- def Init(self, i, is_active):
- # Pick which strength measure to use based on what the daemon says
- # gap allocates more space to the first module
- if self._Parent._Daemon.GetSignalDisplayType() == 0:
- strenstr = 'quality'
- gap = 4 # Allow for 100%
- else:
- strenstr = 'strength'
- gap = 7 # -XX dbm = 7
- self._NetId = i
- # All of that network property stuff
- self._Stren = self._Parent._Daemon.FormatSignalForPrinting(
- str(self._Parent._Wireless.GetWirelessProperty(self._NetId, strenstr)))
-
- self._Essid = self._Parent._Wireless.GetWirelessProperty(self._NetId, 'essid')
- self._Bssid = self._Parent._Wireless.GetWirelessProperty(self._NetId, 'bssid')
- if self._Parent._Wireless.GetWirelessProperty(self._NetId, 'encryption'):
- self._Encrypt = \
- self._Parent._Wireless.GetWirelessProperty(self._NetId, 'encryption_method')
- else:
- self._Encrypt = 'Unsecured'
- self._Mode = \
- self._Parent._Wireless.GetWirelessProperty(self._NetId, 'mode') # Master, Ad-Hoc
- self._Channel = self._Parent._Wireless.GetWirelessProperty(self._NetId, 'channel')
- theString = ' %-*s %25s %9s %17s %6s %4s' % \
- (gap, self._Stren, self._Essid, self._Encrypt, self._Bssid, self._Mode,
- self._Channel)
-
- if is_active:
- theString = ">> "+theString[1:]
- self.SetActive(is_active)
-
- essid_label = Label()
- essid_label._PosX = 36
- #essid_label._PosY = self._PosY + (self._Height - self._FontObj.render(self._Essid,True,(83,83,83)).get_height())/2
- essid_label._CanvasHWND = self._Parent._CanvasHWND
- if len(self._Essid) > 19:
- essid_ = self._Essid[:20]
- else:
- essid_ = self._Essid
-
- essid_label.Init(essid_,self._FontObj)
- self._Labels["essid"] = essid_label
- stren_label = Label()
- #stren_label._PosY = self._PosY + (self._Height - self._FontObj.render(self._Stren,True,(83,83,83)).get_height())/2
- stren_label._CanvasHWND = self._Parent._CanvasHWND
- stren_label.Init(self._Stren,self._FontObj)
- stren_label._PosX = self._Width - 23 - stren_label.Width() - 2
- self._Labels["stren"] = stren_label
-
- lock_icon = NetItemIcon()
- lock_icon._ImgSurf = MyIconPool._Icons["lock"]
- lock_icon._CanvasHWND = self._Parent._CanvasHWND
- lock_icon._Parent = self
- self._Icons["lock"] = lock_icon
-
- done_icon = NetItemIcon()
- done_icon._ImgSurf = MyIconPool._Icons["done"]
- done_icon._CanvasHWND = self._Parent._CanvasHWND
- done_icon._Parent = self
-
- self._Icons["done"] = done_icon
- ## reuse the resource from TitleBar
- nimt = NetItemMultiIcon()
- nimt._ImgSurf = self._Parent._Screen._TitleBar._Icons["wifistatus"]._ImgSurf
- nimt._CanvasHWND = self._Parent._CanvasHWND
- nimt._Parent = self
- self._Icons["wifistatus"] = nimt
- #pp(theString)
-
-
- def Connect(self,notworkentry=None):
- """ Execute connection. """
- self._Parent._Wireless.ConnectWireless(self._NetId)
-
- def Draw(self):
- #pygame.draw.line(self._Parent._CanvasHWND,(169,169,169),(self._PosX,self._PosY),(self._PosX+self._Width,self._PosY),1)
- for i in self._Labels:
- self._Labels[i]._PosY = self._PosY + (self._Height - self._Labels[i]._Height)/2
- self._Labels[i].Draw()
-
- if self._IsActive:
- self._Icons["done"].NewCoord(14,self._PosY)
- self._Icons["done"].Draw()
- if self._Encrypt != "Unsecured":
- self._Icons["lock"].NewCoord( self._Width -23 - self._Labels["stren"].Width() - 2 - 18, self._PosY)
- self._Icons["lock"].Draw()
-
- ge = self._Parent._Screen._TitleBar.GetWifiStrength( self._Stren.replace('%',''))
-
- if ge > 0:
- self._Icons["wifistatus"]._IconIndex = ge
- self._Icons["wifistatus"].NewCoord(self._Width-23,self._PosY)
- self._Icons["wifistatus"].Draw()
-
- else:
- self._Icons["wifistatus"]._IconIndex = 0
- self._Icons["wifistatus"].NewCoord(self._Width-23,self._PosY)
- self._Icons["wifistatus"].Draw()
-
- 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)
-
|