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

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

Inheritance diagram for Slic3r::GUI::ModelMallDialog:
Collaboration diagram for Slic3r::GUI::ModelMallDialog:

Public Member Functions

 ModelMallDialog (Plater *plater=nullptr)
 ~ModelMallDialog ()
void OnScriptMessage (wxWebViewEvent &evt)
void on_dpi_changed (const wxRect &suggested_rect) override
void on_show (wxShowEvent &event)
void on_back (wxMouseEvent &evt)
void on_forward (wxMouseEvent &evt)
void go_to_url (wxString url)
void show_control (bool show)
void go_to_mall (wxString url)
void go_to_publish (wxString url)
void on_refresh (wxMouseEvent &evt)
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Public Attributes

wxPanel * m_web_control_panel {nullptr}
wxWebView * m_browser {nullptr}
wxString m_url

Protected Member Functions

virtual void on_sys_color_changed ()

Private Member Functions

void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description

Constructor & Destructor Documentation

◆ ModelMallDialog()

Slic3r::GUI::ModelMallDialog::ModelMallDialog ( Plater * plater = nullptr)
33 :DPIFrame(nullptr, wxID_ANY, _L("3D Models"), wxDefaultPosition, wxDefaultSize, wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER)
34 {
35 SetSize(MODEL_MALL_PAGE_SIZE);
36 SetMinSize(wxSize(MODEL_MALL_PAGE_SIZE.x / 4, MODEL_MALL_PAGE_SIZE.y / 4));
37
38 wxBoxSizer* m_sizer_main = new wxBoxSizer(wxVERTICAL);
39
40 auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
41 m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
42 m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0);
43
44 m_web_control_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, MODEL_MALL_PAGE_CONTROL_SIZE, wxTAB_TRAVERSAL);
45 m_web_control_panel->SetBackgroundColour(*wxWHITE);
47
48
49 wxBoxSizer* m_sizer_web_control = new wxBoxSizer(wxHORIZONTAL);
50
51 auto m_control_back = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_back", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
52 m_control_back->SetBackgroundColour(*wxWHITE);
53 m_control_back->SetSize(wxSize(FromDIP(25), FromDIP(30)));
54 m_control_back->SetMinSize(wxSize(FromDIP(25), FromDIP(30)));
55 m_control_back->SetMaxSize(wxSize(FromDIP(25), FromDIP(30)));
56
57 m_control_back->Bind(wxEVT_LEFT_DOWN, &ModelMallDialog::on_back, this);
58 m_control_back->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_HAND));});
59 m_control_back->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW));});
60
61
62 auto m_control_forward = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_forward", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
63 m_control_forward->SetBackgroundColour(*wxWHITE);
64 m_control_forward->SetSize(wxSize(FromDIP(25), FromDIP(30)));
65 m_control_forward->SetMinSize(wxSize(FromDIP(25), FromDIP(30)));
66 m_control_forward->SetMaxSize(wxSize(FromDIP(25), FromDIP(30)));
67
68 m_control_forward->Bind(wxEVT_LEFT_DOWN, &ModelMallDialog::on_forward, this);
69 m_control_forward->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_HAND)); });
70 m_control_forward->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW)); });
71
72 auto m_control_refresh = new ScalableButton(m_web_control_panel, wxID_ANY, "mall_control_refresh", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
73 m_control_refresh->SetBackgroundColour(*wxWHITE);
74 m_control_refresh->SetSize(wxSize(FromDIP(25), FromDIP(30)));
75 m_control_refresh->SetMinSize(wxSize(FromDIP(25), FromDIP(30)));
76 m_control_refresh->SetMaxSize(wxSize(FromDIP(25), FromDIP(30)));
77 m_control_refresh->Bind(wxEVT_LEFT_DOWN, &ModelMallDialog::on_refresh, this);
78 m_control_refresh->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_HAND)); });
79 m_control_refresh->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCursor(wxCURSOR_ARROW)); });
80
81#ifdef __APPLE__
82 // FIXME: maybe should be using GUI::shortkey_ctrl_prefix() or equivalent?
83 m_control_back->SetToolTip(_L("Click to return") + "(" + u8"\u2318+" /* u8"⌘+" */ + _L("Left Arrow") + ")");
84 m_control_forward->SetToolTip(_L("Click to continue") + "(" + u8"\u2318+" /* u8"⌘+" */ + _L("Right Arrow") + ")");
85#else
86 // FIXME: maybe should be using GUI::shortkey_alt_prefix() or equivalent?
87 m_control_back->SetToolTip(_L("Click to return") + "(" + _L("Alt+") + _L("Left Arrow") + ")");
88 m_control_forward->SetToolTip(_L("Click to continue") + "(" + _L("Alt+") + _L("Right Arrow") + ")");
89#endif
90
91 m_control_refresh->SetToolTip(_L("Refresh"));
92 /* auto m_textCtrl1 = new wxTextCtrl(m_web_control_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(600, 30), 0);
93 auto m_button1 = new wxButton(m_web_control_panel, wxID_ANY, wxT("GO"), wxDefaultPosition, wxDefaultSize, 0);
94 m_button1->Bind(wxEVT_BUTTON, [this,m_textCtrl1](auto& e) {
95 go_to_url(m_textCtrl1->GetValue());
96 });*/
97
98 m_sizer_web_control->Add( m_control_back, 0, wxALIGN_CENTER | wxLEFT, FromDIP(26) );
99 m_sizer_web_control->Add(m_control_forward, 0, wxALIGN_CENTER | wxLEFT, FromDIP(26));
100 m_sizer_web_control->Add(m_control_refresh, 0, wxALIGN_CENTER | wxLEFT, FromDIP(26));
101 //m_sizer_web_control->Add(m_button1, 0, wxALIGN_CENTER|wxLEFT, 5);
102 //m_sizer_web_control->Add(m_textCtrl1, 0, wxALIGN_CENTER|wxLEFT, 5);
103
104 m_web_control_panel->SetSizer(m_sizer_web_control);
105 m_web_control_panel->Layout();
106 m_sizer_web_control->Fit(m_web_control_panel);
107
108 m_browser = WebView::CreateWebView(this, wxEmptyString);
109 if (m_browser == nullptr) {
110 wxLogError("Could not init m_browser");
111 return;
112 }
113
116 m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ModelMallDialog::OnScriptMessage, this, m_browser->GetId());
117
118 m_sizer_main->Add(m_web_control_panel, 0, wxEXPAND, 0);
119 m_sizer_main->Add(m_browser, 1, wxEXPAND, 0);
120 SetSizer(m_sizer_main);
121 Layout();
122 Fit();
123
124 Centre(wxBOTH);
125 Bind(wxEVT_SHOW, &ModelMallDialog::on_show, this);
126
127 Bind(wxEVT_CLOSE_WINDOW, [this](auto& e) {
128 this->Hide();
129 });
130 }
#define MODEL_MALL_PAGE_SIZE
Definition ModelMall.hpp:44
#define MODEL_MALL_PAGE_CONTROL_SIZE
Definition ModelMall.hpp:45
#define MODEL_MALL_PAGE_WEB_SIZE
Definition ModelMall.hpp:46
#define _L(s)
Definition OBJ.cpp:34
void on_refresh(wxMouseEvent &evt)
Definition ModelMall.cpp:171
wxWebView * m_browser
Definition ModelMall.hpp:68
void OnScriptMessage(wxWebViewEvent &evt)
Definition ModelMall.cpp:137
void on_forward(wxMouseEvent &evt)
Definition ModelMall.cpp:185
void on_back(wxMouseEvent &evt)
Definition ModelMall.cpp:178
wxPanel * m_web_control_panel
Definition ModelMall.hpp:67
void on_show(wxShowEvent &event)
Definition ModelMall.cpp:159
static wxWebView * CreateWebView(wxWindow *parent, wxString const &url)
Definition WebView.cpp:313
DPIAware< wxFrame > DPIFrame
Definition GUI_Utils.hpp:298

