git: c4fa8a7ea8f0 - main - cad/PrusaSlicer: update to 2.7.2
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 28 Mar 2024 19:37:36 UTC
The branch main has been updated by mizhka:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c4fa8a7ea8f07e2b889d72f2b7f8997b5ea8f665
commit c4fa8a7ea8f07e2b889d72f2b7f8997b5ea8f665
Author: Michael Zhilin <mizhka@FreeBSD.org>
AuthorDate: 2024-03-11 18:32:46 +0000
Commit: Michael Zhilin <mizhka@FreeBSD.org>
CommitDate: 2024-03-28 19:34:58 +0000
cad/PrusaSlicer: update to 2.7.2
Reported by: Teodor Sigaev <teodorsigaev@gmail.com>
Reviewed by: lwhsu (mentor)
Sponsored by: Postgres Professional
Differential Revision: https://reviews.freebsd.org/D44315
---
cad/PrusaSlicer/Makefile | 17 ++++++++----
cad/PrusaSlicer/distinfo | 6 ++--
cad/PrusaSlicer/files/patch-CMakeLists.txt | 21 ++++++++++----
cad/PrusaSlicer/files/patch-src_CMakeLists.txt | 12 ++++----
.../files/patch-src_libnanosvg_nanosvg.h | 2 +-
.../files/patch-src_libnanosvg_nanosvgrast.h | 2 +-
...libslic3r_Arrange_Core_NFP_NFPConcave__CGAL.cpp | 11 ++++++++
.../files/patch-src_libslic3r_CMakeLists.txt | 4 +--
.../files/patch-src_libslic3r_CutSurface.cpp | 10 +++++++
.../files/patch-src_libslic3r_EmbossShape.hpp | 11 ++++++++
.../files/patch-src_libslic3r_Format_SL1__SVG.cpp | 4 +--
.../files/patch-src_libslic3r_GCodeSender.cpp | 6 ++--
...tch-src_libslic3r_Geometry_VoronoiUtilsCgal.cpp | 17 ++++++++++++
.../files/patch-src_libslic3r_MeshBoolean.cpp | 11 ++++++++
.../files/patch-src_libslic3r_NSVGUtils.hpp | 8 +++---
.../files/patch-src_libslic3r_Platform.cpp | 4 +--
.../files/patch-src_libslic3r_Platform.hpp | 4 +--
.../patch-src_libslic3r_SupportSpotsGenerator.cpp | 18 ++++++------
.../files/patch-src_libslic3r_Triangulation.cpp | 12 ++++++++
.../files/patch-src_slic3r_CMakeLists.txt | 10 +++----
.../files/patch-src_slic3r_GUI_BitmapCache.cpp | 8 +++---
.../files/patch-src_slic3r_GUI_ConfigWizard.cpp | 18 ++++++------
.../files/patch-src_slic3r_GUI_ConfigWizard.hpp | 6 ++--
...tch-src_slic3r_GUI_DesktopIntegrationDialog.cpp | 7 +++--
...tch-src_slic3r_GUI_DesktopIntegrationDialog.hpp | 9 ++++--
.../files/patch-src_slic3r_GUI_ExtraRenderers.cpp | 4 +--
.../files/patch-src_slic3r_GUI_Field.cpp | 4 +--
.../files/patch-src_slic3r_GUI_GLCanvas3D.cpp | 4 +--
.../files/patch-src_slic3r_GUI_GLTexture.cpp | 4 +--
cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.cpp | 6 ++--
cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.hpp | 4 +--
.../files/patch-src_slic3r_GUI_GUI__App.cpp | 32 +++++++++++-----------
.../files/patch-src_slic3r_GUI_GUI__Factories.cpp | 4 +--
.../patch-src_slic3r_GUI_GUI__ObjectLayers.cpp | 6 ++--
...atch-src_slic3r_GUI_GUI__ObjectManipulation.cpp | 12 --------
.../files/patch-src_slic3r_GUI_GUI__Preview.cpp | 6 ++--
.../files/patch-src_slic3r_GUI_GUI__Preview.hpp | 4 +--
.../files/patch-src_slic3r_GUI_GUI__Utils.cpp | 6 ++--
.../patch-src_slic3r_GUI_Gizmos_GLGizmoEmboss.cpp | 11 --------
.../patch-src_slic3r_GUI_Gizmos_GLGizmoSVG.cpp | 20 ++++++++++++++
.../files/patch-src_slic3r_GUI_IconManager.cpp | 13 +++++++++
.../files/patch-src_slic3r_GUI_ImGuiWrapper.cpp | 4 +--
.../files/patch-src_slic3r_GUI_InstanceCheck.cpp | 8 +++---
.../files/patch-src_slic3r_GUI_InstanceCheck.hpp | 6 ++--
.../patch-src_slic3r_GUI_KBShortcutsDialog.cpp | 4 +--
.../patch-src_slic3r_GUI_Mouse3DController.cpp | 6 ++--
.../files/patch-src_slic3r_GUI_OpenGLManager.cpp | 4 +--
.../files/patch-src_slic3r_GUI_OptionsGroup.cpp | 6 ++--
.../patch-src_slic3r_GUI_PhysicalPrinterDialog.cpp | 4 +--
.../files/patch-src_slic3r_GUI_Plater.cpp | 10 +++----
.../files/patch-src_slic3r_GUI_Preferences.cpp | 6 ++--
.../patch-src_slic3r_GUI_PresetComboBoxes.cpp | 4 +--
.../patch-src_slic3r_GUI_PresetComboBoxes.hpp | 4 +--
.../patch-src_slic3r_GUI_PrintHostDialogs.cpp | 20 +++++++-------
.../patch-src_slic3r_GUI_RemovableDriveManager.cpp | 4 +--
cad/PrusaSlicer/files/patch-src_slic3r_GUI_Tab.cpp | 30 ++++++++++----------
.../patch-src_slic3r_GUI_UnsavedChangesDialog.cpp | 16 +++++------
.../patch-src_slic3r_GUI_UnsavedChangesDialog.hpp | 6 ++--
.../files/patch-src_slic3r_GUI_UpdateDialogs.cpp | 6 ++--
.../files/patch-src_slic3r_GUI_wxExtensions.cpp | 10 +++----
.../files/patch-src_slic3r_GUI_wxExtensions.hpp | 4 +--
.../patch-src_slic3r_Utils_FontConfigHelp.hpp | 4 +--
.../files/patch-src_slic3r_Utils_Serial.cpp | 6 ++--
.../files/patch-src_slic3r_Utils_WifiScanner.cpp | 27 ++++++++++++++++++
.../files/patch-src_slic3r_Utils_WxFontUtils.cpp | 12 ++++----
.../files/patch-tests_libslic3r_test__emboss.cpp | 10 +++----
cad/PrusaSlicer/pkg-plist | 10 +++----
67 files changed, 369 insertions(+), 240 deletions(-)
diff --git a/cad/PrusaSlicer/Makefile b/cad/PrusaSlicer/Makefile
index 12c5d5f1fa6d..69134e102637 100644
--- a/cad/PrusaSlicer/Makefile
+++ b/cad/PrusaSlicer/Makefile
@@ -1,7 +1,6 @@
PORTNAME= PrusaSlicer
DISTVERSIONPREFIX=version_
-DISTVERSION= 2.6.0
-PORTREVISION= 9
+DISTVERSION= 2.7.2
CATEGORIES= cad
DIST_SUBDIR= PrusaSlicer
@@ -14,9 +13,13 @@ LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= cereal>=1.3.0.10:devel/cereal \
cgal>=5.0.2:math/cgal \
- opencascade>=7.7.0:cad/opencascade
+ opencascade>=7.7.0:cad/opencascade \
+ libbgcode>=0.2.0:cad/libbgcode
-LIB_DEPENDS= libtbb.so:devel/onetbb \
+LIB_DEPENDS+= libbgcode_convert.so:cad/libbgcode \
+ libbgcode_binarize.so:cad/libbgcode \
+ libbgcode_core.so:cad/libbgcode \
+ libtbb.so:devel/onetbb \
libboost_log.so:devel/boost-libs \
libImath.so:math/Imath \
libnlopt.so:math/nlopt \
@@ -38,7 +41,8 @@ LIB_DEPENDS= libtbb.so:devel/onetbb \
libharfbuzz.so:print/harfbuzz \
libwayland-egl.so:graphics/wayland
-USES= cmake cpe desktop-file-utils eigen:3 gettext gl pkgconfig jpeg iconv gnome xorg
+USES= cmake cpe desktop-file-utils eigen:3 gettext gl gnome iconv \
+ jpeg pkgconfig xorg
CPE_VENDOR= prusa3d
USE_GITHUB= yes
GH_ACCOUNT= prusa3d
@@ -50,7 +54,8 @@ USE_XORG= x11
CMAKE_ARGS+= -DwxWidgets_CONFIG_EXECUTABLE="${WX_CONFIG}" \
-DSLIC3R_GTK=3 \
-DSLIC3R_FHS=1 \
- -DSLIC3R_PCH=OFF
+ -DSLIC3R_PCH=OFF \
+ -DSLIC3R_BUILD_TESTS=OFF
PORTDATA= *
diff --git a/cad/PrusaSlicer/distinfo b/cad/PrusaSlicer/distinfo
index 209b6b9fb7c8..ea27189ec62c 100644
--- a/cad/PrusaSlicer/distinfo
+++ b/cad/PrusaSlicer/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1690319127
-SHA256 (PrusaSlicer/prusa3d-PrusaSlicer-version_2.6.0_GH0.tar.gz) = a15f68e3b18a047c8c9a18a9d91629d2c777be1932087684cf6d2332d0888e77
-SIZE (PrusaSlicer/prusa3d-PrusaSlicer-version_2.6.0_GH0.tar.gz) = 56430180
+TIMESTAMP = 1709292528
+SHA256 (PrusaSlicer/prusa3d-PrusaSlicer-version_2.7.2_GH0.tar.gz) = 0af8ab83ad33cdebc1d13d37d8ed3b2125d84532eb4bca7618c422bf7648ebee
+SIZE (PrusaSlicer/prusa3d-PrusaSlicer-version_2.7.2_GH0.tar.gz) = 64915607
diff --git a/cad/PrusaSlicer/files/patch-CMakeLists.txt b/cad/PrusaSlicer/files/patch-CMakeLists.txt
index 73daa6aa4e9b..bb479cff34f2 100644
--- a/cad/PrusaSlicer/files/patch-CMakeLists.txt
+++ b/cad/PrusaSlicer/files/patch-CMakeLists.txt
@@ -1,6 +1,6 @@
---- CMakeLists.txt.orig 2023-06-19 12:07:14 UTC
+--- CMakeLists.txt.orig 2024-02-29 13:03:32 UTC
+++ CMakeLists.txt
-@@ -4,6 +4,7 @@ include(CMakeDependentOption)
+@@ -14,6 +14,7 @@ include(CMakeDependentOption)
include("version.inc")
include(GNUInstallDirs)
include(CMakeDependentOption)
@@ -8,7 +8,7 @@
set(SLIC3R_RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources")
file(TO_NATIVE_PATH "${SLIC3R_RESOURCES_DIR}" SLIC3R_RESOURCES_DIR_WIN)
-@@ -207,7 +208,7 @@ endif ()
+@@ -218,7 +219,7 @@ endif ()
endif ()
endif ()
@@ -17,7 +17,16 @@
find_package(PkgConfig REQUIRED)
if (CMAKE_VERSION VERSION_LESS "3.1")
-@@ -446,7 +447,7 @@ find_package(EXPAT REQUIRED)
+@@ -248,6 +249,8 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL
+ # On GCC and Clang, no return from a non-void function is a warning only. Here, we make it an error.
+ add_compile_options(-Werror=return-type)
+
++ add_compile_options(-Wno-enum-constexpr-conversion -Wno-implicit-const-int-float-conversion)
++
+ # removes LOTS of extraneous Eigen warnings (GCC only supports it since 6.1)
+ # https://eigen.tuxfamily.org/bz/show_bug.cgi?id=1221
+ if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0)
+@@ -457,7 +460,7 @@ find_package(EXPAT REQUIRED)
# no matter what.
find_package(EXPAT REQUIRED)
@@ -26,7 +35,7 @@
if (TARGET EXPAT::EXPAT )
target_link_libraries(libexpat INTERFACE EXPAT::EXPAT)
-@@ -627,8 +628,8 @@ elseif (SLIC3R_FHS)
+@@ -631,8 +634,8 @@ elseif (SLIC3R_FHS)
install(DIRECTORY ${SLIC3R_RESOURCES_DIR}/ DESTINATION ${SLIC3R_FHS_RESOURCES}
PATTERN "*/udev" EXCLUDE
)
@@ -37,7 +46,7 @@
foreach(SIZE 32 128 192)
install(FILES ${SLIC3R_RESOURCES_DIR}/icons/PrusaSlicer_${SIZE}px.png
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME PrusaSlicer.png
-@@ -637,7 +638,8 @@ elseif (SLIC3R_FHS)
+@@ -641,7 +644,8 @@ elseif (SLIC3R_FHS)
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/${SIZE}x${SIZE}/apps RENAME PrusaSlicer-gcodeviewer.png
)
endforeach()
diff --git a/cad/PrusaSlicer/files/patch-src_CMakeLists.txt b/cad/PrusaSlicer/files/patch-src_CMakeLists.txt
index e084cdc3c97c..77880e102ea7 100644
--- a/cad/PrusaSlicer/files/patch-src_CMakeLists.txt
+++ b/cad/PrusaSlicer/files/patch-src_CMakeLists.txt
@@ -1,15 +1,15 @@
---- src/CMakeLists.txt.orig 2023-06-19 12:07:14 UTC
+--- src/CMakeLists.txt.orig 2023-12-12 14:21:21 UTC
+++ src/CMakeLists.txt
-@@ -78,7 +78,7 @@ if (SLIC3R_GUI)
+@@ -62,7 +62,7 @@ if (SLIC3R_GUI)
- find_package(JPEG QUIET)
- find_package(TIFF QUIET)
+ find_package(JPEG MODULE QUIET)
+ find_package(TIFF MODULE QUIET) # Tiff exported config is broken for static build
- find_package(NanoSVG REQUIRED)
-+ # find_package(NanoSVG REQUIRED)
++ #find_package(NanoSVG REQUIRED)
string(REGEX MATCH "wxpng" WX_PNG_BUILTIN ${wxWidgets_LIBRARIES})
if (PNG_FOUND AND NOT WX_PNG_BUILTIN)
-@@ -147,7 +147,7 @@ endif ()
+@@ -131,7 +131,7 @@ if (NOT WIN32 AND NOT APPLE)
set_target_properties(PrusaSlicer PROPERTIES OUTPUT_NAME "prusa-slicer")
endif ()
diff --git a/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvg.h b/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvg.h
index 90f9ef46e777..f43183e3368f 100644
--- a/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvg.h
+++ b/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvg.h
@@ -1,4 +1,4 @@
---- src/libnanosvg/nanosvg.h.orig 2024-03-17 16:57:39 UTC
+--- src/libnanosvg/nanosvg.h.orig 2024-01-12 13:12:38 UTC
+++ src/libnanosvg/nanosvg.h
@@ -0,0 +1,3106 @@
+/*
diff --git a/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvgrast.h b/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvgrast.h
index 7a4e757402ff..1c1f0565a022 100644
--- a/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvgrast.h
+++ b/cad/PrusaSlicer/files/patch-src_libnanosvg_nanosvgrast.h
@@ -1,4 +1,4 @@
---- src/libnanosvg/nanosvgrast.h.orig 2024-03-17 16:57:40 UTC
+--- src/libnanosvg/nanosvgrast.h.orig 2024-01-12 13:12:38 UTC
+++ src/libnanosvg/nanosvgrast.h
@@ -0,0 +1,1482 @@
+/*
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Arrange_Core_NFP_NFPConcave__CGAL.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Arrange_Core_NFP_NFPConcave__CGAL.cpp
new file mode 100644
index 000000000000..6ac5039ca58f
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Arrange_Core_NFP_NFPConcave__CGAL.cpp
@@ -0,0 +1,11 @@
+--- src/libslic3r/Arrange/Core/NFP/NFPConcave_CGAL.cpp.orig 2024-03-01 12:13:10 UTC
++++ src/libslic3r/Arrange/Core/NFP/NFPConcave_CGAL.cpp
+@@ -5,6 +5,8 @@
+ #include "NFP.hpp"
+ #include "NFPConcave_CGAL.hpp"
+
++#include <boost/next_prior.hpp>
++
+ #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
+ #include <CGAL/partition_2.h>
+ #include <CGAL/Partition_traits_2.h>
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_CMakeLists.txt b/cad/PrusaSlicer/files/patch-src_libslic3r_CMakeLists.txt
index 28c3c0d96099..6c3d971a3d87 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_CMakeLists.txt
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_CMakeLists.txt
@@ -1,6 +1,6 @@
---- src/libslic3r/CMakeLists.txt.orig 2023-06-19 12:07:14 UTC
+--- src/libslic3r/CMakeLists.txt.orig 2024-02-29 13:03:32 UTC
+++ src/libslic3r/CMakeLists.txt
-@@ -490,7 +490,6 @@ target_link_libraries(libslic3r
+@@ -575,7 +575,6 @@ target_link_libraries(libslic3r
target_link_libraries(libslic3r
libnest2d
admesh
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_CutSurface.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_CutSurface.cpp
new file mode 100644
index 000000000000..cc1eb6867fd6
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_CutSurface.cpp
@@ -0,0 +1,10 @@
+--- src/libslic3r/CutSurface.cpp.orig 2024-03-01 11:43:14 UTC
++++ src/libslic3r/CutSurface.cpp
+@@ -29,6 +29,7 @@ using namespace Slic3r;
+ using namespace Slic3r;
+ #include "ExPolygonsIndex.hpp"
+
++#include <boost/next_prior.hpp>
+ #include <CGAL/Polygon_mesh_processing/corefinement.h>
+ #include <CGAL/Exact_integer.h>
+ #include <CGAL/Surface_mesh.h>
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_EmbossShape.hpp b/cad/PrusaSlicer/files/patch-src_libslic3r_EmbossShape.hpp
new file mode 100644
index 000000000000..77071f9a68b9
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_EmbossShape.hpp
@@ -0,0 +1,11 @@
+--- src/libslic3r/EmbossShape.hpp.orig 2024-01-12 13:37:33 UTC
++++ src/libslic3r/EmbossShape.hpp
+@@ -12,7 +12,7 @@
+ #include "Point.hpp" // Transform3d
+ #include "ExPolygon.hpp"
+ #include "ExPolygonSerialize.hpp"
+-#include "nanosvg/nanosvg.h" // NSVGimage
++#include "libnanosvg/nanosvg.h" // NSVGimage
+
+ namespace Slic3r {
+
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Format_SL1__SVG.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Format_SL1__SVG.cpp
index d19ae2f01782..20e244e4398b 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_Format_SL1__SVG.cpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Format_SL1__SVG.cpp
@@ -1,6 +1,6 @@
---- src/libslic3r/Format/SL1_SVG.cpp.orig 2023-07-21 14:55:56 UTC
+--- src/libslic3r/Format/SL1_SVG.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/libslic3r/Format/SL1_SVG.cpp
-@@ -6,7 +6,8 @@
+@@ -10,7 +10,8 @@
#include "libslic3r/Format/ZipperArchiveImport.hpp"
#define NANOSVG_IMPLEMENTATION
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_GCodeSender.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_GCodeSender.cpp
index bfa2758566f0..2c326165f35a 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_GCodeSender.cpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_GCodeSender.cpp
@@ -1,6 +1,6 @@
---- src/libslic3r/GCodeSender.cpp.orig 2023-07-24 22:05:38 UTC
+--- src/libslic3r/GCodeSender.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/libslic3r/GCodeSender.cpp
-@@ -8,7 +8,7 @@
+@@ -14,7 +14,7 @@
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/lexical_cast.hpp>
@@ -9,7 +9,7 @@
#include <termios.h>
#endif
#ifdef __APPLE__
-@@ -146,7 +146,7 @@ GCodeSender::set_baud_rate(unsigned int baud_rate)
+@@ -152,7 +152,7 @@ GCodeSender::set_baud_rate(unsigned int baud_rate)
if (ioctl(handle, TCSETS2, &ios))
printf("Error in TCSETS2: %s\n", strerror(errno));
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Geometry_VoronoiUtilsCgal.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Geometry_VoronoiUtilsCgal.cpp
new file mode 100644
index 000000000000..f511e85ee2dc
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Geometry_VoronoiUtilsCgal.cpp
@@ -0,0 +1,17 @@
+--- src/libslic3r/Geometry/VoronoiUtilsCgal.cpp.orig 2024-03-01 11:50:11 UTC
++++ src/libslic3r/Geometry/VoronoiUtilsCgal.cpp
+@@ -2,6 +2,7 @@
+ ///|/
+ ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
+ ///|/
++#include <boost/next_prior.hpp>
+ #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
+ #include <CGAL/Arr_segment_traits_2.h>
+ #include <CGAL/Surface_sweep_2_algorithms.h>
+@@ -325,4 +326,4 @@ VoronoiUtilsCgal::is_voronoi_diagram_planar_angle(cons
+ return true;
+ }
+
+-} // namespace Slic3r::Geometry
+\ No newline at end of file
++} // namespace Slic3r::Geometry
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_MeshBoolean.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_MeshBoolean.cpp
new file mode 100644
index 000000000000..20e08fb5b937
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_MeshBoolean.cpp
@@ -0,0 +1,11 @@
+--- src/libslic3r/MeshBoolean.cpp.orig 2024-03-01 11:44:05 UTC
++++ src/libslic3r/MeshBoolean.cpp
+@@ -8,6 +8,8 @@
+ #include "libslic3r/TryCatchSignal.hpp"
+ #undef PI
+
++#include <boost/next_prior.hpp>
++
+ // Include igl first. It defines "L" macro which then clashes with our localization
+ #include <igl/copyleft/cgal/mesh_boolean.h>
+ #undef L
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_NSVGUtils.hpp b/cad/PrusaSlicer/files/patch-src_libslic3r_NSVGUtils.hpp
index cfe62886e433..28acfa15ccec 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_NSVGUtils.hpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_NSVGUtils.hpp
@@ -1,11 +1,11 @@
---- src/libslic3r/NSVGUtils.hpp.orig 2023-07-25 16:16:15 UTC
+--- src/libslic3r/NSVGUtils.hpp.orig 2023-12-12 14:21:21 UTC
+++ src/libslic3r/NSVGUtils.hpp
-@@ -3,7 +3,7 @@
-
+@@ -11,7 +11,7 @@
#include "Polygon.hpp"
#include "ExPolygon.hpp"
+ #include "EmbossShape.hpp" // ExPolygonsWithIds
-#include "nanosvg/nanosvg.h" // load SVG file
+#include "libnanosvg/nanosvg.h" // load SVG file
+ // Helper function to work with nano svg
namespace Slic3r {
-
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.cpp
index ac651976424c..7a2ff6c43b2b 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.cpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.cpp
@@ -1,6 +1,6 @@
---- src/libslic3r/Platform.cpp.orig 2022-09-06 07:09:19 UTC
+--- src/libslic3r/Platform.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/libslic3r/Platform.cpp
-@@ -86,6 +86,10 @@ void detect_platform()
+@@ -90,6 +90,10 @@ void detect_platform()
BOOST_LOG_TRIVIAL(info) << "Platform: OpenBSD";
s_platform = Platform::BSDUnix;
s_platform_flavor = PlatformFlavor::OpenBSD;
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.hpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.hpp
index 15036b0e7a2b..1ee9a290c1e8 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.hpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Platform.hpp
@@ -1,6 +1,6 @@
---- src/libslic3r/Platform.hpp.orig 2022-09-06 07:09:19 UTC
+--- src/libslic3r/Platform.hpp.orig 2023-12-12 14:21:21 UTC
+++ src/libslic3r/Platform.hpp
-@@ -25,6 +25,7 @@ enum class PlatformFlavor
+@@ -29,6 +29,7 @@ enum class PlatformFlavor
WSL, // Microsoft's Windows on Linux (Linux kernel simulated on NTFS kernel)
WSL2, // Microsoft's Windows on Linux, version 2 (virtual machine)
OpenBSD, // For Platform::BSDUnix
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_SupportSpotsGenerator.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_SupportSpotsGenerator.cpp
index 2bbd7dd56fc7..fb72be9e02cc 100644
--- a/cad/PrusaSlicer/files/patch-src_libslic3r_SupportSpotsGenerator.cpp
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_SupportSpotsGenerator.cpp
@@ -1,11 +1,11 @@
---- src/libslic3r/SupportSpotsGenerator.cpp.orig 2023-07-25 08:36:31 UTC
+--- src/libslic3r/SupportSpotsGenerator.cpp.orig 2024-02-29 13:03:32 UTC
+++ src/libslic3r/SupportSpotsGenerator.cpp
-@@ -849,7 +849,7 @@ std::tuple<SupportPoints, PartialObjects> check_stabil
- }
- }
+@@ -1054,7 +1054,7 @@ SliceMappings update_active_object_parts(const Layer
}
-- auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) {
-+ auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) -> float {
- if (conn.area < EPSILON) { // connection is empty, does not exists. Return max strength so that it is not picked as the
- // weakest connection.
- return INFINITY;
+ }
+ const float bottom_z = layer->bottom_z();
+- auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) {
++ auto estimate_conn_strength = [bottom_z](const SliceConnection &conn) -> float {
+ if (conn.area < EPSILON) { // connection is empty, does not exists. Return max strength so that it is not picked as the
+ // weakest connection.
+ return INFINITY;
diff --git a/cad/PrusaSlicer/files/patch-src_libslic3r_Triangulation.cpp b/cad/PrusaSlicer/files/patch-src_libslic3r_Triangulation.cpp
new file mode 100644
index 000000000000..43387a72e12d
--- /dev/null
+++ b/cad/PrusaSlicer/files/patch-src_libslic3r_Triangulation.cpp
@@ -0,0 +1,12 @@
+--- src/libslic3r/Triangulation.cpp.orig 2024-03-01 11:48:14 UTC
++++ src/libslic3r/Triangulation.cpp
+@@ -2,6 +2,9 @@
+ ///|/
+ ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
+ ///|/
++
++#include <boost/next_prior.hpp>
++
+ #include "Triangulation.hpp"
+ #include "IntersectionPoints.hpp"
+ #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_CMakeLists.txt b/cad/PrusaSlicer/files/patch-src_slic3r_CMakeLists.txt
index 1fcc8d0ef165..7c735f83f9d0 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_CMakeLists.txt
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_CMakeLists.txt
@@ -1,7 +1,7 @@
---- src/slic3r/CMakeLists.txt.orig 2023-06-19 12:07:14 UTC
+--- src/slic3r/CMakeLists.txt.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/CMakeLists.txt
-@@ -293,7 +293,7 @@ set(SLIC3R_GUI_SOURCES
- Utils/WxFontUtils.hpp
+@@ -333,7 +333,7 @@ set(SLIC3R_GUI_SOURCES
+ Utils/WifiScanner.cpp
)
-find_package(NanoSVG REQUIRED)
@@ -9,7 +9,7 @@
if (APPLE)
list(APPEND SLIC3R_GUI_SOURCES
-@@ -319,11 +319,12 @@ encoding_check(libslic3r_gui)
+@@ -362,11 +362,12 @@ endforeach()
encoding_check(libslic3r_gui)
@@ -23,4 +23,4 @@
+elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
target_link_libraries(libslic3r_gui ${DBUS_LIBRARIES})
elseif (APPLE)
- target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY})
+ target_link_libraries(libslic3r_gui ${DISKARBITRATION_LIBRARY} ${COREWLAN_LIBRARY})
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_BitmapCache.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_BitmapCache.cpp
index 28f6d2e5f40f..6ca562b20d59 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_BitmapCache.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_BitmapCache.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/BitmapCache.cpp.orig 2023-07-21 12:45:35 UTC
+--- src/slic3r/GUI/BitmapCache.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/BitmapCache.cpp
-@@ -15,8 +15,9 @@
+@@ -20,8 +20,9 @@
#include <wx/rawbmp.h>
#endif /* __WXGTK2__ */
@@ -12,7 +12,7 @@
namespace Slic3r { namespace GUI {
-@@ -68,7 +69,7 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::st
+@@ -73,7 +74,7 @@ wxBitmapBundle* BitmapCache::insert_bndl(const std::st
wxVector<wxBitmap> bitmaps;
std::set<double> scales = {1.0};
@@ -21,7 +21,7 @@
#ifdef __APPLE__
scales.emplace(m_scale);
-@@ -547,7 +548,7 @@ wxBitmapBundle BitmapCache::mksolid(size_t width_in, s
+@@ -554,7 +555,7 @@ wxBitmapBundle BitmapCache::mksolid(size_t width_in, s
wxVector<wxBitmap> bitmaps;
std::set<double> scales = { 1.0 };
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.cpp
index 13b763d0690f..ecba71fe5cf1 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/ConfigWizard.cpp.orig 2023-07-21 14:05:27 UTC
+--- src/slic3r/GUI/ConfigWizard.cpp.orig 2024-02-29 13:03:32 UTC
+++ src/slic3r/GUI/ConfigWizard.cpp
-@@ -60,7 +60,7 @@
+@@ -69,7 +69,7 @@
#include "slic3r/GUI/I18N.hpp"
#include "slic3r/Config/Version.hpp"
@@ -9,7 +9,7 @@
#define wxLinux_gtk3 true
#else
#define wxLinux_gtk3 false
-@@ -583,7 +583,7 @@ void PageWelcome::set_run_reason(ConfigWizard::RunReas
+@@ -596,7 +596,7 @@ void PageWelcome::set_run_reason(ConfigWizard::RunReas
const bool data_empty = run_reason == ConfigWizard::RR_DATA_EMPTY;
welcome_text->Show(data_empty);
cbox_reset->Show(!data_empty);
@@ -18,16 +18,16 @@
if (!DesktopIntegrationDialog::is_integrated())
cbox_integrate->Show(true);
else
-@@ -1474,7 +1474,7 @@ PageDownloader::PageDownloader(ConfigWizard* parent)
- " The model will be downloaded into folder you choose bellow."
- ), SLIC3R_APP_NAME));
+@@ -1518,7 +1518,7 @@ PageDownloader::PageDownloader(ConfigWizard* parent)
+ ));
+ }
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
append_text(wxString::Format(_L(
"On Linux systems the process of registration also creates desktop integration files for this version of application."
)));
-@@ -1535,7 +1535,7 @@ bool DownloaderUtils::Worker::perform_register(const s
+@@ -1579,7 +1579,7 @@ bool DownloaderUtils::Worker::perform_register(const s
}
//key_full = "\"C:\\Program Files\\Prusa3D\\PrusaSlicer\\prusa-slicer-console.exe\" \"%1\"";
key_full = key_string;
@@ -36,7 +36,7 @@
// Apple registers for custom url in info.plist thus it has to be already registered since build.
// The url will always trigger opening of prusaslicer and we have to check that user has allowed it. (GUI_App::MacOpenURL is the triggered method)
#else
-@@ -1554,7 +1554,7 @@ void DownloaderUtils::Worker::deregister()
+@@ -1598,7 +1598,7 @@ void DownloaderUtils::Worker::deregister()
return;
}
key_full = key_string;
@@ -45,7 +45,7 @@
// TODO
#else
BOOST_LOG_TRIVIAL(debug) << "DesktopIntegrationDialog::undo_downloader_registration";
-@@ -3106,7 +3106,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_c
+@@ -3063,7 +3063,7 @@ bool ConfigWizard::priv::apply_config(AppConfig *app_c
if ((check_unsaved_preset_changes = install_bundles.size() > 0))
header = _L_PLURAL("A new vendor was installed and one of its printers will be activated", "New vendors were installed and one of theirs printers will be activated", install_bundles.size());
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.hpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.hpp
index 43e076b6584e..5f9a904024cc 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.hpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ConfigWizard.hpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/ConfigWizard.hpp.orig 2023-07-25 09:21:21 UTC
+--- src/slic3r/GUI/ConfigWizard.hpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/ConfigWizard.hpp
-@@ -22,7 +22,7 @@ namespace DownloaderUtils {
+@@ -31,7 +31,7 @@ namespace DownloaderUtils {
wxWindow* m_parent{ nullptr };
wxTextCtrl* m_input_path{ nullptr };
bool downloader_checked{ false };
@@ -9,7 +9,7 @@
bool perform_registration_linux{ false };
#endif // __linux__
-@@ -41,7 +41,7 @@ namespace DownloaderUtils {
+@@ -50,7 +50,7 @@ namespace DownloaderUtils {
bool on_finish();
bool perform_register(const std::string& path_override = {});
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.cpp
index fda01fc8eead..8ad241e21ebb 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.cpp
@@ -1,6 +1,9 @@
---- src/slic3r/GUI/DesktopIntegrationDialog.cpp.orig 2023-07-25 09:24:17 UTC
+--- src/slic3r/GUI/DesktopIntegrationDialog.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/DesktopIntegrationDialog.cpp
-@@ -1,4 +1,4 @@
+@@ -3,7 +3,7 @@
+ ///|/
+ ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
+ ///|/
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
#include "DesktopIntegrationDialog.hpp"
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.hpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.hpp
index 392010458d33..7cd3f1114751 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.hpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_DesktopIntegrationDialog.hpp
@@ -1,12 +1,15 @@
---- src/slic3r/GUI/DesktopIntegrationDialog.hpp.orig 2023-07-25 09:25:50 UTC
+--- src/slic3r/GUI/DesktopIntegrationDialog.hpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/DesktopIntegrationDialog.hpp
-@@ -1,4 +1,4 @@
+@@ -2,7 +2,7 @@
+ ///|/
+ ///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
+ ///|/
-#ifdef __linux__
+#if defined(__linux__) || defined(__FreeBSD__)
#ifndef slic3r_DesktopIntegrationDialog_hpp_
#define slic3r_DesktopIntegrationDialog_hpp_
-@@ -42,4 +42,4 @@ class DesktopIntegrationDialog : public wxDialog (priv
+@@ -46,4 +46,4 @@ class DesktopIntegrationDialog : public wxDialog (priv
} // namespace Slic3r
#endif // slic3r_DesktopIntegrationDialog_hpp_
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ExtraRenderers.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ExtraRenderers.cpp
index ff72ea0a7a92..f667949aee2e 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ExtraRenderers.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_ExtraRenderers.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/ExtraRenderers.cpp.orig 2023-07-25 09:27:23 UTC
+--- src/slic3r/GUI/ExtraRenderers.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/ExtraRenderers.cpp
-@@ -327,7 +327,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWin
+@@ -343,7 +343,7 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWin
c_editor->SetSelection(atoi(data.GetText().c_str()));
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_Field.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_Field.cpp
index 8cbd7c553a22..f21bbca1ba56 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_Field.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_Field.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/Field.cpp.orig 2023-07-25 09:29:18 UTC
+--- src/slic3r/GUI/Field.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/Field.cpp
-@@ -199,7 +199,7 @@ static wxString na_value(bool for_spin_ctrl = false)
+@@ -221,7 +221,7 @@ bool Field::is_matched(const std::string& string, cons
static wxString na_value(bool for_spin_ctrl = false)
{
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLCanvas3D.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLCanvas3D.cpp
index a66935080795..4ecbcc7e72b3 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLCanvas3D.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLCanvas3D.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GLCanvas3D.cpp.orig 2023-07-25 09:31:07 UTC
+--- src/slic3r/GUI/GLCanvas3D.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GLCanvas3D.cpp
-@@ -97,7 +97,7 @@ float RetinaHelper::get_scale_factor() { return float(
+@@ -108,7 +108,7 @@ float RetinaHelper::get_scale_factor() { return float(
#endif // __WXGTK3__
// Fixed the collision between BuildVolume::Type::Convex and macro Convex defined inside /usr/include/X11/X.h that is included by WxWidgets 3.0.
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLTexture.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLTexture.cpp
index 6876f6022a4d..a1a487b06d0f 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLTexture.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GLTexture.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GLTexture.cpp.orig 2023-07-25 16:08:09 UTC
+--- src/slic3r/GUI/GLTexture.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GLTexture.cpp
-@@ -21,8 +21,8 @@
+@@ -25,8 +25,8 @@
#define STB_DXT_IMPLEMENTATION
#include "stb_dxt/stb_dxt.h"
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.cpp
index ee6bdc4f0c1b..a96b1e1d5d24 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI.cpp.orig 2023-07-21 15:02:36 UTC
+--- src/slic3r/GUI/GUI.cpp.orig 2024-02-29 13:03:32 UTC
+++ src/slic3r/GUI/GUI.cpp
-@@ -481,7 +481,7 @@ void desktop_open_folder(const boost::filesystem::path
+@@ -492,7 +492,7 @@ void desktop_open_folder(const boost::filesystem::path
const wxString widepath = path.wstring();
const wchar_t* argv[] = { L"explorer", widepath.GetData(), nullptr };
::wxExecute(const_cast<wchar_t**>(argv), wxEXEC_ASYNC, nullptr);
@@ -9,7 +9,7 @@
const char* argv[] = { "open", path.string().c_str(), nullptr };
::wxExecute(const_cast<char**>(argv), wxEXEC_ASYNC, nullptr);
#else
-@@ -490,7 +490,7 @@ void desktop_open_folder(const boost::filesystem::path
+@@ -501,7 +501,7 @@ void desktop_open_folder(const boost::filesystem::path
#endif
}
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.hpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.hpp
index 7a9e92e965a6..14508a97158c 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.hpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI.hpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI.hpp.orig 2023-07-21 13:10:36 UTC
+--- src/slic3r/GUI/GUI.hpp.orig 2024-02-29 13:03:32 UTC
+++ src/slic3r/GUI/GUI.hpp
-@@ -84,7 +84,7 @@ void desktop_open_folder(const boost::filesystem::path
+@@ -88,7 +88,7 @@ void desktop_open_folder(const boost::filesystem::path
// Ask the destop to open the directory specified by path using the default file explorer.
void desktop_open_folder(const boost::filesystem::path& path);
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
index a992ee9136fa..90a6a54b262b 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__App.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_App.cpp.orig 2023-06-19 12:07:14 UTC
+--- src/slic3r/GUI/GUI_App.cpp.orig 2024-02-29 13:03:32 UTC
+++ src/slic3r/GUI/GUI_App.cpp
-@@ -395,7 +395,7 @@ class SplashScreen : public wxSplashScreen (private)
+@@ -403,7 +403,7 @@ class SplashScreen : public wxSplashScreen (private)
};
@@ -9,7 +9,7 @@
bool static check_old_linux_datadir(const wxString& app_name) {
// If we are on Linux and the datadir does not exist yet, look into the old
// location where the datadir was before version 2.3. If we find it there,
-@@ -973,7 +973,7 @@ void GUI_App::init_app_config()
+@@ -937,7 +937,7 @@ void GUI_App::init_app_config()
// Mac : "~/Library/Application Support/Slic3r"
if (data_dir().empty()) {
@@ -18,8 +18,8 @@
set_data_dir(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data());
#else
// Since version 2.3, config dir on Linux is in ${XDG_CONFIG_HOME}.
-@@ -1130,7 +1130,8 @@ bool GUI_App::on_init_inner()
- {
+@@ -1107,7 +1107,8 @@ bool GUI_App::on_init_inner()
+
// Set initialization of image handlers before any UI actions - See GH issue #7469
wxInitAllImageHandlers();
-
@@ -28,7 +28,7 @@
#if defined(_WIN32) && ! defined(_WIN64)
// Win32 32bit build.
if (wxPlatformInfo::Get().GetArchName().substr(0, 2) == "64") {
-@@ -1158,7 +1159,7 @@ bool GUI_App::on_init_inner()
+@@ -1135,7 +1136,7 @@ bool GUI_App::on_init_inner()
wxCHECK_MSG(wxDirExists(resources_dir), false,
wxString::Format("Resources path does not exist or is not a directory: %s", resources_dir));
@@ -37,7 +37,7 @@
if (! check_old_linux_datadir(GetAppName())) {
std::cerr << "Quitting, user chose to move their data to new location." << std::endl;
return false;
-@@ -1263,7 +1264,7 @@ bool GUI_App::on_init_inner()
+@@ -1240,7 +1241,7 @@ bool GUI_App::on_init_inner()
if (!default_splashscreen_pos)
// revert "restore_win_position" value if application wasn't crashed
get_app_config()->set("restore_win_position", "1");
@@ -46,7 +46,7 @@
wxYield();
#endif
scrn->SetText(_L("Loading configuration")+ dots);
-@@ -1411,7 +1412,7 @@ bool GUI_App::on_init_inner()
+@@ -1393,7 +1394,7 @@ bool GUI_App::on_init_inner()
// and wxEVT_SET_FOCUS before GUI_App::post_init is called) wasn't called before GUI_App::post_init and OpenGL wasn't initialized.
// Since issue #9774 Where same problem occured on MacOS Ventura, we decided to have this check on MacOS as well.
@@ -55,7 +55,7 @@
if (!m_post_initialized && m_opengl_initialized) {
#else
if (!m_post_initialized) {
-@@ -2054,7 +2055,7 @@ bool GUI_App::switch_language()
+@@ -2096,7 +2097,7 @@ bool GUI_App::switch_language()
}
}
@@ -64,7 +64,7 @@
static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language,
const wxLanguageInfo* system_language)
{
-@@ -2253,7 +2254,7 @@ bool GUI_App::load_language(wxString language, bool in
+@@ -2298,7 +2299,7 @@ bool GUI_App::load_language(wxString language, bool in
m_language_info_best = wxLocale::FindLanguageInfo(best_language);
BOOST_LOG_TRIVIAL(trace) << boost::format("Best translation language detected (may be different from user locales): %1%") % m_language_info_best->CanonicalName.ToUTF8().data();
}
@@ -73,7 +73,7 @@
wxString lc_all;
if (wxGetEnv("LC_ALL", &lc_all) && ! lc_all.IsEmpty()) {
// Best language returned by wxWidgets on Linux apparently does not respect LC_ALL.
-@@ -2262,6 +2263,7 @@ bool GUI_App::load_language(wxString language, bool in
+@@ -2307,6 +2308,7 @@ bool GUI_App::load_language(wxString language, bool in
}
#endif
}
@@ -81,7 +81,7 @@
}
const wxLanguageInfo *language_info = language.empty() ? nullptr : wxLocale::FindLanguageInfo(language);
-@@ -2306,7 +2308,7 @@ bool GUI_App::load_language(wxString language, bool in
+@@ -2351,7 +2353,7 @@ bool GUI_App::load_language(wxString language, bool in
} else if (m_language_info_system != nullptr && language_info->CanonicalName.BeforeFirst('_') == m_language_info_system->CanonicalName.BeforeFirst('_'))
language_info = m_language_info_system;
@@ -90,7 +90,7 @@
// If we can't find this locale , try to use different one for the language
// instead of just reporting that it is impossible to switch.
if (! wxLocale::IsAvailable(language_info->Language)) {
-@@ -2426,7 +2428,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
+@@ -2471,7 +2473,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot"));
local_menu->Append(config_id_base + ConfigMenuUpdateConf, _L("Check for Configuration Updates"), _L("Check for configuration updates"));
local_menu->Append(config_id_base + ConfigMenuUpdateApp, _L("Check for Application Updates"), _L("Check for new version of application"));
@@ -99,7 +99,7 @@
//if (DesktopIntegrationDialog::integration_possible())
local_menu->Append(config_id_base + ConfigMenuDesktopIntegration, _L("Desktop Integration"), _L("Desktop Integration"));
#endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)
-@@ -2473,7 +2475,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
+@@ -2519,7 +2521,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
case ConfigMenuUpdateApp:
app_version_check(true);
break;
@@ -108,7 +108,7 @@
case ConfigMenuDesktopIntegration:
show_desktop_integration_dialog();
break;
-@@ -3090,7 +3092,7 @@ void GUI_App::show_desktop_integration_dialog()
+@@ -3155,7 +3157,7 @@ void GUI_App::show_desktop_integration_dialog()
void GUI_App::show_desktop_integration_dialog()
{
@@ -117,7 +117,7 @@
//wxCHECK_MSG(mainframe != nullptr, false, "Internal error: Main frame not created / null");
DesktopIntegrationDialog dialog(mainframe);
dialog.ShowModal();
-@@ -3110,7 +3112,7 @@ void GUI_App::show_downloader_registration_dialog()
+@@ -3175,7 +3177,7 @@ void GUI_App::show_downloader_registration_dialog()
if (msg.ShowModal() == wxID_YES) {
auto downloader_worker = new DownloaderUtils::Worker(nullptr);
downloader_worker->perform_register(app_config->get("url_downloader_dest"));
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Factories.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Factories.cpp
index c6371bde8096..e01c2f0640e2 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Factories.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Factories.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_Factories.cpp.orig 2023-07-21 13:55:55 UTC
+--- src/slic3r/GUI/GUI_Factories.cpp.orig 2024-02-29 13:03:32 UTC
+++ src/slic3r/GUI/GUI_Factories.cpp
-@@ -1345,7 +1345,7 @@ void MenuFactory::sys_color_changed(wxMenuBar* menubar
+@@ -1466,7 +1466,7 @@ void MenuFactory::sys_color_changed(wxMenuBar* menubar
for (size_t id = 0; id < menubar->GetMenuCount(); id++) {
wxMenu* menu = menubar->GetMenu(id);
sys_color_changed_menu(menu);
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectLayers.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectLayers.cpp
index 61d8299138b1..3d3eb2c03a9e 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectLayers.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectLayers.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_ObjectLayers.cpp.orig 2023-07-25 10:52:56 UTC
+--- src/slic3r/GUI/GUI_ObjectLayers.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GUI_ObjectLayers.cpp
-@@ -344,7 +344,7 @@ LayerRangeEditor::LayerRangeEditor( ObjectLayers* pare
+@@ -348,7 +348,7 @@ LayerRangeEditor::LayerRangeEditor( ObjectLayers* pare
m_enter_pressed = true;
// Workaround! Under Linux we have to use CallAfter() to avoid crash after pressing ENTER key
// see #7531, #8055, #8408
@@ -9,7 +9,7 @@
wxTheApp->CallAfter([this, edit_fn]() {
#endif
// If LayersList wasn't updated/recreated, we can call wxEVT_KILL_FOCUS.Skip()
-@@ -359,7 +359,7 @@ LayerRangeEditor::LayerRangeEditor( ObjectLayers* pare
+@@ -363,7 +363,7 @@ LayerRangeEditor::LayerRangeEditor( ObjectLayers* pare
SetValue(m_valid_value);
m_call_kill_focus = true;
}
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectManipulation.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectManipulation.cpp
deleted file mode 100644
index 501f8d2b1b9a..000000000000
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__ObjectManipulation.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/slic3r/GUI/GUI_ObjectManipulation.cpp.orig 2023-07-21 13:50:11 UTC
-+++ src/slic3r/GUI/GUI_ObjectManipulation.cpp
-@@ -490,7 +490,8 @@ void ObjectManipulation::Show(const bool show)
- const Selection& selection = wxGetApp().plater()->canvas3D()->get_selection();
- bool show_world_local_combo = wxGetApp().get_mode() != comSimple && (selection.is_single_full_instance() || selection.is_single_volume_or_modifier());
- if (selection.is_single_volume_or_modifier() && m_word_local_combo->GetCount() < 3) {
--#ifdef __linux__
-+
-+#if defined(__linux__) || defined (__FreeBSD__)
- m_word_local_combo->Insert(coordinate_type_str(ECoordinatesType::Local), 2);
- #else
- m_word_local_combo->Insert(coordinate_type_str(ECoordinatesType::Local), wxNullBitmap, 2);
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.cpp
index aebb25974d89..ccb810cac91d 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_Preview.cpp.orig 2023-07-25 10:57:11 UTC
+--- src/slic3r/GUI/GUI_Preview.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GUI_Preview.cpp
-@@ -292,7 +292,7 @@ void Preview::reload_print(bool keep_volumes)
+@@ -303,7 +303,7 @@ void Preview::load_print(bool keep_z_range)
void Preview::reload_print(bool keep_volumes)
{
@@ -9,7 +9,7 @@
// We are getting mysterious crashes on Linux in gtk due to OpenGL context activation GH #1874 #1955.
// So we are applying a workaround here: a delayed release of OpenGL vertex buffers.
if (!IsShown())
-@@ -302,14 +302,14 @@ void Preview::reload_print(bool keep_volumes)
+@@ -313,14 +313,14 @@ void Preview::reload_print(bool keep_volumes)
}
#endif /* __linux__ */
if (
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.hpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.hpp
index cb9a7e9087ae..b7b873574480 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.hpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Preview.hpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_Preview.hpp.orig 2023-07-25 11:01:59 UTC
+--- src/slic3r/GUI/GUI_Preview.hpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GUI_Preview.hpp
-@@ -85,7 +85,7 @@ class Preview : public wxPanel
+@@ -89,7 +89,7 @@ class Preview : public wxPanel
BackgroundSlicingProcess* m_process;
GCodeProcessorResult* m_gcode_result;
diff --git a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Utils.cpp b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Utils.cpp
index 06b622d21b04..fce789370d3b 100644
--- a/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Utils.cpp
+++ b/cad/PrusaSlicer/files/patch-src_slic3r_GUI_GUI__Utils.cpp
@@ -1,6 +1,6 @@
---- src/slic3r/GUI/GUI_Utils.cpp.orig 2023-07-25 11:03:21 UTC
+--- src/slic3r/GUI/GUI_Utils.cpp.orig 2023-12-12 14:21:21 UTC
+++ src/slic3r/GUI/GUI_Utils.cpp
-@@ -48,7 +48,7 @@ void on_window_geometry(wxTopLevelWindow *tlw, std::fu
+@@ -53,7 +53,7 @@ void on_window_geometry(wxTopLevelWindow *tlw, std::fu
// cf. https://groups.google.com/forum/#!topic/wx-users/c7ntMt6piRI
// OTOH the geometry is available very soon, so we can call the callback right away
callback();
@@ -9,7 +9,7 @@
tlw->Bind(wxEVT_SHOW, [=](wxShowEvent &evt) {
// On Linux, the geometry is only available after wxEVT_SHOW + CallAfter
// cf. https://groups.google.com/forum/?pli=1#!topic/wx-users/fERSXdpVwAI
-@@ -116,7 +116,7 @@ int get_dpi_for_window(const wxWindow *window)
+@@ -121,7 +121,7 @@ int get_dpi_for_window(const wxWindow *window)
if (hdc == NULL) { return DPI_DEFAULT; }
*** 768 LINES SKIPPED ***