From bcee9b2a719671a1f52d8d1de32c5bad41a56634 Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Wed, 13 Nov 2024 16:58:16 -0800 Subject: [PATCH 1/3] Set MacOS Bundle Base Directory Set base directory outside MacOS app bundle --- .../Source/CommonFramework/Globals.cpp | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/SerialPrograms/Source/CommonFramework/Globals.cpp b/SerialPrograms/Source/CommonFramework/Globals.cpp index 4486da86a2..0ca795e431 100644 --- a/SerialPrograms/Source/CommonFramework/Globals.cpp +++ b/SerialPrograms/Source/CommonFramework/Globals.cpp @@ -55,13 +55,22 @@ const std::string PROJECT_SOURCE_URL = "https://github.com/PokemonAutomation/Ard namespace{ +QString get_application_base_dir_path(){ + QString application_dir_path = qApp->applicationDirPath(); + if (application_dir_path.endsWith(".app/Contents/MacOS")){ + // a macOS bundle. Change working directory to the folder that hosts the .app folder. + QString app_bundle_path = application_dir_path.chopped(15); + QString base_folder_path = QFileInfo(app_bundle_path).dir().absolutePath(); + return base_folder_path; + } + return application_dir_path; +} std::string get_resource_path(){ // Find the resource directory. - QString path = QCoreApplication::applicationDirPath(); + QString path = get_application_base_dir_path(); for (size_t c = 0; c < 5; c++){ QString try_path = path + "/Resources/"; QFile file(try_path); -// cout << path.toUtf8().data() << endl; if (file.exists()){ return try_path.toStdString(); } @@ -70,12 +79,11 @@ std::string get_resource_path(){ return (QCoreApplication::applicationDirPath() + "/../Resources/").toStdString(); } std::string get_training_path(){ - // Find the resource directory. - QString path = QCoreApplication::applicationDirPath(); + // Find the training data directory. + QString path = get_application_base_dir_path(); for (size_t c = 0; c < 5; c++){ QString try_path = path + "/TrainingData/"; QFile file(try_path); -// cout << path.toUtf8().data() << endl; if (file.exists()){ return try_path.toStdString(); } @@ -85,15 +93,13 @@ std::string get_training_path(){ } std::string get_runtime_base_path(){ - QString application_dir_path = qApp->applicationDirPath(); - if (application_dir_path.endsWith(".app/Contents/MacOS")){ - // a macOS bundle. Change working directory to the folder that hosts the .app folder. - QString app_bundle_path = application_dir_path.chopped(15); - QString base_folder_path = QFileInfo(app_bundle_path).dir().absolutePath(); - return base_folder_path.toStdString() + "/"; + if (QSysInfo::productType() == "macos" || QSysInfo::productType() == "osx"){ + QString application_dir_path = get_application_base_dir_path(); + return application_dir_path.toStdString() + "/"; } return "./"; } + const std::string& RUNTIME_BASE_PATH(){ static std::string path = get_runtime_base_path(); return path; From 46d44bd539cf08b145afb7487e11f8486f64787a Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Wed, 13 Nov 2024 22:06:15 -0800 Subject: [PATCH 2/3] Fix Logging on MacOS Explicitly defining SerialPrograms.log on MacOS --- .../Source/CommonFramework/Logging/FileWindowLogger.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SerialPrograms/Source/CommonFramework/Logging/FileWindowLogger.cpp b/SerialPrograms/Source/CommonFramework/Logging/FileWindowLogger.cpp index c5a0df9e82..200952a97b 100644 --- a/SerialPrograms/Source/CommonFramework/Logging/FileWindowLogger.cpp +++ b/SerialPrograms/Source/CommonFramework/Logging/FileWindowLogger.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include "CommonFramework/Windows/DpiScaler.h" #include "CommonFramework/Windows/WindowTracker.h" #include "FileWindowLogger.h" @@ -19,7 +20,7 @@ namespace PokemonAutomation{ Logger& global_logger_raw(){ - static FileWindowLogger logger((QCoreApplication::applicationName() + ".log").toStdString()); + static FileWindowLogger logger(USER_FILE_PATH() + (QCoreApplication::applicationName() + ".log").toStdString()); return logger; } From b04eae5dc9d8868b28f7a2c693b4376b2473b28e Mon Sep 17 00:00:00 2001 From: Eric Zhang Date: Wed, 13 Nov 2024 22:20:18 -0800 Subject: [PATCH 3/3] Linked SerialPrograms Icon on MacOS --- IconResource/icon.icns | Bin 0 -> 45913 bytes SerialPrograms/CMakeLists.txt | 5 +++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 IconResource/icon.icns diff --git a/IconResource/icon.icns b/IconResource/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..9483d6da0fef49cae610bd4c89443a8874f0ae78 GIT binary patch literal 45913 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 a27#>?h&{e^X>YoiK6VooGXB3<$NvGUNH8$~ literal 0 HcmV?d00001 diff --git a/SerialPrograms/CMakeLists.txt b/SerialPrograms/CMakeLists.txt index 9d9a4daaaf..101a0874e7 100644 --- a/SerialPrograms/CMakeLists.txt +++ b/SerialPrograms/CMakeLists.txt @@ -2034,7 +2034,7 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}../../ FILES ${MAIN_SOURCES}) if (APPLE) # TODO: set up the correct application icon - # set(SerialPrograms_ICON ${CMAKE_CURRENT_SOURCE_DIR}/../Resources/icon.icns) + set(SerialPrograms_ICON ${CMAKE_CURRENT_SOURCE_DIR}/../IconResource/icon.icns) # set_source_files_properties(SerialPrograms_ICON PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") # Links on how to create a MacOS app bundle with cmake @@ -2047,9 +2047,10 @@ if (APPLE) MACOSX_BUNDLE_BUNDLE_NAME SerialPrograms MACOSX_BUNDLE_BUNDLE_VERSION "0.1" MACOSX_BUNDLE_SHORT_VERSION_STRING "0.1" - # MACOSX_BUNDLE_ICON_FILE icon + MACOSX_BUNDLE_ICON_FILE "icon.icns" # MacOSXBundleInfo.plist.in is modified from https://github.com/Kitware/CMake/blob/master/Modules/MacOSXBundleInfo.plist.in MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in + RESOURCE ${SerialPrograms_ICON} ) else() # WIN and Linux: add_executable(SerialPrograms WIN32 ${MAIN_SOURCES})