Port the filament-change stop button, hub version row and HMS fallback

This commit is contained in:
SoftFever
2026-07-17 09:41:01 +08:00
parent 80d3c3908d
commit 2ee0bbde54
7 changed files with 87 additions and 3 deletions

View File

@@ -221,6 +221,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin
createFilaTrackSwitchWidgets(m_main_left_sizer);
createRotaryWidgets(m_main_left_sizer); // Orca: accessory firmware version display
createExhaustFan(m_main_left_sizer); // Orca: accessory firmware version display
createAmshubWidgets(m_main_left_sizer); // Orca: accessory firmware version display
// nozzle rack widgets (H2C induction hotend rack; hidden unless GetNozzleRack()->IsSupported())
createNozzleRackWidgets(m_main_left_sizer);
@@ -473,6 +474,27 @@ void MachineInfoPanel::createExhaustFan(wxBoxSizer* main_left_sizer)
main_left_sizer->Add(m_exhaustfan_sizer, 0, wxEXPAND, 0);
}
// Orca: accessory firmware version display (device photo asset not shipped, so no left icon)
void MachineInfoPanel::createAmshubWidgets(wxBoxSizer* main_left_sizer)
{
m_amshub_line_above = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL);
m_amshub_line_above->SetBackgroundColour(wxColour(206, 206, 206));
main_left_sizer->Add(m_amshub_line_above, 0, wxEXPAND | wxLEFT, FromDIP(40));
m_amshub_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200)));
wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL);
content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5));
m_amshub_version = new uiDeviceUpdateVersion(this, wxID_ANY);
content_sizer->Add(m_amshub_version, 0, wxEXPAND, 0);
m_amshub_sizer = new wxBoxSizer(wxHORIZONTAL);
m_amshub_sizer->Add(m_amshub_img, 0, wxALIGN_TOP | wxALL, FromDIP(5));
m_amshub_sizer->Add(content_sizer, 1, wxEXPAND, 0);
main_left_sizer->Add(m_amshub_sizer, 0, wxEXPAND, 0);
}
void MachineInfoPanel::msw_rescale()
{
rescale_bitmaps();
@@ -615,6 +637,7 @@ void MachineInfoPanel::update(MachineObject* obj)
update_filatrack(obj);
update_rotary(obj); // Orca: accessory firmware version display
update_exhaustfan(obj); // Orca: accessory firmware version display
update_amshub(obj); // Orca: accessory firmware version display
update_nozzle_rack(obj);
//update progress
@@ -1241,6 +1264,24 @@ void MachineInfoPanel::update_exhaustfan(MachineObject* obj)
}
}
// Orca: AMS-hub / filament-buffer firmware version display (backing parse landed in cluster 2).
// Shown only when the kept m_ahb_panel path (module_vers["ahb"]) does NOT fire, so no printer gets a
// double AMS-hub row. X2D/P2S report the buffer via amshub_version_info.product_name instead of module_vers.
void MachineInfoPanel::update_amshub(MachineObject* obj)
{
bool ahb_panel_fires = obj && obj->online_ahb
&& obj->module_vers.find("ahb") != obj->module_vers.end() && !obj->is_series_o();
if (obj && !ahb_panel_fires && obj->amshub_version_info.isValid())
{
m_amshub_version->UpdateInfo(obj->amshub_version_info);
show_amshub(true);
}
else
{
show_amshub(false);
}
}
void MachineInfoPanel::show_status(int status, std::string upgrade_status_str)
{
if (last_status == status && last_status_str == upgrade_status_str) return;
@@ -1407,6 +1448,17 @@ void MachineInfoPanel::show_exhaustfan(bool show)
}
}
// Orca: accessory firmware version display
void MachineInfoPanel::show_amshub(bool show)
{
if (m_amshub_version->IsShown() != show)
{
m_amshub_img->Show(show);
m_amshub_line_above->Show(show);
m_amshub_version->Show(show);
}
}
void MachineInfoPanel::createNozzleRackWidgets(wxBoxSizer *main_left_sizer)
{
// horizontal line above