Merge branch 'master' into fs_svg_SPE-1517

This commit is contained in:
Filip Sykala - NTB T15p 2023-09-21 11:19:53 +02:00
commit 0e33633fca
14 changed files with 131 additions and 107 deletions

View File

@ -1,4 +1,6 @@
min_slic3r_version = 2.6.0-beta1
0.2.7 Fixed compatible condition for MONO X.
0.2.6 Added MONO X 6K.
0.2.5 Fixed output file format for MONO SE.
0.2.4 Enable pad for Anycubic SLA profiles
0.2.3 Added Photon Mono printer.

View File

@ -5,7 +5,7 @@
name = Anycubic
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the PrusaSlicer configuration to be downgraded.
config_version = 0.2.5
config_version = 0.2.7
# Where to get the updates from?
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Anycubic/
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
@ -87,6 +87,13 @@ technology = SLA
family = PHOTON MONO
default_materials = Generic Blue Resin @MONO 0.05
[printer_model:PHOTON MONO X 6K]
name = Photon Mono X 6K
variants = default
technology = SLA
family = PHOTON MONO
default_materials = Anycubic Plant-based UV Resin Grey 23 @MONO 0.05
[printer_model:PHOTON MONO SE]
name = Photon Mono SE
variants = default
@ -2383,6 +2390,11 @@ inherits = 0.05 Normal @ANYCUBIC ABSTRACT
compatible_printers_condition = printer_notes=~/.*PHOTONMONOX\n.*/
output_filename_format = [input_filename_base].pwmx
[sla_print:0.05 Normal @ANYCUBIC MONO X 6K]
inherits = 0.05 Normal @ANYCUBIC ABSTRACT
compatible_printers_condition = printer_notes=~/.*PHOTONMONOX6K\n.*/
output_filename_format = [input_filename_base].pwmx
[sla_print:0.05 Normal @ANYCUBIC MONO SE]
inherits = 0.05 Normal @ANYCUBIC ABSTRACT
compatible_printers_condition = printer_notes=~/.*PHOTONMONOSE\n.*/
@ -2413,6 +2425,36 @@ material_vendor = Generic
material_colour = #6080EC
compatible_printers_condition = printer_notes=~/.*MONO.*/ and printer_notes=~/.*VENDOR_ANYCUBIC.*/ and printer_notes=~/.*SLA.*/
[sla_material:Anycubic Plant-based UV Resin Grey 23 @MONO 0.05]
inherits = *common 0.05 ANYCUBIC SLA*
exposure_time = 2.3
initial_exposure_time = 23
material_type = Plant-Based
material_vendor = Anycubic
material_colour = #808080
compatible_printers_condition = printer_model=="PHOTON MONO X 6K"
material_notes = LIFT_SPEED=2
[sla_material:Anycubic Plant-based UV Resin Grey 28 @MONO 0.05]
inherits = *common 0.05 ANYCUBIC SLA*
exposure_time = 2
initial_exposure_time = 28
material_type = Plant-Based
material_vendor = Anycubic
material_colour = #808080
compatible_printers_condition = printer_model=="PHOTON MONO X"
material_notes = LIFT_SPEED=2
[sla_material:Anycubic Plant-based UV Resin Grey 30 @MONO 0.05]
inherits = *common 0.05 ANYCUBIC SLA*
exposure_time = 2
initial_exposure_time = 30
material_type = Plant-Based
material_vendor = Anycubic
material_colour = #808080
compatible_printers_condition = printer_model=="PHOTON MONO SE" and
material_notes = LIFT_SPEED=2
## Printers
[printer:Anycubic Photon Mono]
@ -2499,3 +2541,31 @@ gamma_correction = 1
area_fill = 45
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONOX\nPRINTER_TECHNOLOGY_SLA\n
[printer:Anycubic Photon Mono X 6K]
printer_technology = SLA
printer_model = PHOTON MONO X 6K
printer_variant = default
default_sla_material_profile = Anycubic Plant-based UV Resin Grey @MONO 0.05
default_sla_print_profile = 0.05 Normal @ANYCUBIC
thumbnails = 224x168
sla_archive_format = pwmx
bed_shape = 1.48x1.02,198.48x1.02,198.48x123.02,1.48x123.02
display_height = 122
display_orientation = landscape
display_mirror_x = 1
display_mirror_y = 0
display_pixels_x = 5760
display_pixels_y = 3600
display_width = 197
max_print_height = 245
elefant_foot_compensation = 0.2
elefant_foot_min_width = 0.2
min_exposure_time = 1
max_exposure_time = 120
min_initial_exposure_time = 1
max_initial_exposure_time = 300
printer_correction = 1,1,1
gamma_correction = 1
area_fill = 45
printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONOX6K\n

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,2 +1,3 @@
min_slic3r_version = 2.6.0-alpha2
1.0.1 Swapped Pause GCode, Fixed Chocolate Colors, Resolved Output Format issue from Inheriting Keyword Typo
1.0.0 Initial

