From d134b66446e5a9561152b6545fe79d19a70dddfe Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 14 Jan 2025 16:46:54 +0800 Subject: [PATCH] ENH:optimize some layouts at different resolutions jira:[STUDIO-9807] Change-Id: I3d432734a6b3f494ed79d816b754d6d1cbcd3a0f --- src/slic3r/GUI/StatusPanel.cpp | 3 +- src/slic3r/GUI/Widgets/AMSControl.cpp | 185 +++++++------------------- src/slic3r/GUI/Widgets/AMSControl.hpp | 3 - 3 files changed, 52 insertions(+), 139 deletions(-) diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 446c96cdd..469d8c900 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2982,8 +2982,7 @@ void StatusPanel::update_ams(MachineObject *obj) } } - - if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_slot[0], obj); + //if (is_support_virtual_tray) m_ams_control->update_vams_kn_value(obj->vt_slot[0], obj); if (m_filament_setting_dlg) m_filament_setting_dlg->update(); std::vector ams_info; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 105130e19..3f7d42a17 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -2473,38 +2473,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_sizer_ams_body = new wxBoxSizer(wxHORIZONTAL); - //ams tip -// m_sizer_ams_tips = new wxBoxSizer(wxHORIZONTAL); -// m_ams_tip = new Label(m_amswin, _L("AMS")); -// m_ams_tip->SetFont(::Label::Body_12); -// m_ams_tip->SetBackgroundColour(*wxWHITE); -// m_img_amsmapping_tip = new wxStaticBitmap(m_amswin, wxID_ANY, create_scaled_bitmap("enable_ams", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); -// m_img_amsmapping_tip->SetBackgroundColour(*wxWHITE); -// -// m_sizer_ams_tips->Add(m_ams_tip, 0, wxTOP, FromDIP(5)); -// m_sizer_ams_tips->Add(m_img_amsmapping_tip, 0, wxALL, FromDIP(3)); -// -// m_img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { -// wxPoint img_pos = m_img_amsmapping_tip->ClientToScreen(wxPoint(0, 0)); -// wxPoint popup_pos(img_pos.x, img_pos.y + m_img_amsmapping_tip->GetRect().height); -// m_ams_introduce_popup.set_mode(true); -// m_ams_introduce_popup.Position(popup_pos, wxSize(0, 0)); -// m_ams_introduce_popup.Popup(); -// -//#ifdef __WXMSW__ -// wxCommandEvent close_event(EVT_CLEAR_SPEED_CONTROL); -// wxPostEvent(this, close_event); -//#endif // __WXMSW__ -// }); -// m_img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { -// m_ams_introduce_popup.Dismiss(); -// }); -// -// - - //ams area - m_sizer_ams_area_left = new wxBoxSizer(wxHORIZONTAL); m_sizer_ams_area_right = new wxBoxSizer(wxHORIZONTAL); m_sizer_down_road = new wxBoxSizer(wxHORIZONTAL); @@ -2530,9 +2499,6 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_ams_right->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); - //extra ams mode - // - m_sizer_ams_area_left->Layout(); m_sizer_ams_area_right->Layout(); @@ -2542,12 +2508,20 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_sizer_option_mid = new wxBoxSizer(wxHORIZONTAL); m_sizer_option_right = new wxBoxSizer(wxHORIZONTAL); - /*m_sizer_option_left->SetMinSize( wxSize( AMS_CANS_SIZE.x,-1 ) ); - 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(140), -1)); - m_sizer_option_right->SetMinSize(wxSize(FromDIP(140), -1)); + auto m_panel_option_left = new wxPanel(m_amswin); + auto m_panel_option_right = new wxPanel(m_amswin); + + m_panel_option_left->SetBackgroundColour(*wxWHITE); + m_panel_option_right->SetBackgroundColour(*wxWHITE); + + m_panel_option_left->SetSizer(m_sizer_option_left); + m_panel_option_right->SetSizer(m_sizer_option_right); + + m_panel_option_left->SetMinSize(wxSize(FromDIP(180), -1)); + m_panel_option_left->SetMaxSize(wxSize(FromDIP(180), -1)); + + m_panel_option_right->SetMinSize(wxSize(FromDIP(180), -1)); + m_panel_option_right->SetMaxSize(wxSize(FromDIP(180), -1)); StateColor btn_bg_green(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair(wxColour(27, 136, 68), StateColor::Pressed), @@ -2573,25 +2547,22 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons /*option left*/ - m_button_auto_refill = new Button(m_amswin, _L("Auto-refill")); + m_button_auto_refill = new Button(m_panel_option_left, _L("Auto-refill")); m_button_auto_refill->SetBackgroundColor(btn_bg_white); m_button_auto_refill->SetBorderColor(btn_bd_white); m_button_auto_refill->SetTextColor(btn_text_white); m_button_auto_refill->SetFont(Label::Body_13); - // m_img_ams_backup = new wxStaticBitmap(m_amswin, wxID_ANY, create_scaled_bitmap("automatic_material_renewal", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0); - // m_img_ams_backup->SetBackgroundColour(*wxWHITE); - // m_img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); }); - // m_img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); }); - // m_img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); }); - m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER_VERTICAL, 0); + m_button_auto_refill->SetMinSize(wxSize(FromDIP(80), FromDIP(34))); + m_button_auto_refill->SetMaxSize(wxSize(FromDIP(80), FromDIP(34))); m_button_ams_setting_normal = ScalableBitmap(this, "ams_setting_normal", 24); m_button_ams_setting_hover = ScalableBitmap(this, "ams_setting_hover", 24); m_button_ams_setting_press = ScalableBitmap(this, "ams_setting_press", 24); - m_button_ams_setting = new wxStaticBitmap(m_amswin, wxID_ANY, m_button_ams_setting_normal.bmp(), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24))); - m_button_ams_setting->SetBackgroundColour(m_amswin->GetBackgroundColour()); - m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(20)); + m_button_ams_setting = new wxStaticBitmap(m_panel_option_left, wxID_ANY, m_button_ams_setting_normal.bmp(), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24))); + m_sizer_option_left->Add(m_button_auto_refill, 0, wxALIGN_CENTER, 0); + m_sizer_option_left->Add(0, 0, 0, wxLEFT, FromDIP(20)); + m_sizer_option_left->Add(m_button_ams_setting, 0, wxALIGN_CENTER, 0); /*option mid*/ @@ -2600,15 +2571,13 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons /*option right*/ - - - - m_button_extruder_feed = new Button(m_amswin, _L("Load")); + m_button_extruder_feed = new Button(m_panel_option_right, _L("Load")); m_button_extruder_feed->SetFont(Label::Body_13); - m_button_extruder_feed->SetBackgroundColor(btn_bg_green); m_button_extruder_feed->SetBorderColor(btn_bd_green); m_button_extruder_feed->SetTextColor(btn_text_green); + m_button_extruder_feed->SetMinSize(wxSize(FromDIP(80),FromDIP(34))); + m_button_extruder_feed->SetMaxSize(wxSize(FromDIP(80),FromDIP(34))); if (wxGetApp().app_config->get("language") == "de_DE") m_button_extruder_feed->SetFont(Label::Body_9); @@ -2622,11 +2591,13 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons if (wxGetApp().app_config->get("language") == "uk_UA") m_button_extruder_feed->SetFont(Label::Body_9); if (wxGetApp().app_config->get("language") == "pt_BR") m_button_extruder_feed->SetLabel("Load"); - m_button_extruder_back = new Button(m_amswin, _L("Unload")); + m_button_extruder_back = new Button(m_panel_option_right, _L("Unload")); m_button_extruder_back->SetBackgroundColor(btn_bg_white); m_button_extruder_back->SetBorderColor(btn_bd_white); m_button_extruder_back->SetTextColor(btn_text_white); m_button_extruder_back->SetFont(Label::Body_13); + m_button_extruder_back->SetMinSize(wxSize(FromDIP(80), FromDIP(34))); + m_button_extruder_back->SetMaxSize(wxSize(FromDIP(80), FromDIP(34))); if (wxGetApp().app_config->get("language") == "de_DE") m_button_extruder_back->SetFont(Label::Body_9); if (wxGetApp().app_config->get("language") == "fr_FR") m_button_extruder_back->SetFont(Label::Body_9); @@ -2644,10 +2615,14 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons 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(20)); + m_panel_option_left->Layout(); + m_panel_option_right->Layout(); - m_sizer_ams_option->Add(m_sizer_option_left, 0, wxALIGN_LEFT, 0); - m_sizer_ams_option->Add(m_sizer_option_mid, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(90)); - m_sizer_ams_option->Add(m_sizer_option_right, 0, wxALIGN_RIGHT, 0); + m_sizer_ams_option->Add(m_panel_option_left, 0, wxALIGN_LEFT, 0); + m_sizer_ams_option->Add( 0, 0, 1, wxEXPAND, 0); + m_sizer_ams_option->Add(m_sizer_option_mid, 0, wxALIGN_RIGHT, 0); + m_sizer_ams_option->Add( 0, 0, 1, wxEXPAND, 0); + m_sizer_ams_option->Add(m_panel_option_right, 0, wxALIGN_RIGHT, 0); m_sizer_ams_body->Add(m_sizer_ams_area_left, wxALIGN_CENTER, 0); @@ -2657,8 +2632,8 @@ 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_HORIZONTAL | wxTOP, 0); - m_sizer_body->Add(m_sizer_ams_option, 0, wxALIGN_CENTER, 0); + m_sizer_body->Add(m_sizer_down_road, 0, wxALIGN_CENTER, 0); + m_sizer_body->Add(m_sizer_ams_option, 0, wxEXPAND, 0); m_amswin->SetSizer(m_sizer_body); m_amswin->Layout(); @@ -2823,7 +2798,6 @@ void AMSControl::EnterNoneAMSMode() m_simplebook_ams_left->SetSelection(0); m_extruder->no_ams_mode(true); //m_button_ams_setting->Hide(); - //m_button_guide->Hide(); //m_button_extruder_feed->Show(); //m_button_extruder_back->Show(); @@ -2836,25 +2810,8 @@ void AMSControl::EnterNoneAMSMode() void AMSControl::EnterGenericAMSMode() { - //m_vams_lib->m_ams_model = m_ext_model; if(m_is_none_ams_mode == AMSModel::GENERIC_AMS) return; - //m_panel_items_left->Show(); - - //m_vams_lib->m_ams_model = AMSModel::GENERIC_AMS; - //m_ams_tip->SetLabel(_L("AMS")); - //m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); - //m_img_vams_tip->Enable(); - //m_img_amsmapping_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); - //m_img_amsmapping_tip->Enable(); - - //m_simplebook_ams_left->SetSelection(0); m_extruder->no_ams_mode(false); - /*m_button_ams_setting->Show(); - m_button_guide->Show(); - m_button_retry->Show(); - m_button_extruder_feed->Show(); - m_button_extruder_back->Show(); - ShowFilamentTip(true);*/ m_amswin->Layout(); m_amswin->Fit(); Layout(); @@ -2867,22 +2824,8 @@ void AMSControl::EnterExtraAMSMode() if(m_is_none_ams_mode == AMSModel::AMS_LITE) return; m_panel_prv_left->Hide(); - - //m_vams_lib->m_ams_model = AMSModel::EXTRA_AMS; - //m_ams_tip->SetLabel(wxEmptyString); - //m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams_disable", this, 16)); - //m_img_vams_tip->Disable(); - //m_img_amsmapping_tip->SetBitmap(create_scaled_bitmap("enable_ams_disable", this, 16)); - //m_img_amsmapping_tip->Disable(); - m_simplebook_ams_left->SetSelection(2); m_extruder->no_ams_mode(false); - /*m_button_ams_setting->Show(); - m_button_guide->Show(); - m_button_retry->Show(); - m_button_extruder_feed->Show(); - m_button_extruder_back->Show(); - ShowFilamentTip(true);*/ m_amswin->Layout(); m_amswin->Fit(); Layout(); @@ -2920,14 +2863,13 @@ void AMSControl::msw_rescale() m_extruder->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_extruder_feed) m_button_extruder_feed->SetMinSize(wxSize(FromDIP(80), FromDIP(34))); + if (m_button_extruder_feed) m_button_extruder_feed->SetMaxSize(wxSize(FromDIP(80), FromDIP(34))); + if (m_button_extruder_back) m_button_extruder_back->SetMinSize(wxSize(FromDIP(80), FromDIP(34))); + if (m_button_extruder_back) m_button_extruder_back->SetMaxSize(wxSize(FromDIP(80), FromDIP(34))); + if (m_button_auto_refill) m_button_auto_refill->SetMinSize(wxSize(FromDIP(80), FromDIP(34))); + if (m_button_auto_refill) m_button_auto_refill->SetMaxSize(wxSize(FromDIP(80), FromDIP(34))); 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) { @@ -3023,10 +2965,6 @@ void AMSControl::ClearAms() { void AMSControl::CreateAmsDoubleNozzle() { - /*m_ams_item_list.clear(); - m_ams_generic_item_list.clear(); - m_ams_extra_item_list.clear();*/ - std::vector single_info_left; std::vector single_info_right; @@ -3275,35 +3213,6 @@ void AMSControl::show_vams_kn_value(bool show) //m_vams_lib->show_kn_value(show); } -void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) -{ - //m_vams_lib->m_obj = obj; - //if (obj->cali_version >= 0) { - // float k_value = 0; - // float n_value = 0; - // CalibUtils::get_pa_k_n_value_by_cali_idx(obj, tray.cali_idx, k_value, n_value); - // m_vams_info.k = k_value; - // m_vams_info.n = n_value; - // m_vams_lib->m_info.k = k_value; - // m_vams_lib->m_info.n = n_value; - //} - //else { // the remaining printer types - // m_vams_info.k = tray.k; - // m_vams_info.n = tray.n; - // m_vams_lib->m_info.k = tray.k; - // m_vams_lib->m_info.n = tray.n; - //} - //m_vams_info.material_name = tray.get_display_filament_type(); - //m_vams_info.material_colour = tray.get_color(); - //m_vams_lib->m_info.material_name = tray.get_display_filament_type(); - //auto col= tray.get_color(); - //if (col.Alpha() != 0 && col.Alpha() != 255 && col.Alpha() != 254 && m_vams_lib->m_info.material_colour != col) { - // m_vams_lib->transparent_changed = true; - //} - //m_vams_lib->m_info.material_colour = tray.get_color(); - //m_vams_lib->Refresh(); -} - std::vector AMSControl::GenerateSimulateData() { auto caninfo0_0 = Caninfo{ "0", (""), *wxRED, AMSCanType::AMS_CAN_TYPE_VIRTUAL }; auto caninfo0_1 = Caninfo{ "1", (""), *wxGREEN, AMSCanType::AMS_CAN_TYPE_VIRTUAL }; @@ -3952,6 +3861,7 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy auto left = !IsAmsInRightPanel(ams_id); auto length = -1; auto model = AMSModel::AMS_LITE; + auto in_pair = false; if (std::find(cur_left_ams.begin(), cur_left_ams.end(), ams_id) != cur_left_ams.end()) { in_same_page = true; @@ -3970,10 +3880,12 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy for (auto it : pair_id){ if (it.first == ams_id){ length = left ? 218 : 124; + in_pair = true; break; } else if (it.second == ams_id){ length = left ? 124 : 232; + in_pair = true; break; } } @@ -3996,7 +3908,12 @@ void AMSControl::SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadTy left = true; length = 50; } else { - length = left ? 110 : 82; + /*check in pair*/ + if (in_pair) { + length = left ? 110 : 232; + } else { + length = left ? 192 : 82; + } } } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index e1a86e8f4..b6202f079 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -110,8 +110,6 @@ protected: ScalableBitmap m_button_ams_setting_normal; ScalableBitmap m_button_ams_setting_hover; ScalableBitmap m_button_ams_setting_press; - Button *m_button_guide {nullptr}; - Button *m_button_retry {nullptr}; AmsHumidityTipPopup m_Humidity_tip_popup; @@ -180,7 +178,6 @@ public: void show_auto_refill(bool show); void enable_ams_setting(bool en); void show_vams_kn_value(bool show); - void update_vams_kn_value(AmsTray tray, MachineObject* obj); void post_event(wxEvent&& event); virtual bool Enable(bool enable = true);