Пример #1
0
 def __init__(self,
              length,
              limvals=None,
              text="",
              elements=None,
              normal_params=None,
              initial_value=None,
              finish=True):
     if initial_value is None:
         initial_value = 0
     if limvals[0] <= initial_value <= limvals[1]: #will be False if initial_value is None
         self.initial_value = initial_value
     else:
         if initial_value is not None:
             functions.debug_msg("Initial value for slider was not in the\
                                 limvals range. Auto set to limvals[0].")
         self.initial_value = limvals[0]
     self._drag_element = DraggerX(self)
     super(SliderX, self).__init__(length, limvals, text, elements,
                                     finish=False)
     self._drag_element.finish()
     self.add_elements(list([self._drag_element]))
     reac_click = Reaction(pygame.MOUSEBUTTONDOWN,self._func_reac_click)
     self.add_reaction(reac_click)
     if finish:
         self.finish()
Пример #2
0
 def __init__(self,
              length,
              limvals=None,
              text="",
              elements=None,
              normal_params=None,
              initial_value=None):
     if limvals[0] <= initial_value <= limvals[
             1]:  #will be False if initial_value is None
         self.initial_value = initial_value
     else:
         if initial_value is not None:
             functions.debug_msg("Initial value for slider was not in the\
                                 limvals range. Auto set to limvals[0].")
         self.initial_value = limvals[0]
     self._drag_element = DraggerX(self)
     super(SliderX, self).__init__(length, limvals, text, elements)
     self._drag_element.finish()
     self.add_elements(list([self._drag_element]))
Пример #3
0
 def __init__(self,
              length,
              limvals=None,
              text="",
              elements=None,
              normal_params=None,
              initial_value=None):
     if limvals[0] <= initial_value <= limvals[1]: #will be False if initial_value is None
         self.initial_value = initial_value
     else:
         if initial_value is not None:
             functions.debug_msg("Initial value for slider was not in the\
                                 limvals range. Auto set to limvals[0].")
         self.initial_value = limvals[0]
     self._drag_element = DraggerX(self)
     super(SliderX, self).__init__(length, limvals, text, elements)
     self._drag_element.finish()
     self.add_elements(list([self._drag_element]))
Пример #4
0
class SliderX(_GraphicalSlider):

    def __init__(self,
                 length,
                 limvals=None,
                 text="",
                 elements=None,
                 normal_params=None,
                 initial_value=None):
        if initial_value is None:
            initial_value = 0
        if limvals[0] <= initial_value <= limvals[1]: #will be False if initial_value is None
            self.initial_value = initial_value
        else:
            if initial_value is not None:
                functions.debug_msg("Initial value for slider was not in the\
                                    limvals range. Auto set to limvals[0].")
            self.initial_value = limvals[0]
        self._drag_element = DraggerX(self)
        super(SliderX, self).__init__(length, limvals, text, elements)
        self._drag_element.finish()
        self.add_elements(list([self._drag_element]))
        reac_click = Reaction(pygame.MOUSEBUTTONDOWN,self._func_reac_click)
        self.add_reaction(reac_click)

    def _func_reac_click(self, e):
        rel = pygame.mouse.get_rel()
