diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 392b02cabd32aac8fa56680cfa9a1f4ccb94d019..10b279db10110954aa1f8a33f07cee19897f7a6c 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -158,33 +158,22 @@ static inline QString msgEngineNotAvailable(DebuggerEngineType et) // //////////////////////////////////////////////////////////////////////// -class DebuggerLanguageChooser : public QWidget +class DebuggerRunConfigWidget : public ProjectExplorer::RunConfigWidget { Q_OBJECT public: - explicit DebuggerLanguageChooser(QWidget *parent = 0); - - bool cppChecked() const; - bool qmlChecked() const; - uint qmlDebugServerPort() const; - - void setCppChecked(bool value); - void setQmlChecked(bool value); - void setQmlDebugServerPort(uint port); - -signals: - void cppLanguageToggled(bool value); - void qmlLanguageToggled(bool value); - void qmlDebugServerPortChanged(uint port); - void openHelpUrl(const QString &url); + explicit DebuggerRunConfigWidget(RunConfiguration *runConfiguration); + QString displayName() const { return tr("Debugger Settings"); } private slots: void useCppDebuggerToggled(bool toggled); void useQmlDebuggerToggled(bool toggled); - void onDebugServerPortChanged(int port); + void qmlDebugServerPortChanged(int port); + +public: + DebuggerProjectSettings *m_settings; // not owned -private: QCheckBox *m_useCppDebugger; QCheckBox *m_useQmlDebugger; QSpinBox *m_debugServerPort; @@ -192,36 +181,42 @@ private: QLabel *m_qmlDebuggerInfoLabel; }; -DebuggerLanguageChooser::DebuggerLanguageChooser(QWidget *parent) - : QWidget(parent) +DebuggerRunConfigWidget::DebuggerRunConfigWidget(RunConfiguration *runConfiguration) { - m_useCppDebugger = new QCheckBox(tr("C++"), this); - m_useQmlDebugger = new QCheckBox(tr("QML"), this); + m_settings = runConfiguration->debuggerAspect(); - connect(m_useCppDebugger, SIGNAL(toggled(bool)), - this, SLOT(useCppDebuggerToggled(bool))); - connect(m_useQmlDebugger, SIGNAL(toggled(bool)), - this, SLOT(useQmlDebuggerToggled(bool))); + m_useCppDebugger = new QCheckBox(tr("Enable C++"), this); + m_useQmlDebugger = new QCheckBox(tr("Enable QML"), this); - m_debugServerPortLabel = new QLabel(tr("Debug port:"), this); m_debugServerPort = new QSpinBox(this); m_debugServerPort->setMinimum(1); m_debugServerPort->setMaximum(65535); + m_debugServerPortLabel = new QLabel(tr("Debug port:"), this); m_debugServerPortLabel->setBuddy(m_debugServerPort); m_qmlDebuggerInfoLabel = new QLabel(tr("<a href=\"" "qthelp://com.nokia.qtcreator/doc/creator-debugging-qml.html" "\">What are the prerequisites?</a>")); + useCppDebuggerToggled(m_settings->useCppDebugger()); + useQmlDebuggerToggled(m_settings->useQmlDebugger()); + m_debugServerPort->setValue(m_settings->qmlDebugServerPort()); + connect(m_qmlDebuggerInfoLabel, SIGNAL(linkActivated(QString)), - this, SIGNAL(openHelpUrl(QString))); - connect(m_useQmlDebugger, SIGNAL(toggled(bool)), - m_debugServerPort, SLOT(setEnabled(bool))); + Core::HelpManager::instance(), SLOT(handleHelpRequest(QString))); connect(m_useQmlDebugger, SIGNAL(toggled(bool)), - m_debugServerPortLabel, SLOT(setEnabled(bool))); + SLOT(useQmlDebuggerToggled(bool))); + connect(m_useCppDebugger, SIGNAL(toggled(bool)), + SLOT(useCppDebuggerToggled(bool))); connect(m_debugServerPort, SIGNAL(valueChanged(int)), - this, SLOT(onDebugServerPortChanged(int))); + SLOT(qmlDebugServerPortChanged(int))); + + if (m_settings->areQmlDebuggingOptionsSuppressed()) { + m_debugServerPortLabel->hide(); + m_debugServerPort->hide(); + m_useQmlDebugger->hide(); + } QHBoxLayout *qmlLayout = new QHBoxLayout; qmlLayout->setMargin(0); @@ -235,120 +230,33 @@ DebuggerLanguageChooser::DebuggerLanguageChooser(QWidget *parent) layout->setMargin(0); layout->addWidget(m_useCppDebugger); layout->addLayout(qmlLayout); - setLayout(layout); } -bool DebuggerLanguageChooser::cppChecked() const -{ - return m_useCppDebugger->isChecked(); -} - -bool DebuggerLanguageChooser::qmlChecked() const -{ - return m_useQmlDebugger->isChecked(); -} - -uint DebuggerLanguageChooser::qmlDebugServerPort() const +void DebuggerRunConfigWidget::qmlDebugServerPortChanged(int port) { - return m_debugServerPort->value(); + m_settings->m_qmlDebugServerPort = port; } -void DebuggerLanguageChooser::setCppChecked(bool value) +void DebuggerRunConfigWidget::useCppDebuggerToggled(bool toggled) { - m_useCppDebugger->setChecked(value); -} - -void DebuggerLanguageChooser::setQmlChecked(bool value) -{ - m_useQmlDebugger->setChecked(value); - m_debugServerPortLabel->setEnabled(value); - m_debugServerPort->setEnabled(value); -} - -void DebuggerLanguageChooser::setQmlDebugServerPort(uint port) -{ - m_debugServerPort->setValue(port); -} - -void DebuggerLanguageChooser::useCppDebuggerToggled(bool toggled) -{ - emit cppLanguageToggled(toggled); + m_settings->m_useCppDebugger = toggled; if (!toggled && !m_useQmlDebugger->isChecked()) m_useQmlDebugger->setChecked(true); } -void DebuggerLanguageChooser::useQmlDebuggerToggled(bool toggled) +void DebuggerRunConfigWidget::useQmlDebuggerToggled(bool toggled) { - emit qmlLanguageToggled(toggled); + m_debugServerPort->setEnabled(toggled); + m_debugServerPortLabel->setEnabled(toggled); + + m_settings->m_useQmlDebugger = toggled + ? DebuggerProjectSettings::EnableQmlDebugger + : DebuggerProjectSettings::DisableQmlDebugger; if (!toggled && !m_useCppDebugger->isChecked()) m_useCppDebugger->setChecked(true); } -void DebuggerLanguageChooser::onDebugServerPortChanged(int port) -{ - emit qmlDebugServerPortChanged((uint)port); -} - -class DebuggerRunConfigWidget : public ProjectExplorer::RunConfigWidget -{ - Q_OBJECT - -public: - explicit DebuggerRunConfigWidget(RunConfiguration *runConfiguration) - { - m_settings = runConfiguration->debuggerAspect(); - - QLabel *debuggerLabel = new QLabel(tr("Languages:"), this); - debuggerLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::MinimumExpanding); - - m_debuggerLanguageChooser = new DebuggerLanguageChooser(this); - m_debuggerLanguageChooser->setCppChecked(m_settings->useCppDebugger()); - m_debuggerLanguageChooser->setQmlChecked(runConfiguration->useQmlDebugger()); - m_debuggerLanguageChooser->setQmlDebugServerPort(m_settings->qmlDebugServerPort()); - - QFormLayout *layout = new QFormLayout(this); - layout->addRow(debuggerLabel, m_debuggerLanguageChooser); - setLayout(layout); - - connect(m_debuggerLanguageChooser, SIGNAL(cppLanguageToggled(bool)), - this, SLOT(useCppDebuggerToggled(bool))); - connect(m_debuggerLanguageChooser, SIGNAL(qmlLanguageToggled(bool)), - this, SLOT(useQmlDebuggerToggled(bool))); - connect(m_debuggerLanguageChooser, SIGNAL(qmlDebugServerPortChanged(uint)), - this, SLOT(qmlDebugServerPortChanged(uint))); - connect(m_debuggerLanguageChooser, SIGNAL(openHelpUrl(QString)), - Core::HelpManager::instance(), SLOT(handleHelpRequest(QString))); - } - - QString displayName() const - { - return tr("Debugger Settings"); - } - -public slots: - void useCppDebuggerToggled(bool toggled) - { - m_settings->m_useCppDebugger = toggled; - } - - void useQmlDebuggerToggled(bool toggled) - { - m_settings->m_useQmlDebugger = toggled - ? DebuggerProjectSettings::EnableQmlDebugger - : DebuggerProjectSettings::DisableQmlDebugger; - } - - void qmlDebugServerPortChanged(uint port) - { - m_settings->m_qmlDebugServerPort = port; - } - -public: - DebuggerProjectSettings *m_settings; // not owned - DebuggerLanguageChooser *m_debuggerLanguageChooser; // owned -}; - //////////////////////////////////////////////////////////////////////// // // DebuggerRunControlPrivate diff --git a/src/plugins/madde/maemorunconfiguration.cpp b/src/plugins/madde/maemorunconfiguration.cpp index 5db5e2a37419e0a61ee59d5e88398fea6de2d787..d30c0c403904156ae347b0c06e2ab326e9d94a64 100644 --- a/src/plugins/madde/maemorunconfiguration.cpp +++ b/src/plugins/madde/maemorunconfiguration.cpp @@ -80,7 +80,7 @@ void MaemoRunConfiguration::init() connect(m_remoteMounts, SIGNAL(modelReset()), SLOT(handleRemoteMountsChanged())); if (!maemoTarget()->allowsQmlDebugging()) - debuggerAspect()->setUseQmlDebugger(false); + debuggerAspect()->suppressQmlDebuggingOptions(); } bool MaemoRunConfiguration::isEnabled() const diff --git a/src/plugins/madde/maemorunconfigurationwidget.cpp b/src/plugins/madde/maemorunconfigurationwidget.cpp index 7ad3831ba9d57ef285263a362d0385e298bc7436..6e7548e26b26db3ca7c61640c46d54d1c6019223 100644 --- a/src/plugins/madde/maemorunconfigurationwidget.cpp +++ b/src/plugins/madde/maemorunconfigurationwidget.cpp @@ -91,8 +91,6 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( const AbstractQt4MaemoTarget * const maemoTarget = qobject_cast<AbstractQt4MaemoTarget *>(runConfiguration->target()); m_mountDetailsContainer->setVisible(maemoTarget->allowsRemoteMounts()); - if (!maemoTarget->allowsQmlDebugging()) - m_remoteLinuxRunConfigWidget->suppressQmlDebuggingOptions(); connect(m_runConfiguration, SIGNAL(isEnabledChanged(bool)), this, SLOT(runConfigurationEnabledChange(bool))); diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index ac25133be637a798c53f55140a44df64be285584..42bc90afa8b32d4da4511bcee8e113ab36864aaf 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -201,7 +201,8 @@ bool ProcessHandle::equals(const ProcessHandle &rhs) const DebuggerProjectSettings::DebuggerProjectSettings() : m_useCppDebugger(true), m_useQmlDebugger(AutoEnableQmlDebugger), - m_qmlDebugServerPort(Constants::QML_DEFAULT_DEBUG_SERVER_PORT) + m_qmlDebugServerPort(Constants::QML_DEFAULT_DEBUG_SERVER_PORT), + m_suppressQmlDebuggingOptions(false) {} DebuggerProjectSettings::DebuggerProjectSettings(DebuggerProjectSettings *other) : @@ -260,7 +261,12 @@ void DebuggerProjectSettings::setQmlDebugServerPort(uint port) void DebuggerProjectSettings::suppressQmlDebuggingOptions() { - m_useQmlDebugger = SuppressQmlDebugger; + m_suppressQmlDebuggingOptions = true; +} + +bool DebuggerProjectSettings::areQmlDebuggingOptionsSuppressed() const +{ + return m_suppressQmlDebuggingOptions; } QString DebuggerProjectSettings::displayName() const diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index efa40ed285592c628174431cf86587938cc27da2..aafd5385bb90319be141810bc02b574139aa6763 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -99,7 +99,6 @@ public: enum QmlDebuggerStatus { DisableQmlDebugger = 0, EnableQmlDebugger, - SuppressQmlDebugger, AutoEnableQmlDebugger }; @@ -115,6 +114,7 @@ public: uint qmlDebugServerPort() const; void setQmlDebugServerPort(uint port); void suppressQmlDebuggingOptions(); + bool areQmlDebuggingOptionsSuppressed() const; signals: void debuggersChanged(); @@ -124,6 +124,7 @@ public: bool m_useCppDebugger; QmlDebuggerStatus m_useQmlDebugger; uint m_qmlDebugServerPort; + bool m_suppressQmlDebuggingOptions; }; diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp index 2f8f3fab99d374d145aa4f2cdaf1ce5c5b661d9b..10bc98e89047843a8817304e4e56b301a147abe4 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp @@ -141,11 +141,6 @@ void RemoteLinuxRunConfigurationWidget::addDisabledLabel(QVBoxLayout *topLayout) topLayout->addLayout(hl); } -void RemoteLinuxRunConfigurationWidget::suppressQmlDebuggingOptions() -{ - d->runConfiguration->debuggerAspect()->suppressQmlDebuggingOptions(); -} - void RemoteLinuxRunConfigurationWidget::runConfigurationEnabledChange(bool enabled) { d->topWidget.setEnabled(enabled); diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h index 0731f67a9afe708ad1c07fab1f853debaee4952d..74c5a904204fdffd85a6579c96779da5bc59e030 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h +++ b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h @@ -60,7 +60,6 @@ public: void addFormLayoutRow(QWidget *label, QWidget *field); void addDisabledLabel(QVBoxLayout *topLayout); - void suppressQmlDebuggingOptions(); Q_SLOT void runConfigurationEnabledChange(bool enabled); private slots: