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

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

Inheritance diagram for FilamentStepIndicator:
Collaboration diagram for FilamentStepIndicator:

Public Member Functions

 FilamentStepIndicator (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0)
virtual void Rescale ()
void SelectNext ()
void SetSlotInformation (wxString slot)
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
wxString m_slot_information = ""

Detailed Description

Constructor & Destructor Documentation

◆ FilamentStepIndicator()

FilamentStepIndicator::FilamentStepIndicator ( wxWindow * parent,
wxWindowID id,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0 )
376 : StepCtrlBase(parent, id, pos, size, style)
377 , bmp_ok(this, "step_ok", 12)
378{
379 static Slic3r::GUI::BitmapCache cache;
380 //bmp_extruder = *cache.load_png("filament_load_extruder", FromDIP(300), FromDIP(200), false, false);
381 SetFont(Label::Body_12);
383 clr_bar = 0xE1E1E1;
384 clr_step = StateColor(
385 std::make_pair(0xACACAC, (int)StateColor::Disabled),
386 std::make_pair(0x009688, 0));
387 clr_text = StateColor(
388 std::make_pair(0xACACAC, (int)StateColor::Disabled),
389 std::make_pair(0x323A3D, (int)StateColor::Checked),
390 std::make_pair(0x6B6B6B, 0));
391 clr_tip = *wxWHITE;
393 radius = 9;
394 bar_width = 0;
395}
#define style
Definition WipeTowerDialog.cpp:101
ScalableBitmap bmp_ok
Definition StepCtrl.hpp:122
static wxFont Body_12
Definition Label.hpp:55
@ 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

References StepCtrlBase::StepCtrlBase(), StepCtrlBase::bar_width, bmp_ok, 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 FilamentStepIndicator::doRender ( wxDC & dc)
overrideprivatevirtual

Reimplemented from StaticBox.

409{
410
411
412 if (steps.empty()) return;
413
415
416 wxSize size = GetSize();
417
418 int states = state_handler.states();
419 if (!IsEnabled()) {
420 states = clr_step.Disabled;
421 }
422
423 dc.SetFont(::Label::Head_16);
424 dc.SetTextForeground(wxColour(0, 150, 136));
425 int circleX = 20;
426 int circleY = 20;
427 const wxString loading = _L("Loading");
428 wxSize sz = dc.GetTextExtent(loading);
429 dc.DrawText(loading, circleX, circleY);
430
431 dc.SetFont(::Label::Body_13);
432
433 //dc.DrawBitmap(bmp_extruder, FromDIP(250), circleY);
434 circleY += sz.y;
435
436 int textWidth = size.x - radius * 5;
437 dc.SetFont(GetFont());
438 wxString firstLine;
439 if (step == 0) dc.SetFont(GetFont().Bold());
440 wxSize firstLineSize = Label::split_lines(dc, textWidth, steps.front(), firstLine);
441 wxString lastLine;
442 if (step == steps.size() - 1) dc.SetFont(GetFont().Bold());
443 wxSize lastLineSize = Label::split_lines(dc, textWidth, steps.back(), lastLine);
444 int firstPadding = std::max(0, firstLineSize.y / 2 - radius);
445 int lastPadding = std::max(0, lastLineSize.y / 2 - radius);
446
447 int itemWidth = radius * 3;
448
449 // Draw thin bar stick
450 dc.SetPen(wxPen(clr_bar.colorForStates(states)));
451 dc.SetBrush(wxBrush(clr_bar.colorForStates(states)));
452 //dc.DrawRectangle(rcBar);
453
454 circleX += radius;
455 circleY += radius * 3 + firstPadding;
456 dc.SetPen(wxPen(clr_step.colorForStates(states)));
457 dc.SetBrush(wxBrush(clr_step.colorForStates(states)));
458 for (int i = 0; i < steps.size(); ++i) {
459 bool disabled = step > i;
460 bool checked = step == i;
461 // Draw circle point & texts in it
462 dc.DrawEllipse(circleX - radius, circleY - radius, radius * 2, radius * 2);
463 // Draw content ( icon or text ) in circle
464 if (disabled) {
465 wxSize sz = bmp_ok.GetBmpSize();
466 dc.DrawBitmap(bmp_ok.bmp(), circleX - sz.x / 2, circleY - sz.y / 2);
467 }
468 else {
469 dc.SetFont(font_tip);
470 dc.SetTextForeground(clr_tip.colorForStates(states));
471 auto tip = tips[i];
472 if (tip.IsEmpty()) tip.append(1, wchar_t(L'0' + i + 1));
473 wxSize sz = dc.GetTextExtent(tip);
474 dc.DrawText(tip, circleX - sz.x / 2, circleY - sz.y / 2 + 1);
475 }
476 // Draw step text
477 dc.SetTextForeground(clr_text.colorForStates(states
478 | (disabled ? StateColor::Disabled : checked ? StateColor::Checked : 0)));
479 dc.SetFont(checked ? GetFont().Bold() : GetFont());
480 wxString text;
481 wxSize textSize;
482 if (i == 0) {
483 text = firstLine;
484 textSize = firstLineSize;
485 }
486 else if (i == steps.size() - 1) {
487 text = lastLine;
488 textSize = lastLineSize;
489 }
490 else {
491 textSize = Label::split_lines(dc, textWidth, steps[i], text);
492 }
493 dc.DrawText(text, circleX + radius * 1.5, circleY - (textSize.y / 2));
494 circleY += itemWidth;
495 }
496}
#define L(s)
Definition ExtrusionEntity.cpp:25
#define _L(s)
Definition OBJ.cpp:34
static wxFont Body_13
Definition Label.hpp:54
static wxFont Head_16
Definition Label.hpp:43
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 _L, bmp_ok, Label::Body_13, StateColor::Checked, StepCtrlBase::clr_bar, StepCtrlBase::clr_step, StepCtrlBase::clr_text, StepCtrlBase::clr_tip, StateColor::Disabled, StaticBox::doRender(), StepCtrlBase::font_tip, Label::Head_16, 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 FilamentStepIndicator::Rescale ( )
virtual
398{
399 bmp_ok.msw_rescale();
400 radius = bmp_ok.GetBmpHeight() / 2;
401 bar_width = bmp_ok.GetBmpHeight() / 20;
402 if (bar_width < 2) bar_width = 2;
403}

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 FilamentStepIndicator::SelectNext ( )
405{ 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.

◆ SetSlotInformation()

void FilamentStepIndicator::SetSlotInformation ( wxString slot)
498 {
499 this->m_slot_information = slot;
500}
wxString m_slot_information
Definition StepCtrl.hpp:124

References m_slot_information.

◆ 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 FilamentStepIndicator::bmp_ok
private

◆ 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().

◆ m_slot_information

wxString FilamentStepIndicator::m_slot_information = ""
private

Referenced by SetSlotInformation().

◆ 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