From 14b5088e269176fa230ec8833975921a8480732b Mon Sep 17 00:00:00 2001 From: SweetId <2630750+SweetId@users.noreply.github.com> Date: Mon, 16 Oct 2023 19:38:22 -0400 Subject: [PATCH] Add log actions --- include/NazaraEditor/Core.hpp | 2 ++ .../Actions/EditorAction_Log_Clear.hpp | 15 ++++++++++++ .../EditorAction_Log_CopyToClipboard.hpp | 15 ++++++++++++ .../Actions/EditorAction_Log_Clear.cpp | 10 ++++++++ .../EditorAction_Log_CopyToClipboard.cpp | 23 +++++++++++++++++++ src/NazaraEditor/Editor/main.cpp | 14 +++++++++++ 6 files changed, 79 insertions(+) create mode 100644 include/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp create mode 100644 include/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp create mode 100644 src/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.cpp create mode 100644 src/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.cpp diff --git a/include/NazaraEditor/Core.hpp b/include/NazaraEditor/Core.hpp index e73034b..329f27d 100644 --- a/include/NazaraEditor/Core.hpp +++ b/include/NazaraEditor/Core.hpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp b/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp new file mode 100644 index 0000000..9565c16 --- /dev/null +++ b/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace Nz +{ + class NAZARAEDITOR_CORE_API EditorAction_Log_Clear final + : public EditorAction + { + EDITORACTION_BODY(EditorAction_Log_Clear, false); + + public: + void Execute() override; + }; +} \ No newline at end of file diff --git a/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp b/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp new file mode 100644 index 0000000..e0d1020 --- /dev/null +++ b/include/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace Nz +{ + class NAZARAEDITOR_CORE_API EditorAction_Log_CopyToClipboard final + : public EditorAction + { + EDITORACTION_BODY(EditorAction_Log_CopyToClipboard, false); + + public: + void Execute() override; + }; +} \ No newline at end of file diff --git a/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.cpp b/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.cpp new file mode 100644 index 0000000..3bb829f --- /dev/null +++ b/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_Clear.cpp @@ -0,0 +1,10 @@ +#include +#include + +namespace Nz +{ + void EditorAction_Log_Clear::Execute() + { + Nz::EditorLogger::Instance()->Clear(); + } +} \ No newline at end of file diff --git a/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.cpp b/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.cpp new file mode 100644 index 0000000..1d0b369 --- /dev/null +++ b/src/NazaraEditor/Core/Application/Actions/EditorAction_Log_CopyToClipboard.cpp @@ -0,0 +1,23 @@ +#include +#include + +#include + +#include + +namespace Nz +{ + void EditorAction_Log_CopyToClipboard::Execute() + { + auto& lines = Nz::EditorLogger::Instance()->GetLog(); + if (lines.empty()) + return; + + std::ostringstream oss; + oss << lines[0]; + for (size_t i = 1; i < lines.size(); ++i) + oss << '\n' << lines[i]; + + Nz::Clipboard::SetString(oss.str()); + } +} \ No newline at end of file diff --git a/src/NazaraEditor/Editor/main.cpp b/src/NazaraEditor/Editor/main.cpp index 2a3c0ee..fdb950f 100644 --- a/src/NazaraEditor/Editor/main.cpp +++ b/src/NazaraEditor/Editor/main.cpp @@ -43,6 +43,20 @@ int WinMain(int argc, char* argv[]) app.RegisterWindow(); app.RegisterWindow(); + Nz::TextureParams texParams; + texParams.renderDevice = Nz::Graphics::Instance()->GetRenderDevice(); + texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB; + app.RegisterAction({ + .description = "Clears log output", + .path = "Clear", + .category = "Output", + }); + app.RegisterAction({ + .description = "Copies log output to clipboard", + .path = "Copy to Clipboard", + .category = "Output", + }); + entt::meta() .type(entt::type_hash::value()) .func<&Nz::ReflectComponent, Nz::NodeComponent>>(entt::hashed_string("Reflect"));