OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
StepIndicator Class Reference

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

Inheritance diagram for StepIndicator:
Collaboration diagram for StepIndicator:

Public Member Functions

 StepIndicator (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0)
virtual void Rescale ()
void SelectNext ()
void SetHint (wxString hint)
bool SetTipFont (wxFont const &font)
int AppendItem (const wxString &item, wxString const &tip={})
void DeleteAllItems ()
unsigned int GetCount () const
int GetSelection () const
void SelectItem (int item)
void Idle ()
wxString GetItemText (unsigned int item) const
int GetItemUseText (wxString txt) const
void SetItemText (unsigned int item, wxString const &value)
bool Create (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0)
void SetCornerRadius (double radius)
void SetBorderWidth (int width)
void SetTopMargin (int margin)
void SetBorderColor (StateColor const &color)
void SetBorderColorNormal (wxColor const &color)
void SetBorderStyle (wxPenStyle style)
void SetBackgroundColor (StateColor const &color)
void SetBackgroundColorNormal (wxColor const &color)
void SetBackgroundColor2 (StateColor const &color)
void ShowBadge (bool show)

Static Public Member Functions

static wxColor GetParentBackgroundColor (wxWindow *parent)

Protected Member Functions

void eraseEvent (wxEraseEvent &evt)
void sizeEvent (wxSizeEvent &evt)
void paintEvent (wxPaintEvent &evt)
void render (wxDC &dc)

Protected Attributes

wxFont font_tip
StateColor clr_bar
StateColor clr_step
StateColor clr_text
StateColor clr_tip
int radius = 7
int bar_width = 4
std::vector< wxString > steps
std::vector< wxString > tips
wxString hint
int step = -1
wxPoint drag_offset
wxPoint pos_thumb
int border_width = 1
int top_margin = 0
wxPenStyle border_style = wxPENSTYLE_SOLID
StateHandler state_handler
StateColor border_color
StateColor background_color
StateColor background_color2
ScalableBitmap badge

Private Member Functions

void doRender (wxDC &dc) override
bool sendStepCtrlEvent (bool changing=false)

Private Attributes

ScalableBitmap bmp_ok

Detailed Description

Constructor & Destructor Documentation

◆ StepIndicator()

StepIndicator::StepIndicator ( wxWindow * parent,
wxWindowID id,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0 )
268 : StepCtrlBase(parent, id, pos, size, style)
269 , bmp_ok(this, "step_ok", 12)
270{
271 SetFont(Label::Body_12);
273 clr_bar = 0xE1E1E1;
274 clr_step = StateColor(
275 std::make_pair(0xACACAC, (int) StateColor::Disabled),
276 std::make_pair(0x009688, 0));
277 clr_text = StateColor(
278 std::make_pair(0xACACAC, (int) StateColor::Disabled),
279 std::make_pair(0x323A3D, (int) StateColor::Checked),
280 std::make_pair(0x6B6B6B, 0));
281 clr_tip = *wxWHITE;
283 radius = bmp_ok.GetBmpHeight() / 2;
284 bar_width = bmp_ok.GetBmpHeight() / 20;
285 if (bar_width < 2) bar_width = 2;
286}
#define style
Definition WipeTowerDialog.cpp:101
static wxFont Body_12
Definition Label.hpp:55
static wxFont Body_10
Definition Label.hpp:56
@ Disabled
Definition StateColor.hpp:22
@ Checked
Definition StateColor.hpp:18
int border_width
Definition StaticBox.hpp:68
double radius
Definition StaticBox.hpp:67
StateColor clr_bar
Definition StepCtrl.hpp:25
wxFont font_tip
Definition StepCtrl.hpp:24
StateColor clr_step
Definition StepCtrl.hpp:26
StateColor clr_tip
Definition StepCtrl.hpp:28
StepCtrlBase(wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0)
Definition StepCtrl.cpp:32
int bar_width
Definition StepCtrl.hpp:30
StateColor clr_text
Definition StepCtrl.hpp:27
ScalableBitmap bmp_ok
Definition StepCtrl.hpp:102