References _L, WebView::CreateWebView(), m_browser, m_web_control_panel, MODEL_MALL_PAGE_CONTROL_SIZE, MODEL_MALL_PAGE_SIZE, MODEL_MALL_PAGE_WEB_SIZE, on_back(), on_forward(), on_refresh(), on_show(), OnScriptMessage(), and Slic3r::GUI::plater().

Here is the call graph for this function:

◆ ~ModelMallDialog()

Slic3r::GUI::ModelMallDialog::~ModelMallDialog ( )
134 {
135 }

Member Function Documentation

◆ em_unit()

int Slic3r::GUI::DPIAware< wxFrame >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

References m_em_unit.

Referenced by Slic3r::GUI::MainFrame::create_side_tools(), and Slic3r::GUI::MainFrame::update_side_button_style().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxFrame >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

References m_force_rescale.

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxFrame >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

References m_force_rescale.

◆ go_to_mall()

void Slic3r::GUI::ModelMallDialog::go_to_mall ( wxString url)
206 {
207 /*if (!url.empty() && m_homepage_url.empty()) {
208 m_homepage_url = url;
209 }*/
210 if(url.empty())return;
211 m_url = url;
212 go_to_url(url);
213 }
void go_to_url(wxString url)
Definition ModelMall.cpp:192
wxString m_url
Definition ModelMall.hpp:69

