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()
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]))
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]))
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
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