ENH: update how to load_ams_list

JIRA: [STUDIO-14255]
Change-Id: I204f881b72185ee16f8ff204feb6469504f9f86b
(cherry picked from commit 4150ff5c178de02dfa67e6bd90765e35c6a64e99)
This commit is contained in:
xin.zhang
2025-09-23 16:29:58 +08:00
committed by Noisyfox
parent 8b640a148e
commit fabc681442
8 changed files with 32 additions and 31 deletions

View File

@@ -642,9 +642,6 @@ bool CalibrationPanel::Show(bool show) {
obj = dev->get_selected_machine();
if (obj == nullptr) {
dev->load_last_machine();
obj = dev->get_selected_machine();
if (obj)
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
}
else {
obj->reset_update_time();
@@ -682,7 +679,6 @@ void CalibrationPanel::set_default()
{
obj = nullptr;
last_conn_type = "undefined";
wxGetApp().sidebar().load_ams_list({}, {});
}
void CalibrationPanel::msw_rescale()

View File

@@ -430,6 +430,8 @@ namespace Slic3r
selected_machine = "";
local_selected_machine = "";
OnSelectedMachineChanged(selected_machine, "");
// clean user list
for (auto it = userMachineList.begin(); it != userMachineList.end(); it++)
{
@@ -533,6 +535,11 @@ namespace Slic3r
data.second.checked_filament.clear();
}
}
if (selected_machine != dev_id) {
OnSelectedMachineChanged(selected_machine, dev_id);
}
selected_machine = dev_id;
return true;
}
@@ -825,7 +832,16 @@ namespace Slic3r
void DeviceManager::OnSelectedMachineLost()
{
GUI::wxGetApp().sidebar().update_sync_status(nullptr);
GUI::wxGetApp().sidebar().load_ams_list(string(), nullptr);
GUI::wxGetApp().sidebar().load_ams_list(nullptr);
}
void DeviceManager::OnSelectedMachineChanged(const std::string& /*pre_dev_id*/,
const std::string& /*new_dev_id*/)
{
if (MachineObject* obj_ = get_selected_machine()) {
GUI::wxGetApp().sidebar().update_sync_status(obj_);
GUI::wxGetApp().sidebar().load_ams_list(obj_);
};
}
void DeviceManager::reload_printer_settings()

View File

@@ -101,6 +101,7 @@ private:
void OnMachineBindStateChanged(MachineObject* obj, const std::string& new_state);
void OnSelectedMachineLost();
void OnSelectedMachineChanged(const std::string& pre_dev_id, const std::string& new_dev_id);
/*TODO*/

View File

@@ -1726,7 +1726,6 @@ void GUI_App::init_networking_callbacks()
obj->command_get_access_code();
if (m_agent)
m_agent->install_device_cert(obj->get_dev_id(), obj->is_lan_mode_printer());
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
}
});
});
@@ -1765,7 +1764,6 @@ void GUI_App::init_networking_callbacks()
obj->command_get_version();
event.SetInt(0);
event.SetString(obj->get_dev_id());
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
} else if (state == ConnectStatus::ConnectStatusFailed) {
// Orca: only update status if same device id
if (m_device_manager->selected_machine != dev_id) return;
@@ -1831,13 +1829,10 @@ void GUI_App::init_networking_callbacks()
auto sel = this->m_device_manager->get_selected_machine();
if (sel && sel->get_dev_id() == dev_id) {
obj->parse_json("cloud", msg);
GUI::wxGetApp().sidebar().load_ams_list(obj);
} else {
obj->parse_json("cloud", msg, true);
}
if (sel == obj || sel == nullptr) {
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
}
}
if (GUI::wxGetApp().plater())
@@ -1881,7 +1876,7 @@ void GUI_App::init_networking_callbacks()
if (MachineObject* obj = m_device_manager->get_my_machine(dev_id)) {
obj->parse_json("lan", msg);
if (this->m_device_manager->get_selected_machine() == obj) {
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
GUI::wxGetApp().sidebar().load_ams_list(obj);
}
}
@@ -3942,7 +3937,6 @@ void GUI_App::request_user_logout()
wxGetApp().check_and_keep_current_preset_changes(_L("User logged out"), header, ActionButtons::KEEP | ActionButtons::SAVE, &transfer_preset_changes);
m_device_manager->clean_user_info();
GUI::wxGetApp().sidebar().load_ams_list({}, {});
remove_user_presets();
enable_user_preset_folder(false);
preset_bundle->load_user_presets(DEFAULT_USER_FOLDER_NAME, ForwardCompatibilitySubstitutionRule::Enable);

