示例#1
0
 def __init__(self, parent, **kwargs):
     MetaWidget.__init__(self, parent)
     # data
     self.action = None
     # flags
     self.processKWArguments(kwargs)
     parent.registerWidget(self)
     # create widgets
     self.button1 = ArrowButton(self, action='onButton1')
     self.button1.subscribeAction('*', self)
     self.button2 = ArrowButton(self, action='onButton2')
     self.button2.subscribeAction('*', self)
     self.slider = ScrollSlider(self, action='onSlider')
     self.slider.subscribeAction('*', self)
示例#2
0
	def __init__(self, parent, **kwargs):
		MetaWidget.__init__(self, parent)
		# data
		self.action = None
		# flags
		self.processKWArguments(kwargs)
		parent.registerWidget(self)
		# create widgets
		self.button1 = ArrowButton(self, action = 'onButton1')
		self.button1.subscribeAction('*', self)
		self.button2 = ArrowButton(self, action = 'onButton2')
		self.button2.subscribeAction('*', self)
		self.slider = ScrollSlider(self, action = 'onSlider')
		self.slider.subscribeAction('*', self)
示例#3
0
class Scrollbar(MetaWidget):

	def __init__(self, parent, **kwargs):
		MetaWidget.__init__(self, parent)
		# data
		self.action = None
		# flags
		self.processKWArguments(kwargs)
		parent.registerWidget(self)
		# create widgets
		self.button1 = ArrowButton(self, action = 'onButton1')
		self.button1.subscribeAction('*', self)
		self.button2 = ArrowButton(self, action = 'onButton2')
		self.button2.subscribeAction('*', self)
		self.slider = ScrollSlider(self, action = 'onSlider')
		self.slider.subscribeAction('*', self)

	def layoutWidgets(self):
		gx, gy = self.theme.getGridParams()
		r = self.rect
		if self.rect.width > self.rect.height:
			# horizontal
			self.button1.rect = Rect(0, 0, gx, gy)
			self.button1.direction = ALIGN_W
			self.button2.rect = Rect(r.width - gx, 0, gx, gy)
			self.button2.direction = ALIGN_E
			self.slider.rect = Rect(gx, 0, r.width - 2 * gx, gy)
		else:
			# vertical
			self.button1.rect = Rect(0, 0, gx, gy)
			self.button1.direction = ALIGN_N
			self.button2.rect = Rect(0, r.height - gy, gx, gy)
			self.button2.direction = ALIGN_S
			self.slider.rect = Rect(0, gy, gx, r.height - 2 * gy)
		MetaWidget.layoutWidgets(self)

	def drawMetaWidget(self, surface):
		return self.theme.drawScrollbar(surface, self)

	def onButton1(self, widget, actionName, data):
		s = self.slider
		s.position -= s.shown
		if s.position < s.min:
			s.position = s.min
		self.processAction(self.action)

	def onButton2(self, widget, actionName, data):
		s = self.slider
		s.position += s.shown
		if s.position + s.shown > s.max:
			s.position = s.max - s.shown
		# if shown is greater then max, then position is negative
		if s.position < s.min:
			s.position = s.min
		self.processAction(self.action)

	def onSlider(self, widget, actionName, data):
		self.processAction(self.action)

	# redirect mouse wheel events to the slider
	def processMWUp(self, evt):
		return self.slider.processMWUp(evt)

	def processMWDown(self, evt):
		return self.slider.processMWDown(evt)
示例#4
0
class Scrollbar(MetaWidget):
    def __init__(self, parent, **kwargs):
        MetaWidget.__init__(self, parent)
        # data
        self.action = None
        # flags
        self.processKWArguments(kwargs)
        parent.registerWidget(self)
        # create widgets
        self.button1 = ArrowButton(self, action='onButton1')
        self.button1.subscribeAction('*', self)
        self.button2 = ArrowButton(self, action='onButton2')
        self.button2.subscribeAction('*', self)
        self.slider = ScrollSlider(self, action='onSlider')
        self.slider.subscribeAction('*', self)

    def layoutWidgets(self):
        gx, gy = self.theme.getGridParams()
        r = self.rect
        if self.rect.width > self.rect.height:
            # horizontal
            self.button1.rect = pygame.Rect(0, 0, gx, gy)
            self.button1.direction = Const.ALIGN_W
            self.button2.rect = pygame.Rect(r.width - gx, 0, gx, gy)
            self.button2.direction = Const.ALIGN_E
            self.slider.rect = pygame.Rect(gx, 0, r.width - 2 * gx, gy)
        else:
            # vertical
            self.button1.rect = pygame.Rect(0, 0, gx, gy)
            self.button1.direction = Const.ALIGN_N
            self.button2.rect = pygame.Rect(0, r.height - gy, gx, gy)
            self.button2.direction = Const.ALIGN_S
            self.slider.rect = pygame.Rect(0, gy, gx, r.height - 2 * gy)
        MetaWidget.layoutWidgets(self)

    def drawMetaWidget(self, surface):
        return self.theme.drawScrollbar(surface, self)

    def onButton1(self, widget, actionName, data):
        s = self.slider
        s.position -= s.shown
        if s.position < s.min:
            s.position = s.min
        self.processAction(self.action)

    def onButton2(self, widget, actionName, data):
        s = self.slider
        s.position += s.shown
        if s.position + s.shown > s.max:
            s.position = s.max - s.shown
        # if shown is greater then max, then position is negative
        if s.position < s.min:
            s.position = s.min
        self.processAction(self.action)

    def onSlider(self, widget, actionName, data):
        self.processAction(self.action)

    # redirect mouse wheel events to the slider
    def processMWUp(self, evt):
        return self.slider.processMWUp(evt)

    def processMWDown(self, evt):
        return self.slider.processMWDown(evt)