pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

wip/prusaslicer: Update from 2.4.0 to 2.4.1



Module Name:	pkgsrc-wip
Committed By:	Paul Ripke <stix%stix.id.au@localhost>
Pushed By:	stix
Date:		Fri Mar 11 17:04:02 2022 +1100
Changeset:	0463b57b3d4f0527883d899a4c098b4f3d2685e3

Modified Files:
	prusaslicer/Makefile
	prusaslicer/PLIST
	prusaslicer/distinfo
	prusaslicer/patches/patch-CMakeLists.txt
	prusaslicer/patches/patch-src_CMakeLists_txt
	prusaslicer/patches/patch-src_slic3r_GUI_GUI__App.cpp
	prusaslicer/patches/patch-src_slic3r_GUI_PrintHostDialogs.cpp
	prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp
Added Files:
	prusaslicer/patches/patch-src_libslic3r_CMakeLists.txt
	prusaslicer/patches/patch-src_libslic3r_GCodeSender.cpp
	prusaslicer/patches/patch-src_slic3r_CMakeLists.txt
	prusaslicer/patches/patch-src_slic3r_Utils_Serial.cpp
Removed Files:
	prusaslicer/patches/patch-src_slic3r_GUI_HintNotification.cpp

Log Message:
wip/prusaslicer: Update from 2.4.0 to 2.4.1

Also import patch to fix build with cereal>=1.3.1.

Bugs fixed with respect to PrusaSlicer 2.4.1-rc1

