Use function objects for IRunConfigurationAspect::createConfigurationWidget

Change-Id: Ief70ed8fc2731ad21b00c74407ff4b659d705caf
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2016-04-21 19:07:07 +02:00
parent 0bef62481b
commit ae9fff17a1
9 changed files with 17 additions and 34 deletions

View File

@@ -215,6 +215,7 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(
{ {
setId("DebuggerAspect"); setId("DebuggerAspect");
setDisplayName(tr("Debugger settings")); setDisplayName(tr("Debugger settings"));
setRunConfigWidgetCreator([this] { return new Internal::DebuggerRunConfigWidget(this); });
} }
void DebuggerRunConfigurationAspect::setUseQmlDebugger(bool value) void DebuggerRunConfigurationAspect::setUseQmlDebugger(bool value)
@@ -335,9 +336,4 @@ DebuggerRunConfigurationAspect *DebuggerRunConfigurationAspect::create
return new DebuggerRunConfigurationAspect(runConfiguration); return new DebuggerRunConfigurationAspect(runConfiguration);
} }
RunConfigWidget *DebuggerRunConfigurationAspect::createConfigurationWidget()
{
return new Internal::DebuggerRunConfigWidget(this);
}
} // namespace Debugger } // namespace Debugger

View File

@@ -61,8 +61,6 @@ public:
void fromMap(const QVariantMap &map); void fromMap(const QVariantMap &map);
void toMap(QVariantMap &map) const; void toMap(QVariantMap &map) const;
ProjectExplorer::RunConfigWidget *createConfigurationWidget();
bool useCppDebugger() const; bool useCppDebugger() const;
void setUseCppDebugger(bool value); void setUseCppDebugger(bool value);
bool useQmlDebugger() const; bool useQmlDebugger() const;

View File

@@ -44,11 +44,7 @@ EnvironmentAspect::EnvironmentAspect(RunConfiguration *runConfig) :
{ {
setDisplayName(tr("Run Environment")); setDisplayName(tr("Run Environment"));
setId("EnvironmentAspect"); setId("EnvironmentAspect");
} setRunConfigWidgetCreator([this] { return new EnvironmentAspectWidget(this); });
RunConfigWidget *EnvironmentAspect::createConfigurationWidget()
{
return new EnvironmentAspectWidget(this);
} }
int EnvironmentAspect::baseEnvironmentBase() const int EnvironmentAspect::baseEnvironmentBase() const

View File

@@ -41,9 +41,6 @@ class PROJECTEXPLORER_EXPORT EnvironmentAspect : public IRunConfigurationAspect
Q_OBJECT Q_OBJECT
public: public:
// IRunConfigurationAspect:
RunConfigWidget *createConfigurationWidget() override;
virtual QList<int> possibleBaseEnvironments() const = 0; virtual QList<int> possibleBaseEnvironments() const = 0;
virtual QString baseEnvironmentDisplayName(int base) const = 0; virtual QString baseEnvironmentDisplayName(int base) const = 0;

View File

