Multi Material prints & soluble supports.
Disabled assert testing for the existence of "printer_technology" fields
as it triggers on loading of legacy AMF/3MF files.
Slicer crash when SLA printer is selected and printer profile is changed
First, there was a bug in the preset Tabs, where a "printer_technology"
was incorrectly queried on "print" and "filament"
(or "sla_print" and "sla_material") profiles.
Second, there was an unsafe "printer_technology" getter, which would add
the missing key to the config container when queried for.
Added a new validation into Print::validation() to verify, that
the non-soluble supports need to be printed with "current" extruder.
This check was already there, though for the global parameters only.
Now the check is performed inside the Print class for the object
override parameters as well.
Improved the Print::validate() handling. The Print::validate() is only
called if the Print::apply() indicates a change, or if the slicing
was executed by the user explicitely (with the "Slice now" button,
with the "Send to octoprint" button, or by switching to the print
path preview).
Reworked command line processing for the GUI slic3r. Now the config is loaded first, then the model files (also the configs from AMF/3MF are applied), and lastly the free standing parameters are applied.
Fixed unescaping for command line parameters. The string parameters are now not unescaped, string vector parameters are unescaped only if enquoted.
Tab::load_current_preset() - disabled CallAfter for predictability. With CallAfter, it was difficult to call the method in sequence with other methods.
Fixed some missing ->Destroy() calls on dialogs created from MainFrame
Fixed some compiler warnings.
The text fields were not causing config value updates,
broken with 8d1b854acb
Replaced all wxString.ToStdString() with wxString.ToUTF8().data()
to be sure that the strings are correctly converted to UTF8.