FIX: create filament issue

Jira: 4917 4920 4928 4933 4934
4917 filament preset name too long to dialog too long
4920 too long fiilament preset can't save
4928 limit preset tree size
4933 edit filament dialog remove cancel button
4934 update preset tree and refresh

Signed-off-by: maosheng.wei <maosheng.wei@bambulab.com>
Change-Id: Ibf708911576324a58c5640a50f5207b45a69b4e9
This commit is contained in:
maosheng.wei
2023-10-26 09:39:29 +08:00
committed by Lane.Wei
parent cc0b28ae28
commit f3599d555c
4 changed files with 67 additions and 47 deletions

View File

@@ -2168,29 +2168,20 @@ bool PresetCollection::create_presets_from_template_for_printer(std::vector<Pres
}, force_rewritten);
}
bool PresetCollection::clone_presets_for_filament(Preset const * const &preset,
std::vector<std::string> & failures,
std::string const & filament_name,
std::string const & filament_id,
const std::string & vendor_name,
const std::string & compatible_printers,
bool force_rewritten)
bool PresetCollection::clone_presets_for_filament(Preset const *const & preset,
std::vector<std::string> &failures,
std::string const & filament_name,
std::string const & filament_id,
const DynamicConfig & dynamic_config,
const std::string & compatible_printers,
bool force_rewritten)
{
std::vector<Preset const *> const presets = {preset};
return clone_presets(presets, failures, [&filament_name, &filament_id, &vendor_name, &compatible_printers](Preset &preset, Preset::Type &type) {
return clone_presets(presets, failures, [&filament_name, &filament_id, &dynamic_config, &compatible_printers](Preset &preset, Preset::Type &type) {
preset.name = filament_name + " @" + compatible_printers;
if (type == Preset::TYPE_FILAMENT) {
auto filament_vendor = preset.config.option<ConfigOptionStrings>("filament_vendor", true);
if (filament_vendor->values.empty()) {
filament_vendor->values.push_back(vendor_name);
} else {
filament_vendor->values = {vendor_name};
}
auto compatible_printers_option = preset.config.option<ConfigOptionStrings>("compatible_printers", true);
if (compatible_printers_option->values.empty()) { compatible_printers_option->values.push_back(compatible_printers);
} else {
compatible_printers_option->values = {compatible_printers};
}
preset.config.apply_only(dynamic_config, {"filament_vendor", "compatible_printers", "filament_type"},true);
preset.filament_id = filament_id;
}
},

View File

@@ -461,8 +461,13 @@ public:
bool clone_presets_for_printer(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::string const &printer, bool force_rewritten = false);
bool create_presets_from_template_for_printer(
std::vector<Preset const *> const &templates, std::vector<std::string> &failures, std::string const &printer, std::function <std::string(std::string)> create_filament_id, bool force_rewritten = false);
bool clone_presets_for_filament(Preset const * const &preset, std::vector<std::string> &failures, std::string const &filament_name, std::string const &filament_id, const std::string& vendor,
const std::string& compatible_printers, bool force_rewritten = false);
bool clone_presets_for_filament(Preset const *const & preset,
std::vector<std::string> &failures,
std::string const & filament_name,
std::string const & filament_id,
const DynamicConfig & dynamic_config,
const std::string & compatible_printers,
bool force_rewritten = false);
std::map<std::string, std::vector<Preset const *>> get_filament_presets() const;