added experimental wxwidgets implementation

This commit is contained in:
EinTim23 2024-11-02 11:25:56 +01:00
parent 4a9710ce1e
commit 75c61fe193
7 changed files with 53 additions and 7 deletions

3
.gitmodules vendored
View File

@ -10,3 +10,6 @@
[submodule "vendor/mbedtls"] [submodule "vendor/mbedtls"]
path = vendor/mbedtls path = vendor/mbedtls
url = https://github.com/Mbed-TLS/mbedtls.git url = https://github.com/Mbed-TLS/mbedtls.git
[submodule "vendor/wxWidgets"]
path = vendor/wxWidgets
url = https://github.com/wxWidgets/wxWidgets.git

View File

@ -4,9 +4,18 @@ file(GLOB_RECURSE SOURCES "src/*.cpp")
add_executable (rpc ${SOURCES}) add_executable (rpc ${SOURCES})
set_property(TARGET rpc PROPERTY CXX_STANDARD 20) set_property(TARGET rpc PROPERTY CXX_STANDARD 20)
add_subdirectory("vendor") add_subdirectory("vendor")
set(LIBRARIES discord-rpc libcurl_static mbedcrypto mbedx509 mbedtls) set(LIBRARIES discord-rpc libcurl_static mbedcrypto mbedx509 mbedtls wxmono)
if(WIN32) if(WIN32)
list(APPEND LIBRARIES WindowsApp) list(APPEND LIBRARIES WindowsApp)
endif() endif()
target_link_libraries(rpc PUBLIC ${LIBRARIES}) file(GLOB wx_setup_dir
target_include_directories(rpc PRIVATE vendor) "${CMAKE_BINARY_DIR}/vendor/wxWidgets/lib/*/mswu"
"${CMAKE_BINARY_DIR}/vendor/wxWidgets/lib/*/gtk3u"
)
if(wx_setup_dir)
message(STATUS "wxWidgets setup.h directory found: ${wx_setup_dir}")
target_include_directories(rpc PRIVATE vendor vendor/wxWidgets/include ${wx_setup_dir})
else()
message(FATAL_ERROR "wx/setup.h not found. Please check your wxWidgets build configuration.")
endif()
target_link_libraries(rpc PUBLIC ${LIBRARIES})

5
src/backends/darwin.cpp Normal file
View File

@ -0,0 +1,5 @@
#ifdef __APPLE__
std::shared_ptr<MediaInfo> backend::getMediaInformation() { return nullptr; }
#endif

5
src/backends/linux.cpp Normal file
View File

@ -0,0 +1,5 @@
#if !defined(_WIN32) && !defined(__APPLE__)
std::shared_ptr<MediaInfo> backend::getMediaInformation() { return nullptr; }
#endif

View File

@ -1,4 +1,5 @@
#include <discord-rpc/discord_rpc.h> #include <discord-rpc/discord_rpc.h>
#include <wx/wx.h>
#include <chrono> #include <chrono>
#include <fstream> #include <fstream>
@ -7,6 +8,7 @@
#include "backend.hpp" #include "backend.hpp"
#include "utils.hpp" #include "utils.hpp"
std::string lastPlayingSong = ""; std::string lastPlayingSong = "";
std::string lastMediaSource = ""; std::string lastMediaSource = "";
@ -26,10 +28,7 @@ void handleRPCTasks() {
handleRPCTasks(); // this could theoretically cause a stack overflow if discord is restarted often enough handleRPCTasks(); // this could theoretically cause a stack overflow if discord is restarted often enough
} }
int main() { void handleMediaTasks() {
std::thread rpcThread(handleRPCTasks);
rpcThread.detach();
while (true) { while (true) {
std::this_thread::sleep_for(std::chrono::seconds(1)); std::this_thread::sleep_for(std::chrono::seconds(1));
auto mediaInformation = backend::getMediaInformation(); auto mediaInformation = backend::getMediaInformation();
@ -98,4 +97,23 @@ int main() {
Discord_UpdatePresence(&activity); Discord_UpdatePresence(&activity);
} }
}
class MyApp : public wxApp {
public:
virtual bool OnInit() override {
wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "Hello wxWidgets", wxDefaultPosition, wxSize(400, 300));
wxStaticText* text = new wxStaticText(frame, wxID_ANY, "Hello World", wxPoint(150, 130));
frame->Show(true);
return true;
}
};
wxIMPLEMENT_APP_NO_MAIN(MyApp);
int main(int argc, char** argv) {
std::thread rpcThread(handleRPCTasks);
rpcThread.detach();
std::thread mediaThread(handleMediaTasks);
mediaThread.detach();
return wxEntry(argc, argv);
} }

View File

@ -11,3 +11,8 @@ SET(MBEDTLS_INCLUDE_DIRS ../mbedtls/include)
file(REMOVE curl/CMake/FindMbedTLS.cmake) #replace curls FindMbedTLS that expects mbedtls to be prebuilt with a dummy file(REMOVE curl/CMake/FindMbedTLS.cmake) #replace curls FindMbedTLS that expects mbedtls to be prebuilt with a dummy
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dummy ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/dummy ${CMAKE_MODULE_PATH})
add_subdirectory("curl") add_subdirectory("curl")
set(wxBUILD_SHARED OFF)
set(wxBUILD_MONOLITHIC ON)
set(wxUSE_GUI ON)
set(wxUSE_WEBVIEW OFF)
add_subdirectory("wxWidgets")

1
vendor/wxWidgets vendored Submodule

@ -0,0 +1 @@
Subproject commit 5ff25322553c1870cf20a2e1ba6f20ed50d9fe9a