References go_to_url(), and m_url.

Here is the call graph for this function:

◆ go_to_publish()

void Slic3r::GUI::ModelMallDialog::go_to_publish ( wxString url)
216 {
217 /*if (!url.empty() && m_publish_url.empty()) {
218 m_publish_url = url;
219 }*/
220 if(url.empty())return;
221 m_url = url;
222 go_to_url(url);
223 }

References go_to_url(), and m_url.

Here is the call graph for this function:

◆ go_to_url()

void Slic3r::GUI::ModelMallDialog::go_to_url ( wxString url)
193 {
194 //m_browser->LoadURL(url);
196 }
static void LoadUrl(wxWebView *webView, wxString const &url)
Definition WebView.cpp:480

References WebView::LoadUrl(), and m_browser.

Referenced by go_to_mall(), and go_to_publish().

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

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxFrame >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

References m_prev_scale_factor, and m_scale_factor.

◆ normal_font()

const wxFont & Slic3r::GUI::DPIAware< wxFrame >::normal_font ( ) const
inlineinherited
205{ return m_normal_font; }

References m_normal_font.

Referenced by Slic3r::GUI::MainFrame::init_tabpanel(), and Slic3r::GUI::MainFrame::on_dpi_changed().

Here is the caller graph for this function:

◆ on_back()

void Slic3r::GUI::ModelMallDialog::on_back ( wxMouseEvent & evt)
179 {
180 if (m_browser->CanGoBack()) {
181 m_browser->GoBack();
182 }
183 }

References m_browser, and Slic3r::GUI::wxMouseEvent.

Referenced by ModelMallDialog().

Here is the caller graph for this function:

◆ on_dpi_changed()

void Slic3r::GUI::ModelMallDialog::on_dpi_changed ( const wxRect & suggested_rect)
overridevirtual

Implements Slic3r::GUI::DPIAware< wxFrame >.

156 {
157 }

◆ on_forward()

void Slic3r::GUI::ModelMallDialog::on_forward ( wxMouseEvent & evt)
186 {
187 if (m_browser->CanGoForward()) {
188 m_browser->GoForward();
189 }
190 }

References m_browser, and Slic3r::GUI::wxMouseEvent.

Referenced by ModelMallDialog().

Here is the caller graph for this function:

◆ on_refresh()

void Slic3r::GUI::ModelMallDialog::on_refresh ( wxMouseEvent & evt)
172 {
173 if (!m_browser->GetCurrentURL().empty()) {
174 m_browser->Reload();
175 }
176 }

References m_browser, and Slic3r::GUI::wxMouseEvent.

