Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Addition of dataType selection into compare #1872

Draft
wants to merge 4 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/classes/dataSource.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ template <typename DataType> class DataSource : public Serialisable<const CoreDa
public:
// Return data name
std::string_view dataName() const { return dataName_; }
// Set Data Source Type
typename DataType::Formatter &externalDataSource() { return externalDataSource_; }

// Return if data exists and has been initialised
bool dataExists() const
{
Expand Down
2 changes: 2 additions & 0 deletions src/gui/keywordWidgets/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ add_library(
configurationVector.cpp
configurationVector.h
configurationVector.ui
dataSource.cpp
dataSource.h
dialog.cpp
dialog.h
dialog.ui
Expand Down
29 changes: 29 additions & 0 deletions src/gui/keywordWidgets/dataSource.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright (c) 2024 Team Dissolve and contributors

#include "gui/keywordWidgets/dataSource.h"
#include "gui/keywordWidgets/dialog.h"
#include "io/fileAndFormat.h"
#include "main/dissolve.h"
#include <QComboBox>
#include <QFile>
#include <QFileDialog>
#include <QFileInfo>

DataSourceKeywordWidget::DataSourceKeywordWidget(QWidget *parent, DataSourceKeyword<Data1D> *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")
{
}
}
66 changes: 66 additions & 0 deletions src/gui/keywordWidgets/dataSource.h
Original file line number Diff line number Diff line change
@@ -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 <QVBoxLayout>
#include <QWidget>

class DataSourceKeywordWidget : public QWidget, public KeywordWidgetBase
{
// All Qt declarations must include this macro
Q_OBJECT

public:
DataSourceKeywordWidget(QWidget *parent, DataSourceKeyword<Data1D> *keyword, CoreData &coreData);

/*
* Keyword
*/
private:
// Associated keyword
DataSourceKeyword<Data1D> *keyword_;

protected:
// mutable coredata source
CoreData &coreData_;

/*
* Widgets
*/
private:
// Main form declaration
QWidget ui_;
QVBoxLayout internalLayout_;
QVBoxLayout externalLayout_;
DataSource<Data1D> 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<DissolveSignals::DataMutations> &mutationFlags) override;
// Update widget values data based on keyword data
//void updateWidgetValues(const CoreData &coreData);
// Update keyword data based on widget values
//void updateKeywordData();
};
49 changes: 49 additions & 0 deletions src/gui/keywordWidgets/dataSource.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DataSourceWidget</class>
<widget class="QWidget" name="DataSourceWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>413</width>
<height>328</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>3</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
<resources>
<include location="../main.qrc"/>
</resources>
<connections/>
</ui>
1 change: 1 addition & 0 deletions src/gui/keywordWidgets/producers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
10 changes: 9 additions & 1 deletion src/modules/compare/compare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<EnumOptionsKeyword<DataSource<Data1D>::DataSourceType>>(
"DataType", "Specify whether the data is in Dissolve (Internal) or in the file system (External)", dataType_,
DataSource<Data1D>::dataSourceTypes());
keywords_.add<FileAndFormatKeyword>("Reference", "F(Q) reference data", referenceData_, "EndReference")
->setEditSignals({KeywordBase::ReloadExternalData, KeywordBase::RecreateRenderables});
keywords_.setOrganisation("Options", "Errors");
keywords_.add<DataSourceKeyword<Data1D>>("Data1D", "Specify one-dimensional test reference data", data1dSources_,
"EndData1D");
keywords_.add<EnumOptionsKeyword<Error::ErrorType>>("ErrorType", "Type of error calculation to use", errorType_,
Expand Down
3 changes: 3 additions & 0 deletions src/modules/compare/compare.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ class CompareModule : public Module
* Definition
*/
private:
DataSource<Data1D>::DataSourceType dataType_{};
// Reference for comparison file and format
Data1DImportFileFormat referenceData_;
// Data stored in the keyword
std::vector<DataSourceKeyword<Data1D>::DataPair> data1dSources_;
// Method of error calculation to use
Expand Down