diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 3c45eb486a..40af10f9c3 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -2342,6 +2342,7 @@ bool GUI_App::on_init_inner() // Suppress the '- default -' presets. preset_bundle->set_default_suppressed(true); + Bind(EVT_SET_SELECTED_MACHINE, &GUI_App::on_set_selected_machine, this); Bind(EVT_USER_LOGIN, &GUI_App::on_user_login, this); Bind(EVT_SHOW_IP_DIALOG, &GUI_App::show_ip_address_enter_dialog_handler, this); @@ -3709,6 +3710,14 @@ void GUI_App::enable_user_preset_folder(bool enable) } } +void GUI_App::on_set_selected_machine(wxCommandEvent &evt) +{ + DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); + if (!dev || m_agent) return; + + dev->set_selected_machine(m_agent->get_user_selected_machine()); +} + void GUI_App::on_user_login(wxCommandEvent &evt) { if (!m_agent) { return; } @@ -3719,8 +3728,12 @@ void GUI_App::on_user_login(wxCommandEvent &evt) // get machine list DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; - dev->update_user_machine_list_info(); - dev->set_selected_machine(m_agent->get_user_selected_machine()); + + boost::thread update_thread = boost::thread([this, dev] { + dev->update_user_machine_list_info(); + auto evt = new wxCommandEvent(EVT_SET_SELECTED_MACHINE); + wxQueueEvent(this, evt); + }); if (app_config->get("sync_user_preset") == "true") { enable_user_preset_folder(true); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 6d73a18890..a5d0185bd2 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -408,6 +408,7 @@ public: void handle_http_error(unsigned int status, std::string body); void on_http_error(wxCommandEvent &evt); + void on_set_selected_machine(wxCommandEvent& evt); void on_user_login(wxCommandEvent &evt); void enable_user_preset_folder(bool enable); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 5679e427a7..433fc575b5 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -72,8 +72,11 @@ wxDEFINE_EVENT(EVT_SELECT_TAB, wxCommandEvent); wxDEFINE_EVENT(EVT_HTTP_ERROR, wxCommandEvent); wxDEFINE_EVENT(EVT_USER_LOGIN, wxCommandEvent); wxDEFINE_EVENT(EVT_SHOW_IP_DIALOG, wxCommandEvent); +wxDEFINE_EVENT(EVT_SET_SELECTED_MACHINE, wxCommandEvent); wxDEFINE_EVENT(EVT_UPDATE_PRESET_CB, SimpleEvent); + + // BBS: backup wxDEFINE_EVENT(EVT_BACKUP_POST, wxCommandEvent); wxDEFINE_EVENT(EVT_LOAD_URL, wxCommandEvent); diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index d53caa156c..3529706f23 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -374,8 +374,11 @@ public: wxDECLARE_EVENT(EVT_HTTP_ERROR, wxCommandEvent); wxDECLARE_EVENT(EVT_USER_LOGIN, wxCommandEvent); wxDECLARE_EVENT(EVT_SHOW_IP_DIALOG, wxCommandEvent); +wxDECLARE_EVENT(EVT_SET_SELECTED_MACHINE, wxCommandEvent); wxDECLARE_EVENT(EVT_UPDATE_PRESET_CB, SimpleEvent); + + } // GUI } //Slic3r