Package libavg :: Module draggable

Source Code for Module libavg.draggable

 1  #!/usr/bin/python 
 2  # -*- coding: utf-8 -*- 
 3   
 4  avg = None 
 5  g_Player = None 
 6   
 7  try: 
 8      from . import avg 
 9  except ValueError: 
10      pass 
11   
12   
13 -class Draggable:
14 - def __init__(self, node, onDragStart=None, onDragEnd=None, onDragMove=None):
15 global g_Player 16 g_Player = avg.Player.get() 17 self.__node = node 18 self.__onDragStart = onDragStart 19 self.__onDragEnd = onDragEnd 20 self.__onDragMove = onDragMove 21 self.__isDragging = False
22
23 - def enable(self):
24 self.__node.setEventHandler(avg.CURSORDOWN, avg.MOUSE | avg.TOUCH, self.__onStart)
25
26 - def disable(self):
27 if self.__isDragging: 28 self.__stop() 29 self.__node.setEventHandler(avg.CURSORDOWN, avg.MOUSE | avg.TOUCH, None) 30 self.__node.setEventHandler(avg.CURSORMOTION, avg.MOUSE | avg.TOUCH, None) 31 self.__node.setEventHandler(avg.CURSORUP, avg.MOUSE | avg.TOUCH, None)
32
33 - def startDrag(self, event):
34 self.__onStart(event)
35
36 - def isDragging(self):
37 return self.__isDragging
38
39 - def __onStart(self, event):
40 self.__cursorID = event.cursorid 41 self.__isDragging = True 42 groupsNode = self.__node.getParent() 43 groupsNode.reorderChild(groupsNode.indexOf(self.__node), 44 groupsNode.getNumChildren()-1) 45 self.__node.setEventCapture(event.cursorid) 46 self.__node.setEventHandler(avg.CURSORDOWN, avg.MOUSE | avg.TOUCH, None) 47 self.__node.setEventHandler(avg.CURSORMOTION, avg.MOUSE | avg.TOUCH, self.__onMove) 48 self.__node.setEventHandler(avg.CURSORUP, avg.MOUSE | avg.TOUCH, self.__onStop) 49 if self.__onDragStart: 50 self.__onDragStart(event) 51 self.__startDragPos = self.__node.pos
52
53 - def __onMove(self, event):
54 if event.cursorid == self.__cursorID: 55 self.__node.x = self.__startDragPos[0]+event.x-event.lastdownpos[0] 56 self.__node.y = self.__startDragPos[1]+event.y-event.lastdownpos[1] 57 if self.__onDragMove: 58 self.__onDragMove(event)
59
60 - def __onStop(self, event):
61 if event.cursorid == self.__cursorID: 62 self.__onMove(event) 63 self.__stop() 64 if self.__onDragEnd: 65 self.__onDragEnd(event)
66
67 - def __stop(self):
68 self.__isDragging = False 69 self.__node.setEventHandler(avg.CURSORDOWN, avg.MOUSE | avg.TOUCH, self.__onStart) 70 self.__node.setEventHandler(avg.CURSORMOTION, avg.MOUSE | avg.TOUCH, None) 71 self.__node.setEventHandler(avg.CURSORUP, avg.MOUSE | avg.TOUCH, None) 72 self.__node.releaseEventCapture(self.__cursorID)
73 74
75 -def init(g_avg):
76 global avg 77 avg = g_avg
78