From a053724c28d128a44b36d26eb1f3257b9046879a Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 6 Mar 2015 15:13:21 +0100 Subject: Debugger: Refresh list of debuggers in kits options page on changes Task-number: QTCREATORBUG-13991 Change-Id: I06ff6daea88e14b4193e4f1a71d768b528d80bf9 Reviewed-by: hjk --- src/plugins/debugger/debuggerkitconfigwidget.cpp | 18 ++++++--- src/plugins/debugger/debuggerkitconfigwidget.h | 1 + .../projectexplorer/kitinformationconfigwidget.cpp | 47 +++++----------------- .../projectexplorer/kitinformationconfigwidget.h | 4 +- .../projectexplorer/kitmanagerconfigwidget.cpp | 7 ++++ .../projectexplorer/kitmanagerconfigwidget.h | 1 + 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(&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); -- cgit v1.2.1