References StepCtrlBase::StepCtrlBase(), StepCtrlBase::bar_width, bmp_ok, Label::Body_10, Label::Body_12, StaticBox::border_width, StateColor::Checked, StepCtrlBase::clr_bar, StepCtrlBase::clr_step, StepCtrlBase::clr_text, StepCtrlBase::clr_tip, StateColor::Disabled, StepCtrlBase::font_tip, StepCtrlBase::radius, and style.

Here is the call graph for this function:

Member Function Documentation

◆ AppendItem()

int StepCtrlBase::AppendItem ( const wxString & item,
wxString const & tip = {} )
inherited
87{
88 steps.push_back(item);
89 tips.push_back(tip);
90 return steps.size() - 1;
91}
std::vector< wxString > steps
Definition StepCtrl.hpp:32
std::vector< wxString > tips
Definition StepCtrl.hpp:33

References steps, and tips.

◆ Create()

bool StaticBox::Create ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0 )
inherited
52{
53 if (style & wxBORDER_NONE)
54 border_width = 0;
55 wxWindow::Create(parent, id, pos, size, style);
57 state_handler.update_binds();
58 SetBackgroundColour(GetParentBackgroundColor(parent));
59 return true;
60}
StateColor border_color
Definition StaticBox.hpp:72
static wxColor GetParentBackgroundColor(wxWindow *parent)
Definition StaticBox.cpp:122
StateHandler state_handler
Definition StaticBox.hpp:71
StateColor background_color
Definition StaticBox.hpp:73
StateColor background_color2
Definition StaticBox.hpp:74

References background_color, background_color2, border_color, border_width, GetParentBackgroundColor(), state_handler, and style.

Referenced by FanSwitchButton::FanSwitchButton(), ImageSwitchButton::ImageSwitchButton(), ModeSwitchButton::ModeSwitchButton(), StaticBox(), Button::Create(), SpinInput::Create(), TabButton::Create(), TempInput::Create(), and TextInput::Create().

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

◆ DeleteAllItems()

void StepCtrlBase::DeleteAllItems ( )
inherited
94{
95 steps.clear();
96 tips.clear();
97 if (step >= 0) {
98 step = -1;
100 }
101}
bool sendStepCtrlEvent(bool changing=false)
Definition StepCtrl.cpp:129
int step
Definition StepCtrl.hpp:36

References sendStepCtrlEvent(), step, steps, and tips.

Here is the call graph for this function:

◆ doRender()

void StepIndicator::doRender ( wxDC & dc)
overrideprivatevirtual

Reimplemented from StaticBox.

