diff --git a/resources/images/erase.svg b/resources/images/erase.svg
new file mode 100644
index 000000000..1b39caed6
--- /dev/null
+++ b/resources/images/erase.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/reset_gray.svg b/resources/images/reset_gray.svg
new file mode 100644
index 000000000..9e5578903
--- /dev/null
+++ b/resources/images/reset_gray.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp
index 23db6ae2a..9a385bd58 100644
--- a/src/slic3r/GUI/AmsMappingPopup.cpp
+++ b/src/slic3r/GUI/AmsMappingPopup.cpp
@@ -91,9 +91,10 @@ void MaterialItem::set_ams_info(wxColour col, wxString txt, int ctype, std::vect
void MaterialItem::reset_ams_info() {
m_ams_name = "-";
- m_ams_coloul = wxColour(0xEE, 0xEE, 0xEE);
+ m_ams_coloul = wxColour(0xCE, 0xCE, 0xCE);
m_ams_cols.clear();
m_ams_ctype = 0;
+ Refresh();
}
void MaterialItem::disable()
@@ -660,7 +661,7 @@ AmsMapingPopup::AmsMapingPopup(wxWindow *parent, bool use_in_sync_dialog) :
m_right_tips->SetLabel(m_right_tip_text);
m_sizer_ams_right_horizonal->Add(m_right_tips, 0, wxEXPAND , 0);
- m_reset_btn = new ScalableButton(m_right_first_text_panel, wxID_ANY, "text_undo", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 14);
+ m_reset_btn = new ScalableButton(m_right_first_text_panel, wxID_ANY, "erase", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true, 14);
m_reset_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { reset_ams_info(); });
m_reset_btn->SetBackgroundColour(*wxWHITE);
m_reset_btn->SetToolTip(_L("Reset current filament mapping"));
diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp
index 0723c3afd..8b6f04b43 100644
--- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp
+++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp
@@ -90,6 +90,7 @@ bool SyncAmsInfoDialog::Show(bool show)
m_are_you_sure_title->Show(true);
if (m_mode_combox_sizer) {
m_mode_combox_sizer->Show(true);
+ m_reset_all_btn->Hide();
}
m_confirm_title->SetLabel(m_undone_str);
}
@@ -136,7 +137,6 @@ void SyncAmsInfoDialog::update_select_layout(MachineObject *obj)
m_checkbox_list["timelapse"]->Hide();
m_checkbox_list["bed_leveling"]->Hide();
m_checkbox_list["use_ams"]->Hide();
- m_checkbox_list["flow_cali"]->Hide();
m_checkbox_list["nozzle_offset_cali"]->Hide();
if (!obj) { return; }
@@ -146,30 +146,20 @@ void SyncAmsInfoDialog::update_select_layout(MachineObject *obj)
m_checkbox_list["nozzle_offset_cali"]->Show();
m_checkbox_list["nozzle_offset_cali"]->update_options(ops_auto);
m_checkbox_list["bed_leveling"]->update_options(ops_auto);
- m_checkbox_list["flow_cali"]->update_options(ops_auto);
m_checkbox_list["nozzle_offset_cali"]->setValue("auto");
m_checkbox_list["bed_leveling"]->setValue("auto");
- m_checkbox_list["flow_cali"]->setValue("auto");
} else {
m_checkbox_list["bed_leveling"]->update_options(ops_no_auto);
- m_checkbox_list["flow_cali"]->update_options(ops_auto);
if (config && config->get("print", "bed_leveling") == "0") {
m_checkbox_list["bed_leveling"]->setValue("off");
} else {
m_checkbox_list["bed_leveling"]->setValue("on");
}
-
- if (config && config->get("print", "flow_cali") == "0") {
- m_checkbox_list["flow_cali"]->setValue("off");
- } else {
- m_checkbox_list["flow_cali"]->setValue("on");
- }
}
update_timelapse_enable_status();
- update_flow_cali_check(obj);
if (config && config->get("print", "timelapse") == "0") {
m_checkbox_list["timelapse"]->setValue("off");
@@ -769,6 +759,13 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
m_mode_combox_sizer->AddSpacer(FromDIP(8));
m_mode_combox_sizer->Add(m_override_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2));
m_mode_combox_sizer->AddStretchSpacer();
+ m_reset_all_btn = new ScalableButton(m_scrolledWindow, wxID_ANY, "reset_gray", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,
+ true, 14);
+ m_reset_all_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { reset_all_ams_info(); });
+ m_reset_all_btn->SetBackgroundColour(*wxWHITE);
+ m_reset_all_btn->SetToolTip(_L("Reset all filament mapping"));
+ m_mode_combox_sizer->Add(m_reset_all_btn, 0, wxALIGN_CENTER | wxEXPAND | wxALL, FromDIP(2));
+ m_mode_combox_sizer->AddSpacer(FromDIP(30));
m_colormap_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this); // update_when_change_map_mode(e.GetSelection());
m_override_btn->Bind(wxEVT_BUTTON, &SyncAmsInfoDialog::update_when_change_map_mode,this);
@@ -917,10 +914,6 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
_L("Check heatbed flatness. Leveling makes extruded height uniform.\n*Automatic mode: Level first (about 10 seconds). Skip if surface is fine."),
ops_auto, "bed_leveling");
- auto option_flow_dynamics_cali =
- new PrintOption(m_options_other, _L("Flow Dynamics Calibration"),
- _L("Find the best coefficient for dynamic flow calibration to enhance print quality.\n*Automatic mode: Skip if the filament was calibrated recently."),
- ops_auto, "flow_cali");
auto option_nozzle_offset_cali_cali =
new PrintOption(m_options_other, _L("Nozzle Offset Calibration"),
@@ -937,7 +930,6 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
m_sizer_options_timelapse->Add(option_timelapse, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
m_sizer_options_other->Add(option_use_ams, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
m_sizer_options_other->Add(option_auto_bed_level, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
- m_sizer_options_other->Add(option_flow_dynamics_cali, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
m_sizer_options_other->Add(option_nozzle_offset_cali_cali, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
m_options_other->SetSizer(m_sizer_options_other);
@@ -945,12 +937,10 @@ SyncAmsInfoDialog::SyncAmsInfoDialog(wxWindow *parent, SyncInfo &info) :
m_checkbox_list["timelapse"] = option_timelapse;
m_checkbox_list["bed_leveling"] = option_auto_bed_level;
m_checkbox_list["use_ams"] = option_use_ams;
- m_checkbox_list["flow_cali"] = option_flow_dynamics_cali;
m_checkbox_list["nozzle_offset_cali"] = option_nozzle_offset_cali_cali;
option_timelapse->Hide();
option_auto_bed_level->Hide();
- option_flow_dynamics_cali->Hide();
option_nozzle_offset_cali_cali->Hide();
option_use_ams->Hide();
@@ -2215,6 +2205,11 @@ void SyncAmsInfoDialog::on_set_finish_mapping(wxCommandEvent &evt)
change_default_normal(old_filament_id, ams_colour);
final_deal_edge_pixels_data(m_preview_thumbnail_data);
set_default_normal(m_preview_thumbnail_data); // do't reset ams
+ if (!m_reset_all_btn->IsShown()) {
+ m_reset_all_btn->Show();
+ Layout();
+ Fit();
+ }
}
int ctype = 0;
@@ -2401,16 +2396,6 @@ void SyncAmsInfoDialog::on_timer(wxTimerEvent &event)
}
}
-void SyncAmsInfoDialog::update_flow_cali_check(MachineObject *obj)
-{
- auto bed_type = m_plater->get_partplate_list().get_curr_plate()->get_bed_type(true);
- auto show_cali_tips = true;
-
- if (obj && obj->get_printer_arch() == PrinterArch::ARCH_I3) { show_cali_tips = false; }
-
- set_flow_calibration_state(true, show_cali_tips);
-}
-
void SyncAmsInfoDialog::update_show_status()
{
// refreshing return
@@ -2714,7 +2699,16 @@ void SyncAmsInfoDialog::reset_ams_material()
}
}
-void SyncAmsInfoDialog::reset_one_ams_material(const std::string& index_str)
+void SyncAmsInfoDialog::reset_all_ams_info()
+{
+ for (int i = 0; i < m_ams_mapping_result.size(); i++) {
+ reset_one_ams_material(std::to_string(i+1),true);
+ }
+ m_reset_all_btn->Hide();
+ Refresh();
+}
+
+void SyncAmsInfoDialog::reset_one_ams_material(const std::string &index_str, bool reset_to_first)
{
MaterialHash::iterator iter = m_materialList.begin();
while (iter != m_materialList.end()) {
@@ -2722,10 +2716,21 @@ void SyncAmsInfoDialog::reset_one_ams_material(const std::string& index_str)
Material *item = iter->second;
auto m = dynamic_cast (item->item);
if (m && m->get_material_index_str() == index_str) {
- m->reset_valid_info();
+ if (reset_to_first) {
+ m->reset_valid_info();
+ } else {
+ m->reset_ams_info();
+ }
+
int index = std::atoi(index_str.c_str()) - 1;
if (index >=0 && index < m_back_ams_mapping_result.size()) {
- m_ams_mapping_result[index] = m_back_ams_mapping_result[index];
+ if (reset_to_first) {
+ m_ams_mapping_result[index] = m_back_ams_mapping_result[index];
+ } else {
+ m_ams_mapping_result[index].ams_id = "";
+ m_ams_mapping_result[index].slot_id = "";
+ m_ams_mapping_result[index].color = "";
+ }
}
break;
}
@@ -2752,23 +2757,6 @@ void SyncAmsInfoDialog::on_dpi_changed(const wxRect &suggested_rect)
Refresh();
}
-void SyncAmsInfoDialog::set_flow_calibration_state(bool state, bool show_tips)
-{
- if (!state) {
- m_checkbox_list["flow_cali"]->setValue(state ? "on" : "off");
- m_checkbox_list["flow_cali"]->Enable();
- } else {
- AppConfig *config = wxGetApp().app_config;
- if (config && config->get("print", "flow_cali") == "0") {
- m_checkbox_list["flow_cali"]->setValue("off");
- } else {
- m_checkbox_list["flow_cali"]->setValue("on");
- }
-
- m_checkbox_list["flow_cali"]->Enable();
- }
-}
-
void SyncAmsInfoDialog::set_default(bool hide_some)
{
if (m_print_type == PrintFromType::FROM_NORMAL) {
@@ -2989,6 +2977,9 @@ void SyncAmsInfoDialog::reset_and_sync_ams_list()
reset_one_ams_material(item_index_str);
m_mapping_popup.update_items_check_state(m_ams_mapping_result);
m_mapping_popup.Refresh();
+ if (!m_reset_all_btn->IsShown()) {
+ m_reset_all_btn->Show();
+ }
};
m_mapping_popup.set_reset_callback(reset_call_back);
m_mapping_popup.set_tag_texture(materials[extruder]);
diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp
index 0366a7618..2c64b9a01 100644
--- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp
+++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp
@@ -168,7 +168,8 @@ public:
void reset_timeout();
void update_user_printer();
void reset_ams_material();
- void reset_one_ams_material(const std::string & index_str);
+ void reset_all_ams_info();
+ void reset_one_ams_material(const std::string & index_str,bool reset_to_first =false);
void update_show_status();
void update_printer_combobox(wxCommandEvent &event);
void on_cancel(wxCloseEvent &event);
@@ -192,7 +193,6 @@ public:
void unify_deal_thumbnail_data(ThumbnailData &input_data, ThumbnailData &no_light_data,bool allow_clone_ams_color);
void change_default_normal(int old_filament_id, wxColour temp_ams_color);
void on_timer(wxTimerEvent &event);
- void update_flow_cali_check(MachineObject *obj);
void update_user_machine_list();
void update_lan_machine_list();
void stripWhiteSpace(std::string &str);
@@ -200,7 +200,6 @@ public:
void update_priner_status_msg(wxString msg, bool is_warning = false);
void update_print_status_msg(wxString msg, bool is_warning = false, bool is_printer = true);
void update_print_error_info(int code, std::string msg, std::string extra);
- void set_flow_calibration_state(bool state, bool show_tips = true);
bool has_timelapse_warning();
void update_timelapse_enable_status();
bool is_same_printer_model();
@@ -319,6 +318,7 @@ private:
CapsuleButton * m_colormap_btn = nullptr;
CapsuleButton * m_override_btn = nullptr;
+ ScalableButton * m_reset_all_btn{nullptr};
wxBoxSizer * m_advace_setting_sizer = nullptr;
wxStaticText * m_more_setting_tips = nullptr;
wxStaticBitmap * m_advanced_options_icon{nullptr};