diff --git a/resources/images/ams_setting_hover.svg b/resources/images/ams_setting_hover.svg new file mode 100644 index 0000000000..25042562ee --- /dev/null +++ b/resources/images/ams_setting_hover.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/images/ams_setting_normal.svg b/resources/images/ams_setting_normal.svg new file mode 100644 index 0000000000..41836434ca --- /dev/null +++ b/resources/images/ams_setting_normal.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/ams_setting_press.svg b/resources/images/ams_setting_press.svg new file mode 100644 index 0000000000..9e1144b46e --- /dev/null +++ b/resources/images/ams_setting_press.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index dea23ea1f9..ff448e7d3d 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1104,6 +1104,8 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co Bind(EVT_AMS_REFRESH_RFID, &StatusPanel::on_ams_refresh_rfid, this); Bind(EVT_AMS_ON_SELECTED, &StatusPanel::on_ams_selected, this); Bind(EVT_AMS_ON_FILAMENT_EDIT, &StatusPanel::on_filament_edit, this); + Bind(EVT_AMS_GUIDE_WIKI, &StatusPanel::on_ams_guide, this); + Bind(EVT_AMS_RETRY, &StatusPanel::on_ams_retry, this); m_switch_speed->Connect(wxEVT_LEFT_DOWN, wxCommandEventHandler(StatusPanel::on_switch_speed), NULL, this); m_calibration_btn->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(StatusPanel::on_start_calibration), NULL, this); @@ -2266,6 +2268,16 @@ void StatusPanel::on_ams_selected(wxCommandEvent &event) } } +void StatusPanel::on_ams_guide(wxCommandEvent& event) +{ + ;// todo +} + +void StatusPanel::on_ams_retry(wxCommandEvent& event) +{ + ;// todo +} + void StatusPanel::on_bed_temp_kill_focus(wxFocusEvent &event) { event.Skip(); diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index a6a0890c65..09228601c7 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -306,6 +306,8 @@ protected: void on_filament_edit(wxCommandEvent &event); void on_ams_refresh_rfid(wxCommandEvent &event); void on_ams_selected(wxCommandEvent &event); + void on_ams_guide(wxCommandEvent &event); + void on_ams_retry(wxCommandEvent &event); void on_switch_speed(wxCommandEvent &event); void on_lamp_switch(wxCommandEvent &event); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 89a70ebe73..e0f45aa5e2 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -31,6 +31,8 @@ wxDEFINE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent); wxDEFINE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent); wxDEFINE_EVENT(EVT_AMS_CLIBRATION_AGAIN, wxCommandEvent); wxDEFINE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent); +wxDEFINE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent); +wxDEFINE_EVENT(EVT_AMS_RETRY, wxCommandEvent); inline int hex_digit_to_int(const char c) { @@ -1467,14 +1469,26 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_right->AddPage(m_filament_unload_step, wxEmptyString, false); wxBoxSizer *m_sizer_right_bottom = new wxBoxSizer(wxHORIZONTAL); - m_sizer_right_bottom->Add(0, 0, 1, wxEXPAND, FromDIP(5)); - m_button_ams_setting = new Button(m_amswin, _L("AMS Settings")); - m_button_ams_setting->SetBackgroundColor(btn_bg_white); - m_button_ams_setting->SetBorderColor(btn_bd_white); - m_button_ams_setting->SetFont(Label::Body_13); - //m_button_ams_setting->Hide(); - m_sizer_right_bottom->Add(m_button_ams_setting, 0, wxTOP, FromDIP(20)); - m_sizer_right->Add(m_sizer_right_bottom, 0, wxEXPAND, FromDIP(5)); + m_button_ams_setting = new Button(m_amswin, "", "ams_setting_normal", wxBORDER_NONE, FromDIP(24)); + m_button_ams_setting->SetPaddingSize(wxSize(0, 0)); + m_button_ams_setting->SetBackgroundColor(m_amswin->GetBackgroundColour()); + + m_button_guide = new Button(m_amswin, _L("Guide")); + m_button_guide->SetFont(Label::Body_13); + m_button_guide->SetCornerRadius(FromDIP(12)); + m_button_guide->SetMinSize(wxSize(-1, FromDIP(24))); + m_button_guide->SetBackgroundColor(btn_bg_white); + + m_button_retry = new Button(m_amswin, _L("Retry")); + m_button_retry->SetFont(Label::Body_13); + m_button_retry->SetCornerRadius(FromDIP(12)); + m_button_retry->SetMinSize(wxSize(-1, FromDIP(24))); + m_button_retry->SetBackgroundColor(btn_bg_white); + + m_sizer_right_bottom->Add(m_button_ams_setting, 0); + m_sizer_right_bottom->Add(m_button_guide, 0, wxLEFT, FromDIP(10)); + m_sizer_right_bottom->Add(m_button_retry, 0, wxLEFT, FromDIP(10)); + m_sizer_right->Add(m_sizer_right_bottom, 0, wxEXPAND | wxTOP, FromDIP(20)); m_sizer_bottom->Add(m_sizer_right, 0, wxEXPAND, FromDIP(5)); m_sizer_body->Add(m_simplebook_amsitems, 0, wxEXPAND, 0); @@ -1485,7 +1499,6 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_amswin->SetSizer(m_sizer_body); m_amswin->Layout(); m_amswin->Fit(); - //Thaw(); SetSize(m_amswin->GetSize()); @@ -1566,6 +1579,25 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_button_extruder_feed->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AMSControl::on_filament_load), NULL, this); m_button_extruder_back->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AMSControl::on_filament_unload), NULL, this); m_button_ams_setting->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AMSControl::on_ams_setting_click), NULL, this); + m_button_ams_setting->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent& e) { + m_button_ams_setting->SetIcon("ams_setting_hover"); + e.Skip(); + }); + m_button_ams_setting->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& e) { + m_button_ams_setting->SetIcon("ams_setting_press"); + e.Skip(); + }); + m_button_ams_setting->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent&e) { + m_button_ams_setting->SetIcon("ams_setting_normal"); + e.Skip(); + }); + + m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + post_event(wxCommandEvent(EVT_AMS_GUIDE_WIKI)); + }); + m_button_retry->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { + post_event(wxCommandEvent(EVT_AMS_RETRY)); + }); CreateAms(); SetSelection(0); @@ -1578,8 +1610,6 @@ void AMSControl::init_scaled_buttons() m_button_extruder_feed->SetCornerRadius(FromDIP(12)); m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24))); m_button_extruder_back->SetCornerRadius(FromDIP(12)); - m_button_ams_setting->SetMinSize(wxSize(-1, FromDIP(33))); - m_button_ams_setting->SetCornerRadius(FromDIP(12)); } std::string AMSControl::GetCurentAms() { return m_current_ams; } @@ -1709,7 +1739,9 @@ void AMSControl::msw_rescale() m_extruder->msw_rescale(); m_button_extruder_back->SetMinSize(wxSize(-1, FromDIP(24))); m_button_extruder_feed->SetMinSize(wxSize(-1, FromDIP(24))); - m_button_ams_setting->SetMinSize(wxSize(-1, FromDIP(33))); + m_button_ams_setting->SetMinSize(wxSize(FromDIP(25), FromDIP(24))); + m_button_guide->SetMinSize(wxSize(-1, FromDIP(24))); + m_button_retry->SetMinSize(wxSize(-1, FromDIP(24))); for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 45f4670c96..5694b076dc 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -461,7 +461,9 @@ protected: Button *m_button_extruder_feed = {nullptr}; Button *m_button_extruder_back = {nullptr}; - Button *m_button_ams_setting = {nullptr}; + Button* m_button_ams_setting = {nullptr}; + Button *m_button_guide = {nullptr}; + Button *m_button_retry = {nullptr}; wxHyperlinkCtrl *m_hyperlink = {nullptr}; @@ -518,6 +520,8 @@ wxDECLARE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_CLIBRATION_AGAIN, wxCommandEvent); wxDECLARE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent); +wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent); +wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent); }} // namespace Slic3r::GUI