__init__.py 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. import validators
  4. from UI.constants import Width,Height,ICON_TYPES
  5. from UI.simple_name_space import SimpleNamespace
  6. from UI.page import Page
  7. from UI.label import Label
  8. from UI.fonts import fonts
  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 = fonts["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. labels = \
  92. [["forssh","For ssh and scp:",self._ListFontObj,self._TextColor],
  93. ["ssh_addr","ssh cpi@%s" % self._IP, self._ListFontObj,self._URLColor],
  94. ["forwin", "For Windows network:", self._ListFontObj, self._TextColor],
  95. ["samba_games", "\\\\%s\games" % self._IP, self._ListFontObj,self._URLColor],
  96. ["samba_music", "\\\\%s\music" % self._IP, self._ListFontObj,self._URLColor],
  97. ["forID", "ID:", self._ListFontObj, self._TextColor],
  98. ["forKey", "Key:", self._ListFontObj, self._TextColor],
  99. ["key_and_pass", "cpi", self._ListFontObj, self._URLColor],
  100. ["for_airplay", "Airplay:", self._ListFontObj, self._TextColor],
  101. ["airplay_name","clockworkpi", self._ListFontObj, self._URLColor],
  102. ["for-usb-eth","USB-Ethernet:", self._ListFontObj, self._TextColor],
  103. ["usb-eth-addr","192.168.10.1", self._ListFontObj, self._URLColor]]
  104. for i in labels:
  105. l = Label()
  106. l.SetCanvasHWND(self._CanvasHWND)
  107. l.Init(i[1],i[2])
  108. l.SetColor(i[3])
  109. self._Labels[ i[0] ] = l
  110. self.SetCoords() ##
  111. def Init(self):
  112. if self._Screen != None:
  113. if self._Screen._CanvasHWND != None and self._CanvasHWND == None:
  114. self._HWND = self._Screen._CanvasHWND
  115. self._CanvasHWND = pygame.Surface( (self._Screen._Width,self._Screen._Height) )
  116. self._PosX = self._Index*self._Screen._Width
  117. self._Width = self._Screen._Width ## equal to screen width
  118. self._Height = self._Screen._Height
  119. self._PngSize["bg"] = (253,114)
  120. self._PngSize["online"] = (75,122)
  121. bgpng = IconItem()
  122. bgpng._ImgSurf = MyIconPool._Icons["needwifi_bg"]
  123. bgpng._MyType = ICON_TYPES["STAT"]
  124. bgpng._Parent = self
  125. bgpng.Adjust(0,0,self._PngSize["bg"][0],self._PngSize["bg"][1],0)
  126. self._Icons["bg"] = bgpng
  127. onlinepng = IconItem()
  128. onlinepng._ImgSurf = MyIconPool._Icons["online"]
  129. onlinepng._MyType = ICON_TYPES["STAT"]
  130. onlinepng._Parent = self
  131. onlinepng.Adjust(0,0,self._PngSize["online"][0], self._PngSize["online"][1],0)
  132. self._Icons["online"] = onlinepng
  133. self.SetLabels()
  134. def KeyDown(self,event):
  135. if IsKeyMenuOrB(event.key):
  136. self.ReturnToUpLevelPage()
  137. self._Screen.Draw()
  138. self._Screen.SwapAndShow()
  139. def Draw(self):
  140. if self._DrawOnce == False:
  141. self.ClearCanvas()
  142. if is_wifi_connected_now():
  143. self._Icons["online"].NewCoord(self._Coords["online"].x, self._Coords["online"].y)
  144. self._Icons["online"].Draw()
  145. self.SetLabels()
  146. for i in self._Labels:
  147. if i in self._Coords:
  148. self._Labels[i].NewCoord( self._Coords[i].x, self._Coords[i].y)
  149. self._Labels[i].Draw()
  150. self._Labels["key_and_pass"].NewCoord( 103,self._Coords["key_and_pass"].y)
  151. self._Labels["key_and_pass"].Draw()
  152. else:
  153. self._Labels["for-usb-eth"].NewCoord(self._Coords["for-usb-eth"].x+55, self._Coords["for-usb-eth"].y)
  154. self._Labels["for-usb-eth"].Draw()
  155. self._Labels["usb-eth-addr"].NewCoord(self._Coords["usb-eth-addr"].x+55, self._Coords["usb-eth-addr"].y)
  156. self._Labels["usb-eth-addr"].Draw()
  157. self._Icons["bg"].NewCoord(self._Coords["bg"].x, self._Coords["bg"].y)
  158. self._Icons["bg"].Draw()
  159. self._DrawOnce = True
  160. if self._HWND != None:
  161. self._HWND.fill(MySkinManager.GiveColor('White'))
  162. self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width, self._Height ) )
  163. class APIOBJ(object):
  164. _Page = None
  165. def __init__(self):
  166. pass
  167. def Init(self,main_screen):
  168. self._Page = TinyCloudPage()
  169. self._Page._Screen = main_screen
  170. self._Page._Name ="Tiny cloud"
  171. self._Page.Init()
  172. def API(self,main_screen):
  173. if main_screen !=None:
  174. main_screen.PushPage(self._Page)
  175. main_screen.Draw()
  176. main_screen.SwapAndShow()
  177. OBJ = APIOBJ()
  178. def Init(main_screen):
  179. OBJ.Init(main_screen)
  180. def API(main_screen):
  181. OBJ.API(main_screen)