def __init__(self, orientation, cfg, enabled=True, height=0, width=0, range=(0.,1.), thumbPos=0.0, parent=None, **kwargs): super(SliderBase, self).__init__(**kwargs) self.registerInstance(self, parent) self.publish(SliderBase.THUMB_POS_CHANGED) self.publish(SliderBase.PRESSED) self.publish(SliderBase.RELEASED) self._orientation = orientation trackBmp = cfg["trackBmp"] trackDisabledBmp = cfg["trackDisabledBmp"] self._trackNode = ScrollBarTrack(bmp=trackBmp, disabledBmp=trackDisabledBmp, endsExtent=cfg["trackEndsExtent"], orientation=self._orientation) self.appendChild(self._trackNode) self._initThumb(cfg) self._range = range self._thumbPos = thumbPos self.setThumbPos(thumbPos) self.subscribe(self.SIZE_CHANGED, lambda newSize: self._positionNodes()) if orientation == Orientation.HORIZONTAL: self.size = (width, trackBmp.getSize().y) else: self.size = (trackBmp.getSize().x, height) if not(enabled): self.setEnabled(False) self.__recognizer = gesture.DragRecognizer(self._thumbNode, friction=-1, detectedHandler=self.__onDragStart, moveHandler=self.__onDrag, upHandler=self.__onUp)
def __init__(self, cfg, width=0, range=(0., 1.), thumbPos=0.0, parent=None, **kwargs): super(IntervalSliderBase, self).__init__(**kwargs) self.registerInstance(self, parent) self.__i_line = avg.LineNode(strokewidth=3, color=global_values.COLOR_SECONDARY, parent=self, pos1=(0, 16), pos2=(width, 16)) self.publish(IntervalSliderBase.THUMB_POS_CHANGED) self.publish(IntervalSliderBase.PRESSED) self.publish(IntervalSliderBase.RELEASED) self._initThumb(cfg) self._range = range self._thumbPos = thumbPos self.subscribe(self.SIZE_CHANGED, lambda newSize: self._positionNodes()) self.size = (width, 20) self.__recognizer = gesture.DragRecognizer( self._thumbNode, friction=-1, detectedHandler=self.__onDragStart, moveHandler=self.__onDrag, upHandler=self.__onUp)
def __init__(self, text, friction=-1, **kwargs): super(ConstrainedDragNode, self).__init__(text, **kwargs) self.recognizer = gesture.DragRecognizer( eventNode=self, detectedHandler=self.__onDetected, moveHandler=self.__onHorizMove, upHandler=self.__onHorizMove, direction=gesture.DragRecognizer.HORIZONTAL, friction=0.05) self.recognizer2 = gesture.DragRecognizer( eventNode=self, detectedHandler=self.__onDetected, moveHandler=self.__onVertMove, upHandler=self.__onVertMove, direction=gesture.DragRecognizer.VERTICAL, friction=0.05)
def __init__(self, text, friction=-1, **kwargs): super(DragNode, self).__init__(text, **kwargs) self.recognizer = gesture.DragRecognizer( eventNode=self, detectedHandler=self.__onDetected, moveHandler=self.__onMove, upHandler=self.__onMove, endHandler=self.__onEnd, friction=friction)
def testCanvasDrag(self): def onDrag(offset): self.assertAlmostEqual(offset, (-40,-40)) self.__onDragCalled = True player.setFakeFPS(100) self.__onDragCalled = False mainCanvas, offscreenCanvas = self.__setupCanvas(True) self.node.angle = math.pi image = avg.ImageNode(parent=offscreenCanvas.getRootNode(), size=(160,120), href="rgb24-64x64.png") dragRecognizer = gesture.DragRecognizer(image, moveHandler=onDrag, friction=-1) self.start(False, (lambda: self._sendMouseEvent(avg.Event.CURSOR_DOWN, 30, 30), lambda: self._sendMouseEvent(avg.Event.CURSOR_MOTION, 70, 70), )) player.setFakeFPS(-1) self.assert_(self.__onDragCalled)
def __init__(self, parent=None, **kwargs): super(InteractiveDivNode, self).__init__(**kwargs) self.registerInstance(self, parent) EventDispatcher.__init__(self) self.__drag_recognizer = gesture.DragRecognizer( eventNode=self, minDragDist=CommonRecognizerDefaults.DRAG_MIN_DIST, detectedHandler=self._on_drag_started, moveHandler=self._on_drag, upHandler=self._on_drag_ended, friction=-1 ) self.subscribe(avg.Node.CURSOR_DOWN, self.__on_cursor_down) self.subscribe(avg.Node.CURSOR_UP, self.__on_cursor_up) self._drag_start_pos = 0, 0 self._last_drag_change = 0, 0 # key -> event id value -> start time self.__down_events = {}
def __init__(self, disableMouseFocus=False, moveCoursorOnTouch=True, textBackgroundNode=None, loupeBackgroundNode=None, parent=None, **kwargs): """ @param parent: parent of the node @param disableMouseFocus: boolean, prevents that mouse can set focus for this instance @param moveCoursorOnTouch: boolean, activate the coursor motion on touch events """ super(TextArea, self).__init__(**kwargs) self.registerInstance(self, parent) self.__blurOpacity = DEFAULT_BLUR_OPACITY self.__border = 0 self.__data = [] self.__cursorPosition = 0 textNode = avg.WordsNode(rawtextmode=True) if textBackgroundNode is not None: self.appendChild(textBackgroundNode) if not disableMouseFocus: self.setEventHandler(avg.Event.CURSOR_UP, avg.Event.MOUSE, self.__onClick) self.setEventHandler(avg.Event.CURSOR_UP, avg.Event.TOUCH, self.__onClick) self.appendChild(textNode) cursorContainer = avg.DivNode() cursorNode = avg.LineNode(color='000000') self.appendChild(cursorContainer) cursorContainer.appendChild(cursorNode) self.__flashingCursor = False self.__cursorContainer = cursorContainer self.__cursorNode = cursorNode self.__textNode = textNode self.__loupe = None self.setFocus(True) player.setInterval(CURSOR_FLASHING_DELAY, self.__tickFlashCursor) self.__lastActivity = 0 if moveCoursorOnTouch: self.__recognizer = gesture.DragRecognizer(eventNode=self, friction=-1, moveHandler=self.__moveHandler, detectedHandler=self.__detectedHandler, upHandler=self.__upHandler) self.__loupeZoomFactor = 0.5 self.__loupe = avg.DivNode(parent=self, crop=True) if loupeBackgroundNode is not None: self.__loupe.appendChild(loupeBackgroundNode) self.__loupe.size = loupeBackgroundNode.size else: self.__loupe.size = (50,50) avg.RectNode(fillopacity=1, fillcolor="f5f5f5", color="ffffff", size=self.__loupe.size, parent=self.__loupe) self.__loupeOffset = (self.__loupe.size[0]/2.0, self.__loupe.size[1]+20) self.__loupe.unlink() self.__zoomedImage = avg.DivNode(parent=self.__loupe) self.__loupeTextNode = avg.WordsNode(rawtextmode=True, parent=self.__zoomedImage) self.__loupeCursorContainer = avg.DivNode(parent=self.__zoomedImage) self.__loupeCursorNode = avg.LineNode(color='000000', parent=self.__loupeCursorContainer) self.setStyle()
def __init__(self, contentNode, size, skinObj=skin.Skin.default, enabled=True, scrollBars=(Orientation.HORIZONTAL, Orientation.VERTICAL), parent=None, **kwargs): super(ScrollArea, self).__init__(**kwargs) self.registerInstance(self, parent) self.cfg = skinObj.defaultScrollAreaCfg self.publish(self.PRESSED) self.publish(self.RELEASED) self.publish(self.CONTENT_POS_CHANGED) self.__scrollPane = ScrollPane(contentNode=contentNode, parent=self) if "borderBmp" in self.cfg: endsExtent = self.cfg["borderEndsExtent"] self._borderNode = HVStretchNode(src=self.cfg["borderBmp"], endsExtent=endsExtent, sensitive=False, parent=self) else: self._borderNode = None sensitiveScrollBars = self.cfg["sensitiveScrollBars"] if Orientation.HORIZONTAL in scrollBars: self._hScrollBar = slider.ScrollBar(sensitive=sensitiveScrollBars, parent=self, skinObj=skinObj) self._hScrollBar.subscribe(slider.Slider.THUMB_POS_CHANGED, self.__onHThumbMove) else: self._hScrollBar = None if Orientation.VERTICAL in scrollBars: self._vScrollBar = slider.ScrollBar( orientation=Orientation.VERTICAL, sensitive=sensitiveScrollBars, parent=self, skinObj=skinObj) self._vScrollBar.subscribe(slider.Slider.THUMB_POS_CHANGED, self.__onVThumbMove) else: self._vScrollBar = None self.subscribe(self.SIZE_CHANGED, self.__positionNodes) self.size = size self.__enabled = True if not (enabled): self.setEnabled(False) self.recognizer = gesture.DragRecognizer( eventNode=self.__scrollPane, detectedHandler=self.__onDragStart, moveHandler=self.__onDragMove, upHandler=self.__onDragUp, friction=self.cfg["friction"])