From 3747e271f900d83de022272508111aecd653eeb3 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Sat, 18 May 2024 14:53:35 -0400 Subject: [PATCH] Launcher: Support launching Windows executables --- apps/launcher/CMakeLists.txt | 33 +++++++++++++++++++++++++++++--- apps/launcher/src/mainwindow.cpp | 12 +++++++----- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/apps/launcher/CMakeLists.txt b/apps/launcher/CMakeLists.txt index 8fe8a57..7db8775 100644 --- a/apps/launcher/CMakeLists.txt +++ b/apps/launcher/CMakeLists.txt @@ -1,20 +1,47 @@ # SPDX-FileCopyrightText: 2023 Joshua Goins # SPDX-License-Identifier: CC0-1.0 +# config file used for app executable names +# TODO: haha this is horrible, make this easier pls +file (GENERATE + OUTPUT "launcherconfig_$.h.out" + CONTENT "\ +#pragma once\n\ +#define GEAREDITOR_EXECUTABLE QStringLiteral(\"$\")\n\ +#define EXCELEDITOR_EXECUTABLE QStringLiteral(\"$\")\n\ +#define MAPEDITOR_EXECUTABLE QStringLiteral(\"$\")\n\ +#define MATEDITOR_EXECUTABLE QStringLiteral(\"$\")\n\ +#define MDLVIEWER_EXECUTABLE QStringLiteral(\"$\")\n\ +#define DATAEXPLORER_EXECUTABLE QStringLiteral(\"$\")\n\ + " +) + +# copy the new file to something standard we'll plug into the C++ +add_custom_command( + COMMAND ${CMAKE_COMMAND} "-E" "copy_if_different" "launcherconfig_$.h.out" "launcherconfig.h" + VERBATIM + PRE_BUILD + DEPENDS "launcherconfig_$.h.out" + OUTPUT "launcherconfig.h" + COMMENT "creating config.out file ({event: PRE_BUILD}, {filename: config.out})" +) + add_executable(novus-launcher) target_sources(novus-launcher PRIVATE include/mainwindow.h src/main.cpp - src/mainwindow.cpp) + src/mainwindow.cpp + + launcherconfig.h) target_link_libraries(novus-launcher PRIVATE Novus::Common Physis::Physis KF6::ConfigCore Qt6::Widgets) -target_include_directories(novus-launcher PUBLIC include) +target_include_directories(novus-launcher PUBLIC include PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) install(TARGETS novus-launcher ${KF${QT_MAJOR_VERSION}_INSTALL_TARGETS_DEFAULT_ARGS}) @@ -43,4 +70,4 @@ qt_generate_deploy_app_script( OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) -install(SCRIPT ${deploy_script}) +install(SCRIPT ${deploy_script}) \ No newline at end of file diff --git a/apps/launcher/src/mainwindow.cpp b/apps/launcher/src/mainwindow.cpp index bbf0a21..e1ee801 100644 --- a/apps/launcher/src/mainwindow.cpp +++ b/apps/launcher/src/mainwindow.cpp @@ -15,12 +15,14 @@ #include #include +#include "launcherconfig.h" + static QMap> applications = { - {QStringLiteral("Gear Editor"), {QStringLiteral("zone.xiv.armoury"), QStringLiteral("novus-armoury")}}, - {QStringLiteral("Map Editor"), {QStringLiteral("zone.xiv.mapeditor"), QStringLiteral("novus-mapeditor")}}, - {QStringLiteral("Excel Editor"), {QStringLiteral("zone.xiv.karaku"), QStringLiteral("novus-karuku")}}, - {QStringLiteral("Data Explorer"), {QStringLiteral("zone.xiv.sagasu"), QStringLiteral("novus-sagasu")}}, - {QStringLiteral("Model Viewer"), {QStringLiteral("zone.xiv.mdlviewer"), QStringLiteral("novus-mdlviewer")}}}; + {QStringLiteral("Gear Editor"), {QStringLiteral("zone.xiv.armoury"), GEAREDITOR_EXECUTABLE}}, + {QStringLiteral("Map Editor"), {QStringLiteral("zone.xiv.mapeditor"), MAPEDITOR_EXECUTABLE}}, + {QStringLiteral("Excel Editor"), {QStringLiteral("zone.xiv.karaku"), EXCELEDITOR_EXECUTABLE}}, + {QStringLiteral("Data Explorer"), {QStringLiteral("zone.xiv.sagasu"), DATAEXPLORER_EXECUTABLE}}, + {QStringLiteral("Model Viewer"), {QStringLiteral("zone.xiv.mdlviewer"), MDLVIEWER_EXECUTABLE}}}; static QMap links = {{QStringLiteral("XIV Dev Wiki"), QStringLiteral("https://xiv.dev")}, {QStringLiteral("XIV Docs"), QStringLiteral("https://docs.xiv.zone")}};