diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index 06fabe0a2..18bbac347 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -575,8 +575,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in for (auto el : { "top_surface_line_width", "top_surface_speed" }) toggle_field(el, has_top_solid_infill || (has_spiral_vase && has_bottom_solid_infill)); - // todo multi_extruders: the exact filament id - bool have_default_acceleration = config->opt_float_nullable("default_acceleration", 0) > 0; + bool have_default_acceleration = config->opt_float_nullable("default_acceleration", variant_index) > 0; //BBS for (auto el : { "initial_layer_acceleration", "outer_wall_acceleration", "top_surface_acceleration", "inner_wall_acceleration", "sparse_infill_acceleration" }) toggle_field(el, have_default_acceleration); @@ -675,7 +674,6 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, in bool have_avoid_crossing_perimeters = config->opt_bool("reduce_crossing_wall"); toggle_line("max_travel_detour_distance", have_avoid_crossing_perimeters); - // todo multi_extruders: bool has_overhang_speed = config->opt_bool_nullable("enable_overhang_speed", variant_index); for (auto el : { "overhang_1_4_speed", "overhang_2_4_speed", "overhang_3_4_speed", "overhang_4_4_speed"}) toggle_line(el, has_overhang_speed, variant_index); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 095c58d4f..20527dfd0 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -489,9 +489,6 @@ void Sidebar::priv::hide_rich_tip(wxButton* btn) std::vector get_min_flush_volumes(const DynamicPrintConfig &full_config, size_t nozzle_id) { - //todo multi_extruder: - nozzle_id = 0; - std::vectorextra_flush_volumes; //const auto& full_config = wxGetApp().preset_bundle->full_config(); //auto& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; @@ -1073,10 +1070,15 @@ Sidebar::Sidebar(Plater *parent) const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); const auto& full_config = wxGetApp().preset_bundle->full_config(); - const auto& extra_flush_volumes = get_min_flush_volumes(full_config, 0); // todo multi_extruder: always display nozzle 1 size_t nozzle_nums = full_config.option("nozzle_diameter")->values.size(); + std::vector> extra_flush_volumes; + extra_flush_volumes.resize(nozzle_nums, std::vector()); + for (size_t nozzle_id = 0; nozzle_id < nozzle_nums; ++nozzle_id) { + extra_flush_volumes[nozzle_id] = get_min_flush_volumes(full_config, nozzle_id); + } + std::vector flush_multiplier; ConfigOptionFloats *flush_multi_opt = project_config.option("flush_multiplier"); if (flush_multi_opt) diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 6f41dcbb9..09b5d52bb 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -4337,7 +4337,6 @@ void SelectMachineDialog::reset_and_sync_ams_list() m_filaments.clear(); const auto& full_config = wxGetApp().preset_bundle->full_config(); - const auto& extra_flush_volumes = get_min_flush_volumes(full_config, 0); // todo multi_extruder: always display nozzle 1 size_t nozzle_nums = full_config.option("nozzle_diameter")->values.size(); bool use_double_extruder = nozzle_nums > 1 ? true : false; @@ -4988,7 +4987,7 @@ bool SelectMachineDialog::Show(bool show) else{ m_text_bed_type->Hide(); } - + // set default value when show this dialog if (show) { @@ -5270,6 +5269,8 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) SetMinSize(SELECT_MACHINE_ITEM_SIZE); m_type = type; + m_bitmap = ScalableBitmap(this, "bind_device_ping_code",10); + this->Bind(wxEVT_ENTER_WINDOW, &PinCodePanel::on_mouse_enter, this); this->Bind(wxEVT_LEAVE_WINDOW, &PinCodePanel::on_mouse_leave, this); this->Bind(wxEVT_LEFT_UP, &PinCodePanel::on_mouse_left_up, this); @@ -5314,8 +5315,8 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) dc.SetFont(::Label::Head_13); dc.SetTextForeground(StateColor::darkModeColorFor(SELECT_MACHINE_GREY900)); wxString txt; - if (m_type == 0) { txt = _L("Bind with Pin Code"); } - else if (m_type == 1) { txt = _L("Bind with Access Code"); } + if (m_type == 0) {txt = _L("Bind with Pin Code");} + else if (m_type == 1) {txt = _L("Bind with Access Code");} auto txt_size = dc.GetTextExtent(txt); dc.DrawText(txt, wxPoint(FromDIP(28), (size.y - txt_size.y) / 2)); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 82bf09288..ddf6de756 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4077,7 +4077,7 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) optgroup->append_single_option_line("max_layer_height", "adaptive-layer-height", extruder_idx); optgroup = page->new_optgroup(L("Position"), L"param_retraction", -1, true); - optgroup->append_single_option_line("extruder_offset", "", extruder_idx); + optgroup->append_single_option_line("extruder_offset"); //BBS: don't show retract related config menu in machine page optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 45b9aff85..0ace08da4 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -203,7 +203,7 @@ void WipingDialog::on_dpi_changed(const wxRect &suggested_rect) // Parent dialog for purging volume adjustments - it fathers WipingPanel widget (that contains all controls) and a button to toggle simple/advanced mode: WipingDialog::WipingDialog(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, const std::vector& extruder_colours, - const std::vector&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) + const std::vector>&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, _(L("Flushing volumes for filament change")), @@ -305,7 +305,7 @@ void WipingPanel::create_panels(wxWindow* parent, const int num) { WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, size_t cur_extruder_id, const std::vector& extruder_colours, Button* calc_button, - const std::vector& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) + const std::vector>& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums) : wxPanel(parent,wxID_ANY, wxDefaultPosition, wxDefaultSize/*,wxBORDER_RAISED*/) , m_flush_multiplier(flush_multiplier) , m_matrix(matrix) @@ -441,7 +441,7 @@ WipingPanel::WipingPanel(wxWindow* parent, const std::vector& matrix, con multi_desc_label->SetForegroundColour(g_text_color); m_sizer_advanced->Add(multi_desc_label, 0, wxEXPAND | wxLEFT, TEXT_BEG_PADDING); - wxString min_flush_str = wxString::Format(_L("Suggestion: Flushing Volume in range [%d, %d]"),*std::min_element(m_min_flush_volume.begin(), m_min_flush_volume.end()), m_max_flush_volume); + wxString min_flush_str = wxString::Format(_L("Suggestion: Flushing Volume in range [%d, %d]"),*std::min_element(m_min_flush_volume[m_cur_extruder_id].begin(), m_min_flush_volume[m_cur_extruder_id].end()), m_max_flush_volume); m_min_flush_label = new wxStaticText(m_page_advanced, wxID_ANY, min_flush_str, wxDefaultPosition, wxDefaultSize, 0); m_min_flush_label->SetForegroundColour(g_text_color); m_sizer_advanced->Add(m_min_flush_label, 0, wxEXPAND | wxLEFT, TEXT_BEG_PADDING); @@ -628,7 +628,7 @@ void WipingPanel::update_warning_texts() auto text_box = box_vec[j]; wxString str = text_box->GetValue(); int actual_volume = wxAtoi(str); - if (actual_volume < m_min_flush_volume[i] || actual_volume > m_max_flush_volume) { + if (actual_volume < m_min_flush_volume[m_cur_extruder_id][i] || actual_volume > m_max_flush_volume) { if (text_box->GetForegroundColour() != g_warning_color) { text_box->SetForegroundColour(g_warning_color); text_box->Refresh(); @@ -693,7 +693,7 @@ void WipingPanel::calc_flushing_volumes() const wxColour& from = multi_colors[from_idx][i]; for (int j = 0; j < multi_colors[to_idx].size(); ++j) { const wxColour& to = multi_colors[to_idx][j]; - int volume = calc_flushing_volume(from, to, m_min_flush_volume[from_idx]); + int volume = calc_flushing_volume(from, to, m_min_flush_volume[m_cur_extruder_id][from_idx]); flushing_volume = std::max(flushing_volume, volume); } } diff --git a/src/slic3r/GUI/WipeTowerDialog.hpp b/src/slic3r/GUI/WipeTowerDialog.hpp index 9b5a20fb7..45ac8d008 100644 --- a/src/slic3r/GUI/WipeTowerDialog.hpp +++ b/src/slic3r/GUI/WipeTowerDialog.hpp @@ -17,7 +17,7 @@ public: // BBS WipingPanel(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, size_t cur_extruder_id, const std::vector& extruder_colours, Button* calc_button, - const std::vector& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); + const std::vector>& extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); std::vector read_matrix_values(); std::vector read_extruders_values(); void toggle_advanced(bool user_action = false); @@ -45,7 +45,7 @@ private: bool advanced_matches_simple(); int calc_flushing_volume(const wxColour& from, const wxColour& to,int min_flush_volume); void update_warning_texts(); - + std::vector m_old; std::vector m_new; std::vector> edit_boxes; @@ -65,7 +65,7 @@ private: std::vector icon_list1; std::vector icon_list2; - const std::vector m_min_flush_volume; + const std::vector> m_min_flush_volume; const int m_max_flush_volume; wxTextCtrl* m_flush_multiplier_ebox = nullptr; @@ -86,11 +86,11 @@ class WipingDialog : public Slic3r::GUI::DPIDialog { public: WipingDialog(wxWindow* parent, const std::vector& matrix, const std::vector& extruders, const std::vector& extruder_colours, - const std::vector&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); + const std::vector>&extra_flush_volume, const std::vector& flush_multiplier, size_t nozzle_nums); std::vector get_matrix() const { return m_output_matrix; } std::vector get_extruders() const { return m_output_extruders; } wxBoxSizer* create_btn_sizer(long flags); - + float get_flush_multiplier() { if (m_panel_wiping == nullptr)