diff --git a/src/classes/dataSource.h b/src/classes/dataSource.h index 22a04a788f..c3117f5e25 100644 --- a/src/classes/dataSource.h +++ b/src/classes/dataSource.h @@ -59,6 +59,9 @@ template class DataSource : public Serialisable +#include +#include +#include + +DataSourceKeywordWidget::DataSourceKeywordWidget(QWidget *parent, DataSourceKeyword *keyword, CoreData &coreData) + : QWidget(parent), KeywordWidgetBase(coreData), keyword_(keyword), coreData_(coreData) +{ + // Add QWidget with Box Layout + enumOptionsModel_.setData(dataSource_.dataSourceTypes()); + FileAndFormatKeyword k(dataSource_.externalDataSource(), "end"); + FileAndFormatKeywordWidget fileAndFormat(&ui_, &k, coreData); + + if (dataSource_.dataName() == "External") + { + externalLayout_.addWidget(&fileAndFormat); + ui_.setLayout(&externalLayout_); + } + else if (dataSource_.dataName() == "Internal") + { + } +} \ No newline at end of file diff --git a/src/gui/keywordWidgets/dataSource.h b/src/gui/keywordWidgets/dataSource.h new file mode 100644 index 0000000000..6ae6d53ea6 --- /dev/null +++ b/src/gui/keywordWidgets/dataSource.h @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// Copyright (c) 2024 Team Dissolve and contributors + +#pragma once + +#include "gui/keywordWidgets/base.h" +#include "gui/keywordWidgets/fileAndFormat.h" +#include "gui/keywordWidgets/enumOptions.h" +#include "gui/models/enumOptionsModel.h" +#include "keywords/fileAndFormat.h" +#include "io/import/data1D.h" +#include "math/data1D.h" +#include "keywords/dataSource.h" +#include +#include + +class DataSourceKeywordWidget : public QWidget, public KeywordWidgetBase +{ + // All Qt declarations must include this macro + Q_OBJECT + + public: + DataSourceKeywordWidget(QWidget *parent, DataSourceKeyword *keyword, CoreData &coreData); + + /* + * Keyword + */ + private: + // Associated keyword + DataSourceKeyword *keyword_; + + protected: + // mutable coredata source + CoreData &coreData_; + + /* + * Widgets + */ + private: + // Main form declaration + QWidget ui_; + QVBoxLayout internalLayout_; + QVBoxLayout externalLayout_; + DataSource dataSource_; + + // Model for enum options + EnumOptionsModel enumOptionsModel_; + + private Q_SLOTS: + + Q_SIGNALS: + // Keyword data changed + //void keywordDataChanged(int flags); + + /* + * Update + */ + + public: + // Update value displayed in widget + //void updateValue(const Flags &mutationFlags) override; + // Update widget values data based on keyword data + //void updateWidgetValues(const CoreData &coreData); + // Update keyword data based on widget values + //void updateKeywordData(); +}; diff --git a/src/gui/keywordWidgets/dataSource.ui b/src/gui/keywordWidgets/dataSource.ui new file mode 100644 index 0000000000..c306ded454 --- /dev/null +++ b/src/gui/keywordWidgets/dataSource.ui @@ -0,0 +1,49 @@ + + + DataSourceWidget + + + + 0 + 0 + 413 + 328 + + + + + 3 + 0 + + + + + 10 + + + + Form + + + + 2 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + diff --git a/src/gui/keywordWidgets/producers.cpp b/src/gui/keywordWidgets/producers.cpp index ca0879d644..c6dac8f36c 100644 --- a/src/gui/keywordWidgets/producers.cpp +++ b/src/gui/keywordWidgets/producers.cpp @@ -7,6 +7,7 @@ #include "gui/keywordWidgets/bool.h" #include "gui/keywordWidgets/configuration.h" #include "gui/keywordWidgets/configurationVector.h" +#include "gui/keywordWidgets/dataSource.h" #include "gui/keywordWidgets/double.h" #include "gui/keywordWidgets/dropWidget.h" #include "gui/keywordWidgets/enumOptions.h" diff --git a/src/modules/compare/compare.cpp b/src/modules/compare/compare.cpp index cf214d5769..038e81aafd 100644 --- a/src/modules/compare/compare.cpp +++ b/src/modules/compare/compare.cpp @@ -2,12 +2,20 @@ // Copyright (c) 2024 Team Dissolve and contributors #include "modules/compare/compare.h" +#include "classes/dataSource.h" #include "keywords/dataSource.h" +#include "keywords/fileAndFormat.h" #include "keywords/rangeVector.h" CompareModule::CompareModule() : Module(ModuleTypes::Compare) { - keywords_.setOrganisation("Options"); + keywords_.setOrganisation("Options", "Data Sources"); + keywords_.add::DataSourceType>>( + "DataType", "Specify whether the data is in Dissolve (Internal) or in the file system (External)", dataType_, + DataSource::dataSourceTypes()); + keywords_.add("Reference", "F(Q) reference data", referenceData_, "EndReference") + ->setEditSignals({KeywordBase::ReloadExternalData, KeywordBase::RecreateRenderables}); + keywords_.setOrganisation("Options", "Errors"); keywords_.add>("Data1D", "Specify one-dimensional test reference data", data1dSources_, "EndData1D"); keywords_.add>("ErrorType", "Type of error calculation to use", errorType_, diff --git a/src/modules/compare/compare.h b/src/modules/compare/compare.h index fbbc96ad92..dc94c8b1a4 100644 --- a/src/modules/compare/compare.h +++ b/src/modules/compare/compare.h @@ -31,6 +31,9 @@ class CompareModule : public Module * Definition */ private: + DataSource::DataSourceType dataType_{}; + // Reference for comparison file and format + Data1DImportFileFormat referenceData_; // Data stored in the keyword std::vector::DataPair> data1dSources_; // Method of error calculation to use