From 461d42635f55c55ab1d3a5db52a5ddc827b631c1 Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 1 May 2025 16:23:56 +0800 Subject: [PATCH] Add option to toggle between legacy and new network plugins --- src/libslic3r/AppConfig.cpp | 3 +++ src/slic3r/GUI/GUI_App.cpp | 14 ++++++++++++++ src/slic3r/GUI/Preferences.cpp | 8 ++++++++ src/slic3r/GUI/Preferences.hpp | 1 + 4 files changed, 26 insertions(+) diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 588d1e0c0a..4cb3c79207 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -254,6 +254,9 @@ void AppConfig::set_defaults() if (get("stealth_mode").empty()) { set_bool("stealth_mode", false); } + if (get("legacy_networking").empty()) { + set_bool("legacy_networking", true); + } if(get("check_stable_update_only").empty()) { set_bool("check_stable_update_only", false); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index d9818d9f62..a3ae80e339 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2516,6 +2516,20 @@ bool GUI_App::on_init_inner() std::map extra_headers = get_extra_header(); Slic3r::Http::set_extra_headers(extra_headers); + // Orca: select network plugin version + NetworkAgent::use_legacy_network = app_config->get_bool("legacy_networking"); + // Force legacy network plugin if debugger attached + // See https://github.com/bambulab/BambuStudio/issues/6726 + if (!NetworkAgent::use_legacy_network) { + bool debugger_attached = false; +#ifdef __WINDOWS__ + debugger_attached = IsDebuggerPresent(); +#endif + if (debugger_attached) { + NetworkAgent::use_legacy_network = true; + wxMessageBox("Force using legacy bambu networking plugin because debugger is attached! If the app terminates itself immediately, please delete installed plugin and try again!"); + } + } copy_network_if_available(); on_init_network(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 6cd76cfda4..79a93c759a 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -804,6 +804,7 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa if (pbool) { GUI::wxGetApp().CallAfter([] { GUI::wxGetApp().ShowDownNetPluginDlg(); }); } + if (m_legacy_networking_ckeckbox != nullptr) { m_legacy_networking_ckeckbox->Enable(pbool); } } #endif // __WXMSW__ @@ -834,6 +835,11 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa //// for debug mode if (param == "developer_mode") { m_developer_mode_ckeckbox = checkbox; } if (param == "internal_developer_mode") { m_internal_developer_mode_ckeckbox = checkbox; } + if (param == "legacy_networking") { + m_legacy_networking_ckeckbox = checkbox; + bool pbool = app_config->get_bool("installed_networking"); + checkbox->Enable(pbool); + } checkbox->SetToolTip(tooltip); @@ -1199,6 +1205,7 @@ wxWindow* PreferencesDialog::create_general_page() auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function."), 50, "stealth_mode"); auto item_enable_plugin = create_item_checkbox(_L("Enable network plugin"), page, _L("Enable network plugin"), 50, "installed_networking"); + auto item_legacy_network_plugin = create_item_checkbox(_L("Use legacy network plugin (Take effect after restarting Orca)"), page, _L("Disable to use latest network plugin that support new BambuLab firmwares."), 50, "legacy_networking"); auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only"); std::vector Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"}; @@ -1322,6 +1329,7 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_enable_plugin, 0, wxTOP, FromDIP(3)); + sizer_page->Add(item_legacy_network_plugin, 0, wxTOP, FromDIP(3)); #ifdef _WIN32 sizer_page->Add(title_associate_file, 0, wxTOP| wxEXPAND, FromDIP(20)); sizer_page->Add(item_associate_3mf, 0, wxTOP, FromDIP(3)); diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index 5977397e16..e65ae52d35 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -93,6 +93,7 @@ public: ::CheckBox * m_internal_developer_mode_ckeckbox = {nullptr}; ::CheckBox * m_dark_mode_ckeckbox = {nullptr}; ::TextInput *m_backup_interval_textinput = {nullptr}; + ::CheckBox * m_legacy_networking_ckeckbox = {nullptr}; wxString m_developer_mode_def; wxString m_internal_developer_mode_def;