forked from qt-creator/qt-creator
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
![]() |
// 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
|