Merge branch 'main' into feature/orca_network_refactor

This commit is contained in:
SoftFever 2026-02-02 23:51:39 +08:00 committed by GitHub
commit cf3d9118ab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 100 additions and 19 deletions

View file

@ -25,6 +25,25 @@ cmake --build build/arm64 --config RelWithDebInfo --target all --
```bash
cmake --build build/arm64 --config RelWithDebInfo --target all --
```
### Build test:
**Always use this command to build the project when testing build issues on Windows.**
```bash
cmake --build . --config %build_type% --target ALL_BUILD -- -m
```
### Building on macOS
**Always use this command to build the project when testing build issues on macOS.**
```bash
cmake --build build/arm64 --config RelWithDebInfo --target all --
```
### Building on Linux
**Always use this command to build the project when testing build issues on Linux.**
```bash
cmake --build build/arm64 --config RelWithDebInfo --target all --
```

View file

@ -72,6 +72,6 @@
"wipe_tower_extra_rib_length": "0",
"prime_tower_width": "35",
"prime_volume": "30",
"wall_generator": "classic",
"wall_generator": "arachne",
"compatible_printers": []
}

View file

@ -514,14 +514,14 @@ function ResponseFilamentResult()
let FilaArray=new Array();
for(let n=0;n<nAll;n++)
{
let sName=FilaSelectedList[n].getAttribute("name");
for( let key in m_ProfileItem['filament'] )
{
let FName=GetFilamentShortname(key);
if(FName==sName)
FilaArray.push(key);
let strFilalist=FilaSelectedList[n].getAttribute("filalist");
if(strFilalist) {
let filaNames = strFilalist.split(';');
for(let i=0; i<filaNames.length; i++) {
let fname = filaNames[i].trim();
if(fname !== '')
FilaArray.push(fname);
}
}
}

View file

@ -491,14 +491,14 @@ function ResponseFilamentResult()
let FilaArray=new Array();
for(let n=0;n<nAll;n++)
{
let sName=FilaSelectedList[n].getAttribute("name");
for( let key in m_ProfileItem['filament'] )
{
let FName=GetFilamentShortname(key);
if(FName==sName)
FilaArray.push(key);
let strFilalist=FilaSelectedList[n].getAttribute("filalist");
if(strFilalist) {
let filaNames = strFilalist.split(';');
for(let i=0; i<filaNames.length; i++) {
let fname = filaNames[i].trim();
if(fname !== '')
FilaArray.push(fname);
}
}
}

View file

@ -2115,6 +2115,15 @@ void PresetBundle::export_selections(AppConfig &config)
auto printer_name = printers.get_selected_preset_name();
config.set("presets", PRESET_PRINTER_NAME, printer_name);
// Don't persist settings for the built-in "Default Printer" placeholder —
// it's only the initial state before a real printer is loaded/selected.
// Also clean up any stale entry that other code paths (e.g. bed type change)
// may have created for "Default Printer".
if (printer_name == "Default Printer") {
config.clear_printer_settings("Default Printer");
return;
}
config.clear_printer_settings(printer_name);
config.set_printer_setting(printer_name, PRESET_PRINTER_NAME, printer_name);
config.set_printer_setting(printer_name, PRESET_PRINT_NAME, prints.get_selected_preset_name());

View file

@ -147,7 +147,7 @@ void uiAmsPercentHumidityDryPopup::UpdateContents()
// table grid
const wxString& humidity_str = wxString::Format("%d%%", m_humidity_percent);
m_humidity_label->SetLabel(humidity_str);
const wxString& temp_str = wxString::Format(u8"%d\u2103" /* °C */, (int)std::round(m_current_temperature));
const wxString& temp_str = wxString::Format(wxString::FromUTF8(u8"%d\u2103" /* °C */), (int)std::round(m_current_temperature));
m_temperature_label->SetLabel(temp_str);
if (m_left_dry_time > 0)

View file

@ -838,14 +838,67 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle
// Not switch filament
//get_first_added_material_preset(AppConfig::SECTION_FILAMENTS, first_added_filament);
// For each @System filament, check if a vendor-specific override exists
// in the loaded profiles. If so, replace the @System variant with the
// override (e.g. replace "Generic ABS @System" with BBL "Generic ABS").
// When printers from the default bundle are also selected, keep @System
// too since those printers need it.
static const std::string system_suffix = " @System";
auto it_default = enabled_vendors.find(PresetBundle::ORCA_DEFAULT_BUNDLE);
bool has_default_bundle_printer = it_default != enabled_vendors.end() && !it_default->second.empty();
bool has_filament_profiles = m_ProfileJson.contains("filament");
// Check if any non-default vendor has selected printers
bool has_vendor_printer = false;
for (const auto& [vendor, models] : enabled_vendors) {
if (vendor != PresetBundle::ORCA_DEFAULT_BUNDLE && !models.empty()) {
has_vendor_printer = true;
break;
}
}
std::map<std::string, std::string> supplemented_filaments;
for (const auto& [name, value] : enabled_filaments) {
if (name.size() > system_suffix.size() &&
name.compare(name.size() - system_suffix.size(), system_suffix.size(), system_suffix) == 0) {
std::string short_name = name.substr(0, name.size() - system_suffix.size());
if (has_vendor_printer && has_filament_profiles && m_ProfileJson["filament"].contains(short_name)) {
supplemented_filaments[short_name] = value;
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Replacing @System filament: '" << name << "' -> '" << short_name << "'";
if (has_default_bundle_printer) {
supplemented_filaments[name] = value;
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Also keeping '" << name << "' for default bundle printers";
}
continue;
}
}
supplemented_filaments[name] = value;
}
//update the app_config
app_config->set_section(AppConfig::SECTION_FILAMENTS, enabled_filaments);
app_config->set_section(AppConfig::SECTION_FILAMENTS, supplemented_filaments);
app_config->set_vendors(m_appconfig_new);
if (check_unsaved_preset_changes)
preset_bundle->load_presets(*app_config, ForwardCompatibilitySubstitutionRule::Enable,
{preferred_model, preferred_variant, first_added_filament, std::string()});
// If the active filament is not in the wizard-selected filaments, switch to the first
// compatible wizard-selected filament. This handles the first-run case where load_presets
// falls back to "Generic PLA" even though the user selected a different filament.
bool active_filament_selected = supplemented_filaments.empty()
|| supplemented_filaments.count(preset_bundle->filament_presets.front()) > 0;
if (!active_filament_selected) {
for (const auto& [filament_name, _] : supplemented_filaments) {
const Preset* preset = preset_bundle->filaments.find_preset(filament_name);
if (preset && preset->is_visible && preset->is_compatible) {
preset_bundle->filaments.select_preset_by_name(filament_name, true);
preset_bundle->filament_presets.front() = preset_bundle->filaments.get_selected_preset_name();
break;
}
}
}
// Update the selections from the compatibilty.
preset_bundle->export_selections(*app_config);