aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/terminalhooks.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <[email protected]>2023-02-23 12:47:39 +0100
committerMarcus Tillmanns <[email protected]>2023-02-24 10:19:33 +0000
commit682ef157d8561cb9648be8efcf45bdc8d0e47ea7 (patch)
tree43b46db310635710df45113b443e2d89deeedbb3 /src/libs/utils/terminalhooks.cpp
parentd5a9e28a968d13f9c437033d647b5da8eaf09dc9 (diff)
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: <[email protected]> Reviewed-by: Qt CI Bot <[email protected]> Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/libs/utils/terminalhooks.cpp')
-rw-r--r--src/libs/utils/terminalhooks.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/libs/utils/terminalhooks.cpp b/src/libs/utils/terminalhooks.cpp
new file mode 100644
index 00000000000..d0b48075683
--- /dev/null
+++ b/src/libs/utils/terminalhooks.cpp
@@ -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