View File

@ -1,11 +1,11 @@
# Print profiles for the Creality printers.
# Print profiles for the Cocoa Press.
[vendor]
# Vendor name will be shown by the Config Wizard.
name = Cocoa Press
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the PrusaSlicer configuration to be downgraded.
config_version = 1.0.0
config_version = 1.0.1
# Where to get the updates from?
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/CocoaPress/
# changelog_url = https://files.prusa3d.com/?latest=slicer-profiles&lng=%1%
@ -30,11 +30,11 @@ thumbnail = CocoaPress_MiniChef.png
gcode_label_objects = 1
gcode_resolution = 0.0125
gcode_substitutions = "(;PAUSE_PRINT)(\\n|\\r\\n|\\r)(.*?)(M117)";$1$2M0;r;"Pause command allows you to get a full screen message."
output_filename_format = {input_filename_base}_{nozzle_diameter[initial_tool]}n_{print_time}_{round(total_weight)}g.gcode
notes = PRINTER_VENDOR_COCOA_PRESS\nPRINTER_MODEL_MINICHEF\nPRINTER_MATERIAL_PASTE
output_filename_format = {input_filename_base}_{nozzle_diameter[initial_tool]}n_{print_time}_{round(total_weight)}g.gcode
[print:Cocoa Press (0.5mm layerheight)]
inherit = *common*
inherits = *common*
avoid_crossing_curled_overhangs = 0
avoid_crossing_perimeters = 0
avoid_crossing_perimeters_max_detour = 0
@ -89,7 +89,6 @@ infill_extrusion_width = 0
infill_first = 0
infill_overlap = 50%
infill_speed = 40
inherits =
interface_shells = 0
ironing = 0
ironing_flowrate = 15%
@ -206,7 +205,7 @@ wipe_tower_y = 140
xy_size_compensation = 0
[print:Cocoa Press (1.0mm layerheight)]
inherit = *common*
inherits = *common*
avoid_crossing_curled_overhangs = 0
avoid_crossing_perimeters = 0
avoid_crossing_perimeters_max_detour = 0
@ -261,7 +260,6 @@ infill_extrusion_width = 0
infill_first = 0
infill_overlap = 70%
infill_speed = 40
inherits =
interface_shells = 0
ironing = 0
ironing_flowrate = 15%
@ -387,7 +385,7 @@ end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n"
extrusion_multiplier = 1
fan_always_on = 0
fan_below_layer_time = 60
filament_colour = #7B3E00
filament_colour = #3D2113
filament_cooling_final_speed = 3.4
filament_cooling_initial_speed = 2.2
filament_cooling_moves = 4
@ -441,6 +439,8 @@ filament_settings_id = "Cocoa Press Chocolate"
filament_type = CHOCOLATE
compatible_printers =
compatible_printers_condition = printer_notes=~/.*PRINTER_VENDOR_COCOA_PRESS.*/
compatible_prints =
compatible_prints_condition = printer_notes=~/.PRINTER_MODEL_MINICHEF.*/
[printer:*0.8mm*]
printer_variant = 0.8
@ -449,7 +449,7 @@ autoemit_temperature_commands = 0
bed_shape = 0x0,140x0,140x150,0x150
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n\n
between_objects_gcode =
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM17; enable steppers so that the user can change cores without having the extruder or bed slip or move as easily.\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
cooling_tube_length = 5
cooling_tube_retraction = 91.5
deretract_speed = 15
@ -522,7 +522,7 @@ autoemit_temperature_commands = 0
bed_shape = 0x0,140x0,140x150,0x150
before_layer_gcode = ;BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n\n
between_objects_gcode =
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
color_change_gcode = ;G1 E-.05 F900\n;G1 X2.5 Y2.5 F4500 ;Move to the side\nM17; enable steppers so that the user can change cores without having the extruder or bed slip or move as easily.\nM25 load new chocolate ;pause for user\n;G1 E.06 F900\n;G1 X2.6 Y2.6 F4500
cooling_tube_length = 5
cooling_tube_retraction = 91.5
default_print_profile = 1.0
@ -600,5 +600,5 @@ printer_model = Cocoa_Press
[printer:*common*]
default_filament_profile = "Cocoa Press Chocolates"
printer_notes = PRINTER_VENDOR_COCOA_PRESS\nPRINTER_MODEL_MINICHEF\nPRINTER_MATERIAL_PASTE
printer_notes = PRINTER_VENDOR_COCOA_PRESS\nPRINTER_MODEL_MINICHEF\nPRINTER_MATERIAL_PASTE\nNO_TEMPLATES
gcode_flavor = marlin2

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -1,2 +1,3 @@
min_slic3r_version = 2.6.0-beta2
1.0.1 Speed profile has been added
1.0.0 Initial version

