OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::BBLStatusBar Class Reference

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

Inheritance diagram for Slic3r::BBLStatusBar:
Collaboration diagram for Slic3r::BBLStatusBar:

Public Types

using CancelFn = std::function<void()>
 Cancel callback function type.

Public Member Functions

 BBLStatusBar (wxWindow *parent=nullptr, int id=-1)
 ~BBLStatusBar ()=default
int get_progress () const
void set_progress (int) override
int get_range () const override
void set_range (int=100) override
void clear_percent () override
void show_error_info (wxString msg, int code, wxString description, wxString extra) override
void show_progress (bool)
void start_busy (int=100)
void stop_busy ()
bool is_busy () const
void set_cancel_callback (CancelFn=CancelFn()) override
void reset_cancel_callback ()
wxPanel * get_panel ()
void set_status_text (const wxString &txt)
void set_status_text (const std::string &txt)
void set_status_text (const char *txt) override
wxString get_status_text () const
void set_font (const wxFont &font)
void set_object_info (const wxString &txt)
void set_slice_info (const wxString &txt)
void show_slice_info (bool show)
bool is_slice_info_shown ()
void show_cancel_button ()
void hide_cancel_button ()

Private Attributes

wxPanel * m_self
wxGauge * m_prog
wxButton * m_cancelbutton
wxStaticText * m_status_text
wxStaticText * m_object_info
wxStaticText * m_slice_info
wxBoxSizer * m_slice_info_sizer
wxBoxSizer * m_object_info_sizer
wxBoxSizer * m_sizer
bool m_busy = false
CancelFn m_cancel_cb

Detailed Description

Member Typedef Documentation

◆ CancelFn

using Slic3r::ProgressIndicator::CancelFn = std::function<void()>
inherited

Cancel callback function type.

Constructor & Destructor Documentation

◆ BBLStatusBar()