300{
301 if (steps.empty()) return;
302
304
305 wxSize size = GetSize();
306
307 int states = state_handler.states();
308 if (!IsEnabled()) {
309 states = clr_step.Disabled;
310 }
311
312 int textWidth = size.x - radius * 5;
313 dc.SetFont(GetFont());
314 wxString firstLine;
315 if (step == 0) dc.SetFont(GetFont().Bold());
316 wxSize firstLineSize = Label::split_lines(dc, textWidth, steps.front(), firstLine);
317 wxString lastLine;
318 if (step == steps.size() - 1) dc.SetFont(GetFont().Bold());
319 wxSize lastLineSize = Label::split_lines(dc, textWidth, steps.back(), lastLine);
320 int firstPadding = std::max(0, firstLineSize.y / 2 - radius);
321 int lastPadding = std::max(0, lastLineSize.y / 2 - radius);
322
323 wxRect rcBar = {radius * 2 - bar_width / 2, radius * 2 + firstPadding, bar_width, size.y - radius * 6 - firstPadding - lastPadding};
324 int itemWidth = steps.size() == 1 ? size.y : rcBar.height / (steps.size() - 1);
325
326 // Draw thin bar stick
327 dc.SetPen(wxPen(clr_bar.colorForStates(states)));
328 dc.SetBrush(wxBrush(clr_bar.colorForStates(states)));
329 dc.DrawRectangle(rcBar);
330
331 int circleX = radius * 2;
332 int circleY = radius * 3 + firstPadding;
333 dc.SetPen(wxPen(clr_step.colorForStates(states)));
334 dc.SetBrush(wxBrush(clr_step.colorForStates(states)));
335 for (int i = 0; i < steps.size(); ++i) {
336 bool disabled = step > i;
337 bool checked = step == i;
338 // Draw circle point & texts in it
339 dc.DrawEllipse(circleX - radius, circleY - radius, radius * 2, radius * 2);
340 // Draw content ( icon or text ) in circle
341 if (disabled) {
342 wxSize sz = bmp_ok.GetBmpSize();
343 dc.DrawBitmap(bmp_ok.bmp(), circleX - radius, circleY - radius);
344 } else {
345 dc.SetFont(font_tip);
346 dc.SetTextForeground(clr_tip.colorForStates(states));
347 auto tip = tips[i];
348 if (tip.IsEmpty()) tip.append(1, wchar_t(L'0' + i + 1));
349 wxSize sz = dc.GetTextExtent(tip);
350 dc.DrawText(tip, circleX - sz.x / 2, circleY - sz.y / 2 + 1);
351 }
352 // Draw step text
353 dc.SetTextForeground(clr_text.colorForStates(states
354 | (disabled ? StateColor::Disabled : checked ? StateColor::Checked : 0)));
355 dc.SetFont(checked ? GetFont().Bold() : GetFont());
356 wxString text;
357 wxSize textSize;
358 if (i == 0) {
359 text = firstLine;
360 textSize = firstLineSize;
361 } else if (i == steps.size() - 1) {
362 text = lastLine;
363 textSize = lastLineSize;
364 } else {
365 textSize = Label::split_lines(dc, textWidth, steps[i], text);
366 }
367 dc.DrawText(text, circleX + radius * 3, circleY - (textSize.y / 2));
368 circleY += itemWidth;
369 }
370}
#define L(s)
Definition ExtrusionEntity.cpp:25
static wxSize split_lines(wxDC &dc, int width, const wxString &text, wxString &multiline_text, int max_count=0)
Definition Label.cpp:293
virtual void doRender(wxDC &dc)
Definition StaticBox.cpp:214
bool IsEnabled()
Definition dark_mode.cpp:32
@ disabled
Definition GLGizmoEmboss.cpp:223

References StepCtrlBase::bar_width, bmp_ok, StateColor::Checked, StepCtrlBase::clr_bar, StepCtrlBase::clr_step, StepCtrlBase::clr_text, StepCtrlBase::clr_tip, StateColor::Disabled, StaticBox::doRender(), StepCtrlBase::font_tip, L, StepCtrlBase::radius, Label::split_lines(), StaticBox::state_handler, StepCtrlBase::step, StepCtrlBase::steps, and StepCtrlBase::tips.

Here is the call graph for this function:

◆ eraseEvent()

void StaticBox::eraseEvent ( wxEraseEvent & evt)
protectedinherited
153{
154 // for transparent background, but not work
155#ifdef __WXMSW__
156 wxDC *dc = evt.GetDC();
157 wxSize size = GetSize();
158 wxClientDC dc2(GetParent());
159 dc->Blit({0, 0}, size, &dc2, GetPosition());
160#endif
161}

◆ GetCount()

unsigned int StepCtrlBase::GetCount ( ) const
inherited
103{ return steps.size(); }

References steps.

◆ GetItemText()

wxString StepCtrlBase::GetItemText ( unsigned int item) const
inherited
106{
107 return item < steps.size() ? steps[item] : wxString{};
108}

References steps.

◆ GetItemUseText()

int StepCtrlBase::GetItemUseText ( wxString txt) const
inherited
111{
112 for(int i = 0; i < steps.size(); i++){
113 if (steps[i] == txt) {
114 return i;
115 }
116 else {
117 continue;
118 }
119 }
120 return 0;
121}

References steps.

◆ GetParentBackgroundColor()

wxColor StaticBox::GetParentBackgroundColor ( wxWindow * parent)
staticinherited
123{
124 if (auto box = dynamic_cast<StaticBox*>(parent)) {
125 if (box->background_color.count() > 0) {
126 if (box->background_color2.count() == 0)
127 return box->background_color.defaultColor();
128 auto s = box->background_color.defaultColor();
129 auto e = box->background_color2.defaultColor();
130 int r = (s.Red() + e.Red()) / 2;
131 int g = (s.Green() + e.Green()) / 2;
132 int b = (s.Blue() + e.Blue()) / 2;
133 return wxColor(r, g, b);
134 }
135 }
136 if (parent)
137 return parent->GetBackgroundColour();
138 return *wxWHITE;
139}
StaticBox()
Definition StaticBox.cpp:33

