brightness_page.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. #import math
  4. ## local UI import
  5. from UI.constants import Width,Height,ICON_TYPES
  6. from UI.page import Page,PageSelector
  7. from UI.label import Label
  8. from UI.icon_item import IconItem
  9. from UI.util_funcs import midRect
  10. from UI.keys_def import CurKeys, IsKeyMenuOrB
  11. from UI.slider import Slider
  12. from UI.icon_pool import MyIconPool
  13. from UI.multi_icon_item import MultiIconItem
  14. from config import BackLight
  15. import myvars
  16. class BSlider(Slider):
  17. OnChangeCB = None
  18. _BGpng = None
  19. _BGwidth = 179
  20. _BGheight = 153
  21. _NeedleSurf = None
  22. _Scale = None
  23. _Parent = None
  24. _Icons = {}
  25. def __init__(self):
  26. Slider.__init__(self)
  27. self._Icons = {}
  28. def Init(self):
  29. self._Width = self._Parent._Width
  30. self._Height = self._Parent._Height
  31. bgpng = IconItem()
  32. bgpng._ImgSurf = MyIconPool.GiveIconSurface("light")
  33. bgpng._MyType = ICON_TYPES["STAT"]
  34. bgpng._Parent = self
  35. bgpng.Adjust(0,0,self._BGwidth,self._BGheight,0)
  36. self._Icons["bg"] = bgpng
  37. ##self._NeedleSurf = pygame.Surface( (38,12),pygame.SRCALPHA )
  38. scale = MultiIconItem()
  39. scale._MyType = ICON_TYPES["STAT"]
  40. scale._Parent = self
  41. scale._ImgSurf = MyIconPool.GiveIconSurface("scale")
  42. scale._IconWidth = 82
  43. scale._IconHeight = 63
  44. scale.Adjust(0,0,82,63,0)
  45. self._Icons["scale"] = scale
  46. def SetValue(self,brt):
  47. self._Value = brt
  48. def Further(self):
  49. self._Value+=1
  50. if self._Value > 9:
  51. self._Value = 9
  52. if self.OnChangeCB != None:
  53. if callable(self.OnChangeCB):
  54. self.OnChangeCB(self._Value)
  55. def StepBack(self):
  56. self._Value-=1
  57. if self._Value < 1:
  58. self._Value = 1
  59. if self.OnChangeCB != None:
  60. if callable(self.OnChangeCB):
  61. self.OnChangeCB(self._Value)
  62. def Draw(self):
  63. self._Icons["bg"].NewCoord(self._Width/2,self._Height/2 +11 )
  64. self._Icons["bg"].Draw()
  65. self._Icons["scale"].NewCoord(self._Width/2,self._Height/2 )
  66. icon_idx = self._Value - 1
  67. if icon_idx < 0:
  68. icon_idx = 0
  69. self._Icons["scale"]._IconIndex = icon_idx
  70. self._Icons["scale"].Draw()
  71. """
  72. pygame.draw.line(self._CanvasHWND,(255,0,0), (posx,self._PosY),(self._Width,self._PosY),3) ## range line
  73. pygame.draw.line(self._CanvasHWND,(0,0,255), (self._PosX,self._PosY),(posx,self._PosY),3) ## range line
  74. pygame.draw.circle(self._CanvasHWND,(255,255,255),( posx, self._PosY),7,0)
  75. pygame.draw.circle(self._CanvasHWND,(0,0,0) ,( posx, self._PosY),7,1)## outer border
  76. """
  77. class BrightnessPage(Page):
  78. _MySlider = None
  79. _FootMsg = ["Nav","","","Back","Enter"]
  80. def Init(self):
  81. self._CanvasHWND = self._Screen._CanvasHWND
  82. self._Width = self._Screen._Width
  83. self._Height = self._Screen._Height
  84. self._MySlider = BSlider()
  85. # self._MySlider._Width = Width - 20
  86. # self._MySlider._Height = 30
  87. # self._MySlider._PosX = (self._Width - self._MySlider._Width)/2
  88. # self._MySlider._PosY = 40
  89. self._MySlider._Parent = self
  90. self._MySlider.SetCanvasHWND(self._CanvasHWND)
  91. self._MySlider.OnChangeCB = self.WhenSliderDrag
  92. self._MySlider.Init()
  93. brt = self.ReadBackLight()
  94. self._MySlider.SetValue( brt)
  95. def ReadBackLight(self):
  96. try:
  97. f = open(BackLight)
  98. except IOError:
  99. return 0
  100. else:
  101. with f:
  102. content = f.readlines()
  103. content = [x.strip() for x in content]
  104. return int(content[0])
  105. return 0
  106. def OnLoadCb(self):
  107. brt = self.ReadBackLight()
  108. self._MySlider.SetValue( brt)
  109. def SetBackLight(self,newbrt):
  110. try:
  111. f = open(BackLight,'w')
  112. except IOError:
  113. print("Open write %s failed %d" % (BackLight,newbrt))
  114. return False
  115. else:
  116. with f:
  117. f.write(str(newbrt))
  118. return True
  119. def WhenSliderDrag(self,value): ##value
  120. self.SetBackLight(value)
  121. def KeyDown(self,event):
  122. if IsKeyMenuOrB(event.key):
  123. self.ReturnToUpLevelPage()
  124. self._Screen.Draw()
  125. self._Screen.SwapAndShow()
  126. if event.key == CurKeys["Right"]:
  127. self._MySlider.Further()
  128. self._Screen.Draw()
  129. self._Screen.SwapAndShow()
  130. if event.key == CurKeys["Left"]:
  131. self._MySlider.StepBack()
  132. self._Screen.Draw()
  133. self._Screen.SwapAndShow()
  134. def Draw(self):
  135. self.ClearCanvas()
  136. self._MySlider.Draw()