@@ -112,9 +112,15 @@ def _dragMoveEvent(event):
112
112
113
113
def _wheelEvent (event ):
114
114
self .view .setTransformationAnchor (QGraphicsView .AnchorUnderMouse )
115
- factor = 1.05
116
- if event .angleDelta ().y () > 0 :
115
+
116
+ settings = QSettings ()
117
+ factor = settings .value ('/qgis/zoom_favor' , 2.0 )
118
+ if (event .modifiers () == Qt .ControlModifier ):
119
+ factor = 1.0 + (factor - 1.0 ) / 20.0
120
+
121
+ if event .angleDelta ().y () < 0 :
117
122
factor = 1 / factor
123
+
118
124
self .view .scale (factor , factor )
119
125
self .repaintModel ()
120
126
@@ -130,14 +136,31 @@ def _mouseReleaseEvent(e):
130
136
QGraphicsView .mouseReleaseEvent (self .view , e )
131
137
self .view .viewport ().setCursor (Qt .ArrowCursor )
132
138
139
+ def _mousePressEvent (e ):
140
+ if e .button () == Qt .MidButton :
141
+ self .previousMousePos = e .pos ()
142
+ else :
143
+ QGraphicsView .mousePressEvent (self .view , e )
144
+
145
+ def _mouseMoveEvent (e ):
146
+ if e .buttons () == Qt .MidButton :
147
+ offset = self .previousMousePos - e .pos ()
148
+ self .previousMousePos = e .pos ()
149
+
150
+ self .view .verticalScrollBar ().setValue (self .view .verticalScrollBar ().value () + offset .y ())
151
+ self .view .horizontalScrollBar ().setValue (self .view .horizontalScrollBar ().value () + offset .x ())
152
+ else :
153
+ QGraphicsView .mouseMoveEvent (self .view , e )
154
+
133
155
self .view .setDragMode (QGraphicsView .ScrollHandDrag )
134
156
self .view .dragEnterEvent = _dragEnterEvent
135
157
self .view .dropEvent = _dropEvent
136
158
self .view .dragMoveEvent = _dragMoveEvent
137
159
self .view .wheelEvent = _wheelEvent
138
160
self .view .enterEvent = _enterEvent
139
161
self .view .mousePressEvent = _mousePressEvent
140
- self .view .mouseReleaseEvent = _mouseReleaseEvent
162
+ self .view .mousePressEvent = _mousePressEvent
163
+ self .view .mouseMoveEvent = _mouseMoveEvent
141
164
142
165
def _mimeDataInput (items ):
143
166
mimeData = QMimeData ()
@@ -217,11 +240,14 @@ def closeEvent(self, evt):
217
240
218
241
if self .hasChanged :
219
242
ret = QMessageBox .question (
220
- self , self .tr ('Unsaved changes ' ),
221
- self .tr ('There are unsaved changes in model. Continue ?' ),
222
- QMessageBox .Yes | QMessageBox .No , QMessageBox .No )
243
+ self , self .tr ('Save? ' ),
244
+ self .tr ('There are unsaved changes in this model, do you want to keep those ?' ),
245
+ QMessageBox .Save | QMessageBox .Cancel | QMessageBox . Discard , QMessageBox .Cancel )
223
246
224
- if ret == QMessageBox .Yes :
247
+ if ret == QMessageBox .Save :
248
+ self .saveModel (False )
249
+ evt .accept ()
250
+ elif ret == QMessageBox .Discard :
225
251
evt .accept ()
226
252
else :
227
253
evt .ignore ()
0 commit comments