References StaticBox().

Referenced by Label::Label(), ModeSwitchButton::ModeSwitchButton(), ScalableButton::ScalableButton(), SwitchButton::SwitchButton(), Create(), and SwitchButton::Rescale().

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

◆ GetSelection()

int StepCtrlBase::GetSelection ( ) const
inherited
56{ return step; }

References step.

◆ Idle()

void StepCtrlBase::Idle ( )
inherited
68{
69 if (step != -1) {
70 step = -1;
72 Refresh();
73 }
74}

References sendStepCtrlEvent(), and step.

Here is the call graph for this function:

◆ paintEvent()

void StaticBox::paintEvent ( wxPaintEvent & evt)
protectedinherited
170{
171 // depending on your system you may need to look at double-buffered dcs
172 wxPaintDC dc(this);
173 render(dc);
174}
void render(wxDC &dc)
Definition StaticBox.cpp:181

References render().

Here is the call graph for this function:

◆ render()

void StaticBox::render ( wxDC & dc)
protectedinherited
182{
183#ifdef __WXMSW__
184 if (radius == 0) {
185 doRender(dc);
186 return;
187 }
188
189 wxSize size = GetSize();
190 if (size.x <= 0 || size.y <= 0)
191 return;
192 wxMemoryDC memdc(&dc);
193 if (!memdc.IsOk()) {
194 doRender(dc);
195 return;
196 }
197 wxBitmap bmp(size.x, size.y);
198 memdc.SelectObject(bmp);
199 //memdc.Blit({0, 0}, size, &dc, {0, 0});
200 memdc.SetBackground(wxBrush(GetBackgroundColour()));
201 memdc.Clear();
202 {
203 wxGCDC dc2(memdc);
204 doRender(dc2);
205 }
206
207 memdc.SelectObject(wxNullBitmap);
208 dc.DrawBitmap(bmp, 0, 0);
209#else
210 doRender(dc);
211#endif
212}

References doRender(), and radius.

Referenced by paintEvent(), Button::render(), FanSwitchButton::render(), ImageSwitchButton::render(), SpinInput::render(), TabButton::render(), TempInput::render(), and TextInput::render().

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

◆ Rescale()

void StepIndicator::Rescale ( )
virtual
289{
290 bmp_ok.msw_rescale();
291 radius = bmp_ok.GetBmpHeight() / 2;
292 bar_width = bmp_ok.GetBmpHeight() / 20;
293 if (bar_width < 2) bar_width = 2;
294}

References StepCtrlBase::bar_width, bmp_ok, and StepCtrlBase::radius.

◆ SelectItem()

void StepCtrlBase::SelectItem ( int item)
inherited
59{
60 if (item == step || item < -1 || item >= steps.size() || !sendStepCtrlEvent(true))
61 return;
62 step = item;
64 Refresh();
65}

References sendStepCtrlEvent(), step, and steps.

Referenced by StepCtrl::mouseDown(), StepCtrl::mouseUp(), FilamentStepIndicator::SelectNext(), and StepIndicator::SelectNext().

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

◆ SelectNext()

void StepIndicator::SelectNext ( )
296{ SelectItem(step + 1); }
void SelectItem(int item)
Definition StepCtrl.cpp:58

References StepCtrlBase::SelectItem(), and StepCtrlBase::step.

Here is the call graph for this function:

◆ sendStepCtrlEvent()

bool StepCtrlBase::sendStepCtrlEvent ( bool changing = false)
privateinherited
130{
131 wxCommandEvent event(changing ? EVT_STEP_CHANGING : EVT_STEP_CHANGED, GetId());
132 event.SetEventObject(this);
133 event.SetInt(step);
134 GetEventHandler()->ProcessEvent(event);
135 return true;
136}

References step.

Referenced by DeleteAllItems(), Idle(), and SelectItem().

Here is the caller graph for this function:

◆ SetBackgroundColor()

◆ SetBackgroundColor2()

void StaticBox::SetBackgroundColor2 ( StateColor const & color)
inherited
116{
117 background_color2 = color;
118 state_handler.update_binds();
119 Refresh();
120}

References background_color2, and state_handler.

