diff --git a/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp b/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp index b036c21c4b13cd4d622fc3cac100972a41cdc967..53b3229cf243154bd3992213684f4f4836c0c2fa 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp +++ b/GUI/coregui/Views/SampleDesigner/SampleToolBar.cpp @@ -131,6 +131,17 @@ SampleToolBar::SampleToolBar(SampleViewActions* sampleActions, connect(m_RealSpaceViewerButton, &QToolButton::clicked, this, &SampleToolBar::onRealSpaceViewerCall); addWidget(m_RealSpaceViewerButton); + + // RealSpace 3D Viewer, version 2 + addWidget(new QLabel(" ")); + m_RealSpaceViewerButton2 = new QToolButton; + m_RealSpaceViewerButton2->setText("3D Viewer"); + m_RealSpaceViewerButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + m_RealSpaceViewerButton->setToolTip("Open real space 3D viewer."); + connect(m_RealSpaceViewerButton2, &QToolButton::clicked, + m_sampleViewActions, &SampleViewActions::onToggleRealSpaceView); + addWidget(m_RealSpaceViewerButton2); + // Additional actions m_zoomOutAction = new QAction(this); m_zoomOutAction->setShortcut(QKeySequence(Qt::Key_Minus)); diff --git a/GUI/coregui/Views/SampleDesigner/SampleToolBar.h b/GUI/coregui/Views/SampleDesigner/SampleToolBar.h index 551a92c9eafe91663e30674f83673e645913d1be..c8e77c5c65435ce35e381f03d87ce825f756563f 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleToolBar.h +++ b/GUI/coregui/Views/SampleDesigner/SampleToolBar.h @@ -67,6 +67,7 @@ private: QAction* m_zoomOutAction; QToolButton* m_RealSpaceViewerButton; + QToolButton* m_RealSpaceViewerButton2; RealSpaceDialog* m_dialog; SampleViewActions* m_sampleViewActions; diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp b/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp index 8be2a02140911d7ef095e87d049fe0b632df14c6..3567ab39832a350fa1ba24822976a48e36723c93 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp +++ b/GUI/coregui/Views/SampleDesigner/SampleViewActions.cpp @@ -13,10 +13,15 @@ // ************************************************************************** // #include "SampleViewActions.h" +#include "SampleView.h" +#include "SampleViewDocks.h" +#include <QDockWidget> +#include <QAction> -SampleViewActions::SampleViewActions(SampleModel* model, QObject* parent) +SampleViewActions::SampleViewActions(SampleModel* model, SampleView* parent) : QObject(parent) , m_model(model) + , m_sampleView(parent) , m_selection_model(nullptr) { @@ -36,3 +41,8 @@ QItemSelectionModel* SampleViewActions::selectionModel() { return m_selection_model; } + +void SampleViewActions::onToggleRealSpaceView() +{ + m_sampleView->docks()->togleDock(SampleViewDocks::REALSPACEPANEL); +} diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewActions.h b/GUI/coregui/Views/SampleDesigner/SampleViewActions.h index db1771bb7e0ffe537e330b98c7a06eaf54888214..3302371d838ee30e6bea1240e4a4e04f2b76f90b 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewActions.h +++ b/GUI/coregui/Views/SampleDesigner/SampleViewActions.h @@ -20,6 +20,7 @@ class SampleModel; class QItemSelectionModel; +class SampleView; //! Holds all actions of SampleView. @@ -27,7 +28,7 @@ class SampleViewActions : public QObject { Q_OBJECT public: - SampleViewActions(SampleModel* model, QObject* parent); + SampleViewActions(SampleModel* model, SampleView* parent); void setSelectionModel(QItemSelectionModel* selection_model); @@ -35,8 +36,12 @@ public: QItemSelectionModel* selectionModel(); +public slots: + void onToggleRealSpaceView(); + private: SampleModel* m_model; + SampleView* m_sampleView; QItemSelectionModel* m_selection_model; }; diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp index e6f7ca81754aaa7c883b55f6cd3356da76b485fa..9b60f1c7ac8154492d9cc9b5bf7e360da58a28a3 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp +++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp @@ -84,6 +84,12 @@ void SampleViewDocks::onResetLayout() findDock(INFO)->hide(); } +void SampleViewDocks::togleDock(int id) +{ + auto dock = findDock(id); + dock->setHidden(!dock->isHidden()); +} + SampleDesigner* SampleViewDocks::sampleDesigner() { return m_sampleDesigner; diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h index 8dcc9e41c33ca07126bac1f587a886b6dddd9b49..c35cf9e58de40c638e961ca3a8fed426882f0ae1 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h +++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h @@ -24,6 +24,7 @@ class SamplePropertyWidget; class SampleDesigner; class ScriptPanel; class Sample3DPanel; +class QAction; //! Holds all docked widgets for SampleView. @@ -32,6 +33,9 @@ class BA_CORE_API_ SampleViewDocks : public DocksController Q_OBJECT public: + enum ESubWindows { WIDGET_BOX, SAMPLE_TREE, PROPERTY_EDITOR, INFO, REALSPACEPANEL, + NUMBER_OF_SUB_WINDOWS }; + SampleViewDocks(SampleView* parent = nullptr); SampleDesigner* sampleDesigner(); @@ -41,10 +45,9 @@ public: void onResetLayout() override; -private: - enum ESubWindows { WIDGET_BOX, SAMPLE_TREE, PROPERTY_EDITOR, INFO, REALSPACEPANEL, - NUMBER_OF_SUB_WINDOWS }; + void togleDock(int id); +private: SampleDesigner* m_sampleDesigner; SampleWidgetBox* m_widgetBox; SampleTreeWidget* m_treeWidget; diff --git a/GUI/coregui/Views/SampleView.cpp b/GUI/coregui/Views/SampleView.cpp index ccf5b41b8fa7020d8bcf1c34fb1ee9ea22c379d0..40d7f4de9ab0d4426a7c2ae5f50b9686c0815303 100644 --- a/GUI/coregui/Views/SampleView.cpp +++ b/GUI/coregui/Views/SampleView.cpp @@ -39,6 +39,11 @@ SampleView::SampleView(MainWindow* mainWindow) ApplicationModels* SampleView::models() { return m_models; } +SampleViewDocks* SampleView::docks() +{ + return m_docks; +} + void SampleView::onDockMenuRequest() { std::unique_ptr<QMenu> menu(createPopupMenu()); diff --git a/GUI/coregui/Views/SampleView.h b/GUI/coregui/Views/SampleView.h index ed0175b40798301e0b36dfae01bb6a414114575e..dda0ef646f8a3fb63e8c5842061c5fd20d110cac 100644 --- a/GUI/coregui/Views/SampleView.h +++ b/GUI/coregui/Views/SampleView.h @@ -38,6 +38,8 @@ public: ApplicationModels* models(); + SampleViewDocks* docks(); + public slots: void onDockMenuRequest();