ENH:Reduce the number of page faults in AMS

Change-Id: I4bfb048ec62c35b515eecbb70c175fa0975d7f92
This commit is contained in:
tao wang 2024-09-26 20:57:42 +08:00 committed by Lane.Wei
parent 872978d61b
commit 791be19547
9 changed files with 166 additions and 124 deletions

View File

@ -284,21 +284,12 @@ void MonitorPanel::select_machine(std::string machine_sn)
wxQueueEvent(this, event); wxQueueEvent(this, event);
} }
void MonitorPanel::on_update_all(wxMouseEvent &event)
{
if (update_flag) {
update_all();
Layout();
Refresh();
}
}
void MonitorPanel::on_timer(wxTimerEvent& event) void MonitorPanel::on_timer(wxTimerEvent& event)
{ {
if (update_flag) { if (update_flag) {
update_all(); update_all();
Layout(); Layout();
Refresh();
} }
} }
@ -314,6 +305,8 @@ void MonitorPanel::on_update_all(wxMouseEvent &event)
if (!dev->set_selected_machine(event.GetString().ToStdString())) if (!dev->set_selected_machine(event.GetString().ToStdString()))
return; return;
m_status_info_panel->reset_ams_group_show_flag();
set_default(); set_default();
update_all(); update_all();
@ -324,7 +317,6 @@ void MonitorPanel::on_update_all(wxMouseEvent &event)
GUI::wxGetApp().sidebar().load_ams_list(obj_->dev_id, obj_); GUI::wxGetApp().sidebar().load_ams_list(obj_->dev_id, obj_);
Layout(); Layout();
Refresh();
} }
void MonitorPanel::on_printer_clicked(wxMouseEvent &event) void MonitorPanel::on_printer_clicked(wxMouseEvent &event)
@ -350,8 +342,8 @@ void MonitorPanel::on_printer_clicked(wxMouseEvent &event)
void MonitorPanel::on_size(wxSizeEvent &event) void MonitorPanel::on_size(wxSizeEvent &event)
{ {
Layout(); //Layout();
Refresh(); //Refresh();
} }
void MonitorPanel::update_all() void MonitorPanel::update_all()

View File

@ -132,7 +132,6 @@ public:
StatusPanel* get_status_panel() {return m_status_info_panel;}; StatusPanel* get_status_panel() {return m_status_info_panel;};
void select_machine(std::string machine_sn); void select_machine(std::string machine_sn);
void on_update_all(wxMouseEvent &event);
void on_timer(wxTimerEvent& event); void on_timer(wxTimerEvent& event);
void on_select_printer(wxCommandEvent& event); void on_select_printer(wxCommandEvent& event);
void on_printer_clicked(wxMouseEvent &event); void on_printer_clicked(wxMouseEvent &event);

View File

