OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::PrinterCloudAuthDialog Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/PrinterCloudAuthDialog.hpp>

Inheritance diagram for Slic3r::GUI::PrinterCloudAuthDialog:
Collaboration diagram for Slic3r::GUI::PrinterCloudAuthDialog:

Public Member Functions

 PrinterCloudAuthDialog (wxWindow *parent, PrintHost *host)
 ~PrinterCloudAuthDialog ()
std::string GetApiKey ()
void OnNavigationRequest (wxWebViewEvent &evt)
void OnNavigationComplete (wxWebViewEvent &evt)
void OnDocumentLoaded (wxWebViewEvent &evt)
void OnNewWindow (wxWebViewEvent &evt)
void OnScriptMessage (wxWebViewEvent &evt)

Protected Attributes

wxWebView * m_browser
wxString m_TargetUrl
wxString m_javascript
wxString m_response_js
std::string m_apikey

Detailed Description

Constructor & Destructor Documentation

◆ PrinterCloudAuthDialog()

Slic3r::GUI::PrinterCloudAuthDialog::PrinterCloudAuthDialog ( wxWindow * parent,
PrintHost * host )
41 : wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, _L("Login"))
42{
43 SetBackgroundColour(*wxWHITE);
44 // Url
45 host->get_login_url(m_TargetUrl);
46 BOOST_LOG_TRIVIAL(info) << "login url = " << m_TargetUrl.ToStdString();
47
48 // Create the webview
50 if (m_browser == nullptr) {
51 wxLogError("Could not init m_browser");
52 return;
53 }
54 m_browser->Hide();
55 m_browser->SetSize(0, 0);
56
57 // Connect the webview events
58 Bind(wxEVT_WEBVIEW_NAVIGATING, &PrinterCloudAuthDialog::OnNavigationRequest, this, m_browser->GetId());
59 Bind(wxEVT_WEBVIEW_NAVIGATED, &PrinterCloudAuthDialog::OnNavigationComplete, this, m_browser->GetId());
60 Bind(wxEVT_WEBVIEW_LOADED, &PrinterCloudAuthDialog::OnDocumentLoaded, this, m_browser->GetId());
61 Bind(wxEVT_WEBVIEW_NEWWINDOW, &PrinterCloudAuthDialog::OnNewWindow, this, m_browser->GetId());
62 Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &PrinterCloudAuthDialog::OnScriptMessage, this, m_browser->GetId());
63
64 // UI
65 SetTitle(_L("Login"));
66 // Set a more sensible size for web browsing
67 wxSize pSize = FromDIP(wxSize(650, 840));
68 SetSize(pSize);
69
70 int screenheight = wxSystemSettings::GetMetric(wxSYS_SCREEN_Y, NULL);
71 int screenwidth = wxSystemSettings::GetMetric(wxSYS_SCREEN_X, NULL);
72 int MaxY = (screenheight - pSize.y) > 0 ? (screenheight - pSize.y) / 2 : 0;
73 wxPoint tmpPT((screenwidth - pSize.x) / 2, MaxY);
74 Move(tmpPT);
75}
#define _L(s)
Definition OBJ.cpp:34
void OnNewWindow(wxWebViewEvent &evt)
Definition PrinterCloudAuthDialog.cpp:97
void OnNavigationComplete(wxWebViewEvent &evt)
Definition PrinterCloudAuthDialog.cpp:84
void OnNavigationRequest(wxWebViewEvent &evt)
Definition PrinterCloudAuthDialog.cpp:79
void OnDocumentLoaded(wxWebViewEvent &evt)
Definition PrinterCloudAuthDialog.cpp:92
wxWebView * m_browser
Definition PrinterCloudAuthDialog.hpp:32
void OnScriptMessage(wxWebViewEvent &evt)
Definition PrinterCloudAuthDialog.cpp:101
wxString m_TargetUrl
Definition PrinterCloudAuthDialog.hpp:33
static wxWebView * CreateWebView(wxWindow *parent, wxString const &url)
Definition WebView.cpp:313

References _L, WebView::CreateWebView(), Slic3r::PrintHost::get_login_url(), m_browser, m_TargetUrl, OnDocumentLoaded(), OnNavigationComplete(), OnNavigationRequest(), OnNewWindow(), and OnScriptMessage().

Here is the call graph for this function:

◆ ~PrinterCloudAuthDialog()

Slic3r::GUI::PrinterCloudAuthDialog::~PrinterCloudAuthDialog ( )
77{}

Member Function Documentation

◆ GetApiKey()

std::string Slic3r::GUI::PrinterCloudAuthDialog::GetApiKey ( )
inline
43{ return m_apikey; };
std::string m_apikey
Definition PrinterCloudAuthDialog.hpp:37

References m_apikey.

Referenced by Slic3r::GUI::PhysicalPrinterDialog::build_printhost_settings().

Here is the caller graph for this function:

◆ OnDocumentLoaded()

void Slic3r::GUI::PrinterCloudAuthDialog::OnDocumentLoaded ( wxWebViewEvent & evt)
93{
94 // todo
95}

Referenced by PrinterCloudAuthDialog().

Here is the caller graph for this function:

◆ OnNavigationComplete()

void Slic3r::GUI::PrinterCloudAuthDialog::OnNavigationComplete ( wxWebViewEvent & evt)
85{
86 m_browser->Show();
87 Layout();
88 //fortest
89 //WebView::RunScript(m_browser, "window.wx.postMessage('This is a web message')");
90}

References m_browser.

Referenced by PrinterCloudAuthDialog().

Here is the caller graph for this function:

◆ OnNavigationRequest()

void Slic3r::GUI::PrinterCloudAuthDialog::OnNavigationRequest ( wxWebViewEvent & evt)
80{
81 //todo
82}

Referenced by PrinterCloudAuthDialog().

Here is the caller graph for this function:

◆ OnNewWindow()

void Slic3r::GUI::PrinterCloudAuthDialog::OnNewWindow ( wxWebViewEvent & evt)
97 {
98
99}

Referenced by PrinterCloudAuthDialog().

Here is the caller graph for this function:

◆ OnScriptMessage()

void Slic3r::GUI::PrinterCloudAuthDialog::OnScriptMessage ( wxWebViewEvent & evt)
102{
103 wxString str_input = evt.GetString();
104 try {
105 json j = json::parse(into_u8(str_input));
106 wxString strCmd = j["command"];
107 if (strCmd == "login_token") {
108 auto token = j["data"]["token"];
109 m_apikey = token;
110 }
111 Close();
112 } catch (std::exception& e) {
113 wxMessageBox(e.what(), _L("parse json failed"), wxICON_WARNING);
114 Close();
115 }
116}
std::string into_u8(const wxString &str)
Definition GUI.cpp:549
nlohmann::json json
Definition AssembleList.cpp:42

References _L, Slic3r::GUI::into_u8(), and m_apikey.

Referenced by PrinterCloudAuthDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_apikey

std::string Slic3r::GUI::PrinterCloudAuthDialog::m_apikey
protected

Referenced by GetApiKey(), and OnScriptMessage().

◆ m_browser

wxWebView* Slic3r::GUI::PrinterCloudAuthDialog::m_browser
protected

◆ m_javascript

wxString Slic3r::GUI::PrinterCloudAuthDialog::m_javascript
protected

◆ m_response_js

wxString Slic3r::GUI::PrinterCloudAuthDialog::m_response_js
protected

◆ m_TargetUrl

wxString Slic3r::GUI::PrinterCloudAuthDialog::m_TargetUrl
protected

Referenced by PrinterCloudAuthDialog().


The documentation for this class was generated from the following files: