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

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

Inheritance diagram for Slic3r::GUI::SideToolsPanel:
Collaboration diagram for Slic3r::GUI::SideToolsPanel:

Public Member Functions

 SideToolsPanel (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
 ~SideToolsPanel ()
void set_none_printer_mode ()
void on_timer (wxTimerEvent &event)
void set_current_printer_name (std::string dev_name)
void set_current_printer_signal (WifiSignal sign)
void start_interval ()
void stop_interval (wxTimerEvent &event)
bool is_in_interval ()
void msw_rescale ()

Protected Member Functions

void OnPaint (wxPaintEvent &event)
void render (wxDC &dc)
void doRender (wxDC &dc)
void on_mouse_enter (wxMouseEvent &evt)
void on_mouse_leave (wxMouseEvent &evt)
void on_mouse_left_down (wxMouseEvent &evt)
void on_mouse_left_up (wxMouseEvent &evt)

Protected Attributes

wxStaticBitmap * m_bitmap_info
wxStaticBitmap * m_bitmap_bind
wxTimer * m_intetval_timer {nullptr}
bool m_is_in_interval {false}

Private Attributes

WifiSignal m_wifi_type {WifiSignal::NONE}
wxString m_dev_name
bool m_hover {false}
bool m_click {false}
bool m_none_printer {true}
int last_printer_signal = 0
ScalableBitmap m_printing_img
ScalableBitmap m_arrow_img
ScalableBitmap m_none_printing_img
ScalableBitmap m_none_arrow_img
ScalableBitmap m_none_add_img
ScalableBitmap m_wifi_none_img
ScalableBitmap m_wifi_weak_img
ScalableBitmap m_wifi_middle_img
ScalableBitmap m_wifi_strong_img
ScalableBitmap m_network_wired_img

Detailed Description

Constructor & Destructor Documentation

◆ SideToolsPanel()

Slic3r::GUI::SideToolsPanel::SideToolsPanel ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
29{
30 wxPanel::Create(parent, id, pos, size);
31
32 SetMinSize(wxSize(-1, FromDIP(50)));
33 SetMaxSize(wxSize(-1, FromDIP(50)));
34
35 Bind(wxEVT_PAINT, &SideToolsPanel::OnPaint, this);
36 SetBackgroundColour(wxColour("#FEFFFF"));
37
38 m_printing_img = ScalableBitmap(this, "printer", 16);
39 m_arrow_img = ScalableBitmap(this, "monitor_arrow", 14);
40
41 m_none_printing_img = ScalableBitmap(this, "tab_monitor_active", 20); // ORCA match icon size with exact resolution to fix blurry icon
42 m_none_arrow_img = ScalableBitmap(this, "monitor_none_arrow", 14);
43 m_none_add_img = ScalableBitmap(this, "monitor_none_add", 14);
44
45 m_wifi_none_img = ScalableBitmap(this, "monitor_signal_no", 18);
46 m_wifi_weak_img = ScalableBitmap(this, "monitor_signal_weak", 18);
47 m_wifi_middle_img = ScalableBitmap(this, "monitor_signal_middle", 18);
48 m_wifi_strong_img = ScalableBitmap(this, "monitor_signal_strong", 18);
49 m_network_wired_img = ScalableBitmap(this, "monitor_network_wired", 18);
50
51 m_intetval_timer = new wxTimer();
52 m_intetval_timer->SetOwner(this);
53
54 this->Bind(wxEVT_TIMER, &SideToolsPanel::stop_interval, this);
55 this->Bind(wxEVT_ENTER_WINDOW, &SideToolsPanel::on_mouse_enter, this);
56 this->Bind(wxEVT_LEAVE_WINDOW, &SideToolsPanel::on_mouse_leave, this);
57 this->Bind(wxEVT_LEFT_DOWN, &SideToolsPanel::on_mouse_left_down, this);
58 this->Bind(wxEVT_LEFT_UP, &SideToolsPanel::on_mouse_left_up, this);
59}
ScalableBitmap m_arrow_img
Definition SideTools.hpp:58
void on_mouse_left_down(wxMouseEvent &evt)
Definition SideTools.cpp:247
void OnPaint(wxPaintEvent &event)
Definition SideTools.cpp:127
ScalableBitmap m_wifi_none_img
Definition SideTools.hpp:64
void on_mouse_left_up(wxMouseEvent &evt)
Definition SideTools.cpp:253
ScalableBitmap m_network_wired_img
Definition SideTools.hpp:68
void on_mouse_leave(wxMouseEvent &evt)
Definition SideTools.cpp:265
ScalableBitmap m_none_add_img
Definition SideTools.hpp:62
ScalableBitmap m_none_arrow_img
Definition SideTools.hpp:61
ScalableBitmap m_wifi_middle_img
Definition SideTools.hpp:66
void stop_interval(wxTimerEvent &event)
Definition SideTools.cpp:98
ScalableBitmap m_wifi_strong_img
Definition SideTools.hpp:67
ScalableBitmap m_wifi_weak_img
Definition SideTools.hpp:65
wxTimer * m_intetval_timer
Definition SideTools.hpp:73
ScalableBitmap m_none_printing_img
Definition SideTools.hpp:60
void on_mouse_enter(wxMouseEvent &evt)
Definition SideTools.cpp:259
ScalableBitmap m_printing_img
Definition SideTools.hpp:57

References m_arrow_img, m_intetval_timer, m_network_wired_img, m_none_add_img, m_none_arrow_img, m_none_printing_img, m_printing_img, m_wifi_middle_img, m_wifi_none_img, m_wifi_strong_img, m_wifi_weak_img, on_mouse_enter(), on_mouse_leave(), on_mouse_left_down(), on_mouse_left_up(), OnPaint(), and stop_interval().

Here is the call graph for this function:

◆ ~SideToolsPanel()

Slic3r::GUI::SideToolsPanel::~SideToolsPanel ( )
61{ delete m_intetval_timer; }

References m_intetval_timer.

Member Function Documentation

◆ doRender()

void Slic3r::GUI::SideToolsPanel::doRender ( wxDC & dc)
protected
155{
156 auto left = FromDIP(15);
157 wxSize size = GetSize();
158
159 //if (m_none_printer) {
160 // dc.SetPen(SIDE_TOOLS_LIGHT_GREEN);
161 // dc.SetBrush(SIDE_TOOLS_LIGHT_GREEN);
162 // dc.DrawRectangle(0, 0, size.x, size.y);
163 //}
164
165 if (m_none_printer) {
166 dc.SetPen(StateColor::darkModeColorFor(SIDE_TOOLS_BRAND)); // ORCA: Sidebar header background color - Fix for dark mode compability
167 dc.SetBrush(StateColor::darkModeColorFor(SIDE_TOOLS_BRAND)); // ORCA: Sidebar header background color - Fix for dark mode compability
168 dc.DrawRectangle(0, 0, size.x, size.y);
169
170 dc.DrawBitmap(m_none_printing_img.bmp(), left, (size.y - m_none_printing_img.GetBmpSize().y) / 2);
171
172 left += (m_none_printing_img.GetBmpSize().x + FromDIP(15));
173 dc.DrawBitmap(m_none_arrow_img.bmp(), left, (size.y - m_none_arrow_img.GetBmpSize().y) / 2);
174
175 left += (m_none_arrow_img.GetBmpSize().x + FromDIP(6));
176 dc.SetFont(::Label::Body_14);
177 dc.SetBackgroundMode(wxTRANSPARENT);
178 dc.SetTextForeground(*wxWHITE);
179
180 wxString no_printer_str = _L("No printer");
181 auto sizet = dc.GetTextExtent(no_printer_str);
182 auto left_add_bitmap = size.x - FromDIP(30) - m_wifi_none_img.GetBmpSize().x - m_none_add_img.GetBmpSize().x;
183 auto size_width = left_add_bitmap - left;
184
185 if (sizet.x > size_width) {
186 wxString temp_str = wxEmptyString;
187 for (auto i = 0; i < no_printer_str.Len(); i++) {
188 if (dc.GetTextExtent(L("...") + temp_str).x < size_width) {
189 temp_str += no_printer_str[i];
190 }
191 else {
192 break;
193 }
194 }
195
196 no_printer_str = temp_str + L("...");
197 }
198
199 dc.DrawText(no_printer_str, wxPoint(left, (size.y - sizet.y) / 2));
200
201 left = size.x - FromDIP(30) - m_wifi_none_img.GetBmpSize().x;
202 dc.DrawBitmap(m_none_add_img.bmp(), left, (size.y - m_none_add_img.GetBmpSize().y) / 2);
203 } else {
204 dc.DrawBitmap(m_printing_img.bmp(), left, (size.y - m_printing_img.GetBmpSize().y) / 2);
205
206 left += (m_printing_img.GetBmpSize().x + FromDIP(5));
207 dc.DrawBitmap(m_arrow_img.bmp(), left, (size.y - m_arrow_img.GetBmpSize().y) / 2);
208
209 left += (m_arrow_img.GetBmpSize().x + FromDIP(6));
210 dc.SetFont(::Label::Body_14);
211 dc.SetBackgroundMode(wxTRANSPARENT);
213
214 auto sizet = dc.GetTextExtent(m_dev_name);
215 auto text_end = size.x - m_wifi_none_img.GetBmpSize().x - 20;
216
217 wxString finally_name = m_dev_name;
218 if (sizet.x > (text_end - left)) {
219 auto limit_width = text_end - left - dc.GetTextExtent("...").x - 20;
220 for (auto i = 0; i < m_dev_name.length(); i++) {
221 auto curr_width = dc.GetTextExtent(m_dev_name.substr(0, i));
222 if (curr_width.x >= limit_width) {
223 finally_name = m_dev_name.substr(0, i) + "...";
224 break;
225 }
226 }
227 }
228
229
230 dc.DrawText(finally_name, wxPoint(left, (size.y - sizet.y) / 2));
231
232 left = size.x - FromDIP(18) - m_wifi_none_img.GetBmpSize().x;
233 if (m_wifi_type == WifiSignal::NONE) dc.DrawBitmap(m_wifi_none_img.bmp(), left, (size.y - m_wifi_none_img.GetBmpSize().y) / 2);
234 if (m_wifi_type == WifiSignal::WEAK) dc.DrawBitmap(m_wifi_weak_img.bmp(), left, (size.y - m_wifi_weak_img.GetBmpSize().y) / 2);
235 if (m_wifi_type == WifiSignal::MIDDLE) dc.DrawBitmap(m_wifi_middle_img.bmp(), left, (size.y - m_wifi_middle_img.GetBmpSize().y) / 2);
236 if (m_wifi_type == WifiSignal::STRONG) dc.DrawBitmap(m_wifi_strong_img.bmp(), left, (size.y - m_wifi_strong_img.GetBmpSize().y) / 2);
237 if (m_wifi_type == WifiSignal::WIRED) dc.DrawBitmap(m_network_wired_img.bmp(), left, (size.y - m_network_wired_img.GetBmpSize().y) / 2);
238 }
239
240 if (m_hover) {
241 dc.SetPen(SIDE_TOOLS_BRAND);
242 dc.SetBrush(*wxTRANSPARENT_BRUSH);
243 dc.DrawRectangle(0, 0, size.x, size.y);
244 }
245}
#define L(s)
Definition ExtrusionEntity.cpp:25
#define _L(s)
Definition OBJ.cpp:34
@ MIDDLE
Definition SideTools.hpp:29
@ STRONG
Definition SideTools.hpp:30
@ NONE
Definition SideTools.hpp:27
@ WIRED
Definition SideTools.hpp:31
@ WEAK
Definition SideTools.hpp:28
#define SIDE_TOOLS_GREY900
Definition SideTools.hpp:20
#define SIDE_TOOLS_BRAND
Definition SideTools.hpp:23
static wxFont Body_14
Definition Label.hpp:53
WifiSignal m_wifi_type
Definition SideTools.hpp:50
bool m_hover
Definition SideTools.hpp:52
bool m_none_printer
Definition SideTools.hpp:54
wxString m_dev_name
Definition SideTools.hpp:51
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
@ left
Definition MarchingSquares.hpp:188

References _L, Label::Body_14, StateColor::darkModeColorFor(), L, m_arrow_img, m_dev_name, m_hover, m_network_wired_img, m_none_add_img, m_none_arrow_img, m_none_printer, m_none_printing_img, m_printing_img, m_wifi_middle_img, m_wifi_none_img, m_wifi_strong_img, m_wifi_type, m_wifi_weak_img, MIDDLE, NONE, SIDE_TOOLS_BRAND, SIDE_TOOLS_GREY900, STRONG, WEAK, and WIRED.

Referenced by OnPaint(), and render().

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

◆ is_in_interval()

bool Slic3r::GUI::SideToolsPanel::is_in_interval ( )
106{
107 return m_is_in_interval;
108}
bool m_is_in_interval
Definition SideTools.hpp:74

References m_is_in_interval.

◆ msw_rescale()

void Slic3r::GUI::SideToolsPanel::msw_rescale ( )
111{
112 m_printing_img.msw_rescale();
113 m_arrow_img.msw_rescale();
114
115 m_none_printing_img.msw_rescale();
116 m_none_arrow_img.msw_rescale();
117 m_none_add_img.msw_rescale();
118
119 m_wifi_none_img.msw_rescale();
120 m_wifi_weak_img.msw_rescale();
121 m_wifi_middle_img.msw_rescale();
122 m_wifi_strong_img.msw_rescale();
123
124 Refresh();
125}

References m_arrow_img, m_none_add_img, m_none_arrow_img, m_none_printing_img, m_printing_img, m_wifi_middle_img, m_wifi_none_img, m_wifi_strong_img, and m_wifi_weak_img.

◆ on_mouse_enter()

void Slic3r::GUI::SideToolsPanel::on_mouse_enter ( wxMouseEvent & evt)
protected
260{
261 m_hover = true;
262 Refresh();
263}

References m_hover, and Slic3r::GUI::wxMouseEvent.

Referenced by SideToolsPanel().

Here is the caller graph for this function:

◆ on_mouse_leave()

void Slic3r::GUI::SideToolsPanel::on_mouse_leave ( wxMouseEvent & evt)
protected
266{
267 m_hover = false;
268 Refresh();
269}

References m_hover, and Slic3r::GUI::wxMouseEvent.

Referenced by SideToolsPanel().

Here is the caller graph for this function:

◆ on_mouse_left_down()

void Slic3r::GUI::SideToolsPanel::on_mouse_left_down ( wxMouseEvent & evt)
protected
248{
249 m_click = true;
250 Refresh();
251}
bool m_click
Definition SideTools.hpp:53

References m_click, and Slic3r::GUI::wxMouseEvent.

Referenced by SideToolsPanel().

Here is the caller graph for this function:

◆ on_mouse_left_up()

void Slic3r::GUI::SideToolsPanel::on_mouse_left_up ( wxMouseEvent & evt)
protected
254{
255 m_click = false;
256 Refresh();
257}

References m_click, and Slic3r::GUI::wxMouseEvent.

Referenced by SideToolsPanel().

Here is the caller graph for this function:

◆ on_timer()

void Slic3r::GUI::SideToolsPanel::on_timer ( wxTimerEvent & event)
70{
71}

◆ OnPaint()

void Slic3r::GUI::SideToolsPanel::OnPaint ( wxPaintEvent & event)
protected
128{
129 wxPaintDC dc(this);
130 doRender(dc);
131}
void doRender(wxDC &dc)
Definition SideTools.cpp:154

References doRender().

Referenced by SideToolsPanel().

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

◆ render()

void Slic3r::GUI::SideToolsPanel::render ( wxDC & dc)
protected
134{
135#ifdef __WXMSW__
136 wxSize size = GetSize();
137 wxMemoryDC memdc;
138 wxBitmap bmp(size.x, size.y);
139 memdc.SelectObject(bmp);
140 memdc.Blit({0, 0}, size, &dc, {0, 0});
141
142 {
143 wxGCDC dc2(memdc);
144 doRender(dc2);
145 }
146
147 memdc.SelectObject(wxNullBitmap);
148 dc.DrawBitmap(bmp, 0, 0);
149#else
150 doRender(dc);
151#endif
152}

References doRender().

Here is the call graph for this function:

◆ set_current_printer_name()

void Slic3r::GUI::SideToolsPanel::set_current_printer_name ( std::string dev_name)
74{
75 if (m_dev_name == from_u8(dev_name) && !m_none_printer) return;
76
77 m_none_printer = false;
78 m_dev_name = from_u8(dev_name);
79 Refresh();
80}
wxString from_u8(const std::string &str)
Definition GUI.cpp:544

References Slic3r::GUI::from_u8(), m_dev_name, and m_none_printer.

Here is the call graph for this function:

◆ set_current_printer_signal()

void Slic3r::GUI::SideToolsPanel::set_current_printer_signal ( WifiSignal sign)
83{
84 if (last_printer_signal == sign && !m_none_printer) return;
85
87 m_none_printer = false;
88 m_wifi_type = sign;
89 Refresh();
90}
int last_printer_signal
Definition SideTools.hpp:55

References last_printer_signal, m_none_printer, and m_wifi_type.

◆ set_none_printer_mode()

void Slic3r::GUI::SideToolsPanel::set_none_printer_mode ( )
64{
65 m_none_printer = true;
66 Refresh();
67}

References m_none_printer.

◆ start_interval()

void Slic3r::GUI::SideToolsPanel::start_interval ( )
93{
95 m_is_in_interval = true;
96}
#define SIDE_TOOL_CLICK_INTERVAL
Definition SideTools.hpp:43

References m_intetval_timer, m_is_in_interval, and SIDE_TOOL_CLICK_INTERVAL.

◆ stop_interval()

void Slic3r::GUI::SideToolsPanel::stop_interval ( wxTimerEvent & event)
99{
100 m_is_in_interval = false;
101 m_intetval_timer->Stop();
102}

References m_intetval_timer, and m_is_in_interval.

Referenced by SideToolsPanel().

Here is the caller graph for this function:

Member Data Documentation

◆ last_printer_signal

int Slic3r::GUI::SideToolsPanel::last_printer_signal = 0
private

◆ m_arrow_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_arrow_img
private

◆ m_bitmap_bind

wxStaticBitmap* Slic3r::GUI::SideToolsPanel::m_bitmap_bind
protected

◆ m_bitmap_info

wxStaticBitmap* Slic3r::GUI::SideToolsPanel::m_bitmap_info
protected

◆ m_click

bool Slic3r::GUI::SideToolsPanel::m_click {false}
private
53{false};

Referenced by on_mouse_left_down(), and on_mouse_left_up().

◆ m_dev_name

wxString Slic3r::GUI::SideToolsPanel::m_dev_name
private

◆ m_hover

bool Slic3r::GUI::SideToolsPanel::m_hover {false}
private
52{false};

Referenced by doRender(), on_mouse_enter(), and on_mouse_leave().

◆ m_intetval_timer

wxTimer* Slic3r::GUI::SideToolsPanel::m_intetval_timer {nullptr}
protected

◆ m_is_in_interval

bool Slic3r::GUI::SideToolsPanel::m_is_in_interval {false}
protected
74{false};

Referenced by is_in_interval(), start_interval(), and stop_interval().

◆ m_network_wired_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_network_wired_img
private

Referenced by SideToolsPanel(), and doRender().

◆ m_none_add_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_none_add_img
private

◆ m_none_arrow_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_none_arrow_img
private

◆ m_none_printer

bool Slic3r::GUI::SideToolsPanel::m_none_printer {true}
private

◆ m_none_printing_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_none_printing_img
private

◆ m_printing_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_printing_img
private

◆ m_wifi_middle_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_wifi_middle_img
private

◆ m_wifi_none_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_wifi_none_img
private

◆ m_wifi_strong_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_wifi_strong_img
private

◆ m_wifi_type

WifiSignal Slic3r::GUI::SideToolsPanel::m_wifi_type {WifiSignal::NONE}
private

◆ m_wifi_weak_img

ScalableBitmap Slic3r::GUI::SideToolsPanel::m_wifi_weak_img
private

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