diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp index 50465a8c3e7b7675a232d37f1256b326ef22980f..9fec4f73029540ff3385eebc285557d825b57434 100644 --- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp +++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.cpp @@ -28,9 +28,6 @@ RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel, , m_sampleModel(sampleModel) , m_selectionModel(selectionModel) { - setWindowTitle("Real Space"); - setObjectName("Sample3DPanel"); - auto hlayout = new QHBoxLayout; hlayout->setMargin(0); hlayout->setSpacing(0); @@ -63,11 +60,6 @@ RealSpaceWidget::RealSpaceWidget(SampleModel *sampleModel, } -QSize RealSpaceWidget::sizeHint() const -{ - return QSize(300, 300); -} - void RealSpaceWidget::showEvent(QShowEvent*) { m_canvas->setModel(m_sampleModel, m_selectionModel); diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h index ca5bca9b3b18300f5adb9f99ae27bc402618f18a..5b876e212179a4f076d9388ffe85c032f34ed4c5 100644 --- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h +++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceWidget.h @@ -35,8 +35,6 @@ public: RealSpaceWidget(SampleModel* sampleModel = nullptr, QItemSelectionModel* selectionModel = nullptr, QWidget* parent = nullptr); - QSize sizeHint() const override; - protected: void showEvent(QShowEvent*) override; void hideEvent(QHideEvent*) override; diff --git a/GUI/coregui/Views/SampleDesigner/RealSpacePanel.cpp b/GUI/coregui/Views/SampleDesigner/RealSpacePanel.cpp index bc95324a0bb7f7675d94fd933d25e1edd2aab3fb..9d52ca570c9bc927ca2638b09a53ca4f04ff93dc 100644 --- a/GUI/coregui/Views/SampleDesigner/RealSpacePanel.cpp +++ b/GUI/coregui/Views/SampleDesigner/RealSpacePanel.cpp @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file GUI/coregui/Views/RealSpaceWidgets/RealSpacePanel.cpp +//! @file GUI/coregui/Views/SampleDesigner/RealSpacePanel.cpp //! @brief Implements class RealSpacePanel //! //! @homepage http://www.bornagainproject.org @@ -13,79 +13,33 @@ // ************************************************************************** // #include "RealSpacePanel.h" -#include "mainwindow_constants.h" -#include "ComponentEditor.h" -#include "FilterPropertyProxy.h" -#include "SampleModel.h" -#include <QTreeView> -#include <QItemSelectionModel> +#ifdef BORNAGAIN_OPENGL +#include "RealSpaceWidget.h" +#endif #include <QVBoxLayout> -#include <QDebug> -RealSpacePanel::RealSpacePanel(QWidget* parent) +RealSpacePanel::RealSpacePanel(SampleModel* sampleModel, QItemSelectionModel* selectionModel, + QWidget* parent) : QWidget(parent) - , m_treeView(new QTreeView) - , m_componentEditor(new ComponentEditor) - , m_model(nullptr) - , m_proxy(nullptr) + , m_realSpaceWidget(nullptr) { - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + setWindowTitle("Real Space"); + setObjectName("Sample3DPanel"); - QVBoxLayout* layout = new QVBoxLayout; + auto layout = new QVBoxLayout; layout->setMargin(0); layout->setSpacing(0); layout->setContentsMargins(0, 0, 0, 0); - layout->addWidget(m_treeView); - layout->addWidget(m_componentEditor); +#ifdef BORNAGAIN_OPENGL + m_realSpaceWidget = new RealSpaceWidget(sampleModel, selectionModel, this); + layout->addWidget(m_realSpaceWidget); +#endif setLayout(layout); } -void RealSpacePanel::setModel(SampleModel* model) -{ - m_model = model; - - delete m_proxy; - m_proxy = new FilterPropertyProxy(1, this); - m_proxy->setSourceModel(model); - m_treeView->setModel(m_proxy); - m_treeView->setAttribute(Qt::WA_MacShowFocusRect, false); - - m_treeView->expandAll(); - - connect(m_model, &SampleModel::rowsInserted, this, [=](){m_treeView->expandAll();}); - - connect(m_treeView->selectionModel(), &QItemSelectionModel::selectionChanged, - this, &RealSpacePanel::onSelectionChanged, Qt::UniqueConnection); -} - QSize RealSpacePanel::sizeHint() const { - return QSize(static_cast<int>(Constants::hint_panel_width*1.3), 256); - -} - -QSize RealSpacePanel::minimumSizeHint() const -{ - return QSize(static_cast<int>(Constants::hint_panel_width*1.3), 63); -} - -void RealSpacePanel::onSelectionChanged(const QItemSelection& selected, const QItemSelection&) -{ - qDebug() << "RealSpacePanel::onSelectionChanged"; - Q_ASSERT(m_proxy); - Q_ASSERT(m_model); - QModelIndexList indices = selected.indexes(); - - if(indices.size()) { - QModelIndex index = m_proxy->mapToSource(indices.back()); - SessionItem* item = m_model->itemForIndex(index); - Q_ASSERT(item); - m_componentEditor->setItem(item); - emit selectionChanged(index); - } else { - m_componentEditor->setItem(nullptr); - emit selectionChanged(QModelIndex()); - } + return QSize(300, 300); } diff --git a/GUI/coregui/Views/SampleDesigner/RealSpacePanel.h b/GUI/coregui/Views/SampleDesigner/RealSpacePanel.h index a9874d5b5d494ab0bf353eb7f73a03f138e4b809..c1fb3fd9f2fba049fe1d3a3536f5322929620e18 100644 --- a/GUI/coregui/Views/SampleDesigner/RealSpacePanel.h +++ b/GUI/coregui/Views/SampleDesigner/RealSpacePanel.h @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file GUI/coregui/Views/RealSpaceWidgets/RealSpacePanel.h +//! @file GUI/coregui/Views/SampleDesigner/RealSpacePanel.h //! @brief Defines class RealSpacePanel //! //! @homepage http://www.bornagainproject.org @@ -18,11 +18,9 @@ #include "WinDllMacros.h" #include <QWidget> -class QTreeView; -class ComponentEditor; class SampleModel; -class FilterPropertyProxy; -class QItemSelection; +class QItemSelectionModel; +class RealSpaceWidget; //! Panel with item selector, property editor on the right side of RealSpaceWidget. @@ -31,24 +29,12 @@ class BA_CORE_API_ RealSpacePanel : public QWidget Q_OBJECT public: - RealSpacePanel(QWidget* parent = nullptr); + RealSpacePanel(SampleModel* sampleModel, QItemSelectionModel* selectionModel, QWidget* parent); - void setModel(SampleModel* model); - - QSize sizeHint() const; - QSize minimumSizeHint() const; - -signals: - void selectionChanged(const QModelIndex& index); - -public slots: - void onSelectionChanged(const QItemSelection& selected, const QItemSelection&); + QSize sizeHint() const override; private: - QTreeView* m_treeView; - ComponentEditor* m_componentEditor; - SampleModel* m_model; - FilterPropertyProxy* m_proxy; + RealSpaceWidget* m_realSpaceWidget; }; #endif // REALSPACEPANEL_H diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp index 40f9a3c65b92490c99ab538e61c16e716542e088..ca0f2e9b79b1b172f6dd5b59acae2e524f986282 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp +++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.cpp @@ -21,7 +21,7 @@ #include "SampleTreeWidget.h" #include "SampleView.h" #include "SampleWidgetBox.h" -#include "RealSpaceWidget.h" +#include "RealSpacePanel.h" #include <QDockWidget> #include <QTreeView> #include <QAction> @@ -33,14 +33,14 @@ SampleViewDocks::SampleViewDocks(SampleView* parent) m_propertyWidget( new SamplePropertyWidget(m_treeWidget->treeView()->selectionModel(), parent)) , m_scriptPanel(new ScriptPanel(parent)) - , m_realSpaceWidget(new RealSpaceWidget(parent->models()->sampleModel(), + , m_realSpacePanel(new RealSpacePanel(parent->models()->sampleModel(), m_treeWidget->treeView()->selectionModel(), parent)) { addWidget(WIDGET_BOX, m_widgetBox, Qt::LeftDockWidgetArea); addWidget(SAMPLE_TREE, m_treeWidget, Qt::RightDockWidgetArea); addWidget(PROPERTY_EDITOR, m_propertyWidget, Qt::RightDockWidgetArea); addWidget(INFO, m_scriptPanel, Qt::BottomDockWidgetArea); - addWidget(REALSPACEPANEL, m_realSpaceWidget, Qt::BottomDockWidgetArea); + addWidget(REALSPACEPANEL, m_realSpacePanel, Qt::BottomDockWidgetArea); connect(m_scriptPanel, &ScriptPanel::widgetHeightRequest, this, &DocksController::setDockHeightForWidget); diff --git a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h index 076c6e689ed642578456d325cc808a4bfb055c89..9680b9bbdacd8af71b4655bdeb7c80770c0f0fb0 100644 --- a/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h +++ b/GUI/coregui/Views/SampleDesigner/SampleViewDocks.h @@ -23,7 +23,7 @@ class SampleTreeWidget; class SamplePropertyWidget; class SampleDesigner; class ScriptPanel; -class RealSpaceWidget; +class RealSpacePanel; class QAction; //! Holds all docked widgets for SampleView. @@ -53,7 +53,7 @@ private: SampleTreeWidget* m_treeWidget; SamplePropertyWidget* m_propertyWidget; ScriptPanel* m_scriptPanel; - RealSpaceWidget* m_realSpaceWidget; + RealSpacePanel* m_realSpacePanel; }; #endif diff --git a/Tests/UnitTests/GUI/TestGUI.cpp b/Tests/UnitTests/GUI/TestGUI.cpp index 8624af24ca81b91a1e29fe8c4971e4d3861e5e11..fe6863f39203bfe7435bd70d3234e28ade903489 100644 --- a/Tests/UnitTests/GUI/TestGUI.cpp +++ b/Tests/UnitTests/GUI/TestGUI.cpp @@ -35,7 +35,6 @@ #include "TestProjectUtils.h" #include "TestPropertyRepeater.h" #include "TestProxyModelStrategy.h" -#include "TestRealSpaceBuilderUtils.h" #include "TestSaveService.h" #include "TestSessionItemController.h" #include "TestSessionItem.h" @@ -51,6 +50,9 @@ #include "TestAxesItems.h" #include "TestMultiLayerItem.h" #include "TestSavingSpecularData.h" +#ifdef BORNAGAIN_OPENGL +#include "TestRealSpaceBuilderUtils.h" +#endif int main(int argc, char** argv) { QCoreApplication app(argc, argv);