diff --git a/resources/images/ams_extra_framework_mid_new.svg b/resources/images/ams_extra_framework_mid_new.svg
new file mode 100644
index 000000000..1b71d9ae9
--- /dev/null
+++ b/resources/images/ams_extra_framework_mid_new.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp
index a199eb2ca..473ff4bad 100644
--- a/src/slic3r/GUI/StatusPanel.cpp
+++ b/src/slic3r/GUI/StatusPanel.cpp
@@ -2590,9 +2590,12 @@ void StatusPanel::update_ams(MachineObject *obj)
AMSModel ams_mode = AMSModel::GENERIC_AMS;
if (obj) {
- if (obj->get_printer_ams_type() == "f1") { ams_mode = AMSModel::EXTRA_AMS; }
+ 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[0]->type);
+ }
if (!obj
|| !obj->is_connected()
@@ -2609,7 +2612,8 @@ void StatusPanel::update_ams(MachineObject *obj)
}
- m_ams_control->SetAmsModel(AMSModel::NO_AMS, ams_mode);
+ m_ams_control->SetAmsModel(AMSModel::EXT_AMS, ams_mode);
+
show_ams_group(false);
m_ams_control->show_auto_refill(false);
}
@@ -2630,6 +2634,9 @@ void StatusPanel::update_ams(MachineObject *obj)
AMSinfo info;
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)) {
+ if (ams_mode == AMSModel::AMS_LITE) {
+ info.ams_type = AMSModel::AMS_LITE;
+ }
ams_info.push_back(info);
}
}
@@ -3865,6 +3872,8 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event)
{
if (obj) {
std::string curr_ams_id = m_ams_control->GetCurentAms();
+ std::string curr_selected_ams_id = std::to_string(event.GetInt());
+
if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) {
//update_ams_control_state(curr_ams_id, true);
return;
@@ -3897,7 +3906,7 @@ void StatusPanel::on_ams_guide(wxCommandEvent& event)
if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::GENERIC_AMS) {
ams_wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/use-ams-on-bambu-studio";
}
- else if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::EXTRA_AMS) {
+ else if (m_ams_control && m_ams_control->m_is_none_ams_mode == AMSModel::AMS_LITE) {
ams_wiki_url = "https://wiki.bambulab.com/en/ams-lite";
}
else {
diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp
index 34254f324..a3e707955 100644
--- a/src/slic3r/GUI/Widgets/AMSControl.cpp
+++ b/src/slic3r/GUI/Widgets/AMSControl.cpp
@@ -2412,6 +2412,7 @@ Description:AMSControl
// WX_DEFINE_OBJARRAY(AmsItemsHash);
#define AMS_CANS_SIZE wxSize(FromDIP(284), -1)
#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), -1)
+#define SINGLE_SLOT_AMS_PANEL_SIZE wxSize(FromDIP(264), (160))
AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size)
: wxSimplebook(parent, wxID_ANY, pos, size)
, m_Humidity_tip_popup(AmsHumidityTipPopup(this))
@@ -2528,7 +2529,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_panel_down_road->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR);
m_down_road = new AMSRoadDownPart(m_panel_down_road, wxID_ANY, wxDefaultPosition, AMS_DOWN_ROAD_SIZE);
- m_sizer_down_road->Add(m_panel_down_road, 0, wxALIGN_CENTER, 0);
+ m_sizer_down_road->Add(m_panel_down_road, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 0);
// ams mode
//m_simplebook_ams_left = new wxSimplebook(m_simplebook_ams_left, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE, 0);
@@ -2562,8 +2563,8 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_sizer_option_right->SetMinSize( wxSize( AMS_CANS_SIZE.x,-1 ) );*/
/*m_sizer_option_left->SetMinSize(wxSize(FromDIP(239), -1));
m_sizer_option_right->SetMinSize(wxSize(FromDIP(239), -1));*/
- m_sizer_option_left->SetMinSize(wxSize(FromDIP(180), -1));
- //m_sizer_option_right->SetMinSize(wxSize(FromDIP(120), -1));
+ m_sizer_option_left->SetMinSize(wxSize(FromDIP(140), -1));
+ m_sizer_option_right->SetMinSize(wxSize(FromDIP(140), -1));
StateColor btn_bg_green(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled),
std::pair(wxColour(27, 136, 68), StateColor::Pressed),
@@ -2599,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, wxLEFT, 0);
+ m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER, 0);
m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24);
m_button_ams_setting_hover = ScalableBitmap(this, "ams_setting_hover", 24);
@@ -2607,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, wxLEFT, FromDIP(5));
+ m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER|wxLEFT, FromDIP(5));
/*option mid*/
@@ -2657,15 +2658,15 @@ 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(60));
+ 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_ams_option->Add(m_sizer_option_left, 0, wxEXPAND, 0);
+ m_sizer_ams_option->Add(m_sizer_option_left, 0, wxLEFT, 0);
//m_sizer_ams_option->Add(m_sizer_option_mid, 1, wxEXPAND, 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_right, 0, wxEXPAND, 0);
- m_sizer_ams_option->Add(m_sizer_option_right, 0, wxLEFT, 0);
+ m_sizer_ams_option->Add(m_sizer_option_right, 0, wxALIGN_CENTER, 0);
@@ -2890,7 +2891,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
m_sizer_body->Add(m_sizer_ams_items, 0, wxALIGN_CENTER, 0);
m_sizer_body->Add(0, 0, 1, wxEXPAND | wxTOP, FromDIP(10));
m_sizer_body->Add(m_sizer_ams_body, 0, wxALIGN_CENTER, 0);
- m_sizer_body->Add(m_sizer_down_road, 0, wxALIGN_CENTER, 0);
+ m_sizer_body->Add(m_sizer_down_road, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, 0);
//m_sizer_body->Add(m_sizer_ams_body, 0, wxEXPAND, 0);
//m_sizer_body->Add(m_sizer_ams_option, 0, wxEXPAND, 0);
m_sizer_body->Add(m_sizer_ams_option, 0, wxALIGN_CENTER, 0);
@@ -2943,6 +2944,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
}
m_Humidity_tip_popup.Popup();
});
+ Bind(EVT_AMS_ON_SELECTED, &AMSControl::AmsSelectedSwitch, this);
/* m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
@@ -2968,13 +2970,8 @@ AMSControl::~AMSControl() {
m_simplebook_ams_right->DeleteAllPages();*/
}
-std::string AMSControl::GetCurentAms(bool right_panel) {
- if (right_panel){
- return m_current_ams_right;
- }
- else{
- return m_current_ams_left;
- }
+std::string AMSControl::GetCurentAms() {
+ return m_current_ams;
}
std::string AMSControl::GetCurentShowAms(bool right_panel) {
if (right_panel){
@@ -3017,6 +3014,37 @@ bool AMSControl::IsAmsInRightPanel(std::string ams_id) {
}
}
+void AMSControl::AmsSelectedSwitch(wxCommandEvent& event) {
+ std::string ams_id_selected = std::to_string(event.GetInt());
+ if (m_current_ams != ams_id_selected){
+ m_current_ams = ams_id_selected;
+ }
+ if (m_current_show_ams_left != ams_id_selected){
+ auto item = m_ams_item_list[m_current_show_ams_left];
+ if (!item) return;
+ try{
+ for (auto can : item->m_can_lib_list){
+ can.second->UnSelected();
+ }
+ }
+ catch (...){
+ ;
+ }
+ }
+ else if (m_current_show_ams_right != ams_id_selected){
+ auto item = m_ams_item_list[m_current_show_ams_right];
+ if (!item) return;
+ try {
+ for (auto can : item->m_can_lib_list) {
+ can.second->UnSelected();
+ }
+ }
+ catch (...) {
+ ;
+ }
+ }
+}
+
wxColour AMSControl::GetCanColour(std::string amsid, std::string canid)
{
wxColour col = *wxWHITE;
@@ -3044,7 +3072,7 @@ void AMSControl::SetActionState(bool button_status[])
void AMSControl::EnterNoneAMSMode()
{
//m_vams_lib->m_ams_model = m_ext_model;
- if(m_is_none_ams_mode == AMSModel::NO_AMS) return;
+ if(m_is_none_ams_mode == AMSModel::EXT_AMS) return;
m_panel_items_left->Hide();
m_simplebook_ams_left->SetSelection(0);
@@ -3058,7 +3086,7 @@ void AMSControl::EnterNoneAMSMode()
m_amswin->Layout();
m_amswin->Fit();
Layout();
- m_is_none_ams_mode = AMSModel::NO_AMS;
+ m_is_none_ams_mode = AMSModel::EXT_AMS;
}
void AMSControl::EnterGenericAMSMode()
@@ -3091,7 +3119,7 @@ void AMSControl::EnterGenericAMSMode()
void AMSControl::EnterExtraAMSMode()
{
//m_vams_lib->m_ams_model = m_ext_model;
- if(m_is_none_ams_mode == AMSModel::EXTRA_AMS) return;
+ if(m_is_none_ams_mode == AMSModel::AMS_LITE) return;
m_panel_items_left->Hide();
@@ -3114,7 +3142,7 @@ void AMSControl::EnterExtraAMSMode()
m_amswin->Fit();
Layout();
Refresh(true);
- m_is_none_ams_mode = AMSModel::EXTRA_AMS;
+ m_is_none_ams_mode = AMSModel::AMS_LITE;
}
@@ -3146,19 +3174,30 @@ void AMSControl::msw_rescale()
m_button_ams_setting->SetBitmap(m_button_ams_setting_normal.bmp());
m_extruder->msw_rescale();
- m_vams_extra_road->msw_rescale();
+ if (m_vams_extra_road) m_vams_extra_road->msw_rescale();
- m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24)));
- m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24)));
- m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24)));
- m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24)));
- m_button_guide->SetMinSize(wxSize(-1, FromDIP(24)));
- m_button_retry->SetMinSize(wxSize(-1, FromDIP(24)));
- m_vams_lib->msw_rescale();
+
+ if (m_button_extruder_feed) m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24)));
+ if (m_button_extruder_back) m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24)));
+ if (m_button_auto_refill) m_button_auto_refill->SetMinSize(wxSize(-1, FromDIP(24)));
+ if (m_button_ams_setting) m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24)));
+ if (m_button_guide) m_button_guide->SetMinSize(wxSize(-1, FromDIP(24)));
+ if (m_button_retry) m_button_retry->SetMinSize(wxSize(-1, FromDIP(24)));
+ if (m_vams_lib) m_vams_lib->msw_rescale();
for (auto ams_item : m_ams_item_list) {
- ams_item.second->msw_rescale();
+ if (ams_item.second){
+ ams_item.second->msw_rescale();
+ }
+ }
+ for (auto ams_prv : m_ams_preview_list) {
+ if (ams_prv.second){
+ ams_prv.second->msw_rescale();
+ }
+ }
+ if (m_down_road){
+ m_down_road->msw_rescale();
}
Layout();
@@ -3233,41 +3272,32 @@ 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)
- {
+ 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)
- {
+ if (m_ams_item_list[ams_id]->m_info.cans.size() == 4){
len = 133;
}
- else
- {
- for (auto pairId : pair_id)
- {
+ else{
+ for (auto pairId : pair_id){
if (pairId.first == ams_id) {
len = 72;
break;
}
- if (pairId.second == ams_id)
- {
+ if (pairId.second == ams_id){
len = 188;
break;
}
}
}
- if (len == -1)
- {
- if (left)
- {
+ if (len == -1){
+ if (left){
len = 213;
}
- else
- {
+ else{
len = 72;
}
}
@@ -3349,7 +3379,6 @@ void AMSControl::CreateAmsNew()
Freeze();
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++)
{
-
if (first_left_page && ams_info->nozzle_id == 1) {
first_left_page = false;
left_init_mode = ams_info->cans.size() == 4 ? AMSRoadShowMode::AMS_ROAD_MODE_FOUR : AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@@ -3358,11 +3387,11 @@ void AMSControl::CreateAmsNew()
{
if (first_right_page && ams_info->nozzle_id == 0) {
first_right_page = false;
- right_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
+ right_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
}
if (first_left_page && ams_info->nozzle_id == 1) {
first_left_page = false;
- left_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
+ left_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
}
AddAmsPreview(*ams_info, ams_info->ams_type);
AddAms(*ams_info);
@@ -3420,7 +3449,7 @@ void AMSControl::CreateAmsNew()
}
pair_id.push_back(std::make_pair(single_info_right[0].ams_id, single_info_right[1].ams_id));
}
- AddAmsPreview(ext_info, AMSModel::NO_AMS);
+ AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_right);
single_info_right.clear();
@@ -3439,7 +3468,7 @@ void AMSControl::CreateAmsNew()
}
pair_id.push_back(std::make_pair(single_info_left[0].ams_id, single_info_left[1].ams_id));
}
- AddAmsPreview(ext_info, AMSModel::NO_AMS);
+ AddAmsPreview(ext_info, AMSModel::EXT_AMS);
AddAms(single_info_left);
single_info_left.clear();
@@ -3448,6 +3477,7 @@ void AMSControl::CreateAmsNew()
m_simplebook_ams_left->Hide();
m_panel_items_left->Hide();
}
+
else if(m_nozzle_num > 1) {
m_sizer_items_left->Layout();
m_sizer_items_right->Layout();
@@ -3462,8 +3492,24 @@ 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";
+ 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"){
+ 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"){
+ m_current_show_ams_right = it->second->m_info.ams_id;
+ }
+ }
+ m_current_ams = "-1";
m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ m_extruder->OnAmsLoading(false, 1);
m_down_road->UpdatePassRoad("0", false, -1, (++it)->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ m_extruder->OnAmsLoading(false);
+
//Refresh();
//Freeze();
Thaw();
@@ -3482,13 +3528,13 @@ void AMSControl::CreateAmsSingleNozzle()
for (auto ams_info = m_ams_info.begin(); ams_info != m_ams_info.end(); ams_info++){
if (ams_info->cans.size() == 4){
if (m_item_nums[0] <= m_item_nums[1]){
- if (m_item_nums[0] == 0) left_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
+ if (m_item_nums[0] == 0) left_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
left = true;
m_item_ids[0].push_back(ams_info->ams_id);
m_item_nums[0]++;
}
else{
- if (m_item_nums[1] == 0) right_init_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
+ if (m_item_nums[1] == 0) right_init_mode = ams_info->ams_type == AMSModel::AMS_LITE ? AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS : AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
left = false;
m_item_ids[1].push_back(ams_info->ams_id);
m_item_nums[1]++;
@@ -3526,6 +3572,11 @@ void AMSControl::CreateAmsSingleNozzle()
BOOST_LOG_TRIVIAL(trace) << "vt_slot empty!";
return;
}
+ if (m_ams_info.size() > 0 && m_ams_info[0].ams_type == AMSModel::AMS_LITE){
+ for (auto ext = m_ext_info.begin(); ext != m_ext_info.end(); ext++){
+ ext->ext_type = AMSModelOriginType::LITE_EXT;
+ }
+ }
single_info.push_back(m_ext_info[0]);
if (m_item_nums[0] <= m_item_nums[1]){
if (m_item_nums[0] == 0){
@@ -3541,7 +3592,6 @@ void AMSControl::CreateAmsSingleNozzle()
m_item_ids[0].push_back(it.ams_id);
}
m_item_nums[0]++;
-
}
else{
if (m_item_nums[1] == 0){
@@ -3562,7 +3612,7 @@ void AMSControl::CreateAmsSingleNozzle()
if (single_info.size() == 2){
pair_id.push_back(std::make_pair(single_info[0].ams_id, single_info[1].ams_id));
}
- AddAmsPreview(m_ext_info[0], AMSModel::NO_AMS);
+ AddAmsPreview(m_ext_info[0], AMSModel::EXT_AMS);
AddAms(single_info, left);
m_panel_items_left->Hide();
@@ -3570,6 +3620,7 @@ void AMSControl::CreateAmsSingleNozzle()
/*m_simplebook_ams_right->Hide();
m_panel_items_right->Hide();*/
//m_simplebook_ams_left->Hide();
+
m_simplebook_ams_right->Hide();
m_panel_items_right->Hide();
m_simplebook_ams_left->SetSelection(0);
@@ -3594,10 +3645,26 @@ void AMSControl::CreateAmsSingleNozzle()
m_down_road->UpdateLeft(1, left_init_mode);
m_down_road->UpdateRight(1, right_init_mode);
}
+
+ m_current_show_ams_left = "-1";
+ m_current_show_ams_right = "-1";
+ 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"){
+ 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"){
+ m_current_show_ams_right = it->second->m_info.ams_id;
+ }
+ }
+ m_current_ams = "-1";
m_extruder->update(1);
auto it = m_ams_item_list.begin();
- m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- if ((++it) != m_ams_item_list.end()){
+ if (it != m_ams_item_list.end()){
+ m_down_road->UpdatePassRoad("0", true, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ }
+
+ if ((++it) != m_ams_item_list.end()) {
m_down_road->UpdatePassRoad("0", false, -1, it->second->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
}
@@ -3810,7 +3877,7 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex
if (ifo.ams_id == ams_id) {
cans->m_info = ifo;
cans->Update(ifo);
- cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true);
+ cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
}
}
}
@@ -3819,7 +3886,7 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex
if (ifo.ams_id == ams_id) {
cans->m_info = ifo;
cans->Update(ifo);
- cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true);
+ cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
}
}
}
@@ -3944,7 +4011,7 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex
if (ifo.ams_id == ams_id) {
cans->m_info = ifo;
cans->Update(ifo);
- cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true);
+ cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
}
}
}
@@ -3953,7 +4020,7 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex
if (ifo.ams_id == ams_id) {
cans->m_info = ifo;
cans->Update(ifo);
- cans->show_sn_value(m_ams_model == AMSModel::EXTRA_AMS ? false : true);
+ cans->show_sn_value(m_ams_model == AMSModel::AMS_LITE ? false : true);
}
}
}
@@ -4000,7 +4067,7 @@ void AMSControl::AddAms(AMSinfo info, bool left)
{
if (info.nozzle_id == 0)
{
- ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type);
+ ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type, AMSPanelPos::RIGHT_PANEL);
//m_simplebook_ams_right->RemovePage(m_right_page_index);
m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_right_page_index;
@@ -4008,7 +4075,7 @@ void AMSControl::AddAms(AMSinfo info, bool left)
}
else if (info.nozzle_id == 1)
{
- ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type);
+ ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type, AMSPanelPos::LEFT_PANEL);
//m_simplebook_ams_left->RemovePage(m_left_page_index);
m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index;
@@ -4019,14 +4086,14 @@ void AMSControl::AddAms(AMSinfo info, bool left)
{
if (left)
{
- ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type);
+ ams_item = new AmsItem(m_simplebook_ams_left, info, info.ams_type, AMSPanelPos::LEFT_PANEL);
//m_simplebook_ams_left->RemovePage(m_left_page_index);
m_simplebook_ams_left->InsertPage(m_left_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_left_page_index;
m_left_page_index++;
}
else {
- ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type);
+ ams_item = new AmsItem(m_simplebook_ams_right, info, info.ams_type, AMSPanelPos::RIGHT_PANEL);
//m_simplebook_ams_right->RemovePage(m_right_page_index);
m_simplebook_ams_right->InsertPage(m_right_page_index, ams_item, wxEmptyString, true);
ams_item->m_selection = m_right_page_index;
@@ -4069,7 +4136,7 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
return;
}
else if (single_info.size() == 1){
- mode = AMSModel::NO_AMS;
+ mode = AMSModel::EXT_AMS;
int w = 30;
if (m_nozzle_num == 2)
{
@@ -4077,7 +4144,7 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_right);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
- ams_item = new AmsItem(book_panel, single_info[0], mode);
+ 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)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@@ -4093,7 +4160,7 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
- ams_item = new AmsItem(book_panel, single_info[0], mode);
+ 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)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@@ -4106,13 +4173,11 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
m_left_page_index++;
}
}
- else if (m_nozzle_num == 1)
- {
- if (!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);
- ams_item = new AmsItem(book_panel, single_info[0], mode);
+ 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)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@@ -4128,7 +4193,7 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
{
wxPanel* book_panel = new wxPanel(m_simplebook_ams_left);
book_panel->SetBackgroundColour(AMS_CONTROL_DEF_LIB_BK_COLOUR);
- ams_item = new AmsItem(book_panel, single_info[0], mode);
+ 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)));
book_panel->SetMinSize(wxSize(FromDIP(264), FromDIP(150)));
@@ -4151,11 +4216,11 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
wxBoxSizer* book_sizer = new wxBoxSizer(wxVERTICAL);
if (single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_MAIN_ID) || single_info[1].ams_id == std::to_string(VIRTUAL_TRAY_DEPUTY_ID))
{
- mode = AMSModel::NO_AMS;
+ mode = AMSModel::EXT_AMS;
}
else
{
- mode = AMSModel::SINGLE_AMS;
+ mode = AMSModel::N3S_AMS;
}
if (m_nozzle_num == 2)
{
@@ -4165,8 +4230,8 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
book_panel->SetBackgroundColour(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::SINGLE_AMS);
- ext_item = new AmsItem(book_panel, single_info[1], mode);
+ ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
+ ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer);
@@ -4184,8 +4249,8 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
book_panel->SetBackgroundColour(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::SINGLE_AMS);
- ext_item = new AmsItem(book_panel, single_info[1], mode);
+ ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
+ ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer);
@@ -4203,8 +4268,8 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
book_panel->SetBackgroundColour(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::SINGLE_AMS);
- ext_item = new AmsItem(book_panel, single_info[1], mode);
+ ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::RIGHT_PANEL);
+ ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::RIGHT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer);
@@ -4222,8 +4287,8 @@ void AMSControl::AddAms(std::vectorsingle_info, bool left) {
book_panel->SetBackgroundColour(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::SINGLE_AMS);
- ext_item = new AmsItem(book_panel, single_info[1], mode);
+ ams_item = new AmsItem(book_panel, single_info[0], AMSModel::N3S_AMS, AMSPanelPos::LEFT_PANEL);
+ ext_item = new AmsItem(book_panel, single_info[1], mode, AMSPanelPos::LEFT_PANEL);
book_sizer->Add(ams_item);
book_sizer->Add(ext_item);
book_panel->SetSizer(book_sizer);
@@ -4283,13 +4348,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (is_in_right){
if (m_current_show_ams_right != ams_id) {
m_current_show_ams_right = ams_id;
- m_extruder->OnAmsLoading(false);
+ //m_extruder->OnAmsLoading(false);
}
}
else{
m_current_show_ams_left = ams_id;
- m_extruder->OnAmsLoading(false);
- if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1);
+ /*if (m_nozzle_num > 1) m_extruder->OnAmsLoading(false, 1);
+ else m_extruder->OnAmsLoading(false);*/
}
@@ -4312,10 +4377,10 @@ void AMSControl::SwitchAms(std::string ams_id)
}
}
if (is_in_right){
- m_current_ams_right = ams_id;
+ m_current_show_ams_right = ams_id;
}
else{
- m_current_ams_left = ams_id;
+ m_current_show_ams_left = ams_id;
}
} else {
@@ -4341,7 +4406,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (item->m_info.nozzle_id == 1){
m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){
- m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ if (item->m_info.ams_type == AMSModel::AMS_LITE){
+ m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
+ }
+ else{
+ m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ }
+
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@@ -4358,7 +4429,13 @@ void AMSControl::SwitchAms(std::string ams_id)
else if (item->m_info.nozzle_id == 0){
m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){
- m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ if (item->m_info.ams_type == AMSModel::AMS_LITE){
+ m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
+ }
+ else{
+ m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ }
+
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@@ -4379,7 +4456,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (id == item->m_info.ams_id){
m_simplebook_ams_left->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){
- m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ if (item->m_info.ams_type == AMSModel::AMS_LITE){
+ m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
+ }
+ else{
+ m_down_road->UpdateLeft(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ }
+
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@@ -4399,7 +4482,13 @@ void AMSControl::SwitchAms(std::string ams_id)
if (id == item->m_info.ams_id){
m_simplebook_ams_right->SetSelection(item->m_selection);
if (item->m_info.cans.size() == 4){
- m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ if (item->m_info.ams_type == AMSModel::AMS_LITE){
+ m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS);
+ }
+ else{
+ m_down_road->UpdateRight(m_nozzle_num, AMSRoadShowMode::AMS_ROAD_MODE_FOUR);
+ }
+
}
else {
AMSRoadShowMode mode = AMSRoadShowMode::AMS_ROAD_MODE_SINGLE;
@@ -4431,12 +4520,12 @@ void AMSControl::SwitchAms(std::string ams_id)
case AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3: m_extruder->TurnOn(GetCanColour(ams_id, m_ams_info[i].current_can_id)); break;
}
- SetAmsStep(ams_id, m_ams_info[i].current_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ams_info[i].current_step);
+ //SetAmsStep(ams_id, m_ams_info[i].current_can_id, AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ams_info[i].current_step);
}
}
for (auto i = 0; i < m_ext_info.size(); i++) {
if (m_ext_info[i].ams_id == ams_id) {
- SetAmsStep(ams_id, "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ext_info[i].current_step);
+ //SetAmsStep(ams_id, "0", AMSPassRoadType::AMS_ROAD_TYPE_LOAD, m_ext_info[i].current_step);
}
}
}
@@ -4567,12 +4656,12 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC
else {
m_extruder->TurnOn(col);
if (item){
- if (ams_now != GetCurentShowAms()) {
+ /*if (ams_now != GetCurentShowAms()) {
m_extruder->OnAmsLoading(false, item->m_info.nozzle_id, col);
}
else {
m_extruder->OnAmsLoading(true, item->m_info.nozzle_id, col);
- }
+ }*/
}
}
@@ -4588,7 +4677,7 @@ void AMSControl::SetExtruder(bool on_off, bool is_vams, std::string ams_now, wxC
m_vams_road->OnVamsLoading(false);
}*/
}
- else if (m_ams_model == AMSModel::EXTRA_AMS || m_ext_model == AMSModel::EXTRA_AMS) {
+ else if (m_ams_model == AMSModel::AMS_LITE || m_ext_model == AMSModel::AMS_LITE) {
if (!on_off) {
m_extruder->TurnOff();
m_extruder->OnAmsLoading(false);
@@ -4709,14 +4798,17 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
m_last_ams_id = ams_id;
m_last_tray_id = canid;
- auto model = AMSModel::EXTRA_AMS;
+ int can_index = atoi(canid.c_str());
+ std::string ams_id_left = GetCurentShowAms(false);
+ std::string ams_id_right = GetCurentShowAms(true);
+ auto model = AMSModel::AMS_LITE;
bool left = !IsAmsInRightPanel(ams_id);
int length = -1;
if (ams->m_info.cans.size() == 4){
- length = left ? 135 : 149;
+ length = left ? 134 : 150;
model = ams->m_info.ams_type;
}
else if (ams->m_info.cans.size() == 1){
@@ -4730,66 +4822,133 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
break;
}
}
- model = AMSModel::SINGLE_AMS;
+ model = AMSModel::N3S_AMS;
}
- if (model == AMSModel::EXTRA_AMS){
+ if (model == AMSModel::AMS_LITE){
length = left ? 150 : 50;
}
-
- if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::EXTRA_AMS) {
- if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
- //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
- }
-
- if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
- m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
- ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
- m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
- }
-
- if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
- m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
- ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
- if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) {
- m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
- }
- }
- if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
- m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
- ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
- m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
+ for (auto i = 0; i < m_ams_info.size(); i++) {
+ if (m_ams_info[i].ams_id == ams_id) {
+ m_ams_info[i].current_step = step;
+ m_ams_info[i].current_can_id = canid;
}
}
- else if(model == AMSModel::NO_AMS || model == AMSModel::SINGLE_AMS) {
+ for (auto i = 0; i < m_ext_info.size(); i++) {
+ if (m_ext_info[i].ams_id == ams_id) {
+ m_ext_info[i].current_step = step;
+ m_ext_info[i].current_can_id = canid;
+ }
+ }
+
+
+ AMSinfo info;
+ if (m_ams_item_list[ams_id] != nullptr) {
+ info = m_ams_item_list[ams_id]->m_info;
+ }
+ else
+ {
+ return;
+ }
+ if (can_index >= 0 && can_index < info.cans.size())
+ {
+ m_down_road->SetPassRoadColour(left, info.cans[can_index].material_colour);
+ }
+
+ if (model == AMSModel::GENERIC_AMS || model == AMSModel::N3F_AMS || model == AMSModel::AMS_LITE) {
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
//cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
- m_extruder->OnAmsLoading(false);
+ if (ams_id_left == ams_id || ams_id_right == ams_id){
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
+ }
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
- m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
- m_extruder->OnAmsLoading(false);
+ if (ams_id_left == ams_id || ams_id_right == ams_id){
+ m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
+ m_extruder->OnAmsLoading(false, ams->m_info.nozzle_id);
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
+ }
+ }
+
+ if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
+ ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
+ if (ams_id_left == ams_id || ams_id_right == ams_id) {
+ m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
+ m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
+ }
+ }
+ if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
+ ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
+ if (ams_id_left == ams_id || ams_id_right == ams_id)
+ {
+ m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
+ m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
+ }
+ }
+ }
+ else if(model == AMSModel::EXT_AMS || model == AMSModel::N3S_AMS) {
+ if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
+ //cans->SetAmsStep(canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ if (ams_id_left == ams_id || ams_id_right == ams_id) {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ m_extruder->OnAmsLoading(false);
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_NONE);
+ }
+ }
+
+ if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
+ ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
+ if (ams_id_left == ams_id || ams_id_right == ams_id) {
+ m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
+ m_extruder->OnAmsLoading(false);
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_1);
+ }
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
- ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
- if (m_current_show_ams_left == ams_id || m_current_show_ams_right == ams_id) {
+ if (ams_id_left == ams_id || ams_id_right == ams_id) {
+ ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
}
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_2);
+ }
}
if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
- m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
ams->SetAmsStep(ams_id, canid, type, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
- m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
+ if (ams_id_left == ams_id || ams_id_right == ams_id) {
+ m_down_road->UpdatePassRoad(canid, left, length, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
+ m_extruder->OnAmsLoading(true, ams->m_info.nozzle_id, ams->GetTagColr(canid));
+ }
+ else
+ {
+ m_down_road->UpdatePassRoad(canid, left, -1, ams->m_info, AMSPassRoadSTEP::AMS_ROAD_STEP_3);
+ }
}
}
@@ -4831,25 +4990,13 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy
// }
//}
- for (auto i = 0; i < m_ams_info.size(); i++) {
- if (m_ams_info[i].ams_id == ams_id) {
- m_ams_info[i].current_step = step;
- m_ams_info[i].current_can_id = canid;
- }
- }
- for (auto i = 0; i < m_ext_info.size(); i++) {
- if (m_ext_info[i].ams_id == ams_id) {
- m_ext_info[i].current_step = step;
- m_ext_info[i].current_can_id = canid;
- }
- }
}
void AMSControl::on_filament_load(wxCommandEvent &event)
{
m_button_extruder_back->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) {
- if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; }
+ if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_LOAD; }
}
post_event(SimpleEvent(EVT_AMS_LOAD));
}
@@ -4857,7 +5004,7 @@ void AMSControl::on_filament_load(wxCommandEvent &event)
void AMSControl::on_extrusion_cali(wxCommandEvent &event)
{
for (auto i = 0; i < m_ams_info.size(); i++) {
- if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
+ if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
}
post_event(SimpleEvent(EVT_AMS_EXTRUSION_CALI));
}
@@ -4866,7 +5013,7 @@ void AMSControl::on_filament_unload(wxCommandEvent &event)
{
m_button_extruder_feed->Disable();
for (auto i = 0; i < m_ams_info.size(); i++) {
- if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; }
+ if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_UNLOAD; }
}
post_event(SimpleEvent(EVT_AMS_UNLOAD));
}
@@ -4879,7 +5026,7 @@ void AMSControl::auto_refill(wxCommandEvent& event)
void AMSControl::on_ams_setting_click(wxMouseEvent &event)
{
for (auto i = 0; i < m_ams_info.size(); i++) {
- if (m_ams_info[i].ams_id == m_current_ams_left || m_ams_info[i].ams_id == m_current_ams_right) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
+ if (m_ams_info[i].ams_id == m_current_ams) { m_ams_info[i].current_action = AMSAction::AMS_ACTION_CALI; }
}
post_event(SimpleEvent(EVT_AMS_SETTINGS));
}
diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp
index 1a96ed154..2523636e1 100644
--- a/src/slic3r/GUI/Widgets/AMSControl.hpp
+++ b/src/slic3r/GUI/Widgets/AMSControl.hpp
@@ -26,8 +26,7 @@ public:
void on_retry();
protected:
- std::string m_current_ams_left;
- std::string m_current_ams_right;
+ std::string m_current_ams;
std::string m_current_slot_left;
std::string m_current_slot_right;
std::string m_current_show_ams_left;
@@ -130,18 +129,19 @@ protected:
std::string m_last_tray_id = "-1";
public:
- std::string GetCurentAms(bool right_panel = true);
+ std::string GetCurentAms();
std::string GetCurentShowAms(bool right_panel = true);
std::string GetCurrentCan(std::string amsid);
bool IsAmsInRightPanel(std::string ams_id);
wxColour GetCanColour(std::string amsid, std::string canid);
- AMSModel m_ams_model{AMSModel::NO_AMS};
- AMSModel m_ext_model{AMSModel::NO_AMS};
- AMSModel m_is_none_ams_mode{AMSModel::NO_AMS};
+ AMSModel m_ams_model{AMSModel::EXT_AMS};
+ AMSModel m_ext_model{AMSModel::EXT_AMS};
+ AMSModel m_is_none_ams_mode{AMSModel::EXT_AMS};
bool m_single_nozzle_no_ams = { true };
void SetAmsModel(AMSModel mode, AMSModel ext_mode) {m_ams_model = mode; m_ext_model = ext_mode;};
+ void AmsSelectedSwitch(wxCommandEvent& event);
void SetActionState(bool button_status[]);
void EnterNoneAMSMode();
diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp
index 3b5785f6e..90522b060 100644
--- a/src/slic3r/GUI/Widgets/AMSItem.cpp
+++ b/src/slic3r/GUI/Widgets/AMSItem.cpp
@@ -37,8 +37,8 @@ namespace Slic3r { namespace GUI {
#define AMS_CANS_SIZE wxSize(FromDIP(284), -1)
//#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), 144)
//#define AMS_SINGLE_CAN_SIZE wxSize(FromDIP(78), 144)
-#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), 174)
-#define AMS_SINGLE_CAN_SIZE wxSize(FromDIP(78), 174)
+#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), FromDIP(174))
+#define AMS_SINGLE_CAN_SIZE wxSize(FromDIP(78), FromDIP(174))
bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, bool humidity_flag)
{
if (!ams) return false;
@@ -424,7 +424,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, 13);
+ m_ams_extruder = ScalableBitmap(this, m_file_name, 36);
Refresh();
}
@@ -463,7 +463,7 @@ void AMSextruderImage::doRender(wxDC &dc)
if (m_ams_loading) {
dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(m_colour);
- dc.DrawRectangle(FromDIP(3), FromDIP(10), FromDIP(size.x - 6), FromDIP(size.y - 20));
+ 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));
}
@@ -549,7 +549,7 @@ void AMSExtImage::doRender(wxDC& dc)
auto size = GetSize();
dc.SetPen(*wxTRANSPARENT_PEN);
//dc.DrawRectangle(0, FromDIP(5), size.x, size.y - FromDIP(5) - FromDIP(2));
- dc.DrawBitmap(m_ams_ext.bmp(), wxPoint(FromDIP((size.x - m_ams_ext.GetBmpSize().x) / 2), FromDIP(0)));
+ dc.DrawBitmap(m_ams_ext.bmp(), wxPoint((size.x - m_ams_ext.GetBmpSize().x) / 2, 0));
}
@@ -802,10 +802,11 @@ void AMSVirtualRoad::msw_rescale()
/*************************************************
Description:AMSLib
**************************************************/
-AMSLib::AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info)
+AMSLib::AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info, AMSModelOriginType ext_type)
{
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);
create(parent);
@@ -828,7 +829,6 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w
SetSize(AMS_CAN_LIB_SIZE);
SetMinSize(AMS_CAN_LIB_SIZE);
SetMaxSize(AMS_CAN_LIB_SIZE);
-
auto m_sizer_body = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *m_sizer_edit = new wxBoxSizer(wxHORIZONTAL);
@@ -840,14 +840,14 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w
m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68);
m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 68);
- m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 80);
- m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 80);
+ m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 72);
+ m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 72);
- m_bitmap_extra_tray_left_hover = ScalableBitmap(this, "extra_ams_tray_left_hover", 80);
- m_bitmap_extra_tray_right_hover = ScalableBitmap(this, "extra_ams_tray_right_hover", 80);
+ m_bitmap_extra_tray_left_hover = ScalableBitmap(this, "extra_ams_tray_left_hover", 72);
+ m_bitmap_extra_tray_right_hover = ScalableBitmap(this, "extra_ams_tray_right_hover", 72);
- m_bitmap_extra_tray_left_selected = ScalableBitmap(this, "extra_ams_tray_left_selected", 80);
- m_bitmap_extra_tray_right_selected = ScalableBitmap(this, "extra_ams_tray_right_selected", 80);
+ m_bitmap_extra_tray_left_selected = ScalableBitmap(this, "extra_ams_tray_left_selected", 72);
+ m_bitmap_extra_tray_right_selected = ScalableBitmap(this, "extra_ams_tray_right_selected", 72);
m_sizer_body->Add(0, 0, 1, wxEXPAND, 0);
@@ -886,7 +886,7 @@ void AMSLib::on_left_down(wxMouseEvent &evt)
top = (size.y - FromDIP(15) - m_bitmap_editable_light.GetBmpSize().y);
bottom = size.y - FromDIP(15);
}
- else if (m_ams_model == AMSModel::EXTRA_AMS) {
+ else if (m_ams_model == AMSModel::AMS_LITE) {
top = (size.y - FromDIP(20) - m_bitmap_editable_light.GetBmpSize().y);
bottom = size.y - FromDIP(20);
}
@@ -935,13 +935,12 @@ void AMSLib::render(wxDC &dc)
#endif
// text
- /*if (m_ams_model == AMSModel::GENERIC_AMS) {
+ if (m_ams_model == AMSModel::AMS_LITE || (m_ams_model == AMSModel::EXT_AMS && m_ext_type == AMSModelOriginType::LITE_EXT)) {
+ render_extra_text(dc);
+ }
+ else{
render_generic_text(dc);
}
- else if (m_ams_model == AMSModel::EXTRA_AMS) {
- render_extra_text(dc);
- }*/
- render_generic_text(dc);
}
void AMSLib::render_extra_text(wxDC& dc)
@@ -1154,23 +1153,22 @@ void AMSLib::render_generic_text(wxDC &dc)
void AMSLib::doRender(wxDC &dc)
{
- /*if (m_ams_model == AMSModel::GENERIC_AMS) {
+ if (m_ams_model == AMSModel::AMS_LITE || m_ext_type == AMSModelOriginType::LITE_EXT) {
+ render_extra_lib(dc);
+ }
+ else {
render_generic_lib(dc);
}
- else if (m_ams_model == AMSModel::EXTRA_AMS) {
- render_extra_lib(dc);
- }*/
- render_generic_lib(dc);
+ //render_extra_lib(dc);
}
void AMSLib::render_extra_lib(wxDC& dc)
{
wxSize size = GetSize();
-
- 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 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;
auto tmp_lib_colour = m_info.material_colour;
change_the_opacity(tmp_lib_colour);
@@ -1185,21 +1183,20 @@ void AMSLib::render_extra_lib(wxDC& dc)
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
if (m_pass_road) {
- dc.SetPen(wxPen(m_info.material_colour, 6, wxSOLID));
+ dc.SetPen(wxPen(m_info.material_colour, 4, wxSOLID));
}
- if (m_can_index == 0 || m_can_index == 3) {
+ if (m_can_index == 0 || m_can_index == 1) {
dc.DrawLine(size.x / 2, size.y / 2, size.x / 2, size.y);
}
else {
dc.DrawLine(size.x / 2, size.y / 2, size.x / 2, 0);
}
-
//draw def background
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(AMS_CONTROL_DEF_LIB_BK_COLOUR));
- dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20), 0);
+ dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), libsize.x - FromDIP(20), libsize.y - FromDIP(20), 0);
if (tmp_lib_colour.GetLuminance() < 0.6) {
temp_bitmap_third = m_bitmap_editable_light;
@@ -1223,11 +1220,11 @@ void AMSLib::render_extra_lib(wxDC& dc)
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
if (m_info.material_cols.size() > 1) {
int left = FromDIP(10);
- int gwidth = std::round(size.x / (m_info.material_cols.size() - 1));
+ int gwidth = std::round(libsize.x / (m_info.material_cols.size() - 1));
//gradient
if (m_info.ctype == 0) {
for (int i = 0; i < m_info.material_cols.size() - 1; i++) {
- auto rect = wxRect(left, FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20));
+ auto rect = wxRect(left, FromDIP(10), libsize.x - FromDIP(18), libsize.y - FromDIP(18));
dc.GradientFillLinear(rect, m_info.material_cols[i], m_info.material_cols[i + 1], wxEAST);
left += gwidth;
}
@@ -1236,15 +1233,15 @@ void AMSLib::render_extra_lib(wxDC& dc)
int cols_size = m_info.material_cols.size();
for (int i = 0; i < cols_size; i++) {
dc.SetBrush(wxBrush(m_info.material_cols[i]));
- float x = FromDIP(10) + ((float)size.x - FromDIP(20)) * i / cols_size;
- dc.DrawRoundedRectangle(x, FromDIP(10), ((float)size.x - FromDIP(20)) / cols_size, size.y - FromDIP(20), 0);
+ float x = FromDIP(10) + ((float)libsize.x - FromDIP(18)) * i / cols_size;
+ dc.DrawRoundedRectangle(x, FromDIP(10), ((float)libsize.x - FromDIP(18)) / cols_size, libsize.y - FromDIP(18), 0);
}
dc.SetBrush(wxBrush(tmp_lib_colour));
}
}
else {
dc.SetBrush(wxBrush(tmp_lib_colour));
- dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20), 0);
+ dc.DrawRoundedRectangle(FromDIP(10), (size.y - libsize.y) / 2 + FromDIP(10), libsize.x - FromDIP(18), libsize.y - FromDIP(18), 0);
}
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(tmp_lib_colour));
@@ -1307,43 +1304,8 @@ void AMSLib::render_generic_lib(wxDC &dc)
temp_bitmap_brand = m_bitmap_readonly;
}
- // selected
- if (m_selected) {
- dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
- //dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
- if (tmp_lib_colour.Alpha() == 0) {
- dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
- }
- dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- if (m_radius == 0) {
- dc.DrawRectangle(0, 0, size.x, size.y);
- }
- else {
- dc.DrawRoundedRectangle(0, 0, size.x, size.y, m_radius);
- }
-
- dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
- dc.SetBrush(wxBrush(tmp_lib_colour));
- }
-
- if (!m_selected && m_hover) {
- dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 2, wxSOLID));
- dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- if (m_radius == 0) {
- dc.DrawRectangle(0, 0, size.x, size.y);
- }
- else {
- dc.DrawRoundedRectangle(0, 0, size.x, size.y, m_radius);
- }
-
- dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
- dc.SetBrush(wxBrush(tmp_lib_colour));
- }
- else {
- dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID));
- dc.SetBrush(wxBrush(tmp_lib_colour));
- }
-
+ dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID));
+ dc.SetBrush(wxBrush(tmp_lib_colour));
//draw remain
auto alpha = m_info.material_colour.Alpha();
@@ -1353,24 +1315,67 @@ void AMSLib::render_generic_lib(wxDC &dc)
int top = height - curr_height;
- if (m_ams_model == NO_AMS){
- dc.SetPen(wxPen(wxTRANSPARENT));
- dc.SetBrush(wxBrush(m_info.material_colour));
- dc.DrawRectangle(FromDIP(2), FromDIP(2), FromDIP(size.x - 4), FromDIP(size.y - 2));
-
+ if (m_ams_model == EXT_AMS){
+ if (m_radius > 0){
+ dc.DrawRoundedRectangle(FromDIP(1), FromDIP(1), size.x - FromDIP(2), size.y - FromDIP(1), m_radius - 1);
+ }
+ else{
+ dc.DrawRectangle(FromDIP(1), FromDIP(1), size.x - FromDIP(2), size.y - FromDIP(1));
+ }
if (!m_disable_mode) {
// edit icon
- if (m_info.material_state != AMSCanType::AMS_CAN_TYPE_EMPTY && m_info.material_state != AMSCanType::AMS_CAN_TYPE_NONE)
- {
+ if (m_info.material_state != AMSCanType::AMS_CAN_TYPE_EMPTY && m_info.material_state != AMSCanType::AMS_CAN_TYPE_NONE){
if (m_info.material_state == AMSCanType::AMS_CAN_TYPE_THIRDBRAND || m_info.material_state == AMSCanType::AMS_CAN_TYPE_VIRTUAL)
dc.DrawBitmap(temp_bitmap_third.bmp(), (size.x - temp_bitmap_third.GetBmpSize().x) / 2, (size.y - FromDIP(10) - temp_bitmap_third.GetBmpSize().y));
if (m_info.material_state == AMSCanType::AMS_CAN_TYPE_BRAND)
dc.DrawBitmap(temp_bitmap_brand.bmp(), (size.x - temp_bitmap_brand.GetBmpSize().x) / 2, (size.y - FromDIP(10) - temp_bitmap_brand.GetBmpSize().y));
}
}
+
+ dc.SetPen(wxPen(wxColour(130, 130, 128), 1, wxSOLID));
+ dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+#ifdef __APPLE__
+ //dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(7), m_radius);
+ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(m_radius - 1), m_radius);
+#else
+ //dc.DrawRoundedRectangle(FromDIP(3), FromDIP(3), size.x - FromDIP(6), size.y - FromDIP(6), m_radius);
+ dc.DrawRoundedRectangle(FromDIP(1), FromDIP(1), size.x - FromDIP(2), size.y - FromDIP(1), m_radius);
+#endif
+ if (m_selected) {
+ dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
+ //dc.SetPen(wxPen(tmp_lib_colour, 2, wxSOLID));
+ if (tmp_lib_colour.Alpha() == 0) {
+ dc.SetPen(wxPen(wxColour(tmp_lib_colour.Red(), tmp_lib_colour.Green(), tmp_lib_colour.Blue(), 128), 3, wxSOLID));
+ }
+ dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+ if (m_radius == 0) {
+ dc.DrawRectangle(0, 0, size.x, size.y);
+ }
+ else {
+ dc.DrawRoundedRectangle(0, 0, size.x, size.y, m_radius);
+ }
+
+ dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
+ dc.SetBrush(wxBrush(tmp_lib_colour));
+ }
+
+ if (!m_selected && m_hover) {
+ dc.SetPen(wxPen(AMS_CONTROL_BRAND_COLOUR, 3, wxSOLID));
+ dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+ if (m_radius == 0) {
+ dc.DrawRectangle(0, 0, size.x, size.y);
+ }
+ else {
+ dc.DrawRoundedRectangle(0, 0, size.x, size.y, m_radius);
+ }
+
+ dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
+ dc.SetBrush(wxBrush(tmp_lib_colour));
+ }
+ return;
}
- if (curr_height >= FromDIP(6)) {
+ if (curr_height >= FromDIP(1)) {
//transparent
if (alpha == 0) {
@@ -1396,8 +1401,8 @@ void AMSLib::render_generic_lib(wxDC &dc)
}
//gradient
if (m_info.material_cols.size() > 1) {
- int left = 2;
- float total_width = size.x - 4;
+ int left = FromDIP(2);
+ float total_width = size.x - FromDIP(4);
int gwidth = std::round(total_width / (m_info.material_cols.size() - 1));
//gradient
if (m_info.ctype == 0) {
@@ -1420,9 +1425,20 @@ void AMSLib::render_generic_lib(wxDC &dc)
dc.SetBrush(wxBrush(m_info.material_cols[i]));
if (i == 0 || i == m_info.material_cols.size() - 1) {
#ifdef __APPLE__
- dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, m_radius);
+ if (height - curr_height < m_radius){
+ dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, m_radius);
+ }
+ else{
+ dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, 0);
+ }
+
#else
- dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, m_radius - 1);
+ if (height - curr_height < m_radius) {
+ dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, m_radius - 1);
+ }
+ else {
+ dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height, gwidth, curr_height, 0);
+ }
#endif
//add rectangle
int dr_gwidth = std::round(gwidth * 0.6);
@@ -1452,30 +1468,45 @@ void AMSLib::render_generic_lib(wxDC &dc)
auto brush = dc.GetBrush();
if (alpha != 0 && alpha != 255 && alpha != 254) dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
#ifdef __APPLE__
- dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius);
+
+ //dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius);
+ if (top < m_radius) {
+ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius - 1);
+ }
+ else {
+ dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, 0);
+ }
#else
- dc.DrawRoundedRectangle(FromDIP(2), top, FromDIP(size.x - 4), curr_height, m_radius - 1);
+ //dc.DrawRoundedRectangle(FromDIP(2), top, FromDIP(size.x - 4), curr_height, m_radius - 1);
+ if (top < m_radius) {
+ dc.DrawRoundedRectangle(FromDIP(2), FromDIP(1) + top, size.x - FromDIP(4), curr_height, m_radius - 1);
+ }
+ else {
+ dc.DrawRoundedRectangle(FromDIP(2), FromDIP(1) + top, size.x - FromDIP(4), curr_height, 0);
+ }
#endif
dc.SetBrush(brush);
}
}
if (top > 2) {
- if (curr_height >= FromDIP(6)) {
- dc.DrawRectangle(FromDIP(2), top, FromDIP(size.x - 4), FromDIP(2));
+ if (curr_height >= FromDIP(1)) {
+ //dc.DrawLine(FromDIP(2), top, size.x - FromDIP(4), top);
if (alpha != 255 && alpha != 254) {
dc.SetPen(wxPen(*wxWHITE));
dc.SetBrush(wxBrush(*wxWHITE));
#ifdef __APPLE__
dc.DrawRoundedRectangle(FromDIP(2), FromDIP(1) , size.x - FromDIP(4), top, m_radius);
#else
- dc.DrawRoundedRectangle(FromDIP(2), FromDIP(1) , FromDIP(size.x - 4), top, m_radius - 1);
+ dc.DrawRoundedRectangle(FromDIP(2), FromDIP(1) , size.x - FromDIP(4), top, m_radius - 1);
#endif
}
if (tmp_lib_colour.Red() > 238 && tmp_lib_colour.Green() > 238 && tmp_lib_colour.Blue() > 238) {
dc.SetPen(wxPen(wxColour(130, 129, 128), 1, wxSOLID));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- dc.DrawLine(FromDIP(2), top, FromDIP(size.x - 4), top);
+ if (m_info.material_cols.size() <= 1){
+ dc.DrawLine(FromDIP(2), top, size.x - FromDIP(4), top);
+ }
}
}
else {
@@ -1491,8 +1522,8 @@ void AMSLib::render_generic_lib(wxDC &dc)
dc.DrawLine(FromDIP(5), FromDIP(4) + height - FromDIP(2), size.x - FromDIP(5), FromDIP(4) + height - FromDIP(2));
dc.DrawLine(FromDIP(6), FromDIP(4) + height - FromDIP(1), size.x - FromDIP(6), FromDIP(4) + height - FromDIP(1));
#else
- dc.DrawLine(FromDIP(2), FromDIP(0 + height), FromDIP(size.x - 4), FromDIP(height));
- dc.DrawLine(FromDIP(2), height, FromDIP(size.x - 4), height);
+ //dc.DrawLine(FromDIP(2), FromDIP(0 + height), FromDIP(size.x - 4), FromDIP(height));
+ dc.DrawLine(FromDIP(2), height - FromDIP(1), size.x - FromDIP(4), height - FromDIP(1));
#endif
}
}
@@ -1505,7 +1536,7 @@ void AMSLib::render_generic_lib(wxDC &dc)
dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4), size.x - FromDIP(7), size.y - FromDIP(m_radius - 1), m_radius);
#else
//dc.DrawRoundedRectangle(FromDIP(3), FromDIP(3), size.x - FromDIP(6), size.y - FromDIP(6), m_radius);
- dc.DrawRoundedRectangle(FromDIP(1), FromDIP(1), FromDIP(size.x - 2), FromDIP(size.y - 1), m_radius);
+ dc.DrawRoundedRectangle(FromDIP(1), FromDIP(1), size.x - FromDIP(2), size.y - FromDIP(1), m_radius);
#endif
if (m_selected) {
@@ -1572,6 +1603,7 @@ void AMSLib::Update(Caninfo info, std::string ams_idx, bool refresh)
}
m_info = info;
m_ams_id = ams_idx;
+ m_slot_id = info.can_id;
Layout();
if (refresh) Refresh();
}
@@ -1611,7 +1643,24 @@ void AMSLib::msw_rescale()
{
//m_bitmap_transparent.msw_rescale();
m_bitmap_transparent_def.msw_rescale();
+ m_bitmap_editable = ScalableBitmap(this, "ams_editable", 14);
+ 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_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 72);
+ m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 72);
+
+ m_bitmap_extra_tray_left_hover = ScalableBitmap(this, "extra_ams_tray_left_hover", 72);
+ m_bitmap_extra_tray_right_hover = ScalableBitmap(this, "extra_ams_tray_right_hover", 72);
+
+ m_bitmap_extra_tray_left_selected = ScalableBitmap(this, "extra_ams_tray_left_selected", 72);
+ m_bitmap_extra_tray_right_selected = ScalableBitmap(this, "extra_ams_tray_right_selected", 72);
+
+ Layout();
+ Refresh();
}
/*************************************************
@@ -1752,8 +1801,8 @@ void AMSRoad::doRender(wxDC &dc)
// left right mode
if (m_rode_mode == AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT) {
- dc.DrawLine(size.x / 2, -1, size.x / 2, size.y * 0.6 - 1);
- dc.DrawLine(0, size.y * 0.6 - 1, size.x, size.y * 0.6 - 1);
+ dc.DrawLine(size.x / 2, 0, size.x / 2, size.y * 0.6 - FromDIP(1));
+ dc.DrawLine(0, size.y * 0.6 - 1, size.x, size.y * 0.6 - FromDIP(1));
}
// end mode
@@ -1911,12 +1960,10 @@ AMSRoadUpPart::AMSRoadUpPart(wxWindow* parent, wxWindowID id, AMSinfo info, AMSM
auto mode = AMSRoadMode::AMS_ROAD_MODE_END;
m_ams_model = model;
- if (m_ams_model == AMSModel::GENERIC_AMS)
- {
+ if (m_ams_model == AMSModel::GENERIC_AMS){
create(parent, id, pos, wxSize(FromDIP(264), FromDIP(34)));
}
- else
- {
+ else{
create(parent, id, pos, wxSize(FromDIP(78), FromDIP(34)));
}
/*create(parent, id, pos, size);
@@ -1933,17 +1980,15 @@ void AMSRoadUpPart::create(wxWindow* parent, wxWindowID id, const wxPoint& pos,
wxWindow::Create(parent, id, pos, size);
SetSize(size);
SetMinSize(size);
- SetMaxSize(size);
SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR);
Layout();
Fit();
Refresh();
}
-void AMSRoadUpPart::Update(AMSinfo amsinfo, Caninfo info)
+void AMSRoadUpPart::Update(AMSinfo amsinfo)
{
m_amsinfo = amsinfo;
- m_info = info;
Refresh();
}
@@ -1993,30 +2038,30 @@ 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));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- if ((m_ams_model == SINGLE_AMS || m_ams_model == NO_AMS) && m_amsinfo.cans.size() != 4){
- dc.DrawLine(FromDIP(size.x / 2), FromDIP(0), FromDIP(size.x / 2), FromDIP(size.y));
+ if ((m_ams_model == N3S_AMS || m_ams_model == EXT_AMS) && m_amsinfo.cans.size() != 4){
+ dc.DrawLine((size.x / 2), (0), (size.x / 2), (size.y));
if (m_load_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_load_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
dc.SetPen(wxPen(m_amsinfo.cans[m_load_slot_index].material_colour, 4, wxSOLID));
- dc.DrawLine(FromDIP(size.x / 2), FromDIP(0), FromDIP(size.x / 2), FromDIP(size.y));
+ dc.DrawLine((size.x / 2), (0), (size.x / 2), (size.y));
}
}
else{
- int x_start = 38;
+ int x_start = 0.15 * size.x;
int x = x_start;
- int width = 64;
+ int width = 0.24 * size.x;
+ int height = size.y * 0.62;
for (int i = 0; i < 4; i++)
{
- dc.DrawLine(FromDIP(x), FromDIP(0), FromDIP(x), FromDIP(21));
+ dc.DrawLine((x), (0), (x), (height));
x += width;
}
x -= width;
- dc.DrawLine(FromDIP(x_start), FromDIP(21), FromDIP(x), FromDIP(21));
- dc.DrawLine(FromDIP(size.x / 2), FromDIP(21), FromDIP(size.x / 2), FromDIP(size.y));
+ dc.DrawLine((x_start), (height), (x), (height));
+ dc.DrawLine((size.x / 2), (height), (size.x / 2), (size.y));
dc.SetPen(wxPen(m_amsinfo.cans[m_load_slot_index].material_colour, 4, wxSOLID));
auto temp = m_amsinfo;
@@ -2025,21 +2070,24 @@ void AMSRoadUpPart::doRender(wxDC& dc)
BOOST_LOG_TRIVIAL(trace) << "up road render error";
return;
}
- x = x_start + m_load_slot_index * 64;
- dc.DrawLine(FromDIP(x), FromDIP(0), FromDIP(x), FromDIP(21));
+ x = x_start + m_load_slot_index * width;
+ dc.DrawLine((x), (0), (x), (height));
if (x < size.x / 2){
- dc.DrawLine(FromDIP(x), FromDIP(21), FromDIP(size.x / 2), FromDIP(21));
+ dc.DrawLine((x), (height), (size.x / 2), (height));
}
else {
- dc.DrawLine(FromDIP(size.x / 2), FromDIP(21), FromDIP(x), FromDIP(21));
+ dc.DrawLine((size.x / 2), (height), (x), (height));
}
if(m_load_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_load_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
- dc.DrawLine(FromDIP(size.x / 2), FromDIP(21), FromDIP(size.x / 2), FromDIP(size.y));
+ dc.DrawLine((size.x / 2), (height), (size.x / 2), (size.y));
}
}
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetBrush(wxBrush(wxColour(194, 194, 194)));
- dc.DrawRectangle(FromDIP(size.x / 2 - 14), FromDIP(16), FromDIP(28), FromDIP(10));
+ //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));
}
// left mode
}
@@ -2054,26 +2102,32 @@ void AMSRoadUpPart::OnPassRoad(std::vector prord_list)
{
// AMS_ROAD_MODE_NONE, AMS_ROAD_MODE_LEFT, AMS_ROAD_MODE_LEFT_RIGHT, AMS_ROAD_MODE_END_TOP, AMS_ROAD_MODE_END_BOTTOM, AMS_ROAD_MODE_END_RIGHT,
// AMS_ROAD_MODE_LEFT, AMS_ROAD_MODE_LEFT_RIGHT, AMS_ROAD_MODE_END,
-
//wait fill
}
+void AMSRoadUpPart::msw_rescale() {
+ Layout();
+ Fit();
+ Refresh();
+}
+
/*************************************************
Description:AMSRoadDownPart
**************************************************/
-AMSRoadDownPart::AMSRoadDownPart() : m_road_def_color(AMS_CONTROL_GRAY500), m_road_color(AMS_CONTROL_GRAY500) {}
+AMSRoadDownPart::AMSRoadDownPart(){}
AMSRoadDownPart::AMSRoadDownPart(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
: AMSRoadDownPart()
{
/*m_info = info;
m_canindex = canindex;*/
// road type
+ m_road_color[0] = AMS_CONTROL_GRAY500;
+ m_road_color[1] = AMS_CONTROL_GRAY500;
m_left_rode_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
m_right_rode_mode = AMSRoadShowMode::AMS_ROAD_MODE_FOUR;
m_selected = false;
- m_single_nozzle_no_ams = false;
m_left_road_length = -1;
m_right_road_length = -1;
@@ -2105,19 +2159,11 @@ void AMSRoadDownPart::create(wxWindow* parent, wxWindowID id, const wxPoint& pos
void AMSRoadDownPart::UpdateLeft(int nozzle_num, AMSRoadShowMode mode) {
this->m_left_rode_mode = mode;
m_nozzle_num = nozzle_num;
- if (m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE && m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE)
- {
- m_single_nozzle_no_ams = true;
- }
Refresh();
}
void AMSRoadDownPart::UpdateRight(int nozzle_num, AMSRoadShowMode mode) {
this->m_right_rode_mode = mode;
m_nozzle_num = nozzle_num;
- if (m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE && m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE)
- {
- m_single_nozzle_no_ams = true;
- }
Refresh();
}
@@ -2129,7 +2175,15 @@ void AMSRoadDownPart::OnVamsLoading(bool load, wxColour col /*= AMS_CONTROL_GRAY
Refresh();*/
}
-void AMSRoadDownPart::SetPassRoadColour(wxColour col) { m_road_color = col; }
+void AMSRoadDownPart::SetPassRoadColour(bool left, wxColour col)
+{
+ if (left){
+ m_road_color[1] = col;
+ }
+ else{
+ m_road_color[0] = col;
+ }
+}
//void AMSRoadDownPart::SetMode(AMSRoadDownPartMode mode) {
//
@@ -2169,32 +2223,37 @@ void AMSRoadDownPart::render(wxDC& dc)
void AMSRoadDownPart::doRender(wxDC& dc)
{
wxSize size = GetSize();
- wxPoint left_nozzle_pos = wxPoint(FromDIP(size.x / 2 - 7), FromDIP(258));
- wxPoint right_nozzle_pos = wxPoint(FromDIP(size.x / 2 + 7), FromDIP(258));
- if (m_road_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID)); }
- else { dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID)); }
+ wxPoint left_nozzle_pos = wxPoint((size.x / 2 - FromDIP(8)), FromDIP(258));
+ wxPoint right_nozzle_pos = wxPoint((size.x / 2 + FromDIP(6)), FromDIP(258));
+ /*if (m_road_color.Alpha() == 0) { dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID)); }
+ else { dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID)); }*/
dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
-
+ auto xpos = left_nozzle_pos.x;
if (m_left_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE || m_right_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_NONE)
{
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 56), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 56), FromDIP(0), FromDIP(left_nozzle_pos.x - 56), FromDIP(size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP(55), (size.y / 2), (left_nozzle_pos.x), (size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP(55), (0), left_nozzle_pos.x - FromDIP(55), (size.y / 2));
}
- else{
+ else {
switch (m_left_rode_mode)
{
case AMSRoadShowMode::AMS_ROAD_MODE_FOUR:
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 135), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 135), 0, FromDIP(left_nozzle_pos.x - 135), FromDIP(size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP((134)), (size.y / 2), left_nozzle_pos.x, (size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP((134)), 0, left_nozzle_pos.x - FromDIP((134)), (size.y / 2));
break;
case AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE:
- dc.DrawLine(left_nozzle_pos.x - 233, FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 115), 0, FromDIP(left_nozzle_pos.x - 115), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 223), 0, FromDIP(left_nozzle_pos.x - 223), FromDIP(size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP(233), (size.y / 2), left_nozzle_pos.x, (size.y / 2));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP(115), 0, left_nozzle_pos.x - FromDIP(115), (size.y / 2));
+ 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(FromDIP(left_nozzle_pos.x - 198), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - 198), 0, FromDIP(left_nozzle_pos.x - 198), FromDIP(size.y / 2));
+ 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));
+ 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);
+ 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);
break;
default:
break;
@@ -2203,71 +2262,99 @@ void AMSRoadDownPart::doRender(wxDC& dc)
switch (m_right_rode_mode)
{
case AMSRoadShowMode::AMS_ROAD_MODE_FOUR:
- dc.DrawLine(right_nozzle_pos.x, FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x + 135), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(right_nozzle_pos.x + 135), 0, FromDIP(right_nozzle_pos.x + 135), FromDIP(size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x, (size.y / 2), right_nozzle_pos.x + FromDIP(136), (size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(136), 0, right_nozzle_pos.x + FromDIP(136), (size.y / 2));
break;
case AMSRoadShowMode::AMS_ROAD_MODE_DOUBLE:
- dc.DrawLine(right_nozzle_pos.x, FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x + 223), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(right_nozzle_pos.x + 115), 0, FromDIP(right_nozzle_pos.x + 115), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(right_nozzle_pos.x + 223), 0, FromDIP(right_nozzle_pos.x + 223), FromDIP(size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x, (size.y / 2), right_nozzle_pos.x + FromDIP(223), (size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(115), 0, right_nozzle_pos.x + FromDIP(115), (size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(223), 0, right_nozzle_pos.x + FromDIP(223), (size.y / 2));
break;
case AMSRoadShowMode::AMS_ROAD_MODE_SINGLE:
- dc.DrawLine(right_nozzle_pos.x, FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x + 72), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(right_nozzle_pos.x + 72), 0, FromDIP(right_nozzle_pos.x + 72), FromDIP(size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x, (size.y / 2), right_nozzle_pos.x + FromDIP(73), (size.y / 2));
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(73), 0, right_nozzle_pos.x + FromDIP(73), (size.y / 2));
+ break;
+ case AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS:
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(4), 0, right_nozzle_pos.x + FromDIP(4), size.y / 2);
+ if (m_nozzle_num >= 2) xpos = right_nozzle_pos.x;
+ dc.DrawLine(xpos, size.y / 2, right_nozzle_pos.x + FromDIP(4), size.y / 2);
+ dc.DrawLine(xpos, size.y / 2, xpos, size.y);
break;
default:
break;
}
}
- if (m_nozzle_num == 2){
- dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
- dc.DrawLine(FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y));
- }
- else{
- if (m_right_rode_mode != AMSRoadShowMode::AMS_ROAD_MODE_NONE){
- dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2));
+ if (m_right_rode_mode != AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS){
+ if (m_nozzle_num == 2) {
+ /*dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
+ dc.DrawLine(FromDIP(right_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(right_nozzle_pos.x), FromDIP(size.y));*/
+ dc.DrawLine((left_nozzle_pos.x), (size.y / 2), (left_nozzle_pos.x), (size.y));
+ dc.DrawLine((right_nozzle_pos.x), (size.y / 2), (right_nozzle_pos.x), (size.y));
+ }
+ else {
+ if (m_right_rode_mode != AMSRoadShowMode::AMS_ROAD_MODE_NONE) {
+ dc.DrawLine((left_nozzle_pos.x), (size.y / 2), (right_nozzle_pos.x), (size.y / 2));
+ }
+ dc.DrawLine((left_nozzle_pos.x), (size.y / 2), (left_nozzle_pos.x), (size.y));
}
- dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
}
+
/*if (m_nozzle_mode == AMSRoadDownPartMode::AMS_ROAD_MODE_SINGLE)
{
dc.DrawLine(left_nozzle_pos.x, left_nozzle_pos.y, FromDIP(left_nozzle_pos.x + 30), left_nozzle_pos.y);
}*/
//dc.SetBrush(wxBrush(*wxBLUE));
- if (m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3){
- dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
- if (m_left_road_length > 0){
- dc.DrawLine((FromDIP(left_nozzle_pos.x - m_left_road_length)), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(left_nozzle_pos.x), FromDIP(size.y / 2), FromDIP(left_nozzle_pos.x), FromDIP(size.y));
- dc.DrawLine(FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(0), FromDIP(left_nozzle_pos.x - m_left_road_length), FromDIP(size.y / 2));
+
+ if (m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
+ dc.SetPen(wxPen(m_road_color[0], 4, wxSOLID));
+ if (m_right_road_length > 0) {
+ if (m_right_rode_mode == AMSRoadShowMode::AMS_ROAD_MODE_EXTRA_AMS){
+ dc.DrawLine(right_nozzle_pos.x + FromDIP(4), 0, right_nozzle_pos.x + FromDIP(4), size.y / 2);
+ xpos = left_nozzle_pos.x;
+ if (m_nozzle_num >= 2) xpos = right_nozzle_pos.x;
+ dc.DrawLine(xpos, size.y / 2, right_nozzle_pos.x + FromDIP(4), size.y / 2);
+ dc.DrawLine(xpos, size.y / 2, xpos, size.y);
+ }
+ else{
+ int x = left_nozzle_pos.x;
+ int len = m_right_road_length;
+ if (m_nozzle_num == 2) {
+ x = right_nozzle_pos.x;
+ len = len - 14;
+ }
+ dc.DrawLine(((x)), (size.y / 2), x + FromDIP(len), (size.y / 2));
+ dc.DrawLine(x + FromDIP(len), (0), x + FromDIP(len), (size.y / 2));
+ dc.DrawLine((x), (size.y / 2), (x), (size.y));
+ }
}
}
- if (m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_right_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
- dc.SetPen(wxPen(m_amsinfo.cans[m_canindex].material_colour, 4, wxSOLID));
- if (m_right_road_length > 0) {
- int x = left_nozzle_pos.x;
- int len = m_right_road_length;
- if (m_nozzle_num == 2){
- x = right_nozzle_pos.x;
- len = len - 14;
+ if (m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_2 || m_pass_road_left_step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
+ 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, size.y / 2, left_nozzle_pos.x, size.y);
+ }
+ else{
+ dc.DrawLine((left_nozzle_pos.x - FromDIP(m_left_road_length)), (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));
+ dc.DrawLine(left_nozzle_pos.x - FromDIP(m_left_road_length), (0), left_nozzle_pos.x - FromDIP(m_left_road_length), (size.y / 2));
}
- dc.DrawLine((FromDIP(x)), FromDIP(size.y / 2), FromDIP(x + len), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(x + len), FromDIP(0), FromDIP(left_nozzle_pos.x + len), FromDIP(size.y / 2));
- dc.DrawLine(FromDIP(x), FromDIP(size.y / 2), FromDIP(x), FromDIP(size.y));
}
}
}
void AMSRoadDownPart::UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step) {
if (m_nozzle_num >= 2){
- if (left) {
- m_left_road_length = len;
+ if (left){
+ m_left_road_length = len;;
m_pass_road_left_step = step;
}
- else {
+ else{
m_right_road_length = len;
m_pass_road_right_step = step;
}
@@ -2284,14 +2371,13 @@ void AMSRoadDownPart::UpdatePassRoad(string can_id, bool left, int len, AMSinfo
m_pass_road_right_step = step;
}
}
-
- m_canindex = atoi(can_id.c_str());
- if (m_canindex == -1){
- return;
- }
- m_amsinfo = info;
}
+void AMSRoadDownPart::msw_rescale() {
+ Layout();
+ Fit();
+ Refresh();
+}
/*************************************************
Description:AMSPreview
@@ -2300,7 +2386,7 @@ AMSPreview::AMSPreview() {}
AMSPreview::AMSPreview(wxWindow* parent, wxWindowID id, AMSinfo amsinfo, AMSModel itemType, const wxPoint& pos, const wxSize& size) : AMSPreview()
{
- if (itemType == AMSModel::GENERIC_AMS || itemType == AMSModel::EXTRA_AMS || itemType == AMSModel::N3F_AMS) {
+ if (itemType == AMSModel::GENERIC_AMS || itemType == AMSModel::AMS_LITE || itemType == AMSModel::N3F_AMS) {
create(parent, id, pos, AMS_ITEM_FOUR_SIZE);
}
else {
@@ -2333,10 +2419,10 @@ void AMSPreview::Update(AMSinfo amsinfo)
void AMSPreview::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size)
{
- m_ts_bitmap_cube = new ScalableBitmap(this, "ts_bitmap_cube", 14);
- m_four_slot_bitmap = new ScalableBitmap(this, "four_slot_ams_item", FromDIP(26));
- m_single_slot_bitmap = new ScalableBitmap(this, "single_slot_ams_item", FromDIP(26));
- m_ext_bitmap = new ScalableBitmap(this, "ext_ams_item", FromDIP(24));
+ m_ts_bitmap_cube = ScalableBitmap(this, "ts_bitmap_cube", 14);
+ 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);
wxWindow::Create(parent, id, pos, size);
SetMinSize(size);
SetMaxSize(size);
@@ -2405,10 +2491,12 @@ void AMSPreview::doRender(wxDC &dc)
dc.SetBrush(wxBrush(StateColor::darkModeColorFor(m_background_colour)));
dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
- auto left = m_padding;
+ //auto left = m_padding;
+ auto left = size.x * 0.09;
+ m_space = size.x * 0.2136;
auto color = *wxWHITE;
//four slot
- if (m_ams_item_type != AMSModel::NO_AMS && m_ams_item_type != AMSModel::SINGLE_AMS){
+ if (m_ams_item_type != AMSModel::EXT_AMS && m_ams_item_type != AMSModel::N3S_AMS){
for (std::vector::iterator iter = m_amsinfo.cans.begin(); iter != m_amsinfo.cans.end(); iter++) {
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
@@ -2425,7 +2513,7 @@ void AMSPreview::doRender(wxDC &dc)
if (iter->material_cols.size() > 1) {
int fleft = left;
float total_width = AMS_ITEM_CUBE_SIZE.x;
- int gwidth = std::round(total_width / (iter->material_cols.size() - 1));
+ int gwidth = (total_width / (iter->material_cols.size() - 1));
if (iter->ctype == 0) {
for (int i = 0; i < iter->material_cols.size() - 1; i++) {
if ((fleft + gwidth) > (AMS_ITEM_CUBE_SIZE.x)) {
@@ -2448,14 +2536,14 @@ void AMSPreview::doRender(wxDC &dc)
}
else {
if (iter->material_colour.Alpha() == 0) {
- dc.DrawBitmap(m_ts_bitmap_cube->bmp(), left, (size.y - AMS_ITEM_CUBE_SIZE.y) / 2);
+ dc.DrawBitmap(m_ts_bitmap_cube.bmp(), left, (size.y - AMS_ITEM_CUBE_SIZE.y) / 2);
}
else {
wxRect rect(left, (size.y - AMS_ITEM_CUBE_SIZE.y) / 2, AMS_ITEM_CUBE_SIZE.x, AMS_ITEM_CUBE_SIZE.y);
if (iter->material_state == AMSCanType::AMS_CAN_TYPE_EMPTY) {
dc.SetPen(wxPen(wxColor(0, 0, 0)));
dc.DrawRoundedRectangle(rect, 3);
- dc.DrawLine(rect.GetRight() - 1, rect.GetTop() + 1, rect.GetLeft() + 1, rect.GetBottom() - 1);
+ dc.DrawLine(rect.GetRight() - FromDIP(1), rect.GetTop() + FromDIP(1), rect.GetLeft() + FromDIP(1), rect.GetBottom() - FromDIP(1));
}
else {
dc.DrawRoundedRectangle(rect, 2);
@@ -2465,8 +2553,8 @@ void AMSPreview::doRender(wxDC &dc)
left += m_space;
}
- auto pot = wxPoint((size.x - m_four_slot_bitmap->GetBmpSize().x) / 2, (size.y - m_four_slot_bitmap->GetBmpSize().y) / 2);
- dc.DrawBitmap(m_four_slot_bitmap->bmp(), pot);
+ auto pot = wxPoint((size.x - m_four_slot_bitmap.GetBmpSize().x) / 2, (size.y - m_four_slot_bitmap.GetBmpSize().y) / 2);
+ dc.DrawBitmap(m_four_slot_bitmap.bmp(), pot);
}
//single slot
@@ -2477,7 +2565,7 @@ void AMSPreview::doRender(wxDC &dc)
int fleft = (size.x - AMS_ITEM_CUBE_SIZE.x) / 2;
float total_width = AMS_ITEM_CUBE_SIZE.x;
- int gwidth = std::round(total_width / (iter.material_cols.size()));
+ int gwidth = (total_width / (iter.material_cols.size()));
if (iter.ctype == 0) {
for (int i = 0; i < iter.material_cols.size() - 1; i++) {
@@ -2502,32 +2590,30 @@ void AMSPreview::doRender(wxDC &dc)
}
else {
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
- if (iter.material_cols.size() > 0)
- {
- color = iter.material_cols[0];
- dc.SetBrush(color);
+ if (iter.material_colour != ""){
+ dc.SetBrush(iter.material_colour);
}
- auto rect = wxRect((size.x - AMS_ITEM_CUBE_SIZE.x) / 2, (size.y - AMS_ITEM_CUBE_SIZE.y) / 2, AMS_ITEM_CUBE_SIZE.x, AMS_ITEM_CUBE_SIZE.y);
- dc.DrawRoundedRectangle(rect, 0);
+ 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 (m_ams_item_type == AMSModel::SINGLE_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);
+ 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 {
- 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);
-
if ((color == *wxWHITE || color.Alpha() == 0) && iter.material_cols.size() <= 1) {
dc.SetPen(wxPen(AMS_CONTROL_GRAY500));
- auto rect = wxRect(FromDIP((size.x - 6) / 2 - 1), FromDIP((size.y - 12) / 2 - 1), AMS_ITEM_CUBE_SIZE.x - FromDIP(1), AMS_ITEM_CUBE_SIZE.y - FromDIP(1));
+ 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);
+
auto tsize = dc.GetMultiLineTextExtent(_L("Ext"));
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetFont(Label::Body_8);
dc.SetTextForeground(AMS_CONTROL_BLACK_COLOUR);
- pot = wxPoint((size.x - tsize.x) / 2 + FromDIP(3), (size.y + 12) / 2 - FromDIP(1));
+ pot = wxPoint((size.x - tsize.x) / 2 + FromDIP(2), (size.y + FromDIP(12)) / 2 - FromDIP(2));
dc.DrawText(_L("Ext"), pot);
}
}
@@ -2536,21 +2622,26 @@ void AMSPreview::doRender(wxDC &dc)
if (!wxWindow::IsEnabled()) { border_colour = AMS_CONTROL_DISABLE_COLOUR; }
if (m_hover) {
- dc.SetPen(wxPen(border_colour, 2));
+ dc.SetPen(wxPen(border_colour, 1));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- dc.DrawRoundedRectangle(1, 1, size.x - 1, size.y - 1, 3);
+ dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
}
if (m_selected) {
- dc.SetPen(wxPen(border_colour, 2));
+ dc.SetPen(wxPen(border_colour, 1));
dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
- dc.DrawRoundedRectangle(1, 1, size.x-1, size.y-1, 3);
+ dc.DrawRoundedRectangle(0, 0, size.x, size.y, 3);
}
}
void AMSPreview::DoSetSize(int x, int y, int width, int height, int sizeFlags /*= wxSIZE_AUTO*/) { wxWindow::DoSetSize(x, y, width, height, sizeFlags); }
-
+void AMSPreview::msw_rescale() {
+ m_ts_bitmap_cube = ScalableBitmap(this, "ts_bitmap_cube", 14);
+ 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);
+}
/*************************************************
@@ -2575,7 +2666,7 @@ AMSHumidity::AMSHumidity(wxWindow* parent, wxWindowID id, AMSinfo info, const wx
create(parent, id, pos, AMS_HUMIDITY_SIZE);
Bind(wxEVT_PAINT, &AMSHumidity::paintEvent, this);
- wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_HUMIDITY_BK_COLOUR);
+ //wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_HUMIDITY_BK_COLOUR);
Bind(wxEVT_LEFT_UP, [this](wxMouseEvent& e) {
if (m_show_humidity) {
@@ -2599,8 +2690,8 @@ AMSHumidity::AMSHumidity(wxWindow* parent, wxWindowID id, AMSinfo info, const wx
void AMSHumidity::create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size) {
wxWindow::Create(parent, id, pos, size);
+ SetSize(size);
SetMinSize(size);
- SetMaxSize(size);
SetBackgroundColour(AMS_CONTROL_WHITE_COLOUR);
Refresh();
}
@@ -2650,11 +2741,10 @@ void AMSHumidity::doRender(wxDC& dc)
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.DrawRoundedRectangle(0, 0, FromDIP(size.x), FromDIP(size.y), FromDIP(size.y / 2));
+ dc.DrawRoundedRectangle(0, 0, (size.x), (size.y), (size.y / 2));
//hum image
int hum_idx = m_amsinfo.ams_humidity - 1;
@@ -2662,7 +2752,7 @@ void AMSHumidity::doRender(wxDC& dc)
hum_idx += 5;
}
auto hum_img = ams_humidity_img[hum_idx];
- auto pot = wxPoint(FromDIP(size.x * 0.1), FromDIP((size.y - hum_img.GetBmpSize().y) / 2));
+ auto pot = wxPoint(FromDIP(5), ((size.y - hum_img.GetBmpSize().y) / 2));
dc.DrawBitmap(hum_img.bmp(), pot);
//percentage
@@ -2671,25 +2761,27 @@ void AMSHumidity::doRender(wxDC& dc)
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.SetFont(Label::Body_14);
dc.SetTextForeground(AMS_CONTROL_BLACK_COLOUR);
- pot = wxPoint(FromDIP(size.x * 0.3), FromDIP((size.y - tsize.y) / 2));
+ //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);
- pot.x += FromDIP(tsize.x + 5);
- pot.y += FromDIP(tsize.y / 2 - 4);
+ pot.x += (tsize.x + FromDIP(5));
+ pot.y += (tsize.y / 2 - FromDIP(4));
tsize = dc.GetMultiLineTextExtent(_L("%"));
dc.SetFont(Label::Body_12);
dc.DrawText(_L("%"), pot);
//vertical line
+ pot.x = pot.x + tsize.x + FromDIP(2);
dc.SetPen(wxPen(wxColour(194, 194, 194)));
dc.SetBrush(wxBrush(wxColour(194, 194, 194)));
//dc.DrawLine(FromDIP(GetSize().x * 0.64), FromDIP(GetSize().y / 2 - 10), FromDIP(GetSize().x * 0.64), FromDIP(GetSize().y / 2 + 10));
- dc.DrawLine(FromDIP(pot.x + tsize.x + 2), FromDIP(GetSize().y / 2 - 10), FromDIP(pot.x + tsize.x + 2), FromDIP(GetSize().y / 2 + 10));
+ dc.DrawLine(pot.x, GetSize().y / 2 - FromDIP(10), pot.x, GetSize().y / 2 + FromDIP(10));
//sun image
/*pot.x = FromDIP(size.x * 0.69);
pot.y = FromDIP((size.y - ams_sun_img.GetBmpHeight()) / 2);*/
- pot.x = pot.x + tsize.x + 4;
+ pot.x = pot.x + FromDIP(4);
pot.y = FromDIP((size.y - ams_sun_img.GetBmpHeight()) / 2);
dc.SetPen(wxPen(*wxTRANSPARENT_PEN));
dc.DrawBitmap(ams_sun_img.bmp(), pot);
@@ -2698,7 +2790,17 @@ void AMSHumidity::doRender(wxDC& dc)
else {
//to do ...
}
+}
+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 = 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);
}
@@ -2708,13 +2810,14 @@ Description:AmsItem
AmsItem::AmsItem() {}
-AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model) : AmsItem()
+AmsItem::AmsItem(wxWindow *parent,AMSinfo info, AMSModel model, AMSPanelPos pos) : AmsItem()
{
- m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid", 40);
+ m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 136);
SetDoubleBuffered(true);
m_ams_model = model;
m_info = info;
+ m_panel_pos = pos;
if (m_ams_model == AMSModel::GENERIC_AMS){
wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, AMS_CANS_WINDOW_SIZE);
@@ -2736,7 +2839,7 @@ void AmsItem::create(wxWindow *parent)
{
Freeze();
//if (m_ams_model == AMSModel::GENERIC_AMS)
- if (true) {
+ if (m_ams_model != AMSModel::AMS_LITE) {
sizer_can = new wxBoxSizer(wxHORIZONTAL);
sizer_item = new wxBoxSizer(wxVERTICAL);
auto it = m_info.cans.begin();
@@ -2754,7 +2857,7 @@ void AmsItem::create(wxWindow *parent)
sizer_item->Add(m_humidity, 0, wxALIGN_CENTER_HORIZONTAL, 0);
}
else{
- if (m_ams_model == NO_AMS){
+ 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);
}
@@ -2762,7 +2865,29 @@ void AmsItem::create(wxWindow *parent)
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, wxALIGN_CENTER_HORIZONTAL, 0);
+ sizer_item->Add(m_panel_road, 0, wxALL | wxEXPAND, 0);
+
+ 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++;
+ }
+ 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);
SetSizer(sizer_item);
}
@@ -2779,8 +2904,8 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
auto amscan = new wxWindow(this, wxID_ANY);
- amscan->SetSize(wxSize(52, 109));
- amscan->SetMinSize(wxSize(52, 109));
+ amscan->SetSize(wxSize(FromDIP(52), FromDIP(109)));
+ amscan->SetMinSize(wxSize(FromDIP(52), FromDIP(109)));
amscan->SetBackgroundColour(wxColour(240, 240, 240));
@@ -2788,15 +2913,106 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
AMSrefresh* m_panel_refresh;
AMSExtText* m_panel_text;
- if (m_ams_model != AMSModel::NO_AMS)
+ 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::NO_AMS){
+ else if (m_ams_model == AMSModel::EXT_AMS){
m_panel_text = new AMSExtText(amscan, wxID_ANY);
}
+ AMSLib* m_panel_lib = nullptr;
+ if (m_ams_model == AMSModel::EXT_AMS && m_info.ext_type == AMSModelOriginType::LITE_EXT) {
+ m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo, AMSModelOriginType::LITE_EXT);
+ }
+ else{
+ m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo);
+ }
+
+ try{
+ m_panel_lib->Bind(wxEVT_LEFT_DOWN, [this, canindex](wxMouseEvent& ev) {
+ m_canlib_selection = canindex;
+ // m_canlib_id = caninfo.can_id;
+
+ for (auto lib_it : m_can_lib_list) {
+ AMSLib* lib = lib_it.second;
+ if (lib->m_can_index == m_canlib_selection) {
+ wxCommandEvent evt(EVT_AMS_UNSELETED_VAMS);
+ evt.SetString(m_info.ams_id);
+ wxPostEvent(GetParent()->GetParent(), evt);
+ lib->OnSelected();
+ }
+ else {
+ lib->UnSelected();
+ }
+ }
+ 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;
+ m_panel_lib->m_info.can_id = caninfo.can_id;
+ m_panel_lib->m_can_index = canindex;
+ }
+ catch (...)
+ {
+ ;
+ }
+
+ //auto m_panel_road = new AMSRoad(amscan, wxID_ANY, caninfo, canindex, maxcan, wxDefaultPosition, AMS_CAN_ROAD_SIZE);
+
+ if (m_ams_model != AMSModel::AMS_LITE && m_ams_model != AMSModel::EXT_AMS) {
+ m_sizer_ams->Add(0, 0, 0, wxALIGN_CENTER_HORIZONTAL, 0);
+ m_sizer_ams->Add(m_panel_refresh, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, FromDIP(4));
+ m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
+ }
+ else
+ {
+ 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_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
+ }
+ }
+
+
+ amscan->SetSizer(m_sizer_ams);
+ amscan->Layout();
+ 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)
+{
+ 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);
+
+ wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxVERTICAL);
+
auto m_panel_lib = new AMSLib(amscan, m_info.ams_id, caninfo);
m_panel_lib->Bind(wxEVT_LEFT_DOWN, [this, canindex](wxMouseEvent& ev) {
@@ -2819,34 +3035,31 @@ void AmsItem::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size
});
- 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;
+ 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;
m_panel_lib->m_info.can_id = caninfo.can_id;
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 (m_ams_model != AMSModel::EXTRA_AMS && m_ams_model != AMSModel::NO_AMS) {
- m_sizer_ams->Add(0, 0, 0, wxALIGN_CENTER_HORIZONTAL, 0);
- m_sizer_ams->Add(m_panel_refresh, 0, wxALIGN_CENTER_HORIZONTAL | wxDOWN, 4);
- m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
+ if (canindex == 0){
+ m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_BOTTOM, 0);
}
- else
- {
- if (m_ams_model == AMSModel::NO_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_lib, 0, wxALIGN_CENTER_HORIZONTAL, 0);
- }
+ else if (canindex == 1){
+ m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_BOTTOM, 0);
+ }
+ else if (canindex == 2){
+ m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_RIGHT | wxALIGN_TOP, 0);
+ }
+ else if (canindex == 3){
+ m_sizer_ams->Add(m_panel_lib, 0, wxALIGN_LEFT | wxALIGN_TOP, 0);
}
-
amscan->SetSizer(m_sizer_ams);
amscan->Layout();
amscan->Fit();
- sizer->Add(amscan, 0, wxUP | wxLEFT | wxRIGHT, 5);
+ sizer->Add(amscan, canindex, wxUP | wxLEFT | wxRIGHT, FromDIP(5));
/*if (m_ams_model == AMSModel::GENERIC_AMS) {
sizer->Add(amscan, 0, wxALL, 0);
}
@@ -2894,6 +3107,9 @@ void AmsItem::Update(AMSinfo info)
}
}
}
+ if (m_panel_road != nullptr){
+ m_panel_road->Update(m_info);
+ }
if (true || m_ams_model == AMSModel::GENERIC_AMS) {
/*m_panel_road->Update(m_info, info.cans[0]);
@@ -2950,11 +3166,11 @@ wxColour AmsItem::GetTagColr(wxString canid)
void AmsItem::SetAmsStepExtra(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step)
{
- if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1) {
+ if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP1 || step == AMSPassRoadSTEP::AMS_ROAD_STEP_1) {
SetAmsStep(canid.ToStdString());
- }else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2) {
+ }else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP2 || step == AMSPassRoadSTEP::AMS_ROAD_STEP_2) {
SetAmsStep(canid.ToStdString());
- }else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3) {
+ }else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_COMBO_LOAD_STEP3 || step == AMSPassRoadSTEP::AMS_ROAD_STEP_3) {
SetAmsStep(canid.ToStdString());
}else if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE) {
SetAmsStep("");
@@ -2963,7 +3179,24 @@ void AmsItem::SetAmsStepExtra(wxString canid, AMSPassRoadType type, AMSPassRoadS
void AmsItem::SetAmsStep(std::string amsid, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step)
{
- m_panel_road->UpdatePassRoad(amsid, canid, type, step);
+ if (m_panel_road){
+ m_panel_road->UpdatePassRoad(amsid, canid, type, step);
+ }
+ if (m_info.ams_id != amsid){
+ return;
+ }
+
+ SetAmsStepExtra(canid, type, step);
+ /*if (m_info.ams_type == AMSModel::EXTRA_AMS){
+ SetAmsStepExtra(canid, type, step);
+ }*/
+
+ /*if (step == AMSPassRoadSTEP::AMS_ROAD_STEP_NONE){
+ m_road_canid = "";
+ }
+ else{
+ m_road_canid = canid;
+ }*/
}
@@ -3046,6 +3279,14 @@ void AmsItem::SetAmsStep(std::string can_id)
m_road_canid = can_id;
Refresh();
}
+ for (auto lib : m_can_lib_list){
+ if (lib.second->m_info.can_id == can_id){
+ lib.second->on_pass_road(true);
+ }
+ else{
+ lib.second->on_pass_road(false);
+ }
+ }
}
void AmsItem::PlayRridLoading(wxString canid)
@@ -3107,15 +3348,12 @@ void AmsItem::doRender(wxDC& dc)
this->SetMinSize(AMS_SINGLE_CAN_SIZE);
}*/
wxSize size = GetSize();
- //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);
//road for extra
- /*if (m_ams_model == AMSModel::EXTRA_AMS) {
+ 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));
- auto end_top = size.x / 2 - FromDIP(99);
- auto passroad_width = 6;
-
- for (auto lib_it : m_can_lib_list) {
+ /*for (auto lib_it : m_can_lib_list) {
AMSLib* lib = lib_it.second;
if (m_road_canid.empty()) {
@@ -3127,105 +3365,117 @@ void AmsItem::doRender(wxDC& dc)
lib->on_pass_road(true);
}
}
- }
-
- }*/
+ }*/
// A1
- // dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
- // dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+ dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
+ dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+ RenderExtraRoad(dc, size);
+ }
+}
- // try
- // {
- // auto a1_top = size.y / 2 - FromDIP(4);
- // auto a1_left = m_can_lib_list[0]->canLib->GetScreenPosition().x + m_can_lib_list[0]->canLib->GetSize().x / 2;
- // auto local_pos1 = GetScreenPosition().x + GetSize().x / 2;
- // a1_left = size.x / 2 + (a1_left - local_pos1);
- // dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
- // dc.DrawLine(a1_left, a1_top, end_top, a1_top);
+void AmsItem::RenderExtraRoad(wxDC& dc, wxSize size) {
+ auto end_top = size.x;
+ if (m_panel_pos == AMSPanelPos::RIGHT_PANEL){
+ end_top = 0;
+ }
+ auto passroad_width = 4;
+ auto a1_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 - FromDIP(4) : size.y / 2;
+ auto a2_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 : size.y / 2 - FromDIP(4);
+ auto a3_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(8) : size.y / 2 + FromDIP(4);
+ auto a4_top = m_panel_pos == AMSPanelPos::RIGHT_PANEL ? size.y / 2 + FromDIP(4) : size.y / 2 + FromDIP(8);
+
+ try
+ {
+ auto a1_left = m_can_lib_list["0"]->GetScreenPosition().x + m_can_lib_list["0"]->GetSize().x / 2;
+ auto local_pos1 = GetScreenPosition().x + GetSize().x / 2;
+ a1_left = size.x / 2 + (a1_left - local_pos1);
+ dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
+ 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 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 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);
+ dc.DrawLine(a3_left, a3_top, end_top, a3_top);
- // // A2
- // auto a2_top = size.y / 2 + FromDIP(8);
- // auto a2_left = m_can_lib_list[1]->canLib->GetScreenPosition().x + m_can_lib_list[1]->canLib->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(160), a2_left, a2_top);
- // dc.DrawLine(a2_left, a2_top, end_top, a2_top);
+ //// A4
+ auto a4_left = m_can_lib_list["3"]->GetScreenPosition().x + m_can_lib_list["3"]->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);
+ dc.DrawLine(a4_left, a4_top, end_top, a4_top);
- // // A3
- // auto a3_top = size.y / 2 + FromDIP(4);
- // auto a3_left = m_can_lib_list[2]->canLib->GetScreenPosition().x + m_can_lib_list[2]->canLib->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);
- // dc.DrawLine(a3_left, a3_top, end_top, a3_top);
+ //to Extruder
+ dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
+ dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
+ auto top = std::min(a1_top, a2_top);
+ dc.DrawLine(end_top - FromDIP(1), top, end_top - FromDIP(1), size.y);
- // // A4
- // auto a4_top = size.y / 2;
- // auto a4_left = m_can_lib_list[3]->canLib->GetScreenPosition().x + m_can_lib_list[3]->canLib->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(30), a4_left, a4_top);
- // dc.DrawLine(a4_left, a4_top, end_top, a4_top);
+ if (!m_road_canid.empty()) {
+ int can_idx = atoi(m_road_canid.c_str());
+ if (can_idx < 0 || can_idx >= m_info.cans.size()) {
+ return;
+ }
+ m_road_colour = m_info.cans[can_idx].material_colour;
+ dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
+ 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.empty()) {
- // if (m_road_canid == "0") {
- // dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
- // dc.DrawLine(a1_left, FromDIP(30), a1_left, a1_top);
- // dc.DrawLine(a1_left, a1_top, end_top, a1_top);
- // }
+ 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);
+ }
- // if (m_road_canid == "1") {
- // dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
- // dc.DrawLine(a2_left, FromDIP(160), a2_left, a2_top);
- // dc.DrawLine(a2_left, a2_top, end_top, a2_top);
- // }
+ 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);
+ }
+ }
- // if (m_road_canid == "2") {
- // dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
- // dc.DrawLine(a3_left, FromDIP(160), a3_left, a3_top);
- // dc.DrawLine(a3_left, a3_top, end_top, a3_top);
- // }
-
- // if (m_road_canid == "3") {
- // dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID));
- // dc.DrawLine(a4_left, FromDIP(30), a4_left, a4_top);
- // dc.DrawLine(a4_left, a4_top, end_top, a4_top);
- // }
- // }
-
- // //to Extruder
- // dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID));
- // dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH));
-
- // dc.DrawLine(end_top, a1_top, end_top, 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);
- // }
- // 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);
- // }
- // }
- // }
- // }
- // catch (...){}
- //}
+ /*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);
+ }
+ 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);
+ }
+ }
+ }*/
+ }
+ catch (...) {}
}
void AmsItem::StopRridLoading(wxString canid)
@@ -3240,20 +3490,21 @@ void AmsItem::msw_rescale()
{
for (auto refresh_it : m_can_refresh_list) {
AMSrefresh* refresh = refresh_it.second;
- refresh->msw_rescale();
+ if(refresh) refresh->msw_rescale();
}
for (auto lib_it : m_can_lib_list) {
AMSLib* lib = lib_it.second;
- lib->msw_rescale();
+ if (lib) lib->msw_rescale();
}
+ m_bitmap_extra_framework = ScalableBitmap(this, "ams_extra_framework_mid_new", 136);
}
void AmsItem::show_sn_value(bool show)
{
for (auto lib_it : m_can_lib_list) {
AMSLib* lib = lib_it.second;
- lib->show_kn_value(show);
+ if (lib) lib->show_kn_value(show);
}
}
diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp
index 6e3e597cb..c8fb22275 100644
--- a/src/slic3r/GUI/Widgets/AMSItem.hpp
+++ b/src/slic3r/GUI/Widgets/AMSItem.hpp
@@ -33,11 +33,16 @@
namespace Slic3r { namespace GUI {
enum AMSModel {
- NO_AMS = 0, //ext
+ EXT_AMS = 0, //ext
GENERIC_AMS = 1,
- EXTRA_AMS = 2, //ams-lite
+ AMS_LITE = 2, //ams-lite
N3F_AMS = 3,
- SINGLE_AMS = 4 //n3s
+ N3S_AMS = 4 //n3s single_ams
+};
+
+enum AMSModelOriginType {
+ GENERIC_EXT,
+ LITE_EXT
};
enum ActionButton {
@@ -57,16 +62,17 @@ enum class AMSRoadMode : int {
AMS_ROAD_MODE_VIRTUAL_TRAY
};
-enum class AMSRoadDownPartLoad : int {
- AMS_ROAD_MODE_LEFT,
- AMS_ROAD_MODE_RIGHT,
- AMS_ROAD_MODE_NONE
+enum class AMSPanelPos : int {
+ SINGLE_PANEL,
+ LEFT_PANEL,
+ RIGHT_PANEL,
};
enum class AMSRoadShowMode : int {
AMS_ROAD_MODE_FOUR,
AMS_ROAD_MODE_DOUBLE,
AMS_ROAD_MODE_SINGLE,
+ AMS_ROAD_MODE_EXTRA_AMS,
AMS_ROAD_MODE_NONE
};
@@ -141,6 +147,7 @@ enum FilamentStepType {
#define AMS_ITEM_SINGLE_SIZE wxSize(FromDIP(20), FromDIP(24))
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
#define AMS_CAN_LIB_SIZE wxSize(FromDIP(52), FromDIP(80))
+#define AMS_LITE_CAN_LIB_SIZE wxSize(FromDIP(49), FromDIP(72))
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(264), FromDIP(50))
#define AMS_ITEMS_PANEL_SIZE wxSize(FromDIP(264), FromDIP(27))
//#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(184))
@@ -178,6 +185,7 @@ public:
int curreent_filamentstep;
int ams_humidity = 0;
AMSModel ams_type = AMSModel::GENERIC_AMS;
+ AMSModelOriginType ext_type = AMSModelOriginType::GENERIC_EXT;
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
void ReadExtInfo(AmsTray tray);
@@ -352,7 +360,7 @@ Description:AMSLib
class AMSLib : public wxWindow
{
public:
- AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info);
+ AMSLib(wxWindow *parent, std::string ams_idx, Caninfo info, AMSModelOriginType ext_type = AMSModelOriginType::GENERIC_EXT);
~AMSLib();
void create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
public:
@@ -366,6 +374,7 @@ public:
int m_can_index = 0;
bool transparent_changed = { false };
AMSModel m_ams_model;
+ AMSModelOriginType m_ext_type = { AMSModelOriginType::GENERIC_EXT };
void Update(Caninfo info, std::string ams_idx, bool refresh = true);
void UnableSelected() { m_unable_selected = true; };
@@ -482,7 +491,7 @@ public:
public:
AMSinfo m_amsinfo;
- Caninfo m_info;
+ //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 };
@@ -495,7 +504,7 @@ public:
double m_radius = { 4 };
wxColour m_road_def_color;
wxColour m_road_color;
- void Update(AMSinfo amsinfo, Caninfo info);
+ void Update(AMSinfo amsinfo);
std::vector ams_humidity_img;
@@ -514,6 +523,8 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
+
+ void msw_rescale();
};
@@ -528,49 +539,40 @@ 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_canindex = { 0 };
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 };
- bool m_single_nozzle_no_ams = { false };
int m_left_road_length = { -1 };
int m_right_road_length = { -1 };
int m_passroad_width = { 6 };
double m_radius = { 4 };
- wxColour m_road_def_color;
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 };
- wxColour m_road_color;
+ 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);
- std::vector ams_humidity_img;
-
-
- int m_humidity = { 0 };
- bool m_show_humidity = { false };
bool m_vams_loading{ false };
AMSModel m_ams_model;
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
- void SetPassRoadColour(wxColour col);
- void SetMode(AMSRoadDownPartLoad mode);
+ void SetPassRoadColour(bool left, wxColour col);
void SetShowMode(AMSRoadShowMode left_mode, AMSRoadShowMode right_mode);
- void OnPassRoad(std::vector prord_list);
void UpdatePassRoad(string can_id, bool left, int len, AMSinfo info, AMSPassRoadSTEP step);
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
+
+ void msw_rescale();
};
/*************************************************
@@ -594,6 +596,7 @@ public:
void OnSelected();
void UnSelected();
virtual bool Enable(bool enable = true);
+ void msw_rescale();
AMSinfo m_amsinfo;
@@ -606,10 +609,10 @@ protected:
bool m_selected = {false};
AMSModel m_ams_item_type = AMSModel::GENERIC_AMS;
- ScalableBitmap* m_ts_bitmap_cube;
- ScalableBitmap* m_four_slot_bitmap;
- ScalableBitmap* m_single_slot_bitmap;
- ScalableBitmap* m_ext_bitmap;
+ ScalableBitmap m_ts_bitmap_cube;
+ ScalableBitmap m_four_slot_bitmap;
+ ScalableBitmap m_single_slot_bitmap;
+ ScalableBitmap m_ext_bitmap;
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
@@ -647,6 +650,7 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
+ void msw_rescale();
};
@@ -657,12 +661,13 @@ class AmsItem : public wxWindow
{
public:
AmsItem();
- AmsItem(wxWindow *parent, AMSinfo info, AMSModel model);
+ AmsItem(wxWindow *parent, AMSinfo info, AMSModel model, AMSPanelPos pos);
~AmsItem();
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 SetDefSelectCan();
void SelectCan(std::string canid);
void PlayRridLoading(wxString canid);
@@ -675,6 +680,7 @@ public:
void paintEvent(wxPaintEvent& evt);
void render(wxDC& dc);
void doRender(wxDC& dc);
+ void RenderExtraRoad(wxDC& dc, wxSize size);
wxColour GetTagColr(wxString canid);
std::string GetCurrentCan();
@@ -685,6 +691,7 @@ public:
int m_can_count = { 0 };
AMSModel m_ams_model;
+ AMSPanelPos m_panel_pos;
std::string m_canlib_id;
std::string m_road_canid;
@@ -692,12 +699,13 @@ public:
std::map m_can_lib_list;
//std::map m_can_road_list;
- AMSRoadUpPart* m_panel_road;
+ AMSRoadUpPart* m_panel_road = { nullptr };
std::map m_can_refresh_list;
AMSHumidity* m_humidity;
AMSinfo m_info;
wxBoxSizer * sizer_can = {nullptr};
+ wxGridSizer* sizer_can_extra = { nullptr };
wxBoxSizer * sizer_humidity = { nullptr };
wxBoxSizer * sizer_item = { nullptr };
wxBoxSizer * sizer_can_middle = {nullptr};
@@ -720,6 +728,7 @@ wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent);
wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent);
+wxDECLARE_EVENT(EVT_AMS_UNSELETED_AMS, wxCommandEvent);
wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent);
wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);