diff --git a/Editor/src/EditorApplication.cpp b/Editor/src/EditorApplication.cpp index 1af94228..ae70e258 100644 --- a/Editor/src/EditorApplication.cpp +++ b/Editor/src/EditorApplication.cpp @@ -10,6 +10,8 @@ #include "src/UI/NuakeUI.h" #include "src/UI/UIInputManager.h" + + void EditorApplication::OnInit() { using namespace Nuake; @@ -73,6 +75,13 @@ void EditorApplication::OnInit() } }); + m_Window->SetOnDragNDropCallback([&](Window& window, const std::vector& paths) { + for (auto& layer : m_LayerStack) + { + layer->OnDragNDrop(paths); + } + }); + PushLayer(CreateScope()); } diff --git a/Editor/src/EditorApplication.h b/Editor/src/EditorApplication.h index 646ecb3f..8e9278b5 100644 --- a/Editor/src/EditorApplication.h +++ b/Editor/src/EditorApplication.h @@ -10,6 +10,15 @@ using namespace NuakeEditor; +class DragNDropModule : public Nuake::IApplicationModule +{ +public: + void OnInit() override + { + + } +}; + class EditorApplication : public Nuake::Application { private: diff --git a/Editor/src/EditorLayer.cpp b/Editor/src/EditorLayer.cpp index c1a1cead..133349c6 100644 --- a/Editor/src/EditorLayer.cpp +++ b/Editor/src/EditorLayer.cpp @@ -79,4 +79,9 @@ void EditorLayer::OnDetach() void EditorLayer::OnWindowFocused() { m_EditorInterface->OnWindowFocused(); -} \ No newline at end of file +} + +void EditorLayer::OnDragNDrop(const std::vector& paths) +{ + m_EditorInterface->OnDragNDrop(paths); +} diff --git a/Editor/src/EditorLayer.h b/Editor/src/EditorLayer.h index 77759544..4e295bc9 100644 --- a/Editor/src/EditorLayer.h +++ b/Editor/src/EditorLayer.h @@ -23,6 +23,7 @@ public: virtual void OnDetach() override; virtual void OnWindowFocused() override; + virtual void OnDragNDrop(const std::vector& paths) override; private: CommandBuffer mCommandBuffer; diff --git a/Editor/src/Windows/EditorInterface.cpp b/Editor/src/Windows/EditorInterface.cpp index bbf4a430..f008d3a3 100644 --- a/Editor/src/Windows/EditorInterface.cpp +++ b/Editor/src/Windows/EditorInterface.cpp @@ -3238,6 +3238,27 @@ namespace Nuake { } + void EditorInterface::OnDragNDrop(const std::vector& paths) + { + if (Engine::GetProject()) + { + for (const auto& path : paths) + { + if (!FileSystem::FileExists(path, true)) + { + continue; + } + + if (!FileSystem::DirectoryExists(FileSystemUI::m_CurrentDirectory->GetFullPath(), true)) + { + return; + } + + FileSystem::CopyFileAbsolute(path, FileSystemUI::m_CurrentDirectory->GetFullPath()); + } + } + } + bool EditorInterface::LoadProject(const std::string& projectPath) { FileSystem::SetRootDirectory(FileSystem::GetParentPath(projectPath)); diff --git a/Editor/src/Windows/EditorInterface.h b/Editor/src/Windows/EditorInterface.h index 2b116dac..ea75faeb 100644 --- a/Editor/src/Windows/EditorInterface.h +++ b/Editor/src/Windows/EditorInterface.h @@ -106,5 +106,6 @@ namespace Nuake public: void OnWindowFocused(); + void OnDragNDrop(const std::vector& paths); }; } diff --git a/Editor/src/Windows/FileSystemUI.cpp b/Editor/src/Windows/FileSystemUI.cpp index 4c52eb43..c2cb3e34 100644 --- a/Editor/src/Windows/FileSystemUI.cpp +++ b/Editor/src/Windows/FileSystemUI.cpp @@ -261,6 +261,8 @@ namespace Nuake OS::OpenTrenchbroomMap(file->GetAbsolutePath()); break; case FileType::NetScript: + case FileType::UI: + case FileType::CSS: OS::OpenIn(file->GetAbsolutePath()); break; case FileType::Scene: @@ -383,17 +385,30 @@ namespace Nuake textureImage = image; } } + else if (fileType == FileType::Solution) + { + textureImage = textureMgr->GetTexture("Resources/Images/sln_icon.png"); + } + else if (fileType == FileType::Map) + { + textureImage = textureMgr->GetTexture("Resources/Images/trenchbroom_icon.png"); + } ImGui::SetCursorPos(prevCursor); ImGui::Image(reinterpret_cast(textureImage->GetID()), ImVec2(100, 100), ImVec2(0, 1), ImVec2(1, 0)); ImGui::PopStyleVar(); - auto imguiStyle = ImGui::GetStyle(); + auto& imguiStyle = ImGui::GetStyle(); ImVec2 startOffset = ImVec2(imguiStyle.CellPadding.x / 2.0f, 0); ImVec2 offsetEnd = ImVec2(startOffset.x, imguiStyle.CellPadding.y / 2.0f); ImU32 rectColor = IM_COL32(255, 255, 255, 16); ImGui::GetWindowDrawList()->AddRectFilled(prevScreenPos + ImVec2(0, 100) - startOffset, prevScreenPos + ImVec2(100, 150) + offsetEnd, rectColor, 1.0f); + + ImU32 rectColor2 = UI::PrimaryCol; + Color fileTypeColor = GetColorByFileType(file->GetFileType()); + ImGui::GetWindowDrawList()->AddRectFilled(prevScreenPos + ImVec2(0, 100) - startOffset, prevScreenPos + ImVec2(100, 101) + offsetEnd, IM_COL32(fileTypeColor.r * 255.f, fileTypeColor.g * 255.f, fileTypeColor.b * 255.f, fileTypeColor.a * 255.f), 0.0f); + std::string visibleName = file->GetName(); const uint32_t MAX_CHAR_NAME = 32; if (file->GetName().size() >= MAX_CHAR_NAME) @@ -670,6 +685,57 @@ namespace Nuake Scan(); } + Color FileSystemUI::GetColorByFileType(FileType fileType) + { + switch (fileType) + { + case Nuake::FileType::Unknown: + break; + case Nuake::FileType::Image: + break; + case Nuake::FileType::Material: + break; + case Nuake::FileType::Mesh: + break; + case Nuake::FileType::Script: + return { 1.0, 0.0, 0.0, 1.0 }; + break; + case Nuake::FileType::NetScript: + return { 1.0, 0.0, 0.0, 1.0 }; + break; + case Nuake::FileType::Project: + return Engine::GetProject()->Settings.PrimaryColor; + break; + case Nuake::FileType::Prefab: + break; + case Nuake::FileType::Scene: + return { 0, 1.0f, 1.0, 1.0 }; + break; + case Nuake::FileType::Wad: + break; + case Nuake::FileType::Map: + return { 0.0, 1.0, 0.0, 1.0 }; + break; + case Nuake::FileType::Assembly: + break; + case Nuake::FileType::Solution: + break; + case Nuake::FileType::Audio: + return { 0.0, 0.0, 1.0, 1.0 }; + break; + case Nuake::FileType::UI: + return { 1.0, 1.0, 0.0, 1.0 }; + break; + case Nuake::FileType::CSS: + return { 1.0, 0.0, 1.0, 1.0 }; + break; + default: + break; + } + + return Color(0, 0, 0, 0); + } + void FileSystemUI::Scan() { if (!m_CurrentDirectory) @@ -888,6 +954,11 @@ namespace Nuake { for (Ref& d : m_CurrentDirectory->Directories) { + if (d->GetName() == "bin" || d->GetName() == ".vs" || d->GetName() == "obj") + { + continue; + } + if(String::Sanitize(d->Name).find(String::Sanitize(m_SearchKeyword)) != std::string::npos) { if (i + 1 % amount != 0) @@ -907,6 +978,11 @@ namespace Nuake { if(m_SearchKeyword.empty() || f->GetName().find(String::Sanitize(m_SearchKeyword)) != std::string::npos) { + if (f->GetFileType() == FileType::Unknown || f->GetFileType() == FileType::Assembly) + { + continue; + } + if (i + 1 % amount != 0 || i == 1) { ImGui::TableNextColumn(); @@ -915,7 +991,7 @@ namespace Nuake { ImGui::TableNextRow(); } - + DrawFile(f, i); i++; } diff --git a/Editor/src/Windows/FileSystemUI.h b/Editor/src/Windows/FileSystemUI.h index d4c7f8a6..392ad150 100644 --- a/Editor/src/Windows/FileSystemUI.h +++ b/Editor/src/Windows/FileSystemUI.h @@ -33,6 +33,8 @@ namespace Nuake { void DrawContextMenu(); void RefreshFileBrowser(); + Color GetColorByFileType(FileType fileType); + void Scan(); }; } diff --git a/Nuake/src/Application/Layer.h b/Nuake/src/Application/Layer.h index 89fb1c1b..9aa6af93 100644 --- a/Nuake/src/Application/Layer.h +++ b/Nuake/src/Application/Layer.h @@ -18,6 +18,7 @@ namespace Nuake { virtual void OnDraw() {}; virtual void OnWindowFocused() {}; + virtual void OnDragNDrop(const std::vector&) {}; // TODO: OnEvent inline const std::string& GetName() const { return m_Name; } diff --git a/Nuake/src/FileSystem/File.cpp b/Nuake/src/FileSystem/File.cpp index ae8fa4b7..577ceed8 100644 --- a/Nuake/src/FileSystem/File.cpp +++ b/Nuake/src/FileSystem/File.cpp @@ -78,6 +78,11 @@ FileType File::GetFileType() const { return FileType::Mesh; } + + if (ext == ".glb" || ext == ".gltf") + { + return FileType::MeshAsset; + } if (ext == ".html") { @@ -89,7 +94,7 @@ FileType File::GetFileType() const return FileType::CSS; } - return FileType::Unkown; + return FileType::Unknown; } std::string File::GetFileTypeAsString() const diff --git a/Nuake/src/FileSystem/FileSystem.cpp b/Nuake/src/FileSystem/FileSystem.cpp index fde1b000..7c00c69f 100644 --- a/Nuake/src/FileSystem/FileSystem.cpp +++ b/Nuake/src/FileSystem/FileSystem.cpp @@ -76,9 +76,20 @@ void FileSystem::SetRootDirectory(const std::string path) return; } + if (event == filewatch::Event::added) + { + const std::string& parent = std::filesystem::path(normalizedPath).parent_path().string(); + auto parentDirectory = FileSystem::GetDirectory(parent); + auto filePath = std::filesystem::path(normalizedPath); + std::string name = filePath.filename().string(); + std::string extension = filePath.extension().string(); + Ref newImportedFile = CreateRef(parentDirectory, FileSystem::RelativeToAbsolute(normalizedPath), name, extension); + parentDirectory->Files.push_back(newImportedFile); + } + if(Ref file = GetFile(normalizedPath); file) { - if (file->GetFileType() == FileType::Unkown) + if (file->GetFileType() == FileType::Unknown) { return; } @@ -89,8 +100,8 @@ void FileSystem::SetRootDirectory(const std::string path) { file->SetHasBeenModified(true); } - } + } } ); Scan(); @@ -121,6 +132,12 @@ std::string FileSystem::GetParentPath(const std::string& fullPath) return returnvalue + "/"; } +void FileSystem::CopyFileAbsolute(const std::string& src, const std::string& dest) +{ + const std::string& destPath = dest + "/" + std::filesystem::path(src).filename().string(); + std::filesystem::copy_file(src, destPath, std::filesystem::copy_options::overwrite_existing); +} + std::string FileSystem::ReadFile(const std::string& path, bool absolute) { std::string finalPath = path; @@ -288,3 +305,8 @@ std::string Directory::GetName() const { return Name; } + +std::string Directory::GetFullPath() const +{ + return FullPath; +} diff --git a/Nuake/src/FileSystem/FileSystem.h b/Nuake/src/FileSystem/FileSystem.h index f7813639..ac4ec08e 100644 --- a/Nuake/src/FileSystem/FileSystem.h +++ b/Nuake/src/FileSystem/FileSystem.h @@ -37,6 +37,7 @@ namespace Nuake static bool FileExists(const std::string& path, bool absolute = false); static std::string ReadFile(const std::string& path, bool absolute = false); + static void CopyFileAbsolute(const std::string& src, const std::string& dest); static std::ofstream fileWriter; static bool BeginWriteFile(const std::string path, bool absolute = false); diff --git a/Nuake/src/FileSystem/FileTypes.h b/Nuake/src/FileSystem/FileTypes.h index d9e7eb94..8b71b34e 100644 --- a/Nuake/src/FileSystem/FileTypes.h +++ b/Nuake/src/FileSystem/FileTypes.h @@ -4,10 +4,11 @@ namespace Nuake { enum class FileType { - Unkown, + Unknown, Image, Material, Mesh, + MeshAsset, Script, NetScript, Project, diff --git a/Nuake/src/Rendering/Textures/TextureManager.cpp b/Nuake/src/Rendering/Textures/TextureManager.cpp index a10018bb..261550f7 100644 --- a/Nuake/src/Rendering/Textures/TextureManager.cpp +++ b/Nuake/src/Rendering/Textures/TextureManager.cpp @@ -37,6 +37,8 @@ namespace Nuake m_Registry.emplace(Resources_Images_scene_icon_png_path, CreateRef(Resources_Images_scene_icon_png, Resources_Images_scene_icon_png_len)); m_Registry.emplace(Resources_Images_project_icon_png_path, CreateRef(Resources_Images_project_icon_png, Resources_Images_project_icon_png_len)); m_Registry.emplace(Resources_Images_csharp_icon_png_path, CreateRef(Resources_Images_csharp_icon_png, Resources_Images_csharp_icon_png_len)); + m_Registry.emplace(Resources_Images_sln_icon_png_path, CreateRef(Resources_Images_sln_icon_png, Resources_Images_sln_icon_png_len)); + m_Registry.emplace(Resources_Images_trenchbroom_icon_png_path, CreateRef(Resources_Images_trenchbroom_icon_png, Resources_Images_trenchbroom_icon_png_len)); unsigned char whitePixel[] = { 255, 255, 255, 255 }; m_Registry.emplace("Resources/Textures/Default.png", CreateRef(Vector2( 1, 1 ), GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE, &whitePixel)); diff --git a/Nuake/src/Resource/StaticResources.cpp b/Nuake/src/Resource/StaticResources.cpp index 76145e47..dbf20f7d 100644 --- a/Nuake/src/Resource/StaticResources.cpp +++ b/Nuake/src/Resource/StaticResources.cpp @@ -140647,41 +140647,23 @@ namespace Nuake { 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00, - 0x00, 0x01, 0x85, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xDB, 0xD1, - 0x51, 0x1A, 0x51, 0x14, 0x80, 0xE1, 0x43, 0x26, 0x05, 0xD8, 0x41, 0x28, - 0x21, 0x56, 0x10, 0xD3, 0x89, 0xE9, 0x80, 0x0E, 0x24, 0x15, 0x68, 0x3A, - 0x20, 0x95, 0x84, 0x0E, 0x62, 0x07, 0x5A, 0x82, 0x1D, 0xE0, 0xB9, 0xE3, - 0xFA, 0xE2, 0x93, 0xC2, 0x72, 0xF7, 0xEC, 0xFA, 0x7D, 0x33, 0x67, 0xEE, - 0xF0, 0xC0, 0x3E, 0xF0, 0x03, 0x97, 0x1D, 0x76, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x64, 0x15, - 0x1D, 0x1D, 0x0E, 0x87, 0x8B, 0x5C, 0x36, 0x39, 0x3F, 0xE2, 0x78, 0xBB, - 0xD5, 0x6A, 0xF5, 0x37, 0x16, 0xEA, 0x4B, 0xF4, 0xB5, 0xCD, 0xB9, 0xC9, - 0xB9, 0x88, 0xE3, 0xAC, 0x73, 0x76, 0x19, 0x76, 0x1B, 0x9C, 0x2E, 0x5F, - 0xC8, 0x7F, 0x6D, 0xE2, 0x04, 0xF9, 0xFC, 0xDB, 0xC3, 0x8B, 0xDB, 0xE0, - 0x34, 0x63, 0x04, 0x19, 0x8E, 0x73, 0x33, 0x44, 0xF9, 0x9F, 0xB3, 0x0E, - 0x8E, 0x33, 0x56, 0x90, 0xE1, 0x58, 0x9B, 0x21, 0xCA, 0xC3, 0x92, 0xA2, - 0xF4, 0xDE, 0x43, 0x46, 0x93, 0x1B, 0xFB, 0x5D, 0x2E, 0x97, 0xC3, 0xC3, - 0x16, 0xFA, 0x7B, 0x2C, 0xC0, 0x6C, 0x83, 0x34, 0x19, 0xE5, 0x3E, 0x97, - 0x9F, 0xC3, 0xC3, 0xF6, 0xF5, 0xB5, 0x09, 0xDE, 0x6F, 0xCC, 0xAF, 0xAC, - 0x37, 0xC7, 0x5D, 0x0F, 0xFB, 0xC9, 0x39, 0x74, 0xDD, 0xA7, 0xBE, 0xC6, - 0x02, 0xE4, 0x27, 0xE5, 0x31, 0x97, 0xCB, 0x7C, 0xE1, 0xAE, 0x73, 0xFD, - 0x16, 0xE3, 0x6A, 0x9F, 0xBA, 0xF6, 0x53, 0xFD, 0x57, 0x74, 0xB0, 0x88, - 0x20, 0xAF, 0x32, 0xCC, 0x2E, 0x46, 0x96, 0x91, 0xAF, 0xE2, 0xE5, 0xFC, - 0xA7, 0x8B, 0x59, 0xEF, 0x21, 0x4B, 0x24, 0x48, 0x31, 0x82, 0x14, 0x23, - 0x48, 0x31, 0x82, 0x14, 0x23, 0x48, 0x31, 0x53, 0xFC, 0xEC, 0xBD, 0x6A, - 0x67, 0x5B, 0x31, 0x2F, 0xFB, 0xE8, 0x64, 0x8A, 0x20, 0x8F, 0x39, 0xBB, - 0x98, 0x8F, 0xEB, 0xE8, 0x68, 0x92, 0x20, 0x79, 0x02, 0xF7, 0x3B, 0x66, - 0x62, 0x38, 0x31, 0xEC, 0xC6, 0x1E, 0x52, 0x8C, 0x20, 0xC5, 0x08, 0x52, - 0x8C, 0x20, 0xC5, 0x08, 0x52, 0x8C, 0x20, 0xC5, 0x08, 0x52, 0x8C, 0x20, - 0xC5, 0x08, 0x52, 0x8C, 0x20, 0xC5, 0x08, 0x52, 0x8C, 0x20, 0xC5, 0x08, - 0x52, 0x8C, 0x20, 0xC5, 0x08, 0x52, 0x8C, 0x20, 0xC5, 0x4C, 0x11, 0xE4, - 0xD8, 0xBB, 0xA7, 0x3E, 0x85, 0xDE, 0xFF, 0x18, 0xEE, 0x73, 0xB6, 0xE7, - 0xB8, 0xE0, 0xFA, 0x4C, 0xDA, 0x9B, 0xA7, 0xDD, 0xE6, 0x70, 0x17, 0x9D, - 0x4C, 0x71, 0xD3, 0x67, 0xBB, 0x70, 0x79, 0x4E, 0xF7, 0x72, 0xEC, 0x73, - 0xFE, 0xE4, 0xDF, 0xCE, 0x4F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xCF, 0x33, 0x2F, 0x41, 0xDD, 0x09, - 0x9A, 0x4D, 0xAC, 0x73, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, - 0xAE, 0x42, 0x60, 0x82, + 0x00, 0x00, 0xAE, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xD1, 0x89, + 0x11, 0xC2, 0x40, 0x0C, 0x04, 0x41, 0x41, 0xE4, 0xCA, 0x5C, 0x40, 0x06, + 0x7E, 0x8F, 0x75, 0x55, 0x77, 0x08, 0x33, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xCF, 0x5C, 0xA7, 0x8B, + 0xF3, 0xE6, 0x5A, 0x5D, 0x9C, 0x33, 0xD7, 0xEB, 0xE2, 0xB8, 0xB9, 0x47, + 0x17, 0xC7, 0xCC, 0x7D, 0xBA, 0xD8, 0x6F, 0xEE, 0xD5, 0xC5, 0x3E, 0x73, + 0xBF, 0x2E, 0xB6, 0x9B, 0x35, 0xBA, 0xD8, 0x66, 0xD6, 0xE9, 0x7A, 0xB0, + 0x57, 0x2D, 0xF2, 0x2B, 0x55, 0x0F, 0xF6, 0xFA, 0xAA, 0x05, 0xDE, 0x45, + 0x14, 0x43, 0xC2, 0x18, 0x12, 0xC6, 0x90, 0x30, 0x86, 0x84, 0x31, 0x24, + 0x8C, 0x21, 0x61, 0x0C, 0x09, 0x63, 0x48, 0x18, 0x43, 0xC2, 0x18, 0x12, + 0xC6, 0x90, 0x30, 0x86, 0x84, 0x31, 0x24, 0x8C, 0x21, 0x61, 0x0C, 0x09, + 0x63, 0x48, 0x18, 0x43, 0xC2, 0x18, 0x12, 0xC6, 0x90, 0x30, 0x86, 0x84, + 0x31, 0x24, 0x8C, 0x21, 0x61, 0x0C, 0x09, 0x63, 0x48, 0x18, 0x43, 0xC2, + 0x18, 0x12, 0xC6, 0x90, 0x30, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x85, 0x3E, 0x34, 0x79, 0x38, + 0xB6, 0xB2, 0x31, 0x93, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, + 0x44, 0xAE, 0x42, 0x60, 0x82, }; unsigned int Resources_Images_folder_icon_png_len = sizeof(Resources_Images_folder_icon_png); @@ -142608,59 +142590,47 @@ namespace Nuake { 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00, - 0x00, 0x02, 0x64, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xD7, 0x81, - 0x71, 0xDA, 0x30, 0x14, 0x80, 0x61, 0xD1, 0xEB, 0x00, 0xDE, 0x00, 0xBA, - 0x01, 0x1B, 0x34, 0x23, 0xB0, 0x01, 0x74, 0x02, 0xD8, 0x80, 0x76, 0x02, - 0xB2, 0x81, 0xAF, 0x13, 0xD0, 0x0D, 0xCC, 0x06, 0x4D, 0x27, 0x80, 0x0D, - 0xEC, 0x0D, 0x54, 0xA9, 0x3C, 0x35, 0x8F, 0x17, 0xD9, 0x24, 0x57, 0xD7, - 0xE0, 0xCB, 0xFF, 0xDD, 0xE9, 0x6C, 0xCB, 0x7A, 0x4F, 0x8E, 0x84, 0x25, - 0xC7, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF7, 0xCA, 0x7B, 0x3F, 0x0B, 0x65, 0x1B, 0x8F, 0x0E, - 0xB7, 0x17, 0x26, 0xA2, 0xF2, 0x67, 0x7B, 0xD7, 0xA3, 0x90, 0xAF, 0x90, - 0xC9, 0x9E, 0x39, 0xBC, 0x5E, 0x18, 0xB0, 0x45, 0x9C, 0x8C, 0x50, 0x1E, - 0x5C, 0x8F, 0x62, 0x3E, 0x99, 0x68, 0xEF, 0x06, 0xF2, 0xD1, 0x0D, 0x20, - 0xFD, 0xC2, 0x26, 0x93, 0xC9, 0x29, 0xFE, 0xEA, 0xC2, 0xE9, 0x3C, 0x94, - 0x53, 0xBC, 0x56, 0x6D, 0x62, 0x7D, 0x2C, 0x8D, 0x54, 0x5D, 0xB4, 0x51, - 0x71, 0xD1, 0x53, 0xA8, 0x6F, 0x54, 0x17, 0x87, 0x58, 0xA7, 0x62, 0x75, - 0xCE, 0x99, 0xE4, 0xB5, 0x31, 0xB9, 0x36, 0xB6, 0xBF, 0xC2, 0xFC, 0x0D, - 0x4D, 0x2E, 0xC7, 0xA8, 0xC8, 0x2B, 0x9F, 0x6C, 0x42, 0xA9, 0xD5, 0xF5, - 0x4E, 0xB5, 0x2B, 0xA5, 0xAE, 0x0A, 0xE5, 0x28, 0xE7, 0x4B, 0xB9, 0xF7, - 0xE8, 0x2F, 0xC5, 0xFB, 0x9B, 0x4C, 0x6C, 0xA9, 0xEA, 0x6C, 0x5F, 0xD1, - 0x57, 0xF3, 0x6C, 0xAD, 0x6D, 0xC2, 0x71, 0xE5, 0x5F, 0xDA, 0xBA, 0xB1, - 0x33, 0x13, 0x72, 0x8C, 0x93, 0xA0, 0x06, 0x50, 0x0F, 0x7A, 0xAA, 0xAB, - 0xA5, 0xFC, 0x59, 0x82, 0xD4, 0x64, 0xD4, 0x99, 0xD8, 0x07, 0x13, 0x5B, - 0xCA, 0xF5, 0x42, 0x0F, 0x62, 0x28, 0x6B, 0xFF, 0x72, 0x92, 0xF5, 0x80, - 0x97, 0x52, 0xD2, 0xE4, 0x2C, 0x43, 0x99, 0x9B, 0xBE, 0xB6, 0xBE, 0xE7, - 0x25, 0xF1, 0x26, 0xCC, 0x84, 0x2C, 0x55, 0x7D, 0x25, 0x75, 0x95, 0x5C, - 0x97, 0x6A, 0xD2, 0xF4, 0x52, 0x51, 0x77, 0xC4, 0xEE, 0x4D, 0x6C, 0x9A, - 0x90, 0xBD, 0x5C, 0xEB, 0x37, 0x70, 0x61, 0xFA, 0xAB, 0x74, 0x8C, 0xD4, - 0x6D, 0xA4, 0xFF, 0x94, 0x67, 0xF0, 0x3D, 0xE4, 0x83, 0x1B, 0xD6, 0x2F, - 0x75, 0xFE, 0x43, 0x8E, 0x33, 0xD3, 0xE6, 0xEF, 0x5A, 0xEF, 0xCF, 0xEB, - 0x76, 0xD1, 0x11, 0x3B, 0x77, 0x79, 0xA9, 0x7E, 0x25, 0x03, 0x7C, 0x0C, - 0xE7, 0x3B, 0xD3, 0x5F, 0x3A, 0x1E, 0x52, 0x50, 0xE8, 0xF7, 0x31, 0x94, - 0x4F, 0xA1, 0x7C, 0x71, 0x37, 0x32, 0xC8, 0xA6, 0xAE, 0xD4, 0xEA, 0xBC, - 0x68, 0x69, 0xD3, 0xBC, 0x21, 0xF6, 0xDA, 0x06, 0x7B, 0x70, 0xE7, 0xCD, - 0xBE, 0x2B, 0x7F, 0xE1, 0xEE, 0xC8, 0xD0, 0x6F, 0xC8, 0x2A, 0x73, 0xFE, - 0xD4, 0xD6, 0x58, 0xBE, 0x78, 0x9A, 0x4C, 0xEC, 0xE2, 0x4A, 0x6C, 0xAA, - 0x8F, 0x5F, 0x45, 0xDF, 0x62, 0x09, 0xE7, 0xDF, 0x25, 0x57, 0x7A, 0xD3, - 0x4E, 0x26, 0x97, 0x5E, 0xFA, 0x7A, 0xFD, 0x7F, 0xE6, 0xAE, 0x98, 0x3D, - 0xA4, 0x96, 0xB5, 0xBB, 0xB2, 0xFB, 0x8A, 0xCF, 0x7C, 0x29, 0x49, 0xFD, - 0x46, 0xB5, 0xDD, 0x9B, 0xD8, 0x59, 0x2E, 0x56, 0xAF, 0xFD, 0x12, 0xB3, - 0xF3, 0xCF, 0x7B, 0xD1, 0x2E, 0xD3, 0xE6, 0x67, 0xCB, 0x33, 0xE9, 0x67, - 0xAF, 0xBC, 0xDA, 0xC7, 0x46, 0xCB, 0xFC, 0x51, 0x0B, 0xFF, 0xFC, 0xB5, - 0x13, 0x07, 0x68, 0xAD, 0xDA, 0x95, 0x7A, 0x50, 0x4D, 0x8E, 0xAD, 0xBF, - 0xFC, 0x3C, 0x8D, 0x39, 0x3E, 0x77, 0xC5, 0x9A, 0xBE, 0x52, 0x7F, 0x5B, - 0x93, 0x37, 0xD7, 0x66, 0x9D, 0xE9, 0xDB, 0xB7, 0x3D, 0xDB, 0xE8, 0x98, - 0x09, 0x99, 0x4A, 0xDD, 0xD4, 0xAB, 0x2F, 0xA9, 0x37, 0xE4, 0x9A, 0xA6, - 0x1C, 0xA6, 0x7E, 0xDF, 0x31, 0x99, 0xD3, 0x6B, 0xFD, 0xB5, 0xE5, 0x55, - 0xF7, 0x8B, 0xAE, 0xFB, 0xA3, 0x92, 0x9B, 0x90, 0x9E, 0xF3, 0x97, 0x2A, - 0xFF, 0xF8, 0x97, 0x94, 0xFF, 0x6D, 0x80, 0x09, 0x39, 0xCA, 0x52, 0xB3, - 0x73, 0x78, 0x9D, 0x6B, 0x4B, 0xC2, 0x3F, 0xE6, 0xBE, 0xAB, 0xCF, 0x56, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, - 0x8E, 0xFD, 0x06, 0x49, 0x23, 0x01, 0x2C, 0x30, 0xD4, 0xA8, 0x50, 0x00, - 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, + 0x00, 0x01, 0xD1, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xDA, 0xE1, + 0x6D, 0xC2, 0x30, 0x10, 0x40, 0xE1, 0x4B, 0x27, 0x60, 0x04, 0x3A, 0x41, + 0x19, 0x21, 0x9B, 0x94, 0x4D, 0xE8, 0x06, 0x8C, 0xD0, 0x51, 0xA0, 0x13, + 0x74, 0x84, 0xB2, 0x01, 0x23, 0xB8, 0xB6, 0x20, 0x12, 0x6D, 0x81, 0x86, + 0xD8, 0x39, 0x9F, 0xED, 0xF7, 0x49, 0x56, 0x7E, 0x40, 0x30, 0xF2, 0x53, + 0x00, 0x03, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xAC, 0x13, 0x0D, 0xCE, 0x39, 0x89, + 0xD5, 0x75, 0x93, 0x9F, 0xAB, 0x9F, 0x7E, 0xE9, 0x0F, 0x3B, 0x3F, 0xC2, + 0xF1, 0x70, 0x1E, 0x7B, 0x3F, 0x3E, 0xFC, 0xC3, 0xEE, 0xA5, 0x39, 0x21, + 0x48, 0xEC, 0x98, 0x3E, 0xF5, 0xD2, 0x8F, 0x2F, 0x77, 0x5B, 0xB8, 0xED, + 0x55, 0x9A, 0x92, 0x29, 0xC8, 0x88, 0x18, 0x8D, 0x86, 0xC9, 0x10, 0xE4, + 0xC1, 0x18, 0x97, 0xB6, 0x52, 0x3D, 0xE5, 0x20, 0x11, 0x31, 0x06, 0x9F, + 0x7E, 0x2C, 0xA4, 0x5A, 0x8A, 0x41, 0x12, 0xC4, 0x18, 0xEC, 0xA4, 0x5A, + 0x4A, 0x41, 0x12, 0xC6, 0x18, 0x54, 0xFA, 0xF2, 0xA5, 0x10, 0x64, 0x86, + 0x18, 0x83, 0x5E, 0x14, 0x55, 0xB1, 0x0F, 0x71, 0x3F, 0xF7, 0x19, 0xA9, + 0x1D, 0xFC, 0xD4, 0xCF, 0xA2, 0xE4, 0x49, 0x0A, 0x37, 0x73, 0x8C, 0x20, + 0x5C, 0x79, 0x6A, 0x1F, 0x87, 0x8B, 0x0E, 0xA2, 0x10, 0x63, 0xB0, 0x16, + 0x25, 0xC5, 0x06, 0x51, 0x8C, 0x11, 0xF4, 0x5A, 0xEF, 0x25, 0x45, 0x06, + 0x71, 0xA7, 0x3D, 0x82, 0x56, 0x8C, 0xC1, 0x8B, 0x28, 0x28, 0x2E, 0x48, + 0xA6, 0x18, 0x41, 0x2F, 0x0A, 0x8A, 0x0A, 0x72, 0x11, 0x63, 0x25, 0xFA, + 0x54, 0xE6, 0x2C, 0x26, 0x48, 0xE6, 0x18, 0x81, 0xCA, 0x57, 0x29, 0x3A, + 0xFB, 0x90, 0x48, 0x3E, 0xC6, 0x9B, 0x3F, 0x1C, 0xE5, 0x7E, 0x8C, 0xC5, + 0x79, 0xAC, 0x64, 0xA6, 0xC5, 0xEB, 0x22, 0x7E, 0x93, 0xA9, 0x46, 0x88, + 0xE1, 0x1E, 0xDC, 0x58, 0xFA, 0xBB, 0xAF, 0xE7, 0xD8, 0xB5, 0x4B, 0xEB, + 0x86, 0x18, 0x53, 0x17, 0xC3, 0x9F, 0xB6, 0x71, 0x09, 0x49, 0xCB, 0x2E, + 0x63, 0xC4, 0x2C, 0x86, 0x3F, 0x75, 0xEB, 0x12, 0x91, 0x56, 0xFD, 0x8E, + 0x11, 0xBB, 0x18, 0xFE, 0xF4, 0x9D, 0x4B, 0x40, 0x5A, 0x74, 0x2D, 0x46, + 0x82, 0x20, 0xBD, 0x4B, 0x40, 0x5A, 0x73, 0x2B, 0x46, 0x8A, 0xC5, 0xF0, + 0x0F, 0x71, 0x74, 0x91, 0xA4, 0x25, 0xF7, 0x62, 0x24, 0x0A, 0xF2, 0xEE, + 0x22, 0x89, 0x02, 0x13, 0x1B, 0x43, 0x77, 0xDA, 0x67, 0x6C, 0x64, 0x5E, + 0x07, 0x29, 0x40, 0xF6, 0x20, 0x4A, 0x31, 0x8A, 0x91, 0x35, 0x08, 0x31, + 0xFE, 0xCA, 0x16, 0x84, 0x18, 0xD7, 0x65, 0x09, 0x42, 0x8C, 0xDB, 0xD4, + 0x83, 0x10, 0xE3, 0x3E, 0xD5, 0x20, 0xC4, 0xF8, 0x9F, 0x5A, 0x10, 0x62, + 0x8C, 0xA3, 0x12, 0x84, 0x18, 0xE3, 0x69, 0x5D, 0x21, 0xC4, 0x18, 0xA9, + 0xF8, 0x3F, 0xCA, 0xD5, 0x86, 0x20, 0xC6, 0x10, 0xC4, 0x18, 0x82, 0x18, + 0x43, 0x10, 0x63, 0x08, 0x62, 0x0C, 0x41, 0x8C, 0x21, 0x88, 0x31, 0x04, + 0x31, 0x86, 0x20, 0xC6, 0x10, 0xC4, 0x18, 0x82, 0x18, 0x43, 0x10, 0x63, + 0x08, 0x62, 0x0C, 0x41, 0x8C, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xF3, 0x0D, + 0xCA, 0x0B, 0x22, 0xC0, 0x80, 0xFC, 0x24, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, }; unsigned int Resources_Images_project_icon_png_len = sizeof(Resources_Images_project_icon_png); @@ -265566,6 +265536,112 @@ namespace Nuake { }; unsigned int Resources_Images_shape_png_len = sizeof(Resources_Images_shape_png); + // Data for file: Resources_Images_sln_icon_png_path + const std::string Resources_Images_sln_icon_png_path = R"(Resources/Images/sln_icon.png)"; + unsigned char Resources_Images_sln_icon_png[] = { + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x70, 0xE2, 0x95, 0x54, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, + 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, + 0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x04, 0x67, + 0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00, + 0x00, 0x04, 0x3B, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0x9C, 0x81, + 0x55, 0xDB, 0x30, 0x10, 0x86, 0x45, 0x27, 0x60, 0x83, 0x86, 0x0D, 0xCA, + 0x04, 0xD0, 0x09, 0x60, 0x03, 0xD2, 0x09, 0x60, 0x83, 0xB8, 0x13, 0xC0, + 0x06, 0xA6, 0x13, 0x30, 0x82, 0xD9, 0x20, 0xDD, 0x40, 0x6C, 0x40, 0x37, + 0xF8, 0x7B, 0xAA, 0xEC, 0xC6, 0x84, 0x58, 0x3A, 0xCB, 0x8A, 0x13, 0xC7, + 0xFF, 0xF7, 0x9E, 0x9E, 0x79, 0xCF, 0xB6, 0xCC, 0xBB, 0xDF, 0x3A, 0xDF, + 0x9D, 0xA4, 0x18, 0x43, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, + 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x12, + 0x00, 0xC0, 0xB9, 0xB4, 0x67, 0x69, 0x6B, 0x69, 0xF7, 0xD2, 0x16, 0x86, + 0x1C, 0x06, 0x67, 0x7C, 0x69, 0x16, 0x9F, 0xA9, 0xA4, 0xDD, 0x51, 0x9C, + 0x11, 0x11, 0x63, 0x2F, 0xA5, 0xBD, 0x23, 0x0E, 0xC5, 0xD9, 0x27, 0xB5, + 0x8B, 0x7A, 0x42, 0x1A, 0x15, 0xC5, 0xC9, 0x48, 0xED, 0xA2, 0xD6, 0xC8, + 0xC3, 0x4B, 0x2D, 0xCE, 0xB9, 0x21, 0xFD, 0x11, 0xC3, 0x5D, 0x23, 0xEC, + 0xA2, 0xDC, 0x39, 0x8B, 0x04, 0x0C, 0xE9, 0x87, 0xD8, 0xAC, 0x88, 0xD8, + 0xB4, 0x6A, 0xDE, 0x74, 0x39, 0x5E, 0x49, 0x2B, 0xFB, 0x88, 0x63, 0x88, + 0x0E, 0x78, 0x17, 0x55, 0x45, 0xEC, 0xB9, 0x0A, 0xDC, 0x7F, 0x55, 0x8B, + 0x13, 0xFC, 0xF8, 0x1B, 0x12, 0x07, 0xDE, 0x45, 0xD9, 0x80, 0x1D, 0x9D, + 0x91, 0xAF, 0x7A, 0xF4, 0x77, 0x53, 0x8B, 0x43, 0x41, 0xFA, 0x22, 0x36, + 0x7A, 0x40, 0x18, 0xF7, 0x61, 0x5F, 0x98, 0x9E, 0xC0, 0x8F, 0x38, 0x0A, + 0xA2, 0x05, 0x3E, 0xA4, 0x7D, 0x89, 0x88, 0xF1, 0x68, 0x12, 0xA1, 0x20, + 0x3D, 0x10, 0xBB, 0x7C, 0x43, 0xDC, 0x45, 0xDD, 0x99, 0x01, 0x4C, 0x5A, + 0x10, 0x67, 0x20, 0x33, 0x12, 0xF0, 0x2E, 0x2A, 0xF4, 0xE1, 0xB5, 0xC8, + 0x90, 0xCC, 0x4D, 0x52, 0x10, 0xF8, 0x8F, 0x69, 0xD5, 0x32, 0xC4, 0x8D, + 0xD9, 0x13, 0xD0, 0x65, 0xDD, 0x25, 0x32, 0x25, 0x6F, 0x93, 0x11, 0xA4, + 0x36, 0x8C, 0xAB, 0x94, 0xAE, 0x03, 0x46, 0x59, 0x98, 0x8C, 0x40, 0x97, + 0x75, 0xDF, 0x9B, 0x8C, 0xE0, 0xD8, 0x05, 0xA9, 0x85, 0x70, 0x49, 0x97, + 0xA6, 0x48, 0xE7, 0xAE, 0x29, 0x4C, 0x06, 0xA4, 0x9F, 0x5B, 0xC4, 0x5D, + 0x54, 0x76, 0x97, 0x39, 0x05, 0x41, 0x52, 0xB0, 0x43, 0x8C, 0x85, 0xB8, + 0x8B, 0xAA, 0xB0, 0xA7, 0xFA, 0xD2, 0xA9, 0x0A, 0xD2, 0x50, 0xA2, 0x87, + 0x1B, 0xC3, 0xC0, 0xAC, 0x3B, 0x07, 0x98, 0xB0, 0x20, 0x15, 0x14, 0x25, + 0x07, 0xF8, 0xD1, 0xF2, 0xA0, 0x78, 0x4E, 0xD6, 0xAC, 0x7B, 0x47, 0xFF, + 0xAA, 0x11, 0x3B, 0x55, 0x41, 0x6E, 0x5A, 0xE7, 0x17, 0xE8, 0x28, 0x37, + 0xEC, 0x10, 0x66, 0xD1, 0xF1, 0x8C, 0xBD, 0x64, 0xDD, 0x75, 0xDF, 0x4D, + 0x94, 0x56, 0x29, 0xAF, 0x9F, 0xA4, 0x20, 0x5F, 0x77, 0x5C, 0xB7, 0x84, + 0xAE, 0x7A, 0x5A, 0x36, 0xC6, 0xC5, 0xFE, 0xB3, 0xEE, 0xF6, 0xA8, 0x9B, + 0x97, 0x20, 0xAD, 0xEB, 0x57, 0x88, 0x63, 0xE1, 0x43, 0x68, 0x1B, 0xB8, + 0x26, 0x39, 0xEB, 0xC6, 0xEE, 0xDC, 0x65, 0x9E, 0x82, 0xD4, 0xF7, 0x68, + 0xDD, 0x58, 0x17, 0x16, 0xE9, 0x2E, 0xAA, 0xEB, 0x5B, 0x34, 0x5F, 0x41, + 0x5A, 0xF7, 0x6A, 0xDD, 0x58, 0x9B, 0x12, 0x09, 0x21, 0x2D, 0xE2, 0x19, + 0x3D, 0x05, 0x69, 0xF5, 0xB1, 0x42, 0x1C, 0xE7, 0xA2, 0x92, 0xB2, 0x6E, + 0xC4, 0x23, 0x34, 0x0A, 0xB2, 0xA3, 0x9F, 0x90, 0x1B, 0xB3, 0x48, 0x4C, + 0x24, 0xA1, 0x5F, 0x5D, 0x32, 0xBB, 0x28, 0xAB, 0x82, 0xC2, 0xEF, 0xE3, + 0xB3, 0x1B, 0x73, 0xF7, 0xA5, 0xB8, 0x28, 0x57, 0x8A, 0xEF, 0xB3, 0xBA, + 0x64, 0x76, 0x82, 0xD8, 0xFA, 0xDC, 0x63, 0x4C, 0x18, 0x78, 0x7F, 0xBF, + 0x42, 0x62, 0xD6, 0x8D, 0xF8, 0x82, 0x06, 0x0A, 0x82, 0x8F, 0x6F, 0xBD, + 0xFB, 0x7B, 0xD0, 0x44, 0x51, 0xC7, 0xFF, 0xA2, 0xA9, 0xFE, 0x1E, 0xAD, + 0x20, 0x5F, 0xCC, 0xE1, 0x58, 0x48, 0x7B, 0xC6, 0x80, 0x0C, 0x7B, 0x1B, + 0xF8, 0xF2, 0xCB, 0x5A, 0xDA, 0x68, 0x93, 0x62, 0xB9, 0x39, 0xA4, 0x20, + 0x0D, 0xCE, 0x78, 0x16, 0x03, 0xCB, 0xE4, 0x72, 0x7F, 0x29, 0x07, 0x97, + 0xB1, 0x4F, 0x7A, 0x05, 0xE1, 0x31, 0x08, 0xF2, 0x2A, 0xED, 0xF2, 0xEC, + 0xEC, 0xEC, 0xB7, 0x19, 0x80, 0xDC, 0xFF, 0x43, 0x0E, 0x85, 0x99, 0x38, + 0x87, 0x14, 0xE4, 0x8F, 0xB4, 0xA5, 0x18, 0xF2, 0xFB, 0x50, 0x31, 0x1A, + 0xA4, 0x9F, 0x9F, 0x72, 0xB8, 0x90, 0xF6, 0x66, 0x26, 0xCA, 0xA1, 0x04, + 0x79, 0x92, 0x76, 0x21, 0x06, 0xFC, 0xD5, 0x75, 0x01, 0x36, 0xB3, 0x90, + 0x85, 0xE9, 0x81, 0xF4, 0xF9, 0x26, 0xCD, 0x89, 0x52, 0x98, 0xB9, 0x02, + 0x7D, 0x94, 0xE5, 0x3E, 0xE2, 0xD1, 0xF9, 0x0A, 0xF8, 0xA9, 0x59, 0xDB, + 0xEA, 0xEB, 0x25, 0xE5, 0xC3, 0x8F, 0xEE, 0x8D, 0x38, 0x47, 0x1B, 0x65, + 0x65, 0x01, 0x4A, 0x41, 0x14, 0xFD, 0x84, 0x66, 0x03, 0x2D, 0xD2, 0x8B, + 0x89, 0x2B, 0x50, 0x10, 0xBD, 0x20, 0xE8, 0xB7, 0x48, 0xE2, 0xC1, 0x24, + 0x00, 0xDD, 0x68, 0xA1, 0x20, 0xD0, 0x15, 0xFD, 0xB6, 0x71, 0x99, 0x7E, + 0x52, 0x78, 0x8B, 0xF0, 0x68, 0x99, 0xFD, 0x7C, 0x48, 0x85, 0x74, 0x2C, + 0x4E, 0x70, 0x3E, 0x64, 0xF4, 0x28, 0x0B, 0xB5, 0x7B, 0x32, 0x3E, 0xA3, + 0xBE, 0x0E, 0x5C, 0xEA, 0xC2, 0x62, 0x77, 0xDD, 0x5B, 0xC7, 0xF9, 0x85, + 0xEB, 0x03, 0x09, 0xE5, 0x17, 0x89, 0xC2, 0x5E, 0xE5, 0x70, 0x69, 0x7C, + 0xB4, 0x77, 0x7A, 0x40, 0x39, 0x42, 0xA0, 0x77, 0x4F, 0xFF, 0x5D, 0x12, + 0x74, 0x33, 0x8B, 0x85, 0x49, 0x04, 0x1F, 0x2B, 0xCB, 0x27, 0xED, 0xB2, + 0xB6, 0x57, 0x9D, 0xC4, 0x16, 0x2A, 0xFC, 0x33, 0x08, 0x3A, 0xC2, 0x62, + 0xC4, 0x23, 0xA5, 0x21, 0xAB, 0x4E, 0x1A, 0xD1, 0x4F, 0x5A, 0x10, 0x87, + 0x85, 0x7F, 0xDB, 0x63, 0xD1, 0x93, 0x6A, 0x26, 0x10, 0xF1, 0xAD, 0x06, + 0xEE, 0xDC, 0xB5, 0x49, 0x04, 0xCA, 0x35, 0x5D, 0x53, 0x16, 0x44, 0x43, + 0x89, 0x1E, 0x11, 0x13, 0x74, 0xE5, 0xF5, 0xC2, 0xEC, 0x11, 0x9C, 0xA8, + 0x20, 0xCE, 0xA8, 0x43, 0x56, 0x19, 0xAE, 0x22, 0xFD, 0x27, 0x65, 0xF7, + 0xCA, 0x67, 0x1F, 0xBD, 0x20, 0x8D, 0x0F, 0xB6, 0x88, 0xE3, 0xDC, 0x53, + 0xD2, 0x2C, 0xE0, 0x8E, 0xE7, 0x2E, 0x11, 0x77, 0x61, 0x0B, 0x93, 0x99, + 0xA3, 0x17, 0xA4, 0x4D, 0xC4, 0x48, 0xD9, 0xDF, 0x5A, 0xE8, 0x32, 0xF0, + 0xC2, 0x64, 0x04, 0x13, 0xDD, 0x41, 0xE5, 0xB6, 0x0F, 0x57, 0xAD, 0x37, + 0x35, 0xD9, 0x3D, 0x29, 0x9F, 0xF7, 0x18, 0x11, 0xA5, 0xC4, 0xDC, 0x76, + 0x50, 0xED, 0xA2, 0xFE, 0xE7, 0x47, 0x99, 0xC5, 0x03, 0xF7, 0x18, 0x1E, + 0x1F, 0x88, 0xBB, 0x30, 0x27, 0x58, 0x52, 0x81, 0x72, 0xEB, 0x19, 0x14, + 0x44, 0x0B, 0x7C, 0x79, 0xA6, 0x44, 0x18, 0xEE, 0x53, 0x1F, 0x1B, 0xC4, + 0x43, 0x63, 0x0B, 0xFE, 0x92, 0xC3, 0xB8, 0x40, 0x97, 0xDD, 0xDF, 0x2A, + 0xFB, 0x72, 0x23, 0xEF, 0x1A, 0x1D, 0x65, 0x20, 0x43, 0x74, 0x40, 0x57, + 0xEA, 0x2F, 0x02, 0xF7, 0x3B, 0x11, 0xA2, 0x25, 0x20, 0x43, 0xFA, 0x81, + 0xB8, 0x0B, 0xAB, 0xB0, 0xD9, 0xB9, 0xA5, 0x12, 0x81, 0x82, 0x0C, 0x04, + 0x9F, 0x17, 0x50, 0x6C, 0x63, 0xFB, 0x88, 0xD0, 0xE2, 0xDD, 0x90, 0x34, + 0xD0, 0x7F, 0x35, 0x4A, 0xA7, 0x08, 0xD8, 0xFC, 0x20, 0x26, 0x7F, 0x73, + 0x71, 0x28, 0x88, 0x67, 0xF7, 0x5D, 0x54, 0xF0, 0xFB, 0x1F, 0x29, 0x42, + 0x6E, 0x10, 0xCF, 0xEE, 0x29, 0xC2, 0xD8, 0x20, 0xFC, 0xCB, 0xD6, 0x14, + 0xE1, 0x10, 0x60, 0x93, 0xDD, 0x3B, 0x11, 0x56, 0x14, 0x81, 0x10, 0x42, + 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, 0x84, 0x10, 0x42, 0x08, 0x21, + 0x84, 0x10, 0x42, 0x66, 0xCF, 0x5F, 0xF4, 0xBF, 0xD0, 0x30, 0x2F, 0xE5, + 0x2A, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, + 0x60, 0x82, + }; + unsigned int Resources_Images_sln_icon_png_len = sizeof(Resources_Images_sln_icon_png); + // Data for file: Resources_Images_speaker_png_path const std::string Resources_Images_speaker_png_path = R"(Resources/Images/speaker.png)"; unsigned char Resources_Images_speaker_png[] = { @@ -265668,6 +265744,58 @@ namespace Nuake { }; unsigned int Resources_Images_speaker_png_len = sizeof(Resources_Images_speaker_png); + // Data for file: Resources_Images_trenchbroom_icon_png_path + const std::string Resources_Images_trenchbroom_icon_png_path = R"(Resources/Images/trenchbroom_icon.png)"; + unsigned char Resources_Images_trenchbroom_icon_png[] = { + 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, + 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x64, + 0x08, 0x06, 0x00, 0x00, 0x00, 0x70, 0xE2, 0x95, 0x54, 0x00, 0x00, 0x00, + 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B, + 0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, + 0x47, 0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x04, 0x67, + 0x41, 0x4D, 0x41, 0x00, 0x00, 0xB1, 0x8F, 0x0B, 0xFC, 0x61, 0x05, 0x00, + 0x00, 0x01, 0xB7, 0x49, 0x44, 0x41, 0x54, 0x78, 0x01, 0xED, 0xDB, 0xD1, + 0x6D, 0xC2, 0x30, 0x10, 0xC6, 0xF1, 0xA3, 0xEA, 0x7B, 0x19, 0x21, 0x23, + 0xB0, 0x41, 0x3B, 0x42, 0x37, 0xA0, 0x1B, 0x94, 0x0D, 0xA0, 0x13, 0xD0, + 0x0D, 0x3A, 0x02, 0x23, 0x44, 0x9D, 0x80, 0x11, 0x32, 0x02, 0x23, 0x5C, + 0xCF, 0x4A, 0x1E, 0x28, 0x4A, 0xC8, 0x39, 0xD8, 0x06, 0xC4, 0xFF, 0x27, + 0x59, 0xA0, 0xE0, 0xF0, 0x70, 0x1F, 0xD1, 0xD9, 0x89, 0x10, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x55, 0x5D, 0xD8, 0xA8, 0x6D, 0x1C, + 0xB4, 0xB5, 0xB7, 0xB1, 0x14, 0x94, 0x67, 0x85, 0x7F, 0xD7, 0x61, 0x3F, + 0x82, 0x72, 0xAC, 0xE0, 0xD5, 0xD1, 0x55, 0x31, 0x64, 0x25, 0xC8, 0xAF, + 0x0B, 0xA3, 0xD1, 0x71, 0xB5, 0x20, 0x3F, 0x2B, 0xF4, 0x4E, 0x9D, 0x04, + 0x79, 0x59, 0x8D, 0x37, 0xEA, 0x77, 0x10, 0xE4, 0x63, 0x05, 0xFE, 0xD0, + 0x38, 0x3B, 0x81, 0x9F, 0xB6, 0xBD, 0x20, 0xFC, 0xE2, 0xC3, 0x52, 0xB5, + 0xD1, 0x76, 0xF9, 0xBA, 0x0D, 0xC7, 0x07, 0xE6, 0x8E, 0x35, 0xF1, 0x53, + 0x95, 0xC0, 0xC7, 0x8A, 0xB5, 0x3A, 0x53, 0xE0, 0x70, 0x7C, 0x79, 0x34, + 0xD7, 0xDB, 0xC4, 0x7B, 0xCF, 0xC7, 0x08, 0x2B, 0xD6, 0xB7, 0xB3, 0xB0, + 0xCB, 0x6E, 0xBE, 0xBB, 0x89, 0x77, 0xC1, 0x55, 0x02, 0x3F, 0x2B, 0xD8, + 0x3A, 0xA2, 0xC0, 0x31, 0x61, 0xD4, 0x36, 0xE6, 0x82, 0x78, 0x91, 0xA1, + 0x78, 0xAC, 0x05, 0x97, 0x49, 0x14, 0x0A, 0xFD, 0x22, 0x86, 0xB6, 0xCD, + 0x3B, 0xAC, 0xA2, 0xE6, 0x03, 0x9F, 0xAF, 0x75, 0xBA, 0x46, 0xE9, 0x17, + 0x7E, 0xFA, 0xBF, 0x79, 0xA7, 0x0E, 0xA5, 0x56, 0xFA, 0x85, 0x4F, 0x28, + 0x54, 0x57, 0xB0, 0x53, 0xA9, 0x42, 0x61, 0xC3, 0xE7, 0xA5, 0xE3, 0x7B, + 0x86, 0x54, 0xA1, 0xD0, 0x37, 0xC6, 0x58, 0x91, 0xDE, 0xD4, 0xB7, 0x9B, + 0x26, 0x94, 0xDC, 0xB4, 0x6D, 0xDE, 0x31, 0x52, 0x84, 0x72, 0xD0, 0x1B, + 0xEE, 0x23, 0x4F, 0x72, 0x5D, 0x2F, 0x12, 0x67, 0x61, 0xA3, 0xEE, 0x2B, + 0xE8, 0x6C, 0x36, 0xFB, 0xB2, 0x97, 0x8D, 0xE3, 0x3B, 0xC2, 0xB9, 0x9F, + 0x82, 0x7E, 0x3A, 0x6D, 0xB5, 0x74, 0xE9, 0x95, 0xB2, 0x17, 0x0C, 0xD3, + 0xF2, 0xA1, 0x34, 0x82, 0xF3, 0xB4, 0x6C, 0x28, 0x3C, 0xA6, 0xF5, 0xD0, + 0x72, 0xA1, 0x6C, 0x05, 0x3E, 0x5A, 0x26, 0x94, 0x4A, 0xE0, 0xA7, 0x79, + 0x43, 0xE1, 0x0E, 0xEF, 0x14, 0x9A, 0x27, 0x14, 0xC2, 0xB8, 0x84, 0x26, + 0x0E, 0x05, 0x09, 0x10, 0xCA, 0x0D, 0x22, 0x94, 0x1B, 0x34, 0x35, 0x14, + 0x41, 0x3E, 0x13, 0x42, 0xA1, 0x89, 0xE7, 0x16, 0x11, 0x0A, 0x61, 0x94, + 0xE2, 0x08, 0x85, 0x5B, 0x23, 0xA5, 0x9D, 0x09, 0xA5, 0x51, 0x76, 0xE2, + 0xD7, 0xD1, 0x13, 0x0A, 0x61, 0x5C, 0xDB, 0x49, 0x28, 0xAF, 0x72, 0xE7, + 0x9E, 0xE5, 0xCE, 0x85, 0x27, 0x85, 0xDA, 0xFD, 0xC7, 0xC6, 0xDE, 0xFF, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x63, 0xF9, 0x03, 0xF6, 0x93, + 0x09, 0xAE, 0xDA, 0xF7, 0x5D, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, + 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82, + }; + unsigned int Resources_Images_trenchbroom_icon_png_len = sizeof(Resources_Images_trenchbroom_icon_png); + // Data for file: Resources_Images_wrench_png_path const std::string Resources_Images_wrench_png_path = R"(Resources/Images/wrench.png)"; unsigned char Resources_Images_wrench_png[] = { @@ -268633,15 +268761,11 @@ namespace Nuake { 0x65, 0x63, 0x33, 0x20, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x76, 0x65, 0x63, 0x33, 0x20, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x69, 0x6E, 0x74, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6F, 0x77, 0x4D, - 0x61, 0x70, 0x73, 0x49, 0x44, 0x73, 0x5B, 0x34, 0x5D, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x43, 0x61, - 0x73, 0x63, 0x61, 0x64, 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x5B, 0x34, - 0x5D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D, 0x61, 0x74, 0x34, - 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, - 0x6F, 0x72, 0x6D, 0x73, 0x5B, 0x34, 0x5D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x56, 0x6F, 0x6C, 0x75, 0x6D, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, + 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x20, 0x43, 0x61, 0x73, 0x63, 0x61, + 0x64, 0x65, 0x44, 0x65, 0x70, 0x74, 0x68, 0x5B, 0x34, 0x5D, 0x3B, 0x0D, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6D, 0x61, 0x74, 0x34, 0x20, 0x4C, 0x69, + 0x67, 0x68, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, + 0x73, 0x5B, 0x34, 0x5D, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, 0x6E, 0x74, 0x20, 0x53, 0x68, 0x61, 0x64, 0x6F, 0x77, 0x3B, 0x0D, 0x0A, 0x7D, 0x3B, 0x0D, 0x0A, 0x0D, 0x0A, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x73, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x72, 0x32, 0x44, 0x20, diff --git a/Nuake/src/Resource/StaticResources.h b/Nuake/src/Resource/StaticResources.h index a5420b00..a60d40b2 100644 --- a/Nuake/src/Resource/StaticResources.h +++ b/Nuake/src/Resource/StaticResources.h @@ -119,9 +119,15 @@ namespace Nuake { extern const std::string Resources_Images_shape_png_path; extern unsigned int Resources_Images_shape_png_len; extern unsigned char Resources_Images_shape_png[]; + extern const std::string Resources_Images_sln_icon_png_path; + extern unsigned int Resources_Images_sln_icon_png_len; + extern unsigned char Resources_Images_sln_icon_png[]; extern const std::string Resources_Images_speaker_png_path; extern unsigned int Resources_Images_speaker_png_len; extern unsigned char Resources_Images_speaker_png[]; + extern const std::string Resources_Images_trenchbroom_icon_png_path; + extern unsigned int Resources_Images_trenchbroom_icon_png_len; + extern unsigned char Resources_Images_trenchbroom_icon_png[]; extern const std::string Resources_Images_wrench_png_path; extern unsigned int Resources_Images_wrench_png_len; extern unsigned char Resources_Images_wrench_png[]; diff --git a/Nuake/src/Window.cpp b/Nuake/src/Window.cpp index d8f6f969..18508d7a 100644 --- a/Nuake/src/Window.cpp +++ b/Nuake/src/Window.cpp @@ -102,6 +102,22 @@ int Window::Init() window->OnWindowFocused(*window, static_cast(focused)); }); + glfwSetDropCallback(window, [](GLFWwindow* nativeWindow, int count, const char** paths) + { + std::vector filePaths; + filePaths.reserve(count); + + int i; + for (i = 0; i < count; i++) + { + std::string filePath = std::string(paths[i]); + filePaths.push_back(filePath); + } + + Window* window = reinterpret_cast(glfwGetWindowUserPointer(nativeWindow)); + window->OnDragNDropCallback(*window, filePaths); + }); + // TODO: have clear color in environnement. glClearColor(0.f, 0.f, 0.f, 1.0f); @@ -348,6 +364,11 @@ void Window::SetOnWindowClosedCallback(std::function callb onWindowClosedCallback = callback; } +void Nuake::Window::SetOnDragNDropCallback(std::function& paths)> callback) +{ + onDragNDropCallback = callback; +} + void Window::OnWindowFocused(Window& window, bool focused) { if (onWindowFocusedCallback) @@ -364,6 +385,14 @@ void Window::OnWindowClosed(Window& window) } } +void Window::OnDragNDropCallback(Window& window, const std::vector& paths) +{ + if (onDragNDropCallback) + { + onDragNDropCallback(window, paths); + } +} + void Window::InitImgui() { ImGui::CreateContext(); diff --git a/Nuake/src/Window.h b/Nuake/src/Window.h index dc3f7b23..63817314 100644 --- a/Nuake/src/Window.h +++ b/Nuake/src/Window.h @@ -57,9 +57,11 @@ namespace Nuake void OnWindowFocused(Window& window, bool focused); void OnWindowClosed(Window& window); + void OnDragNDropCallback(Window& window, const std::vector& paths); void SetOnWindowFocusedCallback(std::function callback); void SetOnWindowClosedCallback(std::function callback); + void SetOnDragNDropCallback(std::function& paths)> callback); private: const std::string DEFAULT_TITLE = "Untitled Window"; @@ -79,10 +81,10 @@ namespace Nuake // Callbacks std::function onWindowClosedCallback; std::function onWindowFocusedCallback; + std::function& paths)> onDragNDropCallback; void InitImgui(); private: - }; } diff --git a/Resources/Images/folder_icon.png b/Resources/Images/folder_icon.png index b58e43ed..e793b799 100644 Binary files a/Resources/Images/folder_icon.png and b/Resources/Images/folder_icon.png differ diff --git a/Resources/Images/project_icon.png b/Resources/Images/project_icon.png index 384eabf2..d8f48b30 100644 Binary files a/Resources/Images/project_icon.png and b/Resources/Images/project_icon.png differ diff --git a/Resources/Images/sln_icon.png b/Resources/Images/sln_icon.png new file mode 100644 index 00000000..6dee878d Binary files /dev/null and b/Resources/Images/sln_icon.png differ diff --git a/Resources/Images/trenchbroom_icon.png b/Resources/Images/trenchbroom_icon.png new file mode 100644 index 00000000..722d8e78 Binary files /dev/null and b/Resources/Images/trenchbroom_icon.png differ