Beispiel #1
0
class SoundSlider(Slider):
    OnChangeCB = None
    
    _BGpng = None
    _BGwidth = 192
    _BGheight = 173

    _NeedleSurf = None
    _Scale      = None
    _Parent     = None
    
    snd_segs = [ [0,20],[21,40],[41,50],[51,60],[61,70],[71,85],[86,90],[91,95],[96,100] ]

    
    def __init__(self):
        Slider.__init__(self)
        
    def Init(self):
        self._Width = self._Parent._Width
        self._Height = self._Parent._Height
        
        self._BGpng = IconItem()
        self._BGpng._ImgSurf = MyIconPool.GiveIconSurface("vol")
        self._BGpng._MyType = ICON_TYPES["STAT"]
        self._BGpng._Parent = self
        self._BGpng.Adjust(0,0,self._BGwidth,self._BGheight,0)

        ##self._NeedleSurf = pygame.Surface( (38,12),pygame.SRCALPHA )
        
        self._Scale = MultiIconItem()
        self._Scale._MyType = ICON_TYPES["STAT"]
        self._Scale._Parent = self
        self._Scale._ImgSurf = MyIconPool.GiveIconSurface("scale")
        self._Scale._IconWidth = 82
        self._Scale._IconHeight = 63
        self._Scale.Adjust(0,0,82,63,0)
        
    def SetValue(self,vol):#pct 0-100
        for i,v in enumerate(self.snd_segs):
            if vol  >= v[0] and vol <= v[1]:
                self._Value = i # self._Value :  0 - 8
                break
        
    def Further(self):
        self._Value+=1

        if self._Value > len(self.snd_segs)-1:
            self._Value = len(self.snd_segs) -1

        vol = self.snd_segs[self._Value][0] + (self.snd_segs[self._Value][1] - self.snd_segs[self._Value][0])/2 
        
        if self.OnChangeCB != None:
            if callable(self.OnChangeCB):
                self.OnChangeCB( vol )
        
    def StepBack(self):
        self._Value-=1

        if self._Value < 0:
            self._Value = 0

        vol = self.snd_segs[self._Value][0] + (self.snd_segs[self._Value][1] - self.snd_segs[self._Value][0])/2 
        
        if self.OnChangeCB != None:
            if callable(self.OnChangeCB):
                self.OnChangeCB( vol )
    
    def Draw(self):
        
        self._BGpng.NewCoord(self._Width/2,self._Height/2 )
        self._BGpng.Draw()

        self._Scale.NewCoord(self._Width/2,self._Height/2)

        self._Scale._IconIndex = self._Value
        
        self._Scale.Draw()
Beispiel #2
0
class SoundSlider(Slider):
    OnChangeCB = None

    _BGpng = None
    _BGwidth = 192
    _BGheight = 173

    _NeedleSurf = None
    _Scale = None
    _Parent = None
    _Segs = [0, 15, 29, 45, 55, 65, 75, 90, 100]
    snd_segs = [[0, 20], [21, 40], [41, 50], [51, 60], [61, 70], [71, 85],
                [86, 90], [91, 95], [96, 100]]

    def __init__(self):
        Slider.__init__(self)

    def Init(self):
        self._Width = self._Parent._Width
        self._Height = self._Parent._Height

        self._BGpng = IconItem()
        self._BGpng._ImgSurf = MyIconPool._Icons["vol"]
        self._BGpng._MyType = ICON_TYPES["STAT"]
        self._BGpng._Parent = self
        self._BGpng.Adjust(0, 0, self._BGwidth, self._BGheight, 0)

        ##self._NeedleSurf = pygame.Surface( (38,12),pygame.SRCALPHA )

        self._Scale = MultiIconItem()
        self._Scale._MyType = ICON_TYPES["STAT"]
        self._Scale._Parent = self
        self._Scale._ImgSurf = MyIconPool._Icons["scale"]
        self._Scale._IconWidth = 82
        self._Scale._IconHeight = 63
        self._Scale.Adjust(0, 0, 82, 63, 0)

    def SetValue(self, pct):  #pct 0-100

        for i, v in enumerate(self.snd_segs):
            if pct >= v[0] and pct <= v[1]:
                self._Value = i

    def Further(self):
        self._Value += 1
        if self._Value < len(self._Segs):
            if self.OnChangeCB != None:
                if callable(self.OnChangeCB):
                    self.OnChangeCB(self._Segs[self._Value])
        else:
            self._Value = len(self._Segs) - 1

    def StepBack(self):
        self._Value -= 1

        if self._Value < 0:
            self._Value = 0

        if self.OnChangeCB != None:
            if callable(self.OnChangeCB):
                self.OnChangeCB(self._Segs[self._Value])

    def Draw(self):

        self._BGpng.NewCoord(self._Width / 2, self._Height / 2)
        self._BGpng.Draw()

        self._Scale.NewCoord(self._Width / 2, self._Height / 2)

        self._Scale._IconIndex = self._Value

        self._Scale.Draw()