@ -1552,13 +1552,15 @@ wxBoxSizer *StatusBasePanel::create_ams_group(wxWindow *parent)
void StatusBasePanel::show_ams_group(bool show) void StatusBasePanel::show_ams_group(bool show)
{ {
if (m_show_ams_group != show || m_show_ams_group_reset) {
m_ams_control->Show(true); m_ams_control->Show(true);
m_ams_control_box->Show(true); m_ams_control_box->Show(true);
m_ams_control->show_noams_mode(); m_ams_control->show_noams_mode();
if (m_show_ams_group != show) { if (m_show_ams_group != show) { Fit(); }
Fit();
}
m_show_ams_group = show; m_show_ams_group = show;
m_show_ams_group_reset = false;
Layout();
}
} }
void StatusPanel::update_camera_state(MachineObject* obj) void StatusPanel::update_camera_state(MachineObject* obj)
@ -2008,6 +2010,7 @@ bool StatusPanel::is_task_changed(MachineObject* obj)
void StatusPanel::update(MachineObject *obj) void StatusPanel::update(MachineObject *obj)
{ {
if (!obj) return; if (!obj) return;
m_project_task_panel->Freeze(); m_project_task_panel->Freeze();
update_subtask(obj); update_subtask(obj);
@ -2017,16 +2020,12 @@ void StatusPanel::update(MachineObject *obj)
auto delay1 = std::chrono::duration_cast<std::chrono::milliseconds>(obj->last_utc_time - std::chrono::system_clock::now()).count(); auto delay1 = std::chrono::duration_cast<std::chrono::milliseconds>(obj->last_utc_time - std::chrono::system_clock::now()).count();
auto delay2 = std::chrono::duration_cast<std::chrono::milliseconds>(obj->last_push_time - std::chrono::system_clock::now()).count(); auto delay2 = std::chrono::duration_cast<std::chrono::milliseconds>(obj->last_push_time - std::chrono::system_clock::now()).count();
auto delay = wxString::Format(" %ld/%ld", delay1, delay2); auto delay = wxString::Format(" %ld/%ld", delay1, delay2);
m_staticText_timelapse m_staticText_timelapse->SetLabel((obj->is_lan_mode_printer() ? "Local Mqtt" : obj->is_tunnel_mqtt ? "Tunnel Mqtt" : "Cloud Mqtt") + delay);
->SetLabel((obj->is_lan_mode_printer() ? "Local Mqtt" : obj->is_tunnel_mqtt ? "Tunnel Mqtt" : "Cloud Mqtt") + delay); m_bmToggleBtn_timelapse->Enable(!obj->is_lan_mode_printer());
m_bmToggleBtn_timelapse m_bmToggleBtn_timelapse->SetValue(obj->is_tunnel_mqtt);
->Enable(!obj->is_lan_mode_printer());
m_bmToggleBtn_timelapse
->SetValue(obj->is_tunnel_mqtt);
#endif #endif
m_machine_ctrl_panel->Freeze(); //m_machine_ctrl_panel->Freeze();
if (obj->is_in_printing() && !obj->can_resume()) if (obj->is_in_printing() && !obj->can_resume())
show_printing_status(false, true); show_printing_status(false, true);
else else
@ -2065,7 +2064,6 @@ void StatusPanel::update(MachineObject *obj)
} else { } else {
m_options_btn->Hide(); m_options_btn->Hide();
} }
m_parts_btn->Show(); m_parts_btn->Show();
//support edit chamber temp //support edit chamber temp
@ -2082,14 +2080,13 @@ void StatusPanel::update(MachineObject *obj)
if (obj->get_printer_series() == PrinterSeries::SERIES_X1) { if (obj->get_printer_series() == PrinterSeries::SERIES_X1) {
m_tempCtrl_chamber->SetTagTemp(TEMP_BLANK_STR); m_tempCtrl_chamber->SetTagTemp(TEMP_BLANK_STR);
}if (obj->get_printer_series() == PrinterSeries::SERIES_P1P) }
if (obj->get_printer_series() == PrinterSeries::SERIES_P1P)
{ {
m_tempCtrl_chamber->SetLabel(TEMP_BLANK_STR); m_tempCtrl_chamber->SetLabel(TEMP_BLANK_STR);
m_tempCtrl_chamber->GetTextCtrl()->SetValue(TEMP_BLANK_STR); m_tempCtrl_chamber->GetTextCtrl()->SetValue(TEMP_BLANK_STR);
} }
//m_tempCtrl_chamber->Disable();
} }
if (!obj->dev_connection_type.empty()) { if (!obj->dev_connection_type.empty()) {
@ -2114,7 +2111,7 @@ void StatusPanel::update(MachineObject *obj)
update_camera_state(obj); update_camera_state(obj);
m_machine_ctrl_panel->Thaw(); //m_machine_ctrl_panel->Thaw();
} }
void StatusPanel::show_recenter_dialog() { void StatusPanel::show_recenter_dialog() {
@ -2366,12 +2363,12 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj)
if (obj->can_unload_filament()) { if (obj->can_unload_filament()) {
if (!m_button_unload->IsShown()) { if (!m_button_unload->IsShown()) {
m_button_unload->Show(); m_button_unload->Show();
m_button_unload->GetParent()->Layout(); //m_button_unload->GetParent()->Layout();
} }
} else { } else {
if (m_button_unload->IsShown()) { if (m_button_unload->IsShown()) {
m_button_unload->Hide(); m_button_unload->Hide();
m_button_unload->GetParent()->Layout(); //m_button_unload->GetParent()->Layout();
} }
} }
@ -2572,7 +2569,6 @@ void StatusPanel::update_ams(MachineObject *obj)
m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode); m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode);
show_ams_group(false); show_ams_group(false);
m_ams_control->show_auto_refill(false); m_ams_control->show_auto_refill(false);
} }
else { else {
@ -2582,7 +2578,6 @@ void StatusPanel::update_ams(MachineObject *obj)
m_ams_control->show_auto_refill(true); m_ams_control->show_auto_refill(true);
} }
if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_tray, obj); if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_tray, obj);
if (m_filament_setting_dlg) m_filament_setting_dlg->update(); if (m_filament_setting_dlg) m_filament_setting_dlg->update();
@ -2592,18 +2587,6 @@ void StatusPanel::update_ams(MachineObject *obj)
info.ams_id = ams->first; info.ams_id = ams->first;
if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) ams_info.push_back(info); if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) ams_info.push_back(info);
} }
//if (obj->ams_exist_bits != last_ams_exist_bits || obj->tray_exist_bits != last_tray_exist_bits || obj->tray_is_bbl_bits != last_tray_is_bbl_bits ||
// obj->tray_read_done_bits != last_read_done_bits || obj->ams_version != last_ams_version) {
// m_ams_control->UpdateAms(ams_info, false);
// // select current ams
// //if (!obj->m_ams_id.empty()) m_ams_control->SwitchAms(obj->m_ams_id);
// last_tray_exist_bits = obj->tray_exist_bits;
// last_ams_exist_bits = obj->ams_exist_bits;
// last_tray_is_bbl_bits = obj->tray_is_bbl_bits;
// last_read_done_bits = obj->tray_read_done_bits;
// last_ams_version = obj->ams_version;
//}
// must select a current can // must select a current can
m_ams_control->UpdateAms(ams_info, false); m_ams_control->UpdateAms(ams_info, false);
@ -2643,7 +2626,6 @@ void StatusPanel::update_ams(MachineObject *obj)
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->m_ams_id, obj->vt_tray.get_color()); m_ams_control->SetExtruder(obj->is_filament_at_extruder(), true, obj->m_ams_id, obj->vt_tray.get_color());
} else { } else {
m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id)); m_ams_control->SetExtruder(obj->is_filament_at_extruder(), false, obj->m_ams_id, m_ams_control->GetCanColour(obj->m_ams_id, obj->m_tray_id));
} }
if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) { if (obj->ams_status_main == AMS_STATUS_MAIN_FILAMENT_CHANGE) {

View File

@ -374,6 +374,7 @@ protected:
wxBoxSizer* m_ams_list; wxBoxSizer* m_ams_list;
wxStaticText * m_ams_debug; wxStaticText * m_ams_debug;
bool m_show_ams_group{false}; bool m_show_ams_group{false};
bool m_show_ams_group_reset{true};
AMSControl* m_ams_control; AMSControl* m_ams_control;
StaticBox* m_ams_control_box; StaticBox* m_ams_control_box;
wxStaticBitmap *m_ams_extruder_img; wxStaticBitmap *m_ams_extruder_img;
@ -442,6 +443,7 @@ public:
wxBoxSizer *create_ams_group(wxWindow *parent); wxBoxSizer *create_ams_group(wxWindow *parent);
wxBoxSizer *create_settings_group(wxWindow *parent); wxBoxSizer *create_settings_group(wxWindow *parent);
void reset_ams_group_show_flag() {m_show_ams_group_reset = true;};
void show_ams_group(bool show = true); void show_ams_group(bool show = true);
MediaPlayCtrl* get_media_play_ctrl() {return m_media_play_ctrl;}; MediaPlayCtrl* get_media_play_ctrl() {return m_media_play_ctrl;};
}; };

