diff options
author | Tobias Hunger <tobias.hunger@theqtcompany.com> | 2015-03-06 15:13:21 +0100 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2015-03-13 09:33:26 +0000 |
commit | a053724c28d128a44b36d26eb1f3257b9046879a (patch) | |
tree | fc8eef48e05fd12c391149ec7058fdda33baa337 | |
parent | 9c5a56a38bc41a28e5a92ace243342ab0073207a (diff) | |
download | qt-creator-a053724c28d128a44b36d26eb1f3257b9046879a.tar.gz |
Debugger: Refresh list of debuggers in kits options page on changes
Task-number: QTCREATORBUG-13991
Change-Id: I06ff6daea88e14b4193e4f1a71d768b528d80bf9
Reviewed-by: hjk <hjk@theqtcompany.com>
6 files changed, 34 insertions, 44 deletions
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.cpp b/src/plugins/debugger/debuggerkitconfigwidget.cpp index bf6009867c..111f228d7d 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.cpp +++ b/src/plugins/debugger/debuggerkitconfigwidget.cpp @@ -69,14 +69,11 @@ namespace Internal { // ----------------------------------------------------------------------- DebuggerKitConfigWidget::DebuggerKitConfigWidget(Kit *workingCopy, const KitInformation *ki) - : KitConfigWidget(workingCopy, ki) + : KitConfigWidget(workingCopy, ki), + m_ignoreChanges(false) { m_comboBox = new QComboBox; m_comboBox->setEnabled(true); - m_comboBox->setToolTip(toolTip()); - m_comboBox->addItem(tr("None"), QString()); - foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) - m_comboBox->addItem(item.displayName(), item.id()); refresh(); connect(m_comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), @@ -112,8 +109,16 @@ void DebuggerKitConfigWidget::makeReadOnly() void DebuggerKitConfigWidget::refresh() { + m_ignoreChanges = true; + m_comboBox->clear(); + m_comboBox->setToolTip(toolTip()); + m_comboBox->addItem(tr("None"), QString()); + foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) + m_comboBox->addItem(item.displayName(), item.id()); + const DebuggerItem *item = DebuggerKitInformation::debugger(m_kit); updateComboBox(item ? item->id() : QVariant()); + m_ignoreChanges = false; } QWidget *DebuggerKitConfigWidget::buttonWidget() const @@ -134,6 +139,9 @@ void DebuggerKitConfigWidget::manageDebuggers() void DebuggerKitConfigWidget::currentDebuggerChanged(int) { + if (m_ignoreChanges) + return; + int currentIndex = m_comboBox->currentIndex(); QVariant id = m_comboBox->itemData(currentIndex); m_kit->setValue(DebuggerKitInformation::id(), id); diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h index cbe4e8b594..285ce87dc9 100644 --- a/src/plugins/debugger/debuggerkitconfigwidget.h +++ b/src/plugins/debugger/debuggerkitconfigwidget.h @@ -79,6 +79,7 @@ private: void updateComboBox(const QVariant &id); bool m_isReadOnly; + bool m_ignoreChanges; QComboBox *m_comboBox; QPushButton *m_manageButton; }; diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp index 1004c704c9..1d92e031f4 100644 --- a/src/plugins/projectexplorer/kitinformationconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitinformationconfigwidget.cpp @@ -126,31 +126,19 @@ void SysRootInformationConfigWidget::pathWasChanged() // -------------------------------------------------------------------------- ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, const KitInformation *ki) : - KitConfigWidget(k, ki) + KitConfigWidget(k, ki), + m_ignoreChanges(false) { m_comboBox = new QComboBox; m_comboBox->setEnabled(false); m_comboBox->setToolTip(toolTip()); - foreach (ToolChain *tc, ToolChainManager::toolChains()) - toolChainAdded(tc); - - updateComboBox(); - refresh(); connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentToolChainChanged(int))); m_manageButton = new QPushButton(KitConfigWidget::msgManage()); m_manageButton->setContentsMargins(0, 0, 0, 0); connect(m_manageButton, SIGNAL(clicked()), this, SLOT(manageToolChains())); - - QObject *tcm = ToolChainManager::instance(); - connect(tcm, SIGNAL(toolChainAdded(ProjectExplorer::ToolChain*)), - this, SLOT(toolChainAdded(ProjectExplorer::ToolChain*))); - connect(tcm, SIGNAL(toolChainRemoved(ProjectExplorer::ToolChain*)), - this, SLOT(toolChainRemoved(ProjectExplorer::ToolChain*))); - connect(tcm, SIGNAL(toolChainUpdated(ProjectExplorer::ToolChain*)), - this, SLOT(toolChainUpdated(ProjectExplorer::ToolChain*))); } ToolChainInformationConfigWidget::~ToolChainInformationConfigWidget() @@ -173,7 +161,13 @@ QString ToolChainInformationConfigWidget::toolTip() const void ToolChainInformationConfigWidget::refresh() { + m_ignoreChanges = true; + m_comboBox->clear(); + foreach (ToolChain *tc, ToolChainManager::toolChains()) + m_comboBox->addItem(tc->displayName(), tc->id()); + m_comboBox->setCurrentIndex(indexOf(ToolChainKitInformation::toolChain(m_kit))); + m_ignoreChanges = false; } void ToolChainInformationConfigWidget::makeReadOnly() @@ -191,28 +185,6 @@ QWidget *ToolChainInformationConfigWidget::buttonWidget() const return m_manageButton; } -void ToolChainInformationConfigWidget::toolChainAdded(ToolChain *tc) -{ - m_comboBox->addItem(tc->displayName(), tc->id()); - updateComboBox(); -} - -void ToolChainInformationConfigWidget::toolChainRemoved(ToolChain *tc) -{ - const int pos = indexOf(tc); - if (pos < 0) - return; - m_comboBox->removeItem(pos); - updateComboBox(); -} -void ToolChainInformationConfigWidget::toolChainUpdated(ToolChain *tc) -{ - const int pos = indexOf(tc); - if (pos < 0) - return; - m_comboBox->setItemText(pos, tc->displayName()); -} - void ToolChainInformationConfigWidget::manageToolChains() { ICore::showOptionsDialog(Constants::TOOLCHAIN_SETTINGS_PAGE_ID, buttonWidget()); @@ -220,6 +192,9 @@ void ToolChainInformationConfigWidget::manageToolChains() void ToolChainInformationConfigWidget::currentToolChainChanged(int idx) { + if (m_ignoreChanges) + return; + const QString id = m_comboBox->itemData(idx).toString(); ToolChainKitInformation::setToolChain(m_kit, ToolChainManager::findToolChain(id)); } diff --git a/src/plugins/projectexplorer/kitinformationconfigwidget.h b/src/plugins/projectexplorer/kitinformationconfigwidget.h index 774ffad2b3..40b47152f5 100644 --- a/src/plugins/projectexplorer/kitinformationconfigwidget.h +++ b/src/plugins/projectexplorer/kitinformationconfigwidget.h @@ -100,9 +100,6 @@ public: QString toolTip() const; private slots: - void toolChainAdded(ProjectExplorer::ToolChain *tc); - void toolChainRemoved(ProjectExplorer::ToolChain *tc); - void toolChainUpdated(ProjectExplorer::ToolChain *tc); void manageToolChains(); void currentToolChainChanged(int idx); @@ -112,6 +109,7 @@ private: QComboBox *m_comboBox; QPushButton *m_manageButton; + bool m_ignoreChanges; }; // -------------------------------------------------------------------------- diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 56476a4543..de3e9043ad 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -366,6 +366,13 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k) updateVisibility(); } +void KitManagerConfigWidget::showEvent(QShowEvent *event) +{ + Q_UNUSED(event); + foreach (KitConfigWidget *widget, m_widgets) + widget->refresh(); +} + QLabel *KitManagerConfigWidget::createLabel(const QString &name, const QString &toolTip) { QLabel *label = new QLabel(name); diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 2d00ef0c6b..70e13398e3 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -93,6 +93,7 @@ private: ButtonColumn }; + void showEvent(QShowEvent *event); QLabel *createLabel(const QString &name, const QString &toolTip); void paintEvent(QPaintEvent *ev); |