Fix AMS filament preset switch crash
This commit is contained in:
@@ -3335,7 +3335,8 @@ std::map<int, DynamicPrintConfig> Sidebar::build_filament_ams_list(MachineObject
|
||||
tray_config.set_key_value("slot_id", new ConfigOptionStrings{slot_id});
|
||||
tray_config.set_key_value("filament_type", new ConfigOptionStrings{tray.m_fila_type});
|
||||
tray_config.set_key_value("tray_name", new ConfigOptionStrings{ name });
|
||||
tray_config.set_key_value("filament_colour", new ConfigOptionStrings{into_u8(wxColour("#" + tray.color).GetAsString(wxC2S_HTML_SYNTAX))});
|
||||
const std::string filament_color = into_u8(wxColour("#" + tray.color).GetAsString(wxC2S_HTML_SYNTAX));
|
||||
tray_config.set_key_value("filament_colour", new ConfigOptionStrings{filament_color});
|
||||
tray_config.set_key_value("filament_multi_colour", new ConfigOptionStrings{});
|
||||
tray_config.set_key_value("filament_colour_type", new ConfigOptionStrings{std::to_string(tray.ctype)});
|
||||
tray_config.set_key_value("filament_exist", new ConfigOptionBools{tray.is_exists});
|
||||
@@ -3348,6 +3349,9 @@ std::map<int, DynamicPrintConfig> Sidebar::build_filament_ams_list(MachineObject
|
||||
for (int i = 0; i < tray.cols.size(); ++i) {
|
||||
tray_config.opt<ConfigOptionStrings>("filament_multi_colour")->values.push_back(into_u8(wxColour("#" + tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX)));
|
||||
}
|
||||
if (tray_config.opt<ConfigOptionStrings>("filament_multi_colour")->values.empty() && !filament_color.empty()) {
|
||||
tray_config.opt<ConfigOptionStrings>("filament_multi_colour")->values.push_back(filament_color);
|
||||
}
|
||||
return tray_config;
|
||||
};
|
||||
|
||||
|
||||
@@ -255,6 +255,11 @@ int PresetComboBox::update_ams_color()
|
||||
auto color_pack = static_cast<ConfigOptionStrings *>(cfg->option("filament_multi_colour")->clone()); // multi color (all colors in all kinds of filament)
|
||||
auto color_type = static_cast<ConfigOptionStrings*>(cfg->option("filament_colour_type")->clone()); // color type
|
||||
|
||||
if (m_filament_idx >= color_head->values.size()) color_head->values.resize(m_filament_idx + 1);
|
||||
if (m_filament_idx >= color_pack->values.size()) color_pack->values.resize(m_filament_idx + 1);
|
||||
if (m_filament_idx >= color_type->values.size()) color_type->values.resize(m_filament_idx + 1);
|
||||
if (ctype.empty()) ctype = "1";
|
||||
|
||||
color_head->values[m_filament_idx] = color;
|
||||
color_type->values[m_filament_idx] = ctype;
|
||||
std::string color_str = ""; // Translate multi color info to config storage format
|
||||
|
||||
Reference in New Issue
Block a user