diff --git a/GUI/View/Realspace/RealSpaceToolBar.cpp b/GUI/View/Realspace/RealSpaceToolBar.cpp deleted file mode 100644 index bfc4ae0c956c80765673f56f767a4aee281a8794..0000000000000000000000000000000000000000 --- a/GUI/View/Realspace/RealSpaceToolBar.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// ************************************************************************************************ -// -// BornAgain: simulate and fit reflection and scattering -// -//! @file GUI/View/Realspace/RealSpaceToolBar.cpp -//! @brief Implements class RealSpaceWidget -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2018 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************************************ - -#include "GUI/View/Realspace/RealSpaceToolBar.h" -#include "GUI/Util/mainwindow_constants.h" - -#include <QCheckBox> -#include <QToolButton> - -namespace { -const double increaseLayerSizeScale = 1.25; -const double decreaseLayerSizeScale = 0.8; -} // namespace - -RealSpaceToolBar::RealSpaceToolBar(QWidget* parent) - : StyledToolBar(parent) - , m_defaultViewButton(new QToolButton) - , m_sideViewButton(new QToolButton) - , m_topViewButton(new QToolButton) - , m_lockViewCheckBox(new QCheckBox) - , m_increaseLayerSizeButton(new QToolButton) - , m_decreaseLayerSizeButton(new QToolButton) - , m_savePictureButton(new QToolButton) -{ - setMinimumSize(GUI::Constants::styled_toolbar_height, GUI::Constants::styled_toolbar_height); - - // Save image -- this first so it is available for smaller widget sizes - m_savePictureButton->setText("Save Picture"); - m_savePictureButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_savePictureButton->setToolTip("Save 3D real space view as .png file"); - connect(m_savePictureButton, &QToolButton::clicked, this, - [&]() { emit RealSpaceToolBar::savePictureAction(); }); - addWidget(m_savePictureButton); - - addSeparator(); - - // Default View - m_defaultViewButton->setText("Default View"); - // m_defaultViewButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_recycle.png")); - m_defaultViewButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_defaultViewButton->setToolTip("Reset view and zoom level to default"); - connect(m_defaultViewButton, &QToolButton::clicked, this, &RealSpaceToolBar::defaultViewAction); - addWidget(m_defaultViewButton); - - addSeparator(); - - // Side View - m_sideViewButton->setText("Side View"); - // m_sideViewButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_recycle.png")); - m_sideViewButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_sideViewButton->setToolTip("View sample from the side at current zoom level"); - connect(m_sideViewButton, &QToolButton::clicked, this, &RealSpaceToolBar::sideViewAction); - addWidget(m_sideViewButton); - - addSeparator(); - - // Top View - m_topViewButton->setText("Top View"); - // m_topViewButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_recycle.png")); - m_topViewButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_topViewButton->setToolTip("View sample from the top at current zoom level"); - connect(m_topViewButton, &QToolButton::clicked, this, &RealSpaceToolBar::topViewAction); - addWidget(m_topViewButton); - - addSeparator(); - - // Lock View - m_lockViewCheckBox->setText("Lock View"); - m_lockViewCheckBox->setToolTip("Lock/unlock current sample selection"); - m_lockViewCheckBox->setCheckable(true); - connect(m_lockViewCheckBox, &QCheckBox::clicked, this, - [&]() { emit RealSpaceToolBar::lockViewAction(m_lockViewCheckBox->isChecked()); }); - addWidget(m_lockViewCheckBox); - - addSeparator(); - - // Increase layer size - m_increaseLayerSizeButton->setText("Enlarge"); - // m_increaseLayerSizeButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_recycle.png")); - m_increaseLayerSizeButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_increaseLayerSizeButton->setToolTip("Increase layer size"); - connect(m_increaseLayerSizeButton, &QToolButton::clicked, this, - [&]() { emit RealSpaceToolBar::changeLayerSizeAction(increaseLayerSizeScale); }); - addWidget(m_increaseLayerSizeButton); - - addSeparator(); - - // Decrease layer size - m_decreaseLayerSizeButton->setText("Reduce"); - // m_decreaseLayerSizeButton->setIcon(QIcon(":/SampleDesigner/images/toolbar_recycle.png")); - m_decreaseLayerSizeButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - m_decreaseLayerSizeButton->setToolTip("Decrease layer size"); - connect(m_decreaseLayerSizeButton, &QToolButton::clicked, this, - [&]() { emit RealSpaceToolBar::changeLayerSizeAction(decreaseLayerSizeScale); }); - addWidget(m_decreaseLayerSizeButton); - - addSeparator(); -} diff --git a/GUI/View/Realspace/RealSpaceToolBar.h b/GUI/View/Realspace/RealSpaceToolBar.h deleted file mode 100644 index 1d9c2bc296cfa0d1d380915366ce98d12bb2dc69..0000000000000000000000000000000000000000 --- a/GUI/View/Realspace/RealSpaceToolBar.h +++ /dev/null @@ -1,50 +0,0 @@ -// ************************************************************************************************ -// -// BornAgain: simulate and fit reflection and scattering -// -//! @file GUI/View/Realspace/RealSpaceToolBar.h -//! @brief Defines class RealSpaceWidget -//! -//! @homepage http://www.bornagainproject.org -//! @license GNU General Public License v3 or higher (see COPYING) -//! @copyright Forschungszentrum Jülich GmbH 2018 -//! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS) -// -// ************************************************************************************************ - -#ifndef BORNAGAIN_GUI_VIEW_REALSPACE_REALSPACETOOLBAR_H -#define BORNAGAIN_GUI_VIEW_REALSPACE_REALSPACETOOLBAR_H - -#include "GUI/View/Common/StyledToolBar.h" - -class QToolButton; -class QCheckBox; - -//! Thin toolbar on top of RealSpaceWidget. - -class RealSpaceToolBar : public StyledToolBar { - Q_OBJECT - -public: - RealSpaceToolBar(QWidget* parent = nullptr); - -signals: - void defaultViewAction(); - void sideViewAction(); - void topViewAction(); - void lockViewAction(bool); - void changeLayerSizeAction(double); - void savePictureAction(); - -private: - QToolButton* m_defaultViewButton; - QToolButton* m_sideViewButton; - QToolButton* m_topViewButton; - QCheckBox* m_lockViewCheckBox; - - QToolButton* m_increaseLayerSizeButton; - QToolButton* m_decreaseLayerSizeButton; - QToolButton* m_savePictureButton; -}; - -#endif // BORNAGAIN_GUI_VIEW_REALSPACE_REALSPACETOOLBAR_H diff --git a/GUI/View/Realspace/RealSpaceWidget.cpp b/GUI/View/Realspace/RealSpaceWidget.cpp index 75d3b8796c26bdee036ad387ee48ca476f75fed4..07e192cedaf17f2646535979524c977a2167fc45 100644 --- a/GUI/View/Realspace/RealSpaceWidget.cpp +++ b/GUI/View/Realspace/RealSpaceWidget.cpp @@ -13,50 +13,66 @@ // ************************************************************************************************ #include "GUI/View/Realspace/RealSpaceWidget.h" +#include "GUI/View/Common/StyledToolBar.h" #include "GUI/View/Realspace/RealSpaceCanvas.h" -#include "GUI/View/Realspace/RealSpaceToolBar.h" #include <QLabel> #include <QVBoxLayout> RealSpaceWidget::RealSpaceWidget(SampleModel* sampleModel, QItemSelectionModel* selectionModel, QWidget* parent) : QWidget(parent) - , m_toolBar(new RealSpaceToolBar) , m_canvas(new RealSpaceCanvas) , m_sampleModel(sampleModel) , m_selectionModel(selectionModel) { + createActions(); + auto hlayout = new QHBoxLayout; hlayout->setMargin(0); hlayout->setSpacing(0); hlayout->setContentsMargins(0, 0, 0, 0); hlayout->addWidget(m_canvas); + auto* toolbar = new StyledToolBar(this); + toolbar->addAction(m_savePictureAction); + toolbar->addSeparator(); + toolbar->addAction(m_defaultViewAction); + toolbar->addSeparator(); + toolbar->addAction(m_sideViewAction); + toolbar->addSeparator(); + toolbar->addAction(m_topViewAction); + toolbar->addSeparator(); + toolbar->addAction(m_increaseLayerSizeAction); + toolbar->addSeparator(); + toolbar->addAction(m_decreaseLayerSizeAction); + toolbar->addSeparator(); + toolbar->addAction(m_lockViewAction); + auto* mainLayout = new QVBoxLayout; mainLayout->setMargin(0); mainLayout->setSpacing(0); mainLayout->setContentsMargins(0, 0, 0, 0); - mainLayout->addWidget(m_toolBar); + mainLayout->addWidget(toolbar); mainLayout->addLayout(hlayout); setLayout(mainLayout); - connect(m_toolBar, &RealSpaceToolBar::defaultViewAction, m_canvas, + connect(m_defaultViewAction, &QAction::triggered, m_canvas, &RealSpaceCanvas::onDefaultViewAction); - connect(m_toolBar, &RealSpaceToolBar::sideViewAction, m_canvas, - &RealSpaceCanvas::onSideViewAction); + connect(m_sideViewAction, &QAction::triggered, m_canvas, &RealSpaceCanvas::onSideViewAction); + + connect(m_topViewAction, &QAction::triggered, m_canvas, &RealSpaceCanvas::onTopViewAction); - connect(m_toolBar, &RealSpaceToolBar::topViewAction, m_canvas, - &RealSpaceCanvas::onTopViewAction); + connect(m_lockViewAction, &QAction::triggered, m_canvas, &RealSpaceCanvas::onLockViewAction); - connect(m_toolBar, &RealSpaceToolBar::lockViewAction, m_canvas, - &RealSpaceCanvas::onLockViewAction); + connect(m_increaseLayerSizeAction, &QAction::triggered, + [this]() { m_canvas->onChangeLayerSizeAction(1.25); }); - connect(m_toolBar, &RealSpaceToolBar::changeLayerSizeAction, m_canvas, - &RealSpaceCanvas::onChangeLayerSizeAction); + connect(m_decreaseLayerSizeAction, &QAction::triggered, + [this]() { m_canvas->onChangeLayerSizeAction(0.8); }); - connect(m_toolBar, &RealSpaceToolBar::savePictureAction, m_canvas, + connect(m_savePictureAction, &QAction::triggered, m_canvas, &RealSpaceCanvas::onSavePictureAction); } @@ -69,3 +85,35 @@ void RealSpaceWidget::hideEvent(QHideEvent*) { m_canvas->setModel(nullptr, nullptr); } + +void RealSpaceWidget::createActions() +{ + m_savePictureAction = new QAction(this); + m_savePictureAction->setText("Save Picture"); + m_savePictureAction->setToolTip("Save 3D real space view as .png file"); + + m_defaultViewAction = new QAction(this); + m_defaultViewAction->setText("Default View"); + m_defaultViewAction->setToolTip("Reset view and zoom level to default"); + + m_sideViewAction = new QAction(this); + m_sideViewAction->setText("Side View"); + m_sideViewAction->setToolTip("View sample from the side at current zoom level"); + + m_topViewAction = new QAction(this); + m_topViewAction->setText("Top View"); + m_topViewAction->setToolTip("View sample from the top at current zoom level"); + + m_lockViewAction = new QAction(this); + m_lockViewAction->setText("Lock View"); + m_lockViewAction->setToolTip("Lock/unlock current sample selection"); + m_lockViewAction->setCheckable(true); + + m_increaseLayerSizeAction = new QAction(this); + m_increaseLayerSizeAction->setText("Enlarge"); + m_increaseLayerSizeAction->setToolTip("Increase layer size"); + + m_decreaseLayerSizeAction = new QAction(this); + m_decreaseLayerSizeAction->setText("Reduce"); + m_decreaseLayerSizeAction->setToolTip("Decrease layer size"); +} diff --git a/GUI/View/Realspace/RealSpaceWidget.h b/GUI/View/Realspace/RealSpaceWidget.h index 45c378a32491b628ff94e81873607966c01595e4..05cf5257bb31dfbe2e7b5a6b6e0716240cd971ee 100644 --- a/GUI/View/Realspace/RealSpaceWidget.h +++ b/GUI/View/Realspace/RealSpaceWidget.h @@ -19,7 +19,6 @@ #include <QTreeView> -class RealSpaceToolBar; class RealSpaceCanvas; class SampleModel; @@ -37,11 +36,19 @@ protected: void hideEvent(QHideEvent*) override; private: + void createActions(); - RealSpaceToolBar* m_toolBar; +private: RealSpaceCanvas* m_canvas; SampleModel* m_sampleModel; QItemSelectionModel* m_selectionModel; + QAction* m_savePictureAction; + QAction* m_defaultViewAction; + QAction* m_sideViewAction; + QAction* m_topViewAction; + QAction* m_lockViewAction; + QAction* m_increaseLayerSizeAction; + QAction* m_decreaseLayerSizeAction; }; #endif // BORNAGAIN_GUI_VIEW_REALSPACE_REALSPACEWIDGET_H