forked from qt-creator/qt-creator
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:
48
src/libs/utils/terminalhooks.cpp
Normal file
48
src/libs/utils/terminalhooks.cpp
Normal 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 ¶meters) {
|
||||
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
|
Reference in New Issue
Block a user