sys_color_change for webview windows

This commit is contained in:
David Kocik 2024-03-20 13:15:15 +01:00
parent f05318686c
commit c669ef49aa
4 changed files with 41 additions and 26 deletions

View File

@ -878,6 +878,7 @@ void MainFrame::remove_connect_webview_tab()
m_tabpanel->SetSelection(0); m_tabpanel->SetSelection(0);
dynamic_cast<TopBar*>(m_tabpanel)->RemovePage(4); dynamic_cast<TopBar*>(m_tabpanel)->RemovePage(4);
m_connect_webview_added = false; m_connect_webview_added = false;
m_connect_webview->logout();
} }
void MainFrame::add_printer_webview_tab(const wxString& url) void MainFrame::add_printer_webview_tab(const wxString& url)
@ -1188,6 +1189,9 @@ void MainFrame::on_sys_color_changed()
for (auto tab : wxGetApp().tabs_list) for (auto tab : wxGetApp().tabs_list)
tab->sys_color_changed(); tab->sys_color_changed();
m_connect_webview->sys_color_changed();
m_printer_webview->sys_color_changed();
MenuFactory::sys_color_changed(m_menubar); MenuFactory::sys_color_changed(m_menubar);
this->Refresh(); this->Refresh();

View File

@ -43,7 +43,7 @@ class Plater;
class MainFrame; class MainFrame;
class PreferencesDialog; class PreferencesDialog;
class GalleryDialog; class GalleryDialog;
class WebViewPanel; class ConnectWebViewPanel;
class PrinterWebViewPanel; class PrinterWebViewPanel;
enum QuickSlice enum QuickSlice
@ -98,7 +98,7 @@ class MainFrame : public DPIFrame
size_t m_last_selected_tab; size_t m_last_selected_tab;
Search::OptionsSearcher m_searcher; Search::OptionsSearcher m_searcher;
WebViewPanel* m_connect_webview{ nullptr }; ConnectWebViewPanel* m_connect_webview{ nullptr };
bool m_connect_webview_added{ false }; bool m_connect_webview_added{ false };
PrinterWebViewPanel* m_printer_webview{ nullptr }; PrinterWebViewPanel* m_printer_webview{ nullptr };
bool m_printer_webview_added{ false }; bool m_printer_webview_added{ false };

View File

