diff --git a/src/ModMan/Web/Platform/AssetHandler.h b/src/ModMan/Web/Platform/AssetHandler.h index ebdb1ebf..89256ce2 100644 --- a/src/ModMan/Web/Platform/AssetHandler.h +++ b/src/ModMan/Web/Platform/AssetHandler.h @@ -1,7 +1,17 @@ #pragma once -#ifdef _WIN32 -#include "Windows/AssetHandlerWindows.h" -#elif defined(__linux__) -#include "Linux/AssetHandlerLinux.h" +#include "Web/Platform/Platform.h" +#include "Web/WebViewLib.h" + +#include + +namespace ui +{ +#if defined(PLATFORM_WINDOWS) + constexpr auto URL_PREFIX = "http://modman.local/"; +#elif defined(PLATFORM_LINUX) + constexpr auto URL_PREFIX = "modman://localhost/"; #endif + + void InstallAssetHandler(webview::webview& wv); +} // namespace ui diff --git a/src/ModMan/Web/Platform/FaviconHandler.h b/src/ModMan/Web/Platform/FaviconHandler.h new file mode 100644 index 00000000..52d2016e --- /dev/null +++ b/src/ModMan/Web/Platform/FaviconHandler.h @@ -0,0 +1,10 @@ +#pragma once + +#include "Web/WebViewLib.h" + +#include + +namespace ui +{ + void InstallFaviconHandler(webview::webview& wv); +} // namespace ui diff --git a/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.cpp b/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.cpp index bb41be84..ae3826e3 100644 --- a/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.cpp +++ b/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerLinux.h" +#include "Web/Platform/AssetHandler.h" +#include "Web/Platform/Platform.h" -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) +#ifdef PLATFORM_LINUX #include "Web/UiAssets.h" @@ -8,8 +9,6 @@ #include #include -using namespace PLATFORM_NAMESPACE_LINUX; - namespace { std::unordered_map assetLookup; @@ -37,7 +36,7 @@ namespace } } // namespace -namespace PLATFORM_NAMESPACE_LINUX +namespace ui { void InstallAssetHandler(webview::webview& wv) { @@ -49,6 +48,6 @@ namespace PLATFORM_NAMESPACE_LINUX webkit_web_context_register_uri_scheme(context, "modman", ModManUriSchemeRequestCb, NULL, nullptr); } -} // namespace PLATFORM_NAMESPACE_LINUX +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.h b/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.h deleted file mode 100644 index e8f49f2f..00000000 --- a/src/ModMan/Web/Platform/Linux/AssetHandlerLinux.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_LINUX -{ - constexpr auto URL_PREFIX = "modman://localhost/"; - - void InstallAssetHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_LINUX - -#endif diff --git a/src/ModMan/Web/Platform/Linux/DialogHandlerLinux.cpp b/src/ModMan/Web/Platform/Linux/DialogHandlerLinux.cpp index ca3c8e09..72963ac5 100644 --- a/src/ModMan/Web/Platform/Linux/DialogHandlerLinux.cpp +++ b/src/ModMan/Web/Platform/Linux/DialogHandlerLinux.cpp @@ -1,6 +1,7 @@ #include "Web/Platform/DialogHandler.h" +#include "Web/Platform/Platform.h" -#ifdef __linux__ +#ifdef PLATFORM_LINUX #include #include diff --git a/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.cpp b/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.cpp index 08376d4c..c0928934 100644 --- a/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.cpp +++ b/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerLinux.h" +#include "Web/Platform/FaviconHandler.h" +#include "Web/Platform/Platform.h" -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) +#ifdef PLATFORM_LINUX #include "Web/UiAssets.h" @@ -8,15 +9,14 @@ #include #include -using namespace PLATFORM_NAMESPACE_LINUX; - -namespace +namespace ui { -} // namespace - -namespace PLATFORM_NAMESPACE_LINUX -{ - void InstallFaviconHandler(webview::webview& wv) {} -} // namespace PLATFORM_NAMESPACE_LINUX + void InstallFaviconHandler(webview::webview& wv) + { + // The icon system on Linux works a bit different than on Windows + // and doesn't really support this kind of dynamic icon setting + // we skip it for now + } +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.h b/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.h deleted file mode 100644 index 2ac806a6..00000000 --- a/src/ModMan/Web/Platform/Linux/FaviconHandlerLinux.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_LINUX -{ - void InstallFaviconHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_LINUX - -#endif diff --git a/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.cpp b/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.cpp index 9ca592eb..78eb8e1a 100644 --- a/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.cpp +++ b/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerLinux.h" +#include "Web/Platform/Platform.h" +#include "Web/Platform/TitleHandler.h" -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) +#ifdef PLATFORM_LINUX #include "Web/UiAssets.h" @@ -8,9 +9,7 @@ #include #include -using namespace PLATFORM_NAMESPACE_LINUX; - -namespace PLATFORM_NAMESPACE_LINUX +namespace ui { void InstallTitleHandler(webview::webview& wv) { @@ -26,6 +25,6 @@ namespace PLATFORM_NAMESPACE_LINUX g_signal_connect(G_OBJECT(webView), "notify::title", G_CALLBACK(on_title_changed), (gpointer)window); } -} // namespace PLATFORM_NAMESPACE_LINUX +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.h b/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.h deleted file mode 100644 index 2c1244d1..00000000 --- a/src/ModMan/Web/Platform/Linux/TitleHandlerLinux.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_LINUX) && defined(WEBVIEW_GTK) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_LINUX -{ - void InstallTitleHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_LINUX - -#endif diff --git a/src/ModMan/Web/Platform/Platform.h b/src/ModMan/Web/Platform/Platform.h index e531deca..787fe814 100644 --- a/src/ModMan/Web/Platform/Platform.h +++ b/src/ModMan/Web/Platform/Platform.h @@ -1,10 +1,7 @@ #pragma once -#define PLATFORM_NAMESPACE_WINDOWS windows -#define PLATFORM_NAMESPACE_LINUX linux - #ifdef _WIN32 -#define PLATFORM_NAMESPACE PLATFORM_NAMESPACE_WINDOWS +#define PLATFORM_WINDOWS #elif defined(__linux__) -#define PLATFORM_NAMESPACE PLATFORM_NAMESPACE_LINUX +#define PLATFORM_LINUX #endif diff --git a/src/ModMan/Web/Platform/TitleHandler.h b/src/ModMan/Web/Platform/TitleHandler.h new file mode 100644 index 00000000..4ff8ffae --- /dev/null +++ b/src/ModMan/Web/Platform/TitleHandler.h @@ -0,0 +1,10 @@ +#pragma once + +#include "Web/WebViewLib.h" + +#include + +namespace ui +{ + void InstallTitleHandler(webview::webview& wv); +} // namespace ui diff --git a/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.cpp b/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.cpp index ba400bd0..9e2309bb 100644 --- a/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.cpp +++ b/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerWindows.h" +#include "Web/Platform/AssetHandler.h" +#include "Web/Platform/Platform.h" -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) +#ifdef PLATFORM_WINDOWS #include "PlatformUtilsWindows.h" #include "Web/UiAssets.h" @@ -12,8 +13,6 @@ #include #include -using namespace PLATFORM_NAMESPACE_WINDOWS; - namespace { constexpr auto LOCALHOST_PREFIX = "http://localhost:"; @@ -25,7 +24,7 @@ namespace std::wstringstream wss; wss << std::format(L"Content-Length: {}\n", contentLength); - wss << L"Content-Type: " << StringToWideString(ui::GetMimeTypeForFileName(assetName)); + wss << L"Content-Type: " << utils::StringToWideString(ui::GetMimeTypeForFileName(assetName)); return wss.str(); } @@ -65,7 +64,7 @@ namespace Microsoft::WRL::ComPtr response; - const auto uri = WideStringToString(wUri); + const auto uri = utils::WideStringToString(wUri); bool fileFound = false; #ifdef _DEBUG @@ -74,9 +73,9 @@ namespace return S_OK; #endif - if (uri.starts_with(URL_PREFIX)) + if (uri.starts_with(ui::URL_PREFIX)) { - const auto asset = uri.substr(std::char_traits::length(URL_PREFIX) - 1); + const auto asset = uri.substr(std::char_traits::length(ui::URL_PREFIX) - 1); const auto foundUiFile = assetLookup.find(asset); if (foundUiFile != assetLookup.end()) @@ -117,7 +116,7 @@ namespace } } // namespace -namespace PLATFORM_NAMESPACE_WINDOWS +namespace ui { void InstallAssetHandler(webview::webview& wv) { @@ -157,6 +156,6 @@ namespace PLATFORM_NAMESPACE_WINDOWS std::cerr << "Failed to add resource requested filter\n"; } } -} // namespace PLATFORM_NAMESPACE_WINDOWS +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.h b/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.h deleted file mode 100644 index b6475fd9..00000000 --- a/src/ModMan/Web/Platform/Windows/AssetHandlerWindows.h +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_WINDOWS -{ - constexpr auto URL_PREFIX = "http://modman.local/"; - - void InstallAssetHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_WINDOWS - -#endif diff --git a/src/ModMan/Web/Platform/Windows/DialogHandlerWindows.cpp b/src/ModMan/Web/Platform/Windows/DialogHandlerWindows.cpp index 68b34f23..396b31ba 100644 --- a/src/ModMan/Web/Platform/Windows/DialogHandlerWindows.cpp +++ b/src/ModMan/Web/Platform/Windows/DialogHandlerWindows.cpp @@ -1,6 +1,7 @@ #include "Web/Platform/DialogHandler.h" +#include "Web/Platform/Platform.h" -#ifdef _WIN32 +#ifdef PLATFORM_WINDOWS #include "PlatformUtilsWindows.h" @@ -8,8 +9,6 @@ #include #include -using namespace PLATFORM_NAMESPACE_WINDOWS; - namespace { bool SetFilters(IFileDialog* pFileOpen, const std::vector& filters) @@ -29,8 +28,8 @@ namespace const auto& filter = filters[i]; COMDLG_FILTERSPEC filterSpec; - const auto& wName = filterStrings.emplace_back(StringToWideString(filter.m_name)); - const auto& wSpec = filterStrings.emplace_back(StringToWideString(filter.m_filter)); + const auto& wName = filterStrings.emplace_back(utils::StringToWideString(filter.m_name)); + const auto& wSpec = filterStrings.emplace_back(utils::StringToWideString(filter.m_filter)); filterSpec.pszName = wName.c_str(); filterSpec.pszSpec = wSpec.c_str(); @@ -65,7 +64,7 @@ namespace // Display the file name to the user. if (SUCCEEDED(hr)) { - result = WideStringToString(pszFilePath); + result = utils::WideStringToString(pszFilePath); CoTaskMemFree(pszFilePath); resultType = ui::DialogCallbackResultType::SUCCESSFUL; diff --git a/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.cpp b/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.cpp index 63872934..856deb68 100644 --- a/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.cpp +++ b/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerWindows.h" +#include "Web/Platform/FaviconHandler.h" +#include "Web/Platform/Platform.h" -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) +#ifdef PLATFORM_WINDOWS #include "PlatformUtilsWindows.h" #include "Web/UiAssets.h" @@ -13,8 +14,6 @@ #include #include -using namespace PLATFORM_NAMESPACE_WINDOWS; - namespace { class UniqueHIcon @@ -111,7 +110,7 @@ namespace } } // namespace -namespace PLATFORM_NAMESPACE_WINDOWS +namespace ui { void InstallFaviconHandler(webview::webview& wv) { @@ -146,6 +145,6 @@ namespace PLATFORM_NAMESPACE_WINDOWS std::cerr << "Failed to add favicon handler\n"; } } -} // namespace PLATFORM_NAMESPACE_WINDOWS +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.h b/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.h deleted file mode 100644 index 83763da8..00000000 --- a/src/ModMan/Web/Platform/Windows/FaviconHandlerWindows.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_WINDOWS -{ - void InstallFaviconHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_WINDOWS - -#endif diff --git a/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.cpp b/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.cpp index b9e419ad..17c43fef 100644 --- a/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.cpp +++ b/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.cpp @@ -1,12 +1,12 @@ #include "PlatformUtilsWindows.h" -#ifdef _WIN32 +#ifdef PLATFORM_WINDOWS #include #include #include -namespace PLATFORM_NAMESPACE_WINDOWS +namespace utils { std::string WideStringToString(const std::wstring& wideString) { @@ -35,6 +35,6 @@ namespace PLATFORM_NAMESPACE_WINDOWS MultiByteToWideChar(CP_UTF8, 0, string.data(), static_cast(string.size()), result.data(), sizeNeeded); return result; } -} // namespace PLATFORM_NAMESPACE_WINDOWS +} // namespace utils #endif diff --git a/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.h b/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.h index 0edb4b86..5476f3f6 100644 --- a/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.h +++ b/src/ModMan/Web/Platform/Windows/PlatformUtilsWindows.h @@ -1,16 +1,15 @@ #pragma once -#ifdef _WIN32 - #include "Web/Platform/Platform.h" -#include +#ifdef PLATFORM_WINDOWS + #include -namespace PLATFORM_NAMESPACE_WINDOWS +namespace utils { std::string WideStringToString(const std::wstring& wideString); std::wstring StringToWideString(const std::string& string); -} // namespace PLATFORM_NAMESPACE_WINDOWS +} // namespace utils #endif diff --git a/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.cpp b/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.cpp index d4cf320d..37548484 100644 --- a/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.cpp +++ b/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.cpp @@ -1,6 +1,7 @@ -#include "AssetHandlerWindows.h" +#include "Web/Platform/Platform.h" +#include "Web/Platform/TitleHandler.h" -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) +#ifdef PLATFORM_WINDOWS #include "PlatformUtilsWindows.h" #include "Web/UiAssets.h" @@ -12,8 +13,6 @@ #include #include -using namespace PLATFORM_NAMESPACE_WINDOWS; - namespace { HRESULT HandleTitleChanged(ICoreWebView2* core, HWND window) @@ -33,7 +32,7 @@ namespace } } // namespace -namespace PLATFORM_NAMESPACE_WINDOWS +namespace ui { void InstallTitleHandler(webview::webview& wv) { @@ -58,6 +57,6 @@ namespace PLATFORM_NAMESPACE_WINDOWS std::cerr << "Failed to add title handler\n"; } } -} // namespace PLATFORM_NAMESPACE_WINDOWS +} // namespace ui #endif diff --git a/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.h b/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.h deleted file mode 100644 index 2804a417..00000000 --- a/src/ModMan/Web/Platform/Windows/TitleHandlerWindows.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "Web/Platform/Platform.h" - -#include - -#if defined(WEBVIEW_PLATFORM_WINDOWS) && defined(WEBVIEW_EDGE) - -#include "Web/WebViewLib.h" - -namespace PLATFORM_NAMESPACE_WINDOWS -{ - void InstallTitleHandler(webview::webview& wv); -} // namespace PLATFORM_NAMESPACE_WINDOWS - -#endif diff --git a/src/ModMan/main.cpp b/src/ModMan/main.cpp index 71174c81..fe8eeba1 100644 --- a/src/ModMan/main.cpp +++ b/src/ModMan/main.cpp @@ -3,10 +3,8 @@ #include "ModManArgs.h" #include "Web/Binds/Binds.h" #include "Web/Platform/AssetHandler.h" -#include "Web/Platform/Linux/FaviconHandlerLinux.h" -#include "Web/Platform/Linux/TitleHandlerLinux.h" -#include "Web/Platform/Windows/FaviconHandlerWindows.h" -#include "Web/Platform/Windows/TitleHandlerWindows.h" +#include "Web/Platform/FaviconHandler.h" +#include "Web/Platform/TitleHandler.h" #include "Web/UiCommunication.h" #include "Web/ViteAssets.h" #include "Web/WebViewLib.h" @@ -21,7 +19,6 @@ #endif using namespace std::string_literals; -using namespace PLATFORM_NAMESPACE; namespace { @@ -36,8 +33,8 @@ namespace { context.m_dev_tools_webview = std::make_unique(false, nullptr); auto& newWindow = *context.m_dev_tools_webview; - InstallFaviconHandler(newWindow); - InstallTitleHandler(newWindow); + ui::InstallFaviconHandler(newWindow); + ui::InstallTitleHandler(newWindow); newWindow.set_title("Devtools"); newWindow.set_size(640, 480, WEBVIEW_HINT_NONE); @@ -71,13 +68,13 @@ namespace newWindow.set_size(1280, 640, WEBVIEW_HINT_NONE); newWindow.set_size(640, 480, WEBVIEW_HINT_MIN); - InstallAssetHandler(newWindow); - InstallFaviconHandler(newWindow); - InstallTitleHandler(newWindow); + ui::InstallAssetHandler(newWindow); + ui::InstallFaviconHandler(newWindow); + ui::InstallTitleHandler(newWindow); ui::RegisterAllBinds(newWindow); #ifdef _DEBUG - newWindow.navigate(VITE_DEV_SERVER ? std::format("http://localhost:{}", VITE_DEV_SERVER_PORT) : std::format("{}index.html", URL_PREFIX)); + newWindow.navigate(VITE_DEV_SERVER ? std::format("http://localhost:{}", VITE_DEV_SERVER_PORT) : std::format("{}index.html", ui::URL_PREFIX)); if (VITE_DEV_SERVER) { @@ -88,7 +85,7 @@ namespace }); } #else - newWindow.navigate(std::format("{}index.html", URL_PREFIX)); + newWindow.navigate(std::format("{}index.html", ui::URL_PREFIX)); #endif newWindow.run(); }