Skip to content

Commit

Permalink
Store tab name in parent widget window title
Browse files Browse the repository at this point in the history
  • Loading branch information
robertapplin committed Apr 29, 2024
1 parent cefac28 commit 78e8278
Show file tree
Hide file tree
Showing 12 changed files with 50 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "ConvFitDataView.h"
#include "Common/InterfaceUtils.h"
#include "ConvFitAddWorkspaceDialog.h"
#include "FitDataPresenter.h"

#include <QComboBox>
#include <QHeaderView>
Expand All @@ -27,11 +28,9 @@ QStringList convFitHeaders() {

namespace MantidQt::CustomInterfaces::Inelastic {

ConvFitDataView::ConvFitDataView(QWidget *parent, std::string const &tabName)
: ConvFitDataView(convFitHeaders(), parent, tabName) {}
ConvFitDataView::ConvFitDataView(QWidget *parent) : ConvFitDataView(convFitHeaders(), parent) {}

ConvFitDataView::ConvFitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName)
: FitDataView(headers, parent, tabName) {
ConvFitDataView::ConvFitDataView(const QStringList &headers, QWidget *parent) : FitDataView(headers, parent) {
auto header = m_uiForm->tbFitData->horizontalHeader();
header->setSectionResizeMode(1, QHeaderView::Stretch);
}
Expand All @@ -41,11 +40,12 @@ void ConvFitDataView::showAddWorkspaceDialog() {
connect(dialog, SIGNAL(addData(MantidWidgets::IAddWorkspaceDialog *)), this,
SLOT(notifyAddData(MantidWidgets::IAddWorkspaceDialog *)));

auto tabName = m_presenter->tabName();
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(m_tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(m_tabName));
dialog->setResolutionWSSuffices(InterfaceUtils::getResolutionWSSuffixes(m_tabName));
dialog->setResolutionFBSuffices(InterfaceUtils::getResolutionFBSuffixes(m_tabName));
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(tabName));
dialog->setResolutionWSSuffices(InterfaceUtils::getResolutionWSSuffixes(tabName));
dialog->setResolutionFBSuffices(InterfaceUtils::getResolutionFBSuffixes(tabName));
dialog->updateSelectedSpectra();
dialog->show();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ Presenter for a table of convolution fitting data.
class MANTIDQT_INELASTIC_DLL ConvFitDataView : public FitDataView {
Q_OBJECT
public:
ConvFitDataView(QWidget *parent, std::string const &tabName);
ConvFitDataView(QWidget *parent);
void addTableEntry(size_t row, FitDataRow newRow) override;

protected:
ConvFitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName);
ConvFitDataView(const QStringList &headers, QWidget *parent);

protected slots:
void showAddWorkspaceDialog() override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ std::vector<FitData> *FitDataPresenter::getFittingData() { return m_model->getFi

IFitDataView const *FitDataPresenter::getView() const { return m_view; }

std::string FitDataPresenter::tabName() const { return m_tab->tabName(); }

bool FitDataPresenter::addWorkspaceFromDialog(MantidWidgets::IAddWorkspaceDialog const *dialog) {
if (const auto indirectDialog = dynamic_cast<MantidWidgets::AddWorkspaceDialog const *>(dialog)) {
addWorkspace(indirectDialog->workspaceName(), indirectDialog->workspaceIndices());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ class IFitTab;

class MANTIDQT_INELASTIC_DLL IFitDataPresenter {
public:
virtual std::string tabName() const = 0;

virtual void handleAddData(MantidWidgets::IAddWorkspaceDialog const *dialog) = 0;
virtual void handleRemoveClicked() = 0;
virtual void handleUnifyClicked() = 0;
Expand Down Expand Up @@ -73,6 +75,8 @@ class MANTIDQT_INELASTIC_DLL FitDataPresenter : public IFitDataPresenter, public

virtual void subscribeFitPropertyBrowser(IInelasticFitPropertyBrowser *browser) { UNUSED_ARG(browser); };

std::string tabName() const override;

void handleAddData(MantidWidgets::IAddWorkspaceDialog const *dialog) override;
void handleRemoveClicked() override;
void handleUnifyClicked() override;
Expand Down
12 changes: 6 additions & 6 deletions qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,10 @@ namespace MantidQt {
namespace CustomInterfaces {
namespace Inelastic {

FitDataView::FitDataView(QWidget *parent, std::string const &tabName)
: FitDataView(defaultHeaders(), parent, tabName) {}
FitDataView::FitDataView(QWidget *parent) : FitDataView(defaultHeaders(), parent) {}

FitDataView::FitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName)
: QTabWidget(parent), m_uiForm(new Ui::FitDataView), m_tabName(tabName) {
FitDataView::FitDataView(const QStringList &headers, QWidget *parent)
: QTabWidget(parent), m_uiForm(new Ui::FitDataView) {
m_uiForm->setupUi(this);

setHorizontalHeaders(headers);
Expand Down Expand Up @@ -136,9 +135,10 @@ void FitDataView::showAddWorkspaceDialog() {
connect(dialog, SIGNAL(addData(MantidWidgets::IAddWorkspaceDialog *)), this,
SLOT(notifyAddData(MantidWidgets::IAddWorkspaceDialog *)));

auto tabName = m_presenter->tabName();
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(m_tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(m_tabName));
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(tabName));
dialog->updateSelectedSpectra();
dialog->show();
}
Expand Down
6 changes: 2 additions & 4 deletions qt/scientific_interfaces/Inelastic/QENSFitting/FitDataView.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class IFitDataPresenter;
class MANTIDQT_INELASTIC_DLL FitDataView : public QTabWidget, public IFitDataView {
Q_OBJECT
public:
FitDataView(QWidget *parent, std::string const &tabName);
FitDataView(QWidget *parent);
~FitDataView() override = default;

void subscribePresenter(IFitDataPresenter *presenter) override;
Expand All @@ -51,9 +51,7 @@ protected slots:
void notifyAddData(MantidWidgets::IAddWorkspaceDialog *dialog);

protected:
FitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName);

std::string m_tabName;
FitDataView(const QStringList &headers, QWidget *parent);

std::unique_ptr<Ui::FitDataView> m_uiForm;
void setCell(std::unique_ptr<QTableWidgetItem> cell, size_t row, size_t column);
Expand Down
5 changes: 4 additions & 1 deletion qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ namespace MantidQt {
namespace CustomInterfaces {
namespace Inelastic {

FitTab::FitTab(QWidget *parent)
FitTab::FitTab(QWidget *parent, std::string const &tabName)
: IndirectTab(parent), m_uiForm(new Ui::FitTab), m_dataPresenter(), m_fittingModel(), m_plotPresenter(),
m_outOptionsPresenter(), m_fitPropertyBrowser(), m_fittingAlgorithm() {
m_uiForm->setupUi(parent);
parent->setWindowTitle(QString::fromStdString(tabName));
}

void FitTab::setup() {
Expand Down Expand Up @@ -329,6 +330,8 @@ void FitTab::updateResultOptions() {
m_outOptionsPresenter->setSaveEnabled(isFit);
}

std::string FitTab::tabName() const { return m_parentWidget->windowTitle().toStdString(); }

void FitTab::handleDataChanged() {
updateDataReferences();
m_fittingModel->removeFittingData();
Expand Down
9 changes: 6 additions & 3 deletions qt/scientific_interfaces/Inelastic/QENSFitting/FitTab.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ namespace Inelastic {
class MANTIDQT_INELASTIC_DLL IFitTab {
public:
// Used by FitDataPresenter
virtual std::string tabName() const = 0;
virtual void handleDataAdded(IAddWorkspaceDialog const *dialog) = 0;
virtual void handleDataChanged() = 0;
virtual void handleDataRemoved() = 0;
Expand All @@ -53,7 +54,7 @@ class MANTIDQT_INELASTIC_DLL FitTab : public IndirectTab, public IFitTab {
Q_OBJECT

public:
FitTab(QWidget *parent);
FitTab(QWidget *parent, std::string const &tabName);
virtual ~FitTab() override = default;

template <typename FittingModel> void setupFittingModel() { m_fittingModel = std::make_unique<FittingModel>(); }
Expand All @@ -73,8 +74,8 @@ class MANTIDQT_INELASTIC_DLL FitTab : public IndirectTab, public IFitTab {
m_fitPropertyBrowser->setOutputCompositeMembers(true);
}

template <typename FitDataView> void setupFitDataView(std::string const &tabName) {
m_uiForm->dockArea->setFitDataView(new FitDataView(m_uiForm->dockArea, tabName));
template <typename FitDataView> void setupFitDataView() {
m_uiForm->dockArea->setFitDataView(new FitDataView(m_uiForm->dockArea));
}

template <typename FitDataPresenter> void setUpFitDataPresenter() {
Expand All @@ -86,6 +87,8 @@ class MANTIDQT_INELASTIC_DLL FitTab : public IndirectTab, public IFitTab {
void setupPlotView(std::optional<std::pair<double, double>> const &xPlotBounds = std::nullopt);
void subscribeFitBrowserToDataPresenter();

std::string tabName() const override;

void handleDataAdded(IAddWorkspaceDialog const *dialog) override;
void handleDataChanged() override;
void handleDataRemoved() override;
Expand Down
11 changes: 5 additions & 6 deletions qt/scientific_interfaces/Inelastic/QENSFitting/FqFitDataView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,11 @@ QStringList FqFitHeaders() {

namespace MantidQt::CustomInterfaces::Inelastic {

FqFitDataView::FqFitDataView(QWidget *parent, std::string const &tabName)
: FqFitDataView(FqFitHeaders(), parent, tabName) {
FqFitDataView::FqFitDataView(QWidget *parent) : FqFitDataView(FqFitHeaders(), parent) {
connect(m_uiForm->pbAdd, SIGNAL(clicked()), this, SLOT(notifyAddClicked()));
}

FqFitDataView::FqFitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName)
: FitDataView(headers, parent, tabName) {
FqFitDataView::FqFitDataView(const QStringList &headers, QWidget *parent) : FitDataView(headers, parent) {
auto header = m_uiForm->tbFitData->horizontalHeader();
header->setSectionResizeMode(1, QHeaderView::Stretch);
}
Expand All @@ -49,9 +47,10 @@ void FqFitDataView::showAddWorkspaceDialog() {
connect(dialog, SIGNAL(parameterTypeChanged(FqFitAddWorkspaceDialog *, const std::string &)), this,
SLOT(notifyParameterTypeChanged(FqFitAddWorkspaceDialog *, const std::string &)));

auto tabName = m_presenter->tabName();
dialog->setAttribute(Qt::WA_DeleteOnClose);
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(m_tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(m_tabName));
dialog->setWSSuffices(InterfaceUtils::getSampleWSSuffixes(tabName));
dialog->setFBSuffices(InterfaceUtils::getSampleFBSuffixes(tabName));
dialog->updateSelectedSpectra();
dialog->show();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ Presenter for a table of convolution fitting data.
class MANTIDQT_INELASTIC_DLL FqFitDataView : public FitDataView {
Q_OBJECT
public:
FqFitDataView(QWidget *parent, std::string const &tabName);
FqFitDataView(QWidget *parent);
void addTableEntry(size_t row, FitDataRow newRow) override;

protected:
FqFitDataView(const QStringList &headers, QWidget *parent, std::string const &tabName);
FqFitDataView(const QStringList &headers, QWidget *parent);

protected slots:
void showAddWorkspaceDialog() override;
Expand Down
16 changes: 8 additions & 8 deletions qt/scientific_interfaces/Inelastic/QENSFitting/TabFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,49 +39,49 @@ namespace MantidQt::CustomInterfaces::Inelastic {
TabFactory::TabFactory(QTabWidget *tabWidget) : m_tabWidget(tabWidget) {}

FitTab *TabFactory::makeMSDFitTab(int const index) const {
auto tab = new FitTab(m_tabWidget->widget(index));
auto tab = new FitTab(m_tabWidget->widget(index), MSDFit::TAB_NAME);
tab->setupFittingModel<MSDFitModel>();
tab->setupFitPropertyBrowser<SingleFunctionTemplateView, SingleFunctionTemplatePresenter, MSDFunctionModel>(
MSDFit::HIDDEN_PROPS);
tab->setupFitDataView<FitDataView>(MSDFit::TAB_NAME);
tab->setupFitDataView<FitDataView>();
tab->setupOutputOptionsPresenter();
tab->setUpFitDataPresenter<FitDataPresenter>();
tab->setupPlotView();
return tab;
}

FitTab *TabFactory::makeIqtFitTab(int const index) const {
auto tab = new FitTab(m_tabWidget->widget(index));
auto tab = new FitTab(m_tabWidget->widget(index), IqtFit::TAB_NAME);
tab->setupFittingModel<IqtFitModel>();
auto browserCustomizations = packBrowserCustomizations(IqtFit::templateSubTypes());
tab->setupFitPropertyBrowser<MultiFunctionTemplateView, MultiFunctionTemplatePresenter, IqtFunctionTemplateModel>(
IqtFit::HIDDEN_PROPS, false, std::move(browserCustomizations));
tab->setupFitDataView<FitDataView>(IqtFit::TAB_NAME);
tab->setupFitDataView<FitDataView>();
tab->setupOutputOptionsPresenter(true);
tab->setUpFitDataPresenter<FitDataPresenter>();
tab->setupPlotView();
return tab;
}

FitTab *TabFactory::makeConvFitTab(int const index) const {
auto tab = new FitTab(m_tabWidget->widget(index));
auto tab = new FitTab(m_tabWidget->widget(index), ConvFit::TAB_NAME);
tab->setupFittingModel<ConvFitModel>();
auto browserCustomizations = packBrowserCustomizations(ConvFit::templateSubTypes());
tab->setupFitPropertyBrowser<MultiFunctionTemplateView, MultiFunctionTemplatePresenter, ConvFunctionTemplateModel>(
ConvFit::HIDDEN_PROPS, true, std::move(browserCustomizations));
tab->setupFitDataView<ConvFitDataView>(ConvFit::TAB_NAME);
tab->setupFitDataView<ConvFitDataView>();
tab->setupOutputOptionsPresenter(true);
tab->setUpFitDataPresenter<ConvFitDataPresenter>();
tab->setupPlotView();
return tab;
}

FitTab *TabFactory::makeFqFitTab(int const index) const {
auto tab = new FitTab(m_tabWidget->widget(index));
auto tab = new FitTab(m_tabWidget->widget(index), FqFit::TAB_NAME);
tab->setupFittingModel<FqFitModel>();
tab->setupFitPropertyBrowser<SingleFunctionTemplateView, SingleFunctionTemplatePresenter, FqFunctionModel>(
FqFit::HIDDEN_PROPS);
tab->setupFitDataView<FqFitDataView>(FqFit::TAB_NAME);
tab->setupFitDataView<FqFitDataView>();
tab->setupOutputOptionsPresenter();
tab->setUpFitDataPresenter<FqFitDataPresenter>();
tab->subscribeFitBrowserToDataPresenter();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class MockFitTab : public IFitTab {
public:
virtual ~MockFitTab() = default;

MOCK_CONST_METHOD0(tabName, std::string());
MOCK_METHOD1(handleDataAdded, void(MantidQt::MantidWidgets::IAddWorkspaceDialog const *dialog));
MOCK_METHOD0(handleDataChanged, void());
MOCK_METHOD0(handleDataRemoved, void());
Expand Down

0 comments on commit 78e8278

Please sign in to comment.