FIX: crash when sync printer status
jira: none Change-Id: I7198f34b12c720519cc2e092254572fe6ee50778
This commit is contained in:
parent
2f271463c9
commit
6aacef93af
|
@ -3836,6 +3836,14 @@ std::pair<PresetsConfigSubstitutions, size_t> PresetBundle::load_vendor_configs_
|
|||
return std::make_pair(std::move(substitutions), presets_loaded);
|
||||
}
|
||||
|
||||
void PresetBundle::on_extruders_count_changed(int extruders_count)
|
||||
{
|
||||
printers.get_edited_preset().set_num_extruders(extruders_count);
|
||||
update_multi_material_filament_presets();
|
||||
reset_default_nozzle_volume_type();
|
||||
extruder_ams_counts.resize(extruders_count);
|
||||
}
|
||||
|
||||
void PresetBundle::update_multi_material_filament_presets(size_t to_delete_filament_id)
|
||||
{
|
||||
if (printers.get_edited_preset().printer_technology() != ptFFF)
|
||||
|
|
|
@ -227,6 +227,8 @@ public:
|
|||
// update size and content of filament_presets.
|
||||
void update_multi_material_filament_presets(size_t to_delete_filament_id = size_t(-1));
|
||||
|
||||
void on_extruders_count_changed(int extruder_count);
|
||||
|
||||
// Update the is_compatible flag of all print and filament presets depending on whether they are marked
|
||||
// as compatible with the currently selected printer (and print in case of filament presets).
|
||||
// Also updates the is_visible flag of each preset.
|
||||
|
|
|
@ -1235,12 +1235,14 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
|
|||
}
|
||||
|
||||
std::vector<std::map<int, int>> extruder_ams_counts = wxGetApp().preset_bundle->extruder_ams_counts;
|
||||
for (size_t i = 0; i < extruder_ams_counts.size(); ++i) {
|
||||
for (auto iter = extruder_ams_counts[i].begin(); iter != extruder_ams_counts[i].end(); ++iter){
|
||||
if (iter->first == 4)
|
||||
extruder_infos[i].ams_4 = iter->second;
|
||||
if (iter->first == 1)
|
||||
extruder_infos[i].ams_1 = iter->second;
|
||||
if (extruder_ams_counts.size() >= extruder_nums) {
|
||||
for (size_t i = 0; i < extruder_nums; ++i) {
|
||||
for (auto iter = extruder_ams_counts[i].begin(); iter != extruder_ams_counts[i].end(); ++iter) {
|
||||
if (iter->first == 4)
|
||||
extruder_infos[i].ams_4 = iter->second;
|
||||
if (iter->first == 1)
|
||||
extruder_infos[i].ams_1 = iter->second;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3859,9 +3859,7 @@ void TabPrinter::extruders_count_changed(size_t extruders_count)
|
|||
bool is_count_changed = false;
|
||||
if (m_extruders_count != extruders_count) {
|
||||
m_extruders_count = extruders_count;
|
||||
m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
|
||||
m_preset_bundle->update_multi_material_filament_presets();
|
||||
m_preset_bundle->reset_default_nozzle_volume_type();
|
||||
m_preset_bundle->on_extruders_count_changed(extruders_count);
|
||||
is_count_changed = true;
|
||||
|
||||
wxGetApp().plater()->get_partplate_list().on_extruder_count_changed((int)m_extruders_count);
|
||||
|
|
Loading…
Reference in New Issue