From ff4fc92c6cdde91b2d078109be0f2b3ace2cce89 Mon Sep 17 00:00:00 2001 From: tao wang Date: Wed, 8 Jan 2025 22:10:14 +0800 Subject: [PATCH] ENH:folding filament loading area jira:[STUDIO-9598] Change-Id: If5c1bd12aa3307f0bda640361352f079a1851b91 --- resources/images/filament_load_expand.svg | 3 + resources/images/filament_load_fold.svg | 3 + src/slic3r/GUI/StatusPanel.cpp | 72 ++++++++++++++++++----- src/slic3r/GUI/StatusPanel.hpp | 5 +- 4 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 resources/images/filament_load_expand.svg create mode 100644 resources/images/filament_load_fold.svg diff --git a/resources/images/filament_load_expand.svg b/resources/images/filament_load_expand.svg new file mode 100644 index 000000000..b00a11251 --- /dev/null +++ b/resources/images/filament_load_expand.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/filament_load_fold.svg b/resources/images/filament_load_fold.svg new file mode 100644 index 000000000..e46326747 --- /dev/null +++ b/resources/images/filament_load_fold.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1ee4bf38c..77fc76eec 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1971,24 +1971,51 @@ wxBoxSizer *StatusBasePanel::create_ams_group(wxWindow *parent) wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) { auto sizer = new wxBoxSizer(wxVERTICAL); - auto sizer_box = new wxBoxSizer(wxVERTICAL); - m_filament_load_box = new StaticBox(parent); + auto sizer_scale_panel = new wxBoxSizer(wxHORIZONTAL); + m_scale_panel = new wxPanel(parent); + m_scale_panel->SetMinSize(wxSize(FromDIP(586), FromDIP(50))); + m_scale_panel->SetMaxSize(wxSize(FromDIP(586), FromDIP(50))); + m_scale_panel->SetBackgroundColour(*wxWHITE); + + auto m_title_filament_loading = new Label(m_scale_panel, _L("Filament loading...")); + m_title_filament_loading->SetBackgroundColour(*wxWHITE); + m_title_filament_loading->SetForegroundColour(wxColour(27, 136, 68)); + m_title_filament_loading->SetFont(::Label::Body_14); + + m_img_filament_loading = new wxStaticBitmap(m_scale_panel, wxID_ANY, create_scaled_bitmap("filament_load_fold", this, 24), wxDefaultPosition, wxSize(FromDIP(24), FromDIP(24)), 0); + + sizer_scale_panel->Add(0, 0, 0, wxLEFT, FromDIP(20)); + sizer_scale_panel->Add(m_title_filament_loading, 0, wxALIGN_CENTER, 0); + sizer_scale_panel->Add(m_img_filament_loading, 0, wxALIGN_CENTER, 0); + m_scale_panel->SetSizer(sizer_scale_panel); + m_scale_panel->Layout(); + m_scale_panel->Fit(); + m_scale_panel->Hide(); + + + m_title_filament_loading->Bind(wxEVT_LEFT_DOWN, &StatusBasePanel::expand_filament_loading, this); + m_scale_panel->Bind(wxEVT_LEFT_DOWN, &StatusBasePanel::expand_filament_loading, this); + + + auto sizer_box = new wxBoxSizer(wxVERTICAL); StateColor box_colour(std::pair(*wxWHITE, StateColor::Normal)); StateColor box_border_colour(std::pair(STATUS_PANEL_BG, StateColor::Normal)); + m_filament_load_box = new StaticBox(parent); m_filament_load_box->SetBackgroundColor(box_colour); m_filament_load_box->SetBorderColor(box_border_colour); m_filament_load_box->SetCornerRadius(5); m_filament_load_box->SetMinSize(wxSize(FromDIP(586), -1)); m_filament_load_box->SetMaxSize(wxSize(FromDIP(586), -1)); m_filament_load_box->SetBackgroundColour(*wxWHITE); + m_filament_load_box->SetSizer(sizer_box); m_filament_step = new FilamentLoad(m_filament_load_box, wxID_ANY); m_filament_step->SetDoubleBuffered(true); - m_filament_step->set_min_size(wxSize(wxSize(FromDIP(576), FromDIP(215)))); - m_filament_step->set_max_size(wxSize(wxSize(FromDIP(576), FromDIP(215)))); + m_filament_step->set_min_size(wxSize(wxSize(FromDIP(570), FromDIP(215)))); + m_filament_step->set_max_size(wxSize(wxSize(FromDIP(570), FromDIP(215)))); m_filament_step->SetBackgroundColour(*wxWHITE); StateColor btn_bd_white(std::pair(wxColour(255, 255, 254), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); @@ -2003,6 +2030,7 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) m_button_retry->SetTextColor(btn_text_white); m_button_retry->SetMinSize(wxSize(FromDIP(80), FromDIP(31))); m_button_retry->SetBackgroundColor(btn_bg_white); + //m_button_retry->Hide(); m_button_retry->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { BOOST_LOG_TRIVIAL(info) << "on_ams_retry"; @@ -2015,13 +2043,33 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) sizer_box->Add(m_button_retry, 0, wxLEFT, FromDIP(28)); sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); m_filament_load_box->SetBackgroundColour(*wxWHITE); - m_filament_load_box->SetSizer(sizer_box); m_filament_load_box->Layout(); m_filament_load_box->Fit(); + m_filament_load_box->Hide(); + sizer->Add(m_scale_panel, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0); sizer->Add(m_filament_load_box, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 0); return sizer; } +void StatusBasePanel::expand_filament_loading(wxMouseEvent& e) +{ + auto tag_show = false; + if (m_filament_load_box->IsShown()) { + tag_show = false; + m_img_filament_loading->SetBitmap(create_scaled_bitmap("filament_load_fold", this, 24)); + } else { + tag_show = true; + m_img_filament_loading->SetBitmap(create_scaled_bitmap("filament_load_expand", this, 24)); + } + m_filament_load_box->Show(tag_show); + ///m_button_retry->Show(tag_show); + m_filament_step->Show(tag_show); + Layout(); + Fit(); + wxGetApp().mainframe->m_monitor->get_status_panel()->Layout(); + wxGetApp().mainframe->m_monitor->Layout(); +} + void StatusBasePanel::show_ams_group(bool show) { if (m_ams_control->IsShown() != show) { @@ -2047,16 +2095,12 @@ void StatusBasePanel::show_ams_group(bool show) void StatusBasePanel::show_filament_load_group(bool show) { - if (m_filament_load_box->IsShown() != show) { - m_filament_load_box->Show(show); - m_button_retry->Show(show); - } - - if (m_filament_step->IsShown() != show) { - m_filament_step->Show(show); - } - if (m_show_filament_group != show ) { + if (!show) { + m_filament_load_box->Show(show); + m_img_filament_loading->SetBitmap(create_scaled_bitmap("filament_load_fold", this, 24)); + } + m_scale_panel->Show(show); m_show_filament_group = show; Layout(); Fit(); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index dce5d8786..3f84a5001 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -481,6 +481,8 @@ protected: StepIndicator* m_calibration_flow; wxPanel * m_machine_ctrl_panel; + wxPanel * m_scale_panel; + wxStaticBitmap* m_img_filament_loading; PrintingTaskPanel * m_project_task_panel; FilamentLoad* m_filament_step; @@ -534,7 +536,8 @@ public: wxBoxSizer *create_settings_group(wxWindow *parent); wxBoxSizer* create_filament_group(wxWindow* parent); - void show_ams_group(bool show = true); + void expand_filament_loading(wxMouseEvent &e); + void show_ams_group(bool show = true); void show_filament_load_group(bool show = true); MediaPlayCtrl* get_media_play_ctrl() {return m_media_play_ctrl;}; };