__init__.py 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import pygame
  4. import platform
  5. #import commands
  6. import glob
  7. #from beeprint import pp
  8. from libs.roundrects import aa_round_rect
  9. ## local UI import
  10. from UI.constants import Width,Height,ICON_TYPES,RESTARTUI
  11. from UI.page import Page,PageSelector
  12. from UI.label import Label
  13. from UI.util_funcs import midRect,FileExists,ArmSystem
  14. from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB
  15. from UI.scroller import ListScroller
  16. from UI.icon_pool import MyIconPool
  17. from UI.icon_item import IconItem
  18. from UI.multilabel import MultiLabel
  19. from UI.skin_manager import MySkinManager
  20. from UI.lang_manager import MyLangManager
  21. from UI.info_page_list_item import InfoPageListItem
  22. from UI.info_page_selector import InfoPageSelector
  23. import config
  24. class GameStorePage(Page):
  25. _FootMsg = ["Nav","","","Back","Select"]
  26. _MyList = []
  27. _ListFont = MyLangManager.TrFont("notosanscjk12")
  28. _AList = {}
  29. _Scrolled = 0
  30. _BGwidth = 320
  31. _BGheight = 240-24-20
  32. _DrawOnce = False
  33. _Scroller = None
  34. _InfoPage = None
  35. def __init__(self):
  36. Page.__init__(self)
  37. self._Icons = {}
  38. def GenList(self):
  39. self._MyList = []
  40. start_x = 0
  41. start_y = 0
  42. last_height = 0
  43. repos = [
  44. ["https://raw.githubusercontent.com/cuu/gamestore/master/index.json","github.com/cuu/gamestore"]
  45. ]
  46. for i,u in enumerate( repos ):
  47. #print(i,u)
  48. li = InfoPageListItem()
  49. li._Parent = self
  50. li._PosX = start_x
  51. li._PosY = start_y + last_height
  52. li._Width = Width
  53. li._Fonts["normal"] = self._ListFont
  54. li._Active = False
  55. li._Value = u[0]
  56. li.Init( u[1] )
  57. last_height += li._Height
  58. self._MyList.append(li)
  59. def Init(self):
  60. if self._Screen != None:
  61. if self._Screen._CanvasHWND != None and self._CanvasHWND == None:
  62. self._HWND = self._Screen._CanvasHWND
  63. self._CanvasHWND = pygame.Surface( (self._Screen._Width,self._BGheight) )
  64. self._PosX = self._Index*self._Screen._Width
  65. self._Width = self._Screen._Width ## equal to screen width
  66. self._Height = self._Screen._Height
  67. done = IconItem()
  68. done._ImgSurf = MyIconPool.GiveIconSurface("done")
  69. done._MyType = ICON_TYPES["STAT"]
  70. done._Parent = self
  71. self._Icons["done"] = done
  72. ps = InfoPageSelector()
  73. ps._Parent = self
  74. self._Ps = ps
  75. self._PsIndex = 0
  76. self.GenList()
  77. self._Scroller = ListScroller()
  78. self._Scroller._Parent = self
  79. self._Scroller._PosX = self._Width - 10
  80. self._Scroller._PosY = 2
  81. self._Scroller.Init()
  82. self._Scroller.SetCanvasHWND(self._HWND)
  83. def Click(self):
  84. if len(self._MyList) == 0:
  85. return
  86. cur_li = self._MyList[self._PsIndex]
  87. if cur_li._Active == True:
  88. return
  89. print(cur_li._Value)
  90. def OnLoadCb(self):
  91. self._Scrolled = 0
  92. self._PosY = 0
  93. self._DrawOnce = False
  94. def OnReturnBackCb(self):
  95. pass
  96. """
  97. self.ReturnToUpLevelPage()
  98. self._Screen.Draw()
  99. self._Screen.SwapAndShow()
  100. """
  101. def KeyDown(self,event):
  102. if IsKeyMenuOrB(event.key):
  103. self.ReturnToUpLevelPage()
  104. self._Screen.Draw()
  105. self._Screen.SwapAndShow()
  106. if IsKeyStartOrA(event.key):
  107. self.Click()
  108. if event.key == CurKeys["Up"]:
  109. self.ScrollUp()
  110. self._Screen.Draw()
  111. self._Screen.SwapAndShow()
  112. if event.key == CurKeys["Down"]:
  113. self.ScrollDown()
  114. self._Screen.Draw()
  115. self._Screen.SwapAndShow()
  116. def Draw(self):
  117. self.ClearCanvas()
  118. if len(self._MyList) == 0:
  119. return
  120. else:
  121. if len(self._MyList) * self._MyList[0]._Height > self._Height:
  122. self._Ps._Width = self._Width - 11
  123. self._Ps.Draw()
  124. for i in self._MyList:
  125. if i._PosY > self._Height + self._Height/2:
  126. break
  127. if i._PosY < 0:
  128. continue
  129. i.Draw()
  130. self._Scroller.UpdateSize( len(self._MyList)*self._MyList[0]._Height, self._PsIndex*self._MyList[0]._Height)
  131. self._Scroller.Draw()
  132. else:
  133. self._Ps._Width = self._Width
  134. self._Ps.Draw()
  135. for i in self._MyList:
  136. if i._PosY > self._Height + self._Height/2:
  137. break
  138. if i._PosY < 0:
  139. continue
  140. i.Draw()
  141. if self._HWND != None:
  142. self._HWND.fill(MySkinManager.GiveColor("White"))
  143. self._HWND.blit(self._CanvasHWND,(self._PosX,self._PosY,self._Width, self._Height ) )
  144. class APIOBJ(object):
  145. _Page = None
  146. def __init__(self):
  147. pass
  148. def Init(self,main_screen):
  149. self._Page = GameStorePage()
  150. self._Page._Screen = main_screen
  151. self._Page._Name ="Download games"
  152. self._Page.Init()
  153. def API(self,main_screen):
  154. if main_screen !=None:
  155. main_screen.PushPage(self._Page)
  156. main_screen.Draw()
  157. main_screen.SwapAndShow()
  158. OBJ = APIOBJ()
  159. def Init(main_screen):
  160. OBJ.Init(main_screen)
  161. def API(main_screen):
  162. OBJ.API(main_screen)