__init__.py 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. import validators
  4. import commands
  5. from UI.constants import Width,Height,ICON_TYPES
  6. from UI.simple_name_space import SimpleNamespace
  7. from UI.page import Page
  8. from UI.label import Label
  9. from UI.icon_item import IconItem
  10. from UI.icon_pool import MyIconPool
  11. from UI.keys_def import CurKeys, IsKeyMenuOrB
  12. from UI.skin_manager import MySkinManager
  13. from UI.lang_manager import MyLangManager
  14. from libs.DBUS import is_wifi_connected_now,get_wifi_ip
  15. class TinyCloudPage(Page):
  16. _FootMsg = ["Nav","","","Back",""]
  17. _MyList = []
  18. _ListFontObj = MyLangManager.TrFont("varela13")
  19. _AList = {}
  20. _Labels = {}
  21. _Coords = {}
  22. _URLColor = MySkinManager.GiveColor('URL')
  23. _TextColor = MySkinManager.GiveColor('Text')
  24. _Scrolled = 0
  25. _PngSize = {}
  26. _DrawOnce = False
  27. _Scroller = None
  28. _Scrolled = 0
  29. def __init__(self):
  30. Page.__init__(self)
  31. self._Icons = {}
  32. def OnLoadCb(self):
  33. self._Scrolled = 0
  34. self._PosY = 0
  35. self._DrawOnce = False
  36. def SetCoords(self):
  37. self._Coords["forID"] = SimpleNamespace()
  38. self._Coords["forID"].x = 15
  39. self._Coords["forID"].y = 11
  40. self._Coords["forKey"] = SimpleNamespace()
  41. self._Coords["forKey"].x = 71
  42. self._Coords["forKey"].y = self._Coords["forID"].y
  43. self._Coords["key_and_pass"] = SimpleNamespace()
  44. self._Coords["key_and_pass"].x = 36 # 141
  45. self._Coords["key_and_pass"].y = self._Coords["forID"].y
  46. self._Coords["forssh"] = SimpleNamespace()
  47. self._Coords["forssh"].x = self._Coords["forID"].x
  48. self._Coords["forssh"].y = 36
  49. self._Coords["ssh_addr"] = SimpleNamespace()
  50. self._Coords["ssh_addr"].x = self._Coords["forID"].x
  51. self._Coords["ssh_addr"].y = 54
  52. self._Coords["forwin"] = SimpleNamespace()
  53. self._Coords["forwin"].x = self._Coords["forID"].x
  54. self._Coords["forwin"].y = 80
  55. self._Coords["samba_games"] = SimpleNamespace()
  56. self._Coords["samba_games"].x = self._Coords["forID"].x
  57. self._Coords["samba_games"].y = 97
  58. self._Coords["samba_music"] = SimpleNamespace()
  59. self._Coords["samba_music"].x = self._Coords["samba_games"].x
  60. self._Coords["samba_music"].y = 115
  61. self._Coords["for_airplay"] = SimpleNamespace()
  62. self._Coords["for_airplay"].x = self._Coords["forID"].x
  63. self._Coords["for_airplay"].y = 140
  64. self._Coords["airplay_name"] = SimpleNamespace()
  65. self._Coords["airplay_name"].x = 68
  66. self._Coords["airplay_name"].y = self._Coords["for_airplay"].y
  67. self._Coords["for-usb-eth"] = SimpleNamespace()
  68. self._Coords["for-usb-eth"].x = self._Coords["forID"].x
  69. self._Coords["for-usb-eth"].y = 163
  70. self._Coords["usb-eth-addr"] = SimpleNamespace()
  71. self._Coords["usb-eth-addr"].x = 112
  72. self._Coords["usb-eth-addr"].y = self._Coords["for-usb-eth"].y
  73. self._Coords["bg"] = SimpleNamespace()
  74. self._Coords["bg"].x = self._Width/2
  75. self._Coords["bg"].y = self._Height/2
  76. self._Coords["online"] = SimpleNamespace()
  77. self._Coords["online"].x = 266
  78. self._Coords["online"].y = 99
  79. def SetLabels(self):
  80. if is_wifi_connected_now():
  81. self._IP = get_wifi_ip()
  82. print("TinyCould : %s" % self._IP)
  83. try:
  84. if validators.ip_address.ipv4(self._IP) == False:
  85. self._IP = "xxx.xxx.xxx.xxx"
  86. except:
  87. print("ip error %s " % self._IP)
  88. self._IP = "xxx.xxx.xxx.xxx"
  89. else:
  90. self._IP = "xxx.xxx.xxx.xxx"
  91. hostname = commands.getstatusoutput("hostname")[1]
  92. if hostname == "":
  93. hostname = "clockworkpi"
  94. labels = \
  95. [["forssh","For ssh and scp:",self._ListFontObj,self._TextColor],
  96. ["ssh_addr","ssh cpi@%s" % self._IP, self._ListFontObj,self._URLColor],
  97. ["forwin", "For Windows network:", self._ListFontObj, self._TextColor],
  98. ["samba_games", "\\\\%s\games" % self._IP, self._ListFontObj,self._URLColor],
  99. ["samba_music", "\\\\%s\music" % self._IP, self._ListFontObj,self._URLColor],
  100. ["forID", "ID:", self._ListFontObj, self._TextColor],
  101. ["forKey", "Key:", self._ListFontObj, self._TextColor],
  102. ["key_and_pass", "cpi", self._ListFontObj, self._URLColor],
  103. ["for_airplay", "Airplay:", self._ListFontObj, self._TextColor],
  104. ["airplay_name",hostname, self._ListFontObj, self._URLColor],
  105. ["for-usb-eth","USB-Ethernet:", self._ListFontObj, self._TextColor],
  106. ["usb-eth-addr","192.168.10.1", self._ListFontObj, self._URLColor]]
  107. for i in labels:
  108. l = Label()
  109. l.SetCanvasHWND(self._CanvasHWND)
  110. l.Init(i[1],i[2])
  111. l.SetColor(i[3])
  112. self._Labels[ i[0] ] = l
  113. self.SetCoords() ##
  114. def Init(self):
  115. if self._Screen != None:
  116. if self._Screen._CanvasHWND != None and self._CanvasHWND == None:
  117. self._HWND = self._Screen._CanvasHWND
  118. self._CanvasHWND = pygame.Surface( (self._Screen._Width,self._Screen._Height) )
  119. self._PosX = self._Index*self._Screen._Width
  120. self._Width = self._Screen._Width ## equal to screen width
  121. self._Height = self._Screen._Height
  122. self._PngSize["bg"] = (253,114)
  123. self._PngSize["online"] = (75,122)
  124. bgpng = IconItem()
  125. bgpng._ImgSurf = MyIconPool.GiveIconSurface("needwifi_bg")
  126. bgpng._MyType = ICON_TYPES["STAT"]
  127. bgpng._Parent = self
  128. bgpng.Adjust(0,0,self._PngSize["bg"][0],self._PngSize["bg"][1],0)
  129. self._Icons["bg"] = bgpng
  130. onlinepng = IconItem()
  131. onlinepng._ImgSurf = MyIconPool.GiveIconSurface("online")
  132. onlinepng._MyType = ICON_TYPES["STAT"]
  133. onlinepng._Parent = self
  134. onlinepng.Adjust(0,0,self._PngSize["online"][0], self._PngSize["online"][1],0)
  135. self._Icons["online"] = onlinepng
  136. self.SetLabels()
  137. def KeyDown(self,event):
  138. if IsKeyMenuOrB(event.key):
  139. self.ReturnToUpLevelPage()
  140. self._Screen.Draw()
  141. self._Screen.SwapAndShow()
  142. def Draw(self):
  143. if self._DrawOnce == False:
  144. self.ClearCanvas()
  145. if is_wifi_connected_now():
  146. self._Icons["online"].NewCoord(self._Coords["online"].x, self._Coords["online"].y)
  147. self._Icons["online"].Draw()
  148. self.SetLabels()
  149. for i in self._Labels:
  150. if i in self._Coords:
  151. self._Labels[i].NewCoord( self._Coords[i].x, self._Coords[i].y)
  152. self._Labels[i].Draw()
  153. self._Labels["key_and_pass"].NewCoord( 103,self._Coords["key_and_pass"].y)
  154. self._Labels["key_and_pass"].Draw()
  155. else:
  156. self._Labels["for-usb-eth"].NewCoord(self._Coords["for-usb-eth"].x+55, self._Coords["for-usb-eth"].y)
  157. self._Labels["for-usb-eth"].Draw()
  158. self._Labels["usb-eth-addr"].NewCoord(self._Coords["usb-eth-addr"].x+55, self._Coords["usb-eth-addr"].y)
  159. self._Labels["usb-eth-addr"].Draw()
  160. self._Icons["bg"].NewCoord(self._Coords["bg"].x, self._Coords["bg"].y)
  161. self._Icons["bg"].Draw()
  162. self._DrawOnce = True
  163. if self._HWND != None:
  164. self._HWND.fill(MySkinManager.GiveColor('White'))
  165. self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width, self._Height ) )
  166. class APIOBJ(object):
  167. _Page = None
  168. def __init__(self):
  169. pass
  170. def Init(self,main_screen):
  171. self._Page = TinyCloudPage()
  172. self._Page._Screen = main_screen
  173. self._Page._Name ="Tiny cloud"
  174. self._Page.Init()
  175. def API(self,main_screen):
  176. if main_screen !=None:
  177. main_screen.PushPage(self._Page)
  178. main_screen.Draw()
  179. main_screen.SwapAndShow()
  180. OBJ = APIOBJ()
  181. def Init(main_screen):
  182. OBJ.Init(main_screen)
  183. def API(main_screen):
  184. OBJ.API(main_screen)