View File

@@ -161,12 +161,6 @@ void MonitorPanel::init_timer()
m_refresh_timer->SetOwner(this);
m_refresh_timer->Start(REFRESH_INTERVAL);
wxPostEvent(this, wxTimerEvent());
Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
if (!dev) return;
MachineObject *obj_ = dev->get_selected_machine();
if (obj_)
GUI::wxGetApp().sidebar().load_ams_list(obj_->get_dev_id(), obj_);
}
void MonitorPanel::init_tabpanel()
@@ -215,9 +209,6 @@ void MonitorPanel::set_default()
/* reset side tool*/
//m_bitmap_wifi_signal->SetBitmap(wxNullBitmap);
wxGetApp().sidebar().load_ams_list({}, {});
wxGetApp().sidebar().update_sync_status(nullptr);
}
wxWindow* MonitorPanel::create_side_tools()
@@ -295,7 +286,6 @@ void MonitorPanel::on_select_printer(wxCommandEvent& event)
obj_->reset_pa_cali_history_result();
obj_->reset_pa_cali_result();
Sidebar &sidebar = GUI::wxGetApp().sidebar();
sidebar.load_ams_list(obj_->get_dev_id(), obj_);
sidebar.update_sync_status(obj_);
sidebar.set_need_auto_sync_after_connect_printer(sidebar.need_auto_sync_extruder_list_after_connect_priner(obj_));
}
@@ -428,12 +418,8 @@ bool MonitorPanel::Show(bool show)
obj = dev->get_selected_machine();
if (obj == nullptr) {
dev->load_last_machine();
obj = dev->get_selected_machine();
if (obj && obj->is_info_ready(false))
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
} else {
obj->reset_update_time();
//select_machine(obj->get_dev_id());
}
}
} else {

View File

@@ -3024,10 +3024,12 @@ void Sidebar::get_small_btn_sync_pos_size(wxPoint &pt, wxSize &size) {
pt = ams_btn->GetScreenPosition();
}
void Sidebar::load_ams_list(std::string const &device, MachineObject* obj)
void Sidebar::load_ams_list(MachineObject* obj)
{
std::map<int, DynamicPrintConfig> filament_ams_list = build_filament_ams_list(obj);
bool device_change = false;
const std::string& device = obj ? obj->get_dev_id() : "";
if (p->ams_list_device != device) {
p->ams_list_device = device;
device_change = true;
@@ -3055,7 +3057,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn)
// Force load ams list
auto obj = wxGetApp().getDeviceManager()->get_selected_machine();
if (obj)
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
GUI::wxGetApp().sidebar().load_ams_list(obj);
auto & list = wxGetApp().preset_bundle->filament_ams_list;
if (list.empty()) {

View File

@@ -187,7 +187,7 @@ public:
bool is_new_project_in_gcode3mf();
// BBS
void on_bed_type_change(BedType bed_type);
void load_ams_list(std::string const & device, MachineObject* obj);
void load_ams_list(MachineObject* obj);
std::map<int, DynamicPrintConfig> build_filament_ams_list(MachineObject* obj);
void sync_ams_list(bool is_from_big_sync_btn = false);
bool sync_extruder_list();

View File

@@ -3031,7 +3031,6 @@ void SelectMachineDialog::on_selection_changed(wxCommandEvent &event)
}
// Has changed machine unrecoverably
GUI::wxGetApp().sidebar().load_ams_list(obj->get_dev_id(), obj);
m_check_flag = false;
} else {
BOOST_LOG_TRIVIAL(error) << "on_selection_changed dev_id not found";
@@ -4522,6 +4521,13 @@ bool SelectMachineDialog::Show(bool show)
EnableEditing(true);
m_options_other->Show();
m_refresh_timer->Start(LIST_REFRESH_INTERVAL);
//set a default machine when obj is null
if (DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager()) {
if (!dev->get_selected_machine()) {
dev->load_last_machine();
}
};
} else {
m_refresh_timer->Stop();
return DPIDialog::Show(false);