ENH:adjust UI in AmsMapingPopup

jira: none
Change-Id: Ib2e7e642d7a1700abb92eca2546614b2fd7d2bd4
This commit is contained in:
zhou.xu 2025-03-07 15:55:23 +08:00 committed by lane.wei
parent 1522fe5ff2
commit 5c8d620973
4 changed files with 31 additions and 17 deletions

View File

@ -580,7 +580,7 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
m_sizer_ams = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
m_sizer_ams_left = new wxBoxSizer(wxVERTICAL); m_sizer_ams_left = new wxBoxSizer(wxVERTICAL);
m_sizer_ams_right = 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_right_horizonal = new wxBoxSizer(wxHORIZONTAL);
m_sizer_ams_basket_left = new wxBoxSizer(wxVERTICAL); m_sizer_ams_basket_left = new wxBoxSizer(wxVERTICAL);
m_sizer_ams_basket_right = 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_left_marea_panel = new wxPanel(this);
m_right_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); auto sizer_temp = new wxBoxSizer(wxHORIZONTAL);
/*left ext*/ /*left ext*/
m_left_extra_slot = new MappingItem(m_left_marea_panel); 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_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_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->SetForegroundColour(StateColor::darkModeColorFor("0x262E30"));
m_left_tips->SetBackgroundColour(StateColor::darkModeColorFor("0xFFFFFF")); m_left_tips->SetBackgroundColour(StateColor::darkModeColorFor("0xFFFFFF"));
m_left_tips->SetFont(::Label::Body_13); m_left_tips->SetFont(::Label::Body_13);
m_left_tips->SetLabel(m_left_tip_text); 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_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_left_split_ams_sizer, 0, wxEXPAND, 0);
m_sizer_ams_left->Add(m_sizer_ams_basket_left, 0, wxEXPAND|wxTOP, FromDIP(8)); 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(m_left_extra_slot, 0, wxEXPAND|wxTOP, FromDIP(8));
m_sizer_ams_left->Add(sizer_temp, 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->SetForegroundColour(0x262E30);
m_right_tips->SetBackgroundColour(*wxWHITE); m_right_tips->SetBackgroundColour(*wxWHITE);
m_right_tips->SetFont(::Label::Body_13); m_right_tips->SetFont(::Label::Body_13);
m_right_tips->SetLabel(m_right_tip_text); 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->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { reset_ams_info(); });
m_reset_btn->SetBackgroundColour(*wxWHITE); m_reset_btn->SetBackgroundColour(*wxWHITE);
m_reset_btn->SetToolTip(_L("Reset current filament mapping")); m_reset_btn->SetToolTip(_L("Reset current filament mapping"));
m_sizer_ams_right_horizonal->AddStretchSpacer(); m_sizer_ams_right_horizonal->AddStretchSpacer();
m_sizer_ams_right_horizonal->AddSpacer(FromDIP(5)); 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_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_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_right_split_ams_sizer, 0, wxEXPAND, 0);
m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8)); m_sizer_ams_right->Add(m_sizer_ams_basket_right, 0, wxEXPAND|wxTOP, FromDIP(8));

View File

@ -211,6 +211,7 @@ public:
wxBoxSizer *m_sizer_ams{nullptr}; wxBoxSizer *m_sizer_ams{nullptr};
wxBoxSizer *m_sizer_ams_left{nullptr}; wxBoxSizer *m_sizer_ams_left{nullptr};
wxBoxSizer *m_sizer_ams_right{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_right_horizonal{nullptr};
wxBoxSizer* m_sizer_ams_basket_left{ nullptr }; wxBoxSizer* m_sizer_ams_basket_left{ nullptr };
wxBoxSizer* m_sizer_ams_basket_right{ nullptr }; wxBoxSizer* m_sizer_ams_basket_right{ nullptr };
@ -219,8 +220,10 @@ public:
MappingItem* m_left_extra_slot{nullptr}; MappingItem* m_left_extra_slot{nullptr};
MappingItem* m_right_extra_slot{nullptr}; MappingItem* m_right_extra_slot{nullptr};
wxPanel* m_left_marea_panel; wxPanel * m_left_marea_panel{nullptr};
wxPanel* m_right_marea_panel; 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_left_split_ams_sizer{nullptr};
wxBoxSizer * m_right_split_ams_sizer{nullptr}; wxBoxSizer * m_right_split_ams_sizer{nullptr};
Label * m_left_tips{nullptr}; Label * m_left_tips{nullptr};

View File

@ -493,8 +493,11 @@ bool PresetComboBox::add_ams_filaments(std::string selected, bool alias_name)
} }
auto & tray = entry.second; auto & tray = entry.second;
std::string filament_id = tray.opt_string("filament_id", 0u); 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; continue;
}
auto iter = std::find_if(filaments.begin(), filaments.end(), 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; }); [&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()) { if (iter == filaments.end()) {
@ -511,7 +514,6 @@ bool PresetComboBox::add_ams_filaments(std::string selected, bool alias_name)
} }
const_cast<Preset&>(*iter).is_visible = true; const_cast<Preset&>(*iter).is_visible = true;
auto color = tray.opt_string("filament_colour", 0u); 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)); wxBitmap bmp(*get_extruder_color_icon(color, name, icon_width, 16));
auto text = get_preset_name(*iter); auto text = get_preset_name(*iter);
int item_id = Append(text, bmp.ConvertToImage(), &m_first_ams_filament + entry.first); int item_id = Append(text, bmp.ConvertToImage(), &m_first_ams_filament + entry.first);

View File

@ -1368,11 +1368,12 @@ void SyncAmsInfoDialog::deal_only_exist_ext_spool(MachineObject *obj_) {
return; return;
if (!m_append_color_text) { return; } if (!m_append_color_text) { return; }
bool only_exist_ext_spool_flag = m_only_exist_ext_spool_flag = obj_->only_exist_ext_spool(); 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(only_exist_ext_spool_flag ? _L("Synchronize Filament Information") : _L("Synchronize AMS Filament Information"));
SetTitle(wxString::Format(_L("Synchronize %sFilament Information"), temp_str)); m_append_color_text->SetLabel(only_exist_ext_spool_flag ? _L("Unused filaments should also be added to the filament list.") :
m_append_color_text->SetLabel(wxString::Format(_L("Unused %sfilaments should also be added to the filament list."), temp_str)); _L("Unused AMS filaments should also be added to the filament list."));
if (m_map_mode == MapModeEnum::ColorMap) { 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); m_tip_text->SetLabel(m_tip_attention_color_map);
} }
@ -2457,6 +2458,7 @@ void SyncAmsInfoDialog::update_show_status()
if (!obj_->is_info_ready()) { if (!obj_->is_info_ready()) {
if (is_timeout()) { if (is_timeout()) {
BOOST_LOG_TRIVIAL(error) << "check error:machine timeout";
m_ams_mapping_result.clear(); m_ams_mapping_result.clear();
sync_ams_mapping_result(m_ams_mapping_result); sync_ams_mapping_result(m_ams_mapping_result);
show_status(PrintDialogStatus::PrintStatusReadingTimeout); show_status(PrintDialogStatus::PrintStatusReadingTimeout);