diff --git a/GUI/Model/Files/DatafilesSet.h b/GUI/Model/Files/DatafilesSet.h index 09d7a89966ee06b60ac30d0e18acc18559e5a87a..da8c3156fcd0cc4c11d9f85d9537aa89313412bc 100644 --- a/GUI/Model/Files/DatafilesSet.h +++ b/GUI/Model/Files/DatafilesSet.h @@ -40,8 +40,8 @@ public: size_t size() const { return m_dfile_items.size(); } const OwningVector<DatafileItem>& dfileItems() const { return m_dfile_items; } + DatafileItem* dfileModifierAt(int i) { return m_dfile_items.at(i); } const DatafileItem* dfileItemAt(int i) const { return m_dfile_items.at(i); } - DatafileItem* dfileItemAt(int i) { return m_dfile_items.at(i); } QStringList realItemNames() const; int currentIndex() const { return m_current_index; } void writeTo(QXmlStreamWriter* w) const; diff --git a/GUI/Model/Files/DatafilesQModel.cpp b/GUI/View/Data/DatafilesQModel.cpp similarity index 61% rename from GUI/Model/Files/DatafilesQModel.cpp rename to GUI/View/Data/DatafilesQModel.cpp index 73d4e3218bf6cb6d4bfd788ac396697edb286674..632ea40696c5a1ef03ecacd26f9d58d8e7282306 100644 --- a/GUI/Model/Files/DatafilesQModel.cpp +++ b/GUI/View/Data/DatafilesQModel.cpp @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Files/DatafilesQModel.cpp +//! @file GUI/View/Data/DatafilesQModel.cpp //! @brief Implements class DatafilesQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,50 +12,50 @@ // // ************************************************************************************************ -#include "GUI/Model/Files/DatafilesQModel.h" +#include "GUI/View/Data/DatafilesQModel.h" #include "GUI/Model/Device/DatafileItem.h" #include "GUI/Model/Files/DatafilesSet.h" +#include "GUI/View/Manager/ProjectManager.h" -DatafilesQModel::DatafilesQModel(QObject* parent, DatafilesSet* model) +DatafilesQModel::DatafilesQModel(QObject* parent) : QAbstractListModel(parent) - , m_model(model) { } void DatafilesQModel::injectDatafileItem(DatafileItem* item) { - const int row = m_model->size(); + const int row = gDoc->datafiles()->size(); beginInsertRows({}, row, row); - m_model->appendDatafileItem(item); + gDoc->datafilesModifier()->appendDatafileItem(item); endInsertRows(); } void DatafilesQModel::removeDatafileItemAt(int row) { - ASSERT(0 <= row && row < (int)m_model->size()); + ASSERT(0 <= row && row < (int)gDoc->datafiles()->size()); beginRemoveRows({}, row, row); - m_model->deleteDatafileItemAt(row); + gDoc->datafilesModifier()->deleteDatafileItemAt(row); endRemoveRows(); } const DatafileItem* DatafilesQModel::topMostItem() const { - if (m_model->size() > 0) - return m_model->dfileItemAt(0); + if (gDoc->datafiles()->size() > 0) + return gDoc->datafiles()->dfileItemAt(0); return nullptr; } int DatafilesQModel::rowCount(const QModelIndex& /*parent*/) const { - return m_model->size(); + return gDoc->datafiles()->size(); } QVariant DatafilesQModel::data(const QModelIndex& index, int role) const { - if (!index.isValid() || index.row() >= (int)m_model->size() || index.row() < 0) + if (!index.isValid() || index.row() >= (int)gDoc->datafiles()->size() || index.row() < 0) return {}; - const auto* item = itemForIndex(index); + const auto* item = gDoc->datafiles()->dfileItemAt(index.row()); ASSERT(item); if (role == Qt::DisplayRole) @@ -67,17 +67,17 @@ QVariant DatafilesQModel::data(const QModelIndex& index, int role) const return {}; } -DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index) const +DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index) { - if (!index.isValid() || index.row() >= (int)m_model->size() || index.row() < 0) + if (!index.isValid() || index.row() >= (int)gDoc->datafiles()->size() || index.row() < 0) return nullptr; - return m_model->dfileItemAt(index.row()); + return gDoc->datafilesModifier()->dfileModifierAt(index.row()); } QModelIndex DatafilesQModel::indexForItem(const DatafileItem* item) const { - for (size_t i = 0; i < m_model->size(); ++i) - if (m_model->dfileItemAt(i) == item) + for (size_t i = 0; i < gDoc->datafiles()->size(); ++i) + if (gDoc->datafiles()->dfileItemAt(i) == item) return createIndex(i, 0, item); return {}; } diff --git a/GUI/Model/Files/DatafilesQModel.h b/GUI/View/Data/DatafilesQModel.h similarity index 76% rename from GUI/Model/Files/DatafilesQModel.h rename to GUI/View/Data/DatafilesQModel.h index 0b908b0c0f63b4928b57f3a4ff2dac0fd7eccd17..7ce29b8cab4127024f1e6e4aa1ac4f360cf2bc54 100644 --- a/GUI/Model/Files/DatafilesQModel.h +++ b/GUI/View/Data/DatafilesQModel.h @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Files/DatafilesQModel.h +//! @file GUI/View/Data/DatafilesQModel.h //! @brief Defines class DatafilesQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,8 +12,8 @@ // // ************************************************************************************************ -#ifndef BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H -#define BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H +#ifndef BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H +#define BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H #include <QAbstractListModel> @@ -25,7 +25,7 @@ class DatafilesSet; class DatafilesQModel : public QAbstractListModel { Q_OBJECT public: - explicit DatafilesQModel(QObject* parent, DatafilesSet* model); + explicit DatafilesQModel(QObject* parent); void injectDatafileItem(DatafileItem* item); void removeDatafileItemAt(int row); @@ -33,13 +33,10 @@ public: int rowCount(const QModelIndex& parent = {}) const override; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; - DatafileItem* itemForIndex(const QModelIndex& index) const; + DatafileItem* itemForIndex(const QModelIndex& index); QModelIndex indexForItem(const DatafileItem* item) const; const DatafileItem* topMostItem() const; //!< The topmost visible item. Can be null. bool isHeadline(const QModelIndex&) const { return false; } - -private: - DatafilesSet* const m_model; }; -#endif // BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H +#endif // BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp index 73412429d66899a12c475aaccc8bdbfac73a6f36..eaa137def5beeba2429f16ac41d436920afa7185 100644 --- a/GUI/View/Data/DatafilesSelector.cpp +++ b/GUI/View/Data/DatafilesSelector.cpp @@ -18,9 +18,9 @@ #include "Device/IO/IOFactory.h" #include "GUI/Model/Data/DataItem.h" #include "GUI/Model/Device/DatafileItem.h" -#include "GUI/Model/Files/DatafilesQModel.h" #include "GUI/Model/Files/DatafilesSet.h" #include "GUI/View/Data/DatafileEditor.h" +#include "GUI/View/Data/DatafilesQModel.h" #include "GUI/View/Frame/StackedFrames.h" #include "GUI/View/Info/MessageBox.h" #include "GUI/View/Layout/ApplicationSettings.h" @@ -69,7 +69,7 @@ DatafilesSelector::DatafilesSelector(StackedDataFrames* data_frames) , m_rename_data_action(new QAction(this)) , m_remove_data_action(new QAction(this)) , m_qview(new QTreeView(this)) - , m_qmodel(new DatafilesQModel(this, gDoc->datafilesModifier())) + , m_qmodel(new DatafilesQModel(this)) , m_editor(new DatafileEditor) , m_data_frames(data_frames) { diff --git a/GUI/View/ParEdit/ParameterTuningDelegate.cpp b/GUI/View/ParEdit/ParameterTuningDelegate.cpp index c85eb98e6a8bac6143888a619ee458d47421cb0d..0251d0726331a2a2a7464ce53cf5bf3458ffda6d 100644 --- a/GUI/View/ParEdit/ParameterTuningDelegate.cpp +++ b/GUI/View/ParEdit/ParameterTuningDelegate.cpp @@ -15,7 +15,6 @@ #include "GUI/View/ParEdit/ParameterTuningDelegate.h" #include "GUI/Model/Job/ParameterTreeItems.h" #include "GUI/Model/Project/ProjectDocument.h" -#include "GUI/Model/Tune/PartunerQModel.h" #include "GUI/View/Numeric/ScientificSpinBox.h" #include <QHBoxLayout> @@ -137,7 +136,8 @@ QWidget* ParameterTuningDelegate::createEditor(QWidget* parent, const QStyleOpti if (!data.isValid()) return nullptr; - m_current_item = PartunerQModel::toParameterItem(index); + auto* item = static_cast<QObject*>(index.internalPointer()); + m_current_item = dynamic_cast<ParameterItem*>(item); if (!m_current_item) return nullptr; diff --git a/GUI/View/Tuning/FitParameterWidget.cpp b/GUI/View/Tuning/FitParameterWidget.cpp index 216e3f124397a9ea63f1fa261d40a302a8b60a14..8f416ca4b33c1ec6e9c66bdda60cdcd344e6cdfd 100644 --- a/GUI/View/Tuning/FitParameterWidget.cpp +++ b/GUI/View/Tuning/FitParameterWidget.cpp @@ -20,11 +20,11 @@ #include "GUI/Model/Job/JobItem.h" #include "GUI/Model/Job/ParameterTreeItems.h" #include "GUI/Model/Project/ProjectDocument.h" -#include "GUI/Model/Tune/FitparQModel.h" #include "GUI/Support/Data/JobStatus.h" #include "GUI/View/Info/OverlayLabelController.h" #include "GUI/View/Layout/CustomEventFilters.h" #include "GUI/View/ParEdit/FitParameterDelegate.h" +#include "GUI/View/Tuning/FitparQModel.h" #include "GUI/View/Tuning/ParameterTuningWidget.h" #include <QAction> #include <QHeaderView> diff --git a/GUI/Model/Tune/FitparQModel.cpp b/GUI/View/Tuning/FitparQModel.cpp similarity index 99% rename from GUI/Model/Tune/FitparQModel.cpp rename to GUI/View/Tuning/FitparQModel.cpp index bf7e54b85eaf3ca932fdc1b828018143821e4aaf..199cd822f17ab1d75a1e2654aecce08dadfe1b86 100644 --- a/GUI/Model/Tune/FitparQModel.cpp +++ b/GUI/View/Tuning/FitparQModel.cpp @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Tune/FitparQModel.cpp +//! @file GUI/View/Tuning/FitparQModel.cpp //! @brief Implements class FitparQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,7 +12,7 @@ // // ************************************************************************************************ -#include "GUI/Model/Tune/FitparQModel.h" +#include "GUI/View/Tuning/FitparQModel.h" #include "Base/Util/Assert.h" #include "GUI/Model/Job/FitParameterContainerItem.h" #include "GUI/Model/Job/JobItem.h" diff --git a/GUI/Model/Tune/FitparQModel.h b/GUI/View/Tuning/FitparQModel.h similarity index 93% rename from GUI/Model/Tune/FitparQModel.h rename to GUI/View/Tuning/FitparQModel.h index a21eb9a0dce556141b5d2e951c0e2aeb41119534..4b9aa6ac9bf68afc9cc8fdf1942481adcb27ec00 100644 --- a/GUI/Model/Tune/FitparQModel.h +++ b/GUI/View/Tuning/FitparQModel.h @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Tune/FitparQModel.h +//! @file GUI/View/Tuning/FitparQModel.h //! @brief Defines class FitparQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,8 +12,8 @@ // // ************************************************************************************************ -#ifndef BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H -#define BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H +#ifndef BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H +#define BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H #include <QAbstractItemModel> #include <QStringList> @@ -77,4 +77,4 @@ inline Qt::DropActions FitparQModel::supportedDropActions() const return Qt::MoveAction | Qt::CopyAction; } -#endif // BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H +#endif // BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H diff --git a/GUI/View/Tuning/ParameterTuningWidget.cpp b/GUI/View/Tuning/ParameterTuningWidget.cpp index 499575ad01ba3fe559b12eadbba24e768b643eb6..10b3b249bb9a20f931afc962423ca6c08f570bb0 100644 --- a/GUI/View/Tuning/ParameterTuningWidget.cpp +++ b/GUI/View/Tuning/ParameterTuningWidget.cpp @@ -20,12 +20,12 @@ #include "GUI/Model/Job/ParameterTreeItems.h" #include "GUI/Model/Project/ProjectDocument.h" #include "GUI/Model/Tune/JobsSet.h" -#include "GUI/Model/Tune/PartunerQModel.h" #include "GUI/Support/Data/JobStatus.h" #include "GUI/View/Info/CautionSign.h" #include "GUI/View/Layout/mainwindow_constants.h" #include "GUI/View/ParEdit/ParameterTuningDelegate.h" #include "GUI/View/Tuning/ParameterBackupWidget.h" +#include "GUI/View/Tuning/PartunerQModel.h" #include "GUI/View/Tuning/SliderEditor.h" #include "GUI/View/Widget/StyledToolbar.h" #include <QAction> diff --git a/GUI/Model/Tune/PartunerQModel.cpp b/GUI/View/Tuning/PartunerQModel.cpp similarity index 98% rename from GUI/Model/Tune/PartunerQModel.cpp rename to GUI/View/Tuning/PartunerQModel.cpp index 5e4ded6198acd503b1b815fa3387df618efd83ea..00834a998d2b5d6003ca452c2f29b8145a49e1eb 100644 --- a/GUI/Model/Tune/PartunerQModel.cpp +++ b/GUI/View/Tuning/PartunerQModel.cpp @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Tune/PartunerQModel.cpp +//! @file GUI/View/Tuning/PartunerQModel.cpp //! @brief Implements class PartunerQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,7 +12,7 @@ // // ************************************************************************************************ -#include "GUI/Model/Tune/PartunerQModel.h" +#include "GUI/View/Tuning/PartunerQModel.h" #include "GUI/Model/Job/ParameterTreeItems.h" #include "GUI/Support/XML/UtilXML.h" #include <QFont> diff --git a/GUI/Model/Tune/PartunerQModel.h b/GUI/View/Tuning/PartunerQModel.h similarity index 91% rename from GUI/Model/Tune/PartunerQModel.h rename to GUI/View/Tuning/PartunerQModel.h index ac28bf8dde7192c8de1ea830daf9ff816c38e039..c685a3655903a1f3f19fa76229aac5b30e9d3d1c 100644 --- a/GUI/Model/Tune/PartunerQModel.h +++ b/GUI/View/Tuning/PartunerQModel.h @@ -2,7 +2,7 @@ // // BornAgain: simulate and fit reflection and scattering // -//! @file GUI/Model/Tune/PartunerQModel.h +//! @file GUI/View/Tuning/PartunerQModel.h //! @brief Defines class PartunerQModel. //! //! @homepage http://www.bornagainproject.org @@ -12,8 +12,8 @@ // // ************************************************************************************************ -#ifndef BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H -#define BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H +#ifndef BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H +#define BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H class ParameterItem; class ParameterLabelItem; @@ -57,4 +57,4 @@ private: QObject* m_root_object; }; -#endif // BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H +#endif // BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H diff --git a/Tests/Unit/GUI/TestFitParameterModel.cpp b/Tests/Unit/GUI/TestFitParameterModel.cpp index 59bd9ad940ab820cf5bee2bc0ae7a7c62c653e52..c7e5623a7e2dde8975a43367be4e53adc8b4306f 100644 --- a/Tests/Unit/GUI/TestFitParameterModel.cpp +++ b/Tests/Unit/GUI/TestFitParameterModel.cpp @@ -4,7 +4,7 @@ #include "GUI/Model/Job/FitParameterLinkItem.h" #include "GUI/Model/Job/FitSuiteItem.h" #include "GUI/Model/Mini/MinimizerItems.h" -#include "GUI/Model/Tune/FitparQModel.h" +#include "GUI/View/Tuning/FitparQModel.h" #include "Tests/GTestWrapper/google_test.h" TEST(TestFitparQModel, addFitParameter)