brightness_page.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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 UI.skin_manager import MySkinManager
  15. from config import BackLight
  16. import myvars
  17. class BSlider(Slider):
  18. OnChangeCB = None
  19. _Parent = None
  20. _Icons = {}
  21. def __init__(self):
  22. Slider.__init__(self)
  23. self._Icons = {}
  24. def Init(self):
  25. self._Width = self._Parent._Width
  26. self._Height = self._Parent._Height
  27. self._BrightnessLabel = Label()
  28. self._BrightnessLabel.SetCanvasHWND(self._CanvasHWND)
  29. self._BrightnessLabel.Init("BRIGHT",MySkinManager.GiveFont("EurostileBold13"))
  30. self._BrightnessLabel.SetColor(MySkinManager.GiveColor('Text'))
  31. def SetValue(self,brt):
  32. self._Value = brt
  33. def Further(self):
  34. self._Value+=1
  35. if self._Value > 9:
  36. self._Value = 9
  37. if self.OnChangeCB != None:
  38. if callable(self.OnChangeCB):
  39. self.OnChangeCB(self._Value)
  40. def StepBack(self):
  41. self._Value-=1
  42. if self._Value < 1:
  43. self._Value = 1
  44. if self.OnChangeCB != None:
  45. if callable(self.OnChangeCB):
  46. self.OnChangeCB(self._Value)
  47. def Draw(self):
  48. start_x = 82
  49. start_y = self._Parent._Screen._Height/2-5
  50. height = 30
  51. width = 4
  52. padding = 15
  53. seg = self._Value-1
  54. for i in range(0,9):
  55. rect = pygame.Rect(start_x+i*(width+padding),start_y,width,height)
  56. if i > seg:
  57. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'),rect, 1)
  58. #aa_round_rect(self._CanvasHWND,rect, MySkinManager.GiveColor('Text'),1,1, MySkinManager.GiveColor('White'))
  59. else:
  60. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'),rect, 0)
  61. #aa_round_rect(self._CanvasHWND,rect, MySkinManager.GiveColor('Text'),1,0, MySkinManager.GiveColor('White'))
  62. self._BrightnessLabel.NewCoord(118,self._Parent._Screen._Height/2-30)
  63. self._BrightnessLabel.Draw(True)
  64. minus_box_rect = pygame.Rect(start_x- (4+6)*4,start_y,6*4,30)
  65. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'),minus_box_rect, 0)
  66. minus_rect = pygame.Rect(start_x-8*4,start_y+14,2*4,2)
  67. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),minus_rect, 0)
  68. plus_box_rect = pygame.Rect(start_x + 39*4 +4*4,start_y,6*4,30)
  69. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('Text'),plus_box_rect, 0)
  70. cross1_rect = pygame.Rect(start_x+39*4+4*4+2*4,start_y+14,2*4,2)
  71. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),cross1_rect, 0)
  72. cross2_rect = pygame.Rect(start_x+39*4+4*4+2*4+3,start_y+14-3,2,2*4)
  73. pygame.draw.rect(self._CanvasHWND,MySkinManager.GiveColor('White'),cross2_rect, 0)
  74. class BrightnessPage(Page):
  75. _MySlider = None
  76. _FootMsg = ["Nav","","","Back","Enter"]
  77. def Init(self):
  78. self._CanvasHWND = self._Screen._CanvasHWND
  79. self._Width = self._Screen._Width
  80. self._Height = self._Screen._Height
  81. self._MySlider = BSlider()
  82. # self._MySlider._Width = Width - 20
  83. # self._MySlider._Height = 30
  84. # self._MySlider._PosX = (self._Width - self._MySlider._Width)/2
  85. # self._MySlider._PosY = 40
  86. self._MySlider._Parent = self
  87. self._MySlider.SetCanvasHWND(self._CanvasHWND)
  88. self._MySlider.OnChangeCB = self.WhenSliderDrag
  89. self._MySlider.Init()
  90. brt = self.ReadBackLight()
  91. self._MySlider.SetValue( brt)
  92. def ReadBackLight(self):
  93. try:
  94. f = open(BackLight)
  95. except IOError:
  96. return 0
  97. else:
  98. with f:
  99. content = f.readlines()
  100. content = [x.strip() for x in content]
  101. return int(content[0])
  102. return 0
  103. def OnLoadCb(self):
  104. brt = self.ReadBackLight()
  105. self._MySlider.SetValue( brt)
  106. def SetBackLight(self,newbrt):
  107. try:
  108. f = open(BackLight,'w')
  109. except IOError:
  110. print("Open write %s failed %d" % (BackLight,newbrt))
  111. return False
  112. else:
  113. with f:
  114. f.write(str(newbrt))
  115. return True
  116. def WhenSliderDrag(self,value): ##value
  117. self.SetBackLight(value)
  118. def KeyDown(self,event):
  119. if IsKeyMenuOrB(event.key):
  120. self.ReturnToUpLevelPage()
  121. self._Screen.Draw()
  122. self._Screen.SwapAndShow()
  123. if event.key == CurKeys["Right"]:
  124. self._MySlider.Further()
  125. self._Screen.Draw()
  126. self._Screen.SwapAndShow()
  127. if event.key == CurKeys["Left"]:
  128. self._MySlider.StepBack()
  129. self._Screen.Draw()
  130. self._Screen.SwapAndShow()
  131. def Draw(self):
  132. self.ClearCanvas()
  133. self._MySlider.Draw()