Terminal: Add Terminal plugin

Adds a new Terminal plugin that provides a Terminal pane inside
Qt Creator.

Fixes: QTCREATORBUG-8511
Change-Id: I7eacb3efa2463d7df9f383ae3fc33254fb9019a9
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-02-23 12:47:39 +01:00
parent d5a9e28a96
commit 682ef157d8
37 changed files with 2582 additions and 24 deletions

View File

@@ -0,0 +1,48 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "terminalhooks.h"
#include "filepath.h"
#include "terminalprocess_p.h"
namespace Utils::Terminal {
struct HooksPrivate
{
HooksPrivate()
: m_openTerminalHook([](const OpenTerminalParameters &parameters) {
DeviceFileHooks::instance().openTerminal(parameters.workingDirectory.value_or(
FilePath{}),
parameters.environment.value_or(Environment{}));
})
, m_createTerminalProcessInterfaceHook(
[]() -> ProcessInterface * { return new Internal::TerminalImpl(); })
{}
Hooks::OpenTerminalHook m_openTerminalHook;
Hooks::CreateTerminalProcessInterfaceHook m_createTerminalProcessInterfaceHook;
};
Hooks &Hooks::instance()
{
static Hooks manager;
return manager;
}
Hooks::Hooks()
: d(new HooksPrivate())
{}
Hooks::~Hooks() = default;
Hooks::OpenTerminalHook &Hooks::openTerminalHook()
{
return d->m_openTerminalHook;
}
Hooks::CreateTerminalProcessInterfaceHook &Hooks::createTerminalProcessInterfaceHook()
{
return d->m_createTerminalProcessInterfaceHook;
}
} // namespace Utils::Terminal