forked from qt-creator/qt-creator
KitChooser: Add a 'Manage' button for quick setting access
Change-Id: I0f90075ed6549b1e5093d8cc81975bc46acf38fb Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
|
#include <QComboBox>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
# include <utils/winutils.h>
|
# include <utils/winutils.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <QComboBox>
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ bool AttachCoreDialog::useLocalCoreFile() const
|
|||||||
|
|
||||||
void AttachCoreDialog::changed()
|
void AttachCoreDialog::changed()
|
||||||
{
|
{
|
||||||
bool isValid = d->kitChooser->currentIndex() >= 0 && d->localExecFileName->isValid();
|
bool isValid = d->kitChooser->currentKit() && d->localExecFileName->isValid();
|
||||||
bool isKitLocal = isLocalKit();
|
bool isKitLocal = isLocalKit();
|
||||||
|
|
||||||
d->forceLocalLabel->setVisible(!isKitLocal);
|
d->forceLocalLabel->setVisible(!isKitLocal);
|
||||||
|
|||||||
@@ -47,6 +47,7 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QtAlgorithms>
|
#include <QtAlgorithms>
|
||||||
|
#include <QTabWidget>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|||||||
@@ -33,6 +33,11 @@
|
|||||||
#include "kitmanager.h"
|
#include "kitmanager.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
#include <projectexplorerconstants.h>
|
||||||
|
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer {
|
||||||
@@ -40,9 +45,25 @@ namespace ProjectExplorer {
|
|||||||
const char lastKitKey[] = "LastSelectedKit";
|
const char lastKitKey[] = "LastSelectedKit";
|
||||||
|
|
||||||
KitChooser::KitChooser(QWidget *parent) :
|
KitChooser::KitChooser(QWidget *parent) :
|
||||||
QComboBox(parent)
|
QWidget(parent)
|
||||||
{
|
{
|
||||||
connect(this, SIGNAL(currentIndexChanged(int)), SLOT(onCurrentIndexChanged(int)));
|
m_chooser = new QComboBox(this);
|
||||||
|
m_manageButton = new QPushButton(tr("Manage..."), this);
|
||||||
|
|
||||||
|
QHBoxLayout *layout = new QHBoxLayout(this);
|
||||||
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
layout->addWidget(m_chooser);
|
||||||
|
layout->addWidget(m_manageButton);
|
||||||
|
|
||||||
|
connect(m_chooser, SIGNAL(currentIndexChanged(int)), SLOT(onCurrentIndexChanged(int)));
|
||||||
|
connect(m_manageButton, SIGNAL(clicked()), SLOT(onManageButtonClicked()));
|
||||||
|
connect(KitManager::instance(), SIGNAL(kitsChanged()), SLOT(populate()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void KitChooser::onManageButtonClicked()
|
||||||
|
{
|
||||||
|
Core::ICore::showOptionsDialog(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY,
|
||||||
|
Constants::KITS_SETTINGS_PAGE_ID, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KitChooser::onCurrentIndexChanged(int index)
|
void KitChooser::onCurrentIndexChanged(int index)
|
||||||
@@ -51,6 +72,7 @@ void KitChooser::onCurrentIndexChanged(int index)
|
|||||||
setToolTip(kitToolTip(kit));
|
setToolTip(kitToolTip(kit));
|
||||||
else
|
else
|
||||||
setToolTip(QString());
|
setToolTip(QString());
|
||||||
|
emit currentIndexChanged(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool KitChooser::kitMatches(const Kit *k) const
|
bool KitChooser::kitMatches(const Kit *k) const
|
||||||
@@ -70,31 +92,31 @@ QString KitChooser::kitToolTip(Kit *k) const
|
|||||||
|
|
||||||
void KitChooser::populate()
|
void KitChooser::populate()
|
||||||
{
|
{
|
||||||
clear();
|
m_chooser->clear();
|
||||||
foreach (Kit *kit, KitManager::kits()) {
|
foreach (Kit *kit, KitManager::kits()) {
|
||||||
if (kitMatches(kit)) {
|
if (kitMatches(kit)) {
|
||||||
addItem(kitText(kit), qVariantFromValue(kit->id()));
|
m_chooser->addItem(kitText(kit), qVariantFromValue(kit->id()));
|
||||||
setItemData(count() - 1, kitToolTip(kit), Qt::ToolTipRole);
|
m_chooser->setItemData(m_chooser->count() - 1, kitToolTip(kit), Qt::ToolTipRole);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setEnabled(count() > 1);
|
m_chooser->setEnabled(m_chooser->count() > 1);
|
||||||
|
|
||||||
const int index = Core::ICore::settings()->value(QLatin1String(lastKitKey)).toInt();
|
const int index = Core::ICore::settings()->value(QLatin1String(lastKitKey)).toInt();
|
||||||
setCurrentIndex(qMin(index, count()));
|
m_chooser->setCurrentIndex(qMin(index, m_chooser->count()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Kit *KitChooser::currentKit() const
|
Kit *KitChooser::currentKit() const
|
||||||
{
|
{
|
||||||
const int index = currentIndex();
|
const int index = m_chooser->currentIndex();
|
||||||
Core::ICore::settings()->setValue(QLatin1String(lastKitKey), index);
|
Core::ICore::settings()->setValue(QLatin1String(lastKitKey), index);
|
||||||
return index == -1 ? 0 : kitAt(index);
|
return index == -1 ? 0 : kitAt(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KitChooser::setCurrentKitId(Core::Id id)
|
void KitChooser::setCurrentKitId(Core::Id id)
|
||||||
{
|
{
|
||||||
for (int i = 0, n = count(); i != n; ++i) {
|
for (int i = 0, n = m_chooser->count(); i != n; ++i) {
|
||||||
if (kitAt(i)->id() == id) {
|
if (kitAt(i)->id() == id) {
|
||||||
setCurrentIndex(i);
|
m_chooser->setCurrentIndex(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,7 +130,7 @@ Core::Id KitChooser::currentKitId() const
|
|||||||
|
|
||||||
Kit *KitChooser::kitAt(int index) const
|
Kit *KitChooser::kitAt(int index) const
|
||||||
{
|
{
|
||||||
Core::Id id = qvariant_cast<Core::Id>(itemData(index));
|
Core::Id id = qvariant_cast<Core::Id>(m_chooser->itemData(index));
|
||||||
return KitManager::find(id);
|
return KitManager::find(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,12 @@
|
|||||||
|
|
||||||
#include "projectexplorer_export.h"
|
#include "projectexplorer_export.h"
|
||||||
|
|
||||||
#include <QComboBox>
|
#include <QWidget>
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QComboBox;
|
||||||
|
class QPushButton;
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Core { class Id; }
|
namespace Core { class Id; }
|
||||||
|
|
||||||
@@ -41,7 +46,7 @@ namespace ProjectExplorer {
|
|||||||
class Kit;
|
class Kit;
|
||||||
|
|
||||||
// Let the user pick a kit.
|
// Let the user pick a kit.
|
||||||
class PROJECTEXPLORER_EXPORT KitChooser : public QComboBox
|
class PROJECTEXPLORER_EXPORT KitChooser : public QWidget
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
@@ -53,11 +58,15 @@ public:
|
|||||||
|
|
||||||
Kit *currentKit() const;
|
Kit *currentKit() const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void currentIndexChanged(int);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void populate();
|
void populate();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onCurrentIndexChanged(int index);
|
void onCurrentIndexChanged(int index);
|
||||||
|
void onManageButtonClicked();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool kitMatches(const Kit *k) const;
|
virtual bool kitMatches(const Kit *k) const;
|
||||||
@@ -66,6 +75,8 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Kit *kitAt(int index) const;
|
Kit *kitAt(int index) const;
|
||||||
|
QComboBox *m_chooser;
|
||||||
|
QPushButton *m_manageButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
|||||||
Reference in New Issue
Block a user