above_all_patch.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. # -*- coding: utf-8 -*-
  2. import pygame
  3. from libs.roundrects import aa_round_rect
  4. import alsaaudio
  5. ## local package import
  6. from constants import ICON_TYPES,icon_ext,icon_width,icon_height,RUNEVT
  7. from icon_item import IconItem
  8. from page import Page,PageStack
  9. from title_bar import TitleBar
  10. from foot_bar import FootBar
  11. from constants import Width,Height
  12. from util_funcs import midRect
  13. from keys_def import CurKeys
  14. from label import Label
  15. from skin_manager import MySkinManager
  16. from lang_manager import MyLangManager
  17. from widget import Widget
  18. class AboveAllPatch(Widget):
  19. _PosX =Width/2
  20. _PosY =Height/2
  21. _Width =50
  22. _Height=120
  23. _Text =""
  24. _FontObj= MyLangManager.TrFont("veramono20")
  25. _Parent =None
  26. _Color = MySkinManager.GiveColor('Text')
  27. _ValColor = MySkinManager.GiveColor('URL')
  28. _CanvasHWND = None
  29. _TextSurf = None
  30. _Icons = {}
  31. _Value = 0
  32. def __init__(self):
  33. self._Icons = {}
  34. def Init(self):
  35. pass
  36. def SetCanvasHWND(self,_canvashwnd):
  37. self._CanvasHWND = _canvashwnd
  38. def Draw(self):
  39. start_rect = midRect(self._PosX,self._PosY,self._Width,self._Height,Width,Height)
  40. aa_round_rect(self._CanvasHWND,start_rect, self._Color,3,0, self._Color)
  41. if self._Value > 10:
  42. vol_height = int(self._Height * (float( self._Value)/100.0))
  43. dheight = self._Height - vol_height
  44. vol_rect = pygame.Rect(self._PosX-self._Width/2, self._PosY-self._Height/2+dheight, self._Width, vol_height)
  45. aa_round_rect(self._CanvasHWND,vol_rect, self._ValColor,3,0, self._ValColor)
  46. else:
  47. vol_height = 10
  48. dheight = self._Height - vol_height
  49. vol_rect = pygame.Rect(self._PosX-self._Width/2, self._PosY-self._Height/2+dheight, self._Width, vol_height)
  50. aa_round_rect(self._CanvasHWND,vol_rect, self._ValColor,3,0, self._ValColor)
  51. class SoundPatch(AboveAllPatch):
  52. # _Segs = [0,15,29, 45,55,65, 75,90,100]
  53. snd_segs = [ [0,20],[21,40],[41,50],[51,60],[61,70],[71,85],[86,90],[91,95],[96,100] ]
  54. _Needle = 0
  55. def Init(self):
  56. self.SetCanvasHWND(self._Parent._CanvasHWND)
  57. def VolumeUp(self):
  58. m = alsaaudio.Mixer()
  59. vol = m.getvolume()[0]
  60. # print("VolumeUp vol %d " % vol)
  61. for i,v in enumerate(self.snd_segs):
  62. if vol >= v[0] and vol <= v[1]:
  63. self._Needle = i
  64. break
  65. self._Needle += 1
  66. if self._Needle > len(self.snd_segs) -1:
  67. self._Needle = len(self.snd_segs) -1
  68. # print("Set volume %d" % self.snd_segs[self._Needle][1] )
  69. m.setvolume( self.snd_segs[self._Needle][0] + (self.snd_segs[self._Needle][1] - self.snd_segs[self._Needle][0])/2 ) ## prefer bigger one
  70. self._Value = self.snd_segs[self._Needle][1]
  71. # print( self._Value)
  72. return self._Value
  73. def VolumeDown(self):
  74. m = alsaaudio.Mixer()
  75. vol = m.getvolume()[0]
  76. for i,v in enumerate(self.snd_segs):
  77. if vol >= v[0] and vol <= v[1]:
  78. self._Needle = i
  79. break
  80. self._Needle -= 1
  81. if self._Needle < 0:
  82. self._Needle = 0
  83. vol = self.snd_segs[self._Needle][0] ## prefer smaller one
  84. if vol < 0:
  85. vol = 0
  86. m.setvolume(vol)
  87. # print(vol)
  88. self._Value = vol
  89. return vol
  90. def Draw(self):
  91. # 200 total width
  92. # h = 40
  93. for i in range(0,self._Needle+1):
  94. #w = 10,h = 40
  95. vol_rect = pygame.Rect(80+i*20, self._Height/2+20,10, 40)
  96. aa_round_rect(self._CanvasHWND,vol_rect,MySkinManager.GiveColor("Front"),3,0,MySkinManager.GiveColor("Front"))