Update wxgui

This commit is contained in:
SSimco
2025-07-27 23:21:01 +03:00
parent 1292463a5b
commit 44f0e5acd3
74 changed files with 79 additions and 1078 deletions
+7 -13
View File
@@ -42,11 +42,7 @@ add_compile_definitions(VK_NO_PROTOTYPES)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
add_subdirectory(Common)
if(ANDROID)
add_subdirectory(android/app/src/main/cpp)
else()
add_subdirectory(gui)
endif()
add_subdirectory(gui)
add_subdirectory(Cafe)
add_subdirectory(Cemu)
add_subdirectory(config)
@@ -57,10 +53,11 @@ add_subdirectory(imgui)
add_subdirectory(resource)
if(ANDROID)
add_library(CemuBin STATIC
main.cpp
mainLLE.cpp
)
add_library(CemuBin STATIC
main.cpp
mainLLE.cpp
)
add_subdirectory(android/app/src/main/cpp)
else()
add_executable(CemuBin
main.cpp
@@ -145,16 +142,13 @@ target_link_libraries(CemuBin PRIVATE
CemuAudio
CemuCafe
CemuCommon
CemuGui
CemuComponents
CemuConfig
CemuInput
CemuUtil
)
if(NOT ANDROID)
target_link_libraries(CemuBin PRIVATE CemuGui)
endif()
if(ENABLE_OPENGL)
target_link_libraries(CemuBin PRIVATE OpenGL::GL)
endif()
+1 -3
View File
@@ -8,8 +8,6 @@
class IAudioAPI
{
friend class GeneralSettings2;
public:
class DeviceDescription
{
@@ -70,7 +68,7 @@ public:
static void PrintLogging();
static void InitializeStatic();
static bool IsAudioAPIAvailable(AudioAPI api);
static void SetAudioDelay(uint32 audioDelay) { s_audioDelay = audioDelay; }
static void SetAudioDelay(uint32 audioDelay) { s_audioDelay = audioDelay; }
static std::unique_ptr<IAudioAPI> CreateDeviceFromConfig(AudioType type, sint32 rate, sint32 samples_per_block, sint32 bits_per_sample);
static std::unique_ptr<IAudioAPI> CreateDeviceFromConfig(AudioType type, sint32 rate, sint32 channels, sint32 samples_per_block, sint32 bits_per_sample);
static std::unique_ptr<IAudioAPI> CreateDevice(AudioAPI api, const DeviceDescriptionPtr& device, sint32 samplerate, sint32 channels, sint32 samples_per_block, sint32 bits_per_sample);
-4
View File
@@ -1,9 +1,5 @@
#include "wxgui.h"
<<<<<<<< HEAD:src/gui/wxgui/debugger/AudioDebuggerWindow.cpp
#include "debugger/AudioDebuggerWindow.h"
========
#include "AudioDebuggerWindow.h"
>>>>>>>> public/main:src/gui/wxgui/AudioDebuggerWindow.cpp
#include "Cafe/OS/libs/snd_core/ax.h"
#include "Cafe/OS/libs/snd_core/ax_internal.h"
+6 -55
View File
@@ -1,28 +1,12 @@
<<<<<<< HEAD:src/gui/CemuApp.cpp
#include "CemuApp.h"
#include "MainWindow.h"
#include "wxgui.h"
=======
#include "wxgui/CemuApp.h"
#include "wxCemuConfig.h"
#include "wxgui/MainWindow.h"
#include "wxgui/wxgui.h"
>>>>>>> public/main:src/gui/wxgui/CemuApp.cpp
#include "config/CemuConfig.h"
#include "Cafe/HW/Latte/Renderer/Vulkan/VulkanAPI.h"
#include "Cafe/HW/Latte/Core/LatteOverlay.h"
#include "config/ActiveSettings.h"
#include "config/LaunchSettings.h"
<<<<<<< HEAD:src/gui/CemuApp.cpp
#include "GettingStartedDialog.h"
#include "input/InputManager.h"
#include "helpers/wxHelpers.h"
#include "Cemu/ncrypto/ncrypto.h"
#include "Cemu/GuiSystem/GuiSystem.h"
#if BOOST_OS_LINUX && HAS_WAYLAND
#include "helpers/wxWayland.h"
=======
#include "wxgui/GettingStartedDialog.h"
#include "input/InputManager.h"
#include "wxgui/helpers/wxHelpers.h"
@@ -32,7 +16,6 @@
#if BOOST_OS_LINUX && HAS_WAYLAND
#include "wxgui/helpers/wxWayland.h"
>>>>>>> public/main:src/gui/wxgui/CemuApp.cpp
#endif
#if __WXGTK__
#include <glib.h>
@@ -48,12 +31,8 @@
wxIMPLEMENT_APP_NO_MAIN(CemuApp);
<<<<<<< HEAD:src/gui/CemuApp.cpp
// defined in guiWrapper.cpp
=======
// defined in wxWindowSystem.cpp
extern WindowSystem::WindowInfo g_window_info;
>>>>>>> public/main:src/gui/wxgui/CemuApp.cpp
extern std::shared_mutex g_mutex;
// forward declarations from main.cpp
@@ -278,7 +257,6 @@ std::string TranslationCallback(std::string_view msgId)
bool CemuApp::OnInit()
{
GuiSystem::registerKeyCodeToStringCallback(rawKeyCodeToString);
#if __WXGTK__
GTKSuppressDiagnostics(G_LOG_LEVEL_MASK & ~G_LOG_FLAG_FATAL);
#endif
@@ -361,7 +339,8 @@ bool CemuApp::OnInit()
m_mainFrame = new MainWindow();
GuiSystem::getWindowInfo().app_active = true;
std::unique_lock lock(g_mutex);
g_window_info.app_active = true;
HotkeySettings::Init(m_mainFrame);
@@ -422,28 +401,21 @@ void CemuApp::OnAssertFailure(const wxChar* file, int line, const wxChar* func,
int CemuApp::FilterEvent(wxEvent& event)
{
auto& windowInfo = GuiSystem::getWindowInfo();
if(event.GetEventType() == wxEVT_KEY_DOWN)
{
const auto& key_event = (wxKeyEvent&)event;
windowInfo.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), true);
auto platformKeyCode = rawKeyCodeToPlatformKeyCode(key_event.GetRawKeyCode());
if (platformKeyCode.has_value())
windowInfo.set_keystate(platformKeyCode.value(), true);
g_window_info.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), true);
}
else if(event.GetEventType() == wxEVT_KEY_UP)
{
const auto& key_event = (wxKeyEvent&)event;
windowInfo.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), false);
auto platformKeyCode = rawKeyCodeToPlatformKeyCode(key_event.GetRawKeyCode());
if (platformKeyCode.has_value())
windowInfo.set_keystate(platformKeyCode.value(), false);
g_window_info.set_keystate(fix_raw_keycode(key_event.GetRawKeyCode(), key_event.GetRawKeyFlags()), false);
}
else if(event.GetEventType() == wxEVT_ACTIVATE_APP)
{
const auto& activate_event = (wxActivateEvent&)event;
if(!activate_event.GetActive())
windowInfo.set_keystates_up();
g_window_info.set_keystatesup();
}
return wxApp::FilterEvent(event);
@@ -605,29 +577,8 @@ void CemuApp::CreateDefaultCemuFiles()
void CemuApp::ActivateApp(wxActivateEvent& event)
{
GuiSystem::getWindowInfo().app_active = event.GetActive();
g_window_info.app_active = event.GetActive();
event.Skip();
}
#if BOOST_OS_WINDOWS
void _wxLaunch()
{
SetThreadName("MainThread_UI");
wxEntry();
}
#endif
void gui_create()
{
SetThreadName("cemu");
#if BOOST_OS_WINDOWS
// on Windows wxWidgets there is a bug where wxDirDialog->ShowModal will deadlock in Windows internals somehow
// moving the UI thread off the main thread fixes this
std::thread t = std::thread(_wxLaunch);
t.join();
#else
int argc = 0;
char* argv[1]{};
wxEntry(argc, argv);
#endif
}
-4
View File
@@ -1,8 +1,4 @@
<<<<<<< HEAD:src/gui/CemuUpdateWindow.cpp
#include "CemuUpdateWindow.h"
=======
#include "wxgui/CemuUpdateWindow.h"
>>>>>>> public/main:src/gui/wxgui/CemuUpdateWindow.cpp
#include "Common/version.h"
#include "util/helpers/helpers.h"
-10
View File
@@ -1,12 +1,3 @@
<<<<<<< HEAD:src/gui/ChecksumTool.cpp
#include "ChecksumTool.h"
#include "Cafe/TitleList/GameInfo.h"
#include "helpers/wxCustomEvents.h"
#include "util/helpers/helpers.h"
#include "helpers/wxHelpers.h"
#include "wxHelper.h"
=======
#include "wxgui/ChecksumTool.h"
#include "Cafe/TitleList/GameInfo.h"
@@ -14,7 +5,6 @@
#include "util/helpers/helpers.h"
#include "wxgui/helpers/wxHelpers.h"
#include "wxgui/wxHelper.h"
>>>>>>> public/main:src/gui/wxgui/ChecksumTool.cpp
#include "Cafe/Filesystem/WUD/wud.h"
#include <zip.h>
-4
View File
@@ -1,10 +1,6 @@
#pragma once
#include <wx/dialog.h>
<<<<<<< HEAD:src/gui/ChecksumTool.h
#include "components/wxTitleManagerList.h"
=======
#include "wxgui/components/wxTitleManagerList.h"
>>>>>>> public/main:src/gui/wxgui/ChecksumTool.h
#include "Cafe/TitleList/TitleInfo.h"
#include <rapidjson/document.h>
@@ -1,10 +1,5 @@
<<<<<<< HEAD:src/gui/DownloadGraphicPacksWindow.cpp
#include "wxgui.h"
#include "DownloadGraphicPacksWindow.h"
=======
#include "wxgui/wxgui.h"
#include "wxgui/DownloadGraphicPacksWindow.h"
>>>>>>> public/main:src/gui/wxgui/DownloadGraphicPacksWindow.cpp
#include <filesystem>
#include <curl/curl.h>
-8
View File
@@ -1,8 +1,4 @@
<<<<<<< HEAD:src/gui/GameProfileWindow.cpp
#include "GameProfileWindow.h"
=======
#include "wxgui/GameProfileWindow.h"
>>>>>>> public/main:src/gui/wxgui/GameProfileWindow.cpp
#include <wx/statbox.h>
#include <wx/sizer.h>
@@ -12,11 +8,7 @@
#include <wx/wupdlock.h>
#include <wx/slider.h>
<<<<<<< HEAD:src/gui/GameProfileWindow.cpp
#include "helpers/wxHelpers.h"
=======
#include "wxgui/helpers/wxHelpers.h"
>>>>>>> public/main:src/gui/wxgui/GameProfileWindow.cpp
#include "input/InputManager.h"
#if BOOST_OS_LINUX || BOOST_OS_MACOS
-11
View File
@@ -1,24 +1,13 @@
<<<<<<< HEAD:src/gui/GameUpdateWindow.cpp
#include "wxgui.h"
#include "GameUpdateWindow.h"
=======
#include "wxgui/wxgui.h"
#include "wxgui/GameUpdateWindow.h"
>>>>>>> public/main:src/gui/wxgui/GameUpdateWindow.cpp
#include "util/helpers/helpers.h"
#include <filesystem>
#include <sstream>
#include "util/helpers/SystemException.h"
<<<<<<< HEAD:src/gui/GameUpdateWindow.cpp
#include "CemuApp.h"
#include "Cafe/TitleList/GameInfo.h"
#include "helpers/wxHelpers.h"
=======
#include "wxgui/CemuApp.h"
#include "Cafe/TitleList/GameInfo.h"
#include "wxgui/helpers/wxHelpers.h"
>>>>>>> public/main:src/gui/wxgui/GameUpdateWindow.cpp
#include "wxHelper.h"
wxString _GetTitleIdTypeStr(TitleId titleId)
+1 -16
View File
@@ -1,15 +1,8 @@
<<<<<<< HEAD:src/gui/GeneralSettings2.cpp
#include "wxgui.h"
#include "GeneralSettings2.h"
#include "CemuApp.h"
#include "helpers/wxControlObject.h"
=======
#include "wxCemuConfig.h"
#include "wxgui/wxgui.h"
#include "wxgui/GeneralSettings2.h"
#include "wxgui/CemuApp.h"
#include "wxgui/helpers/wxControlObject.h"
>>>>>>> public/main:src/gui/wxgui/GeneralSettings2.cpp
#include "util/helpers/helpers.h"
@@ -39,11 +32,7 @@
#include <boost/tokenizer.hpp>
#include "util/helpers/SystemException.h"
<<<<<<< HEAD:src/gui/GeneralSettings2.cpp
#include "dialogs/CreateAccount/wxCreateAccountDialog.h"
=======
#include "wxgui/dialogs/CreateAccount/wxCreateAccountDialog.h"
>>>>>>> public/main:src/gui/wxgui/GeneralSettings2.cpp
#if BOOST_OS_WINDOWS
#include <VersionHelpers.h>
@@ -51,11 +40,7 @@
#include "config/LaunchSettings.h"
#include "config/ActiveSettings.h"
<<<<<<< HEAD:src/gui/GeneralSettings2.cpp
#include "helpers/wxHelpers.h"
=======
#include "wxgui/helpers/wxHelpers.h"
>>>>>>> public/main:src/gui/wxgui/GeneralSettings2.cpp
#include "resource/embedded/resources.h"
@@ -1164,7 +1149,7 @@ void GeneralSettings2::DisableSettings(bool game_launched)
void GeneralSettings2::OnAudioLatencyChanged(wxCommandEvent& event)
{
IAudioAPI::s_audioDelay = event.GetInt();
IAudioAPI::SetAudioDelay(event.GetInt());
event.Skip();
}
-11
View File
@@ -1,8 +1,4 @@
<<<<<<< HEAD:src/gui/GettingStartedDialog.cpp
#include "GettingStartedDialog.h"
=======
#include "wxgui/GettingStartedDialog.h"
>>>>>>> public/main:src/gui/wxgui/GettingStartedDialog.cpp
#include <wx/sizer.h>
#include <wx/filepicker.h>
@@ -12,18 +8,11 @@
#include <wx/button.h>
#include "config/ActiveSettings.h"
<<<<<<< HEAD:src/gui/GettingStartedDialog.cpp
#include "CemuApp.h"
#include "DownloadGraphicPacksWindow.h"
#include "GraphicPacksWindow2.h"
#include "input/InputSettings2.h"
=======
#include "wxCemuConfig.h"
#include "wxgui/CemuApp.h"
#include "wxgui/DownloadGraphicPacksWindow.h"
#include "wxgui/GraphicPacksWindow2.h"
#include "wxgui/input/InputSettings2.h"
>>>>>>> public/main:src/gui/wxgui/GettingStartedDialog.cpp
#include "config/CemuConfig.h"
#include "Cafe/TitleList/TitleList.h"
-6
View File
@@ -1,12 +1,6 @@
<<<<<<< HEAD:src/gui/GraphicPacksWindow2.cpp
#include "wxgui.h"
#include "GraphicPacksWindow2.h"
#include "DownloadGraphicPacksWindow.h"
=======
#include "wxgui/wxgui.h"
#include "wxgui/GraphicPacksWindow2.h"
#include "wxgui/DownloadGraphicPacksWindow.h"
>>>>>>> public/main:src/gui/wxgui/GraphicPacksWindow2.cpp
#include "Cafe/GraphicPack/GraphicPack2.h"
#include "config/CemuConfig.h"
#include "config/ActiveSettings.h"
-28
View File
@@ -1,29 +1,17 @@
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
#include "LoggingWindow.h"
#include "helpers/wxLogEvent.h"
=======
#include "wxgui/LoggingWindow.h"
#include "Cemu/Logging/CemuLogging.h"
#include "wxgui/helpers/wxLogEvent.h"
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/wupdlock.h>
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
#include "helpers/wxHelpers.h"
=======
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
wxDEFINE_EVENT(EVT_LOG, wxLogEvent);
LoggingWindow::LoggingWindow(wxFrame* parent)
: wxFrame(parent, wxID_ANY, _("Logging window"), wxDefaultPosition, wxSize(800, 600), wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL)
{
cemuLog_registerLogCallbacks(this);
auto* sizer = new wxBoxSizer( wxVERTICAL );
{
auto filter_row = new wxBoxSizer( wxHORIZONTAL );
@@ -50,49 +38,33 @@ LoggingWindow::LoggingWindow(wxFrame* parent)
this->Layout();
this->Bind(EVT_LOG, &LoggingWindow::OnLogMessage, this);
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
=======
cemuLog_setCallbacks(this);
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
}
LoggingWindow::~LoggingWindow()
{
cemuLog_unregisterLogCallbacks();
this->Unbind(EVT_LOG, &LoggingWindow::OnLogMessage, this);
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
=======
cemuLog_clearCallbacks();
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
}
void LoggingWindow::Log(std::string_view filter, std::string_view message)
{
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
wxLogEvent event(std::string {filter}, std::string{ message });
OnLogMessage(event);
=======
wxLogEvent event(std::string {filter}, std::string{ message });
OnLogMessage(event);
//const auto log_event = new wxLogEvent(filter, message);
//wxQueueEvent(s_instance, log_event);
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
}
void LoggingWindow::Log(std::string_view filter, std::wstring_view message)
{
wxLogEvent event(std::string {filter}, std::wstring{ message });
OnLogMessage(event);
<<<<<<< HEAD:src/gui/LoggingWindow.cpp
=======
//const auto log_event = new wxLogEvent(filter, message);
//wxQueueEvent(s_instance, log_event);
>>>>>>> public/main:src/gui/wxgui/LoggingWindow.cpp
}
void LoggingWindow::OnLogMessage(wxLogEvent& event)
+25 -291
View File
@@ -1,29 +1,12 @@
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "wxgui.h"
#include "MainWindow.h"
=======
#include "Cafe/HW/Latte/Renderer/Renderer.h"
#include "interface/WindowSystem.h"
#include "wxCemuConfig.h"
#include "wxgui/wxgui.h"
#include "wxgui/MainWindow.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#include <wx/mstream.h>
#include <wx/clipbrd.h>
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "GameUpdateWindow.h"
#include "PadViewFrame.h"
#include "windows/TextureRelationViewer/TextureRelationWindow.h"
#include "windows/PPCThreadsViewer/DebugPPCThreadsWindow.h"
#include "canvas/OpenGLCanvas.h"
#include "canvas/VulkanCanvas.h"
#include "Cafe/OS/libs/nfc/nfc.h"
#include "Cafe/OS/libs/swkbd/swkbd.h"
#include "debugger/DebuggerWindow2.h"
#include "debugger/AudioDebuggerWindow.h"
=======
#include "wxgui/GameUpdateWindow.h"
#include "wxgui/PadViewFrame.h"
#include "wxgui/windows/TextureRelationViewer/TextureRelationWindow.h"
@@ -34,57 +17,32 @@
#include "Cafe/OS/libs/nfc/nfc.h"
#include "Cafe/OS/libs/swkbd/swkbd.h"
#include "wxgui/debugger/DebuggerWindow2.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#include "util/helpers/helpers.h"
#include "config/CemuConfig.h"
#include "Cemu/DiscordPresence/DiscordPresence.h"
#include "util/ScreenSaver/ScreenSaver.h"
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "GeneralSettings2.h"
#include "GraphicPacksWindow2.h"
#include "GameProfileWindow.h"
#include "CemuApp.h"
#include "CemuUpdateWindow.h"
#include "helpers/wxCustomData.h"
#include "LoggingWindow.h"
=======
#include "wxgui/GeneralSettings2.h"
#include "wxgui/GraphicPacksWindow2.h"
#include "wxgui/CemuApp.h"
#include "wxgui/CemuUpdateWindow.h"
#include "wxgui/LoggingWindow.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#include "config/ActiveSettings.h"
#include "config/LaunchSettings.h"
#include "Cemu/GuiSystem/GuiSystem.h"
#include "Cafe/Filesystem/FST/FST.h"
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "TitleManager.h"
#include "gui/EmulatedUSBDevices/EmulatedUSBDeviceFrame.h"
=======
#include "wxgui/TitleManager.h"
#include "wxgui/EmulatedUSBDevices/EmulatedUSBDeviceFrame.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#include "Cafe/CafeSystem.h"
#include "util/helpers/SystemException.h"
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "DownloadGraphicPacksWindow.h"
#include "GettingStartedDialog.h"
#include "helpers/wxHelpers.h"
#include "Cafe/HW/Latte/Renderer/Vulkan/VsyncDriver.h"
#include "input/InputSettings2.h"
=======
#include "wxgui/DownloadGraphicPacksWindow.h"
#include "wxgui/GettingStartedDialog.h"
#include "wxgui/helpers/wxHelpers.h"
#include "Cafe/HW/Latte/Renderer/Vulkan/VsyncDriver.h"
#include "wxgui/input/InputSettings2.h"
#include "wxgui/input/HotkeySettings.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#include "input/InputManager.h"
#if BOOST_OS_WINDOWS
@@ -98,11 +56,7 @@
#endif
#if BOOST_OS_LINUX && HAS_WAYLAND
<<<<<<< HEAD:src/gui/MainWindow.cpp
#include "helpers/wxWayland.h"
=======
#include "wxgui/helpers/wxWayland.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
#endif
//GameMode support
@@ -114,12 +68,8 @@
#include "Cafe/TitleList/TitleList.h"
#include "wxHelper.h"
<<<<<<< HEAD:src/gui/MainWindow.cpp
MainWindow* g_mainFrame;
=======
extern WindowSystem::WindowInfo g_window_info;
extern std::shared_mutex g_mutex;
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
enum
{
@@ -346,18 +296,13 @@ private:
MainWindow::MainWindow()
: wxFrame(nullptr, wxID_ANY, GetInitialWindowTitle(), wxDefaultPosition, wxSize(1280, 720), wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN | wxRESIZE_BORDER)
{
<<<<<<< HEAD:src/gui/MainWindow.cpp
GuiSystem::getWindowInfo().window_main = get_window_handle_info_for_wxWindow(this);
=======
#ifdef __WXMAC__
// Not necessary to set wxApp::s_macExitMenuItemId as automatically handled
wxApp::s_macAboutMenuItemId = MAINFRAME_MENU_ID_HELP_ABOUT;
wxApp::s_macPreferencesMenuItemId = MAINFRAME_MENU_ID_OPTIONS_MAC_SETTINGS;
#endif
g_window_info.window_main = initHandleContextFromWxWidgetsWindow(this);
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
g_mainFrame = this;
DownloadManager::GetInstance()->setOnGameListRefreshRequested([this](){RequestGameListRefresh();});
CafeSystem::SetImplementation(this);
RecreateMenu();
@@ -431,12 +376,10 @@ MainWindow::MainWindow()
{
g_gdbstub = std::make_unique<GDBServer>(GetConfig().gdb_port);
}
CafeSystem::registerCafeSystemCallbacks(this);
}
MainWindow::~MainWindow()
{
CafeSystem::unregisterCafeSystemCallbacks();
if (m_padView)
{
m_padView->Destroy();
@@ -445,93 +388,10 @@ MainWindow::~MainWindow()
m_timer->Stop();
std::unique_lock lock(g_mutex);
g_mainFrame = nullptr;
}
void MainWindow::updateWindowTitles(bool isIdle, bool isLoading, double fps)
{
std::string windowText;
windowText = BUILD_VERSION_WITH_NAME_STRING;
if (isIdle)
{
if (g_mainFrame)
g_mainFrame->AsyncSetTitle(windowText);
return;
}
if (isLoading)
{
windowText.append(" - loading...");
if (g_mainFrame)
g_mainFrame->AsyncSetTitle(windowText);
return;
}
const char* renderer = "";
if(g_renderer)
{
switch(g_renderer->GetType())
{
case RendererAPI::OpenGL:
renderer = "[OpenGL]";
break;
case RendererAPI::Vulkan:
renderer = "[Vulkan]";
break;
default: ;
}
}
// get GPU vendor/mode
const char* graphicMode = "[Generic]";
if (LatteGPUState.glVendor == GLVENDOR_AMD)
graphicMode = "[AMD GPU]";
else if (LatteGPUState.glVendor == GLVENDOR_INTEL)
graphicMode = "[Intel GPU]";
else if (LatteGPUState.glVendor == GLVENDOR_NVIDIA)
graphicMode = "[NVIDIA GPU]";
else if (LatteGPUState.glVendor == GLVENDOR_APPLE)
graphicMode = "[Apple GPU]";
const uint64 titleId = CafeSystem::GetForegroundTitleId();
windowText.append(fmt::format(" - FPS: {:.2f} {} {} [TitleId: {:08x}-{:08x}]", (double)fps, renderer, graphicMode, (uint32)(titleId >> 32), (uint32)(titleId & 0xFFFFFFFF)));
if (ActiveSettings::IsOnlineEnabled())
{
if (ActiveSettings::GetNetworkService() == NetworkService::Nintendo)
windowText.append(" [Online]");
else if (ActiveSettings::GetNetworkService() == NetworkService::Pretendo)
windowText.append(" [Online-Pretendo]");
else if (ActiveSettings::GetNetworkService() == NetworkService::Custom)
windowText.append(" [Online-" + GetNetworkConfig().networkname.GetValue() + "]");
}
windowText.append(" ");
windowText.append(CafeSystem::GetForegroundTitleName());
// append region
CafeConsoleRegion region = CafeSystem::GetForegroundTitleRegion();
uint16 titleVersion = CafeSystem::GetForegroundTitleVersion();
if (region == CafeConsoleRegion::JPN)
windowText.append(fmt::format(" [JP v{}]", titleVersion));
else if (region == CafeConsoleRegion::USA)
windowText.append(fmt::format(" [US v{}]", titleVersion));
else if (region == CafeConsoleRegion::EUR)
windowText.append(fmt::format(" [EU v{}]", titleVersion));
else
windowText.append(fmt::format(" [v{}]", titleVersion));
AsyncSetTitle(windowText);
auto* pad = GetPadView();
if (pad)
pad->AsyncSetTitle(fmt::format("GamePad View - FPS: {:.02f}", fps));
}
void MainWindow::notifyGameLoaded()
{
OnGameLoaded();
UpdateSettingsAfterGameLaunch();
}
void MainWindow::CreateGameListAndStatusBar()
{
if(m_main_panel)
@@ -578,11 +438,7 @@ void MainWindow::OnClose(wxCloseEvent& event)
if(m_game_list)
m_game_list->OnClose(event);
<<<<<<< HEAD:src/gui/MainWindow.cpp
if (!IsMaximized() && !IsFullScreen())
=======
if (!IsMaximized() && !WindowSystem::IsFullScreen())
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
m_restored_size = GetSize();
SaveSettings();
@@ -1450,19 +1306,19 @@ void MainWindow::LoadSettings()
if (config.window_maximized)
this->Maximize();
}
auto& windowInfo = GuiSystem::getWindowInfo();
if (config.pad_position != Vector2i{ -1,-1 })
{
windowInfo.restored_pad_x = config.pad_position.x;
windowInfo.restored_pad_y = config.pad_position.y;
g_window_info.restored_pad_x = config.pad_position.x;
g_window_info.restored_pad_y = config.pad_position.y;
}
if (config.pad_size != Vector2i{ -1,-1 })
{
windowInfo.restored_pad_width = config.pad_size.x;
windowInfo.restored_pad_height = config.pad_size.y;
g_window_info.restored_pad_width = config.pad_size.x;
g_window_info.restored_pad_height = config.pad_size.y;
windowInfo.pad_maximized = config.pad_maximized;
g_window_info.pad_maximized = config.pad_maximized;
}
this->TogglePadView();
@@ -1473,14 +1329,8 @@ void MainWindow::LoadSettings()
void MainWindow::SaveSettings()
{
<<<<<<< HEAD:src/gui/MainWindow.cpp
auto lock = g_config.Lock();
auto& config = GetConfig();
auto& windowInfo = GuiSystem::getWindowInfo();
=======
auto lock = GetConfigHandle().Lock();
auto& config = GetWxGUIConfig();
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
if (config.window_position != Vector2i{ -1,-1 })
{
@@ -1500,16 +1350,16 @@ void MainWindow::SaveSettings()
config.pad_open = m_padView != nullptr;
if (config.pad_position != Vector2i{ -1,-1 } && windowInfo.restored_pad_x != -1)
if (config.pad_position != Vector2i{ -1,-1 } && g_window_info.restored_pad_x != -1)
{
config.pad_position.x = windowInfo.restored_pad_x;
config.pad_position.y = windowInfo.restored_pad_y;
config.pad_position.x = g_window_info.restored_pad_x;
config.pad_position.y = g_window_info.restored_pad_y;
}
if (config.pad_size != Vector2i{ -1,-1 } && windowInfo.restored_pad_width != -1)
if (config.pad_size != Vector2i{ -1,-1 } && g_window_info.restored_pad_width != -1)
{
config.pad_size.x = windowInfo.restored_pad_width;
config.pad_size.y = windowInfo.restored_pad_height;
config.pad_maximized = windowInfo.pad_maximized;
config.pad_size.x = g_window_info.restored_pad_width;
config.pad_size.y = g_window_info.restored_pad_height;
config.pad_maximized = g_window_info.pad_maximized;
}
else
{
@@ -1599,102 +1449,6 @@ void MainWindow::OnSetWindowTitle(wxCommandEvent& event)
this->SetTitle(event.GetString());
}
static std::optional<fs::path> GenerateScreenshotFilename(bool isDRC)
{
fs::path screendir = ActiveSettings::GetUserDataPath("screenshots");
// build screenshot name with format Screenshot_YYYY-MM-DD_HH-MM-SS[_GamePad].png
// if the file already exists add a suffix counter (_2.png, _3.png etc)
std::time_t time_t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::tm* tm = std::localtime(&time_t);
std::string screenshotFileName = fmt::format("Screenshot_{:04}-{:02}-{:02}_{:02}-{:02}-{:02}", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
if (isDRC)
screenshotFileName.append("_GamePad");
fs::path screenshotPath;
for(sint32 i=0; i<999; i++)
{
screenshotPath = screendir;
if (i == 0)
screenshotPath.append(fmt::format("{}.png", screenshotFileName));
else
screenshotPath.append(fmt::format("{}_{}.png", screenshotFileName, i + 1));
std::error_code ec;
bool exists = fs::exists(screenshotPath, ec);
if (!ec && !exists)
return screenshotPath;
}
return std::nullopt;
}
bool SaveScreenshotToFile(const fs::path& imagePath, const wxImage& image)
{
std::error_code ec;
fs::create_directories(imagePath.parent_path(), ec);
if (ec) return false;
// suspend wxWidgets logging for the lifetime this object, to prevent a message box if wxImage::SaveFile fails
wxLogNull _logNo;
return image.SaveFile(imagePath.wstring());
}
bool SaveScreenshotToClipboard(const wxImage& image)
{
static std::mutex s_clipboardMutex;
bool success = false;
s_clipboardMutex.lock();
if (wxTheClipboard->Open())
{
wxTheClipboard->SetData(new wxImageDataObject(image));
wxTheClipboard->Close();
success = true;
}
s_clipboardMutex.unlock();
return success;
}
std::optional<std::string> SaveScreenshot(std::vector<uint8> data, int width, int height, bool mainWindow)
{
#if BOOST_OS_WINDOWS
// on Windows wxWidgets uses OLE API for the clipboard
// to make this work we need to call OleInitialize() on the same thread
OleInitialize(nullptr);
#endif
bool save_screenshot = g_config.data().save_screenshot;
wxImage image(width, height, data.data(), true);
if (mainWindow)
{
if(SaveScreenshotToClipboard(image))
{
if (!save_screenshot)
return "Screenshot saved to clipboard";
}
else
{
return "Failed to open clipboard";
}
}
if (save_screenshot)
{
auto imagePath = GenerateScreenshotFilename(mainWindow);
if (imagePath.has_value() && SaveScreenshotToFile(imagePath.value(), image))
{
if (mainWindow)
return "Screenshot saved";
}
else
{
return "Failed to save screenshot to file";
}
}
return std::nullopt;
}
void MainWindow::OnKeyUp(wxKeyEvent& event)
{
event.Skip();
@@ -1702,17 +1456,7 @@ void MainWindow::OnKeyUp(wxKeyEvent& event)
if (swkbd::hasKeyboardInputHook())
return;
<<<<<<< HEAD:src/gui/MainWindow.cpp
const auto code = event.GetKeyCode();
if (code == WXK_ESCAPE)
SetFullScreen(false);
else if (code == WXK_RETURN && event.AltDown() || code == WXK_F11)
SetFullScreen(!IsFullScreen());
else if (code == WXK_F12 && g_renderer)
g_renderer->RequestScreenshot(SaveScreenshot); // async screenshot request
=======
HotkeySettings::CaptureInput(event);
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
}
void MainWindow::OnKeyDown(wxKeyEvent& event)
@@ -1897,20 +1641,15 @@ void MainWindow::DestroyCanvas()
void MainWindow::OnSizeEvent(wxSizeEvent& event)
{
<<<<<<< HEAD:src/gui/MainWindow.cpp
if (!IsMaximized() && !IsFullScreen())
=======
if (!IsMaximized() && !WindowSystem::IsFullScreen())
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
m_restored_size = GetSize();
auto& windowInfo = GuiSystem::getWindowInfo();
const wxSize client_size = GetClientSize();
windowInfo.width = client_size.GetWidth();
windowInfo.height = client_size.GetHeight();
windowInfo.phys_width = ToPhys(client_size.GetWidth());
windowInfo.phys_height = ToPhys(client_size.GetHeight());
windowInfo.dpi_scale = GetDPIScaleFactor();
g_window_info.width = client_size.GetWidth();
g_window_info.height = client_size.GetHeight();
g_window_info.phys_width = ToPhys(client_size.GetWidth());
g_window_info.phys_height = ToPhys(client_size.GetHeight());
g_window_info.dpi_scale = GetDPIScaleFactor();
if (m_debugger_window && m_debugger_window->IsShown())
m_debugger_window->OnParentMove(GetPosition(), event.GetSize());
@@ -1923,22 +1662,17 @@ void MainWindow::OnSizeEvent(wxSizeEvent& event)
void MainWindow::OnDPIChangedEvent(wxDPIChangedEvent& event)
{
event.Skip();
auto& windowInfo = GuiSystem::getWindowInfo();
const wxSize client_size = GetClientSize();
windowInfo.width = client_size.GetWidth();
windowInfo.height = client_size.GetHeight();
windowInfo.phys_width = ToPhys(client_size.GetWidth());
windowInfo.phys_height = ToPhys(client_size.GetHeight());
windowInfo.dpi_scale = GetDPIScaleFactor();
g_window_info.width = client_size.GetWidth();
g_window_info.height = client_size.GetHeight();
g_window_info.phys_width = ToPhys(client_size.GetWidth());
g_window_info.phys_height = ToPhys(client_size.GetHeight());
g_window_info.dpi_scale = GetDPIScaleFactor();
}
void MainWindow::OnMove(wxMoveEvent& event)
{
<<<<<<< HEAD:src/gui/MainWindow.cpp
if (!IsMaximized() && !IsFullScreen())
=======
if (!IsMaximized() && !WindowSystem::IsFullScreen())
>>>>>>> public/main:src/gui/wxgui/MainWindow.cpp
m_restored_position = GetPosition();
if (m_debugger_window && m_debugger_window->IsShown())
@@ -1998,7 +1732,7 @@ void MainWindow::SetFullScreen(bool state)
}
if (state && !m_game_launched)
return;
GuiSystem::getWindowInfo().is_fullscreen = state;
g_window_info.is_fullscreen = state;
m_fullscreenMenuItem->Check(state);
this->ShowFullScreen(state);
+1 -15
View File
@@ -5,15 +5,6 @@
#include <wx/infobar.h>
#include "wxcomponents/checkedlistctrl.h"
<<<<<<< HEAD:src/gui/MainWindow.h
#include "PadViewFrame.h"
#include "MemorySearcherTool.h"
#include "config/XMLConfig.h"
#include "LoggingWindow.h"
#include "components/wxGameList.h"
=======
#include "wxgui/PadViewFrame.h"
#include "wxgui/MemorySearcherTool.h"
@@ -21,7 +12,6 @@
#include "wxgui/LoggingWindow.h"
#include "wxgui/components/wxGameList.h"
>>>>>>> public/main:src/gui/wxgui/MainWindow.h
#include <future>
#include "Cafe/HW/Espresso/Debugger/GDBStub.h"
@@ -63,7 +53,7 @@ private:
INITIATED_BY m_initiatedBy;
};
class MainWindow : public wxFrame, public CafeSystem::CafeSystemCallbacks, public CafeSystem::SystemImplementation
class MainWindow : public wxFrame, public CafeSystem::SystemImplementation
{
friend class CemuApp;
@@ -74,10 +64,6 @@ public:
void CreateGameListAndStatusBar();
void DestroyGameListAndStatusBar();
virtual void updateWindowTitles(bool isIdle, bool isLoading, double fps) override;
virtual void notifyGameLoaded() override;
void UpdateSettingsAfterGameLaunch();
void RestoreSettingsAfterGameExited();
-10
View File
@@ -1,12 +1,6 @@
<<<<<<< HEAD:src/gui/MemorySearcherTool.cpp
#include "wxgui.h"
#include "MemorySearcherTool.h"
=======
#include "wxgui/wxgui.h"
#include "wxgui/MemorySearcherTool.h"
>>>>>>> public/main:src/gui/wxgui/MemorySearcherTool.cpp
#include <vector>
#include <sstream>
@@ -14,11 +8,7 @@
#include <wx/listctrl.h>
#include "config/ActiveSettings.h"
<<<<<<< HEAD:src/gui/MemorySearcherTool.cpp
#include "helpers/wxHelpers.h"
=======
#include "wxgui/helpers/wxHelpers.h"
>>>>>>> public/main:src/gui/wxgui/MemorySearcherTool.cpp
#include "Common/FileStream.h"
#include "util/IniParser/IniParser.h"
#include "util/helpers/StringHelpers.h"
-4
View File
@@ -6,11 +6,7 @@
#include "Cafe/HW/MMU/MMU.h"
#include "util/helpers/helpers.h"
<<<<<<< HEAD:src/gui/MemorySearcherTool.h
#include "helpers/wxCustomEvents.h"
=======
#include "wxgui/helpers/wxCustomEvents.h"
>>>>>>> public/main:src/gui/wxgui/MemorySearcherTool.h
enum SearchDataType
{
+25 -51
View File
@@ -1,67 +1,45 @@
<<<<<<< HEAD:src/gui/PadViewFrame.cpp
#include "wxgui.h"
#include "PadViewFrame.h"
=======
#include "interface/WindowSystem.h"
#include "wxgui/wxgui.h"
#include "wxgui/PadViewFrame.h"
>>>>>>> public/main:src/gui/wxgui/PadViewFrame.cpp
#include <wx/display.h>
#include "config/ActiveSettings.h"
#include "Cafe/OS/libs/swkbd/swkbd.h"
<<<<<<< HEAD:src/gui/PadViewFrame.cpp
#include "canvas/OpenGLCanvas.h"
#include "canvas/VulkanCanvas.h"
#include "config/CemuConfig.h"
#include "MainWindow.h"
#include "helpers/wxHelpers.h"
=======
#include "wxgui/canvas/OpenGLCanvas.h"
#include "wxgui/canvas/VulkanCanvas.h"
#include "config/CemuConfig.h"
#include "wxgui/MainWindow.h"
#include "wxgui/helpers/wxHelpers.h"
>>>>>>> public/main:src/gui/wxgui/PadViewFrame.cpp
#include "input/InputManager.h"
#include "Cemu/GuiSystem/GuiSystem.h"
#if BOOST_OS_LINUX || BOOST_OS_MACOS
#include "resource/embedded/resources.h"
#endif
#include "wxHelper.h"
<<<<<<< HEAD:src/gui/PadViewFrame.cpp
=======
extern WindowSystem::WindowInfo g_window_info;
>>>>>>> public/main:src/gui/wxgui/PadViewFrame.cpp
#define PAD_MIN_WIDTH 320
#define PAD_MIN_HEIGHT 180
PadViewFrame::PadViewFrame(wxFrame* parent)
: wxFrame(nullptr, wxID_ANY, _("GamePad View"), wxDefaultPosition, wxDefaultSize, wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN | wxRESIZE_BORDER | wxCLOSE_BOX | wxWANTS_CHARS)
{
<<<<<<< HEAD:src/gui/PadViewFrame.cpp
auto& windowInfo = GuiSystem::getWindowInfo();
windowInfo.window_pad = get_window_handle_info_for_wxWindow(this);
=======
g_window_info.window_pad = initHandleContextFromWxWidgetsWindow(this);
>>>>>>> public/main:src/gui/wxgui/PadViewFrame.cpp
SetIcon(wxICON(M_WND_ICON128));
wxWindow::EnableTouchEvents(wxTOUCH_PAN_GESTURES);
SetMinClientSize({ PAD_MIN_WIDTH, PAD_MIN_HEIGHT });
SetPosition({ windowInfo.restored_pad_x, windowInfo.restored_pad_y });
if (windowInfo.restored_pad_width >= PAD_MIN_WIDTH && windowInfo.restored_pad_height >= PAD_MIN_HEIGHT)
SetClientSize({ windowInfo.restored_pad_width, windowInfo.restored_pad_height });
SetPosition({ g_window_info.restored_pad_x, g_window_info.restored_pad_y });
if (g_window_info.restored_pad_width >= PAD_MIN_WIDTH && g_window_info.restored_pad_height >= PAD_MIN_HEIGHT)
SetClientSize({ g_window_info.restored_pad_width, g_window_info.restored_pad_height });
else
SetClientSize(wxSize(854, 480));
if (windowInfo.pad_maximized)
if (g_window_info.pad_maximized)
Maximize();
Bind(wxEVT_SIZE, &PadViewFrame::OnSizeEvent, this);
@@ -71,22 +49,21 @@ PadViewFrame::PadViewFrame(wxFrame* parent)
Bind(wxEVT_SET_WINDOW_TITLE, &PadViewFrame::OnSetWindowTitle, this);
windowInfo.pad_open = true;
g_window_info.pad_open = true;
}
PadViewFrame::~PadViewFrame()
{
GuiSystem::getWindowInfo().pad_open = false;
g_window_info.pad_open = false;
}
bool PadViewFrame::Initialize()
{
auto& windowInfo = GuiSystem::getWindowInfo();
const wxSize client_size = GetClientSize();
windowInfo.pad_width = client_size.GetWidth();
windowInfo.pad_height = client_size.GetHeight();
windowInfo.phys_pad_width = ToPhys(client_size.GetWidth());
windowInfo.phys_pad_height = ToPhys(client_size.GetHeight());
g_window_info.pad_width = client_size.GetWidth();
g_window_info.pad_height = client_size.GetHeight();
g_window_info.phys_pad_width = ToPhys(client_size.GetWidth());
g_window_info.phys_pad_height = ToPhys(client_size.GetHeight());
return true;
}
@@ -129,20 +106,19 @@ void PadViewFrame::DestroyCanvas()
void PadViewFrame::OnSizeEvent(wxSizeEvent& event)
{
auto& windowInfo = GuiSystem::getWindowInfo();
if (!IsMaximized() && !IsFullScreen())
{
windowInfo.restored_pad_width = GetSize().x;
windowInfo.restored_pad_height = GetSize().y;
g_window_info.restored_pad_width = GetSize().x;
g_window_info.restored_pad_height = GetSize().y;
}
windowInfo.pad_maximized = IsMaximized() && !IsFullScreen();
g_window_info.pad_maximized = IsMaximized() && !IsFullScreen();
const wxSize client_size = GetClientSize();
windowInfo.pad_width = client_size.GetWidth();
windowInfo.pad_height = client_size.GetHeight();
windowInfo.phys_pad_width = ToPhys(client_size.GetWidth());
windowInfo.phys_pad_height = ToPhys(client_size.GetHeight());
windowInfo.pad_dpi_scale = GetDPIScaleFactor();
g_window_info.pad_width = client_size.GetWidth();
g_window_info.pad_height = client_size.GetHeight();
g_window_info.phys_pad_width = ToPhys(client_size.GetWidth());
g_window_info.phys_pad_height = ToPhys(client_size.GetHeight());
g_window_info.pad_dpi_scale = GetDPIScaleFactor();
event.Skip();
}
@@ -150,22 +126,20 @@ void PadViewFrame::OnSizeEvent(wxSizeEvent& event)
void PadViewFrame::OnDPIChangedEvent(wxDPIChangedEvent& event)
{
event.Skip();
auto& windowInfo = GuiSystem::getWindowInfo();
const wxSize client_size = GetClientSize();
windowInfo.pad_width = client_size.GetWidth();
windowInfo.pad_height = client_size.GetHeight();
windowInfo.phys_pad_width = ToPhys(client_size.GetWidth());
windowInfo.phys_pad_height = ToPhys(client_size.GetHeight());
windowInfo.pad_dpi_scale = GetDPIScaleFactor();
g_window_info.pad_width = client_size.GetWidth();
g_window_info.pad_height = client_size.GetHeight();
g_window_info.phys_pad_width = ToPhys(client_size.GetWidth());
g_window_info.phys_pad_height = ToPhys(client_size.GetHeight());
g_window_info.pad_dpi_scale = GetDPIScaleFactor();
}
void PadViewFrame::OnMoveEvent(wxMoveEvent& event)
{
if (!IsMaximized() && !IsFullScreen())
{
auto& windowInfo = GuiSystem::getWindowInfo();
windowInfo.restored_pad_x = GetPosition().x;
windowInfo.restored_pad_y = GetPosition().y;
g_window_info.restored_pad_x = GetPosition().x;
g_window_info.restored_pad_y = GetPosition().y;
}
}
-24
View File
@@ -1,17 +1,3 @@
<<<<<<< HEAD:src/gui/TitleManager.cpp
#include "TitleManager.h"
#include "helpers/wxCustomEvents.h"
#include "helpers/wxCustomData.h"
#include "Cafe/TitleList/GameInfo.h"
#include "util/helpers/helpers.h"
#include "helpers/wxHelpers.h"
#include "wxHelper.h"
#include "components/wxTitleManagerList.h"
#include "components/wxDownloadManagerList.h"
#include "GameUpdateWindow.h"
#include "dialogs/SaveImport/SaveTransfer.h"
=======
#include "wxgui/TitleManager.h"
#include "wxgui/helpers/wxCustomEvents.h"
@@ -24,7 +10,6 @@
#include "wxgui/components/wxDownloadManagerList.h"
#include "wxgui/GameUpdateWindow.h"
#include "wxgui/dialogs/SaveImport/SaveTransfer.h"
>>>>>>> public/main:src/gui/wxgui/TitleManager.cpp
#include <wx/listbase.h>
#include <wx/sizer.h>
@@ -48,19 +33,10 @@
#include "Cafe/IOSU/legacy/iosu_crypto.h"
#include "config/ActiveSettings.h"
<<<<<<< HEAD:src/gui/TitleManager.cpp
#include "dialogs/SaveImport/SaveImportWindow.h"
#include "Cafe/Account/Account.h"
#include "Cemu/Tools/DownloadManager/DownloadManager.h"
#include "CemuApp.h"
#include "gui/CemuApp.h"
=======
#include "wxgui/dialogs/SaveImport/SaveImportWindow.h"
#include "Cafe/Account/Account.h"
#include "Cemu/Tools/DownloadManager/DownloadManager.h"
#include "wxgui/CemuApp.h"
>>>>>>> public/main:src/gui/wxgui/TitleManager.cpp
#include "Cafe/TitleList/TitleList.h"
#include "Cafe/TitleList/SaveList.h"
#include "resource/embedded/resources.h"

Some files were not shown because too many files have changed in this diff Show More