From 3e776dde5ebd49db6a0e772b09d931f0333a00ae Mon Sep 17 00:00:00 2001 From: Jochen Becher Date: Fri, 24 Jun 2016 22:44:37 +0200 Subject: [PATCH] ModelEditor: Zoom with Ctrl + mouse wheel Change-Id: I2e703345a882f0dbd80a0957d5f28bd203f4f26b Reviewed-by: Tobias Hunger --- src/plugins/modeleditor/editordiagramview.cpp | 13 +++++++++++++ src/plugins/modeleditor/editordiagramview.h | 10 +++++++++- src/plugins/modeleditor/modeleditor.cpp | 18 ++++++++++++++++++ src/plugins/modeleditor/modeleditor.h | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/plugins/modeleditor/editordiagramview.cpp b/src/plugins/modeleditor/editordiagramview.cpp index 68951cdedb..09621c2335 100644 --- a/src/plugins/modeleditor/editordiagramview.cpp +++ b/src/plugins/modeleditor/editordiagramview.cpp @@ -33,6 +33,8 @@ #include #include +#include + namespace ModelEditor { namespace Internal { @@ -63,6 +65,17 @@ void EditorDiagramView::setPxNodeController(PxNodeController *pxNodeController) d->pxNodeController = pxNodeController; } +void EditorDiagramView::wheelEvent(QWheelEvent *wheelEvent) +{ + if (wheelEvent->modifiers() == Qt::ControlModifier) { + int degree = wheelEvent->angleDelta().y() / 8; + if (degree > 0) + emit zoomIn(); + else if (degree < 0) + emit zoomOut(); + } +} + void EditorDiagramView::dropProjectExplorerNodes(const QList &values, const QPoint &pos) { foreach (const QVariant &value, values) { diff --git a/src/plugins/modeleditor/editordiagramview.h b/src/plugins/modeleditor/editordiagramview.h index f0183d1dd7..0a90af0161 100644 --- a/src/plugins/modeleditor/editordiagramview.h +++ b/src/plugins/modeleditor/editordiagramview.h @@ -40,10 +40,18 @@ class EditorDiagramView : public: explicit EditorDiagramView(QWidget *parent = 0); - ~EditorDiagramView(); + ~EditorDiagramView() override; +signals: + void zoomIn(); + void zoomOut(); + +public: void setPxNodeController(PxNodeController *pxNodeController); +protected: + void wheelEvent(QWheelEvent *wheelEvent) override; + private: void dropProjectExplorerNodes(const QList &values, const QPoint &pos); diff --git a/src/plugins/modeleditor/modeleditor.cpp b/src/plugins/modeleditor/modeleditor.cpp index 72326cebe8..f1dce77a72 100644 --- a/src/plugins/modeleditor/modeleditor.cpp +++ b/src/plugins/modeleditor/modeleditor.cpp @@ -69,6 +69,7 @@ #include #include #include +#include #include #include @@ -376,6 +377,11 @@ void ModelEditor::initDocument() connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, this, &ModelEditor::onCurrentEditorChanged, Qt::QueuedConnection); + connect(d->diagramView, &EditorDiagramView::zoomIn, + this, &ModelEditor::zoomIn); + connect(d->diagramView, &EditorDiagramView::zoomOut, + this, &ModelEditor::zoomOut); + connect(d->modelTreeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &ModelEditor::onTreeViewSelectionChanged, Qt::QueuedConnection); connect(d->modelTreeView, &qmt::ModelTreeView::treeViewActivated, @@ -564,6 +570,7 @@ void ModelEditor::zoomIn() QTransform transform = d->diagramView->transform(); transform.scale(ZOOM_FACTOR, ZOOM_FACTOR); d->diagramView->setTransform(transform); + showZoomIndicator(); } void ModelEditor::zoomOut() @@ -571,11 +578,13 @@ void ModelEditor::zoomOut() QTransform transform = d->diagramView->transform(); transform.scale(1.0 / ZOOM_FACTOR, 1.0 / ZOOM_FACTOR); d->diagramView->setTransform(transform); + showZoomIndicator(); } void ModelEditor::resetZoom() { d->diagramView->setTransform(QTransform()); + showZoomIndicator(); } qmt::MPackage *ModelEditor::guessSelectedPackage() const @@ -766,6 +775,15 @@ bool ModelEditor::updateButtonIconByTheme(QAbstractButton *button, const QString return false; } +void ModelEditor::showZoomIndicator() +{ + int scale = int(d->diagramView->transform().map(QPointF(100, 100)).x() + 0.5); + Utils::FadingIndicator::showText(d->diagramStack, + QCoreApplication::translate("ModelEditor", + "Zoom: %1%").arg(scale), + Utils::FadingIndicator::SmallText); +} + void ModelEditor::onAddPackage() { ExtDocumentController *documentController = d->document->documentController(); diff --git a/src/plugins/modeleditor/modeleditor.h b/src/plugins/modeleditor/modeleditor.h index 46eb8bba14..53d4447324 100644 --- a/src/plugins/modeleditor/modeleditor.h +++ b/src/plugins/modeleditor/modeleditor.h @@ -105,6 +105,7 @@ private: const QIcon &icon, const QString &toolTipBase, QWidget *parent); bool updateButtonIconByTheme(QAbstractButton *button, const QString &name); + void showZoomIndicator(); void onAddPackage(); void onAddComponent(); -- GitLab