From 232f391bbf6b001458e244ae99c2b07aa8fa1214 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Tue, 21 Nov 2023 14:52:59 +0100 Subject: [PATCH] more generic form of callback from registry --- Base/Util/IFactory.h | 12 ------------ GUI/View/Data/DatafilePresenter.cpp | 8 ++++---- GUI/View/Job/JobResultsPresenter.cpp | 10 +++++----- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/Base/Util/IFactory.h b/Base/Util/IFactory.h index 81da769aea0..8000cc0811e 100644 --- a/Base/Util/IFactory.h +++ b/Base/Util/IFactory.h @@ -65,16 +65,4 @@ protected: CallbackMap_t m_callbacks; //!< map of correspondence of objectsId and creation functions }; -//! Returns new instance of class T. -//! -//! This templated function is used in catalogs in form of a function pointer -//! 'create_new<T>', with no function arguments supplied. Equivalently, we could -//! use a lambda function '[](){return new T;}'. - -template <class T> -T* create_new() -{ - return new T(); -} - #endif // BORNAGAIN_BASE_UTIL_IFACTORY_H diff --git a/GUI/View/Data/DatafilePresenter.cpp b/GUI/View/Data/DatafilePresenter.cpp index 7a5e3af4b8e..1c2241dd270 100644 --- a/GUI/View/Data/DatafilePresenter.cpp +++ b/GUI/View/Data/DatafilePresenter.cpp @@ -22,10 +22,10 @@ DatafilePresenter::DatafilePresenter() { - registerWidget("Heat Map", create_new<Plot2DFrame>); - registerWidget("Projections", create_new<Plot2DWithProjectionFrame>); - registerWidget("Mask Editor", create_new<MaskEditingFrame>); - registerWidget("Reflectometry (Graph only)", create_new<SpecularFrame>); + registerWidget("Heat Map", []() { return new Plot2DFrame; }); + registerWidget("Projections", []() { return new Plot2DWithProjectionFrame; }); + registerWidget("Mask Editor", []() { return new MaskEditingFrame; }); + registerWidget("Reflectometry (Graph only)", []() { return new SpecularFrame; }); } QString DatafilePresenter::itemPresentation() const diff --git a/GUI/View/Job/JobResultsPresenter.cpp b/GUI/View/Job/JobResultsPresenter.cpp index f1bc40dcd67..f096b867aa2 100644 --- a/GUI/View/Job/JobResultsPresenter.cpp +++ b/GUI/View/Job/JobResultsPresenter.cpp @@ -48,11 +48,11 @@ JobResultsPresenter::JobResultsPresenter() setWindowTitle("Job Datafield"); setObjectName("JobResultsPresenter"); - registerWidget("Heat Map", create_new<Plot2DFrame>); - registerWidget("Projections", create_new<Plot2DWithProjectionFrame>); - registerWidget("Fit 1D Data", create_new<Fit1DFrame>); - registerWidget("Fit 2D Data", create_new<Fit2DFrame>); - registerWidget("Reflectometry", create_new<SpecularFrame>); + registerWidget("Heat Map", []() { return new Plot2DFrame; }); + registerWidget("Projections", []() { return new Plot2DWithProjectionFrame; }); + registerWidget("Fit 1D Data", []() { return new Fit1DFrame; }); + registerWidget("Fit 2D Data", []() { return new Fit2DFrame; }); + registerWidget("Reflectometry", []() { return new SpecularFrame; }); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); setMinimumSize(220, 200); -- GitLab