示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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 = {}
示例#7
0
    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()
示例#8
0
    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"])