aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2018-08-31 10:56:08 +0200
committerTobias Hunger <tobias.hunger@qt.io>2018-09-05 11:47:15 +0000
commit72ada44be335dd276881623740d7005fb326d44e (patch)
tree40ee2bc5a78060895fcd7d2d78dfbe01c924ee28
parent626665b7a4d5a4692b8dbd227bf4a3d5f5958fac (diff)
Add "Open Terminal" to EnvironmentWidget
Add a "Open Terminal" button to the environment widget. This opens a terminal with the environment set up in the current working directory of Qt Creator. Task-number: QTCREATORBUG-19692 Change-Id: I33f60969d2a05a15f6f8fc1051f255e6c64f1e58 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/utils/environmentmodel.cpp5
-rw-r--r--src/libs/utils/environmentmodel.h1
-rw-r--r--src/plugins/projectexplorer/environmentwidget.cpp18
-rw-r--r--src/plugins/projectexplorer/environmentwidget.h1
4 files changed, 25 insertions, 0 deletions
diff --git a/src/libs/utils/environmentmodel.cpp b/src/libs/utils/environmentmodel.cpp
index fde8e7ad55..303f7cf7d2 100644
--- a/src/libs/utils/environmentmodel.cpp
+++ b/src/libs/utils/environmentmodel.cpp
@@ -129,6 +129,11 @@ bool EnvironmentModel::changes(const QString &name) const
return d->findInChanges(name) >= 0;
}
+Environment EnvironmentModel::baseEnvironment() const
+{
+ return d->m_baseEnvironment;
+}
+
QVariant EnvironmentModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
diff --git a/src/libs/utils/environmentmodel.h b/src/libs/utils/environmentmodel.h
index 3eb0ece6cb..4230c82d79 100644
--- a/src/libs/utils/environmentmodel.h
+++ b/src/libs/utils/environmentmodel.h
@@ -60,6 +60,7 @@ public:
QString indexToVariable(const QModelIndex &index) const;
QModelIndex variableToIndex(const QString &name) const;
bool changes(const QString &key) const;
+ Environment baseEnvironment() const;
void setBaseEnvironment(const Environment &env);
QList<EnvironmentItem> userChanges() const;
void setUserChanges(QList<EnvironmentItem> list);
diff --git a/src/plugins/projectexplorer/environmentwidget.cpp b/src/plugins/projectexplorer/environmentwidget.cpp
index e39f21532b..89b0054f46 100644
--- a/src/plugins/projectexplorer/environmentwidget.cpp
+++ b/src/plugins/projectexplorer/environmentwidget.cpp
@@ -25,6 +25,7 @@
#include "environmentwidget.h"
+#include <coreplugin/fileutils.h>
#include <coreplugin/find/itemviewfind.h>
#include <utils/detailswidget.h>
@@ -35,6 +36,7 @@
#include <utils/itemviews.h>
#include <utils/tooltip/tooltip.h>
+#include <QDir>
#include <QString>
#include <QPushButton>
#include <QTreeView>
@@ -129,6 +131,7 @@ public:
QPushButton *m_resetButton;
QPushButton *m_unsetButton;
QPushButton *m_batchEditButton;
+ QPushButton *m_terminalButton;
};
EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetailsWidget)
@@ -201,6 +204,11 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetails
d->m_batchEditButton->setText(tr("&Batch Edit..."));
buttonLayout->addWidget(d->m_batchEditButton);
+ d->m_terminalButton = new QPushButton(this);
+ d->m_terminalButton->setText(tr("Open &Terminal"));
+ d->m_terminalButton->setToolTip(tr("Open a terminal with this environment set up."));
+ buttonLayout->addWidget(d->m_terminalButton);
+
buttonLayout->addStretch();
horizontalLayout->addLayout(buttonLayout);
@@ -224,6 +232,9 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetails
connect(d->m_environmentView->selectionModel(), &QItemSelectionModel::currentChanged,
this, &EnvironmentWidget::environmentCurrentIndexChanged);
+ connect(d->m_terminalButton, &QAbstractButton::clicked,
+ this, &EnvironmentWidget::openTerminal);
+
connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated,
this, &EnvironmentWidget::linkActivated);
@@ -356,6 +367,13 @@ void EnvironmentWidget::batchEditEnvironmentButtonClicked()
d->m_model->setUserChanges(newChanges);
}
+void EnvironmentWidget::openTerminal()
+{
+ Utils::Environment env = d->m_model->baseEnvironment();
+ env.modify(d->m_model->userChanges());
+ Core::FileUtils::openTerminal(QDir::currentPath(), env);
+}
+
void EnvironmentWidget::environmentCurrentIndexChanged(const QModelIndex &current)
{
if (current.isValid()) {
diff --git a/src/plugins/projectexplorer/environmentwidget.h b/src/plugins/projectexplorer/environmentwidget.h
index 004f1cb1e6..3eb85bcc8d 100644
--- a/src/plugins/projectexplorer/environmentwidget.h
+++ b/src/plugins/projectexplorer/environmentwidget.h
@@ -66,6 +66,7 @@ private:
void removeEnvironmentButtonClicked();
void unsetEnvironmentButtonClicked();
void batchEditEnvironmentButtonClicked();
+ void openTerminal();
void environmentCurrentIndexChanged(const QModelIndex &current);
void invalidateCurrentIndex();
void updateSummaryText();