FIX: complete the AMS fresh while state changed

jira: [STUDIO-10305]
Change-Id: Ie6cbc359bdf9fe02f103f58e25f490105faaf381
(cherry picked from commit 9d7c9c54fc47d6e9000d2570fd391a9823e8b33e)
This commit is contained in:
xin.zhang 2025-02-11 18:26:11 +08:00 committed by Noisyfox
parent 13c3c32237
commit b3ca79146b
3 changed files with 118 additions and 79 deletions

View file

@ -1118,8 +1118,7 @@ void AMSControl::createAmsPanel(wxSimplebook* parent, int& idx, std::vector<AMSi
}
}
else { //only an ext in a panel
if (ams1->get_ext_image()) {
ams1->get_ext_image()->setShowState(false);
if (ams1->get_ext_image()) { ams1->get_ext_image()->setShowState(false);
}
if (ams1->get_ams_model() == AMSModel::EXT_AMS) {
if (ams1->get_ext_type() == LITE_EXT) {
@ -1487,8 +1486,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
if (ams->get_can_count() == GENERIC_AMS_SLOT_NUM){
length = left ? 129 : 145;
model = ams->get_ams_model();
}
else if (ams->get_can_count() == 1){
} else if (ams->get_can_count() == 1) {
for (auto it : pair_id){
if (it.first == ams_id){
length = left ? 218 : 124;

View file

@ -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<AMSPassRoadMode> 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)

View file

@ -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<AMSPassRoadMode> 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<ScalableBitmap> 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<AMSPassRoadMode> 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<ScalableBitmap> 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<int, wxColour> 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<int, wxColour> m_road_color;
bool m_vams_loading{false};
AMSModel m_ams_model;
};
/*************************************************