Referenced by ModelMallDialog().

Here is the caller graph for this function:

◆ on_show()

void Slic3r::GUI::ModelMallDialog::on_show ( wxShowEvent & event)
160 {
161 wxGetApp().UpdateFrameDarkUI(this);
162 if (event.IsShown()) {
163 Centre(wxBOTH);
164 }
165 /*else {
166 go_to_url(m_url);
167 }*/
168 event.Skip();
169 }

Referenced by ModelMallDialog().

Here is the caller graph for this function:

◆ on_sys_color_changed()

virtual void Slic3r::GUI::DPIAware< wxFrame >::on_sys_color_changed ( )
inlineprotectedvirtualinherited

Reimplemented in Slic3r::GUI::MainFrame.

226{};

◆ OnScriptMessage()

void Slic3r::GUI::ModelMallDialog::OnScriptMessage ( wxWebViewEvent & evt)
138 {
139 try {
140 wxString strInput = evt.GetString();
141 json j = json::parse(strInput.utf8_string());
142
143 wxString strCmd = j["command"];
144
145 if(strCmd == "request_close_publish_window") {
146 this->Hide();
147 }
148
149 }
150 catch (std::exception&) {
151 // wxMessageBox(e.what(), "json Exception", MB_OK);
152 }
153 }
nlohmann::json json
Definition AssembleList.cpp:42

Referenced by ModelMallDialog().

Here is the caller graph for this function:

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxFrame >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

References m_prev_scale_factor.

◆ rescale()

void Slic3r::GUI::DPIAware< wxFrame >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

References m_force_rescale, m_normal_font, m_prev_scale_factor, m_scale_factor, Slic3r::GUI::DPIAware< P >::on_dpi_changed(), and Slic3r::GUI::DPIAware< P >::update_em_unit().

Here is the call graph for this function:

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxFrame >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

References m_scale_factor.

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxFrame >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

References m_em_unit.

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxFrame >::set_prev_scale_factor ( float v)
inlineinherited

References m_prev_scale_factor.

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxFrame >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

References m_scale_factor.

◆ show_control()

void Slic3r::GUI::ModelMallDialog::show_control ( bool show)
199 {
200 m_web_control_panel->Show(show);
201 Layout();
202 Fit();
203 }

References m_web_control_panel.

◆ ShowModal()

int Slic3r::GUI::DPIAware< wxFrame >::ShowModal ( )
inlineinherited
217 {
218 dialogStack.push_front(this);
219 int r = wxDialog::ShowModal();
220 dialogStack.pop_front();
221 return r;
222 }

References Slic3r::GUI::dialogStack.

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxFrame >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

References m_em_unit, and m_scale_factor.

Member Data Documentation

◆ m_browser

wxWebView* Slic3r::GUI::ModelMallDialog::m_browser {nullptr}
68{nullptr};

Referenced by ModelMallDialog(), go_to_url(), on_back(), on_forward(), and on_refresh().

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxFrame >::m_can_rescale
privateinherited
235{ true };

Referenced by DPIAware().

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxFrame >::m_em_unit
privateinherited

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxFrame >::m_force_rescale
privateinherited
236{ false };

Referenced by DPIAware(), enable_force_rescale(), force_rescale(), and rescale().

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxFrame >::m_new_font_point_size
privateinherited

Referenced by DPIAware().

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxFrame >::m_normal_font
privateinherited

Referenced by DPIAware(), normal_font(), and rescale().

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxFrame >::m_prev_scale_factor
privateinherited

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxFrame >::m_scale_factor
privateinherited

◆ m_url

wxString Slic3r::GUI::ModelMallDialog::m_url

Referenced by go_to_mall(), and go_to_publish().

◆ m_web_control_panel

wxPanel* Slic3r::GUI::ModelMallDialog::m_web_control_panel {nullptr}
67{nullptr};

Referenced by ModelMallDialog(), and show_control().


The documentation for this class was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/ModelMall.hpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/ModelMall.cpp