View File

@ -314,15 +314,19 @@ Description:AMSextruder
**************************************************/ **************************************************/
void AMSextruderImage::TurnOn(wxColour col) void AMSextruderImage::TurnOn(wxColour col)
{ {
if (m_colour != col) {
m_colour = col; m_colour = col;
Refresh(); Refresh();
} }
}
void AMSextruderImage::TurnOff() void AMSextruderImage::TurnOff()
{ {
if (m_colour != AMS_EXTRUDER_DEF_COLOUR) {
m_colour = AMS_EXTRUDER_DEF_COLOUR; m_colour = AMS_EXTRUDER_DEF_COLOUR;
Refresh(); Refresh();
} }
}
void AMSextruderImage::msw_rescale() void AMSextruderImage::msw_rescale()
{ {
@ -429,17 +433,23 @@ void AMSextruder::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
void AMSextruder::OnVamsLoading(bool load, wxColour col) void AMSextruder::OnVamsLoading(bool load, wxColour col)
{ {
if (m_vams_loading != load) {
m_vams_loading = load; m_vams_loading = load;
if (load) m_current_colur = col; if (load) m_current_colur = col;
//m_current_colur = col;
Refresh(); Refresh();
} }
}
void AMSextruder::OnAmsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY500*/) void AMSextruder::OnAmsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY500*/)
{ {
if (m_ams_loading != load) {
m_ams_loading = load; m_ams_loading = load;
//m_current_colur = col;
if (load) m_current_colur = col; if (load) m_current_colur = col;
Refresh(); Refresh();
} }
}
void AMSextruder::paintEvent(wxPaintEvent& evt) void AMSextruder::paintEvent(wxPaintEvent& evt)
{ {
@ -542,10 +552,13 @@ AMSVirtualRoad::~AMSVirtualRoad() {}
void AMSVirtualRoad::OnVamsLoading(bool load, wxColour col) void AMSVirtualRoad::OnVamsLoading(bool load, wxColour col)
{ {
if (m_vams_loading != load) {
m_vams_loading = load; m_vams_loading = load;
if (load)m_current_color = col; if (load)m_current_color = col;
//m_current_color = col;
Refresh(); Refresh();
} }
}
void AMSVirtualRoad::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size) void AMSVirtualRoad::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
{ {
@ -1324,10 +1337,15 @@ void AMSLib::Update(Caninfo info, bool refresh)
if (info.material_colour.Alpha() != 0 && info.material_colour.Alpha() != 255 && info.material_colour.Alpha() != 254 && m_info.material_colour != info.material_colour) { if (info.material_colour.Alpha() != 0 && info.material_colour.Alpha() != 255 && info.material_colour.Alpha() != 254 && m_info.material_colour != info.material_colour) {
transparent_changed = true; transparent_changed = true;
} }
if (m_info == info) {
//todo
} else {
m_info = info; m_info = info;
Layout(); Layout();
if (refresh) Refresh(); if (refresh) Refresh();
} }
}
wxColour AMSLib::GetLibColour() { return m_info.material_colour; } wxColour AMSLib::GetLibColour() { return m_info.material_colour; }
@ -1431,9 +1449,14 @@ void AMSRoad::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
void AMSRoad::Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan) void AMSRoad::Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan)
{ {
if (amsinfo == m_amsinfo && m_info == info && m_canindex == canindex) {
return;
}
m_amsinfo = amsinfo; m_amsinfo = amsinfo;
m_info = info; m_info = info;
m_canindex = canindex; m_canindex = canindex;
if (m_canindex == 0 && maxcan == 1) { if (m_canindex == 0 && maxcan == 1) {
m_rode_mode = AMSRoadMode::AMS_ROAD_MODE_END_ONLY; m_rode_mode = AMSRoadMode::AMS_ROAD_MODE_END_ONLY;
} else if (m_canindex == 0 && maxcan > 1) { } else if (m_canindex == 0 && maxcan > 1) {
@ -1449,18 +1472,23 @@ void AMSRoad::Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan)
void AMSRoad::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY500*/) void AMSRoad::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY500*/)
{ {
if (m_vams_loading != load) {
m_vams_loading = load; m_vams_loading = load;
if (load) m_road_color = col; if (load) m_road_color = col;
//m_road_color = col;
Refresh(); Refresh();
} }
}
void AMSRoad::SetPassRoadColour(wxColour col) { m_road_color = col; } void AMSRoad::SetPassRoadColour(wxColour col) { m_road_color = col; }
void AMSRoad::SetMode(AMSRoadMode mode) void AMSRoad::SetMode(AMSRoadMode mode)
{ {
if (m_rode_mode != mode) {
m_rode_mode = mode; m_rode_mode = mode;
Refresh(); Refresh();
} }
}
void AMSRoad::paintEvent(wxPaintEvent &evt) void AMSRoad::paintEvent(wxPaintEvent &evt)
{ {
@ -2005,9 +2033,10 @@ void AmsCans::Update(AMSinfo info)
Canrefreshs *refresh = m_can_refresh_list[i]; Canrefreshs *refresh = m_can_refresh_list[i];
if (i < m_can_count) { if (i < m_can_count) {
refresh->canrefresh->Update(info.ams_id, info.cans[i]); refresh->canrefresh->Update(info.ams_id, info.cans[i]);
refresh->canrefresh->Show(); if (!refresh->canrefresh->IsShown()) { refresh->canrefresh->Show();}
} else { } else {
refresh->canrefresh->Hide(); if (refresh->canrefresh->IsShown()) { refresh->canrefresh->Hide();}
} }
} }
@ -2015,9 +2044,9 @@ void AmsCans::Update(AMSinfo info)
CanLibs *lib = m_can_lib_list[i]; CanLibs *lib = m_can_lib_list[i];
if (i < m_can_count) { if (i < m_can_count) {
lib->canLib->Update(info.cans[i]); lib->canLib->Update(info.cans[i]);
lib->canLib->Show(); if(!lib->canLib->IsShown()) { lib->canLib->Show();}
} else { } else {
lib->canLib->Hide(); if(lib->canLib->IsShown()) { lib->canLib->Hide(); }
} }
} }
@ -2026,10 +2055,9 @@ void AmsCans::Update(AMSinfo info)
CanRoads *road = m_can_road_list[i]; CanRoads *road = m_can_road_list[i];
if (i < m_can_count) { if (i < m_can_count) {
road->canRoad->Update(m_info, info.cans[i], i, m_can_count); road->canRoad->Update(m_info, info.cans[i], i, m_can_count);
road->canRoad->Show(); if (!road->canRoad->IsShown()) { road->canRoad->Show(); }
} } else {
else { if (road->canRoad->IsShown()) { road->canRoad->Hide(); }
road->canRoad->Hide();
} }
} }
} }
@ -3282,10 +3310,13 @@ void AMSControl::show_noams_mode()
void AMSControl::show_auto_refill(bool show) void AMSControl::show_auto_refill(bool show)
{ {
if (m_auto_reill_show != show) {
m_ams_backup_tip->Show(show); m_ams_backup_tip->Show(show);
m_img_ams_backup->Show(show); m_img_ams_backup->Show(show);
m_amswin->Layout(); m_amswin->Layout();
m_amswin->Fit(); m_amswin->Fit();
m_auto_reill_show = show;
}
} }
void AMSControl::show_vams(bool show) void AMSControl::show_vams(bool show)
@ -3313,6 +3344,9 @@ void AMSControl::show_vams_kn_value(bool show)
void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj)
{ {
auto last_k_value = m_vams_info.k;
auto last_n_value = m_vams_info.n;
m_vams_lib->m_obj = obj; m_vams_lib->m_obj = obj;
if (obj->cali_version >= 0) { if (obj->cali_version >= 0) {
float k_value = 0; float k_value = 0;
@ -3329,12 +3363,16 @@ void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj)
m_vams_lib->m_info.k = tray.k; m_vams_lib->m_info.k = tray.k;
m_vams_lib->m_info.n = tray.n; m_vams_lib->m_info.n = tray.n;
} }
m_vams_info.material_name = tray.get_display_filament_type(); m_vams_info.material_name = tray.get_display_filament_type();
m_vams_info.material_colour = tray.get_color(); m_vams_info.material_colour = tray.get_color();
m_vams_lib->m_info.material_name = tray.get_display_filament_type(); m_vams_lib->m_info.material_name = tray.get_display_filament_type();
m_vams_lib->m_info.material_colour = tray.get_color(); m_vams_lib->m_info.material_colour = tray.get_color();
if (last_k_value != m_vams_info.k || last_n_value != m_vams_info.n) {
m_vams_lib->Refresh(); m_vams_lib->Refresh();
} }
}
void AMSControl::reset_vams() void AMSControl::reset_vams()
{ {
@ -3357,7 +3395,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> info, bool is_reset)
m_button_area->Fit(); m_button_area->Fit();
// update item // update item
m_ams_info = info;
if (m_ams_model == AMSModel::GENERIC_AMS){ if (m_ams_model == AMSModel::GENERIC_AMS){
m_ams_cans_list = m_ams_generic_cans_list; m_ams_cans_list = m_ams_generic_cans_list;
} }
@ -3365,6 +3403,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> info, bool is_reset)
m_ams_cans_list = m_ams_extra_cans_list; m_ams_cans_list = m_ams_extra_cans_list;
} }
if (m_ams_info.size() != info.size()) {
if (info.size() > 1) { if (info.size() > 1) {
m_simplebook_amsitems->Show(); m_simplebook_amsitems->Show();
m_amswin->Layout(); m_amswin->Layout();
@ -3378,6 +3417,9 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> info, bool is_reset)
SetSize(m_amswin->GetSize()); SetSize(m_amswin->GetSize());
SetMinSize(m_amswin->GetSize()); SetMinSize(m_amswin->GetSize());
} }
}
m_ams_info = info;
for (auto i = 0; i < m_ams_item_list.GetCount(); i++) { for (auto i = 0; i < m_ams_item_list.GetCount(); i++) {
AmsItems *item = m_ams_item_list[i]; AmsItems *item = m_ams_item_list[i];
@ -3666,8 +3708,7 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC
if (ams_now != GetCurentShowAms()) { if (ams_now != GetCurentShowAms()) {
m_extruder->OnAmsLoading(false, col); m_extruder->OnAmsLoading(false, col);
} } else {
else {
m_extruder->OnAmsLoading(true, col); m_extruder->OnAmsLoading(true, col);
} }
} }
@ -3732,11 +3773,9 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
if (notfound) return; if (notfound) return;
if (cans == nullptr) return; if (cans == nullptr) return;
m_last_ams_id = ams_id; m_last_ams_id = ams_id;
m_last_tray_id = canid; m_last_tray_id = canid;
if (m_ams_model == AMSModel::GENERIC_AMS) { if (m_ams_model == AMSModel::GENERIC_AMS) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
@ -3751,9 +3790,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1); cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); cans->amsCans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
if (m_current_show_ams == ams_id) { if (m_current_show_ams == ams_id) { m_extruder->OnAmsLoading(true, cans->amsCans->GetTagColr(canid)); }
m_extruder->OnAmsLoading(true, cans->amsCans->GetTagColr(canid));
}
} }
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) { if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {

View File

@ -145,6 +145,19 @@ struct Caninfo
float k = 0.0f; float k = 0.0f;
float n = 0.0f; float n = 0.0f;
std::vector<wxColour> material_cols; std::vector<wxColour> material_cols;
bool operator==(const Caninfo &other) const
{
return can_id == other.can_id &&
material_name == other.material_name &&
material_colour == other.material_colour &&
material_state == other.material_state &&
ctype == other.ctype &&
material_remain == other.material_remain &&
k == other.k &&
n == other.n &&
material_cols == other.material_cols;
}
}; };
struct AMSinfo struct AMSinfo
@ -158,6 +171,13 @@ public:
int curreent_filamentstep; int curreent_filamentstep;
int ams_humidity = 0; int ams_humidity = 0;
bool operator==(const AMSinfo &other) const
{
return ams_id == other.ams_id && cans == other.cans &&
current_can_id == other.current_can_id && current_step == other.current_step && current_action == other.current_action &&
curreent_filamentstep == other.curreent_filamentstep && ams_humidity == other.ams_humidity;
}
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false); bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
}; };
@ -597,6 +617,7 @@ protected:
wxBoxSizer* m_vams_sizer = {nullptr}; wxBoxSizer* m_vams_sizer = {nullptr};
wxBoxSizer* m_sizer_vams_tips = {nullptr}; wxBoxSizer* m_sizer_vams_tips = {nullptr};
bool m_auto_reill_show = {false};
Label* m_ams_backup_tip = {nullptr}; Label* m_ams_backup_tip = {nullptr};
Label* m_ams_tip = {nullptr}; Label* m_ams_tip = {nullptr};