View File

@ -5,7 +5,7 @@
name = Trimaker
# Configuration version of this file. Config file will only be installed, if the config_version differs.
# This means, the server may force the PrusaSlicer configuration to be downgraded.
config_version = 1.0.0
config_version = 1.0.1
# Where to get the updates from?
config_update_url = https://files.prusa3d.com/wp-content/uploads/repository/PrusaSlicer-settings-master/live/Trimaker/
# changelog_url =
@ -58,7 +58,7 @@ brim_width = 0
clip_multipart_objects = 1
compatible_printers =
complete_objects = 0
default_acceleration = 1000
default_acceleration = 1500
dont_support_bridges = 1
elefant_foot_compensation = 0
ensure_vertical_shell_thickness = 1
@ -159,7 +159,7 @@ wipe_tower_width = 60
wipe_tower_x = 170
wipe_tower_y = 140
xy_size_compensation = 0
infill_acceleration = 1000
infill_acceleration = 1500
external_perimeter_speed = 30
perimeter_speed = 45
solid_infill_speed = 40
@ -220,6 +220,23 @@ inherits = *0.20mm*
# alias = 0.20mm NORMAL 0,4
compatible_printers_condition = nozzle_diameter[0]==0.4
[print:0.2 Layer - 0,4 Nozzle - Speed]
inherits = *0.20mm*
# alias = 0.20mm NORMAL 0,4
first_layer_speed = 30
perimeter_speed = 75
small_perimeter_speed = 100
external_perimeter_speed = 60
infill_speed = 175
solid_infill_speed = 125
top_solid_infill_speed = 125
support_material_speed = 75
bridge_speed = 75
gap_fill_speed = 75
max_print_speed = 250
compatible_printers_condition = printer_model=="Trimaker Nebula Cloud" and nozzle_diameter[0]==0.4 or printer_model=="Trimaker Nebula" and nozzle_diameter[0]==0.4
[print:0.3 Layer - 0,4 Nozzle]
inherits = *0.30mm*
# alias = 0.30mm DRAFT 0,4
@ -240,7 +257,7 @@ filament_notes = ""
filament_settings_id = ""
filament_soluble = 0
min_print_speed = 15
slowdown_below_layer_time = 20
slowdown_below_layer_time = 0
[filament:*PLA*]
inherits = *common*
@ -264,6 +281,13 @@ temperature = 200
inherits = *PLA*
filament_vendor = Generic
[filament:Speed PLA @Trimaker Nebula Cloud]
inherits = *PLA*
first_layer_temperature = 230
temperature = 230
filament_vendor = Generic
#//////////////////////////////////////////////#
#---------------# Nozzle sizes #---------------#
#//////////////////////////////////////////////#
@ -292,16 +316,16 @@ remaining_times = 0
machine_max_acceleration_e = 5000,5000
machine_max_acceleration_extruding = 1250,12500
machine_max_acceleration_retracting = 1250,1250
machine_max_acceleration_x = 1000,960
machine_max_acceleration_y = 1000,960
machine_max_acceleration_x = 2500,2500
machine_max_acceleration_y = 2500,2500
machine_max_acceleration_z = 200,200
machine_max_feedrate_e = 120,120
machine_max_feedrate_x = 200,100
machine_max_feedrate_y = 200,100
machine_max_feedrate_x = 250
machine_max_feedrate_y = 250
machine_max_feedrate_z = 12,12
machine_max_jerk_e = 4.5,4.5
machine_max_jerk_x = 8,8
machine_max_jerk_y = 8,8
machine_max_jerk_x = 20
machine_max_jerk_y = 20
machine_max_jerk_z = 0.4,0.4
machine_min_extruding_rate = 0
machine_min_travel_rate = 0
@ -326,8 +350,8 @@ retract_speed = 35
serial_port =
serial_speed = 250000
single_extruder_multi_material = 0
start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0\nG29 ; bed leveling\nM500\nG1 Z0.15 F2400\nG1 F2000 X0.5 Y0.5 Z0.300\nG1 F900 X0.5 Y51.5 E2.56436 ; intro line\nG92 E0.0
end_gcode =;Trimaker Nebula End Code\n M107; Apagamos fan\n G90\n G92 E0\n G1 X0 Y200\n G91\n G1 Z5\n G92 E0\n M140 S0; Enfriamos\n M104 S0; Enfriamos\n M84\n G90\n M117 Impresion finalizada\n M300 S440 P700\n
start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0\nG29 ; bed leveling\nM500\nG1 F3000 X0.5 Y0.5\nG1 Z0.300\nG1 F900 X0.5 Y51.5 E2.56436 ; intro line\nG92 E0.0
end_gcode =;printing object ENDGCODE\n M107; Apagamos fan\n G90\n G92 E0\n G1 X0 Y200\n G91\n G1 Z5\n G92 E0\n M140 S0; Enfriamos\n M104 S0; Enfriamos\n M84\n G90\n M117 Impresion finalizada\n M300 S440 P700\n
toolchange_gcode =
use_firmware_retraction = 0
use_relative_e_distances = 1
@ -347,7 +371,7 @@ printer_model = Trimaker Nebula Cloud
inherits = *common*
bed_shape = 0x0,230x0,230x230,0x230
max_print_height = 260
start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0\nG1 Z0.15 F2400\nG1 F200 X0.5 Y0.5 Z0.300\n G1 F900 X0.5 Y51.5 E2.56436 ; intro line\nG92 E0.0
start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG92 E0.0\nG1 F3000 X0.5 Y0.5\nG1 Z0.300\nG1 F900 X0.5 Y51.5 E2.56436 ; intro line\nG92 E0.0
printer_model = Trimaker Nebula
[printer:*Trimaker Cosmos II*]