@@ -124,9 +124,9 @@ IRunConfigurationAspect::~IRunConfigurationAspect()
transferred to the caller. transferred to the caller.
*/ */
RunConfigWidget *IRunConfigurationAspect::createConfigurationWidget() RunConfigWidget *IRunConfigurationAspect::createConfigurationWidget() const
{ {
return nullptr; return m_runConfigWidgetCreator ? m_runConfigWidgetCreator() : nullptr;
} }
void IRunConfigurationAspect::setProjectSettings(ISettingsAspect *settings) void IRunConfigurationAspect::setProjectSettings(ISettingsAspect *settings)
@@ -161,6 +161,11 @@ void IRunConfigurationAspect::toMap(QVariantMap &map) const
map.insert(m_id.toString() + QLatin1String(".UseGlobalSettings"), m_useGlobalSettings); map.insert(m_id.toString() + QLatin1String(".UseGlobalSettings"), m_useGlobalSettings);
} }
void IRunConfigurationAspect::setRunConfigWidgetCreator(const RunConfigWidgetCreator &runConfigWidgetCreator)
{
m_runConfigWidgetCreator = runConfigWidgetCreator;
}
IRunConfigurationAspect *IRunConfigurationAspect::clone(RunConfiguration *runConfig) const IRunConfigurationAspect *IRunConfigurationAspect::clone(RunConfiguration *runConfig) const
{ {
IRunConfigurationAspect *other = create(runConfig); IRunConfigurationAspect *other = create(runConfig);

View File

@@ -36,12 +36,9 @@
#include <QPointer> #include <QPointer>
#include <QWidget> #include <QWidget>
#include <functional>
#include <memory> #include <memory>
QT_BEGIN_NAMESPACE
class QFormLayout;
QT_END_NAMESPACE
namespace Utils { class OutputFormatter; } namespace Utils { class OutputFormatter; }
namespace ProjectExplorer { namespace ProjectExplorer {
@@ -121,7 +118,10 @@ public:
virtual IRunConfigurationAspect *create(RunConfiguration *runConfig) const = 0; virtual IRunConfigurationAspect *create(RunConfiguration *runConfig) const = 0;
virtual IRunConfigurationAspect *clone(RunConfiguration *runConfig) const; virtual IRunConfigurationAspect *clone(RunConfiguration *runConfig) const;
virtual RunConfigWidget *createConfigurationWidget();
using RunConfigWidgetCreator = std::function<RunConfigWidget *()>;
void setRunConfigWidgetCreator(const RunConfigWidgetCreator &runConfigWidgetCreator);
RunConfigWidget *createConfigurationWidget() const;
void setId(Core::Id id) { m_id = id; } void setId(Core::Id id) { m_id = id; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; } void setDisplayName(const QString &displayName) { m_displayName = displayName; }
@@ -151,6 +151,7 @@ private:
RunConfiguration *m_runConfiguration = nullptr; RunConfiguration *m_runConfiguration = nullptr;
ISettingsAspect *m_projectSettings = nullptr; // Owned if present. ISettingsAspect *m_projectSettings = nullptr; // Owned if present.
ISettingsAspect *m_globalSettings = nullptr; // Not owned. ISettingsAspect *m_globalSettings = nullptr; // Not owned.
RunConfigWidgetCreator m_runConfigWidgetCreator;
}; };
class PROJECTEXPLORER_EXPORT ClonableConcept class PROJECTEXPLORER_EXPORT ClonableConcept

View File

@@ -43,6 +43,7 @@ QmlProfilerRunConfigurationAspect::QmlProfilerRunConfigurationAspect(
setDisplayName(QCoreApplication::translate("QmlProfilerRunConfiguration", "QML Profiler Settings")); setDisplayName(QCoreApplication::translate("QmlProfilerRunConfiguration", "QML Profiler Settings"));
setUsingGlobalSettings(true); setUsingGlobalSettings(true);
resetProjectToGlobalSettings(); resetProjectToGlobalSettings();
setRunConfigWidgetCreator([this] { return new Debugger::AnalyzerRunConfigWidget(this); });
} }
ProjectExplorer::IRunConfigurationAspect *QmlProfilerRunConfigurationAspect::create( ProjectExplorer::IRunConfigurationAspect *QmlProfilerRunConfigurationAspect::create(
@@ -51,10 +52,5 @@ ProjectExplorer::IRunConfigurationAspect *QmlProfilerRunConfigurationAspect::cre
return new QmlProfilerRunConfigurationAspect(runConfig); return new QmlProfilerRunConfigurationAspect(runConfig);
} }
ProjectExplorer::RunConfigWidget *QmlProfilerRunConfigurationAspect::createConfigurationWidget()
{
return new Debugger::AnalyzerRunConfigWidget(this);
}
} // Internal } // Internal
} // QmlProfiler } // QmlProfiler

View File

@@ -37,8 +37,6 @@ public:
ProjectExplorer::IRunConfigurationAspect *create( ProjectExplorer::IRunConfigurationAspect *create(
ProjectExplorer::RunConfiguration *runConfig) const; ProjectExplorer::RunConfiguration *runConfig) const;
ProjectExplorer::RunConfigWidget *createConfigurationWidget();
}; };
} // Internal } // Internal

View File

@@ -71,17 +71,13 @@ public:
setDisplayName(QCoreApplication::translate("Valgrind::Internal::ValgrindRunConfigurationAspect", "Valgrind Settings")); setDisplayName(QCoreApplication::translate("Valgrind::Internal::ValgrindRunConfigurationAspect", "Valgrind Settings"));
setUsingGlobalSettings(true); setUsingGlobalSettings(true);
resetProjectToGlobalSettings(); resetProjectToGlobalSettings();
setRunConfigWidgetCreator([this] { return new AnalyzerRunConfigWidget(this); });
} }
ValgrindRunConfigurationAspect *create(RunConfiguration *parent) const override ValgrindRunConfigurationAspect *create(RunConfiguration *parent) const override
{ {
return new ValgrindRunConfigurationAspect(parent); return new ValgrindRunConfigurationAspect(parent);
} }
RunConfigWidget *createConfigurationWidget() override
{
return new AnalyzerRunConfigWidget(this);
}
}; };
IRunConfigurationAspect *ValgrindRunControlFactory::createRunConfigurationAspect(RunConfiguration *rc) IRunConfigurationAspect *ValgrindRunControlFactory::createRunConfigurationAspect(RunConfiguration *rc)