diff --git a/src/slic3r/GUI/AMSSetting.cpp b/src/slic3r/GUI/AMSSetting.cpp index 28f7624e6..8048b92cb 100644 --- a/src/slic3r/GUI/AMSSetting.cpp +++ b/src/slic3r/GUI/AMSSetting.cpp @@ -253,6 +253,8 @@ void AMSSetting::on_insert_material_read(wxCommandEvent &event) m_sizer_Insert_material_tip_inline->Layout(); Layout(); Fit(); + + event.Skip(); } void AMSSetting::on_starting_read(wxCommandEvent &event) @@ -276,6 +278,8 @@ void AMSSetting::on_starting_read(wxCommandEvent &event) m_sizer_starting_tip_inline->Layout(); Layout(); Fit(); + + event.Skip(); } wxString AMSSetting::append_title(wxString text) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 3d80fa896..00a2081cc 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1332,6 +1332,10 @@ int MachineObject::command_ams_user_settings(int ams_id, bool start_read_opt, bo j["print"]["startup_read_option"] = start_read_opt; j["print"]["tray_read_option"] = tray_read_opt; + ams_insert_flag = tray_read_opt; + ams_power_on_flag = start_read_opt; + ams_user_setting_hold_count = HOLD_COUNT_MAX; + return this->publish_json(j.dump()); } @@ -2282,16 +2286,21 @@ int MachineObject::parse_json(std::string payload) if (jj["ams"].contains("tray_tar")) { m_tray_tar = jj["ams"]["tray_tar"].get(); } - if (jj["ams"].contains("insert_flag")) { - ams_insert_flag = jj["ams"]["insert_flag"].get(); - } if (jj["ams"].contains("ams_rfid_status")) ams_rfid_status = jj["ams"]["ams_rfid_status"].get(); - if (jj["ams"].contains("power_on_flag")) { - ams_power_on_flag = jj["ams"]["power_on_flag"].get(); + if (jj["ams"].contains("insert_flag") || jj["ams"].contains("power_on_flag")) { + if (ams_user_setting_hold_count > 0) { + ams_user_setting_hold_count--; + } else { + if (jj["ams"].contains("insert_flag")) { + ams_insert_flag = jj["ams"]["insert_flag"].get(); + } + if (jj["ams"].contains("power_on_flag")) { + ams_power_on_flag = jj["ams"]["power_on_flag"].get(); + } + } } - if (ams_exist_bits != last_ams_exist_bits || last_tray_exist_bits != last_tray_exist_bits || tray_is_bbl_bits != last_is_bbl_bits diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 65c0e2dd0..39cbd3a04 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -364,6 +364,7 @@ public: bool ams_insert_flag { false }; bool ams_power_on_flag { false }; bool ams_support_use_ams { false }; + int ams_user_setting_hold_count = 0; AmsStatusMain ams_status_main; int ams_status_sub; int ams_version = 0;