+ Fixed wrong update of selection in object and scene, when change selection in ObjectList after editing of values in Height range modifiers.
Repro:
1. Add 2 objects
2. Add Height range modifiers for one of them
3. Select range
4. Edit some of values
5. Select other object.
Expected behavior:
1. Edited value is saved
2. New object is selected in object list and on the 3D scene_selection
Real behavior:
1. New object is selected in object list and on the 3D scene_selection
But:
2. Every next selection in object list has no update on the scene or "temporary" panel
3. Selection from the scene updates selection in ObjectList
But:
4. Next editing of layer range and press "Enter" causes a crash
"Print settings reloaded with 0.05 layer and fill percentage changed
after click on modified profile #3755"
Combo box callback was not removing the "(modified)" suffix.
the "renamed_from" field as it is specific to a concrete profile.
Prusa Research system profile was annotated with "renamed_from"
to indicate that the PETG profiles were renamed from PET somewhere
after PrusaSlicer 2.2.1 release.
1) When the wizard is initialized, filament and SLA profile names
are verified and current names of renamed profiles are resolved.
Fixes "Add/Remove Filaments is not hiding all of the un-checked filaments #3835"
2) When adding a printer model, default materials are installed in case
the printer model has no default material installed.
3) When leaving the Filaments or SLA materials page, and some printer models
have no material installed, those Printer Models are listed
in a message box and only for those printer models the default
materials are installed.
This reverts commit 3d3e36ba8d.
The change is too risky just before the PrusaSlicer 2.2.0 final release
and the feature may need a bit of polishing before release.
in the parameter tab.
An inconsistency between the slicing back-end and the parameter page
has been fixed, where the slicing back end only creates skirt for
non-zero number of skirt loops even if the minimum skirt extrusion is set.
The problem was in fact elsewhere. After an object is added, it is necessary to
update the gizmos. GLGizmoManager::update_data needs to be called, but regardless
of whether any gizmo is currently opened (which is what is_running returns).
To reproduce the crash that this fixes: add an object, delete it, add another one,
open SLA gizmo -> crash
PrusaSlicer newly registers by Windows operating system for HID USB
plug / unplug notifications and for Volume attach / detach notifications,
and the background threads of the two respective services are waken up
on these Windows notifications.
The RemovableDriveManager also wakes up every 30 seconds to cope with
the drives ejected from Windows Explorer or from another application,
for example Cura, for which Windows OS does not send out notifications.
These images are newly stored inside the resources/profiles/VENDOR_NAME/,
they should be named by the printer_model identifier suffixed with
"_thumbnail.png"
All the existing printer thumbnails were moved and renamed,
thumbnails for the 3rd party printers were added, marked as Beta.
system call to the command line utility and send out the unmount
wxWidgets event immediately.
Hopefully improves 2.2.0-RC Eject is very slow in Linux (#3795)
This crash was caused by the RemovableDriveManager and 3DConnexion
detection services not being stopped correctly.
The fix executes all the tasks of the MainFrame at the language switch,
that are normally performed on application shut down.
1) On Windows and Linux, the device enumeration now runs at a background
thread, while it ran on the UI thread on idle, which may have been
blocking on some rare Windows setups, see GH #3515#3733#3746#3766
2) On OSX, the device enumeration now relies on OS callback, no
polling is required.
3) Refactored for cleaner interface.
1) On Windows and Linux, polling of removable drives is done at a background
thread, not at a UI thread.
2) On OSX, there is no polling, but a OS notification callback.
3) Refactored for clarity of the RemovableDriveManager interface.
* the editing of extruder color from PresetComboBox,
when incompatible filament preset is selected and red flag is shown.
*OSX specific bug : empty icons for PresetComboBox had non-scaled width
1. "Revert" buttons on the bar don't work for a "Compatible printers" and a "Compatible prints profiles".
And cause a crash if they are pressed in Print(SLA) Settings.
2. A label of a "Compatible printers" option is always black in Filament(Materials) Settings Tab
- Deleted redundant whitespaces before semicolons.
- All "\t" extracted from the phrases (The PhraseApp used to the translations "doesn't see" it, and as a result all translations missed them)
The wxString saga continues. wxWidgets 3.0 don't have the wxString::FromUTF8(const std::string&) overload, we must use the GUI::from_u8 helper
Also wxWidgets 3.0 don't allow to disable wxString->const char* conversion, so calling show_info(wxWindow*, wxString, const char*) was ambiguous
Several includes moved around
the "renamed_from" property of current profiles was not taken into account.
This lead to a situation where there were no MMU or SLA materials installed
after upgrade from PrusaSlicer 2.2.1 to 2.2. This should work now.
to avoid a column narrowing after a recreating of an application caused by a language changing)
+ Fix related to a bug, reported in #3617, about wrong placement of a "Purging volumes" button
translated to the some languages
The showing/hiding block cannot depend on whether the mesh was recently updated.
It would then not hide the supports and pad, which are calculated later than the hollowed mesh.
If the clipping plane is moved automatically after hollowed mesh was created, move the clipping plane and fix current direction so it is not reset when user wants to move it
This is a quick solution for the 2.2.0 release. It should be later refactored as mentioned in the code.
and the "show incompatible profiles" option.
It was not able to select the incompatible Print profile, which is
possible now.
(see Cannot select incompatible printer profile #3715)
When the Printer profile derived from the Prusa3D system profile was
active or a system Prusa3D profile was active, and when the Print profile
with the removed "inherits" field was active (or any other profile
derived from the "-- default --" profile was active), then the filament
selector offered just the profiles with the removed "inherits" field
(or any other profile derived from the "-- default--") profile.
This behavior has been now changed, so that in this scenario the Filament selector
will offer the Prusa3D vendor profiles compatible with the active Print
and Printer profile as well as the user profiles.
Slicer was also changed to keep an incompatible preset selected
at its respective tab if its respective "Red flag" is enabled.
For example, if an incompatible Print preset is selected and a Printer
profile is switched to another one which is not compatible with the active
Print preset that was red already, the active Print preset is
not switched if the Print "Red flag" is active. However, if the Print profile
was compatible before the Printer profile is switched and now the Print
profile becomes incompatible, another compatible Print profile is selected.
A likely bug in wxWidgets was worked around when switching a Print preset
on Plater, if the last item in the Print preset was active and incompatible,
and another Print preset was selected by the user. On Windows, an CBN_EDITCHANGE
is sent just after combo box selection change event and the CBN_EDITCHANGE
holds an index of the combo box item, which will be removed by the 1st event,
therefore leading to an assert in wxWidgets on CBN_EDITCHANGE. The workaround
is to disable processing of CBN_EDITCHANGE on Windows for the Plater
preset selection combo boxes.
ConfigWizard name was missing translation macro in several places
Few typos corrected
Some string conversions fixed
Two strings were not marked for translation
Fixed return type of std::string translate_utf8() with context
(incorrectly returned wxString, should return std::string).
Fixed double translation of BackgroundSlicingProcess::validate() in Plater.
When switching a Print profile, the modifications of an active Filament
profile were incorrecly dropped even if the active Filament profile
was compatible with the newly selected Print profile.
The bug was introduced in 15eedef. lower_bound_by_predicate implementation returns first item that does not satisfy the predicate, not last item that does.
Clipping plane direction is now initialized when the plane is first moved, not when the gizmo is opened. This is how previous versions worked.
This is a minimal-effort solution before the clipping plane is refactored properly.
Compensated slices have negative orientation...
Move efc to common params
Fix elefant foot compensation reversed contours
Remove redundant assertions and don't apply absolute correction if zero
but causes an issue #3642 (G-Code Export button visible in "non-default" position)
All Show/Hide() of active buttons are processed inside show_action_buttons() function
if the number of top / bottom solid layers was set to zero while
the top / bottom minimum shell thickess was set nonzero.
With this commit, if the top / bottom solid layers is set to zero,
there are no top / bottom solid layers generated independent from
the minimum top / bottom shell thickness.
Opening saved project removes Print Host settings #3655
Octoprint Settings when Opening a .3MF file #3244
When loading a configuration file (from AMF, 3MF, .ini or .gcode),
and if the host settings ("print_host", "printhost_apikey", "printhost_cafile")
in the configuration file is empty, then the config is considered to be anonymized,
and these anonymized keys are loaded from the referenced "derived from" profile,
if it exists in user's PrusaSlicer configuration directory.
We are aware that this is a patch work and a better long term solution
is to separate physical printer settings from logical printer settings,
but this is a good enough solution for PrusaSlicer 2.2.0 release.
Exceptions thrown by Flow calculation were made explicit classes derived
from std::invalid_argument.
The PresetHints::recommended_thin_wall_thickness() newly catches these
exceptions and it shows the reason of why the hint is invalid.
when for Parameter validation dialog "Selecting NO caused no change".
OSX:TextCtrl:wxEVT_KILL_FOCUS: Second call is suppressed
+ Under OSX set a little bit more wider width for Fields