Exemplo n.º 1
0
    def __init__(self, eventNode, coordSysNode=None, eventSource=avg.TOUCH | avg.MOUSE,
            initialEvent=None, 
            direction=ANY_DIRECTION, directionTolerance=DIRECTION_TOLERANCE,
            friction=-1, 
            possibleHandler=None, failHandler=None, detectedHandler=None,
            moveHandler=None, upHandler=None, endHandler=None):

        if coordSysNode != None:
            self.__coordSysNode = weakref.ref(coordSysNode)
        else:
            self.__coordSysNode = weakref.ref(eventNode)
        self.__moveHandler = utils.methodref(moveHandler)
        self.__upHandler = utils.methodref(upHandler)
        self.__direction = direction
        if self.__direction == DragRecognizer.ANY_DIRECTION:
            self.__minDist = 0
        else:
            self.__minDist = MIN_DRAG_DIST*g_Player.getPixelsPerMM()
        self.__directionTolerance = directionTolerance
        self.__friction = friction

        self.__isSliding = False
        self.__inertiaHandler = None
        super(DragRecognizer, self).__init__(eventNode, True, eventSource, 1, 
                initialEvent, possibleHandler=possibleHandler, failHandler=failHandler, 
                detectedHandler=detectedHandler, endHandler=endHandler)
Exemplo n.º 2
0
    def __init__(self, node, isContinuous, eventSource, maxContacts, initialEvent,
            possibleHandler=None, failHandler=None, detectedHandler=None,
            endHandler=None):
        if node:
            self.__node = weakref.ref(node)
        else:
            self.__node = None
        self.__isContinuous = isContinuous
        self.__eventSource = eventSource
        self.__maxContacts = maxContacts

        self.__possibleHandler = utils.methodref(possibleHandler)
        self.__failHandler = utils.methodref(failHandler)
        self.__detectedHandler = utils.methodref(detectedHandler)
        self.__endHandler = utils.methodref(endHandler)

        self.__setEventHandler() 
        self.__isEnabled = True
        self._contacts = {}
        self.__dirty = False

        self.__stateMachine = statemachine.StateMachine(str(type(self)), "IDLE")
        if self.__isContinuous:
            self.__stateMachine.addState("IDLE", ("POSSIBLE", "RUNNING"))
            self.__stateMachine.addState("POSSIBLE", ("IDLE", "RUNNING"))
            self.__stateMachine.addState("RUNNING", ("IDLE",))
        else:
            self.__stateMachine.addState("IDLE", ("POSSIBLE",))
            self.__stateMachine.addState("POSSIBLE", ("IDLE",))

        #self.__stateMachine.traceChanges(True)

        if initialEvent:
            self.__onDown(initialEvent)
Exemplo n.º 3
0
    def __init__(self, upNode=None, downNode=None, disabledNode=None, 
            activeAreaNode=None, pressHandler=None, clickHandler=None,
            stateChangeHandler=None, parent=None, **kwargs):
        super(Button, self).__init__(**kwargs)
        if parent:
            parent.appendChild(self)

        self.__upNode = upNode
        self.__downNode = downNode
        self.__disabledNode = disabledNode
        self.__activeAreaNode = activeAreaNode
        
        self.__pressCallback = utils.methodref(pressHandler)
        self.__clickCallback = utils.methodref(clickHandler)
        self.__stateChangeCallback = utils.methodref(stateChangeHandler)

        self.__capturedCursorIds = set()
        self.__overCursorIds = set()
        
        self.__isCheckable = False
        self.__isToggled = False

        self.__isOver = False
        self.__state = Button.STATE_UP
        
        if self.__upNode and self.__downNode:
            self.__setupNodes()
Exemplo n.º 4
0
    def __init__(self, eventNode, coordSysNode=None, eventSource=avg.TOUCH,
            initialEvent=None, friction=-1, 
            detectedHandler=None, moveHandler=None, upHandler=None, endHandler=None):
        if coordSysNode != None:
            self.__coordSysNode = weakref.ref(coordSysNode)
        else:
            self.__coordSysNode = weakref.ref(eventNode)
        self.__moveHandler = utils.methodref(moveHandler)
        self.__upHandler = utils.methodref(upHandler)
        self.__friction = friction

        self.__baseTransform = Mat3x3()
        self.__lastPosns = []
        self.__posns = []
        self.__inertiaHandler = None
        super(TransformRecognizer, self).__init__(eventNode, True, eventSource, None, 
                initialEvent, detectedHandler=detectedHandler, endHandler=endHandler)
Exemplo n.º 5
0
    def __init__(self, upNode, downNode, disabledNode=None, activeAreaNode=None, 
            fatFingerEnlarge=False, clickHandler=None, parent=None, **kwargs):
        super(TouchButton, self).__init__(**kwargs)
        if parent:
            parent.appendChild(self)

        self.__upNode = upNode
        self.__downNode = downNode
        self.__disabledNode = disabledNode
        self.__activeAreaNode = activeAreaNode
        
        self.__clickHandler = utils.methodref(clickHandler)

        self.__stateMachine = statemachine.StateMachine("TouchButton", "UP")
        self.__stateMachine.addState("UP", ("DOWN", "DISABLED"),
                enterFunc=self.__enterUp, leaveFunc=self.__leaveUp)
        self.__stateMachine.addState("DOWN", ("UP", "DISABLED"),
                enterFunc=self.__enterDown, leaveFunc=self.__leaveDown)
        self.__stateMachine.addState("DISABLED", ("UP", "DOWN"),
                enterFunc=self.__enterDisabled, leaveFunc=self.__leaveDisabled)

        self.appendChild(self.__upNode)
        self.__upNode.active = True
        self.appendChild(self.__downNode)
        self.__downNode.active = False

        if self.__disabledNode:
            self.appendChild(self.__disabledNode)
            self.__disabledNode.active = False
        
        if fatFingerEnlarge:
            if self.__activeAreaNode != None:
                raise(RuntimeError(
                    "TouchButton: Can't specify both fatFingerEnlarge and activeAreaNode"))
            size = upNode.size
            minSize = 20*g_Player.getPixelsPerMM()
            size = avg.Point2D(max(minSize, size.x), max(minSize, size.y))
            self.__activeAreaNode = avg.RectNode(size=size, opacity=0, parent=self)
        else:
            if self.__activeAreaNode == None:
                self.__activeAreaNode = self.__upNode
            else:
                self.appendChild(self.__activeAreaNode)

        self.__tapRecognizer = gesture.TapRecognizer(self.__activeAreaNode,
                possibleHandler=self.__onDown, 
                detectedHandler=self.__onTap, 
                failHandler=self.__onTapFail)
