Terminal: Simplify OpenTerminalParameters construction

Change-Id: I4dcc2146f227e4a408c88de62f7594953c8ccb66
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Orgad Shaneh
2023-07-03 14:24:10 +03:00
committed by Orgad Shaneh
parent d222cc2dbd
commit ce082bb09f
5 changed files with 22 additions and 10 deletions

View File

@@ -41,6 +41,20 @@ enum class ExitBehavior { Close, Restart, Keep };
struct OpenTerminalParameters struct OpenTerminalParameters
{ {
OpenTerminalParameters() = default;
OpenTerminalParameters(const CommandLine &commandLine) : shellCommand(commandLine) {}
OpenTerminalParameters(const FilePath &directory, std::optional<Environment> env) :
workingDirectory(directory),
environment(env)
{}
OpenTerminalParameters(const CommandLine &commandLine,
const FilePath &directory,
std::optional<Environment> env) :
shellCommand(commandLine),
workingDirectory(directory),
environment(env)
{}
std::optional<CommandLine> shellCommand; std::optional<CommandLine> shellCommand;
std::optional<FilePath> workingDirectory; std::optional<FilePath> workingDirectory;
std::optional<Environment> environment; std::optional<Environment> environment;

View File

@@ -106,7 +106,7 @@ void FileUtils::showInFileSystemView(const FilePath &path)
void FileUtils::openTerminal(const FilePath &path, const Environment &env) void FileUtils::openTerminal(const FilePath &path, const Environment &env)
{ {
Terminal::Hooks::instance().openTerminal({std::nullopt, path, env}); Terminal::Hooks::instance().openTerminal({path, env});
} }
QString FileUtils::msgFindInDirectory() QString FileUtils::msgFindInDirectory()

View File

@@ -3630,7 +3630,7 @@ void ProjectExplorerPluginPrivate::openTerminalHere(const EnvironmentGetter &env
BuildConfiguration *bc = activeBuildConfiguration(ProjectTree::projectForNode(currentNode)); BuildConfiguration *bc = activeBuildConfiguration(ProjectTree::projectForNode(currentNode));
if (!bc) { if (!bc) {
Terminal::Hooks::instance().openTerminal({{}, currentNode->directory(), environment}); Terminal::Hooks::instance().openTerminal({currentNode->directory(), environment});
return; return;
} }
@@ -3649,7 +3649,7 @@ void ProjectExplorerPluginPrivate::openTerminalHere(const EnvironmentGetter &env
if (!shell.isEmpty() && buildDevice->rootPath().needsDevice()) { if (!shell.isEmpty() && buildDevice->rootPath().needsDevice()) {
Terminal::Hooks::instance().openTerminal({CommandLine{shell, {}}, workingDir, environment}); Terminal::Hooks::instance().openTerminal({CommandLine{shell, {}}, workingDir, environment});
} else { } else {
Terminal::Hooks::instance().openTerminal({std::nullopt, workingDir, environment}); Terminal::Hooks::instance().openTerminal({workingDir, environment});
} }
} }
@@ -3684,7 +3684,7 @@ void ProjectExplorerPluginPrivate::openTerminalHereWithRunEnv()
Terminal::Hooks::instance().openTerminal( Terminal::Hooks::instance().openTerminal(
{CommandLine{shell, {}}, workingDir, runnable.environment}); {CommandLine{shell, {}}, workingDir, runnable.environment});
} else { } else {
Terminal::Hooks::instance().openTerminal({std::nullopt, workingDir, runnable.environment}); Terminal::Hooks::instance().openTerminal({workingDir, runnable.environment});
} }
} }

View File

@@ -162,7 +162,7 @@ QList<ShellModelItem> ShellModel::remote() const
const QList<ShellModelItem> deviceItems = Utils::transform( const QList<ShellModelItem> deviceItems = Utils::transform(
deviceCmds, [](const Utils::Terminal::NameAndCommandLine &item) -> ShellModelItem { deviceCmds, [](const Utils::Terminal::NameAndCommandLine &item) -> ShellModelItem {
return ShellModelItem{item.name, {}, {item.commandLine, std::nullopt, std::nullopt}}; return ShellModelItem{item.name, {}, {item.commandLine}};
}); });
return deviceItems; return deviceItems;

View File

@@ -40,11 +40,9 @@ public:
TerminalWidget *terminal = m_terminalPane->stoppedTerminalWithId(id); TerminalWidget *terminal = m_terminalPane->stoppedTerminalWithId(id);
const OpenTerminalParameters openParameters{setup.m_commandLine, OpenTerminalParameters openParameters{setup.m_commandLine};
std::nullopt, openParameters.m_exitBehavior = ExitBehavior::Keep;
std::nullopt, openParameters.identifier = id;
ExitBehavior::Keep,
id};
if (!terminal) { if (!terminal) {
terminal = new TerminalWidget(nullptr, openParameters); terminal = new TerminalWidget(nullptr, openParameters);