diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 6bc464d1e..0ae53b14a 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -564,10 +564,11 @@ wxBoxSizer *StatusBasePanel::create_temp_control(wxWindow *parent) wxWindowID nozzle_id = wxWindow::NewControlId(); m_tempCtrl_nozzle = new TempInput(parent, nozzle_id, TEMP_BLANK_STR, TEMP_BLANK_STR, wxString("monitor_nozzle_temp"), wxString("monitor_nozzle_temp_active"), - wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER | wxBORDER_NONE); + wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER); m_tempCtrl_nozzle->SetMinSize(TEMP_CTRL_MIN_SIZE); m_tempCtrl_nozzle->SetMinTemp(nozzle_temp_range[0]); m_tempCtrl_nozzle->SetMaxTemp(nozzle_temp_range[1]); + m_tempCtrl_nozzle->SetBorderWidth(FromDIP(2)); m_tempCtrl_nozzle->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_TEXT_COL, (int) StateColor::Normal))); m_tempCtrl_nozzle->SetBorderColor(StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Focused), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal))); @@ -581,10 +582,11 @@ wxBoxSizer *StatusBasePanel::create_temp_control(wxWindow *parent) wxWindowID bed_id = wxWindow::NewControlId(); m_tempCtrl_bed = new TempInput(parent, bed_id, TEMP_BLANK_STR, TEMP_BLANK_STR, wxString("monitor_bed_temp"), wxString("monitor_bed_temp_active"), wxDefaultPosition, - wxDefaultSize, wxALIGN_CENTER | wxBORDER_NONE); + wxDefaultSize, wxALIGN_CENTER); m_tempCtrl_bed->SetMinTemp(bed_temp_range[0]); m_tempCtrl_bed->SetMaxTemp(bed_temp_range[1]); m_tempCtrl_bed->SetMinSize(TEMP_CTRL_MIN_SIZE); + m_tempCtrl_bed->SetBorderWidth(FromDIP(2)); m_tempCtrl_bed->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_TEXT_COL, (int) StateColor::Normal))); m_tempCtrl_bed->SetBorderColor(StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Focused), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal))); @@ -596,9 +598,10 @@ wxBoxSizer *StatusBasePanel::create_temp_control(wxWindow *parent) wxWindowID frame_id = wxWindow::NewControlId(); m_tempCtrl_frame = new TempInput(parent, frame_id, TEMP_BLANK_STR, TEMP_BLANK_STR, wxString("monitor_frame_temp"), wxString("monitor_frame_temp"), wxDefaultPosition, - wxDefaultSize, wxALIGN_CENTER | wxBORDER_NONE); + wxDefaultSize, wxALIGN_CENTER); m_tempCtrl_frame->SetReadOnly(true); m_tempCtrl_frame->SetMinSize(TEMP_CTRL_MIN_SIZE); + m_tempCtrl_frame->SetBorderWidth(FromDIP(2)); m_tempCtrl_frame->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_TEXT_COL, (int) StateColor::Normal))); m_tempCtrl_frame->SetBorderColor(StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Focused), std::make_pair(BUTTON_HOVER_COL, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal))); @@ -620,10 +623,11 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) wxBoxSizer *line_sizer = new wxBoxSizer(wxHORIZONTAL); /* create speed control */ - m_switch_speed = new ImageSwitchButton(parent, m_bitmap_speed_active, m_bitmap_speed, wxBORDER_NONE); + m_switch_speed = new ImageSwitchButton(parent, m_bitmap_speed_active, m_bitmap_speed); m_switch_speed->SetLabels(_L("100%"), _L("100%")); m_switch_speed->SetMinSize(MISC_BUTTON_SIZE); m_switch_speed->SetPadding(FromDIP(3)); + m_switch_speed->SetBorderWidth(FromDIP(2)); m_switch_speed->SetFont(Label::Head_13); m_switch_speed->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_TEXT_COL, (int) StateColor::Normal))); m_switch_speed->SetValue(false); @@ -635,10 +639,11 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) line_sizer->Add(line, 0, wxEXPAND | wxTOP | wxBOTTOM, 4); /* create lamp control */ - m_switch_lamp = new ImageSwitchButton(parent, m_bitmap_lamp_on, m_bitmap_lamp_off, wxBORDER_NONE); + m_switch_lamp = new ImageSwitchButton(parent, m_bitmap_lamp_on, m_bitmap_lamp_off); m_switch_lamp->SetLabels(_L("Lamp"), _L("Lamp")); m_switch_lamp->SetMinSize(MISC_BUTTON_SIZE); m_switch_lamp->SetPadding(FromDIP(3)); + m_switch_lamp->SetBorderWidth(FromDIP(2)); m_switch_lamp->SetFont(Label::Head_13); m_switch_lamp->SetTextColor(StateColor(std::make_pair(DISCONNECT_TEXT_COL, (int) StateColor::Disabled), std::make_pair(NORMAL_TEXT_COL, (int) StateColor::Normal))); line_sizer->Add(m_switch_lamp, 1, wxALIGN_CENTER | wxALL, 0); @@ -649,11 +654,12 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) sizer->Add(line, 0, wxEXPAND | wxLEFT | wxRIGHT, 12); line_sizer = new wxBoxSizer(wxHORIZONTAL); - m_switch_nozzle_fan = new ImageSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off, wxBORDER_NONE); + m_switch_nozzle_fan = new ImageSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off); m_switch_nozzle_fan->SetMinSize(MISC_BUTTON_SIZE); m_switch_nozzle_fan->SetValue(false); m_switch_nozzle_fan->SetLabels(_L("Part Cooling"), _L("Part Cooling")); m_switch_nozzle_fan->SetPadding(FromDIP(3)); + m_switch_nozzle_fan->SetBorderWidth(FromDIP(2)); m_switch_nozzle_fan->SetFont(SWITCH_FONT); 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))); @@ -662,10 +668,11 @@ wxBoxSizer *StatusBasePanel::create_misc_control(wxWindow *parent) line->SetLineColour(STATIC_BOX_LINE_COL); line_sizer->Add(line, 0, wxEXPAND | wxTOP | wxBOTTOM, 4); - m_switch_printing_fan = new ImageSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off, wxBORDER_NONE); + m_switch_printing_fan = new ImageSwitchButton(parent, m_bitmap_fan_on, m_bitmap_fan_off); m_switch_printing_fan->SetValue(false); m_switch_printing_fan->SetMinSize(MISC_BUTTON_SIZE); m_switch_printing_fan->SetPadding(FromDIP(3)); + m_switch_printing_fan->SetBorderWidth(FromDIP(2)); m_switch_printing_fan->SetFont(SWITCH_FONT); m_switch_printing_fan->SetLabels(_L("Aux Cooling"), _L("Aux Cooling")); m_switch_printing_fan->SetTextColor( diff --git a/src/slic3r/GUI/Widgets/AxisCtrlButton.cpp b/src/slic3r/GUI/Widgets/AxisCtrlButton.cpp index 58fbe736f..fbfe7e6a7 100644 --- a/src/slic3r/GUI/Widgets/AxisCtrlButton.cpp +++ b/src/slic3r/GUI/Widgets/AxisCtrlButton.cpp @@ -3,7 +3,7 @@ #include -static const wxColour bd = wxColour(0x00AE42); +static const wxColour bd = wxColour(0, 174, 66); static const wxColour BUTTON_BG_COL = wxColour(238, 238, 238); static const wxColour BUTTON_IN_BG_COL = wxColour(206, 206, 206); static const wxColour blank_bg = wxColour(0xFFFFFF); @@ -21,7 +21,7 @@ END_EVENT_TABLE() #define OUTER_SIZE FromDIP(105) #define INNER_SIZE FromDIP(58) #define HOME_SIZE FromDIP(23) -#define BLANK_SIZE FromDIP(23) +#define BLANK_SIZE FromDIP(24) #define GAP_SIZE FromDIP(4) AxisCtrlButton::AxisCtrlButton(wxWindow *parent, ScalableBitmap &icon, long stlye) diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp index 8eb32aa8d..af8c015fa 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.cpp @@ -20,20 +20,18 @@ static const wxColour DEFAULT_PRESS_COL = wxColour(238, 238, 238); ImageSwitchButton::ImageSwitchButton(wxWindow *parent, ScalableBitmap &img_on, ScalableBitmap &img_off, long style) : text_color(std::make_pair(0x6B6B6B, (int) StateColor::Disabled), std::make_pair(*wxBLACK, (int) StateColor::Normal)) - , state_handler(this) { + radius = 0; m_padding = 0; m_on = img_on; m_off = img_off; - bg_color = StateColor(std::make_pair(DEFAULT_PRESS_COL, (int) StateColor::Pressed), - std::make_pair(*wxWHITE, (int) StateColor::Normal)); - border_color = StateColor(std::make_pair(DEFAULT_HOVER_COL, (int) StateColor::Hovered)); + background_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(DEFAULT_PRESS_COL, (int) StateColor::Pressed), + std::make_pair(*wxWHITE, (int) StateColor::Normal)); + border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(DEFAULT_HOVER_COL, (int) StateColor::Focused), + std::make_pair(DEFAULT_HOVER_COL, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal)); StaticBox::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); - state_handler.attach({&bg_color}); - state_handler.attach({&border_color}); - state_handler.update_binds(); messureSize(); Refresh(); } @@ -64,19 +62,6 @@ void ImageSwitchButton::SetTextColor(StateColor const &color) Refresh(); } -void ImageSwitchButton::SetBorderColor(StateColor const &color) -{ - border_color = color; - messureSize(); - Refresh(); -} - -void ImageSwitchButton::SetBgColor(StateColor const &color) { - bg_color = color; - messureSize(); - Refresh(); -} - void ImageSwitchButton::SetValue(bool value) { m_on_off = value; @@ -110,16 +95,6 @@ void ImageSwitchButton::render(wxDC& dc) int states = state_handler.states(); wxSize size = GetSize(); - if (pressedDown) { - dc.SetBrush(bg_color.colorForStates(StateColor::Pressed)); - dc.DrawRectangle(wxRect(0, 0, size.x, size.y)); - } - - if (hover) { - dc.SetPen(border_color.colorForStates(StateColor::Hovered)); - dc.DrawRectangle(wxRect(0, 0, size.x, size.y)); - } - wxSize szIcon; wxSize szContent = textSize; ScalableBitmap &icon = GetValue() ? m_on : m_off; diff --git a/src/slic3r/GUI/Widgets/ImageSwitchButton.hpp b/src/slic3r/GUI/Widgets/ImageSwitchButton.hpp index e28f13e13..4cf12abd7 100644 --- a/src/slic3r/GUI/Widgets/ImageSwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/ImageSwitchButton.hpp @@ -17,8 +17,6 @@ public: void SetLabels(wxString const & lbl_on, wxString const & lbl_off); void SetImages(ScalableBitmap &img_on, ScalableBitmap &img_off); void SetTextColor(StateColor const &color); - void SetBorderColor(StateColor const &color); - void SetBgColor(StateColor const &color); void SetValue(bool value); void SetPadding(int padding); @@ -50,9 +48,6 @@ private: wxString labels[2]; StateColor text_color; - StateColor bg_color; - StateColor border_color; - StateHandler state_handler; }; #endif // !slic3r_GUI_SwitchButton_hpp_ diff --git a/src/slic3r/GUI/Widgets/TempInput.cpp b/src/slic3r/GUI/Widgets/TempInput.cpp index 02602ada5..496249d92 100644 --- a/src/slic3r/GUI/Widgets/TempInput.cpp +++ b/src/slic3r/GUI/Widgets/TempInput.cpp @@ -19,18 +19,14 @@ END_EVENT_TABLE() TempInput::TempInput() - : state_handler(this) - , border_color(std::make_pair(*wxWHITE, (int) StateColor::Disabled), - std::make_pair(0x00AE42, (int) StateColor::Focused), - std::make_pair(0x00AE42, (int) StateColor::Hovered), - std::make_pair(*wxWHITE, (int) StateColor::Normal)) - , label_color(std::make_pair(wxColour(0xAC,0xAC,0xAC), (int) StateColor::Disabled),std::make_pair(0x323A3D, (int) StateColor::Normal)) + : label_color(std::make_pair(wxColour(0xAC,0xAC,0xAC), (int) StateColor::Disabled),std::make_pair(0x323A3D, (int) StateColor::Normal)) , text_color(std::make_pair(wxColour(0xAC,0xAC,0xAC), (int) StateColor::Disabled), std::make_pair(0x6B6B6B, (int) StateColor::Normal)) - , background_color(std::make_pair(*wxWHITE, (int) StateColor::Disabled), - std::make_pair(*wxWHITE, (int) StateColor::Normal)) { hover = false; radius = 0; + border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused), std::make_pair(0x00AE42, (int) StateColor::Hovered), + std::make_pair(*wxWHITE, (int) StateColor::Normal)); + background_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(*wxWHITE, (int) StateColor::Normal)); SetFont(Label::Body_12); } @@ -44,16 +40,17 @@ TempInput::TempInput(wxWindow *parent, int type, wxString text, wxString label, void TempInput::Create(wxWindow *parent, wxString text, wxString label, wxString normal_icon, wxString actice_icon, const wxPoint &pos, const wxSize &size, long style) { - wxWindow::Create(parent, wxID_ANY, pos, size, style); + StaticBox::Create(parent, wxID_ANY, pos, size, style); wxWindow::SetLabel(label); style &= ~wxALIGN_CENTER_HORIZONTAL; - state_handler.attach({&border_color, &text_color, &background_color}); + state_handler.attach({&label_color, &text_color}); state_handler.update_binds(); - text_ctrl = new wxTextCtrl(this, wxID_ANY, text, {5, 5}, wxDefaultSize, wxTE_PROCESS_ENTER | wxBORDER_NONE, wxTextValidator(wxFILTER_NUMERIC), wxTextCtrlNameStr); text_ctrl->SetMaxLength(3); + state_handler.attach_child(text_ctrl); text_ctrl->Bind(wxEVT_SET_FOCUS, [this](auto &e) { + if (m_read_only) return; e.SetId(GetId()); ProcessEventLocally(e); @@ -65,15 +62,6 @@ void TempInput::Create(wxWindow *parent, wxString text, wxString label, wxString if (wdialog != nullptr) { wdialog->Dismiss(); } }); - text_ctrl->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { - if (m_read_only) {SetCursor(wxCURSOR_ARROW);} - e.SetId(GetId()); - ProcessEventLocally(e); - }); - text_ctrl->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { - e.SetId(GetId()); - ProcessEventLocally(e); - }); text_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto &e) { OnEdit(); e.SetId(GetId()); @@ -271,12 +259,6 @@ void TempInput::SetMaxTemp(int temp) { max_temp = temp; } void TempInput::SetMinTemp(int temp) { min_temp = temp; } -void TempInput::SetCornerRadius(double radius) -{ - this->radius = radius; - Refresh(); -} - void TempInput::SetLabel(const wxString &label) { wxWindow::SetLabel(label); @@ -284,12 +266,6 @@ void TempInput::SetLabel(const wxString &label) Refresh(); } -void TempInput::SetBorderColor(StateColor const &color) -{ - border_color = color; - state_handler.update_binds(); -} - void TempInput::SetTextColor(StateColor const &color) { text_color = color; @@ -302,12 +278,6 @@ void TempInput::SetLabelColor(StateColor const &color) state_handler.update_binds(); } -void TempInput::SetBackgroundColor(StateColor const &color) -{ - background_color = color; - state_handler.update_binds(); -} - void TempInput::Rescale() { if (this->normal_icon.bmp().IsOk()) this->normal_icon.msw_rescale(); @@ -393,18 +363,18 @@ void TempInput::paintEvent(wxPaintEvent &evt) */ void TempInput::render(wxDC &dc) { + StaticBox::render(dc); int states = state_handler.states(); wxSize size = GetSize(); bool align_right = GetWindowStyle() & wxRIGHT; if (warning_mode) { - dc.SetPen(wxPen(wxColour(255, 111, 0))); + border_color = wxColour(255, 111, 0); } else { - dc.SetPen(wxPen(border_color.colorForStates(states))); + border_color = StateColor(std::make_pair(*wxWHITE, (int) StateColor::Disabled), std::make_pair(0x00AE42, (int) StateColor::Focused), + std::make_pair(0x00AE42, (int) StateColor::Hovered), std::make_pair(*wxWHITE, (int) StateColor::Normal)); } - dc.SetBrush(wxBrush(background_color.colorForStates(states))); - dc.DrawRoundedRectangle(0, 0, size.x, size.y, radius); dc.SetBrush(*wxTRANSPARENT_BRUSH); // start draw wxPoint pt = {padding_left, 0}; diff --git a/src/slic3r/GUI/Widgets/TempInput.hpp b/src/slic3r/GUI/Widgets/TempInput.hpp index 1d1484a3f..7829b1082 100644 --- a/src/slic3r/GUI/Widgets/TempInput.hpp +++ b/src/slic3r/GUI/Widgets/TempInput.hpp @@ -1,16 +1,15 @@ #ifndef slic3r_GUI_TempInput_hpp_ #define slic3r_GUI_TempInput_hpp_ -#include #include "../wxExtensions.hpp" -#include "StateHandler.hpp" +#include +#include "StaticBox.hpp" wxDECLARE_EVENT(wxCUSTOMEVT_SET_TEMP_FINISH, wxCommandEvent); -class TempInput : public wxWindow +class TempInput : public wxNavigationEnabled { bool hover; - double radius; bool m_read_only{false}; wxSize labelSize; @@ -18,11 +17,8 @@ class TempInput : public wxWindow ScalableBitmap actice_icon; ScalableBitmap degree_icon; - StateHandler state_handler; StateColor label_color; StateColor text_color; - StateColor border_color; - StateColor background_color; wxTextCtrl * text_ctrl; wxStaticText *warning_text; @@ -93,18 +89,12 @@ public: wxString GetTagTemp() { return text_ctrl->GetValue(); } wxString GetCurrTemp() { return GetLabel(); } - void SetCornerRadius(double radius); - void SetLabel(const wxString &label); - void SetBorderColor(StateColor const &color); - void SetTextColor(StateColor const &color); void SetLabelColor(StateColor const &color); - void SetBackgroundColor(StateColor const &color); - virtual void Rescale(); virtual bool Enable(bool enable = true) override;