From bf5a9a88023032b141bbc68941e06ba6775c7a7e Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:49:45 +0200 Subject: [PATCH 01/13] Rename and move config json file --- CMakeLists.txt | 2 +- src/ScatterplotPlugin.json => PluginInfo.json | 0 src/ScatterplotPlugin.h | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/ScatterplotPlugin.json => PluginInfo.json (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe1180e..437a227 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,7 @@ set(Models ) set(AUX - src/ScatterplotPlugin.json + PluginInfo.json ) set(SOURCES ${PLUGIN} ${UI} ${Actions} ${Models}) diff --git a/src/ScatterplotPlugin.json b/PluginInfo.json similarity index 100% rename from src/ScatterplotPlugin.json rename to PluginInfo.json diff --git a/src/ScatterplotPlugin.h b/src/ScatterplotPlugin.h index 23b8250..d1264fc 100644 --- a/src/ScatterplotPlugin.h +++ b/src/ScatterplotPlugin.h @@ -132,7 +132,7 @@ class ScatterplotPluginFactory : public ViewPluginFactory Q_INTERFACES(mv::plugin::ViewPluginFactory mv::plugin::PluginFactory) Q_OBJECT Q_PLUGIN_METADATA(IID "studio.manivault.ScatterplotPlugin" - FILE "ScatterplotPlugin.json") + FILE "PluginInfo.json") public: ScatterplotPluginFactory(); From 77280bcf299cf09c3171934801736203f8ef5690 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:49:52 +0200 Subject: [PATCH 02/13] We use automoc --- CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 437a227..323db3c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,10 +38,6 @@ set(PLUGIN src/ScatterplotPlugin.cpp ) -set(PLUGIN_MOC_HEADERS - src/ScatterplotPlugin.h -) - set(UI src/ScatterplotWidget.h src/ScatterplotWidget.cpp From bbbf308ad1e98793be6fd4052c25cedc160aa9f7 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:50:13 +0200 Subject: [PATCH 03/13] Add core version to PluginInfo.json --- PluginInfo.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PluginInfo.json b/PluginInfo.json index 6188f28..f8b63e1 100644 --- a/PluginInfo.json +++ b/PluginInfo.json @@ -1,5 +1,6 @@ { "name" : "Scatterplot View", - "version" : "1", - "dependencies" : ["Points"] + "version" : "1.0.0", + "dependencies" : ["Points"], + "core" : ["1.3"] } From ed39379e1731c4ae34ead70955060da8e23bc267 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:50:53 +0200 Subject: [PATCH 04/13] Read plugin version from config file --- CMakeLists.txt | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 323db3c..53aa6ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,17 @@ option(MV_UNITY_BUILD "Combine target source files into batches for faster compi # Scatterplot Plugin # ----------------------------------------------------------------------------- set(PROJECT "ScatterplotPlugin") + +set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json") + +if(NOT EXISTS "${PLUGIN_CONFIG_FILE}") + message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}") +endif() + +file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) +string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version) +message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") + PROJECT(${PROJECT}) # ----------------------------------------------------------------------------- From c00194968c8ef627b88a06efd79744443a513e5e Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:51:14 +0200 Subject: [PATCH 05/13] Set cmake project version to plugin version --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 53aa6ed..ca20118 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,11 @@ file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version) message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") -PROJECT(${PROJECT}) +PROJECT(${PROJECT} + VERSION ${PLUGIN_VERSION} + DESCRIPTION "A scatterplot viewer plugin for ManiVault" + LANGUAGES CXX +) # ----------------------------------------------------------------------------- # CMake Options From cbefc7395b9feafab8a303a28a8c43c55073d983 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:51:31 +0200 Subject: [PATCH 06/13] Encore plugin and manivault version in output file name --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ca20118..1b4b3f6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -158,9 +158,9 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD --prefix ${ManiVault_INSTALL_DIR}/$ ) -set_target_properties(${PROJECT} - PROPERTIES +set_target_properties(${PROJECT} PROPERTIES FOLDER ViewPlugins + OUTPUT_NAME "${PROJECT}_${PLUGIN_VERSION}_${ManiVault_VERSION}" ) # ----------------------------------------------------------------------------- From 67fc69f6bc3f2245213b370486162e50f1463060 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Mon, 2 Jun 2025 17:52:34 +0200 Subject: [PATCH 07/13] More robust compiler check --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b4b3f6..d4b60d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,12 +31,12 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOMOC ON) -if(MSVC) +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DWIN32 /EHsc /MP /permissive- /Zc:__cplusplus") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MD") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") -endif(MSVC) +endif() # ----------------------------------------------------------------------------- # Dependencies @@ -167,7 +167,7 @@ set_target_properties(${PROJECT} PROPERTIES # Miscellaneous # ----------------------------------------------------------------------------- # Automatically set the debug environment (command + working directory) for MSVC -if(MSVC) +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY $,${ManiVault_INSTALL_DIR}/Debug,$,${ManiVault_INSTALL_DIR}/RelWithDebInfo,${ManiVault_INSTALL_DIR}/Release>>) set_property(TARGET ${PROJECT} PROPERTY VS_DEBUGGER_COMMAND $,"${ManiVault_INSTALL_DIR}/Debug/ManiVault Studio.exe",$,"${ManiVault_INSTALL_DIR}/RelWithDebInfo/ManiVault Studio.exe","${ManiVault_INSTALL_DIR}/Release/ManiVault Studio.exe">>) endif() From a17b01782068ed3d4d6d3d0351504862e4b27cfb Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 09:10:35 +0200 Subject: [PATCH 08/13] Update CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4b60d2..a3b4625 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -160,7 +160,7 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD set_target_properties(${PROJECT} PROPERTIES FOLDER ViewPlugins - OUTPUT_NAME "${PROJECT}_${PLUGIN_VERSION}_${ManiVault_VERSION}" + OUTPUT_NAME "${PROJECT}_p${PLUGIN_VERSION}_c${ManiVault_VERSION}" ) # ----------------------------------------------------------------------------- From 822fede29d3645e168c75b83b611b0deff7ed8b0 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 10:11:56 +0200 Subject: [PATCH 09/13] Bundle plugin and core version --- CMakeLists.txt | 2 +- PluginInfo.json | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a3b4625..48830bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,7 +14,7 @@ if(NOT EXISTS "${PLUGIN_CONFIG_FILE}") endif() file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) -string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version) +string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin) message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") PROJECT(${PROJECT} diff --git a/PluginInfo.json b/PluginInfo.json index f8b63e1..54947b5 100644 --- a/PluginInfo.json +++ b/PluginInfo.json @@ -1,6 +1,9 @@ { "name" : "Scatterplot View", - "version" : "1.0.0", + "version" : { + "plugin" : "1.0.0", + "core" : ["1.3"] + }, "dependencies" : ["Points"], "core" : ["1.3"] } From 46890dde9f573a0cc879e50eea55b6a68f233dda Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 10:16:33 +0200 Subject: [PATCH 10/13] Add optional plugin type to config file --- PluginInfo.json | 1 + 1 file changed, 1 insertion(+) diff --git a/PluginInfo.json b/PluginInfo.json index 54947b5..a81d63e 100644 --- a/PluginInfo.json +++ b/PluginInfo.json @@ -4,6 +4,7 @@ "plugin" : "1.0.0", "core" : ["1.3"] }, + "type" : "Viewer", "dependencies" : ["Points"], "core" : ["1.3"] } From 22b97fc1d7c76deb859654cb729817583fb1fbd9 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 10:50:47 +0200 Subject: [PATCH 11/13] Read optional plugin type from config file --- CMakeLists.txt | 46 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48830bf..31aa1d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,18 +7,7 @@ option(MV_UNITY_BUILD "Combine target source files into batches for faster compi # ----------------------------------------------------------------------------- set(PROJECT "ScatterplotPlugin") -set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json") - -if(NOT EXISTS "${PLUGIN_CONFIG_FILE}") - message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}") -endif() - -file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) -string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin) -message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") - PROJECT(${PROJECT} - VERSION ${PLUGIN_VERSION} DESCRIPTION "A scatterplot viewer plugin for ManiVault" LANGUAGES CXX ) @@ -158,11 +147,44 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD --prefix ${ManiVault_INSTALL_DIR}/$ ) +# Read config file +set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json") + +if(NOT EXISTS "${PLUGIN_CONFIG_FILE}") + message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}") +endif() + +file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) + +# Check if config file contains certain entries +set(HAS_PLUGIN_TYPE 0) + +# Get the number of top-level keys +string(JSON TOP_LEVEL_COUNT LENGTH "${PLUGIN_INFO_JSON}") + +math(EXPR LAST_INDEX "${TOP_LEVEL_COUNT} - 1") +foreach(I RANGE 0 ${LAST_INDEX}) + string(JSON KEY_NAME MEMBER "${PLUGIN_INFO_JSON}" ${I}) + if("${KEY_NAME}" STREQUAL "type") + set(HAS_PLUGIN_TYPE 1) + endif() +endforeach() + +# Extract plugin version +string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin) +message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") set_target_properties(${PROJECT} PROPERTIES - FOLDER ViewPlugins OUTPUT_NAME "${PROJECT}_p${PLUGIN_VERSION}_c${ManiVault_VERSION}" ) +# Extract plugin type +if(HAS_PLUGIN_TYPE) + string(JSON PLUGIN_TYPE GET "${PLUGIN_INFO_JSON}" type) + set_target_properties(${PROJECT} PROPERTIES + FOLDER "${PLUGIN_TYPE}Plugins" + ) +endif() + # ----------------------------------------------------------------------------- # Miscellaneous # ----------------------------------------------------------------------------- From a926de5a04ff442f7d50004a3030b4db4d647450 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 11:19:45 +0200 Subject: [PATCH 12/13] Move meta data handling to core --- CMakeLists.txt | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 31aa1d7..c590a4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -147,43 +147,7 @@ add_custom_command(TARGET ${PROJECT} POST_BUILD --prefix ${ManiVault_INSTALL_DIR}/$ ) -# Read config file -set(PLUGIN_CONFIG_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PluginInfo.json") - -if(NOT EXISTS "${PLUGIN_CONFIG_FILE}") - message(FATAL_ERROR "JSON file not found: ${PLUGIN_CONFIG_FILE}") -endif() - -file(READ ${PLUGIN_CONFIG_FILE} PLUGIN_INFO_JSON) - -# Check if config file contains certain entries -set(HAS_PLUGIN_TYPE 0) - -# Get the number of top-level keys -string(JSON TOP_LEVEL_COUNT LENGTH "${PLUGIN_INFO_JSON}") - -math(EXPR LAST_INDEX "${TOP_LEVEL_COUNT} - 1") -foreach(I RANGE 0 ${LAST_INDEX}) - string(JSON KEY_NAME MEMBER "${PLUGIN_INFO_JSON}" ${I}) - if("${KEY_NAME}" STREQUAL "type") - set(HAS_PLUGIN_TYPE 1) - endif() -endforeach() - -# Extract plugin version -string(JSON PLUGIN_VERSION GET "${PLUGIN_INFO_JSON}" version plugin) -message(STATUS "PLUGIN_VERSION: ${PLUGIN_VERSION}") -set_target_properties(${PROJECT} PROPERTIES - OUTPUT_NAME "${PROJECT}_p${PLUGIN_VERSION}_c${ManiVault_VERSION}" -) - -# Extract plugin type -if(HAS_PLUGIN_TYPE) - string(JSON PLUGIN_TYPE GET "${PLUGIN_INFO_JSON}" type) - set_target_properties(${PROJECT} PROPERTIES - FOLDER "${PLUGIN_TYPE}Plugins" - ) -endif() +mv_handle_plugin_config(${PROJECT}) # ----------------------------------------------------------------------------- # Miscellaneous From c7a25d9ab9f9a787c58a1b6a5e3a328a274a8824 Mon Sep 17 00:00:00 2001 From: Alexander Vieth Date: Tue, 3 Jun 2025 11:21:13 +0200 Subject: [PATCH 13/13] Remove duplicate member --- PluginInfo.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PluginInfo.json b/PluginInfo.json index a81d63e..72af000 100644 --- a/PluginInfo.json +++ b/PluginInfo.json @@ -5,6 +5,5 @@ "core" : ["1.3"] }, "type" : "Viewer", - "dependencies" : ["Points"], - "core" : ["1.3"] + "dependencies" : ["Points"] }