- macOS specific: Several dialogs showed black text on black background on
  macOS 10.13 High Sierra and older (#3775, #7603)

Localization

- Updated Catalan localization (#8021 - thanks @davidjuanesb)

Profiles

- Added profiles for Anycubic 4Max Pro 2.0, based on
  https://hartrusion.com/en/prusaslicer-config-for-anycubic-4max-pro-2-0/

PrusaSlicer 2.4.1-rc1

Summary

This is a release candidate of PrusaSlicer 2.4.1, following 2.4.1-beta1 and
2.4.1-beta3. This release only fixes several bugs found in beta3. For list of
new features in the 2.4 series, please read the release logs of all
2.4.0/2.4.1 releases.

The release candidate builds save their profiles to the same directory as the
last release. If you already tested any of the PrusaSlicer 2.4.1 beta builds,
you will be offered to import the recent beta profiles.

Bugs fixed

- G-Code Substitutions were incorrectly applied on initial and final M73
  internal placeholders, which unexpectedly mangled the M73 commands #7978
- G-Code Substitutions were incorrectly applied on the commented-out
  configuration block at the end of the G-Code #7952 (this was fixed in beta3
  already)
- Windows specific: When loading a 3MF by double clicking the file, the
  project name was sometimes (depending on current local codepage) mangled
  when the file name contained non-ASCII characters. This could also have
  caused occasional crashes when sending file to print host (#7681, #7173 and
  #7845)
- macOS specific: The fix of Cmd+M shortcut not minimizing the application
  which was made in beta3 was reverted, because it made PrusaSlicer crash on
  older macOS versions(#7981). The fix has been postponed into PrusaSlicer 2.5
  release.

PrusaSlicer 2.4.1-beta3

Summary

This is another beta version of PrusaSlicer 2.4.1, a third patch release of
PrusaSlicer 2.4.0 (beta2 was not released publicly). This patch release adds
several little improvements and fixes some bugs found in the 2.4.1-beta1.

This release saves its configuration into a dedicated beta configuration
folder to avoid breaking production profiles. PrusaSlicer 2.4.1-beta3 will
offer to copy configuration from any older release into the beta configuration
folder on the first invocation.

Improvements with respect to 2.4.1-beta1

- In 2.4.1-beta1, we added a check that G92 E0 is present in layer change
  G-Code when relative extruder addressing is used. This is needed to prevent
  error accumulation in firmware. From this version, the check is only applied
  for Marlin firmware, because as far as we know, other firmware flavors do
  not suffer from this issue. #7846
- Related to the previous improvement: our G-Code preview works by mimicking
  the Marlin firmware, therefore if the G92 E0 was missing and the error
  accumulation became visible, it would also be visible in the G-Code preview.
  Because only Marlin firmware suffers from this issue in reality and there is
  an explicit check for the G92 E0 when Marlin is selected, we have now
  modified the G-Code Preview so the loss of precision problem is not
  visualized. #4881, #5073, #6336
- Clicking 'Delete All' button to delete all currently defined G-Code
  substitutions is newly followed by a confirmation dialog, so it is not
  possible to delete the entries by mistake #7850

Bugs fixed

- Fixed wrapping of text in modal dialogs, unnecessary line breaks were
  sometimes present
- 'Compare presets' dialog was missing an info text about values being
  truncated #7852
- When a 3MF with an SLA project was loaded and there were no SLA printers
  installed, the presets from the 3MF should have been temporarily installed.
  Instead, the list of SLA materials was incorrect and possibly even empty.
  This is quite an old bug.
- Fixed an issue with a gap in the brim when the inner brim was used
- When the outer brim of an object was very wide, it could overflow into a
  hole in another object
- Saving a preset after a modification incorrectly marked the currently
  opened project as saved #7849
- Some settings showed confusing indeterminate labels when they were
  modified per object in Object Manipulation panel #7887
- Improved robustness of multi-material painting, which sometimes produced
  gaps in the painted area of did not propagate it deep enough into the
  original volume #7838, #6892
- Linux specific: Print Settings and Filament/Material Settings controls
  were disabled after a specific sequence of loading projects and switching
  between FDM and SLA mode.
- macOS specific: Cmd+M did not minimize the application as it should have.
  This is now fixed for Intel Macs, the problem persists on ARMs.
- Exporting a volume as STL did not take into account possible transformation
  (rotation and scaling) of the model. This bug was introduced in
  2.4.1-beta1. #7906
- Fixed incorrectly shown cut contour in the Cut tool when cutting in SLA mode
  and the object was elevated because of supports

Localization

- Updated CS, DE, ES, FR, IT, and PL dictionaries

PrusaSlicer 2.4.1-beta1

Summary

This is a beta version of PrusaSlicer 2.4.1, a first patch release of
PrusaSlicer 2.4.0. This patch release adds several small improvements and 3rd
party profiles, fixes some bugs found in the 2.4.0 final and typos found in
translations.

This release saves its configuration into dedicated beta configuration folder
to avoid breaking production profiles. PrusaSlicer 2.4.1-beta1 will offer to
copy configuration from PrusaSlicer 2.4.0 or any older release into the beta
configuration folder on first invocation.

Improvements with respect to 2.4.0

G-Code substitutions

PrusaSlicer supports processing of the generated G-code with an external
post-processor for a long time. Launching an external post-processor is
versatile, however it is complex to setup, the post-processing scripts must be
distributed with the project and the interpreter running the post-processing
script (for example Python) has to be available. We collected many real world
use-cases for the post-processing scripts and concluded that many of them
could be covered by a simple "Find and Replace" tool with regular expression
matching and substitutions.

To make life easier for everyone who only needs basic post-processing, we now
integrated such a tool directly into PrusaSlicer. It is accessible from Print
Settings -> Output options and allows to add a number of find and replace
pairs, with optional regex matching, case sensitivity and whole word matching,
similar to what common text editors offer. The G-Code is processed before it
is previewed, so your changes will be visible in the G-Code preview.

image

We hope this tool will make common post-processing tasks simpler, such as
adding custom annotations, adjustments of output format such as in #6996),
ringing cancellation, adjustments of per feature extrusion rate and similar.

Regular expression syntax of Perl is supported as described in boost Perl
regular expression syntax, where a "single line" modifier mimics the Perl's
s/ modifier. With regular expressions active, the "Replace with" pattern
supports the "extended" syntax as described in boost extended format syntax.
Lookahead and lookbehind are supported by the regular expression engine, but
only for fixed length patterns. With regular expression disabled, \n, \r, \t,
\0 and \\ placeholders are supported in both "Find" and "Replace with"
patterns similarly to Notepad++'s "extended" syntax.

The G-code find/replace post-processor processes G-code in blocks, where a
single G-code block is generated for each layer starting with the Z up to move
to the next layer. Multiple find/replace patterns are applied one by one to
one G-code block before processing the next G-code block. Matching multi-line
patterns is possible, however only inside one G-code block, most likely inside
a single layer. Regular expressions are powerful but tricky, thus we recommend
the regular expressions 101 online playground to get familiar with regular
expressions and to test and fine tune the regular expressions modifying G-code
before entering them into PrusaSlicer. Don't forget to switch the regex flavor
to ECMAScript in the regular expressions 101 online playground.

An example of a quite powerful G-code modification by a reasonably complex
regular expression: Increase the extrusion rate of top solid infill from the
default 95 percent to 98 percent.

Find: (;TYPE:Top solid infill\n)(.*?)(;TYPE:|$)(?!Top solid infill)
Replace with: ${1}M221 S98\n${2}M221 S95\n${3}
Modifiers: regexp, single line

Other improvements

- Seam placement was improved. In 2.4.0, seams on internal perimeters were
  placed close to external seams to reduce long travels between seams, with
  additional staggering of internal seams wrt. to the external seams, so that
  they do not overlap. This sometimes produced an internal seam on a straight
  perimeter segment, even thought there was a convenient corner nearby,
  producing a visible bulge on the outer surface. The internal seams are now
  placed close to the external seam, but not at all costs. The staggering is
  now disabled as it often produced unnecessary jerking of the printer. Also,
  there was a bug in the seam placement algorithm, which again caused
  excessive travels in some cases #7690 #7686 #7784.
- In Spiral Vase mode, the G-code viewer used to assign a layer to each G-code
  segment of a spiral producing an excessive number of layers thus making
  G-code inspection difficult. The G-code viewer newly assigns a layer to a
  single spiral turn #4440.
- A new option "Ask for unsaved changes in project" was added into Preferences
  to control whether the user shall be asked to save a project on closing an
  application or when loading a different project. The existing three options
  "Ask for unsaved changes when..." always referred to the changes in presets,
  thus they are now reworded to make it clear #7114.
- Machine limits table in Printer Settings is now available for
  RepRapFirmware, while until now it was only enabled for Marlin #7347 thanks
  @n8bot.
- Implemented new placeholders for output file name:
  - initial_filament_type and printing_filament_types (useful for
    multi-material prints) #5300, #7684, #7673
  - initial_tool and initial_extruder - zero based index of first extruder
  - num_printing_extruders - number of printing extruders.
- New option "Restore window position on start" was added to Preferences. We
  have received reports of rare crashes on application start-up when trying to
  restore application main window position on some multi-display setups. While
  we were not able to fix the crash, we newly detect a crash during the window
  position restore and we suggest to disable the window restore option on the
  next application startup as a workaround #2939, #5573.
- Windows specific: The build_win.bat script newly supports a low CPU priority
  compilation option #7828 thanks @Jebtrix.
- FDM printer firmware usually keeps an absolute extruder axis position using
  a single precision float representation, which leads to a loss of accuracy
  if the extruder axis is not resetted regularly. In extruder absolute mode
  'G92 E0 is issued at each retraction by PrusaSlicer, while in extruder
  relative mode it is newly enforced, that either layer_gcode or
  before_layer_gcode contains 'G92 E0'. On the other side, in extruder
  absolute mode, 'G92 E0' in layer change custom G-code breaks slicer's
  assumption leading to horrible over-extrusions, thus 'G92 E0' is newly
  tested for and prohibited with extruder absolute addressing #6336 #5073.

Bugs fixed

- Windows specific: Fixed crash on some machines at the very start of the
  application. The bug was introduced to PrusaSlicer 2.4.0-beta1 with the dark
  mode support #7560 #7574 #7613.
- Windows specific: Dark mode is now enabled for all the new Windows builds.
  Let's hope that Microsoft will maintain the undocumented API that
  PrusaSlicer and other applications rely upon #7546.
- Fixed a rare crash in Configuration Wizard under certain conditions, mainly
  on OSX #7655.
- 'Place on face' function was very slow when used on some complex models
  #7587.
- When 'Reload from disk' attempts to load an invalid file, an error message
  is newly shown, while previously the error was silently ignored #7550.
- 'Export to STL' did not work for individual parts and modifiers, the option
  was grayed out. This was a regression wrt. PrusaSlicer 2.3.3 #7647.
- Windows specific: Button in focus and the default button was not
  highlighted. The issue was introduced with the dark mode support in
  PrusaSlicer 2.4.0-beta1. Because of missing Win32 dark mode support for
  buttons, we had to resort to flat rendering of buttons. However with flat
  rendering, Win32 buttons do not support highlight of a default or active
  button and we had to implement a workaround ourselves #7564.
- Cancelling "Fix by NetFabb" might have left a temp file opened. This is now
  fixed #7632.
- Windows specific: Fixed color of the text in Firmware updater window when
  firmware flashing is done.
- Fixed crash during slicing when a negative volume was used on painted areas
  of a multi-material model #7618.
- Fixed mangled text in "did you know" notifications when breaking a long line
  at a non-ASCII character #7611, thanks @odaki.
- Fixed crash on closing the application on OSX Sierra and older #7583.
- SLA pad model was sometimes not generated correctly, which was visible
  during preview visualization.
- Removed empty G1 command which appeared before bridging perimeters were
  printed #7714
- Fixed some text encoding issues in Print host queue dialog.
- The "Unsaved Changes dialog" used to inform that some of the differing keys
  are too long to be displayed fully and that one may open a pop-up window to
  show the full content of the differing keys. This was broken in 2.4.0 and it
  works again now #7734.
- Avoid crossing perimeters was improved in PrusaSlicer 2.4.0 to not move
  along the outermost perimeters. This feature did not work reliably for thin
  islands, which should be now improved #7699.
- The Yes/No/OK/Cancel buttons on various dialogs were displayed using the
  system language and not translated to the language set in PrusaSlicer. This
  is now fixed by providing dictionaries for these buttons #7542.
- Fixed possible crash during print host upload, likely related to #7681.
- The G-Code Preview parser did not skip whitespaces between axis letter and
  number, so e.g. G1 X 10 would not be correctly displayed in Preview. This
  was a bug introduced in PrusaSlicer 2.4.0 due to G-code export speed-up
  #7773.
- Some excessively wide message boxes were sometimes shown for example when
  showing a very long file path. The texts in message boxes are newly wrapped
  to keep the width of these message boxes reasonable.
- When printing with a single extruder only with a multi-material printer
  profile active while the printing extruder was not the default one, the
  G-code viewer did incorrectly considered the printer to not support
  multi-material printing, thus the cog icon below the vertical slider did not
  offer the 'Set extruder sequence' option. This is now fixed.
- When the type of an object part was changed from a printable part to a
  modifier, the part should be rendered transparent, but the transparency was
  not updated immediately.
- Cut tool sometimes showed the cut contours incorrectly after object parts
  were added and removed.
- Fixed crash when editing thumbnails in Printer settings #7781.
- Fixed an incorrect invalidation of PrusaSlicer configuration in case old
  PrusaSlicer is started, which reports that it does not support the current
  configuration thus it proposes to downgrade configuration to a version it
  understands. In case the user refuses to downgrade, the configuration was
  incorrectly marked as downgraded #7780.
- OSX specific: "Did you know hints" referencing Cmd-F hot key will now show
  Cmd-F, not Ctrl-F #7820.

Localization

- Added Catalan localization #7566 thanks @davidjuanesb.
- Updated CZ, PL, IT, ES, DE, FR translations (including previously not
  translated phrases and typo fixes)
- Added Hungarian localization #5479 thanks @zomatt.

Profiles

- Added Artillery Hornet profile based on slic3r/slic3r-profiles#14 by
  @newbeetle
- Added RatRig V-Core and V-Minion bundle based on slic3r/slic3r-profiles#13
  by @top-gun
- Added Jubilee bundle based on
  https://github.com/machineagency/jubilee/tree/main/software/slicer_settings/prusa_slic3r
  by @yvessa

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=0463b57b3d4f0527883d899a4c098b4f3d2685e3

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 prusaslicer/Makefile                               |  2 +-
 prusaslicer/PLIST                                  | 74 ++++++++++++++++++++++
 prusaslicer/distinfo                               | 21 +++---
 prusaslicer/patches/patch-CMakeLists.txt           | 14 +++-
 prusaslicer/patches/patch-src_CMakeLists_txt       | 13 +++-
 .../patches/patch-src_libslic3r_CMakeLists.txt     | 16 +++++
 .../patches/patch-src_libslic3r_GCodeSender.cpp    | 22 +++++++
 .../patches/patch-src_slic3r_CMakeLists.txt        | 16 +++++
 .../patches/patch-src_slic3r_GUI_GUI__App.cpp      | 30 ++++-----
 .../patch-src_slic3r_GUI_HintNotification.cpp      | 25 --------
 .../patch-src_slic3r_GUI_PrintHostDialogs.cpp      |  4 +-
 prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp   | 20 +++---
 .../patches/patch-src_slic3r_Utils_Serial.cpp      | 22 +++++++
 13 files changed, 215 insertions(+), 64 deletions(-)

diffs:
diff --git a/prusaslicer/Makefile b/prusaslicer/Makefile
index 9244b1da6d..befd0e72b3 100644
--- a/prusaslicer/Makefile
+++ b/prusaslicer/Makefile
@@ -1,6 +1,6 @@
 # $NetBSD$
 
-PKGVERSION=	2.4.0
+PKGVERSION=	2.4.1
 PKGNAME=	prusaslicer-${PKGVERSION}
 DISTNAME=	PrusaSlicer-${PKGVERSION:S/rc/-rc/}
 CATEGORIES=	cad
diff --git a/prusaslicer/PLIST b/prusaslicer/PLIST
index 934764d353..0c331e97a9 100644
--- a/prusaslicer/PLIST
+++ b/prusaslicer/PLIST
@@ -227,6 +227,8 @@ share/PrusaSlicer/localization/es/PrusaSlicer.mo
 share/PrusaSlicer/localization/es/PrusaSlicer_es.po
 share/PrusaSlicer/localization/fr/PrusaSlicer.mo
 share/PrusaSlicer/localization/fr/PrusaSlicer_fr.po
+share/PrusaSlicer/localization/hu/PrusaSlicer.mo
+share/PrusaSlicer/localization/hu/PrusaSlicer_hu.po
 share/PrusaSlicer/localization/it/PrusaSlicer.mo
 share/PrusaSlicer/localization/it/PrusaSlicer_it.po
 share/PrusaSlicer/localization/ja/PrusaSlicer.mo
@@ -250,12 +252,61 @@ share/PrusaSlicer/localization/tr/PrusaSlicer.mo
 share/PrusaSlicer/localization/tr/PrusaSlicer_tr.po
 share/PrusaSlicer/localization/uk/PrusaSlicer.mo
 share/PrusaSlicer/localization/uk/PrusaSlicer_uk.po
+share/PrusaSlicer/localization/wx_locale/af.po
+share/PrusaSlicer/localization/wx_locale/an.po
+share/PrusaSlicer/localization/wx_locale/ar.po
+share/PrusaSlicer/localization/wx_locale/ca.po
+share/PrusaSlicer/localization/wx_locale/ca%valencia.po@localhost
+share/PrusaSlicer/localization/wx_locale/cs.po
+share/PrusaSlicer/localization/wx_locale/da.po
+share/PrusaSlicer/localization/wx_locale/de.po
+share/PrusaSlicer/localization/wx_locale/el.po
+share/PrusaSlicer/localization/wx_locale/en.mo
+share/PrusaSlicer/localization/wx_locale/en.po
+share/PrusaSlicer/localization/wx_locale/es.po
+share/PrusaSlicer/localization/wx_locale/eu.po
+share/PrusaSlicer/localization/wx_locale/fa_IR.po
+share/PrusaSlicer/localization/wx_locale/fi.po
+share/PrusaSlicer/localization/wx_locale/fr.po
+share/PrusaSlicer/localization/wx_locale/gl_ES.po
+share/PrusaSlicer/localization/wx_locale/hi.po
+share/PrusaSlicer/localization/wx_locale/hr.po
+share/PrusaSlicer/localization/wx_locale/hu.po
+share/PrusaSlicer/localization/wx_locale/id.po
+share/PrusaSlicer/localization/wx_locale/it.po
+share/PrusaSlicer/localization/wx_locale/ja.po
+share/PrusaSlicer/localization/wx_locale/ko.po
+share/PrusaSlicer/localization/wx_locale/ko_KR.po
+share/PrusaSlicer/localization/wx_locale/lt.po
+share/PrusaSlicer/localization/wx_locale/lv.po
+share/PrusaSlicer/localization/wx_locale/ms.po
+share/PrusaSlicer/localization/wx_locale/nb.po
+share/PrusaSlicer/localization/wx_locale/ne.po
+share/PrusaSlicer/localization/wx_locale/nl.po
+share/PrusaSlicer/localization/wx_locale/pl.po
+share/PrusaSlicer/localization/wx_locale/pt.po
+share/PrusaSlicer/localization/wx_locale/pt_BR.po
+share/PrusaSlicer/localization/wx_locale/ro.po
+share/PrusaSlicer/localization/wx_locale/ru.po
+share/PrusaSlicer/localization/wx_locale/sk.po
+share/PrusaSlicer/localization/wx_locale/sl.po
+share/PrusaSlicer/localization/wx_locale/sq.po
+share/PrusaSlicer/localization/wx_locale/sv.po
+share/PrusaSlicer/localization/wx_locale/ta.po
+share/PrusaSlicer/localization/wx_locale/tr.po
+share/PrusaSlicer/localization/wx_locale/uk.po
+share/PrusaSlicer/localization/wx_locale/vi.po
+share/PrusaSlicer/localization/wx_locale/zh_CN.po
+share/PrusaSlicer/localization/wx_locale/zh_TW.po
 share/PrusaSlicer/localization/zh_CN/PrusaSlicer.mo
 share/PrusaSlicer/localization/zh_CN/PrusaSlicer_zh_CN.po
 share/PrusaSlicer/localization/zh_TW/PrusaSlicer.mo
 share/PrusaSlicer/localization/zh_TW/PrusaSlicer_zh_TW.po
 share/PrusaSlicer/profiles/Anycubic.idx
 share/PrusaSlicer/profiles/Anycubic.ini
+share/PrusaSlicer/profiles/Anycubic/4MAXPRO20_bed.stl
+share/PrusaSlicer/profiles/Anycubic/4MAXPRO20_texture.svg
+share/PrusaSlicer/profiles/Anycubic/4MAXPRO20_thumbnail.png
 share/PrusaSlicer/profiles/Anycubic/AK.png
 share/PrusaSlicer/profiles/Anycubic/AK.svg
 share/PrusaSlicer/profiles/Anycubic/AKLP_Bed.stl
@@ -273,9 +324,12 @@ share/PrusaSlicer/profiles/Anycubic/mega0_bed.stl
 share/PrusaSlicer/profiles/Artillery.idx
 share/PrusaSlicer/profiles/Artillery.ini
 share/PrusaSlicer/profiles/Artillery/Genius_thumbnail.png
+share/PrusaSlicer/profiles/Artillery/Hornet_thumbnail.png
 share/PrusaSlicer/profiles/Artillery/X1_thumbnail.png
 share/PrusaSlicer/profiles/Artillery/bed-genius.png
 share/PrusaSlicer/profiles/Artillery/bed-genius.stl
+share/PrusaSlicer/profiles/Artillery/bed-hornet.png
+share/PrusaSlicer/profiles/Artillery/bed-hornet.stl
 share/PrusaSlicer/profiles/Artillery/bed-x1.png
 share/PrusaSlicer/profiles/Artillery/bed-x1.stl
 share/PrusaSlicer/profiles/BIBO.idx
@@ -310,6 +364,7 @@ share/PrusaSlicer/profiles/Creality/ENDER2PRO_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER2_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER3BLTOUCH_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER3MAX_thumbnail.png
+share/PrusaSlicer/profiles/Creality/ENDER3PRO_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER3S1_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER3V2_thumbnail.png
 share/PrusaSlicer/profiles/Creality/ENDER3_thumbnail.png
@@ -368,6 +423,11 @@ share/PrusaSlicer/profiles/INAT.idx
 share/PrusaSlicer/profiles/INAT.ini
 share/PrusaSlicer/profiles/INAT/PROTON_X_RAIL_thumbnail.png
 share/PrusaSlicer/profiles/INAT/PROTON_X_ROD_thumbnail.png
+share/PrusaSlicer/profiles/Jubilee.idx
+share/PrusaSlicer/profiles/Jubilee.ini
+share/PrusaSlicer/profiles/Jubilee/Jubilee_bed.stl
+share/PrusaSlicer/profiles/Jubilee/Jubilee_texture.svg
+share/PrusaSlicer/profiles/Jubilee/Jubilee_thumbnail.png
 share/PrusaSlicer/profiles/LulzBot.idx
 share/PrusaSlicer/profiles/LulzBot.ini
 share/PrusaSlicer/profiles/LulzBot/MINI_AERO_thumbnail.png
@@ -397,6 +457,20 @@ share/PrusaSlicer/profiles/PrusaResearch/sl1.svg
 share/PrusaSlicer/profiles/PrusaResearch/sl1_bed.stl
 share/PrusaSlicer/profiles/PrusaResearch/sl1s.svg
 share/PrusaSlicer/profiles/PrusaResearch/sl1s_bed.stl
+share/PrusaSlicer/profiles/RatRig.idx
+share/PrusaSlicer/profiles/RatRig.ini
+share/PrusaSlicer/profiles/RatRig/VC3_300_thumbnail.png
+share/PrusaSlicer/profiles/RatRig/VC3_400_thumbnail.png
+share/PrusaSlicer/profiles/RatRig/VC3_500_thumbnail.png
+share/PrusaSlicer/profiles/RatRig/VMINION_thumbnail.png
+share/PrusaSlicer/profiles/RatRig/rr-vc-300.stl
+share/PrusaSlicer/profiles/RatRig/rr-vc-300.svg
+share/PrusaSlicer/profiles/RatRig/rr-vc-400.stl
+share/PrusaSlicer/profiles/RatRig/rr-vc-400.svg
+share/PrusaSlicer/profiles/RatRig/rr-vc-500.stl
+share/PrusaSlicer/profiles/RatRig/rr-vc-500.svg
+share/PrusaSlicer/profiles/RatRig/rr-vminion.stl
+share/PrusaSlicer/profiles/RatRig/rr-vminion.svg
 share/PrusaSlicer/profiles/TriLAB.idx
 share/PrusaSlicer/profiles/TriLAB.ini
 share/PrusaSlicer/profiles/TriLAB/AQI_thumbnail.png
diff --git a/prusaslicer/distinfo b/prusaslicer/distinfo
index 2d0b12b13c..40ae354707 100644
--- a/prusaslicer/distinfo
+++ b/prusaslicer/distinfo
@@ -1,30 +1,32 @@
 $NetBSD$
 
-BLAKE2s (PrusaSlicer-2.4.0.tar.gz) = cd9ea388c82a3eb687d7d3639446cea40d57fa069657fa8940e210cbe3d66d78
-SHA512 (PrusaSlicer-2.4.0.tar.gz) = e923e4e6273dbcfc3e2bc0e28f9eb8cda8530747c0a834f48aea715d75ba1d02be9cfee043689efccdaee40de00114f7964e43accad245b9acd801b997868e3c
-Size (PrusaSlicer-2.4.0.tar.gz) = 46397442 bytes
-SHA1 (patch-CMakeLists.txt) = 9d6c8e2f1f491b18b6781799bd5e99775e3e3e79
+BLAKE2s (PrusaSlicer-2.4.1.tar.gz) = 9049b61a662e314312c5ec74961864d9f9068896e63c1056c1fe6a23bf1b1d28
+SHA512 (PrusaSlicer-2.4.1.tar.gz) = 895388ec39e46e30ea7bdecba42793e898ceb6c6b331dad815a726ed2f7e2e8719c71c32c6ce7fff1781fa06aac8e9afb615784d3b2001bd0d6e24ba23f0866a
+Size (PrusaSlicer-2.4.1.tar.gz) = 55572739 bytes
+SHA1 (patch-CMakeLists.txt) = 4a986df0bcf0628116b5370498b6c23ba62dff71
 SHA1 (patch-cmake_modules_FindOpenVDB.cmake) = 4f2afc423a70fe60617b33ff7f26859b39775faa
-SHA1 (patch-src_CMakeLists_txt) = 1a65b80d1e1008a7ca218b9f840e66c4923a4b3a
+SHA1 (patch-src_CMakeLists_txt) = 8075d2af2ee1b730d522e5b4776358a848836dc1
 SHA1 (patch-src_avrdude_arduino.c) = ff02a4cab1c2d8c82ec7b22c7447ed5ec360ac57
 SHA1 (patch-src_avrdude_libavrdude.h) = 62d48054b147985249664f257dbd8bbd670df233
+SHA1 (patch-src_libslic3r_CMakeLists.txt) = 449b59f6cf5ca3f104e5faa5527b0ef23a00f4c9
+SHA1 (patch-src_libslic3r_GCodeSender.cpp) = 07dde2f6762c9ef180512ea20f735fb4d96a8f2c
 SHA1 (patch-src_libslic3r_LocalesUtils.cpp) = 33a473cadbc05eba7f0c218110e53babea36568c
 SHA1 (patch-src_libslic3r_LocalesUtils.hpp) = 7339ef576cbd16f30271c13b706d2487ae78b457
 SHA1 (patch-src_libslic3r_Platform.cpp) = 3066585efc98ba4963e41bda5952df38a7b095a0
 SHA1 (patch-src_libslic3r_Platform.hpp) = 5626058616d04396bff6c8550951d04fe03249e4
 SHA1 (patch-src_libslic3r_Thread.cpp) = 2e6e81e77e3efef5657ac55fb6b834b2ebec5d9a
+SHA1 (patch-src_slic3r_CMakeLists.txt) = b0a8a0ca0da0db7dafb8097d2db2d40cac23583c
 SHA1 (patch-src_slic3r_GUI_ConfigWizard.cpp) = 523d2eeb26c9f580ccdeb034743c301dcc56c727
 SHA1 (patch-src_slic3r_GUI_ConfigWizard__private.hpp) = 7ac3e3a9a67ebe7c99fbfc17ed9c0b2750d96974
 SHA1 (patch-src_slic3r_GUI_DesktopIntegrationDialog.cpp) = d61919d6f053cd598741255bffc29e80c79863df
 SHA1 (patch-src_slic3r_GUI_DesktopIntegrationDialog.hpp) = dd35d8a5c0ccaae50b969352f0f23f974a2ee89f
 SHA1 (patch-src_slic3r_GUI_ExtraRenderers.cpp) = ac803510123ff016b8fa6f22d491c898166e0929
 SHA1 (patch-src_slic3r_GUI_GLCanvas3D.cpp) = 7abaef0d1ffd79fd1fc2de5e8dc445a073386353
-SHA1 (patch-src_slic3r_GUI_GUI__App.cpp) = 0a3f722c5cf3e54d037e441d8bf08afd94d81af6
+SHA1 (patch-src_slic3r_GUI_GUI__App.cpp) = 1df0066ab3b240e909c5341696aff5dbcbf9050a
 SHA1 (patch-src_slic3r_GUI_GUI__App.hpp) = 9a4e30158b67fb6b73fc1b5ce45c458fb60c60a4
 SHA1 (patch-src_slic3r_GUI_GUI__Preview.cpp) = 8555c73aa6aa3d65b4d34fc93ccb1fbb2957a76f
 SHA1 (patch-src_slic3r_GUI_GUI__Preview.hpp) = 904556d0f85f28a8174845089647bb3691783f37
 SHA1 (patch-src_slic3r_GUI_GUI__Utils.cpp) = bcbc83109ba7806e6371d0ef10f3c05cc480d730
-SHA1 (patch-src_slic3r_GUI_HintNotification.cpp) = 955712c3a937f89824813b48fe561519e3410e69
 SHA1 (patch-src_slic3r_GUI_InstanceCheck.cpp) = c9ae1ec2db2b493578cc128383fa4cf0b3e2ae6a
 SHA1 (patch-src_slic3r_GUI_InstanceCheck.hpp) = 2af0741f480c41d5cc5bd9d3e55480c8e6ab029c
 SHA1 (patch-src_slic3r_GUI_Mouse3DController.cpp) = bf8bf60e17e304a2022b9a80852d7ab38fc2451d
@@ -33,9 +35,10 @@ SHA1 (patch-src_slic3r_GUI_NotificationManager.cpp) = 4e774bfdd777cba3e46ac4358b
 SHA1 (patch-src_slic3r_GUI_Plater.cpp) = 5235502df6c7227befd58e29de0b4a0ab7f1975f
 SHA1 (patch-src_slic3r_GUI_PresetComboBoxes.cpp) = 89654aa2e0384b35b61a19a22399683e7f4417ae
 SHA1 (patch-src_slic3r_GUI_PresetComboBoxes.hpp) = 0c84c1b706a1f4e00f60c1677c7edf53845d4467
-SHA1 (patch-src_slic3r_GUI_PrintHostDialogs.cpp) = a5ce3c0a88d67fb78407856825e9cb2a1a6cfb20
+SHA1 (patch-src_slic3r_GUI_PrintHostDialogs.cpp) = 0fcdcd9f36202f4b8be169b214a4feb376da15a4
 SHA1 (patch-src_slic3r_GUI_RemovableDriveManager.cpp) = 413499908128be48106d5fd6aea5d413bb959b35
-SHA1 (patch-src_slic3r_GUI_Tab.cpp) = 3c0f617eeb0d1a137e0050e416a52bc32d7a559e
+SHA1 (patch-src_slic3r_GUI_Tab.cpp) = 6b615054719ad3bd3bfcc7e5c7c2a57ae5e66041
 SHA1 (patch-src_slic3r_GUI_UnsavedChangesDialog.cpp) = c2e4e2bfccd8492506c4f794b7085fa2c1cbe846
 SHA1 (patch-src_slic3r_GUI_UnsavedChangesDialog.hpp) = cb399a0d751be5c9b25fcf88554612a17bc44d3c
 SHA1 (patch-src_slic3r_GUI_wxExtensions.cpp) = 14a6b3c6a6c0b082b126dcaf1fc869404fa3e9c9
+SHA1 (patch-src_slic3r_Utils_Serial.cpp) = d9723518f192c752b824e33c6c1c80e7905ddf05
diff --git a/prusaslicer/patches/patch-CMakeLists.txt b/prusaslicer/patches/patch-CMakeLists.txt
index 99eede1ec4..34beb39192 100644
--- a/prusaslicer/patches/patch-CMakeLists.txt
+++ b/prusaslicer/patches/patch-CMakeLists.txt
@@ -1,8 +1,10 @@
 $NetBSD$
 
 Use GTK3, since that's how we build wxWidgets.
+Use namespaces to link against libcereal >= 1.3.1 from:
+https://github.com/prusa3d/PrusaSlicer/commit/0ffcfd8393457fd035576436752267c9a1e6bbcc
 
---- CMakeLists.txt.orig	2021-12-17 14:00:02.000000000 +0000
+--- CMakeLists.txt.orig	2022-03-10 10:35:03.000000000 +0000
 +++ CMakeLists.txt
 @@ -38,7 +38,7 @@ CMAKE_DEPENDENT_OPTION(SLIC3R_DESKTOP_IN
  
@@ -13,3 +15,13 @@ Use GTK3, since that's how we build wxWidgets.
  
  set(IS_CROSS_COMPILE FALSE)
  
+@@ -474,6 +474,9 @@ endif ()
+ 
+ # Find the Cereal serialization library
+ find_package(cereal REQUIRED)
++if (NOT TARGET cereal::cereal)
++    add_library(cereal::cereal ALIAS cereal)
++endif ()
+ 
+ # l10n
+ set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/localization")
diff --git a/prusaslicer/patches/patch-src_CMakeLists_txt b/prusaslicer/patches/patch-src_CMakeLists_txt
index b9e43a3688..e87051b5bc 100644
--- a/prusaslicer/patches/patch-src_CMakeLists_txt
+++ b/prusaslicer/patches/patch-src_CMakeLists_txt
@@ -3,8 +3,10 @@ $NetBSD$
 Use libhidapi from pkgsrc.
 Only use libdl on Linux.
 Allow use of stable track wxWidgets on NetBSD.
+Use namespaces to link against libcereal >= 1.3.1 from:
+https://github.com/prusa3d/PrusaSlicer/commit/0ffcfd8393457fd035576436752267c9a1e6bbcc
 
---- src/CMakeLists.txt.orig	2021-12-17 14:00:02.000000000 +0000
+--- src/CMakeLists.txt.orig	2022-03-10 10:35:03.000000000 +0000
 +++ src/CMakeLists.txt
 @@ -22,8 +22,6 @@ add_subdirectory(libslic3r)
  
@@ -29,6 +31,15 @@ Allow use of stable track wxWidgets on NetBSD.
          else ()
              find_package(wxWidgets 3.1 QUIET COMPONENTS base core adv html gl)
  
+@@ -125,7 +123,7 @@ if (NOT WIN32 AND NOT APPLE)
+     set_target_properties(PrusaSlicer PROPERTIES OUTPUT_NAME "prusa-slicer")
+ endif ()
+ 
+-target_link_libraries(PrusaSlicer libslic3r cereal)
++target_link_libraries(PrusaSlicer libslic3r cereal::cereal)
+ if (APPLE)
+ #    add_compile_options(-stdlib=libc++)
+ #    add_definitions(-DBOOST_THREAD_DONT_USE_CHRONO -DBOOST_NO_CXX11_RVALUE_REFERENCES -DBOOST_THREAD_USES_MOVE)
 @@ -151,8 +149,10 @@ target_link_libraries(PrusaSlicer libsli
          target_link_libraries(PrusaSlicer ws2_32 uxtheme setupapi)
      elseif (APPLE)
diff --git a/prusaslicer/patches/patch-src_libslic3r_CMakeLists.txt b/prusaslicer/patches/patch-src_libslic3r_CMakeLists.txt
new file mode 100644
index 0000000000..0e6834d2cd
--- /dev/null
+++ b/prusaslicer/patches/patch-src_libslic3r_CMakeLists.txt
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Use namespaces to link against libcereal >= 1.3.1 from:
+https://github.com/prusa3d/PrusaSlicer/commit/0ffcfd8393457fd035576436752267c9a1e6bbcc
+
+--- src/libslic3r/CMakeLists.txt.orig	2022-03-10 10:35:03.000000000 +0000
++++ src/libslic3r/CMakeLists.txt
+@@ -337,7 +337,7 @@ target_include_directories(libslic3r PUB
+ target_link_libraries(libslic3r
+     libnest2d
+     admesh
+-    cereal
++    cereal::cereal
+     libigl
+     miniz
+     boost_libs
diff --git a/prusaslicer/patches/patch-src_libslic3r_GCodeSender.cpp b/prusaslicer/patches/patch-src_libslic3r_GCodeSender.cpp
new file mode 100644
index 0000000000..7e72dc3a49
--- /dev/null
+++ b/prusaslicer/patches/patch-src_libslic3r_GCodeSender.cpp
@@ -0,0 +1,22 @@
+$NetBSD$
+
+--- src/libslic3r/GCodeSender.cpp.orig	2022-03-10 10:35:03.000000000 +0000
++++ src/libslic3r/GCodeSender.cpp
+@@ -8,7 +8,7 @@
+ #include <boost/date_time/posix_time/posix_time.hpp>
+ #include <boost/lexical_cast.hpp>
+ 
+-#if defined(__APPLE__) || defined(__OpenBSD__)
++#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__)
+ #include <termios.h>
+ #endif
+ #ifdef __APPLE__
+@@ -146,7 +146,7 @@ GCodeSender::set_baud_rate(unsigned int 
+         if (ioctl(handle, TCSETS2, &ios))
+             printf("Error in TCSETS2: %s\n", strerror(errno));
+ 		
+-#elif __OpenBSD__
++#elif __OpenBSD__ || __NetBSD__
+ 		struct termios ios;
+ 		::tcgetattr(handle, &ios);
+ 		::cfsetspeed(&ios, baud_rate);
diff --git a/prusaslicer/patches/patch-src_slic3r_CMakeLists.txt b/prusaslicer/patches/patch-src_slic3r_CMakeLists.txt
new file mode 100644
index 0000000000..63f21fedfc
--- /dev/null
+++ b/prusaslicer/patches/patch-src_slic3r_CMakeLists.txt
@@ -0,0 +1,16 @@
+$NetBSD$
+
+Use namespaces to link against libcereal >= 1.3.1 from:
+https://github.com/prusa3d/PrusaSlicer/commit/0ffcfd8393457fd035576436752267c9a1e6bbcc
+
+--- src/slic3r/CMakeLists.txt.orig	2022-03-10 10:35:03.000000000 +0000
++++ src/slic3r/CMakeLists.txt
+@@ -260,7 +260,7 @@ add_library(libslic3r_gui STATIC ${SLIC3
+ 
+ encoding_check(libslic3r_gui)
+ 
+-target_link_libraries(libslic3r_gui libslic3r avrdude cereal imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES})
++target_link_libraries(libslic3r_gui libslic3r avrdude cereal::cereal imgui GLEW::GLEW OpenGL::GL hidapi libcurl ${wxWidgets_LIBRARIES})
+ 
+ if (MSVC)
+     target_link_libraries(libslic3r_gui Setupapi.lib)
diff --git a/prusaslicer/patches/patch-src_slic3r_GUI_GUI__App.cpp b/prusaslicer/patches/patch-src_slic3r_GUI_GUI__App.cpp
index aa47130f26..f5173126af 100644
--- a/prusaslicer/patches/patch-src_slic3r_GUI_GUI__App.cpp
+++ b/prusaslicer/patches/patch-src_slic3r_GUI_GUI__App.cpp
@@ -2,7 +2,7 @@ $NetBSD$
 
 Treat NetBSD like Linux.
 
---- src/slic3r/GUI/GUI_App.cpp.orig	2021-12-17 14:00:02.000000000 +0000
+--- src/slic3r/GUI/GUI_App.cpp.orig	2022-03-10 10:35:03.000000000 +0000
 +++ src/slic3r/GUI/GUI_App.cpp
 @@ -374,7 +374,7 @@ private:
  };
@@ -13,7 +13,7 @@ Treat NetBSD like Linux.
  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,
-@@ -833,7 +833,7 @@ wxGLContext* GUI_App::init_glcontext(wxG
+@@ -839,7 +839,7 @@ wxGLContext* GUI_App::init_glcontext(wxG
  
  bool GUI_App::init_opengl()
  {
@@ -22,7 +22,7 @@ Treat NetBSD like Linux.
      bool status = m_opengl_mgr.init_gl();
      m_opengl_initialized = true;
      return status;
-@@ -873,7 +873,7 @@ void GUI_App::init_app_config()
+@@ -880,7 +880,7 @@ void GUI_App::init_app_config()
  	// Mac : "~/Library/Application Support/Slic3r"
  
      if (data_dir().empty()) {
@@ -31,7 +31,7 @@ Treat NetBSD like Linux.
              set_data_dir(wxStandardPaths::Get().GetUserDataDir().ToUTF8().data());
          #else
              // Since version 2.3, config dir on Linux is in ${XDG_CONFIG_HOME}.
-@@ -1063,7 +1063,7 @@ bool GUI_App::on_init_inner()
+@@ -1072,7 +1072,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));
  
@@ -40,16 +40,16 @@ Treat NetBSD like Linux.
      if (! check_old_linux_datadir(GetAppName())) {
          std::cerr << "Quitting, user chose to move their data to new location." << std::endl;
          return false;
-@@ -1152,7 +1152,7 @@ bool GUI_App::on_init_inner()
-         // create splash screen with updated bmp
-         scrn = new SplashScreen(bmp.IsOk() ? bmp : create_scaled_bitmap("PrusaSlicer", nullptr, 400), 
-                                 wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_TIMEOUT, 4000, splashscreen_pos);
+@@ -1173,7 +1173,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");
 -#ifndef __linux__
 +#if !defined(__linux__) && !defined(__NetBSD__)
          wxYield();
  #endif
          scrn->SetText(_L("Loading configuration")+ dots);
-@@ -1294,7 +1294,7 @@ bool GUI_App::on_init_inner()
+@@ -1313,7 +1313,7 @@ bool GUI_App::on_init_inner()
  
          // An ugly solution to GH #5537 in which GUI_App::init_opengl (normally called from events wxEVT_PAINT
          // and wxEVT_SET_FOCUS before GUI_App::post_init is called) wasn't called before GUI_App::post_init and OpenGL wasn't initialized.
@@ -58,7 +58,7 @@ Treat NetBSD like Linux.
          if (update_gui_after_init && m_opengl_initialized) {
  #else
          if (update_gui_after_init) {
-@@ -1814,7 +1814,7 @@ bool GUI_App::switch_language()
+@@ -1899,7 +1899,7 @@ bool GUI_App::switch_language()
      }
  }
  
@@ -67,7 +67,7 @@ Treat NetBSD like Linux.
  static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguageInfo* language,
                                                                  const wxLanguageInfo* system_language)
  {
-@@ -2003,7 +2003,7 @@ bool GUI_App::load_language(wxString lan
+@@ -2088,7 +2088,7 @@ bool GUI_App::load_language(wxString lan
  				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();
  			}
@@ -76,7 +76,7 @@ Treat NetBSD like Linux.
              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.
-@@ -2056,7 +2056,7 @@ bool GUI_App::load_language(wxString lan
+@@ -2141,7 +2141,7 @@ bool GUI_App::load_language(wxString lan
      } else if (m_language_info_system != nullptr && language_info->CanonicalName.BeforeFirst('_') == m_language_info_system->CanonicalName.BeforeFirst('_'))
          language_info = m_language_info_system;
  
@@ -85,7 +85,7 @@ Treat NetBSD like Linux.
      // 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)) {
-@@ -2156,7 +2156,7 @@ void GUI_App::add_config_menu(wxMenuBar 
+@@ -2241,7 +2241,7 @@ void GUI_App::add_config_menu(wxMenuBar 
          local_menu->Append(config_id_base + ConfigMenuSnapshots, _L("&Configuration Snapshots") + dots, _L("Inspect / activate configuration snapshots"));
          local_menu->Append(config_id_base + ConfigMenuTakeSnapshot, _L("Take Configuration &Snapshot"), _L("Capture a configuration snapshot"));
          local_menu->Append(config_id_base + ConfigMenuUpdate, _L("Check for Configuration Updates"), _L("Check for configuration updates"));
@@ -94,7 +94,7 @@ Treat NetBSD like Linux.
          //if (DesktopIntegrationDialog::integration_possible())
          local_menu->Append(config_id_base + ConfigMenuDesktopIntegration, _L("Desktop Integration"), _L("Desktop Integration"));    
  #endif //(__linux__) && defined(SLIC3R_DESKTOP_INTEGRATION)        
-@@ -2200,7 +2200,7 @@ void GUI_App::add_config_menu(wxMenuBar 
+@@ -2285,7 +2285,7 @@ void GUI_App::add_config_menu(wxMenuBar 
  		case ConfigMenuUpdate:
  			check_updates(true);
  			break;
@@ -103,7 +103,7 @@ Treat NetBSD like Linux.
          case ConfigMenuDesktopIntegration:
              show_desktop_integration_dialog();
              break;
-@@ -2817,7 +2817,7 @@ bool GUI_App::run_wizard(ConfigWizard::R
+@@ -2899,7 +2899,7 @@ bool GUI_App::run_wizard(ConfigWizard::R
  
  void GUI_App::show_desktop_integration_dialog()
  {
diff --git a/prusaslicer/patches/patch-src_slic3r_GUI_HintNotification.cpp b/prusaslicer/patches/patch-src_slic3r_GUI_HintNotification.cpp
deleted file mode 100644
index d0ab57ceab..0000000000
--- a/prusaslicer/patches/patch-src_slic3r_GUI_HintNotification.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-$NetBSD$
-
-Treat NetBSD like Linux.
-
---- src/slic3r/GUI/HintNotification.cpp.orig	2021-12-17 14:00:02.000000000 +0000
-+++ src/slic3r/GUI/HintNotification.cpp
-@@ -715,8 +715,11 @@ void NotificationManager::HintNotificati
- 	if (is_finished())
- 		return;
- 
-+	// stix
-+	// wxGetApp().imgui()->new_frame();
- 	count_spaces();
- 	count_lines();
-+	// ImGui::EndFrame();
- 
- 	m_multiline = true;
- 
-@@ -1058,4 +1061,4 @@ void NotificationManager::HintNotificati
-     }
- }
- } //namespace Slic3r 
--} //namespace GUI 
-\ No newline at end of file
-+} //namespace GUI 
diff --git a/prusaslicer/patches/patch-src_slic3r_GUI_PrintHostDialogs.cpp b/prusaslicer/patches/patch-src_slic3r_GUI_PrintHostDialogs.cpp
index 1c3500c50d..0b46be5e16 100644
--- a/prusaslicer/patches/patch-src_slic3r_GUI_PrintHostDialogs.cpp
+++ b/prusaslicer/patches/patch-src_slic3r_GUI_PrintHostDialogs.cpp
@@ -2,10 +2,10 @@ $NetBSD$
 
 Treat NetBSD like Linux.
 
---- src/slic3r/GUI/PrintHostDialogs.cpp.orig	2021-12-17 14:00:02.000000000 +0000
+--- src/slic3r/GUI/PrintHostDialogs.cpp.orig	2022-03-10 10:35:03.000000000 +0000
 +++ src/slic3r/GUI/PrintHostDialogs.cpp
 @@ -121,7 +121,7 @@ PrintHostSendDialog::PrintHostSendDialog
-     }
+     add_button(wxID_CANCEL);
      finalize();
  
 -#ifdef __linux__
diff --git a/prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp b/prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp
index 3ee5dfc071..b0c177e88d 100644
--- a/prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp
+++ b/prusaslicer/patches/patch-src_slic3r_GUI_Tab.cpp
@@ -2,7 +2,7 @@ $NetBSD$
 
 Treat NetBSD like Linux.
 
---- src/slic3r/GUI/Tab.cpp.orig	2021-12-17 14:00:02.000000000 +0000
+--- src/slic3r/GUI/Tab.cpp.orig	2022-03-10 10:35:03.000000000 +0000
 +++ src/slic3r/GUI/Tab.cpp
 @@ -320,7 +320,7 @@ void Tab::create_preset_tab()
      // This helps to process all the cursor key events on Windows in the tree control,
@@ -13,16 +13,16 @@ Treat NetBSD like Linux.
          // Events queue is opposite On Linux. wxEVT_SET_FOCUS invokes after wxEVT_TREE_SEL_CHANGED,
          // and a result wxEVT_KILL_FOCUS doesn't invoke for the TextCtrls.
          // see https://github.com/prusa3d/PrusaSlicer/issues/5720
-@@ -1744,7 +1744,7 @@ void TabPrint::update_description_lines(
-     if (m_active_page && m_active_page->title() == "Output options" && m_post_process_explanation) {
-         m_post_process_explanation->SetText(
-             _L("Post processing scripts shall modify G-code file in place."));
+@@ -1762,7 +1762,7 @@ void TabPrint::update_description_lines(
+         if (m_post_process_explanation) {
+             m_post_process_explanation->SetText(
+                 _L("Post processing scripts shall modify G-code file in place."));
 -#ifndef __linux__
 +#if !defined(__linux__) && !defined(__NetBSD__)
-         m_post_process_explanation->SetPathEnd("post-processing-scripts_283913");
+             m_post_process_explanation->SetPathEnd("post-processing-scripts_283913");
  #endif // __linux__
-     }
-@@ -3117,7 +3117,7 @@ void Tab::load_current_preset()
+         }
+@@ -3151,7 +3151,7 @@ void Tab::load_current_preset()
                          else
  #endif
                              wxGetApp().tab_panel()->InsertPage(wxGetApp().tab_panel()->FindPage(this), tab, tab->title());
@@ -31,7 +31,7 @@ Treat NetBSD like Linux.
                              int page_id = wxGetApp().tab_panel()->FindPage(tab);
                              wxGetApp().tab_panel()->GetPage(page_id)->Show(true);
                          #endif // __linux__
-@@ -3491,7 +3491,7 @@ bool Tab::tree_sel_change_delayed()
+@@ -3525,7 +3525,7 @@ bool Tab::tree_sel_change_delayed()
      // There is a bug related to Ubuntu overlay scrollbars, see https://github.com/prusa3d/PrusaSlicer/issues/898 and https://github.com/prusa3d/PrusaSlicer/issues/952.
      // The issue apparently manifests when Show()ing a window with overlay scrollbars while the UI is frozen. For this reason,
      // we will Thaw the UI prematurely on Linux. This means destroing the no_updates object prematurely.
@@ -40,7 +40,7 @@ Treat NetBSD like Linux.
      std::unique_ptr<wxWindowUpdateLocker> no_updates(new wxWindowUpdateLocker(this));
  #else
      /* On Windows we use DoubleBuffering during rendering,
-@@ -3537,7 +3537,7 @@ bool Tab::tree_sel_change_delayed()
+@@ -3571,7 +3571,7 @@ bool Tab::tree_sel_change_delayed()
          if (wxGetApp().mainframe!=nullptr && wxGetApp().mainframe->is_active_and_shown_tab(this))
              activate_selected_page(throw_if_canceled);
  
diff --git a/prusaslicer/patches/patch-src_slic3r_Utils_Serial.cpp b/prusaslicer/patches/patch-src_slic3r_Utils_Serial.cpp
new file mode 100644
index 0000000000..204816e1f7
--- /dev/null
+++ b/prusaslicer/patches/patch-src_slic3r_Utils_Serial.cpp
@@ -0,0 +1,22 @@
+$NetBSD$
+
+--- src/slic3r/Utils/Serial.cpp.orig	2022-03-10 10:35:03.000000000 +0000
++++ src/slic3r/Utils/Serial.cpp
+@@ -49,7 +49,7 @@
+ 	#include <sys/select.h>
+ #endif
+ 
+-#if defined(__APPLE__) || defined(__OpenBSD__)
++#if defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__)
+ 	#include <termios.h>
+ #elif defined __linux__
+ 	#include <fcntl.h>
+@@ -342,7 +342,7 @@ void Serial::set_baud_rate(unsigned baud
+ 		ios.c_cc[VTIME] = 1;
+ 		handle_errno(::ioctl(handle, TCSETS2, &ios));
+ 
+-#elif __OpenBSD__
++#elif __OpenBSD__ || __NetBSD__
+ 		struct termios ios;
+ 		handle_errno(::tcgetattr(handle, &ios));
+ 		handle_errno(::cfsetspeed(&ios, baud_rate));



Home | Main Index | Thread Index | Old Index