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

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

Inheritance diagram for StepCtrlBase:
Collaboration diagram for StepCtrlBase:

Public Member Functions

 StepCtrlBase (wxWindow *parent, wxWindowID id, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0)
 ~StepCtrlBase ()
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)
virtual void doRender (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

bool sendStepCtrlEvent (bool changing=false)

Detailed Description

Constructor & Destructor Documentation

◆ StepCtrlBase()

StepCtrlBase::StepCtrlBase ( wxWindow * parent,
wxWindowID id,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0 )
37 : StaticBox(parent, id, pos, size, style)
39 , clr_bar(0xACACAC)
40 , clr_step(0xACACAC)
41 , clr_text(std::make_pair(0x009688, (int) StateColor::Checked),
42 std::make_pair(0x6B6B6B, (int) StateColor::Normal))
43 , clr_tip(0x828280)
44{
45 SetFont(Label::Body_14);
46 border_color = StateColor(*wxLIGHT_GREY);
48 //wxString reason;
49 //IsTransparentBackgroundSupported(&reason);
50}
#define style
Definition WipeTowerDialog.cpp:101
static wxFont Body_14
Definition Label.hpp:53
@ Normal
Definition StateColor.hpp:16
@ Checked
Definition StateColor.hpp:18
StateColor border_color
Definition StaticBox.hpp:72
double radius
Definition StaticBox.hpp:67
StaticBox()
Definition StaticBox.cpp:33
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
StateColor clr_text
Definition StepCtrl.hpp:27

References StaticBox::StaticBox(), StepCtrlBase(), Label::Body_14, StaticBox::border_color, clr_bar, clr_step, clr_text, clr_tip, font_tip, StaticBox::radius, and style.

Referenced by FilamentStepIndicator::FilamentStepIndicator(), StepCtrl::StepCtrl(), StepCtrlBase(), and StepIndicator::StepIndicator().

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

◆ ~StepCtrlBase()

StepCtrlBase::~StepCtrlBase ( )
53{
54}

Member Function Documentation

◆ AppendItem()

int StepCtrlBase::AppendItem ( const wxString & item,
wxString const & tip = {} )
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}
int border_width
Definition StaticBox.hpp:68
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 ( )
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 StaticBox::doRender ( wxDC & dc)
protectedvirtualinherited

Reimplemented in FilamentStepIndicator, ModeSwitchButton, StepCtrl, StepIndicator, and TabCtrl.

215{
216 wxSize size = GetSize();
217 int states = state_handler.states();
218 if (background_color2.count() == 0) {
219 if ((border_width && border_color.count() > 0) || background_color.count() > 0) {
220 int topM = top_margin > 0 ? top_margin : 0;
221 wxRect rc(0, topM, size.x, size.y - topM);
222 if (border_width && border_color.count() > 0) {
223 const double scale = dc.GetContentScaleFactor();
224
225 // Snap rect edges to physical pixel boundaries so the 1px pen doesn't straddle a pixel boundary
226 auto snap = [&](int logical) -> int {
227 return (int)(ceil(logical * scale) / scale);
228 };
229
230 int deflate = snap(border_width / 2.0); // at 175%: snap(0.5) = snap→1/1.75 ≈ 1
231 rc.x += deflate;
232 rc.y += deflate;
233 rc.width -= deflate * 2;
234 rc.height -= deflate * 2;
235 dc.SetPen(wxPen(border_color.colorForStates(states), border_width, border_style));
236 } else {
237 dc.SetPen(wxPen(background_color.colorForStates(states)));
238 }
239 if (background_color.count() > 0)
240 dc.SetBrush(wxBrush(background_color.colorForStates(states)));
241 else
242 dc.SetBrush(wxBrush(GetBackgroundColour()));
243 if (radius == 0) {
244 dc.DrawRectangle(rc);
245 }
246 else {
247 dc.DrawRoundedRectangle(rc, radius - border_width);
248 }
249 }
250 }
251 else {
252 wxColor start = background_color.colorForStates(states);
253 wxColor stop = background_color2.colorForStates(states);
254 int r = start.Red(), g = start.Green(), b = start.Blue();
255 int dr = (int) stop.Red() - r, dg = (int) stop.Green() - g, db = (int) stop.Blue() - b;
256 int lr = 0, lg = 0, lb = 0;
257 for (int y = 0; y < size.y; ++y) {
258 dc.SetPen(wxPen(wxColor(r, g, b)));
259 dc.DrawLine(0, y, size.x, y);
260 lr += dr; while (lr >= size.y) { ++r, lr -= size.y; } while (lr <= -size.y) { --r, lr += size.y; }
261 lg += dg; while (lg >= size.y) { ++g, lg -= size.y; } while (lg <= -size.y) { --g, lg += size.y; }
262 lb += db; while (lb >= size.y) { ++b, lb -= size.y; } while (lb <= -size.y) { --b, lb += size.y; }
263 }
264 }
265
266 if (badge.bmp().IsOk()) {
267 auto s = badge.bmp().GetScaledSize();
268 dc.DrawBitmap(badge.bmp(), size.x - s.x, top_margin > 0 ? top_margin : 0);
269 }
270}
int scale(const int val)
Definition WipeTowerDialog.cpp:58
ScalableBitmap badge
Definition StaticBox.hpp:75
int top_margin
Definition StaticBox.hpp:69
wxPenStyle border_style
Definition StaticBox.hpp:70

References background_color, background_color2, badge, border_color, border_style, border_width, radius, scale(), state_handler, and top_margin.

Referenced by FilamentStepIndicator::doRender(), StepCtrl::doRender(), StepIndicator::doRender(), and render().

Here is the call graph for this function:
Here is the caller 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
103{ return steps.size(); }

References steps.

◆ GetItemText()

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

References steps.

◆ GetItemUseText()

int StepCtrlBase::GetItemUseText ( wxString txt) const
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}

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
56{ return step; }

References step.

◆ Idle()

void StepCtrlBase::Idle ( )
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}
virtual void doRender(wxDC &dc)
Definition StaticBox.cpp:214

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:

◆ SelectItem()

void StepCtrlBase::SelectItem ( int item)
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:

◆ sendStepCtrlEvent()

bool StepCtrlBase::sendStepCtrlEvent ( bool changing = false)
private
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}

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)
82 {
83 this->hint = hint;
84}
wxString hint
Definition StepCtrl.hpp:34

References hint.

◆ SetItemText()

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

References steps.

◆ SetTipFont()

bool StepCtrlBase::SetTipFont ( wxFont const & font)
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}

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}

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

◆ 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
protected

◆ font_tip

◆ hint

wxString StepCtrlBase::hint
protected

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

◆ pos_thumb

wxPoint StepCtrlBase::pos_thumb
protected

◆ radius

◆ state_handler

◆ step

◆ steps

◆ tips

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

◆ 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