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