diff --git a/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.cpp index 0a6e76e0386..bce173282cc 100644 --- a/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.cpp @@ -69,6 +69,7 @@ EBlinkGdbServerProvider::EBlinkGdbServerProvider() setChannel("127.0.0.1", 2331); setSettingsKeyBase("BareMetal.EBlinkGdbServerProvider"); setTypeDisplayName(EBlinkGdbServerProviderFactory::tr("EBlink")); + setConfigurationWidgetCreator([this] { return new EBlinkGdbServerProviderConfigWidget(this); }); } QString EBlinkGdbServerProvider::defaultInitCommands() @@ -227,11 +228,6 @@ bool EBlinkGdbServerProvider::operator==(const IDebugServerProvider &other) cons && m_gdbNotUseCache == p->m_gdbNotUseCache; } -GdbServerProviderConfigWidget *EBlinkGdbServerProvider::configurationWidget() -{ - return new EBlinkGdbServerProviderConfigWidget(this); -} - // EBlinkGdbServerProviderFactory EBlinkGdbServerProviderFactory::EBlinkGdbServerProviderFactory() diff --git a/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.h index 33a708e6200..ddc55b03255 100644 --- a/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/eblinkgdbserverprovider.h @@ -49,8 +49,6 @@ public: bool operator==(const IDebugServerProvider &other) const final; - GdbServerProviderConfigWidget *configurationWidget() final; - QString channelString() const final; Utils::CommandLine command() const final; diff --git a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp index 5f289d262a4..78c94def6f2 100644 --- a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.cpp @@ -65,6 +65,7 @@ JLinkGdbServerProvider::JLinkGdbServerProvider() setChannel("localhost", 2331); setSettingsKeyBase("BareMetal.JLinkGdbServerProvider"); setTypeDisplayName(JLinkGdbServerProviderFactory::tr("JLink")); + setConfigurationWidgetCreator([this] { return new JLinkGdbServerProviderConfigWidget(this); }); } QString JLinkGdbServerProvider::defaultInitCommands() @@ -179,11 +180,6 @@ bool JLinkGdbServerProvider::operator==(const IDebugServerProvider &other) const && m_additionalArguments == p->m_additionalArguments; } -GdbServerProviderConfigWidget *JLinkGdbServerProvider::configurationWidget() -{ - return new JLinkGdbServerProviderConfigWidget(this); -} - // JLinkGdbServerProviderFactory JLinkGdbServerProviderFactory::JLinkGdbServerProviderFactory() diff --git a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h index c8936315b3c..ba0c86e25cc 100644 --- a/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/jlinkgdbserverprovider.h @@ -46,8 +46,6 @@ public: bool operator==(const IDebugServerProvider &other) const final; - GdbServerProviderConfigWidget *configurationWidget() final; - QString channelString() const final; Utils::CommandLine command() const final; diff --git a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp index 48e2c59c2bc..1d84b6a1818 100644 --- a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.cpp @@ -60,6 +60,7 @@ OpenOcdGdbServerProvider::OpenOcdGdbServerProvider() setChannel("localhost", 3333); setSettingsKeyBase("BareMetal.OpenOcdGdbServerProvider"); setTypeDisplayName(OpenOcdGdbServerProviderFactory::tr("OpenOCD")); + setConfigurationWidgetCreator([this] { return new OpenOcdGdbServerProviderConfigWidget(this); }); } QString OpenOcdGdbServerProvider::defaultInitCommands() @@ -182,11 +183,6 @@ bool OpenOcdGdbServerProvider::operator==(const IDebugServerProvider &other) con && m_additionalArguments == p->m_additionalArguments; } -GdbServerProviderConfigWidget *OpenOcdGdbServerProvider::configurationWidget() -{ - return new OpenOcdGdbServerProviderConfigWidget(this); -} - // OpenOcdGdbServerProviderFactory OpenOcdGdbServerProviderFactory::OpenOcdGdbServerProviderFactory() diff --git a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h index 4ea11e1046a..6bd5a16cdc4 100644 --- a/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/openocdgdbserverprovider.h @@ -46,8 +46,6 @@ public: bool operator==(const IDebugServerProvider &other) const final; - GdbServerProviderConfigWidget *configurationWidget() final; - QString channelString() const final; Utils::CommandLine command() const final; diff --git a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp index 347f0801da4..95fa2ed1e57 100644 --- a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp +++ b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.cpp @@ -61,6 +61,7 @@ StLinkUtilGdbServerProvider::StLinkUtilGdbServerProvider() setChannel("localhost", 4242); setSettingsKeyBase("BareMetal.StLinkUtilGdbServerProvider"); setTypeDisplayName(StLinkUtilGdbServerProviderFactory::tr("ST-LINK Utility")); + setConfigurationWidgetCreator([this] { return new StLinkUtilGdbServerProviderConfigWidget(this); }); } QString StLinkUtilGdbServerProvider::defaultInitCommands() @@ -168,11 +169,6 @@ bool StLinkUtilGdbServerProvider::operator==(const IDebugServerProvider &other) && m_transport == p->m_transport; } -GdbServerProviderConfigWidget *StLinkUtilGdbServerProvider::configurationWidget() -{ - return new StLinkUtilGdbServerProviderConfigWidget(this); -} - // StLinkUtilGdbServerProviderFactory StLinkUtilGdbServerProviderFactory::StLinkUtilGdbServerProviderFactory() diff --git a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h index e48116fcc73..2215b8c9f5b 100644 --- a/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h +++ b/src/plugins/baremetal/debugservers/gdb/stlinkutilgdbserverprovider.h @@ -49,8 +49,6 @@ public: bool operator==(const IDebugServerProvider &other) const final; - GdbServerProviderConfigWidget *configurationWidget() final; - QString channelString() const final; Utils::CommandLine command() const final; diff --git a/src/plugins/baremetal/idebugserverprovider.cpp b/src/plugins/baremetal/idebugserverprovider.cpp index 1788f8df705..b092de9049d 100644 --- a/src/plugins/baremetal/idebugserverprovider.cpp +++ b/src/plugins/baremetal/idebugserverprovider.cpp @@ -155,6 +155,12 @@ bool IDebugServerProvider::operator==(const IDebugServerProvider &other) const && m_channel == other.m_channel; } +IDebugServerProviderConfigWidget *IDebugServerProvider::configurationWidget() const +{ + QTC_ASSERT(m_configurationWidgetCreator, return nullptr); + return m_configurationWidgetCreator(); +} + QVariantMap IDebugServerProvider::toMap() const { return { @@ -197,6 +203,11 @@ bool IDebugServerProvider::fromMap(const QVariantMap &data) return true; } +void IDebugServerProvider::setConfigurationWidgetCreator(const std::function &configurationWidgetCreator) +{ + m_configurationWidgetCreator = configurationWidgetCreator; +} + // IDebugServerProviderFactory QString IDebugServerProviderFactory::id() const diff --git a/src/plugins/baremetal/idebugserverprovider.h b/src/plugins/baremetal/idebugserverprovider.h index 34167772964..f52aa34699f 100644 --- a/src/plugins/baremetal/idebugserverprovider.h +++ b/src/plugins/baremetal/idebugserverprovider.h @@ -84,7 +84,9 @@ public: virtual bool operator==(const IDebugServerProvider &other) const; - virtual IDebugServerProviderConfigWidget *configurationWidget() = 0; + IDebugServerProviderConfigWidget *configurationWidget() const; + void setConfigurationWidgetCreator + (const std::function &configurationWidgetCreator); virtual QVariantMap toMap() const; virtual bool fromMap(const QVariantMap &data); @@ -114,6 +116,7 @@ protected: QUrl m_channel; Debugger::DebuggerEngineType m_engineType = Debugger::NoEngineType; QSet m_devices; + std::function m_configurationWidgetCreator; friend class DebugServerProvidersSettingsWidget; friend class IDebugServerProviderConfigWidget;