mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-10 18:56:13 +00:00
fix: regression error
This commit is contained in:
@@ -611,6 +611,7 @@ namespace Slic3r
|
|||||||
}
|
}
|
||||||
|
|
||||||
selected_machine = dev_id;
|
selected_machine = dev_id;
|
||||||
|
record_user_last_machine(selected_machine);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -875,20 +876,38 @@ namespace Slic3r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceManager::record_user_last_machine(const std::string& dev_id)
|
||||||
|
{
|
||||||
|
if (Slic3r::GUI::wxGetApp().app_config) {
|
||||||
|
Slic3r::GUI::wxGetApp().app_config->set("user_last_selected_machine", dev_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string DeviceManager::get_user_last_machine() const
|
||||||
|
{
|
||||||
|
if (Slic3r::GUI::wxGetApp().app_config) {
|
||||||
|
const auto& user_last_machine = Slic3r::GUI::wxGetApp().app_config->get("user_last_selected_machine");
|
||||||
|
if (!user_last_machine.empty()) {
|
||||||
|
return user_last_machine;
|
||||||
|
} else if (m_agent) {
|
||||||
|
return m_agent->get_user_selected_machine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
void DeviceManager::load_last_machine()
|
void DeviceManager::load_last_machine()
|
||||||
{
|
{
|
||||||
// Get all available machines, include cloud machines and lan machines that have access right
|
// Only reconnect the remembered cloud machine. Do not select an arbitrary
|
||||||
auto all_machines = get_my_machine_list();
|
// first machine: agent swaps intentionally leave the selection empty until
|
||||||
if (all_machines.empty())
|
// the new agent explicitly selects its configured printer.
|
||||||
|
if (userMachineList.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Reconnect the machine the user last selected, if it's still available.
|
const auto& last_monitor_machine = get_user_last_machine();
|
||||||
// why: no first-available fallback - auto-connecting an arbitrary machine
|
if (userMachineList.find(last_monitor_machine) != userMachineList.end())
|
||||||
// fights the agent-swap reset, which intentionally leaves nothing selected.
|
set_selected_machine(last_monitor_machine);
|
||||||
const std::string last_monitor_machine = m_agent ? m_agent->get_user_selected_machine() : "";
|
|
||||||
const auto last_machine = all_machines.find(last_monitor_machine);
|
|
||||||
if (last_machine != all_machines.end())
|
|
||||||
this->set_selected_machine(last_machine->second->get_dev_id());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::OnMachineBindStateChanged(MachineObject* obj, const std::string& new_state)
|
void DeviceManager::OnMachineBindStateChanged(MachineObject* obj, const std::string& new_state)
|
||||||
|
|||||||
@@ -52,6 +52,9 @@ public:
|
|||||||
// swap path can reuse it instead of duplicating the two sidebar calls.
|
// swap path can reuse it instead of duplicating the two sidebar calls.
|
||||||
void OnSelectedMachineLost();
|
void OnSelectedMachineLost();
|
||||||
|
|
||||||
|
void record_user_last_machine(const std::string& dev_id);
|
||||||
|
std::string get_user_last_machine() const;
|
||||||
|
|
||||||
// local machine
|
// local machine
|
||||||
void set_local_selected_machine(std::string dev_id) { local_selected_machine = dev_id; };
|
void set_local_selected_machine(std::string dev_id) { local_selected_machine = dev_id; };
|
||||||
MachineObject* get_local_selected_machine() const { return get_local_machine(local_selected_machine); }
|
MachineObject* get_local_selected_machine() const { return get_local_machine(local_selected_machine); }
|
||||||
|
|||||||
Reference in New Issue
Block a user