FIX: the order of cans in AMSLite

jira: STUDIO-7765, STUDIO-7766, STUDIO-7767, STUDIO-7721, STUDIO-7713

Change-Id: If95e0667fc1d615c0494b007f7f7408f68e5b21c
This commit is contained in:
hang.xu 2024-07-31 18:01:54 +08:00 committed by lane.wei
parent 46efe15427
commit 9b510c0aeb
5 changed files with 208 additions and 245 deletions

View File

@ -756,7 +756,7 @@ void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
bool AMSMaterialsSetting::is_virtual_tray()
{
if (tray_id == VIRTUAL_TRAY_MAIN_ID)
if (ams_id == VIRTUAL_TRAY_MAIN_ID || ams_id == VIRTUAL_TRAY_DEPUTY_ID)
return true;
return false;
}

View File

@ -2591,7 +2591,6 @@ void StatusPanel::update_ams(MachineObject *obj)
if (obj) {
if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::AMS_LITE; }
else if(obj->get_printer_ams_type() == "generic") { ams_mode = AMSModel::GENERIC_AMS; }
}
if (obj->is_enable_np && obj->amsList.size() > 0){
ams_mode = AMSModel(obj->amsList.begin()->second->type);
@ -2644,6 +2643,7 @@ void StatusPanel::update_ams(MachineObject *obj)
for (auto slot : obj->vt_slot) {
AMSinfo info;
info.ReadExtInfo(slot);
if (ams_mode == AMSModel::AMS_LITE) info.ext_type = AMSModelOriginType::LITE_EXT;
ext_info.push_back(info);
}
std::string dev_id = obj->dev_id;
@ -3840,7 +3840,11 @@ void StatusPanel::on_ams_refresh_rfid(wxCommandEvent &event)
return;
}
std::string curr_ams_id = m_ams_control->GetCurentAms();
//std::string curr_ams_id = m_ams_control->GetCurentAms();
if (event.GetInt() < 0 || event.GetInt() > VIRTUAL_TRAY_MAIN_ID){
return;
}
std::string curr_ams_id = std::to_string(event.GetInt());
// do not support refresh rfid for VIRTUAL_TRAY_MAIN_ID
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
return;

View File

