diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 10b279db10110954aa1f8a33f07cee19897f7a6c..42e08f5297d255913c8d98ecaf31f764b254eb5e 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -890,7 +890,7 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu if (runConfiguration->debuggerAspect()->useCppDebugger()) sp.languages |= CppLanguage; - if (runConfiguration->useQmlDebugger()) { + if (runConfiguration->debuggerAspect()->useQmlDebugger()) { sp.qmlServerAddress = _("127.0.0.1"); sp.qmlServerPort = runConfiguration->debuggerAspect()->qmlDebugServerPort(); sp.languages |= QmlLanguage; diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index a23357fe55840cd7f2344a300b99f38533d64adc..971892bbf4e6c096a83310b48338a1061a3bb4d8 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -198,7 +198,8 @@ bool ProcessHandle::equals(const ProcessHandle &rhs) const \class ProjectExplorer::DebuggerProjectSettings */ -DebuggerProjectSettings::DebuggerProjectSettings() : +DebuggerProjectSettings::DebuggerProjectSettings(RunConfiguration *rc) : + m_runConfiguration(rc), m_useCppDebugger(true), m_useQmlDebugger(AutoEnableQmlDebugger), m_qmlDebugServerPort(Constants::QML_DEFAULT_DEBUG_SERVER_PORT), @@ -206,11 +207,17 @@ DebuggerProjectSettings::DebuggerProjectSettings() : {} DebuggerProjectSettings::DebuggerProjectSettings(DebuggerProjectSettings *other) : + m_runConfiguration(other->m_runConfiguration), m_useCppDebugger(other->m_useCppDebugger), m_useQmlDebugger(other->m_useQmlDebugger), m_qmlDebugServerPort(other->m_qmlDebugServerPort) {} +RunConfiguration *DebuggerProjectSettings::runConfiguration() +{ + return m_runConfiguration; +} + void DebuggerProjectSettings::setUseQmlDebugger(bool value) { m_useQmlDebugger = value ? EnableQmlDebugger : DisableQmlDebugger; @@ -235,22 +242,21 @@ static bool isQtQuickAppProject(Project *project) return project->files(Project::ExcludeGeneratedFiles).contains(filePath); } -DebuggerProjectSettings::QmlDebuggerStatus DebuggerProjectSettings::useQmlDebugger() const +bool DebuggerProjectSettings::useQmlDebugger() const { - return m_useQmlDebugger; + if (m_useQmlDebugger == DebuggerProjectSettings::AutoEnableQmlDebugger) + return isQtQuickAppProject(m_runConfiguration->target()->project()); + return m_useQmlDebugger == DebuggerProjectSettings::EnableQmlDebugger; } -bool RunConfiguration::useQmlDebugger() const +uint DebuggerProjectSettings::qmlDebugServerPort() const { - DebuggerProjectSettings::QmlDebuggerStatus s = m_debuggerAspect->useQmlDebugger(); - if (s == DebuggerProjectSettings::AutoEnableQmlDebugger) - return isQtQuickAppProject(target()->project()); - return s == DebuggerProjectSettings::EnableQmlDebugger; + return m_qmlDebugServerPort; } -uint DebuggerProjectSettings::qmlDebugServerPort() const +void DebuggerProjectSettings::setQmllDebugServerPort(uint port) { - return m_qmlDebugServerPort; + m_qmlDebugServerPort = port; } void DebuggerProjectSettings::suppressQmlDebuggingOptions() @@ -306,7 +312,7 @@ void DebuggerProjectSettings::fromMap(const QVariantMap &map) RunConfiguration::RunConfiguration(Target *target, const QString &id) : ProjectConfiguration(target, id), - m_debuggerAspect(new DebuggerProjectSettings) + m_debuggerAspect(new DebuggerProjectSettings(this)) { Q_ASSERT(target); addExtraAspects(); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index cfbadbaba3efa855af8b4d53106c8bf4c8103c04..8d53c1fa3f2f047f9c212749d052f1f81a2c36b3 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -45,14 +45,14 @@ QT_FORWARD_DECLARE_CLASS(QIcon) -namespace Utils { -class OutputFormatter; -} +namespace Utils { class OutputFormatter; } +namespace Debugger { namespace Internal { class DebuggerRunConfigWidget; } } namespace ProjectExplorer { class Abi; class BuildConfiguration; -class IRunConfigurationAspect; +class DebuggerProjectSettings; +class RunConfiguration; class RunControl; class Target; @@ -93,7 +93,7 @@ class PROJECTEXPLORER_EXPORT DebuggerProjectSettings Q_OBJECT public: - DebuggerProjectSettings(); + DebuggerProjectSettings(RunConfiguration *runConfiguration); DebuggerProjectSettings(DebuggerProjectSettings *other); enum QmlDebuggerStatus { @@ -110,15 +110,20 @@ public: void setUseQmlDebugger(bool value); void setUseCppDebugger(bool value); bool useCppDebugger() const; - QmlDebuggerStatus useQmlDebugger() const; + bool useQmlDebugger() const; uint qmlDebugServerPort() const; + void setQmllDebugServerPort(uint port); void suppressQmlDebuggingOptions(); bool areQmlDebuggingOptionsSuppressed() const; + RunConfiguration *runConfiguration(); signals: void debuggersChanged(); -public: +private: + friend class RunConfiguration; + friend class Debugger::Internal::DebuggerRunConfigWidget; + RunConfiguration *m_runConfiguration; bool m_useCppDebugger; QmlDebuggerStatus m_useQmlDebugger; uint m_qmlDebugServerPort; @@ -126,7 +131,6 @@ public: }; - // Documentation inside. class PROJECTEXPLORER_EXPORT RunConfiguration : public ProjectConfiguration { @@ -162,7 +166,6 @@ public: } virtual ProjectExplorer::Abi abi() const; - bool useQmlDebugger() const; signals: void isEnabledChanged(bool value); diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp index a88320d22cdb7a56eb968bfd8a03b4fae5e6f05b..393540489220424f4a7470cf184025e430525504 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp @@ -216,7 +216,7 @@ RunControl *QmlProjectRunControlFactory::createDebugRunControl(QmlProjectRunConf params.displayName = runConfig->displayName(); params.projectSourceDirectory = runConfig->target()->project()->projectDirectory(); params.projectSourceFiles = runConfig->target()->project()->files(Project::ExcludeGeneratedFiles); - if (runConfig->useQmlDebugger()) + if (runConfig->debuggerAspect()->useQmlDebugger()) params.languages |= Debugger::QmlLanguage; if (runConfig->debuggerAspect()->useCppDebugger()) params.languages |= Debugger::CppLanguage; diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp index eda2b8b7b607809e26b50aa9e1238ea7c09138b5..f7d5d95bb6b07145efa049d0ed85447c2bb213e2 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp @@ -84,7 +84,7 @@ static Debugger::DebuggerStartParameters s60DebuggerStartParams(const S60DeviceR sp.remoteChannel = activeDeployConf->serialPortName(); sp.processArgs = rc->commandLineArguments(); - if (rc->useQmlDebugger() && !rc->debuggerAspect()->useCppDebugger()) { + if (rc->debuggerAspect()->useQmlDebugger() && !rc->debuggerAspect()->useCppDebugger()) { sp.requestRemoteSetup = true; sp.startMode = Debugger::AttachToRemoteServer; } else { @@ -99,7 +99,7 @@ static Debugger::DebuggerStartParameters s60DebuggerStartParams(const S60DeviceR sp.displayName = rc->displayName(); sp.qmlServerAddress = activeDeployConf->deviceAddress(); sp.qmlServerPort = rc->debuggerAspect()->qmlDebugServerPort(); - if (rc->useQmlDebugger()) { + if (rc->debuggerAspect()->useQmlDebugger()) { sp.languages |= Debugger::QmlLanguage; QString qmlArgs = rc->qmlCommandLineArguments(); if (sp.processArgs.length()) @@ -162,7 +162,7 @@ bool S60DeviceDebugRunControl::promptToStop(bool *) const void S60DeviceDebugRunControl::remoteSetupRequested() { // This is called from Engine->setupInferior(), ie InferiorSetupRequested state - QTC_ASSERT(runConfiguration()->useQmlDebugger() && !runConfiguration()->debuggerAspect()->useCppDebugger(), return); + QTC_CHECK(runConfiguration()->debuggerAspect()->useQmlDebugger() && !runConfiguration()->debuggerAspect()->useCppDebugger()); m_codaRunControl = new CodaRunControl(runConfiguration(), DebugRunMode); connect(m_codaRunControl, SIGNAL(connected()), this, SLOT(codaConnected())); connect(m_codaRunControl, SIGNAL(finished()), this, SLOT(codaFinished())); diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp index 68e487f347702951162fe1e3c78672b65dc29454..54bf0c2164f8851f5c7ba30bb2e18d768aa53732 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -286,7 +286,7 @@ void S60DeviceRunConfiguration::setCommandLineArguments(const QString &args) QString S60DeviceRunConfiguration::qmlCommandLineArguments() const { QString args; - if (useQmlDebugger()) { + if (debuggerAspect()->useQmlDebugger()) { const S60DeployConfiguration *activeDeployConf = qobject_cast<S60DeployConfiguration *>(qt4Target()->activeDeployConfiguration()); QTC_ASSERT(activeDeployConf, return args); diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index d108a1619bb0d9d9d852f3721571968c6bffa4dc..c24fcdf657847d06bd9f3f65464da4f20cc4f840 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -63,7 +63,7 @@ public: AbstractRemoteLinuxDebugSupportPrivate(RemoteLinuxRunConfiguration *runConfig, DebuggerEngine *engine) : engine(engine), deviceConfig(runConfig->deviceConfig()), - qmlDebugging(runConfig->useQmlDebugger()), + qmlDebugging(runConfig->debuggerAspect()->useQmlDebugger()), cppDebugging(runConfig->debuggerAspect()->useCppDebugger()), state(Inactive), gdbServerPort(-1), qmlPort(-1) @@ -96,7 +96,7 @@ DebuggerStartParameters AbstractRemoteLinuxDebugSupport::startParameters(const R { DebuggerStartParameters params; const LinuxDeviceConfiguration::ConstPtr &devConf = runConfig->deviceConfig(); - if (runConfig->useQmlDebugger()) { + if (runConfig->debuggerAspect()->useQmlDebugger()) { params.languages |= QmlLanguage; params.qmlServerAddress = runConfig->deviceConfig()->sshParameters().host; params.qmlServerPort = 0; // port is selected later on diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp index 08a76caa2dfc8f2687411525ef612d2d68aa0e84..85fd1f89f21b8224b2786794a050b39dc9a5a248 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp @@ -361,7 +361,7 @@ QString RemoteLinuxRunConfiguration::alternateRemoteExecutable() const int RemoteLinuxRunConfiguration::portsUsedByDebuggers() const { int ports = 0; - if (useQmlDebugger()) + if (debuggerAspect()->useQmlDebugger()) ++ports; if (debuggerAspect()->useCppDebugger()) ++ports;