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