View File

@ -76,16 +76,20 @@ bool Button::SetFont(const wxFont& font)
void Button::SetIcon(const wxString& icon) void Button::SetIcon(const wxString& icon)
{ {
auto tmpBitmap = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt());
if (!icon.IsEmpty()) { if (!icon.IsEmpty()) {
//BBS set button icon default size to 20 //BBS set button icon default size to 20
this->active_icon = ScalableBitmap(this, icon.ToStdString(), this->active_icon.px_cnt()); if (!tmpBitmap.bmp().IsSameAs(tmpBitmap.bmp())) {
this->active_icon = tmpBitmap;
Refresh();
}
} }
else else
{ {
this->active_icon = ScalableBitmap(); this->active_icon = ScalableBitmap();
}
Refresh(); Refresh();
} }
}
void Button::SetInactiveIcon(const wxString &icon) void Button::SetInactiveIcon(const wxString &icon)
{ {

View File

@ -182,14 +182,16 @@ void TempInput::SetTagTemp(wxString temp)
void TempInput::SetCurrTemp(int temp) void TempInput::SetCurrTemp(int temp)
{ {
auto tp = wxString::Format("%d", temp); auto tp = wxString::Format("%d", temp);
if (GetLabel() != tp) { if (currentTemp != tp) {
currentTemp = tp;
SetLabel(tp); SetLabel(tp);
} }
} }
void TempInput::SetCurrTemp(wxString temp) void TempInput::SetCurrTemp(wxString temp)
{ {
if (GetLabel() != temp) { if (currentTemp != temp) {
currentTemp = temp;
SetLabel(temp); SetLabel(temp);
} }
} }
@ -275,10 +277,12 @@ void TempInput::SetMinTemp(int temp) { min_temp = temp; }
void TempInput::SetLabel(const wxString &label) void TempInput::SetLabel(const wxString &label)
{ {
if (label != wxWindow::GetLabel()) {
wxWindow::SetLabel(label); wxWindow::SetLabel(label);
messureSize(); messureSize();
Refresh(); Refresh();
} }
}
void TempInput::SetTextColor(StateColor const &color) void TempInput::SetTextColor(StateColor const &color)
{ {

View File

@ -64,6 +64,7 @@ public:
wxPopupTransientWindow *wdialog{nullptr}; wxPopupTransientWindow *wdialog{nullptr};
int temp_type; int temp_type;
bool actice = false; bool actice = false;
wxString currentTemp;
wxString erasePending(wxString &str); wxString erasePending(wxString &str);