diff --git a/resources/images/filament_load_n_series.png b/resources/images/filament_load_n_series.png new file mode 100644 index 000000000..7b37e562c Binary files /dev/null and b/resources/images/filament_load_n_series.png differ diff --git a/resources/images/filament_load_o_series_left.png b/resources/images/filament_load_o_series_left.png new file mode 100644 index 000000000..7f9e1875e Binary files /dev/null and b/resources/images/filament_load_o_series_left.png differ diff --git a/resources/images/filament_load_o_series_right.png b/resources/images/filament_load_o_series_right.png new file mode 100644 index 000000000..685a100e3 Binary files /dev/null and b/resources/images/filament_load_o_series_right.png differ diff --git a/resources/images/filament_load_p_series.png b/resources/images/filament_load_p_series.png new file mode 100644 index 000000000..6dc26adda Binary files /dev/null and b/resources/images/filament_load_p_series.png differ diff --git a/resources/images/filament_load_x_series.png b/resources/images/filament_load_x_series.png new file mode 100644 index 000000000..6dc26adda Binary files /dev/null and b/resources/images/filament_load_x_series.png differ diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 2997fc0d3..769be22be 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -615,11 +615,10 @@ bool MachineObject::get_printer_is_enclosed() const return DeviceManager::get_printer_is_enclosed(printer_type); } -bool MachineObject::is_series_o() const -{ - const std::string& series = DeviceManager::get_printer_series(printer_type); - return (series == "series_o"); -} +bool MachineObject::is_series_n() const { return DeviceManager::get_printer_series(printer_type) == "series_n"; }; +bool MachineObject::is_series_p() const { return DeviceManager::get_printer_series(printer_type) == "series_p1p"; }; +bool MachineObject::is_series_x() const { return DeviceManager::get_printer_series(printer_type) == "series_x1"; }; +bool MachineObject::is_series_o() const { return DeviceManager::get_printer_series(printer_type) == "series_o"; }; void MachineObject::reload_printer_settings() { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 3ac8c4436..e4e5a5f8e 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -625,6 +625,9 @@ public: bool get_printer_is_enclosed() const; // check printer device series + bool is_series_n() const; + bool is_series_p() const; + bool is_series_x() const; bool is_series_o() const; void reload_printer_settings(); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 838dc3f19..f3cc3f4bb 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1807,10 +1807,18 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) 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(570), FromDIP(215)))); - m_filament_step->set_max_size(wxSize(wxSize(FromDIP(570), FromDIP(215)))); + m_filament_step->set_min_size(wxSize(wxSize(FromDIP(300), FromDIP(215)))); + m_filament_step->set_max_size(wxSize(wxSize(FromDIP(300), FromDIP(215)))); m_filament_step->SetBackgroundColour(*wxWHITE); + m_filament_load_img = new wxStaticBitmap(m_filament_load_box, wxID_ANY, wxNullBitmap); + m_filament_load_img->SetBackgroundColour(*wxWHITE); + + wxBoxSizer *steps_sizer = new wxBoxSizer(wxHORIZONTAL); + steps_sizer->Add(m_filament_step, 0, wxALIGN_LEFT, FromDIP(20)); + steps_sizer->Add(m_filament_load_img, 0, wxALIGN_TOP, FromDIP(30)); + steps_sizer->AddSpacer(FromDIP(50)); + StateColor btn_bd_white(std::pair(wxColour(255, 255, 254), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); StateColor btn_text_white(std::pair(wxColour(255, 255, 254), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); StateColor btn_bg_white(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Pressed), @@ -1831,7 +1839,7 @@ wxBoxSizer* StatusBasePanel::create_filament_group(wxWindow* parent) }); - sizer_box->Add(m_filament_step, 0, wxALIGN_CENTER|wxTOP, FromDIP(10)); + sizer_box->Add(steps_sizer, 0, wxALIGN_CENTER | wxTOP, FromDIP(10)); sizer_box->Add(0, 0, 0, wxTOP, FromDIP(5)); sizer_box->Add(m_button_retry, 0, wxLEFT, FromDIP(28)); sizer_box->Add(0, 0, 0, wxTOP, FromDIP(10)); @@ -1854,6 +1862,35 @@ void StatusBasePanel::expand_filament_loading(wxMouseEvent& e) tag_show = true; m_img_filament_loading->SetBitmap(create_scaled_bitmap("filament_load_expand", this, 24)); } + + if (obj) + { + static int load_img_size = 215; + if (obj->is_series_n()) + { + m_filament_load_img->SetBitmap(create_scaled_bitmap("filament_load_n_series", this, load_img_size)); + } + else if (obj->is_series_x()) + { + m_filament_load_img->SetBitmap(create_scaled_bitmap("filament_load_x_series", this, load_img_size)); + } + else if (obj->is_series_p()) + { + m_filament_load_img->SetBitmap(create_scaled_bitmap("filament_load_p_series", this, load_img_size)); + } + else if (obj->is_series_o()) + { + if (obj->get_current_extruder().id == MAIN_NOZZLE_ID) + { + m_filament_load_img->SetBitmap(create_scaled_bitmap("filament_load_o_series_right", this, load_img_size)); + } + else if (obj->get_current_extruder().id == DEPUTY_NOZZLE_ID) + { + m_filament_load_img->SetBitmap(create_scaled_bitmap("filament_load_o_series_left", this, load_img_size)); + } + } + } + m_filament_load_box->Show(tag_show); ///m_button_retry->Show(tag_show); m_filament_step->Show(tag_show); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index ee9a20ea2..9b0d00834 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -491,6 +491,8 @@ protected: PrintingTaskPanel * m_project_task_panel; FilamentLoad* m_filament_step; + wxStaticBitmap *m_filament_load_img; + Button *m_button_retry {nullptr}; StaticBox* m_filament_load_box;