summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/kitmanagerconfigwidget.cpp')
-rw-r--r--src/plugins/projectexplorer/kitmanagerconfigwidget.cpp49
1 files changed, 37 insertions, 12 deletions
diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
index 5afe809c74..dfb05b59da 100644
--- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
+++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp
@@ -35,6 +35,7 @@
#include <utils/detailswidget.h>
#include <utils/qtcassert.h>
+#include <QAction>
#include <QFileDialog>
#include <QGridLayout>
#include <QLabel>
@@ -87,7 +88,7 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) :
connect(m_iconButton, SIGNAL(clicked()), this, SLOT(setIcon()));
connect(m_nameEdit, SIGNAL(textChanged(QString)), this, SLOT(setDisplayName()));
- KitManager *km = KitManager::instance();
+ QObject *km = KitManager::instance();
connect(km, SIGNAL(unmanagedKitUpdated(ProjectExplorer::Kit*)),
this, SLOT(workingCopyWasUpdated(ProjectExplorer::Kit*)));
connect(km, SIGNAL(kitUpdated(ProjectExplorer::Kit*)),
@@ -98,10 +99,12 @@ KitManagerConfigWidget::~KitManagerConfigWidget()
{
qDeleteAll(m_widgets);
m_widgets.clear();
+ qDeleteAll(m_actions);
+ m_actions.clear();
KitManager::deleteKit(m_modifiedKit);
// Make sure our workingCopy did not get registered somehow:
- foreach (const Kit *k, KitManager::instance()->kits())
+ foreach (const Kit *k, KitManager::kits())
QTC_CHECK(k->id() != Core::Id(WORKING_COPY_KIT_ID));
}
@@ -113,7 +116,6 @@ QString KitManagerConfigWidget::displayName() const
void KitManagerConfigWidget::apply()
{
bool mustSetDefault = m_isDefaultKit;
- KitManager *km = KitManager::instance();
bool mustRegister = false;
if (!m_kit) {
mustRegister = true;
@@ -121,10 +123,10 @@ void KitManagerConfigWidget::apply()
}
m_kit->copyFrom(m_modifiedKit);//m_isDefaultKit is reset in discard() here.
if (mustRegister)
- km->registerKit(m_kit);
+ KitManager::registerKit(m_kit);
if (mustSetDefault)
- km->setDefaultKit(m_kit);
+ KitManager::setDefaultKit(m_kit);
m_isDefaultKit = mustSetDefault;
emit dirty();
@@ -134,7 +136,7 @@ void KitManagerConfigWidget::discard()
{
if (m_kit) {
m_modifiedKit->copyFrom(m_kit);
- m_isDefaultKit = (m_kit == KitManager::instance()->defaultKit());
+ m_isDefaultKit = (m_kit == KitManager::defaultKit());
} else {
// This branch will only ever get reached once during setup of widget for a not-yet-existing
// kit.
@@ -149,7 +151,7 @@ bool KitManagerConfigWidget::isDirty() const
{
return !m_kit
|| !m_kit->isEqual(m_modifiedKit)
- || m_isDefaultKit != (KitManager::instance()->defaultKit() == m_kit);
+ || m_isDefaultKit != (KitManager::defaultKit() == m_kit);
}
bool KitManagerConfigWidget::isValid() const
@@ -175,6 +177,16 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w
QString name = widget->displayName();
QString toolTip = widget->toolTip();
+ QAction *action = new QAction(tr("Mark as Mutable"), 0);
+ action->setCheckable(true);
+ action->setData(QVariant::fromValue(qobject_cast<QObject *>(widget)));
+ action->setChecked(widget->isMutable());
+ action->setEnabled(!widget->isSticky());
+ widget->mainWidget()->addAction(action);
+ widget->mainWidget()->setContextMenuPolicy(Qt::ActionsContextMenu);
+ connect(action, SIGNAL(toggled(bool)), this, SLOT(updateMutableState()));
+ m_actions << action;
+
int row = m_layout->rowCount();
m_layout->addWidget(widget->mainWidget(), row, WidgetColumn);
if (QWidget *button = widget->buttonWidget())
@@ -207,8 +219,6 @@ void KitManagerConfigWidget::makeStickySubWidgetsReadOnly()
if (w->isSticky())
w->makeReadOnly();
}
- m_iconButton->setEnabled(false);
- m_nameEdit->setEnabled(false);
}
Kit *KitManagerConfigWidget::workingCopy() const
@@ -238,16 +248,19 @@ void KitManagerConfigWidget::removeKit()
{
if (!m_kit)
return;
- KitManager::instance()->deregisterKit(m_kit);
+ KitManager::deregisterKit(m_kit);
}
void KitManagerConfigWidget::setIcon()
{
- const QString path = QFileDialog::getOpenFileName(this, tr("Select Icon"), m_modifiedKit->iconPath(), tr("Images (*.png *.xpm *.jpg)"));
+ const Utils::FileName path = Utils::FileName::fromString(
+ QFileDialog::getOpenFileName(this, tr("Select Icon"),
+ m_modifiedKit->iconPath().toString(),
+ tr("Images (*.png *.xpm *.jpg)")));
if (path.isEmpty())
return;
- const QIcon icon = QIcon(path);
+ const QIcon icon = Kit::icon(path);
if (icon.isNull())
return;
@@ -287,6 +300,18 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k)
updateVisibility();
}
+void KitManagerConfigWidget::updateMutableState()
+{
+ QAction *action = qobject_cast<QAction *>(sender());
+ if (!action)
+ return;
+ KitConfigWidget *widget = qobject_cast<KitConfigWidget *>(action->data().value<QObject *>());
+ if (!widget)
+ return;
+ widget->setMutable(action->isChecked());
+ emit dirty();
+}
+
QLabel *KitManagerConfigWidget::createLabel(const QString &name, const QString &toolTip)
{
QLabel *label = new QLabel(name);