From 3e0ac0e71bb1f7c43764b0bb9d2ff0b670c879bd Mon Sep 17 00:00:00 2001 From: Thomas Kroes Date: Wed, 8 Oct 2025 15:25:32 +0200 Subject: [PATCH 1/3] Add PDB file copying for Windows builds (#207) * Add PDB file copying for Windows builds Copy PDB files to the RelWithDebInfo/lib directory on Windows. * Add debug information flag for RelWithDebInfo mode * Add import for tools in conanfile.py * Set ManiVault installation directory from environment Add installation directory for ManiVault * Update conanfile.py * Refactor PDB file handling in conanfile.py Remove installation directory from environment variable and update PDB destination path. * Fix pdb file copying for RelWithDebInfo builds Ensure pdb files are copied correctly for Windows builds. * Update conanfile.py * Fix pdb destination path for Windows builds * Update Windows OS check in conanfile.py * Log PDB file copying on Windows Add print statement for PDB file copying process * Refactor PDB file handling in conanfile.py Refactor PDB file copying logic and ensure all files are copied from the package directory. * Add import for shutil module --- CMakeLists.txt | 1 + conanfile.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9674d0..0c00e80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 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") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG") endif() # ----------------------------------------------------------------------------- diff --git a/conanfile.py b/conanfile.py index ba6073f..a95e3b9 100644 --- a/conanfile.py +++ b/conanfile.py @@ -1,8 +1,10 @@ from conans import ConanFile from conan.tools.cmake import CMakeDeps, CMake, CMakeToolchain from conans.tools import save, load +from conans import tools import os import pathlib +import shutil import subprocess from rules_support import PluginBranchInfo @@ -98,6 +100,7 @@ def generate(self): # Use the ManiVault .cmake file to find ManiVault with find_package mv_core_root = self.deps_cpp_info["hdps-core"].rootpath manivault_dir = pathlib.Path(mv_core_root, "cmake", "mv").as_posix() + print("ManiVault_DIR: ", manivault_dir) tc.variables["ManiVault_DIR"] = manivault_dir @@ -146,6 +149,19 @@ def package(self): release_dir, ] ) + + + + # Add the pdb files next to the libs for RelWithDebInfo linking + if self.settings.os == "Windows": + print("Copying PDBs...") + pdb_dest = pathlib.Path(package_dir, "RelWithDebInfo", "pdb") + pdb_dest.mkdir() + pdb_files = pdb_files = [p for p in pathlib.Path(self.build_folder).rglob('*') if p.is_file() and p.suffix.lower() == '.pdb'] + print("PDB(s): ", pdb_files) + for pfile in pdb_files: + shutil.copy(pfile, pdb_dest) + self.copy(pattern="*", src=package_dir) def package_info(self): From 39c03f54be4ee89bd356b12636f6c0daa664b8ed Mon Sep 17 00:00:00 2001 From: Thomas Kroes Date: Wed, 15 Oct 2025 10:46:16 +0200 Subject: [PATCH 2/3] Enable pixel selection in density render mode (#210) Updated ScatterplotPlugin and ScatterplotWidget to allow the pixel selection tool to be enabled and function correctly in both SCATTERPLOT and DENSITY render modes. Adjusted renderer and navigator selection logic to support this change. --- src/ScatterplotPlugin.cpp | 12 ++++++------ src/ScatterplotWidget.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ScatterplotPlugin.cpp b/src/ScatterplotPlugin.cpp index a2dd6aa..8a6610d 100644 --- a/src/ScatterplotPlugin.cpp +++ b/src/ScatterplotPlugin.cpp @@ -413,8 +413,11 @@ void ScatterplotPlugin::selectPoints() auto& pixelSelectionTool = _scatterPlotWidget->getPixelSelectionTool(); + auto renderer = _settingsAction.getRenderModeAction().getCurrentIndex() > 0 ? dynamic_cast(&_scatterPlotWidget->_densityRenderer) : dynamic_cast(&_scatterPlotWidget->_pointRenderer); + auto& navigator = renderer->getNavigator(); + // Only proceed with a valid points position dataset and when the pixel selection tool is active - if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || _scatterPlotWidget->_pointRenderer.getNavigator().isNavigating() || !pixelSelectionTool.isEnabled()) + if (!_positionDataset.isValid() || !pixelSelectionTool.isActive() || navigator.isNavigating() || !pixelSelectionTool.isEnabled()) return; auto selectionAreaImage = pixelSelectionTool.getAreaPixmap().toImage(); @@ -428,11 +431,8 @@ void ScatterplotPlugin::selectPoints() _positionDataset->getGlobalIndices(localGlobalIndices); - auto& pointRenderer = _scatterPlotWidget->_pointRenderer; - auto& navigator = pointRenderer.getNavigator(); - const auto zoomRectangleWorld = navigator.getZoomRectangleWorld(); - const auto screenRectangle = QRect(QPoint(), pointRenderer.getRenderSize()); + const auto screenRectangle = QRect(QPoint(), renderer->getRenderSize()); float boundaries[4]{ std::numeric_limits::max(), @@ -517,7 +517,7 @@ void ScatterplotPlugin::selectPoints() } } - auto& navigationAction = _scatterPlotWidget->getPointRendererNavigator().getNavigationAction(); + auto& navigationAction = navigator.getNavigationAction(); navigationAction.getZoomSelectionAction().setEnabled(!targetSelectionIndices.empty() && !navigationAction.getFreezeNavigation().isChecked()); diff --git a/src/ScatterplotWidget.cpp b/src/ScatterplotWidget.cpp index 8fc0413..535c985 100644 --- a/src/ScatterplotWidget.cpp +++ b/src/ScatterplotWidget.cpp @@ -153,7 +153,7 @@ bool ScatterplotWidget::event(QEvent* event) } auto setIsNavigating = [this](bool isNavigating) -> void { - _pixelSelectionTool.setEnabled(getRenderMode() == RenderMode::SCATTERPLOT && !isNavigating); + _pixelSelectionTool.setEnabled((getRenderMode() == RenderMode::SCATTERPLOT || getRenderMode() == RenderMode::DENSITY) && !isNavigating); if (isNavigating) { _samplerPixelSelectionTool.setEnabled(false); From 30fdabd5a4b74255834edf5e954af4f57cf82198 Mon Sep 17 00:00:00 2001 From: Thomas Kroes Date: Fri, 17 Oct 2025 10:17:09 +0200 Subject: [PATCH 3/3] Add Sentry support (#211) * Remove debug linker flag for RelWithDebInfo * Remove PDB file copying for Windows Removed PDB file copying for Windows in package method. * Add Sentry configuration to build.yml Added Sentry configuration parameters to the build workflow. --- .github/workflows/build.yml | 6 +++++- CMakeLists.txt | 1 - conanfile.py | 13 ------------- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44abd82..67472a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -71,6 +71,10 @@ jobs: conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}} conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} rs_ssh_key: ${{ secrets.RULESSUPPORT_DEPLOY_KEY }} + sentry-url: ${{secrets.LKEB_SENTRY_URL }} + sentry-org: ${{secrets.LKEB_SENTRY_ORG }} + sentry-project: ${{secrets.LKEB_SENTRY_PROJECT }} + sentry-auth-token: ${{secrets.LKEB_SENTRY_AUTH_TOKEN }} - name: Linux build if: startsWith(matrix.os, 'ubuntu') @@ -100,4 +104,4 @@ jobs: build-arch: ${{matrix.build-arch}} conan-user: ${{secrets.LKEB_UPLOAD_USER}} conan-password: ${{secrets.LKEB_UPLOAD_USER_PASSWORD}} - conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} \ No newline at end of file + conan-pem: ${{secrets.LKEB_UPLOAD_CERT_CHAIN}} diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c00e80..b9674d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,6 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") 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") - set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /DEBUG") endif() # ----------------------------------------------------------------------------- diff --git a/conanfile.py b/conanfile.py index a95e3b9..3b84dde 100644 --- a/conanfile.py +++ b/conanfile.py @@ -149,19 +149,6 @@ def package(self): release_dir, ] ) - - - - # Add the pdb files next to the libs for RelWithDebInfo linking - if self.settings.os == "Windows": - print("Copying PDBs...") - pdb_dest = pathlib.Path(package_dir, "RelWithDebInfo", "pdb") - pdb_dest.mkdir() - pdb_files = pdb_files = [p for p in pathlib.Path(self.build_folder).rglob('*') if p.is_file() and p.suffix.lower() == '.pdb'] - print("PDB(s): ", pdb_files) - for pfile in pdb_files: - shutil.copy(pfile, pdb_dest) - self.copy(pattern="*", src=package_dir) def package_info(self):