forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -66,6 +66,7 @@ private:
|
||||
void removeEnvironmentButtonClicked();
|
||||
void unsetEnvironmentButtonClicked();
|
||||
void batchEditEnvironmentButtonClicked();
|
||||
void openTerminal();
|
||||
void environmentCurrentIndexChanged(const QModelIndex ¤t);
|
||||
void invalidateCurrentIndex();
|
||||
void updateSummaryText();
|
||||
|
||||
Reference in New Issue
Block a user