From 5c8d62097384836a1a6d496983734c4e3220baaa Mon Sep 17 00:00:00 2001 From: "zhou.xu" Date: Fri, 7 Mar 2025 15:55:23 +0800 Subject: [PATCH] ENH:adjust UI in AmsMapingPopup jira: none Change-Id: Ib2e7e642d7a1700abb92eca2546614b2fd7d2bd4 --- src/slic3r/GUI/AmsMappingPopup.cpp | 25 ++++++++++++++++--------- src/slic3r/GUI/AmsMappingPopup.hpp | 7 +++++-- src/slic3r/GUI/PresetComboBoxes.cpp | 6 ++++-- src/slic3r/GUI/SyncAmsInfoDialog.cpp | 10 ++++++---- 4 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 490313d69..23db6ae2a 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -580,7 +580,7 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) : m_sizer_ams = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams_left = new wxBoxSizer(wxVERTICAL); m_sizer_ams_right = new wxBoxSizer(wxVERTICAL); - //m_sizer_ams_left_horizonal = new wxBoxSizer(wxHORIZONTAL); + m_sizer_ams_left_horizonal = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams_right_horizonal = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams_basket_left = new wxBoxSizer(wxVERTICAL); m_sizer_ams_basket_right = new wxBoxSizer(wxVERTICAL); @@ -606,7 +606,8 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) : m_left_marea_panel = new wxPanel(this); m_right_marea_panel = new wxPanel(this); - + m_left_first_text_panel = new wxPanel(m_left_marea_panel); + m_right_first_text_panel = new wxPanel(m_right_marea_panel); auto sizer_temp = new wxBoxSizer(wxHORIZONTAL); /*left ext*/ m_left_extra_slot = new MappingItem(m_left_marea_panel); @@ -636,13 +637,15 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) : m_left_tip_text = _L("Select filament that installed to the left nozzle"); m_right_tip_text = _L("Select filament that installed to the right nozzle"); - m_left_tips = new Label(m_left_marea_panel); + m_left_tips = new Label(m_left_first_text_panel); m_left_tips->SetForegroundColour(StateColor::darkModeColorFor("0x262E30")); m_left_tips->SetBackgroundColour(StateColor::darkModeColorFor("0xFFFFFF")); m_left_tips->SetFont(::Label::Body_13); m_left_tips->SetLabel(m_left_tip_text); + m_sizer_ams_left_horizonal->Add(m_left_tips, 0, wxEXPAND, 0); + m_left_first_text_panel->SetSizer(m_sizer_ams_left_horizonal); - m_sizer_ams_left->Add(m_left_tips, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); + m_sizer_ams_left->Add(m_left_first_text_panel, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); m_left_split_ams_sizer = create_split_sizer(m_left_marea_panel, _L("Left AMS")); m_sizer_ams_left->Add(m_left_split_ams_sizer, 0, wxEXPAND, 0); m_sizer_ams_left->Add(m_sizer_ams_basket_left, 0, wxEXPAND|wxTOP, FromDIP(8)); @@ -650,23 +653,27 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) : //m_sizer_ams_left->Add(m_left_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8)); m_sizer_ams_left->Add(sizer_temp, 0, wxEXPAND | wxTOP, FromDIP(8)); - m_right_tips = new Label(m_right_marea_panel); + m_right_tips = new Label(m_right_first_text_panel); m_right_tips->SetForegroundColour(0x262E30); m_right_tips->SetBackgroundColour(*wxWHITE); m_right_tips->SetFont(::Label::Body_13); m_right_tips->SetLabel(m_right_tip_text); - m_sizer_ams_right_horizonal->Add(m_right_tips, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); + m_sizer_ams_right_horizonal->Add(m_right_tips, 0, wxEXPAND , 0); - m_reset_btn = new ScalableButton(m_right_marea_panel, wxID_ANY, "text_undo", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); + m_reset_btn = new ScalableButton(m_right_first_text_panel, wxID_ANY, "text_undo", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 14); m_reset_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { reset_ams_info(); }); m_reset_btn->SetBackgroundColour(*wxWHITE); m_reset_btn->SetToolTip(_L("Reset current filament mapping")); m_sizer_ams_right_horizonal->AddStretchSpacer(); m_sizer_ams_right_horizonal->AddSpacer(FromDIP(5)); - m_sizer_ams_right_horizonal->Add(m_reset_btn, 0, wxEXPAND | wxBOTTOM, FromDIP(10)); + m_sizer_ams_right_horizonal->Add(m_reset_btn, 0, wxALIGN_TOP | wxEXPAND ); m_reset_btn->Hide(); + m_right_first_text_panel->SetSizer(m_sizer_ams_right_horizonal); + const int same_height = 15; + m_left_first_text_panel->SetMaxSize(wxSize(-1, FromDIP(same_height))); + m_right_first_text_panel->SetMaxSize(wxSize(-1, FromDIP(same_height))); - m_sizer_ams_right->Add(m_sizer_ams_right_horizonal, 0, wxEXPAND, 0); + m_sizer_ams_right->Add(m_right_first_text_panel, 0, wxEXPAND | wxBOTTOM, FromDIP(8)); m_right_split_ams_sizer = create_split_sizer(m_right_marea_panel, _L("Right AMS")); m_sizer_ams_right->Add(m_right_split_ams_sizer, 0, wxEXPAND, 0); m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8)); diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index 94b50211a..236700cd5 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -211,6 +211,7 @@ public: wxBoxSizer *m_sizer_ams{nullptr}; wxBoxSizer *m_sizer_ams_left{nullptr}; wxBoxSizer *m_sizer_ams_right{nullptr}; + wxBoxSizer *m_sizer_ams_left_horizonal{nullptr}; wxBoxSizer *m_sizer_ams_right_horizonal{nullptr}; wxBoxSizer* m_sizer_ams_basket_left{ nullptr }; wxBoxSizer* m_sizer_ams_basket_right{ nullptr }; @@ -219,8 +220,10 @@ public: MappingItem* m_left_extra_slot{nullptr}; MappingItem* m_right_extra_slot{nullptr}; - wxPanel* m_left_marea_panel; - wxPanel* m_right_marea_panel; + wxPanel * m_left_marea_panel{nullptr}; + wxPanel * m_right_marea_panel{nullptr}; + wxPanel * m_left_first_text_panel{nullptr}; + wxPanel * m_right_first_text_panel{nullptr}; wxBoxSizer * m_left_split_ams_sizer{nullptr}; wxBoxSizer * m_right_split_ams_sizer{nullptr}; Label * m_left_tips{nullptr}; diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 5444f4e0d..c0ccbe474 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -493,8 +493,11 @@ bool PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) } auto & tray = entry.second; std::string filament_id = tray.opt_string("filament_id", 0u); - if (filament_id.empty()) + auto name = tray.opt_string("tray_name", 0u); + if (filament_id.empty()) { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": %1% 's filament_id is empty.") % name; continue; + } auto iter = std::find_if(filaments.begin(), filaments.end(), [&filament_id, this](auto &f) { return f.is_compatible && m_collection->get_preset_base(f) == &f && f.filament_id == filament_id; }); if (iter == filaments.end()) { @@ -511,7 +514,6 @@ bool PresetComboBox::add_ams_filaments(std::string selected, bool alias_name) } const_cast(*iter).is_visible = true; auto color = tray.opt_string("filament_colour", 0u); - auto name = tray.opt_string("tray_name", 0u); wxBitmap bmp(*get_extruder_color_icon(color, name, icon_width, 16)); auto text = get_preset_name(*iter); int item_id = Append(text, bmp.ConvertToImage(), &m_first_ams_filament + entry.first); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index 2335b20b2..55027424b 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -1368,11 +1368,12 @@ void SyncAmsInfoDialog::deal_only_exist_ext_spool(MachineObject *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)); + SetTitle(only_exist_ext_spool_flag ? _L("Synchronize Filament Information") : _L("Synchronize AMS Filament Information")); + m_append_color_text->SetLabel(only_exist_ext_spool_flag ? _L("Unused filaments should also be added to the filament list.") : + _L("Unused AMS filaments should also be added to the filament list.")); 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_attention_color_map = only_exist_ext_spool_flag ? _L("Only synchronize filament type and color, not including slot information.") : + _L("Only synchronize filament type and color, not including AMS slot information."); m_tip_text->SetLabel(m_tip_attention_color_map); } @@ -2457,6 +2458,7 @@ void SyncAmsInfoDialog::update_show_status() if (!obj_->is_info_ready()) { if (is_timeout()) { + BOOST_LOG_TRIVIAL(error) << "check error:machine timeout"; m_ams_mapping_result.clear(); sync_ams_mapping_result(m_ams_mapping_result); show_status(PrintDialogStatus::PrintStatusReadingTimeout);