Skip to content

Commit f3d7e39

Browse files
committedNov 11, 2016
[processing] harmonize modeler UI behavior with QGIS
- use [close without saving][cancel][save] option when closing a modeler with unsaved changes - invert mouse wheel zoom in/out to match that of QGIS' main canvas window - holding the mouse middle click and dragging will pan the modeler view
1 parent 35d106b commit f3d7e39

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed
 

‎python/plugins/processing/modeler/ModelerDialog.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,15 @@ def _dragMoveEvent(event):
112112

113113
def _wheelEvent(event):
114114
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:
117122
factor = 1 / factor
123+
118124
self.view.scale(factor, factor)
119125
self.repaintModel()
120126

@@ -130,14 +136,31 @@ def _mouseReleaseEvent(e):
130136
QGraphicsView.mouseReleaseEvent(self.view, e)
131137
self.view.viewport().setCursor(Qt.ArrowCursor)
132138

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+
133155
self.view.setDragMode(QGraphicsView.ScrollHandDrag)
134156
self.view.dragEnterEvent = _dragEnterEvent
135157
self.view.dropEvent = _dropEvent
136158
self.view.dragMoveEvent = _dragMoveEvent
137159
self.view.wheelEvent = _wheelEvent
138160
self.view.enterEvent = _enterEvent
139161
self.view.mousePressEvent = _mousePressEvent
140-
self.view.mouseReleaseEvent = _mouseReleaseEvent
162+
self.view.mousePressEvent = _mousePressEvent
163+
self.view.mouseMoveEvent = _mouseMoveEvent
141164

142165
def _mimeDataInput(items):
143166
mimeData = QMimeData()
@@ -217,11 +240,14 @@ def closeEvent(self, evt):
217240

218241
if self.hasChanged:
219242
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)
223246

224-
if ret == QMessageBox.Yes:
247+
if ret == QMessageBox.Save:
248+
self.saveModel(False)
249+
evt.accept()
250+
elif ret == QMessageBox.Discard:
225251
evt.accept()
226252
else:
227253
evt.ignore()

0 commit comments

Comments
 (0)