__init__.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. #UI lib
  4. from UI.constants import RUNSYS
  5. from UI.keys_def import CurKeys, IsKeyStartOrA, IsKeyMenuOrB
  6. from UI.confirm_page import ConfirmPage
  7. from UI.lang_manager import MyLangManager
  8. import config
  9. class PowerOffConfirmPage(ConfirmPage):
  10. _ConfirmText = MyLangManager.Tr("Awaiting Input")
  11. _FootMsg = ["Nav","","Reboot","Cancel","Shutdown"]
  12. def CheckBattery(self):
  13. try:
  14. f = open(config.Battery)
  15. except IOError:
  16. print( "PowerOFF open %s failed" % config.Battery)
  17. return 0
  18. else:
  19. with f:
  20. bat_uevent = {}
  21. content = f.readlines()
  22. content = [x.strip() for x in content]
  23. for i in content:
  24. pis = i.split("=")
  25. if len(pis) > 1:
  26. bat_uevent[pis[0]] = pis[1]
  27. if "POWER_SUPPLY_CAPACITY" in bat_uevent:
  28. cur_cap = int(bat_uevent["POWER_SUPPLY_CAPACITY"])
  29. else:
  30. cur_cap = 0
  31. return cur_cap
  32. return 0
  33. def KeyDown(self,event):
  34. if IsKeyMenuOrB(event.key):
  35. self.ReturnToUpLevelPage()
  36. self._Screen.Draw()
  37. self._Screen.SwapAndShow()
  38. if IsKeyStartOrA(event.key):
  39. if self.CheckBattery() < 20:
  40. cmdpath = "feh --bg-center gameshell/wallpaper/gameover.png;"
  41. else:
  42. cmdpath = "feh --bg-center gameshell/wallpaper/seeyou.png;"
  43. cmdpath += "sleep 3;"
  44. #cmdpath += "echo 'halt -p' > /tmp/halt_cmd"
  45. cmdpath += "sudo halt -p"
  46. pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))
  47. if event.key == CurKeys["X"]:
  48. cmdpath = "feh --bg-center gameshell/wallpaper/seeyou.png;"
  49. cmdpath += "sleep 3;"
  50. cmdpath += "sudo reboot"
  51. pygame.event.post( pygame.event.Event(RUNSYS, message=cmdpath))
  52. class APIOBJ(object):
  53. _StoragePage = None
  54. def __init__(self):
  55. pass
  56. def Init(self,main_screen):
  57. self._Page = PowerOffConfirmPage()
  58. self._Page._Screen = main_screen
  59. self._Page._Name ="Power OFF"
  60. self._Page.Init()
  61. def API(self,main_screen):
  62. if main_screen !=None:
  63. main_screen.PushPage(self._Page)
  64. main_screen.Draw()
  65. main_screen.SwapAndShow()
  66. OBJ = APIOBJ()
  67. def Init(main_screen):
  68. OBJ.Init(main_screen)
  69. def API(main_screen):
  70. OBJ.API(main_screen)