diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index b70fa36a6..33a7a58db 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -711,6 +711,7 @@ public: std::chrono::system_clock::time_point extrusion_cali_set_hold_start; std::string extrusion_cali_filament_name; + bool only_exist_ext_spool() { return amsList.empty(); } bool is_in_extrusion_cali(); bool is_extrusion_cali_finished(); void _parse_tray_now(std::string tray_now); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index e2e0335b5..2093e61ae 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -3025,6 +3025,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) } int dlg_res{(int) wxID_CANCEL}; if (m_sync_dlg->is_need_show()) { + m_sync_dlg->deal_only_exist_ext_spool(obj); if (m_sync_dlg->is_dirty_filament()) { wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0], false, "", false, true); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); @@ -3265,6 +3266,7 @@ void Sidebar::deal_btn_sync() { } void Sidebar::pop_sync_nozzle_and_ams_dialog() { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " begin pop_sync_nozzle_and_ams_dialog"; wxTheApp->CallAfter([this]() { SyncNozzleAndAmsDialog::InputInfo temp_na_info; wxPoint big_btn_pt; diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index a7e7c6a7e..8a66cc3da 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -1340,6 +1340,7 @@ bool SyncAmsInfoDialog::do_ams_mapping(MachineObject *obj_) BOOST_LOG_TRIVIAL(info) << "ams_mapping_array2=" << ams_array2; BOOST_LOG_TRIVIAL(info) << "ams_mapping_info=" << mapping_info; } + deal_only_exist_ext_spool(obj_); show_thumbnail_page(); return obj_->is_valid_mapping_result(m_ams_mapping_result); } else { @@ -1354,6 +1355,7 @@ bool SyncAmsInfoDialog::do_ams_mapping(MachineObject *obj_) } } sync_ams_mapping_result(m_ams_mapping_result); + deal_only_exist_ext_spool(obj_); show_thumbnail_page(); return is_valid; } @@ -1361,6 +1363,27 @@ bool SyncAmsInfoDialog::do_ams_mapping(MachineObject *obj_) return true; } +void SyncAmsInfoDialog::deal_only_exist_ext_spool(MachineObject *obj_) { + if (!obj_) + return; + if (!m_append_color_text) { return; } + bool only_exist_ext_spool_flag = m_only_exist_ext_spool_flag = obj_->only_exist_ext_spool(); + auto temp_str = only_exist_ext_spool_flag ? "" : "AMS "; + SetTitle(wxString::Format(_L("Synchronize %sFilament Information"), temp_str)); + m_append_color_text->SetLabel(wxString::Format(_L("Unused %sfilaments should also be added to the filament list."), temp_str)); + if (m_map_mode == MapModeEnum::ColorMap) { + m_tip_attention_color_map = wxString::Format(_L("Only synchronize filament type and color, not including %sslot information."), temp_str); + m_tip_text->SetLabel(m_tip_attention_color_map); + + } + if (m_ams_or_ext_text_in_colormap) { + m_ams_or_ext_text_in_colormap->SetLabel((only_exist_ext_spool_flag ? _L("Ext spool") : _L("AMS")) + ":"); + } + if (m_ams_or_ext_text_in_override) { + m_ams_or_ext_text_in_override->SetLabel((only_exist_ext_spool_flag ? _L("Ext spool") : _L("AMS")) + ":"); + } +} + void SyncAmsInfoDialog::show_thumbnail_page() { m_pages->ChangeSelection(1); @@ -2881,15 +2904,19 @@ void SyncAmsInfoDialog::reset_and_sync_ams_list() wxBoxSizer *ams_tip_sizer = new wxBoxSizer(wxVERTICAL); if (is_first_row) { is_first_row = false; - auto tip0_text = new wxStaticText(m_filament_panel, wxID_ANY, _CTX(L_CONTEXT("Original", "Sync_AMS"), "Sync_AMS") + ":"); - tip0_text->SetForegroundColour(wxColour(107, 107, 107, 100)); - tip0_text->SetFont(::Label::Head_12); - ams_tip_sizer->Add(tip0_text, 0, wxALIGN_LEFT | wxTOP, FromDIP(6)); + if (!m_original_in_colormap) { + m_original_in_colormap = new wxStaticText(m_filament_panel, wxID_ANY, _CTX(L_CONTEXT("Original", "Sync_AMS"), "Sync_AMS") + ":"); + m_original_in_colormap->SetForegroundColour(wxColour(107, 107, 107, 100)); + m_original_in_colormap->SetFont(::Label::Head_12); + } + ams_tip_sizer->Add(m_original_in_colormap, 0, wxALIGN_LEFT | wxTOP, FromDIP(6)); - auto tip1_text = new wxStaticText(m_filament_panel, wxID_ANY, _L("AMS") + ":"); - tip1_text->SetForegroundColour(wxColour(107, 107, 107, 100)); - tip1_text->SetFont(::Label::Head_12); - ams_tip_sizer->Add(tip1_text, 0, wxALIGN_LEFT | wxTOP, FromDIP(9)); + if (!m_ams_or_ext_text_in_colormap) { + m_ams_or_ext_text_in_colormap = new wxStaticText(m_filament_panel, wxID_ANY, _L("AMS") + ":"); + m_ams_or_ext_text_in_colormap->SetForegroundColour(wxColour(107, 107, 107, 100)); + m_ams_or_ext_text_in_colormap->SetFont(::Label::Head_12); + } + ams_tip_sizer->Add(m_ams_or_ext_text_in_colormap, 0, wxALIGN_LEFT | wxTOP, FromDIP(9)); } m_sizer_ams_mapping->Add(ams_tip_sizer, 0, wxALIGN_LEFT | wxTOP, FromDIP(2)); contronal_index++; @@ -3085,13 +3112,20 @@ void SyncAmsInfoDialog::generate_override_fix_ams_list() wxBoxSizer *ams_tip_sizer = new wxBoxSizer(wxVERTICAL); if (is_first_row) { is_first_row = false; - auto tip0_text = new wxStaticText(m_fix_filament_panel, wxID_ANY, _CTX(L_CONTEXT("Original", "Sync_AMS"), "Sync_AMS")); - tip0_text->SetForegroundColour(wxColour(107, 107, 107, 100)); - ams_tip_sizer->Add(tip0_text, 0, wxALIGN_LEFT | wxTOP, FromDIP(2)); + if (!m_original_in_override) { + m_original_in_override = new wxStaticText(m_fix_filament_panel, wxID_ANY, _CTX(L_CONTEXT("Original", "Sync_AMS"), "Sync_AMS") + ":"); + m_original_in_override->SetForegroundColour(wxColour(107, 107, 107, 100)); + m_original_in_override->SetFont(::Label::Head_12); + } + ams_tip_sizer->Add(m_original_in_override, 0, wxALIGN_LEFT | wxTOP, FromDIP(6)); - auto tip1_text = new wxStaticText(m_fix_filament_panel, wxID_ANY, _L("AMS")); - tip1_text->SetForegroundColour(wxColour(107, 107, 107, 100)); - ams_tip_sizer->Add(tip1_text, 0, wxALIGN_LEFT | wxTOP, FromDIP(6)); + if (!m_ams_or_ext_text_in_override) { + auto text = (m_only_exist_ext_spool_flag ? _L("Ext spool") : _L("AMS")) + ":"; + m_ams_or_ext_text_in_override = new wxStaticText(m_fix_filament_panel, wxID_ANY, text); + m_ams_or_ext_text_in_override->SetForegroundColour(wxColour(107, 107, 107, 100)); + m_ams_or_ext_text_in_override->SetFont(::Label::Head_12); + } + ams_tip_sizer->Add(m_ams_or_ext_text_in_override, 0, wxALIGN_LEFT | wxTOP, FromDIP(9)); } m_fix_sizer_ams_mapping->Add(ams_tip_sizer, 0, wxALIGN_LEFT | wxTOP, FromDIP(2)); contronal_index++; diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index b5b41a770..0366a7618 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -18,6 +18,7 @@ class CapsuleButton; class SyncAmsInfoDialog : public DPIDialog { enum PageType { ptColorMap = 0, ptOverride }; + bool m_only_exist_ext_spool_flag{false}; int m_current_filament_id{0}; int m_print_plate_idx{0}; int m_print_plate_total{0}; @@ -87,7 +88,10 @@ protected: Label * m_statictext_ams_msg{nullptr}; Label * m_text_printer_msg{nullptr}; wxStaticText * m_staticText_bed_title{nullptr}; - wxStaticText * m_stext_sending{nullptr}; + wxStaticText * m_original_in_colormap{nullptr}; + wxStaticText * m_original_in_override{nullptr}; + wxStaticText * m_ams_or_ext_text_in_colormap{nullptr}; + wxStaticText * m_ams_or_ext_text_in_override{nullptr}; wxTimer * m_refresh_timer{nullptr}; ScalableBitmap * ams_mapping_help_icon{nullptr}; @@ -208,6 +212,7 @@ public: int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path); void set_print_type(PrintFromType type) { m_print_type = type; }; bool do_ams_mapping(MachineObject *obj_); + void deal_only_exist_ext_spool(MachineObject *obj_); void show_thumbnail_page(); bool get_ams_mapping_result(std::string &mapping_array_str, std::string &mapping_array_str2, std::string &ams_mapping_info); bool build_nozzles_info(std::string &nozzles_info);