View File

@ -791,15 +791,10 @@ void GUI_App::post_init()
this->mainframe->load_config_file(this->init_params->load_configs.back());
// If loading a 3MF file, the config is loaded from the last one.
if (!this->init_params->input_files.empty()) {
#if 1 // #ysFIXME_delete_after_test_of
wxArrayString fns;
for (const std::string& name : this->init_params->input_files)
fns.Add(from_u8(name));
if (plater()->load_files(fns) && this->init_params->input_files.size() == 1) {
#else
const std::vector<size_t> res = this->plater()->load_files(this->init_params->input_files, true, true);
if (!res.empty() && this->init_params->input_files.size() == 1) {
#endif
// Update application titlebar when opening a project file
const std::string& filename = this->init_params->input_files.front();
if (boost::algorithm::iends_with(filename, ".amf") ||
@ -1247,7 +1242,6 @@ bool GUI_App::on_init_inner()
if (! older_data_dir_path.empty()) {
preset_bundle->import_newer_configs(older_data_dir_path);
//app_config->save(); // It looks like redundant call of save. ysFIXME delete after testing
}
if (is_editor()) {

View File

@ -1522,12 +1522,7 @@ void ObjectList::load_subobject(ModelVolumeType type, bool from_galery/* = false
take_snapshot((type == ModelVolumeType::MODEL_PART) ? _L("Load Part") : _L("Load Modifier"));
std::vector<ModelVolume*> volumes;
// ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common
/*
if (type == ModelVolumeType::MODEL_PART)
load_part(*(*m_objects)[obj_idx], volumes, type, from_galery);
else*/
load_modifier(input_files, *(*m_objects)[obj_idx], volumes, type, from_galery);
load_from_files(input_files, *(*m_objects)[obj_idx], volumes, type, from_galery);
if (volumes.empty())
return;
@ -1547,72 +1542,9 @@ void ObjectList::load_subobject(ModelVolumeType type, bool from_galery/* = false
selection_changed();
}
/*
void ObjectList::load_part(ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery = false)
void ObjectList::load_from_files(const wxArrayString& input_files, ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery)
{
if (type != ModelVolumeType::MODEL_PART)
return;
wxWindow* parent = wxGetApp().tab_panel()->GetPage(0);
wxArrayString input_files;
if (from_galery) {
GalleryDialog dlg(this);
if (dlg.ShowModal() == wxID_CLOSE)
return;
dlg.get_input_files(input_files);
if (input_files.IsEmpty())
return;
}
else
wxGetApp().import_model(parent, input_files);
wxProgressDialog dlg(_L("Loading") + dots, "", 100, wxGetApp().mainframe wxPD_AUTO_HIDE);
wxBusyCursor busy;
for (size_t i = 0; i < input_files.size(); ++i) {
std::string input_file = input_files.Item(i).ToUTF8().data();
dlg.Update(static_cast<int>(100.0f * static_cast<float>(i) / static_cast<float>(input_files.size())),
_L("Loading file") + ": " + from_path(boost::filesystem::path(input_file).filename()));
dlg.Fit();
Model model;
try {
model = Model::read_from_file(input_file);
}
catch (std::exception &e) {
auto msg = _L("Error!") + " " + input_file + " : " + e.what() + ".";
show_error(parent, msg);
exit(1);
}
for (auto object : model.objects) {
Vec3d delta = Vec3d::Zero();
if (model_object.origin_translation != Vec3d::Zero()) {
object->center_around_origin();
delta = model_object.origin_translation - object->origin_translation;
}
for (auto volume : object->volumes) {
volume->translate(delta);
auto new_volume = model_object.add_volume(*volume, type);
new_volume->name = boost::filesystem::path(input_file).filename().string();
// set a default extruder value, since user can't add it manually
new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
added_volumes.push_back(new_volume);
}
}
}
}
*/
void ObjectList::load_modifier(const wxArrayString& input_files, ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery)
{
// ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common
//if (type == ModelVolumeType::MODEL_PART)
// return;
wxWindow* parent = wxGetApp().tab_panel()->GetPage(0);
wxProgressDialog dlg(_L("Loading") + dots, "", 100, wxGetApp().mainframe, wxPD_AUTO_HIDE);

View File

@ -254,9 +254,7 @@ public:
bool is_instance_or_object_selected();
bool is_selected_object_cut();
void load_subobject(ModelVolumeType type, bool from_galery = false);
// ! ysFIXME - delete commented code after testing and rename "load_modifier" to something common
//void load_part(ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery = false);
void load_modifier(const wxArrayString& input_files, ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery = false);
void load_from_files(const wxArrayString& input_files, ModelObject& model_object, std::vector<ModelVolume*>& added_volumes, ModelVolumeType type, bool from_galery = false);
void load_generic_subobject(const std::string& type_name, const ModelVolumeType type);
void load_shape_object(const std::string &type_name);
void load_shape_object_from_gallery();

View File

@ -209,11 +209,9 @@ public:
wxStaticText *info_size;
wxStaticText *info_volume;
wxStaticText *info_facets;
// wxStaticText *info_materials;
wxStaticText *info_manifold;
wxStaticText *label_volume;
// wxStaticText *label_materials; // ysFIXME - delete after next release if anyone will not complain about this
std::vector<wxStaticText *> sla_hidden_items;
bool showing_manifold_warning_icon;
@ -1115,10 +1113,14 @@ void Sidebar::update_presets(Preset::Type preset_type)
case Preset::TYPE_PRINTER:
{
update_all_preset_comboboxes();
#if 1 // #ysFIXME_delete_after_test_of >> it looks like CallAfter() is no need [issue with disapearing of comboboxes are not reproducible]
p->show_preset_comboboxes();
#else
// CallAfter is really needed here to correct layout of the preset comboboxes,
// when printer technology is changed during a project loading AND/OR switching the application mode.
// Otherwise, some of comboboxes are invisible
CallAfter([this]() { p->show_preset_comboboxes(); });
#endif
break;
}