From 07e057e182bb14ff99e7b9d082e602344cd58456 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 17 Aug 2026 01:50:51 +0200 Subject: [PATCH] WIP --- src/edt/edt/edtPCellParametersPage.cc | 18 +++++++++--------- src/edt/edt/edtPCellParametersPage.h | 7 +++---- src/edt/edt/edtPCellParametersPageBase.h | 18 ++++++++++++++++++ 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/edt/edt/edtPCellParametersPage.cc b/src/edt/edt/edtPCellParametersPage.cc index 87ed634fa..98824dc0a 100644 --- a/src/edt/edt/edtPCellParametersPage.cc +++ b/src/edt/edt/edtPCellParametersPage.cc @@ -212,7 +212,7 @@ static void set_value (const db::PCellParameterDeclaration &p, QWidget *widget, PCellParametersPage::PCellParametersPage () : PCellParametersPageBase () { - // .. nothing yet .. + m_s2s_parameter_changed_slot.triggered.add (this, &PCellParametersPage::parameter_changed_slot); } void @@ -361,7 +361,7 @@ PCellParametersPage::build_widgets (QFrame *container) inner_grid->addWidget (f, row, 2); m_all_widgets.back ().push_back (f); - connect (le, SIGNAL (editingFinished ()), this, SLOT (parameter_changed_slot ())); + QObject::connect (le, SIGNAL (editingFinished ()), &m_s2s_parameter_changed_slot, SLOT (trigger ())); } break; @@ -379,7 +379,7 @@ PCellParametersPage::build_widgets (QFrame *container) inner_grid->addWidget (pb, row, 2); m_all_widgets.back ().push_back (pb); - connect (pb, SIGNAL (clicked ()), this, SLOT (parameter_changed_slot ())); + QObject::connect (pb, SIGNAL (clicked ()), &m_s2s_parameter_changed_slot, SLOT (trigger ())); } break; @@ -396,7 +396,7 @@ PCellParametersPage::build_widgets (QFrame *container) inner_grid->addWidget (le, row, 2); m_all_widgets.back ().push_back (le); - connect (le, SIGNAL (editingFinished ()), this, SLOT (parameter_changed_slot ())); + QObject::connect (le, SIGNAL (editingFinished ()), &m_s2s_parameter_changed_slot, SLOT (trigger ())); } break; @@ -426,7 +426,7 @@ PCellParametersPage::build_widgets (QFrame *container) inner_grid->addWidget (f, row, 2); m_all_widgets.back ().push_back (f); - connect (ly, SIGNAL (activated (int)), this, SLOT (parameter_changed_slot ())); + QObject::connect (ly, SIGNAL (activated (int)), &m_s2s_parameter_changed_slot, SLOT (trigger ())); } break; @@ -442,7 +442,7 @@ PCellParametersPage::build_widgets (QFrame *container) inner_grid->addWidget (cbx, row, 2); m_all_widgets.back ().push_back (cbx); - connect (cbx, SIGNAL (stateChanged (int)), this, SLOT (parameter_changed_slot ())); + QObject::connect (cbx, SIGNAL (stateChanged (int)), &m_s2s_parameter_changed_slot, SLOT (trigger ())); } break; @@ -477,7 +477,7 @@ PCellParametersPage::build_widgets (QFrame *container) } } - connect (cb, SIGNAL (activated (int)), this, SLOT (parameter_changed_slot ())); + QObject::connect (cb, SIGNAL (activated (int)), &m_s2s_parameter_changed_slot, SLOT (trigger ())); m_widgets.push_back (cb); @@ -500,7 +500,7 @@ PCellParametersPage::build_widgets (QFrame *container) } void -PCellParametersPage::parameter_changed_slot () +PCellParametersPage::parameter_changed_slot (QObject *sender) { if (! pcell_decl ()) { return; @@ -509,7 +509,7 @@ PCellParametersPage::parameter_changed_slot () const std::vector &pcp = pcell_decl ()->parameter_declarations (); const db::PCellParameterDeclaration *pd = 0; for (auto w = m_widgets.begin (); w != m_widgets.end (); ++w) { - if (*w == sender ()) { + if (*w == sender) { pd = &pcp [w - m_widgets.begin ()]; break; } diff --git a/src/edt/edt/edtPCellParametersPage.h b/src/edt/edt/edtPCellParametersPage.h index cf26da0a5..3474ed335 100644 --- a/src/edt/edt/edtPCellParametersPage.h +++ b/src/edt/edt/edtPCellParametersPage.h @@ -36,8 +36,6 @@ namespace edt class PCellParametersPage : public PCellParametersPageBase { -Q_OBJECT - public: /** * @brief Constructor @@ -50,14 +48,15 @@ protected: virtual void apply_states (const db::ParameterStates &states); virtual void apply_values (const db::ParameterStates &states); -private slots: - void parameter_changed_slot (); +private: + void parameter_changed_slot (QObject *sender); private: std::vector mp_groups; std::vector m_widgets; std::vector m_icon_widgets; std::vector > m_all_widgets; + SignalToEventAddSender m_s2s_parameter_changed_slot; }; } diff --git a/src/edt/edt/edtPCellParametersPageBase.h b/src/edt/edt/edtPCellParametersPageBase.h index b9f2aa31e..e473c3154 100644 --- a/src/edt/edt/edtPCellParametersPageBase.h +++ b/src/edt/edt/edtPCellParametersPageBase.h @@ -106,6 +106,24 @@ private: int m_v; }; +/** + * @brief A helper object to translate between a (parameterless) Qt signal and an event with a single int argument + * + * TODO: this is generic, move it somewhere else + */ +class SignalToEventAddSender + : public QObject +{ +Q_OBJECT +public: + SignalToEventAddSender () : QObject () { } + + tl::event triggered; + +public slots: + void trigger () { triggered (sender ()); } +}; + /** * @brief A proxy for a PCell parameters editing page *