def _start_anim(self, type=None): """ start the animation of the given type """ self._reset_anim(type) kwargs = { 'delay': int(self.delay_slider.value), 'callback': None, 'repeat': 0, } if type == ACTION_MOVE: kwargs['callback'] = self._move self._move_timer = Timer(**kwargs) self._move_timer.start() elif type == ACTION_RESIZE: kwargs['callback'] = self._resize self._resize_timer = Timer(**kwargs) self._resize_timer.start() elif type == ACTION_COLOR: kwargs['callback'] = self._color self._color_timer = Timer(**kwargs) self._color_timer.start() # progressbar kwargs['callback'] = self._update_progress self.progressbar.value = 0 # self.progressbar2.value = 0 self._progress_timer = Timer(**kwargs) self._progress_timer.start()
def _redirectEvent(self, name, event): self.indent += 4 try: event = self.translateEvent(getEventType(name), event) if name in self.events: if self.debug: print "-" * self.indent, name for f in self.events[name].itervalues(): def delayed_f(timer, f=f): # bind f during loop n_timer = timer() f(event) #FIXME: figure out a way to get rid of the dead timer list del self._deadtimers[:] if n_timer in self._timers: self._deadtimers.append(n_timer) self._timers.remove(n_timer) timer = Timer(repeat=1) timer._callback = cbwa(delayed_f, weakref.ref(timer)) timer.start() self._timers.append(timer) except: print name, repr(event) traceback.print_exc() raise finally: self.indent -= 4
def anim_playback(self, widget): """ start / stop playback of an animation due to status of a gui ToggleButton Sets also two ivars of timer object (active & loop) """ if widget._isToggled(): self._anim_timer.stop() self._anim_timer.active = False else: frame_delay = self._anim_data['obj'].getFrameDuration( self._anim_data['current']) self._anim_timer = Timer(delay=frame_delay, callback=self.next_anim_frame) self._anim_timer.active = True self._anim_timer.loop = self._gui_anim_loop._isMarked() self._anim_timer.start()