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

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

Inheritance diagram for Slic3r::GUI::PrinterMsgPanel:
Collaboration diagram for Slic3r::GUI::PrinterMsgPanel:

Public Member Functions

 PrinterMsgPanel (wxWindow *parent)
bool UpdateInfos (const std::vector< prePrintInfo > &infos)

Private Attributes

wxBoxSizer * m_sizer = nullptr
std::vector< prePrintInfo > m_infos

Detailed Description

Constructor & Destructor Documentation

◆ PrinterMsgPanel()

Slic3r::GUI::PrinterMsgPanel::PrinterMsgPanel ( wxWindow * parent)
310 : wxPanel(parent)
311{
312 m_sizer = new wxBoxSizer(wxVERTICAL);
313 this->SetSizer(m_sizer);
314}
wxBoxSizer * m_sizer
Definition PrePrintChecker.hpp:225

References m_sizer.

Member Function Documentation

◆ UpdateInfos()

bool Slic3r::GUI::PrinterMsgPanel::UpdateInfos ( const std::vector< prePrintInfo > & infos)
331{
332 if (m_infos == infos)
333 {
334 return false;
335 }
336 m_infos = infos;
337
338 m_sizer->Clear(true);
339 for (const prePrintInfo& info : infos)
340 {
341 if (!info.msg.empty())
342 {
343 Label* label = new Label(this);
344 label->SetFont(::Label::Body_13);
345 label->SetForegroundColour(_GetLabelColour(info));
346
347
348 if (!info.link_label.empty())
349 {
350 // Orca: internal callback link (e.g. "Clean up files") instead of a wiki url
351 label->SetLabel(info.msg + " " + info.link_label);
352 label->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); });
353 label->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_ARROW); });
354 label->Bind(wxEVT_LEFT_DOWN, [info](wxMouseEvent& event) { if (info.link_callback) info.link_callback(); });
355 }
356 else if (info.wiki_url.empty())
357 {
358 label->SetLabel(info.msg);
359 }
360 else
361 {
362 label->SetLabel(info.msg + " " + _L("Please refer to Wiki before use->"));
363 label->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); });
364 label->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_ARROW); });
365 label->Bind(wxEVT_LEFT_DOWN, [info](wxMouseEvent& event) { wxLaunchDefaultBrowser(info.wiki_url); });
366 }
367
368 label->Wrap(this->GetMinSize().GetWidth());
369 label->Show();
370 m_sizer->Add(label, 0, wxBOTTOM, FromDIP(4));
371 }
372
373 // Orca: acknowledgement checkbox rendered beneath the message (e.g. a nozzle diameter that
374 // differs from the one the printer remembers, which the user may legitimately override).
375 if (!info.checkbox_label.empty())
376 {
377 wxCheckBox* checkbox = new wxCheckBox(this, wxID_ANY, info.checkbox_label);
378 checkbox->SetForegroundColour(_GetLabelColour(info));
379 checkbox->SetValue(info.checkbox_checked);
380 auto cb = info.checkbox_callback;
381 checkbox->Bind(wxEVT_CHECKBOX, [cb](wxCommandEvent& e) { if (cb) cb(e.IsChecked()); });
382 m_sizer->Add(checkbox, 0, wxBOTTOM, FromDIP(4));
383 }
384 }
385
386 this->Show();
387 this->Layout();
388
389 Fit();
390
391 return true;
392}
#define _L(s)
Definition OBJ.cpp:34
static wxFont Body_13
Definition Label.hpp:54
void SetLabel(const wxString &label) override
Definition Label.cpp:322
void Wrap(int width)
Definition Label.cpp:366
std::vector< prePrintInfo > m_infos
Definition PrePrintChecker.hpp:226
wxMouseEvent
Definition CameraPopup.cpp:47
static wxColour _GetLabelColour(const prePrintInfo &info)
Definition PrePrintChecker.cpp:316

References Slic3r::GUI::_GetLabelColour(), _L, Label::Body_13, m_infos, m_sizer, Label::SetLabel(), Label::Wrap(), and Slic3r::GUI::wxMouseEvent.

Here is the call graph for this function:

Member Data Documentation

◆ m_infos

std::vector<prePrintInfo> Slic3r::GUI::PrinterMsgPanel::m_infos
private

Referenced by UpdateInfos().

◆ m_sizer

wxBoxSizer* Slic3r::GUI::PrinterMsgPanel::m_sizer = nullptr
private

Referenced by PrinterMsgPanel(), and UpdateInfos().


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