From c47fc4529ee2ee4cb446240b91cc7060b20e061e Mon Sep 17 00:00:00 2001 From: ExPikaPaka Date: Thu, 4 Jun 2026 08:40:00 +0200 Subject: [PATCH] Wire in generated files --- src/libslic3r/Preset.cpp | 2 +- src/libslic3r/Print.cpp | 20 +- src/libslic3r/PrintConfig.cpp | 5 +- src/slic3r/GUI/Tab.cpp | 964 +--------------------------------- src/slic3r/GUI/Tab.hpp | 6 + 5 files changed, 33 insertions(+), 964 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 90a2300cbe..4c75ac578c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -967,7 +967,7 @@ bool Preset::has_cali_lines(PresetBundle* preset_bundle) return false; } -#include "../../codegen/generated/Preset_options_generated.cpp" +#include "../slic3r/GUI/generated/Preset_options_generated.cpp" static std::vector s_Preset_machine_limits_options { diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 5af416ae70..9e92b78429 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1,4 +1,4 @@ -#include "Config.hpp" +#include "Config.hpp" #include "Exception.hpp" #include "Print.hpp" #include "BoundingBox.hpp" @@ -96,7 +96,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n if (opt_keys.empty()) return false; -#include "../../codegen/generated/Invalidation_generated.cpp" +#include "../slic3r/GUI/generated/Invalidation_generated.cpp" std::vector steps; std::vector osteps; @@ -111,7 +111,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n if (it_os != s_object_steps_map.end()) osteps.insert(osteps.end(), it_os->second.begin(), it_os->second.end()); } else { - // Unknown option — conservatively invalidate all steps + // Unknown option — conservatively invalidate all steps invalidated |= this->invalidate_all_steps(); } } @@ -445,7 +445,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print #if 0 //do not sort anymore, use the order in object list auto bed_points = get_bed_shape(print_config); float bed_width = bed_points[1].x() - bed_points[0].x(); - // 如果扩大以后的多边形的距离小于这个值,就需要严格保证从左到右的打印顺序,否则会撞工具头右侧 + // 如果扩大以后的多边形的距离小于这个值,就需要严格保证从左到右的打印顺序,否则会撞工具头右侧 float unsafe_dist = scale_(print_config.extruder_clearance_max_radius.value - print_config.extruder_clearance_radius.value); struct VecHash { @@ -479,7 +479,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print auto inter_max = std::min(ly2, ry2); auto inter_y = inter_max - inter_min; - // 如果y方向的重合超过轮廓的膨胀量,说明两个物体在一行,应该先打左边的物体,即先比较二者的x坐标。 + // 如果y方向的重合超过轮廓的膨胀量,说明两个物体在一行,应该先打左边的物体,即先比较二者的xеќђж ‡гЂ‚ // If the overlap in the y direction exceeds the expansion of the contour, it means that the two objects are in a row and the object on the left should be hit first, that is, the x coordinates of the two should be compared first. if (inter_y > scale_(0.5 * print.config().extruder_clearance_radius.value)) { if (std::max(rx1 - lx2, lx1 - rx2) < unsafe_dist) { @@ -495,13 +495,13 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print } } if (l.height > hc1 && r.height < hc1) { - // 当前物体超过了顶盖高度,必须后打 + // 当前物体超过了顶盖高度,必须后打 left_right_pair.insert({j, i}); BOOST_LOG_TRIVIAL(debug) << "height>hc1, print_instance " << r.print_instance->model_instance->get_object()->name << "(" << r.arrange_score << ")" << " -> " << l.print_instance->model_instance->get_object()->name << "(" << l.arrange_score << ")"; } else if (l.height > hc2 && l.height > r.height && l.arrange_scorehc2, print_instance " << inst.print_instance->model_instance->get_object()->name @@ -511,8 +511,8 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print } } } - // 多做几次代价传播,因为前一次有些值没有更新。 - // TODO 更好的办法是建立一颗树,一步到位。不过我暂时没精力搞,先就这样吧 + // 多做几次代价传播,因为前一次有些值没有更新。 + // TODO 更好的办法是建立一颗树,一步到位。不过我暂时没精力搞,先就这样吧 for (int k=0;k<5;k++) for (auto p : left_right_pair) { auto &l = print_instance_with_bounding_box[p(0)]; @@ -580,7 +580,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print for (int k = 0; k < print_instance_count; k++) { auto inst = print_instance_with_bounding_box[k].print_instance; - // 只需要考虑喷嘴到滑杆的偏移量,这个比整个工具头的碰撞半径要小得多 + // 只需要考虑喷嘴到滑杆的偏移量,这个比整个工具头的碰撞半径要小得多 // Only the offset from the nozzle to the slide bar needs to be considered, which is much smaller than the collision radius of the entire tool head. auto bbox = print_instance_with_bounding_box[k].bounding_box.inflated(-scale_(0.5 * print.config().extruder_clearance_radius.value + object_skirt_offset)); auto iy1 = bbox.min.y(); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 89701e1efa..cb81ca02f6 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -897,10 +897,11 @@ void PrintConfigDef::init_common_params() void PrintConfigDef::init_fff_params() { ConfigOptionDef* def; -#include "../../codegen/generated/PrintConfigDef_generated.cpp" +#include "../slic3r/GUI/generated/PrintConfigDef_generated.cpp" + } -#include "../../codegen/generated/OptionKeys_generated.cpp" +#include "../slic3r/GUI/generated/OptionKeys_generated.cpp" void PrintConfigDef::init_extruder_option_keys() { diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index eb95d18e1b..cc7ba4a6a5 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1,4 +1,4 @@ -// #include "libslic3r/GCodeSender.hpp" +// #include "libslic3r/GCodeSender.hpp" //#include "slic3r/Utils/Serial.hpp" #include "Tab.hpp" #include "PresetHints.hpp" @@ -86,6 +86,10 @@ int mode_to_selection(ConfigOptionMode mode) // Forward declaration for early use; definitions live later in this translation unit. static void validate_custom_gcode_cb(Tab* tab, const wxString& title, const t_config_option_key& opt_key, const boost::any& value); +// TabLayout_generated.cpp must be included AFTER the forward declaration of +// validate_custom_gcode_cb so the inline layout functions can call it. +#include "generated/TabLayout_generated.cpp" + static const std::vector plate_keys = { "curr_bed_type", "skirt_start_angle", "first_layer_print_sequence", "first_layer_sequence_choice", "other_layers_print_sequence", "other_layers_sequence_choice", "print_sequence", "spiral_mode"}; void Tab::Highlighter::set_timer_owner(wxEvtHandler* owner, int timerid/* = wxID_ANY*/) @@ -233,7 +237,7 @@ void Tab::create_preset_tab() if (m_type == Preset::TYPE_PRINTER && !m_presets_choice->is_selected_physical_printer()) m_preset_bundle->physical_printers.unselect_printer(); - // select preset — prefer stored internal name to avoid alias collisions + // select preset — prefer stored internal name to avoid alias collisions wxString stored_name = m_presets_choice->GetItemAlias(selection); std::string preset_name; if (!stored_name.empty()) { @@ -2293,480 +2297,7 @@ void TabPrint::build() if (m_presets == nullptr) m_presets = &m_preset_bundle->prints; load_initial_data(); - - auto page = add_options_page(L("Quality"), "custom-gcode_quality"); // ORCA: icon only visible on placeholders - auto optgroup = page->new_optgroup(L("Layer height"), L"param_layer_height"); - optgroup->append_single_option_line("layer_height","quality_settings_layer_height"); - optgroup->append_single_option_line("initial_layer_print_height","quality_settings_layer_height"); - - optgroup = page->new_optgroup(L("Line width"), L"param_line_width"); - optgroup->append_single_option_line("line_width","quality_settings_line_width"); - optgroup->append_single_option_line("initial_layer_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("outer_wall_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("inner_wall_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("top_surface_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("sparse_infill_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("internal_solid_infill_line_width","quality_settings_line_width"); - optgroup->append_single_option_line("support_line_width","quality_settings_line_width"); - - optgroup = page->new_optgroup(L("Seam"), L"param_seam"); - optgroup->append_single_option_line("seam_position", "quality_settings_seam#seam-position"); - optgroup->append_single_option_line("staggered_inner_seams", "quality_settings_seam#staggered-inner-seams"); - optgroup->append_single_option_line("seam_gap","quality_settings_seam#seam-gap"); - optgroup->append_single_option_line("seam_slope_type", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_conditional", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("scarf_angle_threshold", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("scarf_overhang_threshold", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("scarf_joint_speed", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_start_height", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_entire_loop", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_min_length", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_steps", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("scarf_joint_flow_ratio", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("seam_slope_inner_walls", "quality_settings_seam#scarf-joint-seam"); - optgroup->append_single_option_line("role_based_wipe_speed","quality_settings_seam#role-based-wipe-speed"); - optgroup->append_single_option_line("wipe_speed", "quality_settings_seam#wipe-speed"); - optgroup->append_single_option_line("wipe_on_loops","quality_settings_seam#wipe-on-loop-inward-movement"); - optgroup->append_single_option_line("wipe_before_external_loop","quality_settings_seam#wipe-before-external"); - - - optgroup = page->new_optgroup(L("Precision"), L"param_precision"); - optgroup->append_single_option_line("slice_closing_radius", "quality_settings_precision#slice-gap-closing-radius"); - optgroup->append_single_option_line("resolution", "quality_settings_precision#resolution"); - optgroup->append_single_option_line("enable_arc_fitting", "quality_settings_precision#arc-fitting"); - optgroup->append_single_option_line("xy_hole_compensation", "quality_settings_precision#x-y-compensation"); - optgroup->append_single_option_line("xy_contour_compensation", "quality_settings_precision#x-y-compensation"); - optgroup->append_single_option_line("elefant_foot_compensation", "quality_settings_precision#elephant-foot-compensation"); - optgroup->append_single_option_line("elefant_foot_layers_density", "quality_settings_precision#elephant-foot-compensation-density"); - optgroup->append_single_option_line("elefant_foot_compensation_layers", "quality_settings_precision#elephant-foot-compensation"); - optgroup->append_single_option_line("precise_outer_wall", "quality_settings_precision#precise-wall"); - optgroup->append_single_option_line("precise_z_height", "quality_settings_precision#precise-z-height"); - optgroup->append_single_option_line("hole_to_polyhole", "quality_settings_precision#polyholes"); - optgroup->append_single_option_line("hole_to_polyhole_threshold", "quality_settings_precision#polyholes"); - optgroup->append_single_option_line("hole_to_polyhole_twisted", "quality_settings_precision#polyholes"); - - optgroup = page->new_optgroup(L("Ironing"), L"param_ironing"); - optgroup->append_single_option_line("ironing_type", "quality_settings_ironing#type"); - optgroup->append_single_option_line("ironing_pattern", "quality_settings_ironing#pattern"); - optgroup->append_single_option_line("ironing_flow", "quality_settings_ironing#flow"); - optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#line-spacing"); - optgroup->append_single_option_line("ironing_inset", "quality_settings_ironing#inset"); - optgroup->append_single_option_line("ironing_angle", "quality_settings_ironing#angle-offset"); - optgroup->append_single_option_line("ironing_angle_fixed", "quality_settings_ironing#fixed-angle"); - - optgroup = page->new_optgroup("Z Contouring", L"param_advanced"); - optgroup->append_single_option_line("zaa_enabled", "quality_settings_z_contouring"); - optgroup->append_single_option_line("zaa_minimize_perimeter_height", "quality_settings_z_contouring#minimize-wall-height-angle"); - optgroup->append_single_option_line("zaa_min_z", "quality_settings_z_contouring#minimum-z-height"); - optgroup->append_single_option_line("zaa_dont_alternate_fill_direction", "quality_settings_z_contouring#dont-alternate-fill-direction"); - // Orca: it's not used yet, so hide it in UI for now - // optgroup->append_single_option_line("ironing_expansion"); - - optgroup = page->new_optgroup(L("Wall generator"), L"param_wall_generator"); - optgroup->append_single_option_line("wall_generator", "quality_settings_wall_generator"); - optgroup->append_single_option_line("wall_transition_angle", "quality_settings_wall_generator#wall-transitioning-threshhold-angle"); - optgroup->append_single_option_line("wall_transition_filter_deviation", "quality_settings_wall_generator#wall-transitioning-filter-margin"); - optgroup->append_single_option_line("wall_transition_length", "quality_settings_wall_generator#wall-transitioning-length"); - optgroup->append_single_option_line("wall_distribution_count", "quality_settings_wall_generator#wall-distribution-count"); - optgroup->append_single_option_line("initial_layer_min_bead_width", "quality_settings_wall_generator#first-layer-minimum-wall-width"); - optgroup->append_single_option_line("min_bead_width", "quality_settings_wall_generator#minimum-wall-width"); - optgroup->append_single_option_line("min_feature_size", "quality_settings_wall_generator#minimum-feature-size"); - optgroup->append_single_option_line("min_length_factor", "quality_settings_wall_generator#minimum-wall-length"); - optgroup->append_single_option_line("wall_maximum_resolution", "quality_settings_wall_generator#maximum-wall-resolution"); - optgroup->append_single_option_line("wall_maximum_deviation", "quality_settings_wall_generator#maximum-wall-deviation"); - - optgroup = page->new_optgroup(L("Walls and surfaces"), L"param_wall_surface"); - optgroup->append_single_option_line("wall_sequence", "quality_settings_wall_and_surfaces#walls-printing-order"); - optgroup->append_single_option_line("is_infill_first", "quality_settings_wall_and_surfaces#print-infill-first"); - optgroup->append_single_option_line("wall_direction", "quality_settings_wall_and_surfaces#wall-loop-direction"); - optgroup->append_single_option_line("print_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("top_solid_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("bottom_solid_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("set_other_flow_ratios", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("first_layer_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("outer_wall_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("inner_wall_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("overhang_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("sparse_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("internal_solid_infill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("gap_fill_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("support_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("support_interface_flow_ratio", "quality_settings_wall_and_surfaces#surface-flow-ratio"); - optgroup->append_single_option_line("only_one_wall_first_layer", "quality_settings_wall_and_surfaces#only-one-wall"); - optgroup->append_single_option_line("only_one_wall_top", "quality_settings_wall_and_surfaces#only-one-wall"); - optgroup->append_single_option_line("min_width_top_surface", "quality_settings_wall_and_surfaces#threshold"); - optgroup->append_single_option_line("reduce_crossing_wall", "quality_settings_wall_and_surfaces#avoid-crossing-walls"); - optgroup->append_single_option_line("max_travel_detour_distance", "quality_settings_wall_and_surfaces#max-detour-length"); - - optgroup->append_single_option_line("small_area_infill_flow_compensation", "quality_settings_wall_and_surfaces#small-area-flow-compensation"); - Option option = optgroup->get_option("small_area_infill_flow_compensation_model"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = 15; - optgroup->append_single_option_line(option, "quality_settings_wall_and_surfaces#small-area-flow-compensation"); - - optgroup = page->new_optgroup(L("Bridging"), L"param_bridge"); - optgroup->append_single_option_line("bridge_flow", "quality_settings_bridging#flow-ratio"); - optgroup->append_single_option_line("internal_bridge_flow", "quality_settings_bridging#flow-ratio"); - optgroup->append_single_option_line("bridge_density", "quality_settings_bridging#bridge-density"); - optgroup->append_single_option_line("internal_bridge_density", "quality_settings_bridging#bridge-density"); - optgroup->append_single_option_line("thick_bridges", "quality_settings_bridging#thick-bridges"); - optgroup->append_single_option_line("thick_internal_bridges", "quality_settings_bridging#thick-bridges"); - optgroup->append_single_option_line("enable_extra_bridge_layer", "quality_settings_bridging#extra-bridge-layers"); - optgroup->append_single_option_line("dont_filter_internal_bridges", "quality_settings_bridging#filter-out-small-internal-bridges"); - optgroup->append_single_option_line("counterbore_hole_bridging", "quality_settings_bridging#bridge-counterbore-hole"); - - optgroup = page->new_optgroup(L("Overhangs"), L"param_overhang"); - optgroup->append_single_option_line("detect_overhang_wall", "quality_settings_overhangs#detect-overhang-wall"); - optgroup->append_single_option_line("make_overhang_printable", "quality_settings_overhangs#make-overhang-printable"); - optgroup->append_single_option_line("make_overhang_printable_angle", "quality_settings_overhangs#maximum-angle"); - optgroup->append_single_option_line("make_overhang_printable_hole_size", "quality_settings_overhangs#hole-area"); - optgroup->append_single_option_line("extra_perimeters_on_overhangs", "quality_settings_overhangs#extra-perimeters-on-overhangs"); - optgroup->append_single_option_line("overhang_reverse", "quality_settings_overhangs#reverse-on-even"); - optgroup->append_single_option_line("overhang_reverse_internal_only", "quality_settings_overhangs#reverse-internal-only"); - optgroup->append_single_option_line("overhang_reverse_threshold", "quality_settings_overhangs#reverse-threshold"); - - page = add_options_page(L("Strength"), "custom-gcode_strength"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Walls"), L"param_wall"); - optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loops"); - optgroup->append_single_option_line("alternate_extra_wall", "strength_settings_walls#alternate-extra-wall"); - optgroup->append_single_option_line("detect_thin_wall", "strength_settings_walls#detect-thin-wall"); - - optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell"); - - optgroup->append_single_option_line("top_shell_layers", "strength_settings_top_bottom_shells#shell-layers"); - optgroup->append_single_option_line("top_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); - optgroup->append_single_option_line("top_surface_density", "strength_settings_top_bottom_shells#surface-density"); - optgroup->append_single_option_line("top_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); - optgroup->append_single_option_line("bottom_shell_layers", "strength_settings_top_bottom_shells#shell-layers"); - optgroup->append_single_option_line("bottom_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); - optgroup->append_single_option_line("bottom_surface_density", "strength_settings_top_bottom_shells#surface-density"); - optgroup->append_single_option_line("bottom_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); - optgroup->append_single_option_line("top_bottom_infill_wall_overlap", "strength_settings_top_bottom_shells#infillwall-overlap"); - - optgroup = page->new_optgroup(L("Infill"), L"param_infill"); - optgroup->append_single_option_line("sparse_infill_density", "strength_settings_infill#sparse-infill-density"); - optgroup->append_single_option_line("fill_multiline", "strength_settings_infill#fill-multiline"); - optgroup->append_single_option_line("sparse_infill_pattern", "strength_settings_infill#sparse-infill-pattern"); - optgroup->append_single_option_line("gyroid_optimized", "strength_settings_patterns#gyroid-optimized"); - optgroup->append_single_option_line("infill_direction", "strength_settings_infill#direction"); - optgroup->append_single_option_line("sparse_infill_rotate_template", "strength_settings_infill_rotation_template_metalanguage"); - optgroup->append_single_option_line("skin_infill_density", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("skeleton_infill_density", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("infill_lock_depth", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("skin_infill_depth", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("skin_infill_line_width", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("skeleton_infill_line_width", "strength_settings_patterns#locked-zag"); - optgroup->append_single_option_line("symmetric_infill_y_axis", "strength_settings_infill#symmetric-infill-y-axis"); - optgroup->append_single_option_line("infill_shift_step", "strength_settings_patterns#cross-hatch"); - optgroup->append_single_option_line("lateral_lattice_angle_1", "strength_settings_patterns#lateral-lattice"); - optgroup->append_single_option_line("lateral_lattice_angle_2", "strength_settings_patterns#lateral-lattice"); - optgroup->append_single_option_line("infill_overhang_angle", "strength_settings_patterns#lateral-honeycomb"); - optgroup->append_single_option_line("infill_anchor_max", "strength_settings_infill#anchor"); - optgroup->append_single_option_line("infill_anchor", "strength_settings_infill#anchor"); - optgroup->append_single_option_line("internal_solid_infill_pattern", "strength_settings_infill#internal-solid-infill"); - optgroup->append_single_option_line("solid_infill_direction", "strength_settings_infill#direction"); - optgroup->append_single_option_line("solid_infill_rotate_template", "strength_settings_infill_rotation_template_metalanguage"); - optgroup->append_single_option_line("gap_fill_target", "strength_settings_infill#apply-gap-fill"); - optgroup->append_single_option_line("filter_out_gap_fill", "strength_settings_infill#filter-out-tiny-gaps"); - optgroup->append_single_option_line("infill_wall_overlap", "strength_settings_infill#infill-wall-overlap"); - - optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); - optgroup->append_single_option_line("align_infill_direction_to_model", "strength_settings_advanced#align-infill-direction-to-model"); - optgroup->append_single_option_line("extra_solid_infills", "strength_settings_infill#extra-solid-infill"); - optgroup->append_single_option_line("bridge_angle", "strength_settings_advanced#bridge-infill-direction"); - optgroup->append_single_option_line("internal_bridge_angle", "strength_settings_advanced#bridge-infill-direction"); // ORCA: Internal bridge angle override - optgroup->append_single_option_line("minimum_sparse_infill_area", "strength_settings_advanced#minimum-sparse-infill-threshold"); - optgroup->append_single_option_line("infill_combination", "strength_settings_advanced#infill-combination"); - optgroup->append_single_option_line("infill_combination_max_layer_height", "strength_settings_advanced#max-layer-height"); - optgroup->append_single_option_line("detect_narrow_internal_solid_infill", "strength_settings_advanced#detect-narrow-internal-solid-infill"); - optgroup->append_single_option_line("ensure_vertical_shell_thickness", "strength_settings_advanced#ensure-vertical-shell-thickness"); - - page = add_options_page(L("Speed"), "custom-gcode_speed"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("First layer speed"), L"param_speed_first", 15); - optgroup->append_single_option_line("initial_layer_speed", "speed_settings_initial_layer_speed#initial-layer"); - optgroup->append_single_option_line("initial_layer_infill_speed", "speed_settings_initial_layer_speed#initial-layer-infill"); - optgroup->append_single_option_line("initial_layer_travel_speed", "speed_settings_initial_layer_speed#initial-layer-travel-speed"); - optgroup->append_single_option_line("slow_down_layers", "speed_settings_initial_layer_speed#number-of-slow-layers"); - optgroup = page->new_optgroup(L("Other layers speed"), L"param_speed", 15); - optgroup->append_single_option_line("outer_wall_speed", "speed_settings_other_layers_speed#outer-wall"); - optgroup->append_single_option_line("inner_wall_speed", "speed_settings_other_layers_speed#inner-wall"); - optgroup->append_single_option_line("small_perimeter_speed", "speed_settings_other_layers_speed#small-perimeters"); - optgroup->append_single_option_line("small_perimeter_threshold", "speed_settings_other_layers_speed#small-perimeters-threshold"); - optgroup->append_single_option_line("sparse_infill_speed", "speed_settings_other_layers_speed#sparse-infill"); - optgroup->append_single_option_line("internal_solid_infill_speed", "speed_settings_other_layers_speed#internal-solid-infill"); - optgroup->append_single_option_line("top_surface_speed", "speed_settings_other_layers_speed#top-surface"); - optgroup->append_single_option_line("gap_infill_speed", "speed_settings_other_layers_speed#gap-infill"); - optgroup->append_single_option_line("ironing_speed", "speed_settings_other_layers_speed#ironing-speed"); - optgroup->append_single_option_line("support_speed", "speed_settings_other_layers_speed#support"); - optgroup->append_single_option_line("support_interface_speed", "speed_settings_other_layers_speed#support-interface"); - optgroup = page->new_optgroup(L("Overhang speed"), L"param_overhang_speed", 15); - optgroup->append_single_option_line("enable_overhang_speed", "speed_settings_overhang_speed#slow-down-for-overhang"); - - optgroup->append_single_option_line("slowdown_for_curled_perimeters", "speed_settings_overhang_speed#slow-down-for-curled-perimeters"); - Line line = { L("Overhang speed"), L("This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of line width. 0 speed means no slowing down for the overhang degree range and wall speed is used") }; - line.label_path = "speed_settings_overhang_speed#speed"; - line.append_option(optgroup->get_option("overhang_1_4_speed")); - line.append_option(optgroup->get_option("overhang_2_4_speed")); - line.append_option(optgroup->get_option("overhang_3_4_speed")); - line.append_option(optgroup->get_option("overhang_4_4_speed")); - optgroup->append_line(line); - optgroup->append_separator(); - line = { L("Bridge"), L("Set speed for external and internal bridges") }; - line.append_option(optgroup->get_option("bridge_speed")); - line.append_option(optgroup->get_option("internal_bridge_speed")); - optgroup->append_line(line); - - optgroup = page->new_optgroup(L("Travel speed"), L"param_travel_speed", 15); - optgroup->append_single_option_line("travel_speed", "speed_settings_travel"); - - optgroup = page->new_optgroup(L("Acceleration"), L"param_acceleration", 15); - optgroup->append_single_option_line("default_acceleration", "speed_settings_acceleration#normal-printing"); - optgroup->append_single_option_line("outer_wall_acceleration", "speed_settings_acceleration#outer-wall"); - optgroup->append_single_option_line("inner_wall_acceleration", "speed_settings_acceleration#inner-wall"); - optgroup->append_single_option_line("bridge_acceleration", "speed_settings_acceleration#bridge"); - optgroup->append_single_option_line("sparse_infill_acceleration", "speed_settings_acceleration#sparse-infill"); - optgroup->append_single_option_line("internal_solid_infill_acceleration", "speed_settings_acceleration#internal-solid-infill"); - optgroup->append_single_option_line("initial_layer_acceleration", "speed_settings_acceleration#initial-layer"); - optgroup->append_single_option_line("initial_layer_travel_acceleration", "speed_settings_acceleration#initial-layer-travel"); - optgroup->append_single_option_line("top_surface_acceleration", "speed_settings_acceleration#top-surface"); - optgroup->append_single_option_line("travel_acceleration", "speed_settings_acceleration#travel"); - optgroup->append_single_option_line("accel_to_decel_enable", "speed_settings_acceleration"); - optgroup->append_single_option_line("accel_to_decel_factor", "speed_settings_acceleration"); - - optgroup = page->new_optgroup(L("Jerk(XY)"), L"param_jerk", 15); - optgroup->append_single_option_line("default_junction_deviation", "speed_settings_jerk_xy#junction-deviation"); - optgroup->append_single_option_line("default_jerk", "speed_settings_jerk_xy#default"); - optgroup->append_single_option_line("outer_wall_jerk", "speed_settings_jerk_xy#outer-wall"); - optgroup->append_single_option_line("inner_wall_jerk", "speed_settings_jerk_xy#inner-wall"); - optgroup->append_single_option_line("infill_jerk", "speed_settings_jerk_xy#infill"); - optgroup->append_single_option_line("top_surface_jerk", "speed_settings_jerk_xy#top-surface"); - optgroup->append_single_option_line("initial_layer_jerk", "speed_settings_jerk_xy#initial-layer"); - optgroup->append_single_option_line("initial_layer_travel_jerk", "speed_settings_jerk_xy#initial-layer-travel"); - optgroup->append_single_option_line("travel_jerk", "speed_settings_jerk_xy#travel"); - - optgroup = page->new_optgroup(L("Advanced"), L"param_advanced", 15); - optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope", "speed_settings_advanced"); - optgroup->append_single_option_line("max_volumetric_extrusion_rate_slope_segment_length", "speed_settings_advanced"); - optgroup->append_single_option_line("extrusion_rate_smoothing_external_perimeter_only", "speed_settings_advanced"); - - page = add_options_page(L("Support"), "custom-gcode_support"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Support"), L"param_support"); - optgroup->append_single_option_line("enable_support", "support_settings_support"); - optgroup->append_single_option_line("support_type", "support_settings_support#type"); - optgroup->append_single_option_line("support_style", "support_settings_support#style"); - optgroup->append_single_option_line("support_threshold_angle", "support_settings_support#threshold-angle"); - optgroup->append_single_option_line("support_threshold_overlap", "support_settings_support#threshold-overlap"); - optgroup->append_single_option_line("raft_first_layer_density", "support_settings_support#initial-layer-density"); - optgroup->append_single_option_line("raft_first_layer_expansion", "support_settings_support#initial-layer-expansion"); - optgroup->append_single_option_line("support_on_build_plate_only", "support_settings_support#on-build-plate-only"); - optgroup->append_single_option_line("support_critical_regions_only", "support_settings_support#support-critical-regions-only"); - optgroup->append_single_option_line("support_remove_small_overhang", "support_settings_support#ignore-small-overhangs"); - //optgroup->append_single_option_line("enforce_support_layers", "support_settings_support"); - - optgroup = page->new_optgroup(L("Raft"), L"param_raft"); - optgroup->append_single_option_line("raft_layers", "support_settings_raft"); - optgroup->append_single_option_line("raft_contact_distance", "support_settings_raft"); - - optgroup = page->new_optgroup(L("Support filament"), L"param_support_filament"); - optgroup->append_single_option_line("support_filament", "support_settings_filament#base"); - optgroup->append_single_option_line("support_interface_filament", "support_settings_filament#interface"); - optgroup->append_single_option_line("support_interface_not_for_body", "support_settings_filament#avoid-interface-filament-for-base"); - - optgroup = page->new_optgroup(L("Support ironing"), L"param_ironing"); - optgroup->append_single_option_line("support_ironing", "support_settings_ironing"); - optgroup->append_single_option_line("support_ironing_pattern", "support_settings_ironing#pattern"); - optgroup->append_single_option_line("support_ironing_flow", "support_settings_ironing#flow"); - optgroup->append_single_option_line("support_ironing_spacing", "support_settings_ironing#line-spacing"); - - //optgroup = page->new_optgroup(L("Options for support material and raft")); - - // Support - optgroup = page->new_optgroup(L("Advanced"), L"param_advanced"); - optgroup->append_single_option_line("support_top_z_distance", "support_settings_advanced#z-distance"); - optgroup->append_single_option_line("support_bottom_z_distance", "support_settings_advanced#z-distance"); - optgroup->append_single_option_line("tree_support_wall_count", "support_settings_advanced#support-wall-loops"); - optgroup->append_single_option_line("support_base_pattern", "support_settings_advanced#base-pattern"); - optgroup->append_single_option_line("support_base_pattern_spacing", "support_settings_advanced#base-pattern-spacing"); - optgroup->append_single_option_line("support_angle", "support_settings_advanced#pattern-angle"); - optgroup->append_single_option_line("support_interface_top_layers", "support_settings_advanced#interface-layers"); - optgroup->append_single_option_line("support_interface_bottom_layers", "support_settings_advanced#interface-layers"); - optgroup->append_single_option_line("support_interface_pattern", "support_settings_advanced#interface-pattern"); - optgroup->append_single_option_line("support_interface_spacing", "support_settings_advanced#interface-spacing"); - optgroup->append_single_option_line("support_bottom_interface_spacing", "support_settings_advanced#interface-spacing"); - optgroup->append_single_option_line("support_expansion", "support_settings_advanced#normal-support-expansion"); - //optgroup->append_single_option_line("support_interface_loop_pattern", "support_settings_advanced"); - - optgroup->append_single_option_line("support_object_xy_distance", "support_settings_advanced#supportobject-xy-distance"); - optgroup->append_single_option_line("support_object_first_layer_gap", "support_settings_advanced#supportobject-first-layer-gap"); - optgroup->append_single_option_line("bridge_no_support", "support_settings_advanced#dont-support-bridges"); - optgroup->append_single_option_line("max_bridge_length", "support_settings_advanced"); - optgroup->append_single_option_line("independent_support_layer_height", "support_settings_advanced#independent-support-layer-height"); - - optgroup = page->new_optgroup(L("Tree supports"), L"param_support_tree"); - optgroup->append_single_option_line("tree_support_tip_diameter", "support_settings_tree#tip-diameter"); - optgroup->append_single_option_line("tree_support_branch_distance", "support_settings_tree#branch-distance"); - optgroup->append_single_option_line("tree_support_branch_distance_organic", "support_settings_tree#branch-distance"); - optgroup->append_single_option_line("tree_support_top_rate", "support_settings_tree#branch-density"); - optgroup->append_single_option_line("tree_support_branch_diameter", "support_settings_tree#branch-diameter"); - optgroup->append_single_option_line("tree_support_branch_diameter_organic", "support_settings_tree#branch-diameter"); - optgroup->append_single_option_line("tree_support_branch_diameter_angle", "support_settings_tree#branch-diameter-angle"); - optgroup->append_single_option_line("tree_support_branch_angle", "support_settings_tree#branch-angle"); - optgroup->append_single_option_line("tree_support_branch_angle_organic", "support_settings_tree#branch-angle"); - optgroup->append_single_option_line("tree_support_angle_slow", "support_settings_tree#preferred-branch-angle"); - optgroup->append_single_option_line("tree_support_auto_brim", "support_settings_tree"); - optgroup->append_single_option_line("tree_support_brim_width", "support_settings_tree"); - - page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Prime tower"), L"param_tower"); - optgroup->append_single_option_line("enable_prime_tower", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_skip_points", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("enable_tower_interface_features", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("enable_tower_interface_cooldown_during_tower", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_enable_framework", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_width", "multimaterial_settings_prime_tower#width"); - optgroup->append_single_option_line("prime_volume", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("prime_tower_brim_width", "multimaterial_settings_prime_tower#brim-width"); - optgroup->append_single_option_line("prime_tower_infill_gap", "multimaterial_settings_prime_tower"); - optgroup->append_single_option_line("wipe_tower_rotation_angle", "multimaterial_settings_prime_tower#wipe-tower-rotation-angle"); - optgroup->append_single_option_line("wipe_tower_bridging", "multimaterial_settings_prime_tower#maximal-bridging-distance"); - optgroup->append_single_option_line("wipe_tower_extra_spacing", "multimaterial_settings_prime_tower#wipe-tower-purge-lines-spacing"); - optgroup->append_single_option_line("wipe_tower_extra_flow", "multimaterial_settings_prime_tower#extra-flow-for-purge"); - optgroup->append_single_option_line("wipe_tower_max_purge_speed", "multimaterial_settings_prime_tower#maximum-wipe-tower-print-speed"); - optgroup->append_single_option_line("wipe_tower_wall_type", "multimaterial_settings_prime_tower#wall-type"); - optgroup->append_single_option_line("wipe_tower_cone_angle", "multimaterial_settings_prime_tower#stabilization-cone-apex-angle"); - optgroup->append_single_option_line("wipe_tower_extra_rib_length", "multimaterial_settings_prime_tower#extra-rib-length"); - optgroup->append_single_option_line("wipe_tower_rib_width", "multimaterial_settings_prime_tower#rib-width"); - optgroup->append_single_option_line("wipe_tower_fillet_wall", "multimaterial_settings_prime_tower#fillet-wall"); - optgroup->append_single_option_line("wipe_tower_no_sparse_layers", "multimaterial_settings_prime_tower#no-sparse-layers"); - optgroup->append_single_option_line("single_extruder_multi_material_priming", "multimaterial_settings_prime_tower"); - - optgroup = page->new_optgroup(L("Filament for Features"), L"param_filament_for_features"); - optgroup->append_single_option_line("wall_filament", "multimaterial_settings_filament_for_features#walls"); - optgroup->append_single_option_line("sparse_infill_filament", "multimaterial_settings_filament_for_features#infill"); - optgroup->append_single_option_line("solid_infill_filament", "multimaterial_settings_filament_for_features#solid-infill"); - optgroup->append_single_option_line("wipe_tower_filament", "multimaterial_settings_filament_for_features#wipe-tower"); - - optgroup = page->new_optgroup(L("Ooze prevention"), L"param_ooze_prevention"); - optgroup->append_single_option_line("ooze_prevention", "multimaterial_settings_ooze_prevention"); - optgroup->append_single_option_line("standby_temperature_delta", "multimaterial_settings_ooze_prevention#temperature-variation"); - optgroup->append_single_option_line("preheat_time", "multimaterial_settings_ooze_prevention#preheat-time"); - optgroup->append_single_option_line("preheat_steps", "multimaterial_settings_ooze_prevention#preheat-steps"); - - optgroup = page->new_optgroup(L("Flush options"), L"param_flush"); - optgroup->append_single_option_line("flush_into_infill", "multimaterial_settings_flush_options#flush-into-objects-infill"); - optgroup->append_single_option_line("flush_into_objects", "multimaterial_settings_flush_options"); - optgroup->append_single_option_line("flush_into_support", "multimaterial_settings_flush_options#flush-into-objects-support"); - optgroup = page->new_optgroup(L("Advanced"), L"advanced"); - optgroup->append_single_option_line("interlocking_beam", "multimaterial_settings_advanced#interlocking-beam"); - optgroup->append_single_option_line("interface_shells", "multimaterial_settings_advanced#interface-shells"); - optgroup->append_single_option_line("mmu_segmented_region_max_width", "multimaterial_settings_advanced#maximum-width-of-segmented-region"); - optgroup->append_single_option_line("mmu_segmented_region_interlocking_depth", "multimaterial_settings_advanced#interlocking-depth-of-segmented-region"); - optgroup->append_single_option_line("interlocking_beam_width", "multimaterial_settings_advanced#interlocking-beam-width"); - optgroup->append_single_option_line("interlocking_orientation", "multimaterial_settings_advanced#interlocking-direction"); - optgroup->append_single_option_line("interlocking_beam_layer_count", "multimaterial_settings_advanced#interlocking-beam-layers"); - optgroup->append_single_option_line("interlocking_depth", "multimaterial_settings_advanced#interlocking-depth"); - optgroup->append_single_option_line("interlocking_boundary_avoidance", "multimaterial_settings_advanced#interlocking-boundary-avoidance"); - - page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); - optgroup->append_single_option_line("skirt_loops", "others_settings_skirt#loops"); - optgroup->append_single_option_line("skirt_type", "others_settings_skirt#type"); - optgroup->append_single_option_line("min_skirt_length", "others_settings_skirt#minimum-extrusion-length"); - optgroup->append_single_option_line("skirt_distance", "others_settings_skirt#distance"); - optgroup->append_single_option_line("skirt_start_angle", "others_settings_skirt#start-point"); - optgroup->append_single_option_line("skirt_speed", "others_settings_skirt#speed"); - optgroup->append_single_option_line("skirt_height", "others_settings_skirt#height"); - optgroup->append_single_option_line("draft_shield", "others_settings_skirt#shield"); - optgroup->append_single_option_line("single_loop_draft_shield", "others_settings_skirt#single-loop-after-first-layer"); - - optgroup = page->new_optgroup(L("Brim"), L"param_adhension"); - optgroup->append_single_option_line("brim_type", "others_settings_brim#type"); - optgroup->append_single_option_line("brim_width", "others_settings_brim#width"); - optgroup->append_single_option_line("brim_object_gap", "others_settings_brim#brim-object-gap"); - optgroup->append_single_option_line("brim_flow_ratio", "others_settings_brim#brim-flow-ratio"); - optgroup->append_single_option_line("brim_use_efc_outline", "others_settings_brim#brim-use-efc-outline"); - optgroup->append_single_option_line("combine_brims", "others_settings_brim#combine-brims"); - optgroup->append_single_option_line("brim_ears_max_angle", "others_settings_brim#ear-max-angle"); - optgroup->append_single_option_line("brim_ears_detection_length", "others_settings_brim#ear-detection-radius"); - - optgroup = page->new_optgroup(L("Special mode"), L"param_special"); - optgroup->append_single_option_line("slicing_mode", "others_settings_special_mode#slicing-mode"); - optgroup->append_single_option_line("print_sequence", "others_settings_special_mode#print-sequence"); - optgroup->append_single_option_line("print_order", "others_settings_special_mode#intra-layer-order"); - optgroup->append_single_option_line("spiral_mode", "others_settings_special_mode#spiral-vase"); - optgroup->append_single_option_line("spiral_mode_smooth", "others_settings_special_mode#smooth-spiral"); - optgroup->append_single_option_line("spiral_mode_max_xy_smoothing", "others_settings_special_mode#max-xy-smoothing"); - optgroup->append_single_option_line("spiral_starting_flow_ratio", "others_settings_special_mode#spiral-starting-flow-ratio"); - optgroup->append_single_option_line("spiral_finishing_flow_ratio", "others_settings_special_mode#spiral-finishing-flow-ratio"); - - optgroup->append_single_option_line("timelapse_type", "others_settings_special_mode#timelapse"); - optgroup->append_single_option_line("enable_wrapping_detection"); - - optgroup = page->new_optgroup(L("Fuzzy Skin"), L"fuzzy_skin"); - optgroup->append_single_option_line("fuzzy_skin", "others_settings_fuzzy_skin"); - optgroup->append_single_option_line("fuzzy_skin_mode", "others_settings_fuzzy_skin#fuzzy-skin-mode"); - optgroup->append_single_option_line("fuzzy_skin_noise_type", "others_settings_fuzzy_skin#noise-type"); - optgroup->append_single_option_line("fuzzy_skin_point_distance", "others_settings_fuzzy_skin#point-distance"); - optgroup->append_single_option_line("fuzzy_skin_thickness", "others_settings_fuzzy_skin#skin-thickness"); - optgroup->append_single_option_line("fuzzy_skin_scale", "others_settings_fuzzy_skin#skin-feature-size"); - optgroup->append_single_option_line("fuzzy_skin_octaves", "others_settings_fuzzy_skin#skin-noise-octaves"); - optgroup->append_single_option_line("fuzzy_skin_persistence", "others_settings_fuzzy_skin#skin-noise-persistence"); - optgroup->append_single_option_line("fuzzy_skin_ripples_per_layer", "others_settings_fuzzy_skin#ripples-per-layer"); - optgroup->append_single_option_line("fuzzy_skin_ripple_offset", "others_settings_fuzzy_skin#ripple-offset"); - optgroup->append_single_option_line("fuzzy_skin_layers_between_ripple_offset", "others_settings_fuzzy_skin#layers-between-ripple-offset"); - optgroup->append_single_option_line("fuzzy_skin_first_layer", "others_settings_fuzzy_skin#apply-fuzzy-skin-to-first-layer"); - - optgroup = page->new_optgroup(L("G-code output"), L"param_gcode"); - optgroup->append_single_option_line("reduce_infill_retraction", "others_settings_g_code_output#reduce-infill-retraction"); - optgroup->append_single_option_line("gcode_add_line_number", "others_settings_g_code_output#add-line-number"); - optgroup->append_single_option_line("gcode_comments", "others_settings_g_code_output#verbose-g-code"); - optgroup->append_single_option_line("gcode_label_objects", "others_settings_g_code_output#label-objects"); - optgroup->append_single_option_line("exclude_object", "others_settings_g_code_output#exclude-objects"); - option = optgroup->get_option("filename_format"); - // option.opt.full_width = true; - option.opt.is_code = true; - option.opt.multiline = true; - // option.opt.height = 5; - optgroup->append_single_option_line(option, "others_settings_g_code_output#filename-format"); - - optgroup = page->new_optgroup(L("Change extrusion role G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; - option = optgroup->get_option("process_change_extrusion_role_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = 15; - optgroup->append_single_option_line(option); - - optgroup = page->new_optgroup(L("Post-processing Scripts"), L"param_gcode", 0); - option = optgroup->get_option("post_process"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = 15; - optgroup->append_single_option_line(option, "others_settings_post_processing_scripts"); - - optgroup = page->new_optgroup(L("Notes"), "note", 0); - option = optgroup->get_option("notes"); - option.opt.full_width = true; - option.opt.height = 25;//250; - optgroup->append_single_option_line(option, "others_settings_notes"); - - // Orca: hide the dependencies tab for process for now. The UI is not ready yet. - // page = add_options_page(L("Dependencies"), "param_profile_dependencies"); // icons ready - // optgroup = page->new_optgroup(L("Profile dependencies"), "param_profile_dependencies"); // icons ready - - // create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { - // return compatible_widget_create(parent, m_compatible_printers); - // }); - - // option = optgroup->get_option("compatible_printers_condition"); - // option.opt.full_width = true; - // optgroup->append_single_option_line(option); - - // build_preset_description_line(optgroup.get()); + TabPrint_build_layout(*this); } // Reload current config (aka presets->edited_preset->config) into the UI fields. @@ -3863,334 +3394,8 @@ void TabFilament::build() { m_presets = &m_preset_bundle->filaments; load_initial_data(); - - auto page = add_options_page(L("Filament"), "custom-gcode_filament"); // ORCA: icon only visible on placeholders - //BBS - auto optgroup = page->new_optgroup(L("Basic information"), L"param_information"); - optgroup->append_single_option_line("filament_type", "material_basic_information#type"); // ORCA use same width with other elements - optgroup->append_single_option_line("filament_vendor", "material_basic_information#vendor"); - optgroup->append_single_option_line("filament_soluble", "material_basic_information#soluble-material"); - // BBS - optgroup->append_single_option_line("filament_is_support", "material_basic_information#support-material"); - optgroup->append_single_option_line("filament_change_length", "material_basic_information#filament-ramming-length"); - - //optgroup->append_single_option_line("filament_colour"); - optgroup->append_single_option_line("required_nozzle_HRC", "material_basic_information#required-nozzle-hrc"); - optgroup->append_single_option_line("default_filament_colour", "material_basic_information#default-color"); - optgroup->append_single_option_line("filament_diameter", "material_basic_information#diameter"); - optgroup->append_single_option_line("filament_adhesiveness_category", "material_basic_information#adhesiveness-category"); - - optgroup->append_single_option_line("filament_density", "material_basic_information#density"); - optgroup->append_single_option_line("filament_shrink", "material_basic_information#shrinkage-xy"); - optgroup->append_single_option_line("filament_shrinkage_compensation_z", "material_basic_information#shrinkage-z"); - optgroup->append_single_option_line("filament_cost", "material_basic_information#price"); - //BBS - optgroup->append_single_option_line("temperature_vitrification", "material_basic_information#softening-temperature"); - optgroup->append_single_option_line("idle_temperature", "material_basic_information#idle-temperature"); - Line line = { L("Recommended nozzle temperature"), L("Recommended nozzle temperature range of this filament. 0 means no set") }; - line.append_option(optgroup->get_option("nozzle_temperature_range_low")); - line.append_option(optgroup->get_option("nozzle_temperature_range_high")); - optgroup->append_line(line); - - optgroup->m_on_change = [this, optgroup](t_config_option_key opt_key, boost::any value) { - DynamicPrintConfig &filament_config = m_preset_bundle->filaments.get_edited_preset().config; - - update_dirty(); - if (!m_postpone_update_ui && (opt_key == "nozzle_temperature_range_low" || opt_key == "nozzle_temperature_range_high")) { - m_config_manipulation.check_nozzle_recommended_temperature_range(&filament_config); - } - on_value_change(opt_key, value); - }; - - // Orca: New section to focus on flow rate and PA to declutter general section - optgroup = page->new_optgroup(L("Flow ratio and Pressure Advance"), L"param_flow_ratio_and_pressure_advance"); - optgroup->append_single_option_line("pellet_flow_coefficient", "printer_basic_information_advanced#pellet-modded-printer"); - optgroup->append_single_option_line("filament_flow_ratio", "material_flow_ratio_and_pressure_advance#flow-ratio", 0); - - optgroup->append_single_option_line("enable_pressure_advance", "material_flow_ratio_and_pressure_advance#pressure-advance"); - optgroup->append_single_option_line("pressure_advance", "material_flow_ratio_and_pressure_advance#pressure-advance"); - - // Orca: adaptive pressure advance and calibration model - optgroup->append_single_option_line("adaptive_pressure_advance", "material_flow_ratio_and_pressure_advance#enable-adaptive-pressure-advance-beta"); - optgroup->append_single_option_line("adaptive_pressure_advance_overhangs", "material_flow_ratio_and_pressure_advance#enable-adaptive-pressure-advance-for-overhangs-beta"); - optgroup->append_single_option_line("adaptive_pressure_advance_bridges", "material_flow_ratio_and_pressure_advance#pressure-advance-for-bridges"); - - Option option = optgroup->get_option("adaptive_pressure_advance_model"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = 15; - optgroup->append_single_option_line(option); - // - - optgroup = page->new_optgroup(L("Print chamber temperature"), L"param_chamber_temp"); - optgroup->append_single_option_line("activate_chamber_temp_control", "material_temperatures#print-chamber-temperature"); - optgroup->append_single_option_line("chamber_temperature", "material_temperatures#print-chamber-temperature"); - - optgroup = page->new_optgroup(L("Print temperature"), L"param_extruder_temp"); - line = { L("Nozzle"), L("Nozzle temperature when printing") }; - line.label_path = "material_temperatures#nozzle"; - line.append_option(optgroup->get_option("nozzle_temperature_initial_layer", 0)); - line.append_option(optgroup->get_option("nozzle_temperature", 0)); - optgroup->append_line(line); - - optgroup = page->new_optgroup(L("Bed temperature"), L"param_bed_temp"); - line = { L("Cool Plate (SuperTack)"), - L("Bed temperature when the Cool Plate SuperTack is installed. A value of 0 means the filament does not support printing on the Cool Plate SuperTack.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("supertack_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("supertack_plate_temp")); - optgroup->append_line(line); - - line = { L("Cool Plate"), - L("Bed temperature when the Cool Plate is installed. A value of 0 means the filament does not support printing on the Cool Plate.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("cool_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("cool_plate_temp")); - optgroup->append_line(line); - - line = { L("Textured Cool Plate"), - L("Bed temperature when the Textured Cool Plate is installed. A value of 0 means the filament does not support printing on the Textured Cool Plate.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("textured_cool_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("textured_cool_plate_temp")); - optgroup->append_line(line); - - line = { L("Engineering Plate"), - L("Bed temperature when the Engineering Plate is installed. A value of 0 means the filament does not support printing on the Engineering Plate.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("eng_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("eng_plate_temp")); - optgroup->append_line(line); - - line = { L("Smooth PEI Plate / High Temp Plate"), - L("Bed temperature when the Smooth PEI Plate/High Temperature Plate is installed. A value of 0 means the filament does not support printing on the Smooth PEI Plate/High Temp Plate.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("hot_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("hot_plate_temp")); - optgroup->append_line(line); - - line = { L("Textured PEI Plate"), - L("Bed temperature when the Textured PEI Plate is installed. A value of 0 means the filament does not support printing on the Textured PEI Plate.") }; - line.label_path = "material_temperatures#bed"; - line.append_option(optgroup->get_option("textured_plate_temp_initial_layer")); - line.append_option(optgroup->get_option("textured_plate_temp")); - optgroup->append_line(line); - - optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) - { - DynamicPrintConfig& filament_config = m_preset_bundle->filaments.get_edited_preset().config; - - update_dirty(); - /*if (opt_key == "cool_plate_temp" || opt_key == "cool_plate_temp_initial_layer") { - m_config_manipulation.check_bed_temperature_difference(BedType::btPC, &filament_config); - } - else if (opt_key == "eng_plate_temp" || opt_key == "eng_plate_temp_initial_layer") { - m_config_manipulation.check_bed_temperature_difference(BedType::btEP, &filament_config); - } - else if (opt_key == "hot_plate_temp" || opt_key == "hot_plate_temp_initial_layer") { - m_config_manipulation.check_bed_temperature_difference(BedType::btPEI, &filament_config); - } - else if (opt_key == "textured_plate_temp" || opt_key == "textured_plate_temp_initial_layer") { - m_config_manipulation.check_bed_temperature_difference(BedType::btPTE, &filament_config); - } - else */if (opt_key == "nozzle_temperature") { - m_config_manipulation.check_nozzle_temperature_range(&filament_config); - } - else if (opt_key == "nozzle_temperature_initial_layer") { - m_config_manipulation.check_nozzle_temperature_initial_layer_range(&filament_config); - } - else if (opt_key == "chamber_temperature") { - m_config_manipulation.check_chamber_temperature(&filament_config); - } - - on_value_change(opt_key, value); - }; - - //BBS - optgroup = page->new_optgroup(L("Volumetric speed limitation"), L"param_volumetric_speed"); - optgroup->append_single_option_line("filament_adaptive_volumetric_speed", "material_volumetric_speed_limitation#adaptive-volumetric-speed", 0); - optgroup->append_single_option_line("filament_max_volumetric_speed", "material_volumetric_speed_limitation#max-volumetric-speed", 0); - - //line = { "", "" }; - //line.full_width = 1; - //line.widget = [this](wxWindow* parent) { - // return description_line_widget(parent, &m_volumetric_speed_description_line); - //}; - //optgroup->append_line(line); - - page = add_options_page(L("Cooling"), "custom-gcode_cooling_fan"); // ORCA: icon only visible on placeholders - - //line = { "", "" }; - //line.full_width = 1; - //line.widget = [this](wxWindow* parent) { - // return description_line_widget(parent, &m_cooling_description_line); - //}; - //optgroup->append_line(line); - optgroup = page->new_optgroup(L("Cooling for specific layer"), L"param_cooling_specific_layer"); - optgroup->append_single_option_line("close_fan_the_first_x_layers", "material_cooling#no-cooling-for-the-first"); - optgroup->append_single_option_line("full_fan_speed_layer", "material_cooling#full-fan-speed-at-layer"); - - optgroup = page->new_optgroup(L("Part cooling fan"), L"param_cooling_part_fan"); - line = { L("Min fan speed threshold"), L("Part cooling fan speed will start to run at min speed when the estimated layer time is no longer than the layer time in setting. When layer time is shorter than threshold, fan speed is interpolated between the minimum and maximum fan speed according to layer printing time") }; - line.label_path = "material_cooling#material-part-cooling-fan"; - line.append_option(optgroup->get_option("fan_min_speed")); - line.append_option(optgroup->get_option("fan_cooling_layer_time")); - optgroup->append_line(line); - line = { L("Max fan speed threshold"), L("Part cooling fan speed will be max when the estimated layer time is shorter than the setting value") }; - line.label_path = "material_cooling#material-part-cooling-fan"; - line.append_option(optgroup->get_option("fan_max_speed")); - line.append_option(optgroup->get_option("slow_down_layer_time")); - optgroup->append_line(line); - optgroup->append_single_option_line("reduce_fan_stop_start_freq", "material_cooling#keep-fan-always-on"); - optgroup->append_single_option_line("slow_down_for_layer_cooling", "material_cooling#slow-printing-down-for-better-layer-cooling"); - optgroup->append_single_option_line("dont_slow_down_outer_wall", "material_cooling#dont-slow-down-outer-walls"); - optgroup->append_single_option_line("slow_down_min_speed", "material_cooling#min-print-speed"); - - optgroup->append_single_option_line("enable_overhang_bridge_fan", "material_cooling#force-cooling-for-overhangs-and-bridges"); - optgroup->append_single_option_line("overhang_fan_threshold", "material_cooling#overhang-cooling-activation-threshold"); - optgroup->append_single_option_line("overhang_fan_speed", "material_cooling#overhangs-and-external-bridges-fan-speed"); - optgroup->append_single_option_line("internal_bridge_fan_speed", "material_cooling#internal-bridges-fan-speed"); // ORCA: Add support for separate internal bridge fan speed control - optgroup->append_single_option_line("support_material_interface_fan_speed", "material_cooling#support-interface-fan-speed"); - optgroup->append_single_option_line("ironing_fan_speed", "material_cooling#ironing-fan-speed"); // ORCA: Add support for ironing fan speed control - - optgroup = page->new_optgroup(L("Auxiliary part cooling fan"), L"param_cooling_aux_fan"); - optgroup->append_single_option_line("additional_cooling_fan_speed", "material_cooling#auxiliary-part-cooling-fan"); - - optgroup = page->new_optgroup(L("Exhaust fan"),L"param_cooling_exhaust"); - - optgroup->append_single_option_line("activate_air_filtration", "material_cooling#activate-air-filtration"); - - line = {L("During print"), ""}; - line.append_option(optgroup->get_option("activate_air_filtration_during_print")); - line.append_option(optgroup->get_option("during_print_exhaust_fan_speed")); - line.label_path = "material_cooling#during-print"; - optgroup->append_line(line); - - - line = {L("Complete print"), ""}; - line.append_option(optgroup->get_option("activate_air_filtration_on_completion")); - line.append_option(optgroup->get_option("complete_print_exhaust_fan_speed")); - line.label_path = "material_cooling#complete-print"; - optgroup->append_line(line); - //BBS - add_filament_overrides_page(); - const int gcode_field_height = 15; // 150 - const int notes_field_height = 25; // 250 - - auto edit_custom_gcode_fn = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; - - page = add_options_page(L("Advanced"), "custom-gcode_advanced"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Filament start G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("filament_start_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;// 150; - optgroup->append_single_option_line(option); - - optgroup = page->new_optgroup(L("Change extrusion role G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("filament_change_extrusion_role_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;// 150; - optgroup->append_single_option_line(option); - - optgroup = page->new_optgroup(L("Filament end G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("filament_end_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;// 150; - optgroup->append_single_option_line(option); - - page = add_options_page(L("Multimaterial"), "custom-gcode_multi_material"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Wipe tower parameters"), "param_tower"); - optgroup->append_single_option_line("filament_minimal_purge_on_wipe_tower", "material_multimaterial#multimaterial-wipe-tower-parameters"); - optgroup->append_single_option_line("filament_tower_interface_pre_extrusion_dist", "material_multimaterial#multimaterial-wipe-tower-parameters"); - optgroup->append_single_option_line("filament_tower_interface_pre_extrusion_length", "material_multimaterial#multimaterial-wipe-tower-parameters"); - optgroup->append_single_option_line("filament_tower_ironing_area", "material_multimaterial#multimaterial-wipe-tower-parameters"); - optgroup->append_single_option_line("filament_tower_interface_purge_volume", "material_multimaterial#multimaterial-wipe-tower-parameters"); - optgroup->append_single_option_line("filament_tower_interface_print_temp", "material_multimaterial#multimaterial-wipe-tower-parameters"); - - optgroup = page->new_optgroup(L("Multi Filament")); - // optgroup->append_single_option_line("filament_flush_temp", "", 0); - // optgroup->append_single_option_line("filament_flush_volumetric_speed", "", 0); - optgroup->append_single_option_line("long_retractions_when_ec", "material_multimaterial#multi-filament" , 0); - optgroup->append_single_option_line("retraction_distances_when_ec", "material_multimaterial#multi-filament" , 0); - - optgroup = page->new_optgroup(L("Tool change parameters with single extruder MM printers"), "param_toolchange"); - optgroup->append_single_option_line("filament_loading_speed_start", "material_multimaterial#loading-speed-at-the-start"); - optgroup->append_single_option_line("filament_loading_speed", "material_multimaterial#loading-speed"); - optgroup->append_single_option_line("filament_unloading_speed_start", "material_multimaterial#unloading-speed-at-the-start"); - optgroup->append_single_option_line("filament_unloading_speed", "material_multimaterial#unloading-speed"); - optgroup->append_single_option_line("filament_toolchange_delay", "material_multimaterial#delay-after-unloading"); - optgroup->append_single_option_line("filament_cooling_moves", "material_multimaterial#number-of-cooling-moves"); - optgroup->append_single_option_line("filament_cooling_initial_speed", "material_multimaterial#speed-of-the-first-cooling-move"); - optgroup->append_single_option_line("filament_cooling_final_speed", "material_multimaterial#speed-of-the-last-cooling-move"); - optgroup->append_single_option_line("filament_stamping_loading_speed", "material_multimaterial#stamping-loading-speed"); - optgroup->append_single_option_line("filament_stamping_distance", "material_multimaterial#stamping-distance"); - create_line_with_widget(optgroup.get(), "filament_ramming_parameters", "material_multimaterial#ramming-parameters", [this](wxWindow* parent) { - - // ORCA modernize button style - Button* btn = new Button(parent, _(L("Set")) + " " + dots); - btn->SetStyle(ButtonStyle::Regular, ButtonType::Parameter); - - auto sizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(btn); - - btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { - RammingDialog dlg(this,(m_config->option("filament_ramming_parameters"))->get_at(0)); - if (dlg.ShowModal() == wxID_OK) { - load_key_value("filament_ramming_parameters", dlg.get_parameters()); - update_changed_ui(); - } - }); - return sizer; - }); - - optgroup = page->new_optgroup(L("Tool change parameters with multi extruder MM printers"), "param_toolchange_multi_extruder"); - optgroup->append_single_option_line("filament_multitool_ramming", "material_multimaterial#tool-change-parameters-with-multi-extruder"); - optgroup->append_single_option_line("filament_multitool_ramming_volume", "material_multimaterial#multi-tool-ramming-volume"); - optgroup->append_single_option_line("filament_multitool_ramming_flow", "material_multimaterial#multi-tool-ramming-flow"); - - page = add_options_page(L("Dependencies"), "advanced"); - optgroup = page->new_optgroup(L("Compatible printers"), "param_dependencies_printers"); - create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { - return compatible_widget_create(parent, m_compatible_printers); - }); - - option = optgroup->get_option("compatible_printers_condition"); - option.opt.full_width = true; - optgroup->append_single_option_line(option, "material_dependencies#compatible-printers"); - - optgroup = page->new_optgroup(L("Compatible process profiles"), "param_dependencies_presets"); - create_line_with_widget(optgroup.get(), "compatible_prints", "", [this](wxWindow* parent) { - return compatible_widget_create(parent, m_compatible_prints); - }); - - option = optgroup->get_option("compatible_prints_condition"); - option.opt.full_width = true; - optgroup->append_single_option_line(option, "material_dependencies#compatible-process-profiles"); - - page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Notes"),"note", 0); - optgroup->label_width = 0; - option = optgroup->get_option("filament_notes"); - option.opt.full_width = true; - option.opt.height = notes_field_height;// 250; - optgroup->append_single_option_line(option); - - //build_preset_description_line(optgroup.get()); + TabFilament_build_main_layout(*this); // generated: Filament / Cooling / Multimaterial pages + build_extra_layout(); // TabLayoutExtra.cpp: toolchange+ramming / overrides / deps / notes } // Reload current config (aka presets->edited_preset->config) into the UI fields. @@ -4525,154 +3730,11 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("support_chamber_temp_control", "printer_basic_information_accessory#support-controlling-chamber-temperature"); optgroup->append_single_option_line("support_air_filtration", "printer_basic_information_accessory#support-air-filtration"); - auto edit_custom_gcode_fn = [this](const t_config_option_key& opt_key) { edit_custom_gcode(opt_key); }; + // Basic info page: yaml-generated structure, hook methods in TabLayoutExtra.cpp + TabPrinter_build_basic_info_layout(*this); + // Machine G-code + Notes pages: yaml-generated + TabPrinter_build_gcode_layout(*this); - const int gcode_field_height = 15; // 150 - const int notes_field_height = 25; // 250 - page = add_options_page(L("Machine G-code"), "custom-gcode_gcode"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("File header G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("file_start_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = 8; - optgroup->append_single_option_line(option); - - optgroup = page->new_optgroup(L("Machine start G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("machine_start_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#machine-start-g-code"); - - optgroup = page->new_optgroup(L("Machine end G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("machine_end_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#machine-end-g-code"); - - optgroup = page->new_optgroup(L("Printing by object G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) { - validate_custom_gcode_cb(this, optgroup, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("printing_by_object_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height; // 150; - optgroup->append_single_option_line(option, "printer_machine_gcode#printing-by-object-g-code"); - - - optgroup = page->new_optgroup(L("Before layer change G-code"),"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("before_layer_change_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#before-layer-change-g-code"); - - optgroup = page->new_optgroup(L("Layer change G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("layer_change_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#layer-change-g-code"); - - optgroup = page->new_optgroup(L("Timelapse G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("time_lapse_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#timelapse-g-code"); - - optgroup = page->new_optgroup(L("Clumping Detection G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, optgroup](const t_config_option_key &opt_key, const boost::any &value) { - validate_custom_gcode_cb(this, optgroup, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("wrapping_detection_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height; // 150; - optgroup->append_single_option_line(option, "printer_machine_gcode#clumping-detection-g-code"); - - optgroup = page->new_optgroup(L("Change filament G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("change_filament_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#change-filament-g-code"); - - optgroup = page->new_optgroup(L("Change extrusion role G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key &opt_key, const boost::any &value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("change_extrusion_role_gcode"); - option.opt.full_width = true; - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#change-extrusion-role-g-code"); - - optgroup = page->new_optgroup(L("Pause G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("machine_pause_gcode"); - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#pause-g-code"); - - optgroup = page->new_optgroup(L("Template Custom G-code"), L"param_gcode", 0); - optgroup->m_on_change = [this, &optgroup_title = optgroup->title](const t_config_option_key& opt_key, const boost::any& value) { - validate_custom_gcode_cb(this, optgroup_title, opt_key, value); - }; - optgroup->edit_custom_gcode = edit_custom_gcode_fn; - option = optgroup->get_option("template_custom_gcode"); - option.opt.is_code = true; - option.opt.height = gcode_field_height;//150; - optgroup->append_single_option_line(option, "printer_machine_gcode#template-custom-g-code"); - - page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Notes"), "note", 0); - option = optgroup->get_option("printer_notes"); - option.opt.full_width = true; - option.opt.height = notes_field_height;//250; - optgroup->append_single_option_line(option); -#if 0 - //page = add_options_page(L("Dependencies"), "advanced"); - // optgroup = page->new_optgroup(L("Profile dependencies")); - - // build_preset_description_line(optgroup.get()); -#endif build_unregular_pages(true); } diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index e654f6c43b..30ff390618 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -573,6 +573,7 @@ private: void add_filament_overrides_page(); void update_filament_overrides_page(const DynamicPrintConfig* printers_config); + void build_extra_layout(); // TabLayoutExtra.cpp: toolchange/ramming/dependencies/notes void update_volumetric_flow_preset_hints(); std::map m_overrides_options; @@ -644,6 +645,11 @@ public: void extruders_count_changed(size_t extruders_count); PageShp build_kinematics_page(); void build_unregular_pages(bool from_initial_build = false); + void build_fff_extra_layout(); // TabLayoutExtra.cpp: Basic info page with bed-shape widget + // Hook methods called from TabPrinter_build_basic_info_layout (TabLayout_generated.cpp) + void layout_hook_printable_space(ConfigOptionsGroup* optgroup); // bed shape widget + void layout_hook_advanced(ConfigOptionsGroup* optgroup); // thumbnail m_on_change + void layout_hook_cooling_fan(ConfigOptionsGroup* optgroup); // multi-option line void on_preset_loaded() override; void init_options_list() override; void msw_rescale() override;