@ -423,6 +423,12 @@ case type: \
#endif #endif
} }
void WebViewPanel::sys_color_changed()
{
#ifdef _WIN32
wxGetApp().UpdateDarkUI(this);
#endif
}
SourceViewDialog::SourceViewDialog(wxWindow* parent, wxString source) : SourceViewDialog::SourceViewDialog(wxWindow* parent, wxString source) :
wxDialog(parent, wxID_ANY, "Source Code", wxDialog(parent, wxID_ANY, "Source Code",
@ -444,10 +450,8 @@ ConnectRequestHandler::ConnectRequestHandler()
{ {
m_actions["REQUEST_ACCESS_TOKEN"] = std::bind(&ConnectRequestHandler::on_request_access_token, this); m_actions["REQUEST_ACCESS_TOKEN"] = std::bind(&ConnectRequestHandler::on_request_access_token, this);
m_actions["REQUEST_CONFIG"] = std::bind(&ConnectRequestHandler::on_request_config, this); m_actions["REQUEST_CONFIG"] = std::bind(&ConnectRequestHandler::on_request_config, this);
m_actions["REQUEST_LANGUAGE"] = std::bind(&ConnectRequestHandler::on_request_language_action, this);
m_actions["REQUEST_SESSION_ID"] = std::bind(&ConnectRequestHandler::on_request_session_id_action, this);
m_actions["UPDATE_SELECTED_PRINTER"] = std::bind(&ConnectRequestHandler::on_request_update_selected_printer_action, this); m_actions["UPDATE_SELECTED_PRINTER"] = std::bind(&ConnectRequestHandler::on_request_update_selected_printer_action, this);
m_actions["WEBAPP_READY"] = std::bind(&ConnectRequestHandler::request_compatible_printers, this);
} }
ConnectRequestHandler::~ConnectRequestHandler() ConnectRequestHandler::~ConnectRequestHandler()
{ {
@ -486,6 +490,12 @@ void ConnectRequestHandler::handle_message(const std::string& message)
m_actions[action_string](); m_actions[action_string]();
} }
} }
void ConnectRequestHandler::resend_config()
{
on_request_config();
}
void ConnectRequestHandler::on_request_access_token() void ConnectRequestHandler::on_request_access_token()
{ {
std::string token = wxGetApp().plater()->get_user_account()->get_access_token(); std::string token = wxGetApp().plater()->get_user_account()->get_access_token();
@ -512,23 +522,6 @@ void ConnectRequestHandler::on_request_config()
run_script_bridge(script); run_script_bridge(script);
} }
void ConnectRequestHandler::on_request_language_action()
{
assert(true);
// TODO:
//std::string lang = "en";
//wxString script = GUI::format_wxstr("window._prusaConnect_v1.setAccessToken(\'en\')", lang);
//run_script(script);
}
void ConnectRequestHandler::on_request_session_id_action()
{
assert(true);
/*
std::string token = wxGetApp().plater()->get_user_account()->get_access_token();
wxString script = GUI::format_wxstr("window._prusaConnect_v1.setAccessToken(\'%1%\')", token);
run_script(script);
*/
}
ConnectWebViewPanel::ConnectWebViewPanel(wxWindow* parent) ConnectWebViewPanel::ConnectWebViewPanel(wxWindow* parent)
: WebViewPanel(parent, L"https://dev.connect.prusa3d.com/connect-slicer-app/") : WebViewPanel(parent, L"https://dev.connect.prusa3d.com/connect-slicer-app/")
@ -541,6 +534,17 @@ void ConnectWebViewPanel::on_script_message(wxWebViewEvent& evt)
handle_message(into_u8(evt.GetString())); handle_message(into_u8(evt.GetString()));
} }
void ConnectWebViewPanel::logout()
{
wxString script = L"window._prusaConnect_v1.logout()";
run_script(script);
}
void ConnectWebViewPanel::sys_color_changed()
{
resend_config();
}
void ConnectWebViewPanel::on_request_update_selected_printer_action() void ConnectWebViewPanel::on_request_update_selected_printer_action()
{ {
assert(!m_message_data.empty()); assert(!m_message_data.empty());
@ -615,6 +619,9 @@ void PrinterWebViewPanel::send_credentials()
} }
void PrinterWebViewPanel::sys_color_changed()
{
}
WebViewDialog::WebViewDialog(wxWindow* parent, const wxString& url, const wxString& dialog_name, const wxSize& size) WebViewDialog::WebViewDialog(wxWindow* parent, const wxString& url, const wxString& dialog_name, const wxSize& size)
: wxDialog(parent, wxID_ANY, dialog_name, wxDefaultPosition, size, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) : wxDialog(parent, wxID_ANY, dialog_name, wxDefaultPosition, size, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
@ -650,7 +657,6 @@ PrinterPickWebViewDialog::PrinterPickWebViewDialog(wxWindow* parent, std::string
: WebViewDialog(parent, L"https://dev.connect.prusa3d.com/connect-slicer-app/printer-list", _L("Choose a printer"), wxSize(std::max(parent->GetClientSize().x / 2, 100 * wxGetApp().em_unit()), std::max(parent->GetClientSize().y / 2, 50 * wxGetApp().em_unit()))) : WebViewDialog(parent, L"https://dev.connect.prusa3d.com/connect-slicer-app/printer-list", _L("Choose a printer"), wxSize(std::max(parent->GetClientSize().x / 2, 100 * wxGetApp().em_unit()), std::max(parent->GetClientSize().y / 2, 50 * wxGetApp().em_unit())))
, m_ret_val(ret_val) , m_ret_val(ret_val)
{ {
m_actions["WEBAPP_READY"] = std::bind(&PrinterPickWebViewDialog::request_compatible_printers, this);
Centre(); Centre();
} }
void PrinterPickWebViewDialog::on_show(wxShowEvent& evt) void PrinterPickWebViewDialog::on_show(wxShowEvent& evt)

View File

@ -72,6 +72,7 @@ public:
wxString get_default_url() const { return m_default_url; } wxString get_default_url() const { return m_default_url; }
void set_default_url(const wxString& url) { m_default_url = url; } void set_default_url(const wxString& url) { m_default_url = url; }
virtual void sys_color_changed();
protected: protected:
wxWebView* m_browser; wxWebView* m_browser;
@ -112,14 +113,14 @@ public:
~ConnectRequestHandler(); ~ConnectRequestHandler();
void handle_message(const std::string& message); void handle_message(const std::string& message);
void resend_config();
protected: protected:
// action callbacs stored in m_actions // action callbacs stored in m_actions
virtual void on_request_access_token(); virtual void on_request_access_token();
virtual void on_request_config(); virtual void on_request_config();
virtual void on_request_language_action();
virtual void on_request_session_id_action();
virtual void on_request_update_selected_printer_action() = 0; virtual void on_request_update_selected_printer_action() = 0;
virtual void run_script_bridge(const wxString& script) = 0; virtual void run_script_bridge(const wxString& script) = 0;
virtual void request_compatible_printers() = 0;
std::map<std::string, std::function<void(void)>> m_actions; std::map<std::string, std::function<void(void)>> m_actions;
std::string m_message_data; std::string m_message_data;
@ -131,8 +132,11 @@ class ConnectWebViewPanel : public WebViewPanel, public ConnectRequestHandler
public: public:
ConnectWebViewPanel(wxWindow* parent); ConnectWebViewPanel(wxWindow* parent);
void on_script_message(wxWebViewEvent& evt) override; void on_script_message(wxWebViewEvent& evt) override;
void logout();
void sys_color_changed() override;
protected: protected:
void on_request_update_selected_printer_action() override; void on_request_update_selected_printer_action() override;
void request_compatible_printers() override {}
void run_script_bridge(const wxString& script) override {run_script(script); } void run_script_bridge(const wxString& script) override {run_script(script); }
}; };
@ -148,6 +152,7 @@ public:
void set_api_key(const std::string& key) { m_api_key = key; } void set_api_key(const std::string& key) { m_api_key = key; }
void set_credentials(const std::string& usr, const std::string& psk) { m_usr = usr; m_psk = psk; } void set_credentials(const std::string& usr, const std::string& psk) { m_usr = usr; m_psk = psk; }
void clear() { m_api_key.clear(); m_usr.clear(); m_psk.clear(); m_api_key_sent = false; } void clear() { m_api_key.clear(); m_usr.clear(); m_psk.clear(); m_api_key_sent = false; }
void sys_color_changed() override;
private: private:
std::string m_api_key; std::string m_api_key;
std::string m_usr; std::string m_usr;
@ -179,9 +184,9 @@ public:
void on_script_message(wxWebViewEvent& evt) override; void on_script_message(wxWebViewEvent& evt) override;
protected: protected:
void on_request_update_selected_printer_action() override; void on_request_update_selected_printer_action() override;
void request_compatible_printers() override;
void run_script_bridge(const wxString& script) override { run_script(script); } void run_script_bridge(const wxString& script) override { run_script(script); }
private: private:
void request_compatible_printers();
std::string& m_ret_val; std::string& m_ret_val;
}; };