@@ -387,6 +387,14 @@ namespace {
387387 const int max_temp = 1500;
388388};
389389
390+ ConfigOption *disable_defaultoption(ConfigOption *option) {
391+ return option->set_can_be_disabled()->set_enabled(false);
392+ }
393+
394+ ConfigOptionVectorBase *disable_defaultoption(ConfigOptionVectorBase *option) {
395+ return (ConfigOptionVectorBase *)option->set_can_be_disabled()->set_enabled(false);
396+ }
397+
390398PrintConfigDef::PrintConfigDef()
391399{
392400 this->init_common_params();
@@ -824,8 +832,6 @@ void PrintConfigDef::init_fff_params()
824832 { "height", L("Layer height") },
825833 { "flow", L("Keep current flow") },
826834 });
827- def->min = -1;
828- def->max = 100;
829835 def->mode = comAdvancedE | comSuSi;
830836 def->set_default_value(new ConfigOptionEnum<BridgeType>{ BridgeType::btFromNozzle });
831837
@@ -1362,7 +1368,7 @@ void PrintConfigDef::init_fff_params()
13621368 def->max = 100;
13631369 def->is_vector_extruder = true;
13641370 def->can_be_disabled = true;
1365- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
1371+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
13661372 def->aliases = { "min_fan_speed" }; // only if "fan_always_on"
13671373
13681374 def = this->add("default_print_profile", coString);
@@ -1660,7 +1666,7 @@ void PrintConfigDef::init_fff_params()
16601666 def->mode = comAdvancedE | comSuSi;
16611667 def->is_vector_extruder = true;
16621668 def->can_be_disabled = true;
1663- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
1669+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
16641670
16651671 def = this->add("external_perimeter_overlap", coPercent);
16661672 def->label = L("external perimeter overlap");
@@ -2904,7 +2910,7 @@ void PrintConfigDef::init_fff_params()
29042910 def->mode = comExpert | comSuSi;
29052911 def->is_vector_extruder = true;
29062912 def->can_be_disabled = true;
2907- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
2913+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
29082914
29092915 def = this->add("gap_fill_flow_match_perimeter", coPercent);
29102916 def->label = L("Cap with perimeter flow");
@@ -3338,7 +3344,7 @@ void PrintConfigDef::init_fff_params()
33383344 def->mode = comExpert | comSuSi;
33393345 def->is_vector_extruder = true;
33403346 def->can_be_disabled = true;
3341- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
3347+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
33423348
33433349 def = this->add("infill_first", coBool);
33443350 def->label = L("Infill before perimeters");
@@ -3436,7 +3442,7 @@ void PrintConfigDef::init_fff_params()
34363442 def->mode = comAdvancedE | comSuSi;
34373443 def->is_vector_extruder = true;
34383444 def->can_be_disabled = true;
3439- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
3445+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
34403446 def->aliases = { "bridge_internal_fan_speed" };
34413447
34423448 def = this->add("internal_bridge_speed", coFloatOrPercent);
@@ -4144,7 +4150,7 @@ void PrintConfigDef::init_fff_params()
41444150 def->mode = comAdvancedE | comSuSi;
41454151 def->is_vector_extruder = true;
41464152 def->can_be_disabled = true;
4147- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
4153+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
41484154
41494155 def = this->add("overhangs_max_slope", coFloatOrPercent);
41504156 def->label = L("Overhangs max slope");
@@ -4164,23 +4170,25 @@ void PrintConfigDef::init_fff_params()
41644170 def->label = L("Bridge max length");
41654171 def->category = OptionCategory::slicing;
41664172 def->tooltip = L("Maximum distance for bridges. If the distance is over that, it will be considered as overhangs for 'overhangs_max_slope'."
4167- "\nSet to -1 to accept all distances."
4173+ "\nIf disabled, accept all distances."
41684174 "\nSet to 0 to ignore bridges.");
41694175 def->sidetext = L("mm");
4170- def->min = -1;
4176+ def->min = 0;
4177+ def->can_be_disabled = true;
41714178 def->mode = comExpert | comSuSi;
4172- def->set_default_value(new ConfigOptionFloat(-1 ));
4179+ def->set_default_value(disable_defaultoption( new ConfigOptionFloat(0) ));
41734180
41744181 def = this->add("overhangs_bridge_upper_layers", coInt);
41754182 def->label = L("Consider upper bridges");
41764183 def->category = OptionCategory::slicing;
41774184 def->tooltip = L("Don't put overhangs if the area will filled in next layer by bridges."
4178- "\nSet to -1 to accept all upper layers."
4185+ "\nIf disabled, accept all upper layers."
41794186 "\nSet to 0 to only consider our layer bridges.");
41804187 def->sidetext = L("layers");
4181- def->min = -1;
4188+ def->min = 0;
4189+ def->can_be_disabled = true;
41824190 def->mode = comExpert | comSuSi;
4183- def->set_default_value(new ConfigOptionInt(0 ));
4191+ def->set_default_value(new ConfigOptionInt(2 ));
41844192
41854193 def = this->add("overhangs_speed", coFloatOrPercent);
41864194 def->label = L("Overhangs");
@@ -4409,7 +4417,7 @@ void PrintConfigDef::init_fff_params()
44094417 def->mode = comExpert | comSuSi;
44104418 def->is_vector_extruder = true;
44114419 def->can_be_disabled = true;
4412- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
4420+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
44134421
44144422 def = this->add("perimeter_loop", coBool);
44154423 def->label = L("Perimeters loop");
@@ -4499,15 +4507,16 @@ void PrintConfigDef::init_fff_params()
44994507 def->category = OptionCategory::perimeter;
45004508 def->tooltip = L("This option sets the number of perimeters to have over holes."
45014509 " Note that if a hole-perimeter fuse with the contour, then it will go around like a contour perimeter.."
4502- "\nSet to -1 to deactivate, then holes will have the same number of perimeters as contour."
4510+ "\nIf disabled, holes will have the same number of perimeters as contour."
45034511 "\nNote that Slic3r may increase this number automatically when it detects "
45044512 "sloping surfaces which benefit from a higher number of perimeters "
45054513 "if the Extra Perimeters option is enabled.");
45064514 def->sidetext = L("(minimum).");
4507- def->min = -1 ;
4515+ def->min = 0 ;
45084516 def->max = 10000;
4517+ def->can_be_disabled = true;
45094518 def->mode = comAdvancedE | comSuSi;
4510- def->set_default_value(new ConfigOptionInt(-1 ));
4519+ def->set_default_value(disable_defaultoption( new ConfigOptionInt(0) ));
45114520
45124521 def = this->add("post_process", coStrings);
45134522 def->label = L("Post-processing scripts");
@@ -5399,7 +5408,7 @@ void PrintConfigDef::init_fff_params()
53995408 def->mode = comExpert | comSuSi;
54005409 def->is_vector_extruder = true;
54015410 def->can_be_disabled = true;
5402- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
5411+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
54035412
54045413 def = this->add("solid_infill_speed", coFloatOrPercent);
54055414 def->label = L("Solid");
@@ -5777,7 +5786,7 @@ void PrintConfigDef::init_fff_params()
57775786 def->mode = comExpert | comSuSi;
57785787 def->is_vector_extruder = true;
57795788 def->can_be_disabled = true;
5780- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
5789+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
57815790
57825791 def = this->add("support_material_interface_angle", coFloat);
57835792 def->label = L("Pattern angle");
@@ -5813,7 +5822,7 @@ void PrintConfigDef::init_fff_params()
58135822 def->mode = comAdvancedE | comSuSi;
58145823 def->is_vector_extruder = true;
58155824 def->can_be_disabled = true;
5816- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
5825+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
58175826
58185827
58195828 def = this->add("support_material_interface_contact_loops", coBool);
@@ -5850,20 +5859,20 @@ void PrintConfigDef::init_fff_params()
58505859 def = this->add("support_material_bottom_interface_layers", coInt);
58515860 def->label = L("Bottom interface layers");
58525861 def->category = OptionCategory::support;
5853- def->tooltip = L("Number of interface layers to insert between the object(s) and support material. "
5854- "Set to -1 to use support_material_interface_layers ");
5862+ def->tooltip = L("Number of interface layers to insert between the object(s) and support material."
5863+ "\nIf disabled, support_material_interface_layers value is used ");
58555864 def->sidetext = L("layers");
5856- def->min = -1;
5865+ def->min = 0;
5866+ def->can_be_disabled = true;
58575867 def->set_enum_values(ConfigOptionDef::GUIType::i_enum_open, {
58585868 //TRN Print Settings: "Bottom interface layers". Have to be as short as possible
5859- { "-1", L("Same as top") },
58605869 { "0", L("0 (off)") },
58615870 { "1", L("1 (light)") },
58625871 { "2", L("2 (default)") },
58635872 { "3", L("3 (heavy)") }
58645873 });
58655874 def->mode = comAdvancedE | comPrusa;
5866- def->set_default_value(new ConfigOptionInt(-1 ));
5875+ def->set_default_value(disable_defaultoption( new ConfigOptionInt(0) ));
58675876
58685877 def = this->add("support_material_closing_radius", coFloat);
58695878 def->label = L("Closing radius");
@@ -6360,7 +6369,7 @@ void PrintConfigDef::init_fff_params()
63606369 def->mode = comAdvancedE | comSuSi;
63616370 def->is_vector_extruder = true;
63626371 def->can_be_disabled = true;
6363- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts({ 100 }))->set_can_be_disabled()->set_enabled(false ));
6372+ def->set_default_value(disable_defaultoption( new ConfigOptionInts({ 100 })));
63646373
63656374 def = this->add("top_infill_extrusion_width", coFloatOrPercent);
63666375 def->label = L("Top solid infill");
@@ -7680,7 +7689,7 @@ void PrintConfigDef::init_sla_params()
76807689 def->max = max_temp;
76817690 def->can_be_disabled = true;
76827691 def->mode = comSimpleAE | comPrusa;
7683- def->set_default_value((ConfigOptionInts*)( new ConfigOptionInts{30})->set_can_be_disabled()->set_enabled(false ));
7692+ def->set_default_value(disable_defaultoption( new ConfigOptionInts{30}));
76847693
76857694 def = this->add("bottle_volume", coFloat);
76867695 def->label = L("Bottle volume");
@@ -8407,6 +8416,13 @@ void PrintConfigDef::handle_legacy(t_config_option_key &opt_key, std::string &va
84078416 }
84088417 }
84098418
8419+ if (value == "-1") {
8420+ if ("overhangs_bridge_threshold" == opt_key) {value = "!0";}
8421+ if ("overhangs_bridge_upper_layers" == opt_key) {value = "!2";}
8422+ if ("perimeters_hole" == opt_key) {value = "!0";}
8423+ if ("support_material_bottom_interface_layers" == opt_key) {value = "!0";}
8424+ }
8425+
84108426 if (!print_config_def.has(opt_key)) {
84118427 //check the aliases
84128428 for(const auto& entry : print_config_def.options) {
0 commit comments