diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1c915cf38..69f13d8b9 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -71,8 +71,9 @@ static wxColour TEXT_LIGHT_FONT_COL = wxColour(107, 107, 107); #define TASK_BUTTON_SIZE (wxSize(FromDIP(48), FromDIP(24))) #define TASK_BUTTON_SIZE2 (wxSize(-1, FromDIP(24))) #define Z_BUTTON_SIZE (wxSize(FromDIP(52), FromDIP(52))) -#define MISC_BUTTON_SIZE (wxSize(FromDIP(68), FromDIP(55))) -#define MISC_BUTTON_3FAN_SIZE (wxSize(FromDIP(45), FromDIP(55))) +#define MISC_BUTTON_PANEL_SIZE (wxSize(FromDIP(136), FromDIP(55))) +#define MISC_BUTTON_SIZE (wxSize(FromDIP(66), FromDIP(51))) +#define MISC_BUTTON_3FAN_SIZE (wxSize(FromDIP(44), FromDIP(51))) #define TEMP_CTRL_MIN_SIZE (wxSize(FromDIP(122), FromDIP(52))) #define AXIS_MIN_SIZE (wxSize(FromDIP(220), FromDIP(220))) #define EXTRUDER_IMAGE_SIZE (wxSize(FromDIP(48), FromDIP(76))) @@ -772,50 +773,84 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) line->SetLineColour(STATIC_BOX_LINE_COL); sizer->Add(line, 0, wxEXPAND | wxLEFT | wxRIGHT, 12); - line_sizer = new wxBoxSizer(wxHORIZONTAL); - m_switch_nozzle_fan = new FanSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off); + m_fan_panel = new StaticBox(parent); + m_fan_panel->SetMinSize(MISC_BUTTON_PANEL_SIZE); + m_fan_panel->SetMaxSize(MISC_BUTTON_PANEL_SIZE); + m_fan_panel->SetBackgroundColor(*wxWHITE); + m_fan_panel->SetBorderWidth(0); + m_fan_panel->SetCornerRadius(0); + + auto fan_line_sizer = new wxBoxSizer(wxHORIZONTAL); + m_switch_nozzle_fan = new FanSwitchButton(m_fan_panel, m_bitmap_fan_on, m_bitmap_fan_off); m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); m_switch_nozzle_fan->SetValue(false); m_switch_nozzle_fan->SetLabels(_L("Part"), _L("Part")); - m_switch_nozzle_fan->SetPadding(FromDIP(3)); - m_switch_nozzle_fan->SetBorderWidth(FromDIP(2)); + m_switch_nozzle_fan->SetPadding(FromDIP(1)); + m_switch_nozzle_fan->SetBorderWidth(0); + m_switch_nozzle_fan->SetCornerRadius(0); m_switch_nozzle_fan->SetFont(::Label::Body_10); m_switch_nozzle_fan->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_FAN_TEXT_COL, (int) StateColor::Normal))); - - line = new StaticLine(parent, true); - line->SetLineColour(STATIC_BOX_LINE_COL); - + m_switch_nozzle_fan->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + m_fan_panel->SetBackgroundColor(wxColour(0, 174, 66)); + }); - m_switch_printing_fan = new FanSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off); + m_switch_nozzle_fan->Bind(wxEVT_LEAVE_WINDOW, [this, parent](auto& e) { + m_fan_panel->SetBackgroundColor(parent->GetBackgroundColour()); + }); + + m_switch_printing_fan = new FanSwitchButton(m_fan_panel, m_bitmap_fan_on, m_bitmap_fan_off); m_switch_printing_fan->SetValue(false); m_switch_printing_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); m_switch_printing_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); - m_switch_printing_fan->SetPadding(FromDIP(3)); - m_switch_printing_fan->SetBorderWidth(FromDIP(2)); + m_switch_printing_fan->SetPadding(FromDIP(1)); + m_switch_printing_fan->SetBorderWidth(0); + m_switch_printing_fan->SetCornerRadius(0); m_switch_printing_fan->SetFont(::Label::Body_10); m_switch_printing_fan->SetLabels(_L("Aux"), _L("Aux")); m_switch_printing_fan->SetTextColor( StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_FAN_TEXT_COL, (int) StateColor::Normal))); - m_switch_cham_fan = new FanSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off); + m_switch_printing_fan->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + m_fan_panel->SetBackgroundColor(wxColour(0, 174, 66)); + }); + + m_switch_printing_fan->Bind(wxEVT_LEAVE_WINDOW, [this, parent](auto& e) { + m_fan_panel->SetBackgroundColor(parent->GetBackgroundColour()); + }); + + m_switch_cham_fan = new FanSwitchButton(m_fan_panel, m_bitmap_fan_on, m_bitmap_fan_off); m_switch_cham_fan->SetValue(false); m_switch_cham_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); m_switch_cham_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); - m_switch_cham_fan->SetPadding(FromDIP(3)); - m_switch_cham_fan->SetBorderWidth(FromDIP(2)); + m_switch_cham_fan->SetPadding(FromDIP(1)); + m_switch_cham_fan->SetBorderWidth(0); + m_switch_cham_fan->SetCornerRadius(0); m_switch_cham_fan->SetFont(::Label::Body_10); m_switch_cham_fan->SetLabels(_L("Cham"), _L("Cham")); m_switch_cham_fan->SetTextColor( StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int)StateColor::Disabled), std::make_pair(NORMAL_FAN_TEXT_COL, (int)StateColor::Normal))); - line_sizer->Add(m_switch_nozzle_fan, 1, wxALIGN_CENTER | wxALL, 0); - //line_sizer->Add(line, 0, wxEXPAND | wxTOP | wxBOTTOM, 4); - line_sizer->Add(m_switch_printing_fan, 1, wxALIGN_CENTER | wxALL, 0); - line_sizer->Add(m_switch_cham_fan, 1, wxALIGN_CENTER | wxALL, 0); + m_switch_cham_fan->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { + m_fan_panel->SetBackgroundColor(wxColour(0, 174, 66)); + }); + + m_switch_cham_fan->Bind(wxEVT_LEAVE_WINDOW, [this, parent](auto& e) { + m_fan_panel->SetBackgroundColor(parent->GetBackgroundColour()); + }); + + fan_line_sizer->Add(0, 0, 0, wxLEFT, FromDIP(2)); + fan_line_sizer->Add(m_switch_nozzle_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM , FromDIP(2)); + fan_line_sizer->Add(m_switch_printing_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, FromDIP(2)); + fan_line_sizer->Add(m_switch_cham_fan, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM , FromDIP(2)); + fan_line_sizer->Add(0, 0, 0, wxLEFT, FromDIP(2)); + + m_fan_panel->SetSizer(fan_line_sizer); + m_fan_panel->Layout(); + m_fan_panel->Fit(); + sizer->Add(m_fan_panel, 0, wxEXPAND, FromDIP(5)); - sizer->Add(line_sizer, 0, wxEXPAND, FromDIP(5)); return sizer; } @@ -1719,14 +1754,19 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) if (m_current_support_cham_fan != is_suppt_cham_fun) { if (is_suppt_cham_fun) { m_switch_cham_fan->Show(); + m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); + m_switch_printing_fan->SetMinSize(MISC_BUTTON_3FAN_SIZE); m_switch_printing_fan->SetMaxSize(MISC_BUTTON_3FAN_SIZE); } else { m_switch_cham_fan->Hide(); + m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_SIZE); m_switch_nozzle_fan->SetMaxSize(MISC_BUTTON_SIZE); + m_switch_printing_fan->SetMinSize(MISC_BUTTON_SIZE); m_switch_printing_fan->SetMaxSize(MISC_BUTTON_SIZE); } + m_misc_ctrl_sizer->Layout(); } diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 3f979e14d..a46f4ad27 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -151,6 +151,7 @@ protected: /* TempInput */ wxBoxSizer * m_misc_ctrl_sizer; + StaticBox* m_fan_panel; TempInput * m_tempCtrl_nozzle; int m_temp_nozzle_timeout {0}; StaticLine * m_line_nozzle; diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index 7fd408f62..b050f29b2 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -303,9 +303,9 @@ void FanOperate::doRender(wxDC& dc) //txt dc.SetFont(::Label::Body_12); dc.SetTextForeground(StateColor::darkModeColorFor(wxColour(0x898989))); - wxString text = wxString::Format("%d%%", m_current_speeds * 10); + wxString text = wxString::Format("%d%%", 10); wxSize text_size = dc.GetTextExtent(text); - dc.DrawText(text, wxPoint(left_fir + (left_fir- text_size.x) / 2, (size.y- text_size.y) / 2 + 2)); + dc.DrawText(text, wxPoint(left_fir + (left_fir- text_size.x) / 2, (size.y- text_size.y) / 2)); } void FanOperate::msw_rescale() {