diff --git a/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.cpp b/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5ce814b808b4fa1ff074ef7c0354721fd95019e1 --- /dev/null +++ b/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.cpp @@ -0,0 +1,30 @@ +// ************************************************************************** // +// +// BornAgain: simulate and fit scattering at grazing incidence +// +//! @file GUI/coregui/Views/SampleDesigner/SampleTreeWidget.cpp +//! @brief Implements class SampleTreeWidget +//! +//! @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 "SampleTreeWidget.h" +#include <QVBoxLayout> +#include <QTreeView> + +SampleTreeWidget::SampleTreeWidget(QWidget* parent) + : QWidget(parent) + , m_treeView(new QTreeView) +{ + auto mainLayout = new QVBoxLayout; + mainLayout->setMargin(0); + mainLayout->setSpacing(0); + mainLayout->setContentsMargins(0, 0, 0, 0); + mainLayout->addWidget(m_treeView); + setLayout(mainLayout); +} + diff --git a/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.h b/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.h new file mode 100644 index 0000000000000000000000000000000000000000..fe2c2713d2b65a962ac5a0a98c4482dd394ca143 --- /dev/null +++ b/GUI/coregui/Views/SampleDesigner/SampleTreeWidget.h @@ -0,0 +1,36 @@ +// ************************************************************************** // +// +// BornAgain: simulate and fit scattering at grazing incidence +// +//! @file GUI/coregui/Views/SampleDesigner/SampleTreeWidget.h +//! @brief Defines class SampleTreeWidget +//! +//! @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 SAMPLETREEWIDGET_H +#define SAMPLETREEWIDGET_H + +#include "WinDllMacros.h" +#include <QWidget> + +class QTreeView; + +//! Holds tree to select top level sample items. Part of SampleView. + +class BA_CORE_API_ SampleTreeWidget : public QWidget +{ + Q_OBJECT +public: + SampleTreeWidget(QWidget* parent); + +private: + QTreeView* m_treeView; +}; + +#endif // SAMPLETREEWIDGET_H + diff --git a/GUI/coregui/Views/SampleView.cpp b/GUI/coregui/Views/SampleView.cpp index b033d4b552ad60b13dec6a1eb776847453107e22..366bb98cbfa05979b095b071287a608b6ce775fb 100644 --- a/GUI/coregui/Views/SampleView.cpp +++ b/GUI/coregui/Views/SampleView.cpp @@ -36,7 +36,7 @@ SampleView::SampleView(MainWindow *mainWindow) { setObjectName("SampleView"); - setCentralWidget(m_sampleDesigner->getCentralWidget()); + setCentralWidget(sampleDesigner()->getCentralWidget()); setDocumentMode(true); setTabPosition(Qt::AllDockWidgetAreas, QTabWidget::South); @@ -44,7 +44,6 @@ SampleView::SampleView(MainWindow *mainWindow) setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); initSubWindows(); - initSelectionModel(); for (int i = 0; i < NUMBER_OF_SUB_WINDOWS; i++) { QWidget *subWindow = m_subWindows[i]; @@ -70,7 +69,6 @@ SampleView::SampleView(MainWindow *mainWindow) SampleView::~SampleView() { - delete m_sampleDesigner; } void SampleView::initSubWindows() @@ -79,15 +77,15 @@ void SampleView::initSubWindows() static_cast<QWidget*>(nullptr)); m_subWindows[WIDGET_BOX] = - SampleViewComponents::createWidgetBox(m_sampleDesigner, this); + SampleViewComponents::createWidgetBox(sampleDesigner(), this); m_tree_view = SampleViewComponents::createTreeView(m_models->sampleModel(), this); - m_subWindows[SAMPLE_TREE] = m_tree_view; - m_tree_view->expandAll(); - connect(m_tree_view->model(), SIGNAL(rowsInserted(QModelIndex,int,int)), - m_tree_view, SLOT(expandAll())); + m_subWindows[SAMPLE_TREE] = getTreeView(); + getTreeView()->expandAll(); + connect(getTreeView()->model(), SIGNAL(rowsInserted(QModelIndex,int,int)), + getTreeView(), SLOT(expandAll())); - m_subWindows[PROPERTY_EDITOR] = new SamplePropertyWidget(m_tree_view->selectionModel(), this); + m_subWindows[PROPERTY_EDITOR] = new SamplePropertyWidget(getTreeView()->selectionModel(), this); InfoWidget *infoWidget = new InfoWidget(this); connect(infoWidget, SIGNAL(widgetHeightRequest(int)), this, SLOT(setDockHeightForWidget(int))); @@ -96,13 +94,8 @@ void SampleView::initSubWindows() infoWidget->setInstrumentModel(m_models->instrumentModel()); m_subWindows[INFO] = infoWidget; - m_sampleDesigner->setModels(m_models); - m_sampleDesigner->setSelectionModel(m_tree_view->selectionModel(), dynamic_cast<FilterPropertyProxy*>(const_cast<QAbstractItemModel*>(m_tree_view->model()))); -} - -void SampleView::initSelectionModel() -{ - m_selection_model = m_tree_view->selectionModel(); + sampleDesigner()->setModels(m_models); + sampleDesigner()->setSelectionModel(getTreeView()->selectionModel(), dynamic_cast<FilterPropertyProxy*>(const_cast<QAbstractItemModel*>(getTreeView()->model()))); } void SampleView::createActions() @@ -147,7 +140,6 @@ void SampleView::addItem(const QString &item_name) QModelIndex new_index = getSampleModel()->indexOfItem(new_item); scrollToIndex(new_index); } - setDirty(); } void SampleView::deleteItem() @@ -159,7 +151,6 @@ void SampleView::deleteItem() int row = currentIndex.row(); if (currentIndex.isValid()) { getSampleModel()->removeRows(row, 1, parent_index); - setDirty(); } } @@ -262,26 +253,26 @@ void SampleView::connectSignals() connect(this, SIGNAL(resetLayout()), this, SLOT(resetToDefaultLayout())); // toolBar should be initialized after MaterialBrowser - m_toolBar = new SampleToolBar(getSampleModel(), m_tree_view->selectionModel(), this); + m_toolBar = new SampleToolBar(getSampleModel(), getTreeView()->selectionModel(), this); connect(m_toolBar, SIGNAL(deleteItems()), - m_sampleDesigner->getView(), SLOT(deleteSelectedItems())); - connect(m_toolBar, SIGNAL(selectionMode(int)), m_sampleDesigner->getView(), SLOT(onSelectionMode(int))); - connect(m_sampleDesigner->getView(), SIGNAL(selectionModeChanged(int)),m_toolBar, SLOT(onViewSelectionMode(int))); - connect(m_toolBar, SIGNAL(centerView()), m_sampleDesigner->getView(), SLOT(onCenterView())); - connect(m_toolBar, SIGNAL(smartAlign()), m_sampleDesigner, SLOT(onSmartAlign())); + sampleDesigner()->getView(), SLOT(deleteSelectedItems())); + connect(m_toolBar, SIGNAL(selectionMode(int)), sampleDesigner()->getView(), SLOT(onSelectionMode(int))); + connect(sampleDesigner()->getView(), SIGNAL(selectionModeChanged(int)),m_toolBar, SLOT(onViewSelectionMode(int))); + connect(m_toolBar, SIGNAL(centerView()), sampleDesigner()->getView(), SLOT(onCenterView())); + connect(m_toolBar, SIGNAL(smartAlign()), sampleDesigner(), SLOT(onSmartAlign())); connect(m_toolBar, SIGNAL(changeScale(double)), - m_sampleDesigner->getView(), SLOT(onChangeScale(double))); + sampleDesigner()->getView(), SLOT(onChangeScale(double))); connect(m_toolBar, SIGNAL(zoomOut()), - m_sampleDesigner->getView(), SLOT(zoomOut())); + sampleDesigner()->getView(), SLOT(zoomOut())); connect(m_toolBar, SIGNAL(zoomIn()), - m_sampleDesigner->getView(), SLOT(zoomIn())); + sampleDesigner()->getView(), SLOT(zoomIn())); - connect(m_sampleDesigner->getScene(), SIGNAL(selectionModeChangeRequest(int)), - m_sampleDesigner->getView(), SLOT(onSelectionMode(int))); + connect(sampleDesigner()->getScene(), SIGNAL(selectionModeChangeRequest(int)), + sampleDesigner()->getView(), SLOT(onSelectionMode(int))); // connect context menu for tree view - connect(m_tree_view, SIGNAL(customContextMenuRequested(const QPoint &)), + connect(getTreeView(), SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(showContextMenu(const QPoint &))); addToolBar(m_toolBar); @@ -299,7 +290,7 @@ void SampleView::connectSignals() void SampleView::scrollToIndex(const QModelIndex &index) { if (index.isValid()) { - m_tree_view->scrollTo(index); + getTreeView()->scrollTo(index); } } @@ -320,4 +311,9 @@ QTreeView *SampleView::getTreeView() return m_tree_view; } +SampleDesigner* SampleView::sampleDesigner() +{ + return m_sampleDesigner; +} + diff --git a/GUI/coregui/Views/SampleView.h b/GUI/coregui/Views/SampleView.h index 7cd02b31e612f8fd753c4b72348281e6418a7428..5149549ddcb711e470cfcc511382eb71cb686c58 100644 --- a/GUI/coregui/Views/SampleView.h +++ b/GUI/coregui/Views/SampleView.h @@ -53,7 +53,6 @@ public slots: protected slots: void showContextMenu(const QPoint &pnt); - void setDirty(bool dirty=true) { setWindowModified(dirty); } void dockToMinMaxSizes(); void onDockVisibilityChangeV2(bool status); @@ -79,8 +78,9 @@ private: SampleViewDocks* m_docks; - // MaterialBrowser *m_materialBrowser; // material editor SampleDesigner *m_sampleDesigner; // main sample view + SampleDesigner* sampleDesigner(); + SampleToolBar *m_toolBar; // toolbar QWidget *m_subWindows[NUMBER_OF_SUB_WINDOWS]; QDockWidget *m_dockWidgets[NUMBER_OF_SUB_WINDOWS]; @@ -94,8 +94,6 @@ private: ApplicationModels* m_models; QTreeView *m_tree_view; - QItemSelectionModel *m_selection_model; - DockSizeInfo m_dock_info; };