Terminal: New Terminal opens project folder

Change-Id: I974a3c73363a810a18f9327d8682c2a56a42fee2
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Marcus Tillmanns
2023-03-06 11:54:21 +01:00
parent f95f815e98
commit 66094398fb
3 changed files with 26 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
add_qtc_plugin(Terminal add_qtc_plugin(Terminal
PLUGIN_DEPENDS Core PLUGIN_DEPENDS Core ProjectExplorer
DEPENDS libvterm DEPENDS libvterm
SOURCES SOURCES
celliterator.cpp celliterator.h celliterator.cpp celliterator.h

View File

@@ -10,6 +10,9 @@
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
@@ -88,9 +91,29 @@ TerminalPane::TerminalPane(QObject *parent)
}); });
} }
void TerminalPane::openTerminal(const Utils::Terminal::OpenTerminalParameters &parameters) static std::optional<FilePath> startupProjectDirectory()
{
ProjectExplorer::Project *project = ProjectExplorer::ProjectManager::startupProject();
if (!project)
return std::nullopt;
return project->projectDirectory();
}
void TerminalPane::openTerminal(Utils::Terminal::OpenTerminalParameters parameters)
{ {
showPage(0); showPage(0);
if (!parameters.workingDirectory) {
const std::optional<FilePath> projectDir = startupProjectDirectory();
if (projectDir) {
if (!parameters.shellCommand
|| parameters.shellCommand->executable().ensureReachable(*projectDir)) {
parameters.workingDirectory = *projectDir;
}
}
}
auto terminalWidget = new TerminalWidget(m_tabWidget, parameters); auto terminalWidget = new TerminalWidget(m_tabWidget, parameters);
m_tabWidget->setCurrentIndex(m_tabWidget->addTab(terminalWidget, Tr::tr("Terminal"))); m_tabWidget->setCurrentIndex(m_tabWidget->addTab(terminalWidget, Tr::tr("Terminal")));
setupTerminalWidget(terminalWidget); setupTerminalWidget(terminalWidget);

View File

@@ -36,7 +36,7 @@ public:
virtual void goToNext(); virtual void goToNext();
virtual void goToPrev(); virtual void goToPrev();
void openTerminal(const Utils::Terminal::OpenTerminalParameters &parameters); void openTerminal(Utils::Terminal::OpenTerminalParameters parameters);
void addTerminal(TerminalWidget *terminal, const QString &title); void addTerminal(TerminalWidget *terminal, const QString &title);
private: private: