@@ -14,6 +14,8 @@ class View(QtWidgets.QGraphicsView):
14
14
15
15
_mouse_wheel_zoom_rate = 0.0015
16
16
17
+ request_node = QtCore .Signal (str )
18
+
17
19
def __init__ (self , parent ):
18
20
super (View , self ).__init__ (parent )
19
21
self .setRenderHint (QtGui .QPainter .Antialiasing )
@@ -23,9 +25,10 @@ def __init__(self, parent):
23
25
gl_format .setSamples (10 )
24
26
gl_widget = QtOpenGL .QGLWidget (gl_format )
25
27
28
+ self .currentScale = 1
26
29
self ._pan = False
27
- self ._panStartX = 0
28
- self ._panStartY = 0
30
+ self ._pan_start_x = 0
31
+ self ._pan_start_y = 0
29
32
self ._numScheduledScalings = 0
30
33
self .lastMousePos = QtCore .QPoint ()
31
34
@@ -37,10 +40,6 @@ def __init__(self, parent):
37
40
self .setHorizontalScrollBarPolicy (QtCore .Qt .ScrollBarAlwaysOff )
38
41
self .setFrameShape (QtWidgets .QFrame .NoFrame )
39
42
40
- def toggleDragMode (self ):
41
- if self .dragMode () == QtWidgets .QGraphicsView .ScrollHandDrag :
42
- self .setDragMode (QtWidgets .QGraphicsView .NoDrag )
43
-
44
43
def wheelEvent (self , event ):
45
44
num_degrees = event .delta () / 8.0
46
45
num_steps = num_degrees / 5.0
@@ -50,15 +49,18 @@ def wheelEvent(self, event):
50
49
if self ._numScheduledScalings * num_steps < 0 :
51
50
self ._numScheduledScalings = num_steps
52
51
53
- self .anim = QtCore .QTimeLine (100 )
54
- self .anim .setUpdateInterval (2 )
52
+ self .anim = QtCore .QTimeLine (350 )
53
+ self .anim .setUpdateInterval (20 )
55
54
56
55
self .anim .valueChanged .connect (self .scaling_time )
57
56
self .anim .finished .connect (self .anim_finished )
58
57
self .anim .start ()
59
58
60
59
def scaling_time (self , x ):
61
60
factor = 1.0 + self ._numScheduledScalings / 300.0
61
+
62
+ self .currentScale *= factor
63
+
62
64
self .scale (factor , factor )
63
65
64
66
def anim_finished (self ):
@@ -124,9 +126,52 @@ def contextMenuEvent(self, event):
124
126
125
127
if item :
126
128
if isinstance (item , Connection ):
127
- # print(type(item))
128
- # if item.type() == Connection.Type:
129
+
129
130
print ("Found Connection" , item )
130
131
elbow_action = QtWidgets .QAction ("Add Elbow" , self )
131
132
elbow_action .triggered .connect (self .add_elbow )
132
133
self .menu .addAction (elbow_action )
134
+
135
+ def dragEnterEvent (self , e ):
136
+
137
+ if e .mimeData ().hasFormat ("text/plain" ):
138
+ e .accept ()
139
+ else :
140
+ e .ignore ()
141
+
142
+ def dropEvent (self , e ):
143
+ drop_node_name = e .mimeData ().text ()
144
+ self .request_node .emit (drop_node_name )
145
+
146
+ def mousePressEvent (self , event ):
147
+ if event .button () == QtCore .Qt .MiddleButton :
148
+ self ._pan = True
149
+ self ._pan_start_x = event .x ()
150
+ self ._pan_start_y = event .y ()
151
+ self .setCursor (QtCore .Qt .ClosedHandCursor )
152
+
153
+ return super (View , self ).mousePressEvent (event )
154
+
155
+ def mouseReleaseEvent (self , event ):
156
+ if event .button () == QtCore .Qt .MiddleButton :
157
+ self ._pan = False
158
+ self .setCursor (QtCore .Qt .ArrowCursor )
159
+
160
+ return super (View , self ).mouseReleaseEvent (event )
161
+
162
+ def mouseMoveEvent (self , event ):
163
+ if self ._pan :
164
+
165
+ self .horizontalScrollBar ().setValue (
166
+ self .horizontalScrollBar ().value () - (event .x () - self ._pan_start_x )
167
+ )
168
+
169
+ self .verticalScrollBar ().setValue (
170
+ self .verticalScrollBar ().value () - (event .y () - self ._pan_start_y )
171
+ )
172
+
173
+ self ._pan_start_x = event .x ()
174
+ self ._pan_start_y = event .y ()
175
+
176
+ return super (View , self ).mouseMoveEvent (event )
177
+
0 commit comments