From 9d7c9c54fc47d6e9000d2570fd391a9823e8b33e Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Tue, 11 Feb 2025 18:26:11 +0800 Subject: [PATCH] FIX: complete the AMS fresh while state changed jira: [STUDIO-10305] Change-Id: Ie6cbc359bdf9fe02f103f58e25f490105faaf381 --- src/slic3r/GUI/Widgets/AMSControl.cpp | 89 +++++++++--------- src/slic3r/GUI/Widgets/AMSItem.cpp | 84 +++++++++++------ src/slic3r/GUI/Widgets/AMSItem.hpp | 125 ++++++++++++++++---------- 3 files changed, 176 insertions(+), 122 deletions(-) diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 86638f7d5..99dd523bd 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -2707,7 +2707,7 @@ std::string AMSControl::GetCurrentCan(std::string amsid) if (item == nullptr){ continue; } - if (item->m_info.ams_id == amsid) { + if (item->get_ams_id() == amsid) { current_can = item->GetCurrentCan(); return current_can; } @@ -2717,7 +2717,7 @@ std::string AMSControl::GetCurrentCan(std::string amsid) bool AMSControl::IsAmsInRightPanel(std::string ams_id) { if (m_extder_data.total_extder_count == 2){ - if (m_ams_item_list.find(ams_id) != m_ams_item_list.end() && m_ams_item_list[ams_id]->m_info.nozzle_id == MAIN_NOZZLE_ID){ + if (m_ams_item_list.find(ams_id) != m_ams_item_list.end() && m_ams_item_list[ams_id]->get_nozzle_id() == MAIN_NOZZLE_ID) { return true; } else{ @@ -2743,7 +2743,8 @@ void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) { auto item = m_ams_item_list[m_current_show_ams_left]; if (!item) return; try{ - for (auto can : item->m_can_lib_list){ + const auto& can_lib_list = item->get_can_lib_list(); + for (auto can : can_lib_list) { can.second->UnSelected(); } } @@ -2755,7 +2756,8 @@ void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) { auto item = m_ams_item_list[m_current_show_ams_right]; if (!item) return; try { - for (auto can : item->m_can_lib_list) { + const auto &can_lib_list = item->get_can_lib_list(); + for (auto can : can_lib_list) { can.second->UnSelected(); } } @@ -3320,12 +3322,11 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex if (ams_item.second == nullptr){ continue; } - std::string ams_id = ams_item.second->m_info.ams_id; + std::string ams_id = ams_item.second->get_ams_id(); AmsItem* cans = ams_item.second; - if (cans->m_info.ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID) || cans->m_info.ams_id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)){ + if (cans->get_ams_id() == std::to_string(VIRTUAL_TRAY_MAIN_ID) || cans->get_ams_id() == std::to_string(VIRTUAL_TRAY_DEPUTY_ID)) { for (auto ifo : m_ext_info) { if (ifo.ams_id == ams_id) { - cans->m_info = ifo; cans->Update(ifo); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true); } @@ -3334,7 +3335,6 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex else{ for (auto ifo : m_ams_info) { if (ifo.ams_id == ams_id) { - cans->m_info = ifo; cans->Update(ifo); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true); } @@ -3346,8 +3346,7 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex std::string id = ams_prv.second->m_amsinfo.ams_id; auto item = m_ams_item_list.find(id); if (item != m_ams_item_list.end()) - { - ams_prv.second->Update(item->second->m_info); + { ams_prv.second->Update(item->second->get_ams_info()); } } @@ -3402,10 +3401,9 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex for (auto ams_item : m_ams_item_list) { std::string ams_id = ams_item.first; AmsItem* cans = ams_item.second; - if (atoi(cans->m_info.ams_id.c_str()) >= VIRTUAL_TRAY_DEPUTY_ID) { + if (atoi(cans->get_ams_id().c_str()) >= VIRTUAL_TRAY_DEPUTY_ID) { for (auto ifo : m_ext_info) { if (ifo.ams_id == ams_id) { - cans->m_info = ifo; cans->Update(ifo); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true); } @@ -3414,7 +3412,6 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex else { for (auto ifo : m_ams_info) { if (ifo.ams_id == ams_id) { - cans->m_info = ifo; cans->Update(ifo); cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true); } @@ -3459,7 +3456,7 @@ void AMSControl::AddAmsPreview(AMSinfo info, AMSModel type) void AMSControl::createAms(wxSimplebook* parent, int& idx, AMSinfo info, AMSPanelPos pos) { auto ams_item = new AmsItem(parent, info, info.ams_type, pos); parent->InsertPage(idx, ams_item, wxEmptyString, true); - ams_item->m_selection = idx; + ams_item->set_selection(idx); idx++; m_ams_item_list[info.ams_id] = ams_item; @@ -3478,9 +3475,9 @@ AMSRoadShowMode AMSControl::findFirstMode(AMSPanelPos pos) { auto item = m_ams_item_list.find(ams_id); if (ams_id.empty() || item == m_ams_item_list.end()) return init_mode; - if (item->second->m_info.cans.size() == GENERIC_AMS_SLOT_NUM){ - if (item->second->m_info.ams_type == AMSModel::AMS_LITE) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; - if (item->second->m_info.ams_type == AMSModel::EXT_AMS && item->second->m_info.ext_type == AMSModelOriginType::LITE_EXT) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; + if (item->second->get_can_count() == GENERIC_AMS_SLOT_NUM) { + if (item->second->get_ams_model() == AMSModel::AMS_LITE) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; + if (item->second->get_ams_model() == AMSModel::EXT_AMS && item->second->get_ext_type() == AMSModelOriginType::LITE_EXT) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; return AMSRoadShowMode::AMS_ROAD_MODE_FOUR; } else{ @@ -3489,7 +3486,7 @@ AMSRoadShowMode AMSControl::findFirstMode(AMSPanelPos pos) { return AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE; } } - if (item->second->m_info.ams_type == AMSModel::EXT_AMS && item->second->m_info.ext_type == AMSModelOriginType::LITE_EXT) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; + if (item->second->get_ams_model() == AMSModel::EXT_AMS && item->second->get_ext_type() == AMSModelOriginType::LITE_EXT) return AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE; return AMSRoadShowMode::AMS_ROAD_MODE_SINGLE; } } @@ -3517,11 +3514,10 @@ void AMSControl::createAmsPanel(wxSimplebook* parent, int& idx, std::vectorm_ext_image) { - ams1->m_ext_image->setShowState(false); + if (ams1->get_ext_image()) { ams1->get_ext_image()->setShowState(false); } - if (ams1->m_info.ams_type == AMSModel::EXT_AMS){ - if (ams1->m_info.ext_type == LITE_EXT){ + if (ams1->get_ams_model() == AMSModel::EXT_AMS) { + if (ams1->get_ext_type() == LITE_EXT) { //book_sizer->Add(ams1, 0, wxALIGN_CENTER_HORIZONTAL, 0); book_sizer->Add(ams1, 0, wxLEFT, (book_panel->GetSize().x - ams1->GetSize().x) / 2); } @@ -3540,11 +3536,11 @@ void AMSControl::createAmsPanel(wxSimplebook* parent, int& idx, std::vectorInsertPage(idx, book_panel, wxEmptyString, true); ams1->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR)); - ams1->m_selection = idx; + ams1->set_selection(idx); m_ams_item_list[infos[0].ams_id] = ams1; if (ams2) { ams2->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR)); - ams2->m_selection = idx; + ams2->set_selection(idx); m_ams_item_list[infos[1].ams_id] = ams2; } idx++; @@ -3707,8 +3703,8 @@ void AMSControl::SwitchAms(std::string ams_id) bool ready_selected = false; for (auto item_it : m_ams_item_list) { AmsItem* item = item_it.second; - if (item->m_info.ams_id == ams_id) { - for (auto lib_it : item->m_can_lib_list) { + if (item->get_ams_id() == ams_id) { + for (auto lib_it : item->get_can_lib_list()) { AMSLib* lib = lib_it.second; if (lib->is_selected()) { ready_selected = true; @@ -3738,14 +3734,14 @@ void AMSControl::SwitchAms(std::string ams_id) for (auto ams_item : m_ams_item_list) { AmsItem* item = ams_item.second; - if (item->m_info.ams_id == ams_id) { - auto ids = item->m_panel_pos == AMSPanelPos::LEFT_PANEL ? m_item_ids[DEPUTY_NOZZLE_ID] : m_item_ids[MAIN_NOZZLE_ID]; - auto pos = item->m_panel_pos; + if (item->get_ams_id() == ams_id) { + auto ids = item->get_panel_pos() == AMSPanelPos::LEFT_PANEL ? m_item_ids[DEPUTY_NOZZLE_ID] : m_item_ids[MAIN_NOZZLE_ID]; + auto pos = item->get_panel_pos(); for (auto id : ids) { - if (id == item->m_info.ams_id) { - pos == AMSPanelPos::LEFT_PANEL ? m_simplebook_ams_left->SetSelection(item->m_selection) : m_simplebook_ams_right->SetSelection(item->m_selection); - if (item->m_info.cans.size() == GENERIC_AMS_SLOT_NUM) { - if (item->m_info.ams_type == AMSModel::AMS_LITE) { + if (id == item->get_ams_id()) { + pos == AMSPanelPos::LEFT_PANEL ? m_simplebook_ams_left->SetSelection(item->get_selection()) : m_simplebook_ams_right->SetSelection(item->get_selection()); + if (item->get_can_count() == GENERIC_AMS_SLOT_NUM) { + if (item->get_ams_model() == AMSModel::AMS_LITE) { if (pos == AMSPanelPos::LEFT_PANEL) { m_down_road->UpdateLeft(m_extder_data.total_extder_count, AMSRoadShowMode::AMS_ROAD_MODE_AMS_LITE); } else { @@ -3831,10 +3827,10 @@ void AMSControl::SetExtruder(bool on_off, std::string ams_id, std::string slot_i return; } if (!on_off) { - m_extruder->OnAmsLoading(false, item->m_info.nozzle_id); + m_extruder->OnAmsLoading(false, item->get_nozzle_id()); } else { auto col = item->GetTagColr(slot_id); - m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col); + m_extruder->OnAmsLoading(true, item->get_nozzle_id(), col); } } @@ -3883,11 +3879,10 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy } //Set path length in different case - if (ams->m_info.cans.size() == GENERIC_AMS_SLOT_NUM){ + if (ams->get_can_count() == GENERIC_AMS_SLOT_NUM) { length = left ? 129 : 145; - model = ams->m_info.ams_type; - } - else if (ams->m_info.cans.size() == 1){ + model = ams->get_ams_model(); + } else if (ams->get_can_count() == 1) { for (auto it : pair_id){ if (it.first == ams_id){ length = left ? 218 : 124; @@ -3900,12 +3895,12 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy break; } } - model = ams->m_info.ams_type; + model = ams->get_ams_model(); } if (model == AMSModel::AMS_LITE){ length = left ? 145 : 45; } - if (model == EXT_AMS && ams->m_info.ext_type == AMSModelOriginType::LITE_EXT){ + if (model == EXT_AMS && ams->get_ext_type() == AMSModelOriginType::LITE_EXT) { if (m_ams_info.size() == 0 && m_ext_info.size() == 1) { length = 13; @@ -3914,7 +3909,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy } } - if (model == EXT_AMS && ams->m_info.ext_type == AMSModelOriginType::GENERIC_EXT){ + if (model == EXT_AMS && ams->get_ext_type() == AMSModelOriginType::GENERIC_EXT) { if (m_ams_info.size() == 0 && m_ext_info.size() == 1) { left = true; length = 50; @@ -3944,7 +3939,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy AMSinfo info; if (m_ams_item_list.find(ams_id) != m_ams_item_list.end()) { - info = m_ams_item_list[ams_id]->m_info; + info = m_ams_item_list[ams_id]->get_ams_info(); } else{ return; @@ -3961,7 +3956,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(pos, -1, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE); - m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id); + m_extruder->OnAmsLoading(false, ams->get_nozzle_id()); } } @@ -3969,7 +3964,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1); if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_1); - m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id); + m_extruder->OnAmsLoading(false, ams->get_nozzle_id()); } else { @@ -3981,7 +3976,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2); if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_2); - m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); + m_extruder->OnAmsLoading(true, ams->get_nozzle_id(), ams->GetTagColr(canid)); } else { @@ -3993,7 +3988,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy if (ams_id_left == ams_id || ams_id_right == ams_id || in_same_page) { m_down_road->UpdatePassRoad(pos, length, AMSPassRoadSTEP::AMS_ROAD_STEP_3); - m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid)); + m_extruder->OnAmsLoading(true, ams->get_nozzle_id(), ams->GetTagColr(canid)); } else { diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 92225dcb2..bbcff7ae6 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -1917,8 +1917,11 @@ void AMSRoadUpPart::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, void AMSRoadUpPart::Update(AMSinfo amsinfo) { - m_amsinfo = amsinfo; - Refresh(); + if (m_amsinfo != amsinfo) + { + m_amsinfo = amsinfo; + Refresh(); + } } void AMSRoadUpPart::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY500*/) @@ -1928,12 +1931,22 @@ void AMSRoadUpPart::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY50 Refresh();*/ } -void AMSRoadUpPart::SetPassRoadColour(wxColour col) { m_road_color = col; } +void AMSRoadUpPart::SetPassRoadColour(wxColour col) +{ + if (m_road_color != col) + { + m_road_color = col; + Refresh(); + } +} void AMSRoadUpPart::SetMode(AMSRoadShowMode mode) { - m_road_mode = mode; - Refresh(); + if (m_road_mode != mode) + { + m_road_mode = mode; + Refresh(); + } } void AMSRoadUpPart::paintEvent(wxPaintEvent& evt) @@ -2019,10 +2032,19 @@ void AMSRoadUpPart::doRender(wxDC& dc) // left mode } -void AMSRoadUpPart::UpdatePassRoad(std::string ams_index, std::string slot_index, AMSPassRoadType type, AMSPassRoadSTEP step) { - m_load_ams_index = atoi(ams_index.c_str()); - m_load_slot_index = atoi(slot_index.c_str()); +void AMSRoadUpPart::UpdatePassRoad(std::string ams_index, std::string slot_index, AMSPassRoadType type, AMSPassRoadSTEP step) +{ + int ams_idx = atoi(ams_index.c_str()); + int slot_idx = atoi(slot_index.c_str()); + if (m_load_ams_index == ams_idx && m_load_slot_index == slot_idx && m_load_step == step) + { + return; + }; + + m_load_ams_index = ams_idx; + m_load_slot_index = slot_idx; m_load_step = step; + Refresh(); } void AMSRoadUpPart::OnPassRoad(std::vector prord_list) @@ -2069,25 +2091,18 @@ AMSRoadDownPart::AMSRoadDownPart(wxWindow* parent, wxWindowID id, const wxPoint& void AMSRoadDownPart::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size) { wxWindow::Create(parent, id, pos, size); } -//void AMSRoadDownPart::Update(int nozzle_num, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len) -//{ -// this->m_nozzle_num = nozzle_num; -// this->m_left_rode_mode = left_mode; -// this->m_right_rode_mode = right_mode; -// -// m_left_road_length = left_len; -// m_right_road_length = right_len; -// m_selected = false; -// -// Refresh(); -//} +void AMSRoadDownPart::UpdateLeft(int nozzle_num, AMSRoadShowMode mode) +{ + if (nozzle_num == m_nozzle_num && m_left_rode_mode == mode) { return;} -void AMSRoadDownPart::UpdateLeft(int nozzle_num, AMSRoadShowMode mode) { this->m_left_rode_mode = mode; m_nozzle_num = nozzle_num; Refresh(); } -void AMSRoadDownPart::UpdateRight(int nozzle_num, AMSRoadShowMode mode) { +void AMSRoadDownPart::UpdateRight(int nozzle_num, AMSRoadShowMode mode) +{ + if (nozzle_num == m_nozzle_num && m_right_rode_mode == mode) { return; } + this->m_right_rode_mode = mode; m_nozzle_num = nozzle_num; Refresh(); @@ -2102,20 +2117,33 @@ void AMSRoadDownPart::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY void AMSRoadDownPart::SetPassRoadColour(bool left, wxColour col) { - if (left){ + if (left) + { + if (m_road_color[DEPUTY_NOZZLE_ID] == col) + { + return; + } m_road_color[DEPUTY_NOZZLE_ID] = col; } - else{ + else + { + if (m_road_color[MAIN_NOZZLE_ID] == col) + { + return; + } m_road_color[MAIN_NOZZLE_ID] = col; } + + Refresh(); } -//void AMSRoadDownPart::SetMode(AMSRoadDownPartMode mode) { -// -//} -void AMSRoadDownPart::SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode) { +void AMSRoadDownPart::SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode) +{ + if (m_left_rode_mode == left_mode && m_right_rode_mode == right_mode) { return; } + m_left_rode_mode = left_mode; m_right_rode_mode = right_mode; + Refresh(); } void AMSRoadDownPart::paintEvent(wxPaintEvent& evt) diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index 7868f49ee..78f6d21dc 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -236,6 +236,16 @@ public: return false; }; + bool operator!=(const AMSinfo &other) const + { + if (operator==(other)) + { + return false; + } + + return true; + }; + bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false); void parse_ext_info(MachineObject* obj, AmsTray tray); }; @@ -530,29 +540,7 @@ public: void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); public: - AMSinfo m_amsinfo; - //Caninfo m_info; - int m_load_slot_index = { 0 }; - int m_load_ams_index = { 0 }; - //AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT }; - std::vector m_pass_rode_mode = { AMSPassRoadMode::AMS_ROAD_MODE_NONE }; - AMSRoadShowMode m_road_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; - AMSPassRoadSTEP m_load_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; - - bool m_selected = { false }; - int m_passroad_width = { 6 }; - double m_radius = { 4 }; - wxColour m_road_def_color; - wxColour m_road_color; - void Update(AMSinfo amsinfo); - - std::vector ams_humidity_img; - - - int m_humidity = { 0 }; - bool m_show_humidity = { false }; - bool m_vams_loading{ false }; - AMSModel m_ams_model; + void Update(AMSinfo amsinfo); void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500); void SetPassRoadColour(wxColour col); @@ -565,6 +553,32 @@ public: void doRender(wxDC& dc); void msw_rescale(); + +private: + AMSinfo m_amsinfo; + + // Caninfo m_info; + + int m_load_slot_index = {0}; + int m_load_ams_index = {0}; + + // AMSRoadMode m_rode_mode = { AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT }; + std::vector m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE}; + AMSRoadShowMode m_road_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; + AMSPassRoadSTEP m_load_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; + + bool m_selected = {false}; + int m_passroad_width = {6}; + double m_radius = {4}; + wxColour m_road_def_color; + wxColour m_road_color; + + std::vector ams_humidity_img; + + int m_humidity = {0}; + bool m_show_humidity = {false}; + bool m_vams_loading{false}; + AMSModel m_ams_model; }; @@ -579,29 +593,9 @@ public: void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); public: - int m_nozzle_num = { 1 }; - AMSRoadShowMode m_single_ext_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; - AMSRoadShowMode m_left_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; - AMSRoadShowMode m_right_rode_mode = { AMSRoadShowMode::AMS_ROAD_MODE_FOUR }; - bool m_selected = { false }; - - int m_left_road_length = { -1 }; - int m_right_road_length = { -1 }; - int m_passroad_width = { 6 }; - double m_radius = { 4 }; - AMSPassRoadType m_pass_road_type = { AMSPassRoadType::AMS_ROAD_TYPE_NONE }; - AMSPassRoadSTEP m_pass_road_left_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; - AMSPassRoadSTEP m_pass_road_right_step = { AMSPassRoadSTEP::AMS_ROAD_STEP_NONE }; - - std::map m_road_color; - - //void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len); - void UpdateLeft(int nozzle_num, AMSRoadShowMode mode); - void UpdateRight(int nozzle_num, AMSRoadShowMode mode); - - bool m_vams_loading{ false }; - - AMSModel m_ams_model; + // void Update(AMSRoadDownPartMode nozzle, AMSRoadShowMode left_mode, AMSRoadShowMode right_mode, int left_len, int right_len); + void UpdateLeft(int nozzle_num, AMSRoadShowMode mode); + void UpdateRight(int nozzle_num, AMSRoadShowMode mode); void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500); void SetPassRoadColour(bool left, wxColour col); @@ -612,7 +606,26 @@ public: void render(wxDC& dc); void doRender(wxDC& dc); - void msw_rescale(); + void msw_rescale(); + +private: + int m_nozzle_num = {1}; + AMSRoadShowMode m_single_ext_rode_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; + AMSRoadShowMode m_left_rode_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; + AMSRoadShowMode m_right_rode_mode = {AMSRoadShowMode::AMS_ROAD_MODE_FOUR}; + bool m_selected = {false}; + + int m_left_road_length = {-1}; + int m_right_road_length = {-1}; + int m_passroad_width = {6}; + double m_radius = {4}; + AMSPassRoadType m_pass_road_type = {AMSPassRoadType::AMS_ROAD_TYPE_NONE}; + AMSPassRoadSTEP m_pass_road_left_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; + AMSPassRoadSTEP m_pass_road_right_step = {AMSPassRoadSTEP::AMS_ROAD_STEP_NONE}; + + std::map m_road_color; + bool m_vams_loading{false}; + AMSModel m_ams_model; }; /************************************************* @@ -725,6 +738,24 @@ public: std::string GetCurrentCan(); public: + AMSinfo get_ams_info() const { return m_info; }; + + std::string get_ams_id() const { return m_info.ams_id; }; + AMSModel get_ams_model() const { return m_info.ams_type; }; + + AMSModelOriginType get_ext_type() const { return m_info.ext_type; }; + AMSExtImage *get_ext_image() const { return m_ext_image; }; + + size_t get_can_count() const { return m_info.cans.size(); }; + std::map get_can_lib_list() const { return m_can_lib_list; }; + + int get_selection() const { return m_selection; }; + void set_selection(int selection) { m_selection = selection; }; + + AMSPanelPos get_panel_pos() const { return m_panel_pos; }; + int get_nozzle_id() const { return m_info.nozzle_id; }; + +private: ScalableBitmap m_bitmap_extra_framework; int m_canlib_selection = { -1 }; int m_selection = { 0 };