diff --git a/src/plugins/modeleditor/editordiagramview.cpp b/src/plugins/modeleditor/editordiagramview.cpp index 68951cdedbab788e83c82945e2df42409f506476..09621c2335c35122483f28047ef840f9ae07edb2 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 f0183d1dd7000e5637c54dca365d39a756d20406..0a90af01617f042ebdcfaf1ccdefdc79626b3599 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 72326cebe839e40204f848d2f2f5faa4261113f2..f1dce77a729d7cf8e0a321a3dadb80acf60a3256 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 46eb8bba14c535f69618834360bce4436bdfe713..53d4447324cef0c02532f1ed64ec613c680a7a21 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();