Exemplo n.º 6
0
 def setClickHandler(self, handler):
     self.__clickCallback = utils.methodref(handler)
Exemplo n.º 7
0
 def setPressHandler(self, handler):
     self.__pressCallback = utils.methodref(handler)
Exemplo n.º 8
0
    def __init__(self, uncheckedUpNode, uncheckedDownNode, checkedUpNode, checkedDownNode,
            uncheckedDisabledNode=None, checkedDisabledNode=None, activeAreaNode=None,
            enabled=True, fatFingerEnlarge=False, checkHandler=None, uncheckHandler=None,
            checked=False, parent=None, **kwargs):
        super(ToggleButton, self).__init__(**kwargs)
        if parent:
            parent.appendChild(self)

        self.__uncheckedUpNode = uncheckedUpNode
        self.__uncheckedDownNode = uncheckedDownNode
        self.__checkedUpNode = checkedUpNode
        self.__checkedDownNode = checkedDownNode
        self.__uncheckedDisabledNode = uncheckedDisabledNode
        self.__checkedDisabledNode = checkedDisabledNode

        self.__activeAreaNode = activeAreaNode
        
        self.__checkHandler = utils.methodref(checkHandler)
        self.__uncheckHandler = utils.methodref(uncheckHandler)

        self.__stateMachine = statemachine.StateMachine("ToggleButton", "UNCHECKED_UP")
        self.__stateMachine.addState("UNCHECKED_UP", ("UNCHECKED_DOWN",
                "UNCHECKED_DISABLED"), enterFunc=self.__enterUncheckedUp,
                leaveFunc=self.__leaveUncheckedUp)
        self.__stateMachine.addState("UNCHECKED_DOWN", ("UNCHECKED_UP",
                "UNCHECKED_DISABLED", "CHECKED_UP"), enterFunc=self.__enterUncheckedDown,
                leaveFunc=self.__leaveUncheckedDown)
        self.__stateMachine.addState("CHECKED_UP", ("CHECKED_DOWN", "CHECKED_DISABLED"),
                enterFunc=self.__enterCheckedUp, leaveFunc=self.__leaveCheckedUp)
        self.__stateMachine.addState("CHECKED_DOWN", ("CHECKED_UP", "UNCHECKED_UP",
                "CHECKED_DISABLED"), enterFunc=self.__enterCheckedDown,
                leaveFunc=self.__leaveCheckedDown)

        self.__stateMachine.addState("UNCHECKED_DISABLED", ("UNCHECKED_UP",),
                enterFunc=self.__enterUncheckedDisabled,
                leaveFunc=self.__leaveUncheckedDisabled)
        self.__stateMachine.addState("CHECKED_DISABLED", ("CHECKED_UP", ),
                enterFunc=self.__enterCheckedDisabled,
                leaveFunc=self.__leaveCheckedDisabled)

        if(checkedDisabledNode == None):
            self.__checkedDisabledNode = avg.ImageNode()             
        if(uncheckedDisabledNode == None):
            self.__uncheckedDisabledNode = avg.ImageNode()                   

        self.appendChild(self.__uncheckedUpNode)
        self.appendChild(self.__checkedUpNode)
        self.appendChild(self.__uncheckedDownNode)
        self.appendChild(self.__checkedDownNode)
        self.appendChild(self.__uncheckedDisabledNode)
        self.appendChild(self.__checkedDisabledNode)

        self.__uncheckedUpNode.active = True
        self.__checkedUpNode.active = False
        self.__uncheckedDownNode.active = False
        self.__checkedDownNode.active = False
        self.__checkedDisabledNode.active = False
        self.__uncheckedDisabledNode.active = False
        
        if fatFingerEnlarge:
            if self.__activeAreaNode != None:
                raise(RuntimeError(
                    "ToggleButton: Can't specify both fatFingerEnlarge and activeAreaNode"))
            size = upNode.size
            minSize = 20*g_Player.getPixelsPerMM()
            size = avg.Point2D(max(minSize, size.x), max(minSize, size.y))
            self.__activeAreaNode = avg.RectNode(size=size, opacity=0, parent=self)
        else:
            if self.__activeAreaNode == None:
                self.__activeAreaNode = self
            else:
                self.appendChild(self.__activeAreaNode)

        self.__tapRecognizer = gesture.TapRecognizer(self.__activeAreaNode,
                possibleHandler=self.__onDown, 
                detectedHandler=self.__onTap, 
                failHandler=self.__onTapFail)

        if not enabled:
            self.__stateMachine.changeState("UNCHECKED_DISABLED")
        if checked:
            self.setChecked(True)