diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp index dc25e23011c0106b9f9693a73d8d36223932117c..66873ed8be542c2e3ad834f9fe482419f8826dba 100644 --- a/GUI/View/Frame/Fit1DFrame.cpp +++ b/GUI/View/Frame/Fit1DFrame.cpp @@ -72,8 +72,6 @@ Fit1DFrame::Fit1DFrame(JobItem* job_item) connect(m_reset_view_action, &QAction::triggered, this, &Fit1DFrame::onResetViewAction); m_axis_panel->setVisible(false); - connect(m_axis_panel, &DataPropertyWidget::axesRangeResetRequested, this, - &Fit1DFrame::onResetViewAction); ASSERT(job_item); m_data_source = std::make_unique<DataSource>(job_item); diff --git a/GUI/View/Frame/SpecularFrame.cpp b/GUI/View/Frame/SpecularFrame.cpp index b9edfe2f54d6a0d4cc6eb522783422b2c53b36e3..829d1afd1be32f6ab580974b0cefa74d91f62f62 100644 --- a/GUI/View/Frame/SpecularFrame.cpp +++ b/GUI/View/Frame/SpecularFrame.cpp @@ -46,7 +46,7 @@ SpecularFrame::SpecularFrame(Data1DItem* item) hlayout->addWidget(m_specular_canvas); connect(m_specular_canvas, &SpecularDataCanvas::customContextMenuRequested, - [](const QPoint& point) { execContextMenu(point); }); + [](const QPoint& point) { execContextMenu(point); }); auto* axis_panel = new AxisPanel; hlayout->addWidget(axis_panel); diff --git a/GUI/View/Setup/AxisPanel.cpp b/GUI/View/Setup/AxisPanel.cpp index aa9362d5f0d7338fe758c43afde182cffeec765a..d6831809d421db42ca789f380bb8f55a09ef1a6d 100644 --- a/GUI/View/Setup/AxisPanel.cpp +++ b/GUI/View/Setup/AxisPanel.cpp @@ -13,10 +13,16 @@ // ************************************************************************************************ #include "GUI/View/Setup/AxisPanel.h" +#include "Base/Axis/Frame.h" +#include "Base/Util/Assert.h" #include "GUI/Model/Axis/AmplitudeAxisItem.h" #include "GUI/Model/Axis/BasicAxisItem.h" #include "GUI/Model/Data/Data1DItem.h" +#include "GUI/Model/Data/DataItem.h" +#include "GUI/Model/Device/DatafileItem.h" +#include "GUI/Model/Device/InstrumentItems.h" #include "GUI/Model/Job/DataSource.h" +#include "GUI/Model/Job/JobItem.h" #include "GUI/Model/Project/ProjectDocument.h" #include "GUI/Support/Data/ComboProperty.h" #include "GUI/View/Numeric/DoubleSpinBox.h" @@ -28,6 +34,17 @@ #include <QFormLayout> #include <QLineEdit> +AxisPanel::AxisPanel() + : m_main_layout(new QFormLayout(this)) +{ + setWindowTitle("Properties"); + + m_main_layout->setContentsMargins(8, 20, 8, 8); + m_main_layout->setSpacing(5); +} + +AxisPanel::~AxisPanel() = default; + void AxisPanel::createPanelElements() { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding); @@ -41,20 +58,6 @@ void AxisPanel::createPanelElements() GUI::Util::Layout::clearLayout(m_main_layout); m_updaters.clear(); - /* - m_main_layout->addRow("Axes units:", - GUI::Util::createUnitsComboBox( - axesUnitsList(), - [this] { return currentData1DItem()->currentAxesUnits(); }, - [this](const QString& newVal) { - for (auto item : allData1DItems()) - item->setCurrentAxesUnits(newVal); - emit axesRangeResetRequested(); - gDoc->setModified(); - }, - &m_updaters)); - */ - // -- x-axis auto* xGroup = new StaticGroupBox("X axis", this); auto* xFormLayout = new QFormLayout(xGroup->body()); @@ -151,3 +154,24 @@ void AxisPanel::createPanelElements() connect(item, &DataItem::axesUnitsChanged, this, &AxisPanel::updateItemCoords, Qt::UniqueConnection); } + +void AxisPanel::setJobOrDatafileItem(QObject* item) +{ + m_data_source = std::make_unique<DataSource>(item); + createPanelElements(); +} + +void AxisPanel::updateItemCoords(DataItem* item) +{ + if (!item) + return; + + emit item->axesUnitsReplotRequested(); + updateUIValues(); +} + +void AxisPanel::updateUIValues() +{ + for (const auto& updater : m_updaters) + updater(); +} diff --git a/GUI/View/Setup/AxisPanel.h b/GUI/View/Setup/AxisPanel.h index 14107cbac13f1c04e5c0afee47bb8c587d9c2486..c5dda6a132b210a299136883682fa200e7f58b7c 100644 --- a/GUI/View/Setup/AxisPanel.h +++ b/GUI/View/Setup/AxisPanel.h @@ -15,13 +15,31 @@ #ifndef BORNAGAIN_GUI_VIEW_SETUP_AXISPANEL_H #define BORNAGAIN_GUI_VIEW_SETUP_AXISPANEL_H -#include "GUI/View/Access/DataPropertyWidget.h" +#include <QFormLayout> +#include <QWidget> + +class DataItem; +class DataSource; //! Widget to edit properties of a Data1DItem. -class AxisPanel : public DataPropertyWidget { +class AxisPanel : public QWidget { + Q_OBJECT +public: + AxisPanel(); + ~AxisPanel(); + + void setJobOrDatafileItem(QObject* item); + private: - void createPanelElements() override; + void updateItemCoords(DataItem* item); + void updateUIValues(); + void createPanelElements(); + + QFormLayout* m_main_layout; + QList<std::function<void()>> m_updaters; + + std::unique_ptr<DataSource> m_data_source; }; #endif // BORNAGAIN_GUI_VIEW_SETUP_AXISPANEL_H