Merge branch 'main' into zaa

This commit is contained in:
SoftFever
2026-05-01 18:04:05 +08:00
committed by GitHub
116 changed files with 9029 additions and 3590 deletions

View File

@@ -33,6 +33,7 @@
#include "GUI_App.hpp"
#include "GUI_ObjectList.hpp"
#include "slic3r/Utils/PresetUpdater.hpp"
#include "Plater.hpp"
#include "MainFrame.hpp"
#include "format.hpp"
@@ -229,9 +230,17 @@ void Tab::create_preset_tab()
if (m_type == Preset::TYPE_PRINTER && !m_presets_choice->is_selected_physical_printer())
m_preset_bundle->physical_printers.unselect_printer();
// select preset
std::string preset_name = m_presets_choice->GetString(selection).ToUTF8().data();
select_preset(Preset::remove_suffix_modified(preset_name));
// select preset — prefer stored internal name to avoid alias collisions
wxString stored_name = m_presets_choice->GetItemAlias(selection);
std::string preset_name;
if (!stored_name.empty()) {
preset_name = Preset::remove_suffix_modified(stored_name.ToUTF8().data());
} else {
std::string selected_label = Preset::remove_suffix_modified(
m_presets_choice->GetString(selection).ToUTF8().data());
preset_name = m_preset_bundle->get_preset_name_by_alias(m_type, selected_label);
}
select_preset(preset_name);
}
});
}
@@ -2053,6 +2062,12 @@ void Tab::on_presets_changed()
// Check if printer agent needs switching
if (m_type == Preset::TYPE_PRINTER) {
wxGetApp().switch_printer_agent();
// Trigger per-vendor preset update check
const Preset& printer_preset = m_preset_bundle->printers.get_edited_preset();
if (printer_preset.vendor) {
wxGetApp().get_preset_updater()->check_vendor_update(printer_preset.vendor->id);
}
}
bool is_bbl_vendor_preset = m_preset_bundle->is_bbl_vendor();
@@ -5676,7 +5691,7 @@ void Tab::update_btns_enabling()
// and any user preset
const Preset& preset = m_presets->get_edited_preset();
m_btn_delete_preset->Show((m_type == Preset::TYPE_PRINTER && m_preset_bundle->physical_printers.has_selection())
|| (!preset.is_default && !preset.is_system));
|| preset.can_overwrite());
//if (m_btn_edit_ph_printer)
// m_btn_edit_ph_printer->SetToolTip( m_preset_bundle->physical_printers.has_selection() ?
@@ -5857,7 +5872,7 @@ bool Tab::select_preset(
Preset &current_preset = m_presets->get_selected_preset();
// Obtain compatible filament and process presets for printers
if (m_preset_bundle && m_presets->get_preset_base(current_preset) == &current_preset && printer_tab && !current_preset.is_system) {
if (m_preset_bundle && m_presets->get_preset_base(current_preset) == &current_preset && printer_tab && !current_preset.is_system && !current_preset.is_from_bundle()) {
delete_third_printer = true;
for (const Preset &preset : m_preset_bundle->filaments.get_presets()) {
if (preset.is_compatible && !preset.is_default) {
@@ -5865,7 +5880,6 @@ bool Tab::select_preset(
filament_presets.push_front(preset);
else
filament_presets.push_back(preset);
if (!preset.setting_id.empty()) { m_preset_bundle->filaments.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0); }
}
}
for (const Preset &preset : m_preset_bundle->prints.get_presets()) {
@@ -5874,13 +5888,11 @@ bool Tab::select_preset(
process_presets.push_front(preset);
else
process_presets.push_back(preset);
if (!preset.setting_id.empty()) { m_preset_bundle->filaments.set_sync_info_and_save(preset.name, preset.setting_id, "delete", 0); }
}
}
}
if (!current_preset.setting_id.empty()) {
m_presets->set_sync_info_and_save(current_preset.name, current_preset.setting_id, "delete", 0);
wxGetApp().delete_preset_from_cloud(current_preset.setting_id);
wxGetApp().delete_preset_from_cloud(current_preset.setting_id, current_preset.file);
}
BOOST_LOG_TRIVIAL(info) << "delete preset = " << current_preset.name << ", setting_id = " << current_preset.setting_id;
BOOST_LOG_TRIVIAL(info) << boost::format("will delete current preset...");
@@ -5971,7 +5983,7 @@ bool Tab::select_preset(
for (const Preset &preset : filament_presets) {
if (!preset.setting_id.empty()) {
wxGetApp().delete_preset_from_cloud(preset.setting_id);
wxGetApp().delete_preset_from_cloud(preset.setting_id, preset.file);
}
BOOST_LOG_TRIVIAL(info) << "delete filament preset = " << preset.name << ", setting_id = " << preset.setting_id;
preset_bundle->filaments.delete_preset(preset.name);
@@ -5979,7 +5991,7 @@ bool Tab::select_preset(
for (const Preset &preset : process_presets) {
if (!preset.setting_id.empty()) {
wxGetApp().delete_preset_from_cloud(preset.setting_id);
wxGetApp().delete_preset_from_cloud(preset.setting_id, preset.file);
}
BOOST_LOG_TRIVIAL(info) << "delete print preset = " << preset.name << ", setting_id = " << preset.setting_id;
preset_bundle->prints.delete_preset(preset.name);