@ -2600,7 +2600,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
// m_img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
// m_img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
// m_img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); });
m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER, 0);
m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER_VERTICAL, 0);
m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24);
m_button_ams_setting_hover = ScalableBitmap(this, "ams_setting_hover", 24);
@ -2608,7 +2608,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_button_ams_setting = new wxStaticBitmap(m_amswin, wxID_ANY, m_button_ams_setting_normal.bmp(), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24)));
m_button_ams_setting->SetBackgroundColour(m_amswin->GetBackgroundColour());
m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER|wxLEFT, FromDIP(5));
m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20));
/*option mid*/
@ -2659,14 +2659,14 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
//m_sizer_option_right->Add(0, 0, 1, wxEXPAND, 0);
m_sizer_option_right->Add(m_button_extruder_back, 0, wxLEFT, FromDIP(0));
m_sizer_option_right->Add(m_button_extruder_feed, 0, wxLEFT, FromDIP(5));
m_sizer_option_right->Add(m_button_extruder_feed, 0, wxLEFT, FromDIP(20));
m_sizer_ams_option->Add(m_sizer_option_left, 0, wxLEFT, 0);
m_sizer_ams_option->Add(m_sizer_option_left, 0, wxALIGN_LEFT, 0);
//m_sizer_ams_option->Add(m_sizer_option_mid, 1, wxEXPAND, 0);
m_sizer_ams_option->Add(m_sizer_option_mid, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(60));
m_sizer_ams_option->Add(m_sizer_option_mid, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(90));
//m_sizer_ams_option->Add(m_sizer_option_right, 0, wxEXPAND, 0);
m_sizer_ams_option->Add(m_sizer_option_right, 0, wxALIGN_CENTER, 0);
m_sizer_ams_option->Add(m_sizer_option_right, 0, wxALIGN_RIGHT, 0);
@ -2987,6 +2987,9 @@ std::string AMSControl::GetCurrentCan(std::string amsid)
std::string current_can;
for (auto ams_item : m_ams_item_list) {
AmsItem* item = ams_item.second;
if (item == nullptr){
continue;
}
if (item->m_info.ams_id == amsid) {
current_can = item->GetCurrentCan();
return current_can;
@ -3019,7 +3022,7 @@ void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) {
if (m_current_ams != ams_id_selected){
m_current_ams = ams_id_selected;
}
if (m_current_show_ams_left != ams_id_selected){
if (m_current_show_ams_left != ams_id_selected && m_current_show_ams_left != "") {
auto item = m_ams_item_list[m_current_show_ams_left];
if (!item) return;
try{
@ -3031,7 +3034,7 @@ void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) {
;
}
}
else if (m_current_show_ams_right != ams_id_selected){
else if (m_current_show_ams_right != ams_id_selected && m_current_show_ams_right != "") {
auto item = m_ams_item_list[m_current_show_ams_right];
if (!item) return;
try {
@ -3269,42 +3272,7 @@ void AMSControl::UpdateStepCtrl(bool is_extrusion)
}*/
}
void AMSControl::UpdatePassRoad(string ams_id, AMSPassRoadType type, AMSPassRoadSTEP step) {
bool left = false;
int len = -1;
for (auto id : m_item_ids[0]){
if (ams_id == id){
left = true;
break;
}
}
if (m_ams_item_list[ams_id]->m_info.cans.size() == 4){
len = 133;
}
else{
for (auto pairId : pair_id){
if (pairId.first == ams_id) {
len = 72;
break;
}
if (pairId.second == ams_id){
len = 188;
break;
}
}
}
if (len == -1){
if (left){
len = 213;
}
else{
len = 72;
}
}
//std::vector<int> m_item_nums = { 0, 0 };
//std::vector<std::vector<string>> m_item_ids = { {},{} };
}
void AMSControl::CreateAms()
@ -3493,14 +3461,14 @@ void AMSControl::CreateAmsNew()
m_extruder->update(2);
auto it = m_ams_item_list.begin();
m_current_show_ams_left = "-1";
m_current_show_ams_right = "-1";
m_current_show_ams_left = "";
m_current_show_ams_right = "";
for (auto it = m_ams_item_list.begin(); it != m_ams_item_list.end(); it++)
{
if (it->second->m_info.nozzle_id == 1 && m_current_show_ams_left == "-1"){
if (it->second->m_info.nozzle_id == 1 && m_current_show_ams_left == ""){
m_current_show_ams_left = it->second->m_info.ams_id;
}
if (it->second->m_info.nozzle_id == 0 && m_current_show_ams_right == "-1"){
if (it->second->m_info.nozzle_id == 0 && m_current_show_ams_right == ""){
m_current_show_ams_right = it->second->m_info.ams_id;
}
}
@ -3646,14 +3614,14 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateRight(1, right_init_mode);
}
m_current_show_ams_left = "-1";
m_current_show_ams_right = "-1";
m_current_show_ams_left = "";
m_current_show_ams_right = "";
for (auto it = m_ams_item_list.begin(); it != m_ams_item_list.end(); it++)
{
if (!IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_left == "-1"){
if (!IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_left == ""){
m_current_show_ams_left = it->second->m_info.ams_id;
}
if (IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_right == "-1"){
if (IsAmsInRightPanel(it->second->m_info.ams_id) && m_current_show_ams_right == ""){
m_current_show_ams_right = it->second->m_info.ams_id;
}
}
@ -3835,6 +3803,7 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
else{
fresh = true;
}
m_ams_item_list;
m_ams_info.clear();
m_ams_info = ams_info;
m_ext_info.clear();
@ -3852,24 +3821,29 @@ void AMSControl::UpdateAms(std::vector<AMSinfo> ams_info, std::vector<AMSinfo>ex
m_right_page_index = 0;
if (m_nozzle_num >= 2){
CreateAmsNew();
m_ams_item_list;
}else{
/*m_panel_items_right->ClearBackground();
m_panel_items_left->ClearBackground();*/
m_item_ids = { {}, {} };
pair_id.clear();
CreateAmsSingleNozzle();
}
/*m_amswin->Layout();
m_amswin->Fit();
*/
SetSize(wxSize(FromDIP(578), -1));
SetMinSize(wxSize(FromDIP(578), -1));
m_ams_item_list;
}
// update cans
for (auto ams_item : m_ams_item_list) {
if (ams_item.second == nullptr){
continue;
}
std::string ams_id = ams_item.second->m_info.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)){
@ -4143,7 +4117,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
if (single_info[0].nozzle_id == 0)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::RIGHT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4159,7 +4133,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
else if (single_info[0].nozzle_id == 1)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::LEFT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4176,7 +4150,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
else if (m_nozzle_num == 1){
if (!left){
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::RIGHT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4192,7 +4166,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
else
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
ams_item = new AmsItem(book_panel, single_info[0], mode, AMSPanelPos::LEFT_PANEL);
sizer->Add(ams_item, 0, wxLEFT, FromDIP(30));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
@ -4207,7 +4181,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
}
}
ams_item->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
//ams_item->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
m_ams_item_list[single_info[0].ams_id] = ams_item;
}
else if (single_info.size() == 2)
@ -4227,7 +4201,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
if (single_info[1].nozzle_id == 0)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
@ -4246,7 +4220,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
else if (single_info[1].nozzle_id == 1)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
@ -4265,7 +4239,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
if (!left)
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
@ -4284,7 +4258,7 @@ void AMSControl::AddAms(std::vector<AMSinfo>single_info, bool left) {
else
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
book_panel->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
book_panel->SetSize(wxSize(FromDIP(264), FromDIP(150)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
@ -4843,7 +4817,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
AMSinfo info;
if (m_ams_item_list[ams_id] != nullptr) {
if (m_ams_item_list.find(ams_id) != m_ams_item_list.end()) {
info = m_ams_item_list[ams_id]->m_info;
}
else

View File

@ -122,6 +122,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo
void AMSinfo::ReadExtInfo(AmsTray tray) {
this->ams_id = tray.id;
this->ams_type = AMSModel::EXT_AMS;
Caninfo can;
can.can_id = std::to_string(0);
can.material_name = tray.filament_setting_id;
@ -145,7 +146,7 @@ Description:AMSExtText
AMSExtText::AMSExtText(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
{
wxWindow::Create(parent, id, pos, AMS_REFRESH_SIZE);
SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
Bind(wxEVT_PAINT, &AMSExtText::paintEvent, this);
SetSize(AMS_REFRESH_SIZE);
@ -156,6 +157,8 @@ AMSExtText::~AMSExtText() {}
void AMSExtText::msw_rescale()
{
Layout();
Fit();
Refresh();
}
@ -190,10 +193,10 @@ void AMSExtText::doRender(wxDC& dc)
{
auto size = GetSize();
dc.SetPen(wxPen(AMS_CONTROL_GRAY800, 2, wxSOLID));
dc.SetPen(wxPen(StateColor::darkModeColorFor(AMS_CONTROL_GRAY800), 2, wxSOLID));
auto tsize = dc.GetMultiLineTextExtent(_L("Ext"));
dc.SetFont(Label::Body_13);
dc.SetTextForeground(AMS_CONTROL_GRAY800);
dc.SetTextForeground(StateColor::darkModeColorFor(AMS_CONTROL_GRAY800));
wxPoint pot(FromDIP((size.x - tsize.x) / 2), FromDIP((size.y - tsize.y) / 2));
dc.DrawText(_L("Ext"), pot);
}
@ -231,7 +234,7 @@ AMSrefresh::AMSrefresh(wxWindow *parent, int number, Caninfo info, const wxPoint
void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size)
{
wxWindow::Create(parent, id, pos, size, wxBORDER_NONE);
SetBackgroundColour(wxColour(240, 240, 240));
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR));
Bind(wxEVT_TIMER, &AMSrefresh::on_timer, this);
Bind(wxEVT_PAINT, &AMSrefresh::paintEvent, this);
@ -317,6 +320,7 @@ void AMSrefresh::post_event(wxCommandEvent &&event)
if (m_disable_mode)
return;
event.SetString(m_info.can_id);
event.SetInt(atoi(m_ams_id.c_str()));
event.SetEventObject(m_parent);
wxPostEvent(m_parent, event);
event.Skip();
@ -328,7 +332,7 @@ void AMSrefresh::paintEvent(wxPaintEvent &evt)
wxPaintDC dc(this);
auto colour = StateColor::darkModeColorFor(AMS_CONTROL_GRAY700);
if (!wxWindow::IsEnabled()) { colour = AMS_CONTROL_GRAY500; }
if (!wxWindow::IsEnabled()) { colour = StateColor::darkModeColorFor(AMS_CONTROL_GRAY500); }
auto pot = wxPoint((size.x - m_bitmap_selected.GetBmpSize().x) / 2, (size.y - m_bitmap_selected.GetBmpSize().y) / 2);
@ -353,10 +357,9 @@ void AMSrefresh::paintEvent(wxPaintEvent &evt)
}
}
dc.SetPen(wxPen(colour));
dc.SetBrush(wxBrush(colour));
dc.SetFont(Label::Body_11);
//dc.SetTextForeground(colour);
//dc.SetTextForeground(StateColor::darkModeColorFor(AMS_CONTROL_BLACK_COLOUR));
dc.SetTextForeground(colour);
auto tsize = dc.GetTextExtent(m_refresh_id);
pot = wxPoint((size.x - tsize.x) / 2, (size.y - tsize.y) / 2);
dc.DrawText(m_refresh_id, pot);
@ -397,6 +400,9 @@ void AMSrefresh::msw_rescale() {
m_rfid_bitmap_list.push_back(m_bitmap_ams_rfid_5);
m_rfid_bitmap_list.push_back(m_bitmap_ams_rfid_6);
m_rfid_bitmap_list.push_back(m_bitmap_ams_rfid_7);
Layout();
Refresh();
}
void AMSrefresh::DoSetSize(int x, int y, int width, int height, int sizeFlags)
@ -425,6 +431,7 @@ void AMSextruderImage::msw_rescale()
//m_ams_extruder.SetSize(AMS_EXTRUDER_BITMAP_SIZE);
//auto image = m_ams_extruder.ConvertToImage();
m_ams_extruder = ScalableBitmap(this, m_file_name, 36);
Layout();
Refresh();
}
@ -465,6 +472,11 @@ void AMSextruderImage::doRender(wxDC &dc)
dc.SetBrush(m_colour);
dc.DrawRectangle(FromDIP(3), FromDIP(10), size.x - FromDIP(6), size.y - FromDIP(20));
}
else{
dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(*wxWHITE);
dc.DrawRectangle(FromDIP(3), FromDIP(10), size.x - FromDIP(6), size.y - FromDIP(20));
}
dc.DrawBitmap(m_ams_extruder.bmp(), wxPoint((size.x - m_ams_extruder.GetBmpSize().x) / 2, (size.y - m_ams_extruder.GetBmpSize().y) / 2));
}
}
@ -497,7 +509,7 @@ Description:AMSExtImage upon ext lib
AMSExtImage::AMSExtImage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
{
wxWindow::Create(parent, id, pos, AMS_HUMIDITY_SIZE);
SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
m_ams_ext = ScalableBitmap(this, "ams_ext_image", 25);
/*SetSize(wxSize(FromDIP(78), FromDIP(50)));
@ -514,6 +526,8 @@ void AMSExtImage::msw_rescale()
//m_ams_extruder.SetSize(AMS_EXTRUDER_BITMAP_SIZE);
//auto image = m_ams_extruder.ConvertToImage();
m_ams_ext = ScalableBitmap(this, "ams_ext_image", 25);
Layout();
Fit();
Refresh();
}
@ -807,7 +821,7 @@ AMSLib::AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info, AMSModelOrig
m_border_color = (wxColour(130, 130, 128));
m_road_def_color = AMS_CONTROL_GRAY500;
m_ext_type = ext_type;
wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
wxWindow::SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
create(parent);
Bind(wxEVT_PAINT, &AMSLib::paintEvent, this);
@ -837,8 +851,8 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w
m_bitmap_editable_light = ScalableBitmap(this, "ams_editable_light", 14);
m_bitmap_readonly = ScalableBitmap(this, "ams_readonly", 14);
m_bitmap_readonly_light = ScalableBitmap(this, "ams_readonly_light", 14);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68);
m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 68);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 76);
m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 76);
m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 72);
m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 72);
@ -1166,9 +1180,9 @@ void AMSLib::render_extra_lib(wxDC& dc)
{
wxSize size = GetSize();
auto libsize = AMS_LITE_CAN_LIB_SIZE;
ScalableBitmap tray_bitmap = (m_can_index % 2 == 0) ? m_bitmap_extra_tray_left : m_bitmap_extra_tray_right;
ScalableBitmap tray_bitmap_hover = (m_can_index % 2 == 0) ? m_bitmap_extra_tray_left_hover : m_bitmap_extra_tray_right_hover;
ScalableBitmap tray_bitmap_selected = (m_can_index % 2 == 0) ? m_bitmap_extra_tray_left_selected : m_bitmap_extra_tray_right_selected;
ScalableBitmap tray_bitmap = (m_can_index <= 1) ? m_bitmap_extra_tray_left : m_bitmap_extra_tray_right;
ScalableBitmap tray_bitmap_hover = (m_can_index <= 1) ? m_bitmap_extra_tray_left_hover : m_bitmap_extra_tray_right_hover;
ScalableBitmap tray_bitmap_selected = (m_can_index <= 1) ? m_bitmap_extra_tray_left_selected : m_bitmap_extra_tray_right_selected;
auto tmp_lib_colour = m_info.material_colour;
change_the_opacity(tmp_lib_colour);
@ -1186,7 +1200,7 @@ void AMSLib::render_extra_lib(wxDC& dc)
dc.SetPen(wxPen(m_info.material_colour, 4, wxSOLID));
}
if (m_can_index == 0 || m_can_index == 1) {
if (m_can_index == 0 || m_can_index == 3) {
dc.DrawLine(size.x / 2, size.y / 2, size.x / 2, size.y);
}
else {
@ -1195,7 +1209,11 @@ void AMSLib::render_extra_lib(wxDC& dc)
//draw def background
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(AMS_CONTROL_DEF_LIB_BK_COLOUR));
dc.SetBrush(wxBrush(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR)));
if (m_ams_model == AMSModel::EXT_AMS)
{
dc.DrawRoundedRectangle(FromDIP(10), FromDIP(6), libsize.x - FromDIP(20), libsize.y - FromDIP(12), 0);
}
dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), libsize.x - FromDIP(20), libsize.y - FromDIP(20), 0);
if (tmp_lib_colour.GetLuminance() < 0.6) {
@ -1331,6 +1349,15 @@ void AMSLib::render_generic_lib(wxDC &dc)
dc.DrawBitmap(temp_bitmap_brand.bmp(), (size.x - temp_bitmap_brand.GetBmpSize().x) / 2, (size.y - FromDIP(10) - temp_bitmap_brand.GetBmpSize().y));
}
}
if (alpha == 0) {
dc.DrawBitmap(m_bitmap_transparent_def.bmp(), FromDIP(2), FromDIP(2));
}
else if (alpha != 255 && alpha != 254) {
if (transparent_changed) {
transparent_changed = false;
}
dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(2), FromDIP(2));
}
dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
@ -1379,7 +1406,7 @@ void AMSLib::render_generic_lib(wxDC &dc)
//transparent
if (alpha == 0) {
dc.DrawBitmap(m_bitmap_transparent_def.bmp(), FromDIP(4), FromDIP(4));
dc.DrawBitmap(m_bitmap_transparent_def.bmp(), FromDIP(2), FromDIP(2));
}
else if (alpha != 255 && alpha != 254) {
if (transparent_changed) {
@ -1393,11 +1420,11 @@ void AMSLib::render_generic_lib(wxDC &dc)
replace.push_back(rgb);
std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f);
replace.push_back(fill_replace);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68, false, false, true, replace);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 76, false, false, true, replace);
transparent_changed = false;
}
dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4));
dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(2), FromDIP(2));
}
//gradient
if (m_info.material_cols.size() > 1) {
@ -1647,8 +1674,8 @@ void AMSLib::msw_rescale()
m_bitmap_editable_light = ScalableBitmap(this, "ams_editable_light", 14);
m_bitmap_readonly = ScalableBitmap(this, "ams_readonly", 14);
m_bitmap_readonly_light = ScalableBitmap(this, "ams_readonly_light", 14);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68);
m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 68);
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 76);
m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 76);
m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 72);
m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 72);
@ -1972,13 +1999,13 @@ AMSRoadUpPart::AMSRoadUpPart(wxWindow* parent, wxWindowID id, AMSinfo info, AMSM
Bind(wxEVT_PAINT, &AMSRoadUpPart::paintEvent, this);
wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
wxWindow::SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
}
void AMSRoadUpPart::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size) {
wxWindow::Create(parent, id, pos, size);
SetSize(size);
//SetSize(size);
SetMinSize(size);
SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR);
Layout();
@ -2036,7 +2063,6 @@ void AMSRoadUpPart::render(wxDC& dc)
void AMSRoadUpPart::doRender(wxDC& dc)
{
wxSize size = GetSize();
//dc.SetPen(wxPen(m_road_def_color, 2, wxSOLID));
dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
@ -2087,7 +2113,7 @@ void AMSRoadUpPart::doRender(wxDC& dc)
//width = 0.11 * size.x, height = 0.294 * size.y;
//dc.DrawRectangle((size.x - width) / 2, (16), (28), (10));
//dc.DrawRectangle((size.x - width) / 2, (size.y * 0.62 - height / 2), (width), (height));
dc.DrawRectangle(size.x / 2 - FromDIP(14), FromDIP(16), FromDIP(28), FromDIP(10));
dc.DrawRectangle(size.x / 2 - FromDIP(14), height - FromDIP(5), FromDIP(28), FromDIP(10));
}
// left mode
}
@ -2136,7 +2162,7 @@ AMSRoadDownPart::AMSRoadDownPart(wxWindow* parent, wxWindowID id, const wxPoint&
this->SetSize(AMS_DOWN_ROAD_SIZE);
Bind(wxEVT_PAINT, &AMSRoadDownPart::paintEvent, this);
wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
wxWindow::SetBackgroundColour(*wxWHITE);
}
@ -2247,8 +2273,8 @@ void AMSRoadDownPart::doRender(wxDC& dc)
dc.DrawLine(left_nozzle_pos.x - FromDIP(223), 0, left_nozzle_pos.x - FromDIP(223), (size.y / 2));
break;
case AMSRoadShowMode::AMS_ROAD_MODE_SINGLE:
dc.DrawLine(left_nozzle_pos.x - FromDIP(198), (size.y / 2), left_nozzle_pos.x, (size.y / 2));
dc.DrawLine(left_nozzle_pos.x - FromDIP(198), 0, left_nozzle_pos.x - FromDIP(198), (size.y / 2));
dc.DrawLine(left_nozzle_pos.x - FromDIP(197), (size.y / 2), left_nozzle_pos.x, (size.y / 2));
dc.DrawLine(left_nozzle_pos.x - FromDIP(197), 0, left_nozzle_pos.x - FromDIP(197), (size.y / 2));
break;
case AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS:
dc.DrawLine(left_nozzle_pos.x - FromDIP(3), 0, left_nozzle_pos.x - FromDIP(3), size.y / 2);
@ -2335,8 +2361,8 @@ void AMSRoadDownPart::doRender(wxDC& dc)
dc.SetPen(wxPen(m_road_color[1], 4, wxSOLID));
if (m_left_road_length > 0) {
if (m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS){
dc.DrawLine(left_nozzle_pos.x - FromDIP(4), 0, (left_nozzle_pos.x - FromDIP(4)), size.y / 2);
dc.DrawLine(left_nozzle_pos.x - FromDIP(4), size.y / 2, (left_nozzle_pos.x), size.y / 2);
dc.DrawLine(left_nozzle_pos.x - FromDIP(3), 0, (left_nozzle_pos.x - FromDIP(3)), size.y / 2);
dc.DrawLine(left_nozzle_pos.x - FromDIP(3), size.y / 2, (left_nozzle_pos.x), size.y / 2);
dc.DrawLine(left_nozzle_pos.x, size.y / 2, left_nozzle_pos.x, size.y);
}
else{
@ -2426,7 +2452,7 @@ void AMSPreview::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con
wxWindow::Create(parent, id, pos, size);
SetMinSize(size);
SetMaxSize(size);
SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
//SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
Refresh();
}
@ -2487,13 +2513,13 @@ void AMSPreview::render(wxDC &dc)
void AMSPreview::doRender(wxDC &dc)
{
wxSize size = GetSize();
dc.SetPen(wxPen(StateColor::darkModeColorFor(m_background_colour)));
/*dc.SetPen(wxPen(StateColor::darkModeColorFor(m_background_colour)));
dc.SetBrush(wxBrush(StateColor::darkModeColorFor(m_background_colour)));
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);*/
//auto left = m_padding;
auto left = size.x * 0.09;
m_space = size.x * 0.2136;
m_space = size.x * 0.21;
auto color = *wxWHITE;
//four slot
if (m_ams_item_type != AMSModel::EXT_AMS && m_ams_item_type != AMSModel::N3S_AMS){
@ -2592,20 +2618,22 @@ void AMSPreview::doRender(wxDC &dc)
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
if (iter.material_colour != ""){
dc.SetBrush(iter.material_colour);
}
//dc.SetBrush(*wxGREEN);
auto rect = wxRect(((size.x - AMS_ITEM_CUBE_SIZE.x) / 2), ((size.y - AMS_ITEM_CUBE_SIZE.y) / 2), (AMS_ITEM_CUBE_SIZE.x - FromDIP(1)), (AMS_ITEM_CUBE_SIZE.y));
dc.DrawRoundedRectangle(rect, 3);
}
if (iter.material_colour.Red() >= 238 && iter.material_colour.Green() >= 238 && iter.material_colour.Blue() >= 238) {
dc.SetPen(wxPen(AMS_CONTROL_GRAY500));
auto rect = wxRect((size.x - FromDIP(6)) / 2 - FromDIP(1), (size.y - FromDIP(12)) / 2 - FromDIP(1), AMS_ITEM_CUBE_SIZE.x - FromDIP(1), AMS_ITEM_CUBE_SIZE.y - FromDIP(1));
dc.DrawRoundedRectangle(rect, 3);
}
}
if (m_ams_item_type == AMSModel::N3S_AMS) {
auto pot = wxPoint(((size.x - m_single_slot_bitmap.GetBmpSize().x) / 2), ((size.y - m_single_slot_bitmap.GetBmpSize().y) / 2));
dc.DrawBitmap(m_single_slot_bitmap.bmp(), pot);
}
else {
if ((color == *wxWHITE || color.Alpha() == 0) && iter.material_cols.size() <= 1) {
dc.SetPen(wxPen(AMS_CONTROL_GRAY500));
auto rect = wxRect((size.x - FromDIP(6)) / 2 - FromDIP(1), (size.y - FromDIP(12)) / 2 - FromDIP(1), AMS_ITEM_CUBE_SIZE.x - FromDIP(1), AMS_ITEM_CUBE_SIZE.y - FromDIP(1));
dc.DrawRoundedRectangle(rect, 3);
}
auto pot = wxPoint((size.x - m_ext_bitmap.GetBmpSize().x) / 2, (size.y - m_ext_bitmap.GetBmpSize().y) / 2);
dc.DrawBitmap(m_ext_bitmap.bmp(), pot);
@ -2641,6 +2669,9 @@ void AMSPreview::msw_rescale() {
m_four_slot_bitmap = ScalableBitmap(this, "four_slot_ams_item", 26);
m_single_slot_bitmap = ScalableBitmap(this, "single_slot_ams_item", 26);
m_ext_bitmap = ScalableBitmap(this, "ext_ams_item", 24);
Layout();
Refresh();
}
@ -2692,7 +2723,7 @@ void AMSHumidity::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, co
wxWindow::Create(parent, id, pos, size);
SetSize(size);
SetMinSize(size);
SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR);
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
Refresh();
}
@ -2736,14 +2767,14 @@ void AMSHumidity::doRender(wxDC& dc)
wxSize size = GetSize();
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(AMS_CONTROL_DEF_BLOCK_BK_COLOUR));
dc.SetBrush(wxBrush(StateColor::darkModeColorFor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR)));
// left mode
if (m_amsinfo.ams_humidity >= 1 && m_amsinfo.ams_humidity <= 5) { m_show_humidity = true; }
else { m_show_humidity = false; }
if (m_amsinfo.ams_humidity >= 1 && m_amsinfo.ams_humidity <= 5) {
//background
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(AMS_CONTROL_DEF_HUMIDITY_BK_COLOUR));
dc.SetBrush(wxBrush(StateColor::darkModeColorFor(AMS_CONTROL_DEF_BLOCK_BK_COLOUR)));
dc.DrawRoundedRectangle(0, 0, (size.x), (size.y), (size.y / 2));
//hum image
@ -2760,7 +2791,7 @@ void AMSHumidity::doRender(wxDC& dc)
auto tsize = dc.GetMultiLineTextExtent(hum_percentage);
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetFont(Label::Body_14);
dc.SetTextForeground(AMS_CONTROL_BLACK_COLOUR);
dc.SetTextForeground(StateColor::darkModeColorFor(AMS_CONTROL_BLACK_COLOUR));
//pot = wxPoint(FromDIP(size.x * 0.3), FromDIP((size.y - tsize.y) / 2));
pot.x = pot.x + hum_img.GetBmpSize().x + FromDIP(3);
dc.DrawText(hum_percentage, pot);
@ -2793,14 +2824,18 @@ void AMSHumidity::doRender(wxDC& dc)
}
void AMSHumidity::msw_rescale() {
for (int i = 1; i < ams_humidity_img.size(); i++) {
ams_humidity_img[i] = ScalableBitmap(this, "hum_level" + std::to_string(i) + "_light", 16);
for (int i = 0; i < ams_humidity_img.size(); i++) {
if (i < ams_humidity_img.size() / 2){
ams_humidity_img[i] = ScalableBitmap(this, "hum_level" + std::to_string(i + 1) + "_light", 16);
}
else{
ams_humidity_img[i] = ScalableBitmap(this, "hum_level" + std::to_string((i - ams_humidity_img.size() / 2 + 1)) + "_dark", 16);
}
for (int i = 1; i < ams_humidity_img.size(); i++) {
ams_humidity_img[i] = ScalableBitmap(this, "hum_level" + std::to_string(i) + "_dark", 16);
}
ams_sun_img = ScalableBitmap(this, "ams_drying", 16);
Layout();
Refresh();
}
@ -2812,7 +2847,7 @@ AmsItem::AmsItem() {}
AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model, AMSPanelPos pos) : AmsItem()
{
m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 136);
m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 134);
SetDoubleBuffered(true);
m_ams_model = model;
@ -2821,13 +2856,20 @@ AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model, AMSPanelPos pos
if (m_ams_model == AMSModel::GENERIC_AMS){
wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE);
SetSize(AMS_CANS_WINDOW_SIZE);
SetMinSize(AMS_CANS_WINDOW_SIZE);
SetMaxSize(AMS_CANS_WINDOW_SIZE);
}
else{
wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, AMS_SINGLE_CAN_SIZE);
SetSize(AMS_SINGLE_CAN_SIZE);
SetMinSize(AMS_SINGLE_CAN_SIZE);
SetMaxSize(AMS_SINGLE_CAN_SIZE);
}
create(parent);
SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
Bind(wxEVT_PAINT, &AmsItem::paintEvent, this);
}
@ -2858,37 +2900,31 @@ void AmsItem::create(wxWindow *parent)
}
else{
if (m_ams_model == EXT_AMS){
auto ams_ext_image = new AMSExtImage(this, wxID_ANY);
sizer_item->Add(ams_ext_image, 0, wxALIGN_CENTER_HORIZONTAL, 0);
m_ext_image = new AMSExtImage(this, wxID_ANY);
sizer_item->Add(m_ext_image, 0, wxALIGN_CENTER_HORIZONTAL, 0);
}
}
m_panel_road = new AMSRoadUpPart(this, wxID_ANY, m_info, m_ams_model);
sizer_item->Add(sizer_can, 0, wxALIGN_CENTER_HORIZONTAL, 0);
//sizer_item->Add(m_panel_road, 0, wxALIGN_CENTER_HORIZONTAL, 0);
sizer_item->Add(m_panel_road, 0, wxALL | wxEXPAND, 0);
sizer_item->Add(m_panel_road, 1, wxEXPAND);
SetSizer(sizer_item);
}
else{
sizer_can_extra = new wxGridSizer(2, 2, FromDIP(20), FromDIP(20));
sizer_item = new wxBoxSizer(wxVERTICAL);
auto it = m_info.cans.begin();
for (; it != m_info.cans.end(); it++) {
AddExtraCan(*it, m_can_count, m_info.cans.size(), sizer_can_extra);
m_can_count++;
if (m_info.cans.size() == 4){
AddLiteCan(m_info.cans[0], 0, sizer_can_extra);
AddLiteCan(m_info.cans[3], 3, sizer_can_extra);
AddLiteCan(m_info.cans[1], 1, sizer_can_extra);
AddLiteCan(m_info.cans[2], 2, sizer_can_extra);
m_can_count = 4;
}
it = m_info.cans.begin();
//auto road_panel = new wxWindow(this, wxID_ANY);
//auto road_panel = new wxPanel(this, wxID_ANY);
//road_panel->SetSize(AMS_CAN_ROAD_SIZE);
//road_panel->SetMinSize(AMS_CAN_ROAD_SIZE);
//m_panel_road = new AMSRoadUpPart(this, wxID_ANY, m_info, m_ams_model);
sizer_item->Add(sizer_can_extra, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_TOP, 0);
//sizer_item->Add(sizer_can_extra, 0, wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL, 0);
//sizer_item->Add(m_panel_road, 0, wxALIGN_CENTER_HORIZONTAL, 0);
//sizer_item->Add(sizer_can_extra, 0, wxALIGN_CENTER);
SetSizer(sizer_item);
}
@ -2907,19 +2943,19 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
amscan->SetSize(wxSize(FromDIP(52), FromDIP(109)));
amscan->SetMinSize(wxSize(FromDIP(52), FromDIP(109)));
amscan->SetBackgroundColour(wxColour(240, 240, 240));
amscan->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
//amscan->SetBackgroundColour(wxTRANSPARENT);
wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxVERTICAL);
AMSrefresh* m_panel_refresh;
AMSExtText* m_panel_text;
if (m_ams_model != AMSModel::EXT_AMS)
{
m_panel_refresh = new AMSrefresh(amscan, m_can_count, caninfo);
m_can_refresh_list[caninfo.can_id] = m_panel_refresh;
}
else if (m_ams_model == AMSModel::EXT_AMS){
m_panel_text = new AMSExtText(amscan, wxID_ANY);
m_ext_text = new AMSExtText(amscan, wxID_ANY);
}
AMSLib* m_panel_lib = nullptr;
@ -2950,7 +2986,6 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
ev.Skip();
});
m_panel_lib->m_ams_model = m_ams_model;
m_panel_lib->m_ams_id = m_info.ams_id;
m_panel_lib->m_slot_id = caninfo.can_id;
@ -2974,7 +3009,7 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
if (m_ams_model == AMSModel::EXT_AMS){
m_sizer_ams->Add(0, 0, 0, wxALIGN_CENTER_HORIZONTAL, 0);
//m_sizer_ams->Add(m_panel_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 4);
m_sizer_ams->Add(m_panel_text, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, FromDIP(4));
m_sizer_ams->Add(m_ext_text, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, FromDIP(4));
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
}
}
@ -2985,31 +3020,19 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
amscan->Fit();
sizer->Add(amscan, 0, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
/*if (m_ams_model == AMSModel::GENERIC_AMS) {
sizer->Add(amscan, 0, wxALL, 0);
}
else if (m_ams_model == AMSModel::EXTRA_AMS)
{
if (canindex > 1) {
sizer->Prepend(amscan, 0, wxALL, 0);
}
else {
sizer->Add(amscan, 0, wxALL, 0);
}
}*/
m_can_lib_list[caninfo.can_id] = m_panel_lib;
//m_can_road_list[caninfo.can_id] = m_panel_road;
}
void AmsItem::AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer* sizer)
void AmsItem::AddLiteCan(Caninfo caninfo, int canindex, wxGridSizer* sizer)
{
auto amscan = new wxWindow(this, wxID_ANY);
amscan->SetSize(wxSize(FromDIP(49), FromDIP(72)));
amscan->SetMinSize(wxSize(FromDIP(49), FromDIP(72)));
amscan->SetMaxSize(wxSize(FromDIP(49), FromDIP(72)));
amscan->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
amscan->SetBackgroundColour(StateColor::darkModeColorFor(AMS_CONTROL_DEF_LIB_BK_COLOUR));
wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxVERTICAL);
@ -3034,7 +3057,6 @@ void AmsItem::AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer
ev.Skip();
});
m_panel_lib->m_ams_model = m_ams_model;
m_panel_lib->m_ams_id = m_info.ams_id;
m_panel_lib->m_slot_id = caninfo.can_id;
@ -3042,36 +3064,28 @@ void AmsItem::AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer
m_panel_lib->m_can_index = canindex;
//auto m_panel_road = new AMSRoad(amscan, wxID_ANY, caninfo, canindex, maxcan, wxDefaultPosition, AMS_CAN_ROAD_SIZE);
if (canindex == 0){
switch (canindex){
case 0:
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_BOTTOM, 0);
}
else if (canindex == 1){
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_BOTTOM, 0);
}
else if (canindex == 2){
break;
case 1:
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_TOP, 0);
}
else if (canindex == 3){
break;
case 2:
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_TOP, 0);
break;
case 3:
m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_BOTTOM, 0);
break;
default:
break;
}
amscan->SetSizer(m_sizer_ams);
amscan->Layout();
amscan->Fit();
sizer->Add(amscan, canindex, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
/*if (m_ams_model == AMSModel::GENERIC_AMS) {
sizer->Add(amscan, 0, wxALL, 0);
}
else if (m_ams_model == AMSModel::EXTRA_AMS)
{
if (canindex > 1) {
sizer->Prepend(amscan, 0, wxALL, 0);
}
else {
sizer->Add(amscan, 0, wxALL, 0);
}
}*/
sizer->Add(amscan, 0, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
m_can_lib_list[caninfo.can_id] = m_panel_lib;
//m_can_road_list[caninfo.can_id] = m_panel_road;
@ -3095,6 +3109,17 @@ void AmsItem::Update(AMSinfo info)
i++;
}
for (int i = 0; i < m_can_count; i++) {
auto it = m_can_refresh_list.find(std::to_string(i));
if (it == m_can_refresh_list.end()) break;
auto refresh = it->second;
if (refresh != nullptr){
refresh->Update(info.ams_id, info.cans[i]);
refresh->Show();
}
}
for (int i = 0; i < m_can_lib_list.size(); i++) {
AMSLib* lib = m_can_lib_list[std::to_string(i)];
if (lib != nullptr){
@ -3313,8 +3338,6 @@ void AmsItem::paintEvent(wxPaintEvent& evt)
void AmsItem::render(wxDC& dc)
{
/*this->SetSize(AMS_CANS_WINDOW_SIZE);
this->SetMinSize(AMS_CANS_WINDOW_SIZE);*/
#ifdef __WXMSW__
wxSize size = GetSize();
wxMemoryDC memdc;
@ -3336,37 +3359,12 @@ void AmsItem::render(wxDC& dc)
void AmsItem::doRender(wxDC& dc)
{
/*if (m_ams_model == AMSModel::GENERIC_AMS)
{
this->SetSize(AMS_CANS_WINDOW_SIZE);
this->SetMinSize(AMS_CANS_WINDOW_SIZE);
}
else
{
this->SetSize(AMS_SINGLE_CAN_SIZE);
this->SetMinSize(AMS_SINGLE_CAN_SIZE);
}*/
wxSize size = GetSize();
//road for extra
if (m_ams_model == AMSModel::AMS_LITE) {
dc.DrawBitmap(m_bitmap_extra_framework.bmp(), (size.x - m_bitmap_extra_framework.GetBmpSize().x) / 2, (size.y - m_bitmap_extra_framework.GetBmpSize().y) / 2 - FromDIP(3));
/*for (auto lib_it : m_can_lib_list) {
AMSLib* lib = lib_it.second;
if (m_road_canid.empty()) {
lib->on_pass_road(false);
}
else {
if (lib->m_info.can_id == m_road_canid) {
m_road_colour = lib->m_info.material_colour;
lib->on_pass_road(true);
}
}
}*/
// A1
dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
@ -3394,14 +3392,14 @@ void AmsItem::RenderExtraRoad(wxDC& dc, wxSize size) {
dc.DrawLine(a1_left, a1_top, end_top, a1_top);
// A2
auto a2_left = m_can_lib_list["1"]->GetScreenPosition().x + m_can_lib_list["1"]->GetSize().x / 2;
auto a2_left = m_can_lib_list["3"]->GetScreenPosition().x + m_can_lib_list["3"]->GetSize().x / 2;
auto local_pos2 = GetScreenPosition().x + GetSize().x / 2;
a2_left = size.x / 2 + (a2_left - local_pos2);
dc.DrawLine(a2_left, FromDIP(30), a2_left, a2_top);
dc.DrawLine(a2_left, a2_top, end_top, a2_top);
// A3
auto a3_left = m_can_lib_list["2"]->GetScreenPosition().x + m_can_lib_list["2"]->GetSize().x / 2;
auto a3_left = m_can_lib_list["1"]->GetScreenPosition().x + m_can_lib_list["1"]->GetSize().x / 2;
auto local_pos3 = GetScreenPosition().x + GetSize().x / 2;
a3_left = size.x / 2 + (a3_left - local_pos3);
dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
@ -3409,7 +3407,7 @@ void AmsItem::RenderExtraRoad(wxDC& dc, wxSize size) {
//// A4
auto a4_left = m_can_lib_list["3"]->GetScreenPosition().x + m_can_lib_list["3"]->GetSize().x / 2;
auto a4_left = m_can_lib_list["2"]->GetScreenPosition().x + m_can_lib_list["2"]->GetSize().x / 2;
auto local_pos4 = GetScreenPosition().x + GetSize().x / 2;
a4_left = size.x / 2 + (a4_left - local_pos4);
dc.DrawLine(a4_left, FromDIP(160), a4_left, a4_top);
@ -3432,48 +3430,27 @@ void AmsItem::RenderExtraRoad(wxDC& dc, wxSize size) {
if (m_road_canid == "0") {
dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
dc.DrawLine(a1_left, a1_top, end_top, a1_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 2), a1_top, end_top - FromDIP(passroad_width - 2), size.y);
}
if (m_road_canid == "1") {
dc.DrawLine(a2_left, FromDIP(30), a2_left, a2_top);
dc.DrawLine(a2_left, a2_top, end_top, a2_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 2), a2_top, end_top - FromDIP(passroad_width - 2), size.y);
}
if (m_road_canid == "2") {
dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
dc.DrawLine(a3_left, a3_top, end_top, a3_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 2), a3_top, end_top - FromDIP(passroad_width - 2), size.y);
dc.DrawLine(end_top - FromDIP(passroad_width - 3), a1_top, end_top - FromDIP(passroad_width - 3), size.y);
}
if (m_road_canid == "3") {
dc.DrawLine(a4_left, FromDIP(160), a4_left, a4_top);
dc.DrawLine(a4_left, a4_top, end_top, a4_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 2), a4_top, end_top - FromDIP(passroad_width - 2), size.y);
}
dc.DrawLine(a2_left, FromDIP(30), a2_left, a2_top);
dc.DrawLine(a2_left, a2_top, end_top, a2_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 3), a2_top, end_top - FromDIP(passroad_width - 3), size.y);
}
/*if (!m_road_canid.empty()) {
if (!m_road_canid.empty()) {
if (m_road_canid == "0") {
dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
dc.DrawLine(end_top, a1_top, end_top, size.y);
if (m_road_canid == "1") {
dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
dc.DrawLine(a3_left, a3_top, end_top, a3_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 3), a3_top, end_top - FromDIP(passroad_width - 3), size.y);
}
else if (m_road_canid == "1") {
dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
dc.DrawLine(end_top, a2_top, end_top, size.y);
}
else if (m_road_canid == "2") {
dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
dc.DrawLine(end_top, a3_top, end_top, size.y);
}
else if (m_road_canid == "3") {
dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
dc.DrawLine(end_top, a4_top, end_top, size.y);
if (m_road_canid == "2") {
dc.DrawLine(a4_left, FromDIP(160), a4_left, a4_top);
dc.DrawLine(a4_left, a4_top, end_top, a4_top);
dc.DrawLine(end_top - FromDIP(passroad_width - 3), a4_top, end_top - FromDIP(passroad_width - 3), size.y);
}
}
}*/
}
catch (...) {}
}
@ -3497,7 +3474,14 @@ void AmsItem::msw_rescale()
AMSLib* lib = lib_it.second;
if (lib) lib->msw_rescale();
}
m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 136);
if (m_humidity != nullptr) m_humidity->msw_rescale();
if (m_ext_text != nullptr) m_ext_text->msw_rescale();
if (m_ext_image != nullptr) m_ext_image->msw_rescale(); //ext image upon the lib
m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 134);
Layout();
Refresh();
}
void AmsItem::show_sn_value(bool show)

View File

@ -667,7 +667,7 @@ public:
void Update(AMSinfo info);
void create(wxWindow *parent);
void AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* sizer);
void AddExtraCan(Caninfo caninfo, int canindex, int maxcan, wxGridSizer* sizer);
void AddLiteCan(Caninfo caninfo, int canindex, wxGridSizer* sizer);
void SetDefSelectCan();
void SelectCan(std::string canid);
void PlayRridLoading(wxString canid);
@ -701,7 +701,7 @@ public:
//std::map<std::string, AMSRoad*> m_can_road_list;
AMSRoadUpPart* m_panel_road = { nullptr };
std::map<std::string, AMSrefresh*> m_can_refresh_list;
AMSHumidity* m_humidity;
AMSHumidity* m_humidity = { nullptr };
AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr};
@ -711,7 +711,8 @@ public:
wxBoxSizer * sizer_can_middle = {nullptr};
wxBoxSizer * sizer_can_left = {nullptr};
wxBoxSizer * sizer_can_right = {nullptr};
AMSPassRoadSTEP m_step = {AMSPassRoadSTEP ::AMS_ROAD_STEP_NONE};
AMSExtImage* m_ext_image = { nullptr }; //the ext image upon the ext ams
AMSExtText* m_ext_text = { nullptr }; //the ext text upon the ext ams
};
wxDECLARE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);