diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2b10fcfb6b..f3dd42a779 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -901,6 +901,9 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) wxGetApp().update_login_dialog(); #endif // 0 this->show_action_buttons(this->ready_to_slice); + + LogoutWebViewDialog dlg(this->q); + dlg.ShowModal(); }); this->q->Bind(EVT_UA_ID_USER_SUCCESS, [this](UserAccountSuccessEvent& evt) { diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 2aabf2d927..86afd21280 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -861,6 +861,7 @@ WebViewDialog::WebViewDialog(wxWindow* parent, const wxString& url, const wxStri Bind(wxEVT_MENU, &WebViewDialog::on_add_user_script, this, addUserScript->GetId()); #endif Bind(wxEVT_WEBVIEW_NAVIGATING, &WebViewDialog::on_navigation_request, this, m_browser->GetId()); + Bind(wxEVT_WEBVIEW_LOADED, &WebViewDialog::on_loaded, this, m_browser->GetId()); Bind(wxEVT_CLOSE_WINDOW, ([this](wxCloseEvent& evt) { EndModal(wxID_CANCEL); })); @@ -1258,7 +1259,7 @@ LoginWebViewDialog::LoginWebViewDialog(wxWindow *parent, std::string &ret_val, c : WebViewDialog(parent , url , _L("Log in dialog") - , wxSize(std::max(parent->GetClientSize().x / 2, 100 * wxGetApp().em_unit()), std::max(parent->GetClientSize().y / 2, 50 * wxGetApp().em_unit())) + , wxSize(std::max(parent->GetClientSize().x / 2, 100 * wxGetApp().em_unit()), std::max(parent->GetClientSize().y / 4 * 3, 50 * wxGetApp().em_unit())) , {}) , m_ret_val(ret_val) { @@ -1266,7 +1267,6 @@ LoginWebViewDialog::LoginWebViewDialog(wxWindow *parent, std::string &ret_val, c } void LoginWebViewDialog::on_navigation_request(wxWebViewEvent &evt) { - BOOST_LOG_TRIVIAL(error) << evt.GetURL(); wxString url = evt.GetURL(); if (url.starts_with(L"prusaslicer")) { evt.Veto(); @@ -1274,5 +1274,19 @@ void LoginWebViewDialog::on_navigation_request(wxWebViewEvent &evt) EndModal(wxID_OK); } } + +LogoutWebViewDialog::LogoutWebViewDialog(wxWindow *parent) + : WebViewDialog(parent + , L"https://account.prusa3d.com/logout" + , _L("Logout dialog") + , wxSize(std::max(parent->GetClientSize().x / 4, 10 * wxGetApp().em_unit()), std::max(parent->GetClientSize().y / 4, 10 * wxGetApp().em_unit())) + , {}) +{ + Centre(); +} +void LogoutWebViewDialog::on_loaded(wxWebViewEvent &evt) +{ + EndModal(wxID_OK); +} } // GUI } // Slic3r diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 4aa7c5d017..8f4c9af4b7 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -129,6 +129,7 @@ public: void On_enable_dev_tools(wxCommandEvent& evt); virtual void on_navigation_request(wxWebViewEvent &evt); + virtual void on_loaded(wxWebViewEvent &evt) {} void run_script(const wxString& javascript); @@ -254,10 +255,18 @@ class LoginWebViewDialog : public WebViewDialog public: LoginWebViewDialog(wxWindow *parent, std::string &ret_val, const wxString& url); void on_navigation_request(wxWebViewEvent &evt) override; + private: std::string &m_ret_val; }; +class LogoutWebViewDialog : public WebViewDialog +{ +public: + LogoutWebViewDialog(wxWindow* parent); + void on_loaded(wxWebViewEvent &evt) override; +}; + } // GUI } // Slic3r