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;
|
return d->findInChanges(name) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Environment EnvironmentModel::baseEnvironment() const
|
||||||
|
{
|
||||||
|
return d->m_baseEnvironment;
|
||||||
|
}
|
||||||
|
|
||||||
QVariant EnvironmentModel::data(const QModelIndex &index, int role) const
|
QVariant EnvironmentModel::data(const QModelIndex &index, int role) const
|
||||||
{
|
{
|
||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
QString indexToVariable(const QModelIndex &index) const;
|
QString indexToVariable(const QModelIndex &index) const;
|
||||||
QModelIndex variableToIndex(const QString &name) const;
|
QModelIndex variableToIndex(const QString &name) const;
|
||||||
bool changes(const QString &key) const;
|
bool changes(const QString &key) const;
|
||||||
|
Environment baseEnvironment() const;
|
||||||
void setBaseEnvironment(const Environment &env);
|
void setBaseEnvironment(const Environment &env);
|
||||||
QList<EnvironmentItem> userChanges() const;
|
QList<EnvironmentItem> userChanges() const;
|
||||||
void setUserChanges(QList<EnvironmentItem> list);
|
void setUserChanges(QList<EnvironmentItem> list);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include "environmentwidget.h"
|
#include "environmentwidget.h"
|
||||||
|
|
||||||
|
#include <coreplugin/fileutils.h>
|
||||||
#include <coreplugin/find/itemviewfind.h>
|
#include <coreplugin/find/itemviewfind.h>
|
||||||
|
|
||||||
#include <utils/detailswidget.h>
|
#include <utils/detailswidget.h>
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
#include <utils/itemviews.h>
|
#include <utils/itemviews.h>
|
||||||
#include <utils/tooltip/tooltip.h>
|
#include <utils/tooltip/tooltip.h>
|
||||||
|
|
||||||
|
#include <QDir>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
@@ -129,6 +131,7 @@ public:
|
|||||||
QPushButton *m_resetButton;
|
QPushButton *m_resetButton;
|
||||||
QPushButton *m_unsetButton;
|
QPushButton *m_unsetButton;
|
||||||
QPushButton *m_batchEditButton;
|
QPushButton *m_batchEditButton;
|
||||||
|
QPushButton *m_terminalButton;
|
||||||
};
|
};
|
||||||
|
|
||||||
EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetailsWidget)
|
EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetailsWidget)
|
||||||
@@ -201,6 +204,11 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetails
|
|||||||
d->m_batchEditButton->setText(tr("&Batch Edit..."));
|
d->m_batchEditButton->setText(tr("&Batch Edit..."));
|
||||||
buttonLayout->addWidget(d->m_batchEditButton);
|
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();
|
buttonLayout->addStretch();
|
||||||
|
|
||||||
horizontalLayout->addLayout(buttonLayout);
|
horizontalLayout->addLayout(buttonLayout);
|
||||||
@@ -224,6 +232,9 @@ EnvironmentWidget::EnvironmentWidget(QWidget *parent, QWidget *additionalDetails
|
|||||||
connect(d->m_environmentView->selectionModel(), &QItemSelectionModel::currentChanged,
|
connect(d->m_environmentView->selectionModel(), &QItemSelectionModel::currentChanged,
|
||||||
this, &EnvironmentWidget::environmentCurrentIndexChanged);
|
this, &EnvironmentWidget::environmentCurrentIndexChanged);
|
||||||
|
|
||||||
|
connect(d->m_terminalButton, &QAbstractButton::clicked,
|
||||||
|
this, &EnvironmentWidget::openTerminal);
|
||||||
|
|
||||||
connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated,
|
connect(d->m_detailsContainer, &Utils::DetailsWidget::linkActivated,
|
||||||
this, &EnvironmentWidget::linkActivated);
|
this, &EnvironmentWidget::linkActivated);
|
||||||
|
|
||||||
@@ -356,6 +367,13 @@ void EnvironmentWidget::batchEditEnvironmentButtonClicked()
|
|||||||
d->m_model->setUserChanges(newChanges);
|
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)
|
void EnvironmentWidget::environmentCurrentIndexChanged(const QModelIndex ¤t)
|
||||||
{
|
{
|
||||||
if (current.isValid()) {
|
if (current.isValid()) {
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ private:
|
|||||||
void removeEnvironmentButtonClicked();
|
void removeEnvironmentButtonClicked();
|
||||||
void unsetEnvironmentButtonClicked();
|
void unsetEnvironmentButtonClicked();
|
||||||
void batchEditEnvironmentButtonClicked();
|
void batchEditEnvironmentButtonClicked();
|
||||||
|
void openTerminal();
|
||||||
void environmentCurrentIndexChanged(const QModelIndex ¤t);
|
void environmentCurrentIndexChanged(const QModelIndex ¤t);
|
||||||
void invalidateCurrentIndex();
|
void invalidateCurrentIndex();
|
||||||
void updateSummaryText();
|
void updateSummaryText();
|
||||||
|
|||||||
Reference in New Issue
Block a user