◆ SetBackgroundColorNormal()

void StaticBox::SetBackgroundColorNormal ( wxColor const & color)
inherited
110{
111 background_color.setColorForStates(color, 0);
112 Refresh();
113}

References background_color.

Referenced by Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), and Slic3r::GUI::HotEndTable::CreateNozzleBox().

Here is the caller graph for this function:

◆ SetBorderColor()

◆ SetBorderColorNormal()

void StaticBox::SetBorderColorNormal ( wxColor const & color)
inherited
97{
98 border_color.setColorForStates(color, 0);
99 Refresh();
100}

References border_color.

Referenced by Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), and Slic3r::GUI::HotEndTable::CreateNozzleBox().

Here is the caller graph for this function:

◆ SetBorderStyle()

void StaticBox::SetBorderStyle ( wxPenStyle style)
inherited
76{
78 Refresh();
79}
wxPenStyle border_style
Definition StaticBox.hpp:70

References border_style, and style.

◆ SetBorderWidth()

void StaticBox::SetBorderWidth ( int width)
inherited
82{
84 Refresh();
85}
coord_t width(const BoundingBox &box)
Definition Arrange.cpp:1184

References border_width.

Referenced by MultiSwitchButton::MultiSwitchButton(), Slic3r::GUI::KBShortcutsDialog::create_page(), and Button::SetStyle().

Here is the caller graph for this function:

◆ SetCornerRadius()

◆ SetHint()

void StepCtrlBase::SetHint ( wxString hint)
inherited
82 {
83 this->hint = hint;
84}
wxString hint
Definition StepCtrl.hpp:34

References hint.

◆ SetItemText()

void StepCtrlBase::SetItemText ( unsigned int item,
wxString const & value )
inherited
124{
125 if (item >= steps.size()) return;
126 steps[item] = value;
127}

References steps.

◆ SetTipFont()

bool StepCtrlBase::SetTipFont ( wxFont const & font)
inherited
77{
78 font_tip = font;
79 return true;
80}

References font_tip.

◆ SetTopMargin()

void StaticBox::SetTopMargin ( int margin)
inherited
70{
71 this->top_margin = margin;
72 Refresh();
73}
int top_margin
Definition StaticBox.hpp:69

References top_margin.

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

Here is the caller graph for this function:

◆ ShowBadge()

void StaticBox::ShowBadge ( bool show)
inherited
142{
143 if (show && badge.name() != "badge") {
144 badge = ScalableBitmap(this, "badge", 18);
145 Refresh();
146 } else if (!show && !badge.name().empty()) {
147 badge = ScalableBitmap {};
148 Refresh();
149 }
150}
ScalableBitmap badge
Definition StaticBox.hpp:75

References badge.

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

Here is the caller graph for this function:

◆ sizeEvent()

void StaticBox::sizeEvent ( wxSizeEvent & evt)
protectedinherited
164{
165 Refresh();
166 evt.Skip();
167}

Member Data Documentation

◆ background_color

◆ background_color2

StateColor StaticBox::background_color2
protectedinherited

◆ badge

ScalableBitmap StaticBox::badge
protectedinherited

Referenced by doRender(), and ShowBadge().

◆ bar_width

◆ bmp_ok

ScalableBitmap StepIndicator::bmp_ok
private

Referenced by StepIndicator(), doRender(), and Rescale().

◆ border_color

◆ border_style

wxPenStyle StaticBox::border_style = wxPENSTYLE_SOLID
protectedinherited

Referenced by doRender(), and SetBorderStyle().

◆ border_width

◆ clr_bar

◆ clr_step

◆ clr_text

◆ clr_tip

◆ drag_offset

wxPoint StepCtrlBase::drag_offset
protectedinherited

◆ font_tip

◆ hint

wxString StepCtrlBase::hint
protectedinherited

Referenced by StepCtrl::doRender(), and SetHint().

◆ pos_thumb

wxPoint StepCtrlBase::pos_thumb
protectedinherited

◆ radius

◆ state_handler

◆ step

◆ steps

◆ tips

std::vector<wxString> StepCtrlBase::tips
protectedinherited

◆ top_margin

int StaticBox::top_margin = 0
protectedinherited

Referenced by doRender(), and SetTopMargin().


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