diff --git a/GUI/View/Frame/AnydataFrame.h b/GUI/View/Frame/AnydataFrame.h index 640f1e56c5358024124e1580bfab3bbeb28af679..39cc67a9a7466b668134b010fece7de2a788b6a7 100644 --- a/GUI/View/Frame/AnydataFrame.h +++ b/GUI/View/Frame/AnydataFrame.h @@ -27,7 +27,7 @@ public: const DataSource* dataSource() const { return m_data_source.get(); } -private: +protected: std::unique_ptr<DataSource> m_data_source; }; diff --git a/GUI/View/Frame/Plot2DFrame.cpp b/GUI/View/Frame/Plot2DFrame.cpp index 84db8d2effb3fe8747e7410f2aa4458aa03ac49f..b7bc410fd980ae250aa674f66e01a3e2f39fdd39 100644 --- a/GUI/View/Frame/Plot2DFrame.cpp +++ b/GUI/View/Frame/Plot2DFrame.cpp @@ -105,8 +105,15 @@ Plot2DFrame::Plot2DFrame(std::unique_ptr<DataSource>&& data_source) connect(m_canvas1D, &ProjectedGraphsCanvas::changeActivityRequest, toolbar, &Data2DToolbar::onProjectionTabChange); - connect(gDoc->datafiles(), &DatafilesSet::setChanged, this, &Plot2DFrame::updateFrame); - connect(gDoc->jobs(), &JobsSet::jobMeritsAttention, this, &Plot2DFrame::updateFrame); + // subscription type depends on the context + if (dynamic_cast<DataFromData*>(m_data_source.get())) + connect(gDoc->datafiles(), &DatafilesSet::setChanged, this, &Plot2DFrame::updateFrame); + else if (dynamic_cast<DataFromSim*>(m_data_source.get()) + || dynamic_cast<DataFromJob*>(m_data_source.get())) + connect(gDoc->jobs(), &JobsSet::jobMeritsAttention, this, &Plot2DFrame::updateFrame); + else + ASSERT_NEVER; + updateFrame(); }