Slic3r::BBLStatusBar::BBLStatusBar ( wxWindow * parent = nullptr,
int id = -1 )
24 : m_self{new wxPanel(parent, id == -1 ? wxID_ANY : id)}
25 , m_prog{new wxGauge(m_self,
26 wxGA_HORIZONTAL,
27 100,
28 wxDefaultPosition,
29 wxSize(120, -1))}
31 -1,
32 _(L("Cancel")),
33 wxDefaultPosition,
34 wxDefaultSize)}
35 , m_sizer(new wxBoxSizer(wxHORIZONTAL))
36 , m_slice_info_sizer(new wxBoxSizer(wxHORIZONTAL))
37 , m_object_info_sizer(new wxBoxSizer(wxHORIZONTAL))
38{
39 m_status_text = new wxStaticText(m_self, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
40 m_status_text->SetForegroundColour(*wxBLACK);
41
42 m_object_info = new wxStaticText(m_self, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
43 m_object_info->SetForegroundColour(*wxBLACK);
44
45 m_slice_info = new wxStaticText(m_self, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
46 m_slice_info->SetForegroundColour(*wxBLACK);
47
48 wxStaticLine* seperator_1 = new wxStaticLine(m_self, wxID_ANY, wxDefaultPosition, wxSize(3, -1), wxLI_VERTICAL);
49 wxStaticLine* seperator_2 = new wxStaticLine(m_self, wxID_ANY, wxDefaultPosition, wxSize(3, -1), wxLI_VERTICAL);
50
51 m_object_info_sizer->Add(m_object_info, 1, wxEXPAND | wxALL, 0);
52 m_object_info_sizer->Add(seperator_1, 0, wxEXPAND | wxLEFT | wxRIGHT, 5);
53
54 m_slice_info_sizer->Add(m_slice_info, 1, wxEXPAND | wxALL, 0);
55 m_slice_info_sizer->Add(seperator_2, 0, wxEXPAND | wxLEFT | wxRIGHT, 5);
56
57 m_cancelbutton->Bind(wxEVT_BUTTON, [this](const wxCommandEvent&) {
58 if (m_cancel_cb)
60 m_cancelbutton->Hide();
61 });
62
63 m_sizer->Add(m_object_info_sizer, 1, wxEXPAND | wxALL, 5);
64 m_sizer->Add(m_slice_info_sizer, 1, wxEXPAND | wxALL, 5);
65 m_sizer->Add(m_status_text, 1, wxEXPAND | wxALL, 5);
66 m_sizer->Add(m_prog, 0, wxEXPAND | wxLEFT | wxALL, 5);
67 m_sizer->Add(m_cancelbutton, 0, wxEXPAND | wxALL, 5);
68 m_sizer->SetSizeHints(m_self);
69 m_self->SetSizer(m_sizer);
70
73 m_sizer->Hide(m_prog);
75 m_sizer->Layout();
76}
#define _(s)
Definition 3mf.cpp:306
#define L(s)
Definition ExtrusionEntity.cpp:25
class WXDLLIMPEXP_FWD_CORE wxButton
Definition ProgressDialog.hpp:27
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
class WXDLLIMPEXP_FWD_CORE wxGauge
Definition ProgressDialog.hpp:29
wxStaticText * m_object_info
Definition BBLStatusBar.hpp:32
wxStaticText * m_slice_info
Definition BBLStatusBar.hpp:33
wxBoxSizer * m_object_info_sizer
Definition BBLStatusBar.hpp:35
wxBoxSizer * m_slice_info_sizer
Definition BBLStatusBar.hpp:34
wxButton * m_cancelbutton
Definition BBLStatusBar.hpp:30
wxBoxSizer * m_sizer
Definition BBLStatusBar.hpp:36
wxGauge * m_prog
Definition BBLStatusBar.hpp:29
wxPanel * m_self
Definition BBLStatusBar.hpp:28
CancelFn m_cancel_cb
Definition BBLStatusBar.hpp:72
wxStaticText * m_status_text
Definition BBLStatusBar.hpp:31

References _, L, m_cancel_cb, m_cancelbutton, m_object_info, m_object_info_sizer, m_prog, m_self, m_sizer, m_slice_info, m_slice_info_sizer, m_status_text, wxButton, wxGauge, and wxStaticText.

◆ ~BBLStatusBar()

Slic3r::BBLStatusBar::~BBLStatusBar ( )
default

Member Function Documentation

◆ clear_percent()

void Slic3r::BBLStatusBar::clear_percent ( )
overridevirtual

Implements Slic3r::ProgressIndicator.

133{
134
135}

◆ get_panel()

wxPanel * Slic3r::BBLStatusBar::get_panel ( )
185{
186 return m_self;
187}

References m_self.

◆ get_progress()

int Slic3r::BBLStatusBar::get_progress ( ) const
79{
80 return m_prog->GetValue();
81}

References m_prog.

◆ get_range()

int Slic3r::BBLStatusBar::get_range ( ) const
overridevirtual

Implements Slic3r::ProgressIndicator.

121{
122 return m_prog->GetRange();
123}

References m_prog.

◆ get_status_text()

wxString Slic3r::BBLStatusBar::get_status_text ( ) const
205{
206 return m_status_text->GetLabelText();
207}

References m_status_text.

◆ hide_cancel_button()

void Slic3r::BBLStatusBar::hide_cancel_button ( )
264{
265 m_sizer->Hide(m_cancelbutton);
266 m_sizer->Layout();
267}

References m_cancelbutton, and m_sizer.

Referenced by stop_busy().

Here is the caller graph for this function:

◆ is_busy()

bool Slic3r::BBLStatusBar::is_busy ( ) const
inline
52{ return m_busy; }
bool m_busy
Definition BBLStatusBar.hpp:71

References m_busy.

◆ is_slice_info_shown()

bool Slic3r::BBLStatusBar::is_slice_info_shown ( )
248{
249 return m_sizer->IsShown(m_slice_info_sizer);
250}

References m_sizer, and m_slice_info_sizer.

◆ reset_cancel_callback()

void Slic3r::BBLStatusBar::reset_cancel_callback ( )
inline
void set_cancel_callback(CancelFn=CancelFn()) override
Definition BBLStatusBar.cpp:174

References set_cancel_callback().

Here is the call graph for this function:

◆ set_cancel_callback()

void Slic3r::BBLStatusBar::set_cancel_callback ( BBLStatusBar::CancelFn ccb = CancelFn())
overridevirtual

Implements Slic3r::ProgressIndicator.

174 {
175 m_cancel_cb = ccb;
176 if (ccb) {
177 m_sizer->Show(m_cancelbutton);
178 }
179 else {
180 m_sizer->Hide(m_cancelbutton);
181 }
182}

References m_cancel_cb, m_cancelbutton, and m_sizer.

Referenced by reset_cancel_callback().

Here is the caller graph for this function:

◆ set_font()

void Slic3r::BBLStatusBar::set_font ( const wxFont & font)
253{
254 m_self->SetFont(font);
255}

References m_self.

◆ set_object_info()

void Slic3r::BBLStatusBar::set_object_info ( const wxString & txt)
210{
211 if (txt == "") {
212 m_object_info->SetLabelText("");
214 }
215 else {
216 if (!m_sizer->IsShown(m_object_info_sizer)) {
218 }
219 m_object_info->SetLabelText(txt);
220 }
221 m_sizer->Layout();
222}

References m_object_info, m_object_info_sizer, and m_sizer.

◆ set_progress()

void Slic3r::BBLStatusBar::set_progress ( int val)
overridevirtual

Implements Slic3r::ProgressIndicator.

84{
85 if(val < 0)
86 return;
87
88 bool need_layout = false;
89 //add the logic for arrange/orient jobs, which don't call stop_busy
90 if(val == m_prog->GetRange()) {
91 m_prog->SetValue(0);
92 m_sizer->Hide(m_prog);
93 need_layout = true;
94 }
95 else
96 {
97 if (m_sizer->IsShown(m_object_info_sizer)) {
99 need_layout = true;
100 }
101
102 if (m_sizer->IsShown(m_slice_info_sizer)) {
104 need_layout = true;
105 }
106
107 if (!m_sizer->IsShown(m_prog)) {
108 m_sizer->Show(m_prog);
109 m_sizer->Show(m_cancelbutton);
110 need_layout = true;
111 }
112 m_prog->SetValue(val);
113 }
114
115 if (need_layout) {
116 m_sizer->Layout();
117 }
118}

References m_cancelbutton, m_object_info_sizer, m_prog, m_sizer, and m_slice_info_sizer.

◆ set_range()

void Slic3r::BBLStatusBar::set_range ( int val = 100)
overridevirtual

Implements Slic3r::ProgressIndicator.

126{
127 if(val != m_prog->GetRange()) {
128 m_prog->SetRange(val);
129 }
130}

References m_prog.

◆ set_slice_info()

void Slic3r::BBLStatusBar::set_slice_info ( const wxString & txt)
225{
226 if (!txt.empty()) {
227 if (!m_sizer->IsShown(m_slice_info_sizer)) {
229 }
230 m_slice_info->SetLabelText(txt);
231 m_sizer->Layout();
232 }
233}

References m_sizer, m_slice_info, and m_slice_info_sizer.

◆ set_status_text() [1/3]

void Slic3r::BBLStatusBar::set_status_text ( const char * txt)
overridevirtual

Implements Slic3r::ProgressIndicator.

200{
201 this->set_status_text(wxString::FromUTF8(txt));
202}
void set_status_text(const wxString &txt)
Definition BBLStatusBar.cpp:189

References set_status_text().

Here is the call graph for this function:

◆ set_status_text() [2/3]

void Slic3r::BBLStatusBar::set_status_text ( const std::string & txt)
195{
196 this->set_status_text(txt.c_str());
197}

References set_status_text().

Here is the call graph for this function:

◆ set_status_text() [3/3]

void Slic3r::BBLStatusBar::set_status_text ( const wxString & txt)
190{
191 m_status_text->SetLabelText(txt);
192}

References m_status_text.

Referenced by set_status_text(), and set_status_text().

Here is the caller graph for this function:

◆ show_cancel_button()

void Slic3r::BBLStatusBar::show_cancel_button ( )
258{
259 m_sizer->Show(m_cancelbutton);
260 m_sizer->Layout();
261}

References m_cancelbutton, and m_sizer.

Referenced by start_busy().

Here is the caller graph for this function:

◆ show_error_info()

void Slic3r::BBLStatusBar::show_error_info ( wxString msg,
int code,
wxString description,
wxString extra )
overridevirtual

Implements Slic3r::ProgressIndicator.

138{
139
140}

◆ show_progress()

void Slic3r::BBLStatusBar::show_progress ( bool show)
143{
144 if (show) {
145 m_sizer->Hide(m_object_info);
146 m_sizer->Hide(m_slice_info);
147
148 m_sizer->Show(m_prog);
149 m_sizer->Layout();
150 }
151 else {
152 m_sizer->Hide(m_prog);
153 m_sizer->Layout();
154 }
155}

References m_object_info, m_prog, m_sizer, and m_slice_info.

Referenced by start_busy(), and stop_busy().

Here is the caller graph for this function:

◆ show_slice_info()

void Slic3r::BBLStatusBar::show_slice_info ( bool show)
236{
237 if (show) {
239 m_sizer->Layout();
240 }
241 else {
243 m_sizer->Layout();
244 }
245}

References m_sizer, and m_slice_info_sizer.

◆ start_busy()

void Slic3r::BBLStatusBar::start_busy ( int rate = 100)
158{
159 m_busy = true;
160 show_progress(true);
162}
void show_cancel_button()
Definition BBLStatusBar.cpp:257
void show_progress(bool)
Definition BBLStatusBar.cpp:142

References m_busy, show_cancel_button(), and show_progress().

Here is the call graph for this function:

◆ stop_busy()

void Slic3r::BBLStatusBar::stop_busy ( )
165{
166 show_progress(false);
168 m_prog->SetValue(0);
170 m_sizer->Layout();
171 m_busy = false;
172}
void hide_cancel_button()
Definition BBLStatusBar.cpp:263

References hide_cancel_button(), m_busy, m_prog, m_sizer, m_slice_info_sizer, and show_progress().

Here is the call graph for this function:

Member Data Documentation

◆ m_busy

bool Slic3r::BBLStatusBar::m_busy = false
private

Referenced by is_busy(), start_busy(), and stop_busy().

◆ m_cancel_cb

CancelFn Slic3r::BBLStatusBar::m_cancel_cb
private

◆ m_cancelbutton

wxButton* Slic3r::BBLStatusBar::m_cancelbutton
private

◆ m_object_info

wxStaticText* Slic3r::BBLStatusBar::m_object_info
private

◆ m_object_info_sizer

wxBoxSizer* Slic3r::BBLStatusBar::m_object_info_sizer
private

◆ m_prog

wxGauge* Slic3r::BBLStatusBar::m_prog
private

◆ m_self

wxPanel* Slic3r::BBLStatusBar::m_self
private

Referenced by BBLStatusBar(), get_panel(), and set_font().

◆ m_sizer

◆ m_slice_info

wxStaticText* Slic3r::BBLStatusBar::m_slice_info
private

◆ m_slice_info_sizer

wxBoxSizer* Slic3r::BBLStatusBar::m_slice_info_sizer
private

◆ m_status_text

wxStaticText* Slic3r::BBLStatusBar::m_status_text
private

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