diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2018-08-31 10:56:08 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2018-09-05 11:47:15 +0000 |
commit | 72ada44be335dd276881623740d7005fb326d44e (patch) | |
tree | 40ee2bc5a78060895fcd7d2d78dfbe01c924ee28 | |
parent | 626665b7a4d5a4692b8dbd227bf4a3d5f5958fac (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.cpp | 5 | ||||
-rw-r--r-- | src/libs/utils/environmentmodel.h | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/environmentwidget.cpp | 18 | ||||
-rw-r--r-- | src/plugins/projectexplorer/environmentwidget.h | 1 |
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 ¤t) { 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 ¤t); void invalidateCurrentIndex(); void updateSummaryText(); |