diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 1f38ed2a9..c9346464b 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -5033,6 +5033,15 @@ void SendModeSwitchButton::on_left_down(wxMouseEvent &evt) setSelected(!is_selected); } +void SendModeSwitchButton::msw_rescale() +{ + m_img_selected.msw_rescale(); + m_img_unselected.msw_rescale(); + m_img_selected_tag.msw_rescale(); + m_img_unselected_tag.msw_rescale(); + Refresh(); +} + void SendModeSwitchButton::setSelected(bool selected) { if (is_selected != selected) diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 7f2e92558..6eed6fe9e 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -257,12 +257,19 @@ class SendModeSwitchButton : public wxPanel public: SendModeSwitchButton(wxWindow *parent, wxString mode, bool sel); ~SendModeSwitchButton(){}; - void OnPaint(wxPaintEvent &event); - void render(wxDC &dc); - void on_left_down(wxMouseEvent &evt); - void doRender(wxDC &dc); + +public: + void msw_rescale(); void setSelected(bool selected); bool isSelected(){return is_selected;}; + +private: + void OnPaint(wxPaintEvent& event); + void render(wxDC& dc); + void on_left_down(wxMouseEvent& evt); + void doRender(wxDC& dc); + +private: bool is_selected {false}; ScalableBitmap m_img_selected; ScalableBitmap m_img_unselected; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 65b1ab624..72a8cf0b9 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3105,7 +3105,7 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) if (m_fan_panel->IsShown()) { m_fan_panel->Hide(); } - if (m_fan_control_popup && m_fan_control_popup->Show()) + if (m_fan_control_popup && m_fan_control_popup->IsShown()) m_fan_control_popup->Hide(); } @@ -5179,6 +5179,10 @@ void StatusPanel::msw_rescale() m_switch_fan->SetImages(m_bitmap_fan_on, m_bitmap_fan_off); m_switch_fan->Rescale(); + if (m_fan_control_popup) + { + m_fan_control_popup->msw_rescale(); + } //m_switch_fan->SetImages(m_bitmap_fan_on, m_bitmap_fan_off); //m_switch_fan->Rescale(); diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index 356e4dba6..808db8c7c 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -329,6 +329,9 @@ void FanOperate::doRender(wxDC& dc) } void FanOperate::msw_rescale() { + m_bitmap_add.msw_rescale(); + m_bitmap_decrease.msw_rescale(); + Refresh(); } static void nop_deleter_fan_control(FanControlNew* ){} @@ -343,7 +346,7 @@ FanControlNew::FanControlNew(wxWindow *parent, const AirDuctData &fan_data, int { SetMaxSize(wxSize(FromDIP(180), FromDIP(80))); SetMinSize(wxSize(FromDIP(180), FromDIP(80))); - auto m_bitmap_fan = new ScalableBitmap(this, "fan_icon", 20); + m_bitmap_fan = new ScalableBitmap(this, "fan_icon", 20); m_bitmap_toggle_off = new ScalableBitmap(this, "toggle_off", 16); m_bitmap_toggle_on = new ScalableBitmap(this, "toggle_on", 16); @@ -357,7 +360,7 @@ FanControlNew::FanControlNew(wxWindow *parent, const AirDuctData &fan_data, int wxBoxSizer* sizer_control_top = new wxBoxSizer(wxHORIZONTAL); m_sizer_control_bottom = new wxBoxSizer(wxVERTICAL); - auto m_static_bitmap_fan = new wxStaticBitmap(this, wxID_ANY, m_bitmap_fan->bmp(), wxDefaultPosition, wxDefaultSize); + m_static_bitmap_fan = new wxStaticBitmap(this, wxID_ANY, m_bitmap_fan->bmp(), wxDefaultPosition, wxDefaultSize); m_static_name = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END | wxALIGN_CENTER_HORIZONTAL); m_static_name->SetBackgroundColour(wxColour(248, 248, 248)); @@ -432,6 +435,28 @@ void FanControlNew::on_left_down(wxMouseEvent& evt) m_fan_operate->on_left_down(evt); } +void FanControlNew::msw_rescale() +{ + m_bitmap_fan->msw_rescale(); + m_static_bitmap_fan->SetBitmap(m_bitmap_fan->bmp()); + + m_bitmap_toggle_off->msw_rescale(); + m_bitmap_toggle_on->msw_rescale(); + if (m_switch_fan) + { + m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp()); + } + else + { + m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp()); + } + + m_fan_operate->msw_rescale(); + + Layout(); + Refresh(); +} + void FanControlNew::command_control_fan() { if (m_current_speed < 0 || m_current_speed > 10) { return; } @@ -892,6 +917,19 @@ void FanControlPopupNew::command_control_air_duct(int mode_id) } } +void FanControlPopupNew::msw_rescale() +{ + for (auto btn : m_mode_switch_btn_list) + { + btn->msw_rescale(); + } + + for (auto fan : m_fan_control_list) + { + fan.second->msw_rescale(); + } +} + void FanControlPopupNew::paintEvent(wxPaintEvent& evt) { wxPaintDC dc(this); diff --git a/src/slic3r/GUI/Widgets/FanControl.hpp b/src/slic3r/GUI/Widgets/FanControl.hpp index 1a8744204..6e9904004 100644 --- a/src/slic3r/GUI/Widgets/FanControl.hpp +++ b/src/slic3r/GUI/Widgets/FanControl.hpp @@ -133,6 +133,7 @@ protected: wxStaticText* m_static_name{ nullptr }; int m_fan_id; + ScalableBitmap* m_bitmap_fan{ nullptr }; ScalableBitmap* m_bitmap_toggle_off{ nullptr }; ScalableBitmap* m_bitmap_toggle_on{ nullptr }; @@ -154,6 +155,7 @@ protected: std::shared_ptr token; public: + wxStaticBitmap* m_static_bitmap_fan { nullptr}; wxStaticBitmap* m_switch_button{ nullptr }; void update_obj_state(bool stat) { m_update_already = stat; }; void update_fan_data(const AirDuctData& data) { m_fan_data = data; }; @@ -171,6 +173,8 @@ public: void update_mode(); void on_left_down(wxMouseEvent& event); void on_mode_change(wxMouseEvent& event); + + void msw_rescale(); }; @@ -208,9 +212,6 @@ private: std::map m_duct_ctrl; - std::map m_duct_fans_list; - std::map m_duct_doors_list; - Button* m_button_refresh; wxStaticText* m_cooling_text; MachineObject *m_obj{nullptr}; @@ -248,6 +249,8 @@ public: void post_event(int fan_type, wxString speed); void on_show(wxShowEvent& evt); void command_control_air_duct(int mode_id); + + void msw_rescale(); }; wxDECLARE_EVENT(EVT_FAN_SWITCH_ON, wxCommandEvent); wxDECLARE_EVENT(EVT_FAN_SWITCH_OFF, wxCommandEvent);