rom_so_confirm_page.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import pygame
  4. import glob
  5. import shutil
  6. import gobject
  7. import validators
  8. #from pySmartDL import SmartDL
  9. from libs.roundrects import aa_round_rect
  10. from UI.confirm_page import ConfirmPage
  11. from UI.download_process_page import DownloadProcessPage
  12. from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB
  13. from UI.fonts import fonts
  14. from UI.multilabel import MultiLabel
  15. from UI.lang_manager import MyLangManager
  16. import config
  17. class RomSoConfirmPage(ConfirmPage):
  18. _ListFont = MyLangManager.TrFont("veramono18")
  19. _ConfirmText = MyLangManager.Tr("SetupGameEngineAutoQ")
  20. _MyDownloadPage = None
  21. def CheckBattery(self):
  22. try:
  23. f = open(config.Battery)
  24. except IOError:
  25. print( "RomSoConfirmPage open %s failed" % config.Battery)
  26. return 6
  27. else:
  28. with f:
  29. bat_uevent = {}
  30. content = f.readlines()
  31. content = [x.strip() for x in content]
  32. for i in content:
  33. pis = i.split("=")
  34. if len(pis) > 1:
  35. bat_uevent[pis[0]] = pis[1]
  36. if "POWER_SUPPLY_CAPACITY" in bat_uevent:
  37. cur_cap = int(bat_uevent["POWER_SUPPLY_CAPACITY"])
  38. else:
  39. cur_cap = 0
  40. return cur_cap
  41. return 0
  42. def Init(self):
  43. self._PosX = self._Index * self._Screen._Width
  44. self._Width = self._Screen._Width
  45. self._Height = self._Screen._Height
  46. self._CanvasHWND = self._Screen._CanvasHWND
  47. li = MultiLabel()
  48. li.SetCanvasHWND(self._CanvasHWND)
  49. li._Width = 160
  50. li.Init(self._ConfirmText,self._ListFont)
  51. li._PosX = (self._Width - li._Width)/2
  52. li._PosY = (self._Height - li._Height)/2
  53. self._BGPosX = li._PosX-20
  54. self._BGPosY = li._PosY-20
  55. self._BGWidth = li._Width+40
  56. self._BGHeight = li._Height+40
  57. self._MyList.append(li)
  58. def SnapMsg(self,msg):
  59. self._MyList[0].SetText(msg)
  60. self._Screen.Draw()
  61. self._Screen.SwapAndShow()
  62. self._MyList[0].SetText(self._ConfirmText)
  63. def OnReturnBackCb(self):
  64. self.ReturnToUpLevelPage()
  65. self._Screen.Draw()
  66. self._Screen.SwapAndShow()
  67. def KeyDown(self,event):
  68. if IsKeyMenuOrB(event.key):
  69. self.ReturnToUpLevelPage()
  70. self._Screen.Draw()
  71. self._Screen.SwapAndShow()
  72. if IsKeyStartOrA(event.key):
  73. if self.CheckBattery() < 5:
  74. self.SnapMsg(MyLangManager.Tr("BATOver5Pct"))
  75. else:
  76. if self._MyDownloadPage == None:
  77. self._MyDownloadPage = DownloadProcessPage()
  78. self._MyDownloadPage._Screen = self._Screen
  79. self._MyDownloadPage._Name = "Downloading"
  80. self._MyDownloadPage.Init()
  81. self._Screen.PushPage(self._MyDownloadPage)
  82. self._Screen.Draw()
  83. self._Screen.SwapAndShow()
  84. if config.CurKeySet == "PC":
  85. so_url = self._Parent._Emulator["SO_URL"] ## [rom/fav]_list_page is _Parent
  86. so_url = so_url.replace("armhf","x86_64")
  87. print(so_url)
  88. self._MyDownloadPage.StartDownload(so_url,os.path.dirname(self._Parent._Emulator["ROM_SO"]))
  89. else:
  90. self._MyDownloadPage.StartDownload(self._Parent._Emulator["SO_URL"],
  91. os.path.dirname(self._Parent._Emulator["ROM_SO"]))
  92. def Draw(self):
  93. self.ClearCanvas()
  94. self.DrawBG()
  95. for i in self._MyList:
  96. i.Draw()