forked from qt-creator/qt-creator
Debugger: Refresh list of debuggers in kits options page on changes
Task-number: QTCREATORBUG-13991 Change-Id: I06ff6daea88e14b4193e4f1a71d768b528d80bf9 Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -69,14 +69,11 @@ namespace Internal {
|
|||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
DebuggerKitConfigWidget::DebuggerKitConfigWidget(Kit *workingCopy, const KitInformation *ki)
|
DebuggerKitConfigWidget::DebuggerKitConfigWidget(Kit *workingCopy, const KitInformation *ki)
|
||||||
: KitConfigWidget(workingCopy, ki)
|
: KitConfigWidget(workingCopy, ki),
|
||||||
|
m_ignoreChanges(false)
|
||||||
{
|
{
|
||||||
m_comboBox = new QComboBox;
|
m_comboBox = new QComboBox;
|
||||||
m_comboBox->setEnabled(true);
|
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();
|
refresh();
|
||||||
connect(m_comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
connect(m_comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
|
||||||
@@ -112,8 +109,16 @@ void DebuggerKitConfigWidget::makeReadOnly()
|
|||||||
|
|
||||||
void DebuggerKitConfigWidget::refresh()
|
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);
|
const DebuggerItem *item = DebuggerKitInformation::debugger(m_kit);
|
||||||
updateComboBox(item ? item->id() : QVariant());
|
updateComboBox(item ? item->id() : QVariant());
|
||||||
|
m_ignoreChanges = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *DebuggerKitConfigWidget::buttonWidget() const
|
QWidget *DebuggerKitConfigWidget::buttonWidget() const
|
||||||
@@ -134,6 +139,9 @@ void DebuggerKitConfigWidget::manageDebuggers()
|
|||||||
|
|
||||||
void DebuggerKitConfigWidget::currentDebuggerChanged(int)
|
void DebuggerKitConfigWidget::currentDebuggerChanged(int)
|
||||||
{
|
{
|
||||||
|
if (m_ignoreChanges)
|
||||||
|
return;
|
||||||
|
|
||||||
int currentIndex = m_comboBox->currentIndex();
|
int currentIndex = m_comboBox->currentIndex();
|
||||||
QVariant id = m_comboBox->itemData(currentIndex);
|
QVariant id = m_comboBox->itemData(currentIndex);
|
||||||
m_kit->setValue(DebuggerKitInformation::id(), id);
|
m_kit->setValue(DebuggerKitInformation::id(), id);
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ private:
|
|||||||
void updateComboBox(const QVariant &id);
|
void updateComboBox(const QVariant &id);
|
||||||
|
|
||||||
bool m_isReadOnly;
|
bool m_isReadOnly;
|
||||||
|
bool m_ignoreChanges;
|
||||||
QComboBox *m_comboBox;
|
QComboBox *m_comboBox;
|
||||||
QPushButton *m_manageButton;
|
QPushButton *m_manageButton;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -126,31 +126,19 @@ void SysRootInformationConfigWidget::pathWasChanged()
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, const KitInformation *ki) :
|
ToolChainInformationConfigWidget::ToolChainInformationConfigWidget(Kit *k, const KitInformation *ki) :
|
||||||
KitConfigWidget(k, ki)
|
KitConfigWidget(k, ki),
|
||||||
|
m_ignoreChanges(false)
|
||||||
{
|
{
|
||||||
m_comboBox = new QComboBox;
|
m_comboBox = new QComboBox;
|
||||||
m_comboBox->setEnabled(false);
|
m_comboBox->setEnabled(false);
|
||||||
m_comboBox->setToolTip(toolTip());
|
m_comboBox->setToolTip(toolTip());
|
||||||
|
|
||||||
foreach (ToolChain *tc, ToolChainManager::toolChains())
|
|
||||||
toolChainAdded(tc);
|
|
||||||
|
|
||||||
updateComboBox();
|
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentToolChainChanged(int)));
|
connect(m_comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentToolChainChanged(int)));
|
||||||
|
|
||||||
m_manageButton = new QPushButton(KitConfigWidget::msgManage());
|
m_manageButton = new QPushButton(KitConfigWidget::msgManage());
|
||||||
m_manageButton->setContentsMargins(0, 0, 0, 0);
|
m_manageButton->setContentsMargins(0, 0, 0, 0);
|
||||||
connect(m_manageButton, SIGNAL(clicked()), this, SLOT(manageToolChains()));
|
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()
|
ToolChainInformationConfigWidget::~ToolChainInformationConfigWidget()
|
||||||
@@ -173,7 +161,13 @@ QString ToolChainInformationConfigWidget::toolTip() const
|
|||||||
|
|
||||||
void ToolChainInformationConfigWidget::refresh()
|
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_comboBox->setCurrentIndex(indexOf(ToolChainKitInformation::toolChain(m_kit)));
|
||||||
|
m_ignoreChanges = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolChainInformationConfigWidget::makeReadOnly()
|
void ToolChainInformationConfigWidget::makeReadOnly()
|
||||||
@@ -191,28 +185,6 @@ QWidget *ToolChainInformationConfigWidget::buttonWidget() const
|
|||||||
return m_manageButton;
|
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()
|
void ToolChainInformationConfigWidget::manageToolChains()
|
||||||
{
|
{
|
||||||
ICore::showOptionsDialog(Constants::TOOLCHAIN_SETTINGS_PAGE_ID, buttonWidget());
|
ICore::showOptionsDialog(Constants::TOOLCHAIN_SETTINGS_PAGE_ID, buttonWidget());
|
||||||
@@ -220,6 +192,9 @@ void ToolChainInformationConfigWidget::manageToolChains()
|
|||||||
|
|
||||||
void ToolChainInformationConfigWidget::currentToolChainChanged(int idx)
|
void ToolChainInformationConfigWidget::currentToolChainChanged(int idx)
|
||||||
{
|
{
|
||||||
|
if (m_ignoreChanges)
|
||||||
|
return;
|
||||||
|
|
||||||
const QString id = m_comboBox->itemData(idx).toString();
|
const QString id = m_comboBox->itemData(idx).toString();
|
||||||
ToolChainKitInformation::setToolChain(m_kit, ToolChainManager::findToolChain(id));
|
ToolChainKitInformation::setToolChain(m_kit, ToolChainManager::findToolChain(id));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,9 +100,6 @@ public:
|
|||||||
QString toolTip() const;
|
QString toolTip() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void toolChainAdded(ProjectExplorer::ToolChain *tc);
|
|
||||||
void toolChainRemoved(ProjectExplorer::ToolChain *tc);
|
|
||||||
void toolChainUpdated(ProjectExplorer::ToolChain *tc);
|
|
||||||
void manageToolChains();
|
void manageToolChains();
|
||||||
void currentToolChainChanged(int idx);
|
void currentToolChainChanged(int idx);
|
||||||
|
|
||||||
@@ -112,6 +109,7 @@ private:
|
|||||||
|
|
||||||
QComboBox *m_comboBox;
|
QComboBox *m_comboBox;
|
||||||
QPushButton *m_manageButton;
|
QPushButton *m_manageButton;
|
||||||
|
bool m_ignoreChanges;
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -366,6 +366,13 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k)
|
|||||||
updateVisibility();
|
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 *KitManagerConfigWidget::createLabel(const QString &name, const QString &toolTip)
|
||||||
{
|
{
|
||||||
QLabel *label = new QLabel(name);
|
QLabel *label = new QLabel(name);
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ private:
|
|||||||
ButtonColumn
|
ButtonColumn
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void showEvent(QShowEvent *event);
|
||||||
QLabel *createLabel(const QString &name, const QString &toolTip);
|
QLabel *createLabel(const QString &name, const QString &toolTip);
|
||||||
void paintEvent(QPaintEvent *ev);
|
void paintEvent(QPaintEvent *ev);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user