##        if rel[0] == 0 and rel[1] == 0:
        if self.get_fus_rect().collidepoint(e.pos):
            self._drag_element.unblit()
            self._drag_element.update()
            value = self.pix_to_val(e.pos[0])
            if value < self.limvals[0]:
                value = self.limvals[0]
            elif value > self.limvals[1]:
                value = self.limvals[1]
            self._drag_element.place_at(value)
            self.father.refresh_value()
            self.unblit_and_reblit()
            drag_event = pygame.event.Event(constants.THORPY_EVENT,
                                            id=constants.EVENT_SLIDE,
                                            el=self.father)
            pygame.event.post(drag_event)

    def finish(self):
        Element.finish(self)
        self._drag_element.set_center((None, self.get_fus_center()[1]))
        for state in self._states:
            self._states[state].refresh_ghost_rect()
        self._setup()
        self._drag_element.place_at(self.initial_value)

    def _setup(self, height=None, dragsize=None):
        height = style.SLIDER_THICK if height is None else height
        dragsize = style.SLIDERX_DRAG_SIZE if dragsize is None else dragsize
        self._height = height
        size = (self._length + dragsize[0] + style.SLIDER_MARGINS[0], height)
        painter = functions.obtain_valid_painter(
            painterstyle.DEF_PAINTER,
            pressed=True,
            color=style.DEF_COLOR2,
            size=size)
        self.set_painter(painter)
        dp = functions.obtain_valid_painter(
            painterstyle.DEF_PAINTER,
            pressed=False,
            size=dragsize)
        try:
            drag_x = self.val_to_pix(self.initial_value,
                                     self.get_fus_topleft()[0]) + 1
            self._drag_element.change_painter(dp, autopress=False)
            self._drag_element.set_center((drag_x, self.get_fus_center()[1]))
        except AttributeError:
            drag_x = self.val_to_pix(self.initial_value,
                                     self.get_ghost_topleft()[0]) + 1
            self._drag_element.set_painter(dp, autopress=False)
            self._drag_element.set_center((drag_x, self.get_ghost_center()[1]))
        self._drag_element.set_free(y=False)
        Ghost.fit_children(self)

    def _get_slide_rect(self):
        slide_rect = Rect((0, 0), (self._length, self._height))
        try:
            slide_rect.center = self.get_fus_center()
        except AttributeError:
            slide_rect.center = self.get_ghost_center()
        return slide_rect

    def get_value(self):
        x0 = self._get_slide_rect().x
        val = self.pix_to_val(self._drag_element.get_fus_center()[0], x0)
        if val < self.limvals[0]:
            return self.limvals[0]
        elif val > self.limvals[1]:
            return self.limvals[1]
        else:
            return val

    def _add_buttons(self, size=None):
        _GraphicalSlider._add_buttons(self, size)
        rect = self.get_fus_rect()
        self._minus.set_center((-2 + rect.left - size[0] // 2, rect.centery))
        self._plus.set_center((2 + rect.right + size[0] // 2, rect.centery))
        Ghost.fit_children(self)
        self._add_buttons_reactions()

    def _add_buttons_reactions(self):
        """Add reactions to keyboard _press and unpress"""
        pass

    def get_size(self, state=None):
        """Special get_size method for sliders.
        Could be named get_family_size().
        """
        return self.get_family_rect(state).size
Пример #5
0
class SliderX(_GraphicalSlider):

    def __init__(self,
                 length,
                 limvals=None,
                 text="",
                 elements=None,
                 normal_params=None,
                 initial_value=None):
        if initial_value is None:
            initial_value = 0
        if limvals[0] <= initial_value <= limvals[1]: #will be False if initial_value is None
            self.initial_value = initial_value
        else:
            if initial_value is not None:
                functions.debug_msg("Initial value for slider was not in the\
                                    limvals range. Auto set to limvals[0].")
            self.initial_value = limvals[0]
        self._drag_element = DraggerX(self)
        super(SliderX, self).__init__(length, limvals, text, elements)
        self._drag_element.finish()
        self.add_elements(list([self._drag_element]))

    def finish(self):
        Element.finish(self)
        self._drag_element.set_center((None, self.get_fus_center()[1]))
        for state in self._states:
            self._states[state].refresh_ghost_rect()
        self._setup()
        self._drag_element.place_at(self.initial_value)

    def _setup(self, height=None, dragsize=None):
        height = style.SLIDER_THICK if height is None else height
        dragsize = style.SLIDERX_DRAG_SIZE if dragsize is None else dragsize
        self._height = height
        size = (self._length + dragsize[0] + style.SLIDER_MARGINS[0], height)
        painter = functions.obtain_valid_painter(
            painterstyle.DEF_PAINTER,
            pressed=True,
            color=style.DEF_COLOR2,
            size=size)
        self.set_painter(painter)
        dp = functions.obtain_valid_painter(
            painterstyle.DEF_PAINTER,
            pressed=False,
            size=dragsize)
        try:
            drag_x = self.val_to_pix(self.initial_value,
                                     self.get_fus_topleft()[0]) + 1
            self._drag_element.change_painter(dp, autopress=False)
            self._drag_element.set_center((drag_x, self.get_fus_center()[1]))
        except AttributeError:
            drag_x = self.val_to_pix(self.initial_value,
                                     self.get_ghost_topleft()[0]) + 1
            self._drag_element.set_painter(dp, autopress=False)
            self._drag_element.set_center((drag_x, self.get_ghost_center()[1]))
        self._drag_element.set_free(y=False)
        self.englobe_childrens()

    def _get_slide_rect(self):
        slide_rect = Rect((0, 0), (self._length, self._height))
        try:
            slide_rect.center = self.get_fus_center()
        except AttributeError:
            slide_rect.center = self.get_ghost_center()
        return slide_rect

    def get_value(self):
        x0 = self._get_slide_rect().x
        val = self.pix_to_val(self._drag_element.get_fus_center()[0], x0)
        if val < self._limvals[0]:
            return self._limvals[0]
        elif val > self._limvals[1]:
            return self._limvals[1]
        else:
            return val

    def _add_buttons(self, size=None):
        _GraphicalSlider._add_buttons(self, size)
        rect = self.get_fus_rect()
        self._minus.set_center((-2 + rect.left - size[0] // 2, rect.centery))
        self._plus.set_center((2 + rect.right + size[0] // 2, rect.centery))
        self.englobe_childrens()
        self._add_buttons_reactions()

    def _add_buttons_reactions(self):
        """Add reactions to keyboard _press and unpress"""
        pass

    def get_size(self, state=None):
        """Special get_size method for sliders.
        Could be named get_family_size().
        """
        return self.get_family_rect(state).size