mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-22 06:04:01 -06:00
NEW: [STUDIO-4036 STUDIO-4073] create filament and printer dialog
Jira: 4036 4073 Change-Id: I073ee4a2af4c86332e6d052f5d7322c9f2784184 (cherry picked from commit f4ec32929e1e6ebecd87e2e709636a43be497265)
This commit is contained in:
parent
131161f29b
commit
743f485fad
15 changed files with 3040 additions and 15 deletions
|
@ -2065,7 +2065,7 @@ Preset& PresetCollection::load_preset(const std::string &path, const std::string
|
|||
return preset;
|
||||
}
|
||||
|
||||
bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::function<void(Preset &)> modifier)
|
||||
bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::function<void(Preset &)> modifier, bool force_rewritten)
|
||||
{
|
||||
std::vector<Preset> new_presets;
|
||||
for (auto curr_preset : presets) {
|
||||
|
@ -2095,26 +2095,32 @@ bool PresetCollection::clone_presets(std::vector<Preset const *> const &presets,
|
|||
preset.config.option<ConfigOptionString>("printer_settings_id", true)->value = preset.name;
|
||||
preset.updated_time = (long long) Slic3r::Utils::get_current_time_utc();
|
||||
}
|
||||
if (!failures.empty())
|
||||
if (!failures.empty() && !force_rewritten)
|
||||
return false;
|
||||
lock();
|
||||
for (auto preset : new_presets) {
|
||||
auto it = this->find_preset_internal(preset.name);
|
||||
assert(it == m_presets.end() || it->name != preset.name);
|
||||
Preset & new_preset = *m_presets.insert(it, preset);
|
||||
new_preset.save(nullptr);
|
||||
assert((it == m_presets.end() || it->name != preset.name) || force_rewritten);
|
||||
if (it == m_presets.end() || it->name != preset.name) {
|
||||
Preset &new_preset = *m_presets.insert(it, preset);
|
||||
new_preset.save(nullptr);
|
||||
} else if (force_rewritten) {
|
||||
*it = preset;
|
||||
(*it).save(nullptr);
|
||||
}
|
||||
}
|
||||
unlock();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PresetCollection::clone_presets_for_printer(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::string const &printer)
|
||||
bool PresetCollection::clone_presets_for_printer(std::vector<Preset const *> const &presets, std::vector<std::string> &failures, std::string const &printer, bool force_rewritten)
|
||||
{
|
||||
return clone_presets(presets, failures, [printer](Preset &preset) {
|
||||
preset.name = preset.alias + " @ " + printer;
|
||||
preset.alias = preset.name;
|
||||
auto *compatible_printers = dynamic_cast<ConfigOptionStrings*>(preset.config.option("compatible_printers"));
|
||||
compatible_printers->values = std::vector<std::string>{ printer };
|
||||
});
|
||||
}, force_rewritten);
|
||||
}
|
||||
|
||||
bool PresetCollection::create_presets_from_template_for_printer(std::vector<std::string> const &templates, std::vector<std::string> &failures, std::string const &printer)
|
||||
|
@ -2125,13 +2131,15 @@ bool PresetCollection::create_presets_from_template_for_printer(std::vector<std:
|
|||
bool PresetCollection::clone_presets_for_filament(std::vector<Preset const *> const &presets,
|
||||
std::vector<std::string> & failures,
|
||||
std::string const & filament_name,
|
||||
std::string const & filament_id)
|
||||
std::string const & filament_id,
|
||||
bool force_rewritten)
|
||||
{
|
||||
return clone_presets(presets, failures, [filament_name, filament_id](Preset &preset) {
|
||||
preset.name = filament_name + " " + preset.name.substr(preset.name.find_last_of('@'));
|
||||
preset.alias = filament_name;
|
||||
preset.filament_id = filament_id;
|
||||
});
|
||||
},
|
||||
force_rewritten);
|
||||
}
|
||||
|
||||
std::map<std::string, std::vector<Preset const *>> PresetCollection::get_filament_presets() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue