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

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

Inheritance diagram for Slic3r::GUI::SliceInfoPopup:
Collaboration diagram for Slic3r::GUI::SliceInfoPopup:

Public Member Functions

 SliceInfoPopup (wxWindow *parent, wxBitmap bmp=wxNullBitmap, BBLSliceInfo *info=nullptr)
virtual ~SliceInfoPopup ()
virtual void Popup (wxWindow *focus=NULL) wxOVERRIDE
virtual void OnDismiss () wxOVERRIDE
virtual bool ProcessLeftDown (wxMouseEvent &event) wxOVERRIDE
virtual bool Show (bool show=true) wxOVERRIDE
bool Create (wxWindow *parent, int flags=wxBORDER_NONE)

Protected Member Functions

virtual bool ShouldDismissOnTopWindowDeactivate ()

Private Member Functions

void OnMouse (wxMouseEvent &event)
void OnSize (wxSizeEvent &event)
void OnSetFocus (wxFocusEvent &event)
void OnKillFocus (wxFocusEvent &event)
 wxDECLARE_ABSTRACT_CLASS (SliceInfoPopup)
 wxDECLARE_EVENT_TABLE ()

Private Attributes

wxScrolledWindow * m_panel

Detailed Description

Constructor & Destructor Documentation

◆ SliceInfoPopup()

Slic3r::GUI::SliceInfoPopup::SliceInfoPopup ( wxWindow * parent,
wxBitmap bmp = wxNullBitmap,
BBLSliceInfo * info = nullptr )
69 : PopupWindow(parent, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS)
70{
71#ifdef __WINDOWS__
72 SetDoubleBuffered(true);
73#endif
74 m_panel = new wxScrolledWindow(this, wxID_ANY);
75 m_panel->SetBackgroundColour(*wxWHITE);
76
77 m_panel->Bind(wxEVT_MOTION, &SliceInfoPopup::OnMouse, this);
78
79 wxBoxSizer * main_sizer = new wxBoxSizer(wxHORIZONTAL);
80 wxBoxSizer * topSizer = new wxBoxSizer(wxVERTICAL);
81 wxBoxSizer * caption_sizer = new wxBoxSizer(wxHORIZONTAL);
82 wxBoxSizer * caption_left_sizer = new wxBoxSizer(wxHORIZONTAL);
83 wxBoxSizer * caption_right_sizer = new wxBoxSizer(wxHORIZONTAL);
84 auto prediction_bitmap = new wxStaticBitmap(m_panel, wxID_ANY, create_scaled_bitmap("monitor_item_prediction", nullptr, 16));
85 wxString predict_text;
86 if (info)
87 predict_text = get_bbl_monitor_time_dhm(info->prediction);
88 auto prediction = new wxStaticText(m_panel, wxID_ANY, predict_text, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
89 caption_left_sizer->Add(prediction_bitmap, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
90 caption_left_sizer->Add(prediction, 1, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
91 prediction->Wrap(-1);
92 auto cost_bitmap = new wxStaticBitmap(m_panel, wxID_ANY, create_scaled_bitmap("monitor_item_cost", nullptr, 16));
93 wxString cost_text;
94 if (info) {
95 if (info->weight > 0) {
96 cost_text = wxString::Format("%.2fg", info->weight);
97 } else {
98 cost_text = "0g";
99 }
100 }
101 auto used_g_text = new wxStaticText(m_panel, wxID_ANY, cost_text, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
102 caption_right_sizer->Add(cost_bitmap, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
103 caption_right_sizer->Add(used_g_text, 1, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5));
104
105 caption_sizer->Add(caption_left_sizer, 1, 0, FromDIP(5));
106 caption_sizer->Add(caption_right_sizer, 1, 0, FromDIP(5));
107
108 topSizer->Add(caption_sizer, 0, wxEXPAND | wxALL, 0);
109 auto static_line = new StaticLine(m_panel);
110 topSizer->Add(static_line, 0, wxEXPAND | wxALL, 0);
111 wxGridSizer *grid_sizer = new wxGridSizer(2, wxSize(FromDIP(10), 0));
112 if (info) {
113 for (auto f : info->filaments_info) {
114 auto f_sizer = new wxBoxSizer(wxHORIZONTAL);
115 auto f_type = new Button(m_panel, f.type);
116 f_type->SetBorderColor(BUTTON_BORDER_COL);
117 wxColour color = decode_color(f.color);
118 f_type->SetBackgroundColor(color);
119 auto textcolor = wxColour(0, 0, 0);
120 if (calc_gray(color) <= 128)
121 textcolor = wxColour(255, 255, 255);
122 else
123 textcolor = wxColour(0, 0, 0);
124
125 f_type->SetTextColor(textcolor);
126 f_type->SetSize(wxSize(FromDIP(40), FromDIP(20)));
127 f_type->SetMinSize(wxSize(FromDIP(40), FromDIP(20)));
128 f_type->SetMaxSize(wxSize(FromDIP(40), FromDIP(20)));
129 f_type->SetCornerRadius(FromDIP(10));
130
131 wxString used_g_text = wxString::Format("%.1fg", f.used_g);
132 auto f_used_g = new wxStaticText(m_panel, wxID_ANY, used_g_text, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
133 f_used_g->Wrap(-1);
134 f_used_g->SetSize(wxSize(FromDIP(60), -1));
135 f_sizer->Add(f_type, 0, wxEXPAND | wxALL, FromDIP(5));
136 f_sizer->Add(f_used_g, 0, wxEXPAND | wxALL, FromDIP(5));
137 grid_sizer->Add(f_sizer, 0, wxEXPAND, 0);
138 f_type->Bind(wxEVT_LEFT_DOWN, [](auto &e) {});
139 }
140 }
141 topSizer->Add(grid_sizer, 0, wxALL, FromDIP(5));
142 main_sizer->Add(FromDIP(13), 0, 0, 0);
143 main_sizer->Add(topSizer, 0, wxEXPAND | wxALL, 0);
144 main_sizer->Add(FromDIP(13), 0, 0, 0);
145 main_sizer->SetMinSize(wxSize(FromDIP(200), -1));
146 m_panel->SetSizer(main_sizer);
147 m_panel->Layout();
148
149 main_sizer->Fit(m_panel);
150
151 SetClientSize(m_panel->GetSize());
152}
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
PopupWindow()
Definition PopupWindow.hpp:10
wxScrolledWindow * m_panel
Definition SliceInfoPanel.hpp:43
void OnMouse(wxMouseEvent &event)
Definition SliceInfoPanel.cpp:186
float calc_gray(wxColour color)
Definition SliceInfoPanel.cpp:46
static wxColour decode_color(const std::string &color)
Definition SliceInfoPanel.cpp:51
std::string get_bbl_monitor_time_dhm(float time_in_secs)
Definition Utils.hpp:707
static double f(double x, double z_sin, double z_cos, bool vertical, bool flip)
Definition FillGyroid.cpp:124
wxBitmap create_scaled_bitmap(const std::string &bmp_name_in, wxWindow *win, const int px_cnt, const bool grayscale, const std::string &new_color, const bool menu_bitmap, const bool resize, const bool bitmap2, const std::vector< std::string > &array_new_color)
Definition wxExtensions.cpp:448

References PopupWindow::PopupWindow(), Slic3r::GUI::calc_gray(), create_scaled_bitmap(), Slic3r::GUI::decode_color(), Slic3r::f(), Slic3r::BBLSliceInfo::filaments_info, Slic3r::get_bbl_monitor_time_dhm(), m_panel, OnMouse(), Slic3r::BBLSliceInfo::prediction, Slic3r::BBLSliceInfo::weight, and wxStaticText.

Referenced by wxDECLARE_ABSTRACT_CLASS().

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

◆ ~SliceInfoPopup()

virtual Slic3r::GUI::SliceInfoPopup::~SliceInfoPopup ( )
inlinevirtual
34{}

Member Function Documentation

◆ Create()

bool PopupWindow::Create ( wxWindow * parent,
int flags = wxBORDER_NONE )
inherited
22{
23 if (!wxPopupTransientWindow::Create(parent, style))
24 return false;
25#ifdef __WXGTK__
26 GetTopParent(parent)->Bind(wxEVT_ACTIVATE, &PopupWindow::topWindowActiavate, this);
27#endif
28#ifdef __WXOSX__
29 if (style & wxPU_CONTAINS_CONTROLS)
30 for (auto evt : {wxEVT_LEFT_DOWN, wxEVT_LEFT_UP, wxEVT_LEFT_DCLICK, wxEVT_MOTION, wxEVT_MOUSEWHEEL})
31 Bind(evt, &PopupWindow::OnMouseEvent2, this);
32#endif
33 return true;
34}
static wxWindow * GetTopParent(wxWindow *pWindow)
Definition PopupWindow.cpp:10
#define style
Definition WipeTowerDialog.cpp:101

References GetTopParent(), and style.

Referenced by PopupWindow(), and DropDown::Create().

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

◆ OnDismiss()

void Slic3r::GUI::SliceInfoPopup::OnDismiss ( )
virtual
158 {
159 PopupWindow::OnDismiss();
160}

◆ OnKillFocus()

void Slic3r::GUI::SliceInfoPopup::OnKillFocus ( wxFocusEvent & event)
private
182{
183 event.Skip();
184}

Referenced by Slic3r::GUI::wxBEGIN_EVENT_TABLE().

Here is the caller graph for this function:

◆ OnMouse()

void Slic3r::GUI::SliceInfoPopup::OnMouse ( wxMouseEvent & event)
private
187{
188 event.Skip();
189}

References Slic3r::GUI::wxMouseEvent.

Referenced by SliceInfoPopup(), and Slic3r::GUI::wxBEGIN_EVENT_TABLE().

Here is the caller graph for this function:

◆ OnSetFocus()

void Slic3r::GUI::SliceInfoPopup::OnSetFocus ( wxFocusEvent & event)
private
177{
178 event.Skip();
179}

Referenced by Slic3r::GUI::wxBEGIN_EVENT_TABLE().

Here is the caller graph for this function:

◆ OnSize()

void Slic3r::GUI::SliceInfoPopup::OnSize ( wxSizeEvent & event)
private
172{
173 event.Skip();
174}

Referenced by Slic3r::GUI::wxBEGIN_EVENT_TABLE().

Here is the caller graph for this function:

◆ Popup()

void Slic3r::GUI::SliceInfoPopup::Popup ( wxWindow * focus = NULL)
virtual
154 {
155 PopupWindow::Popup();
156}

◆ ProcessLeftDown()

bool Slic3r::GUI::SliceInfoPopup::ProcessLeftDown ( wxMouseEvent & event)
virtual
163{
164 return PopupWindow::ProcessLeftDown(event);
165}

References Slic3r::GUI::wxMouseEvent.

◆ ShouldDismissOnTopWindowDeactivate()

virtual bool PopupWindow::ShouldDismissOnTopWindowDeactivate ( )
inlineprotectedvirtualinherited

Reimplemented in DropDown.

28{ return true; }

◆ Show()

bool Slic3r::GUI::SliceInfoPopup::Show ( bool show = true)
virtual
167{
168 return PopupWindow::Show(show);
169}

◆ wxDECLARE_ABSTRACT_CLASS()

Slic3r::GUI::SliceInfoPopup::wxDECLARE_ABSTRACT_CLASS ( SliceInfoPopup )
private

References SliceInfoPopup(), and wxDECLARE_ABSTRACT_CLASS().

Referenced by wxDECLARE_ABSTRACT_CLASS().

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

◆ wxDECLARE_EVENT_TABLE()

Slic3r::GUI::SliceInfoPopup::wxDECLARE_EVENT_TABLE ( )
private

References wxDECLARE_EVENT_TABLE().

Referenced by wxDECLARE_EVENT_TABLE().

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

Member Data Documentation

◆ m_panel

wxScrolledWindow* Slic3r::GUI::SliceInfoPopup::m_panel
private

Referenced by SliceInfoPopup().


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