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

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

Inheritance diagram for Slic3r::GUI::MachineObjectPanel:
Collaboration diagram for Slic3r::GUI::MachineObjectPanel:

Public Member Functions

 MachineObjectPanel (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
 ~MachineObjectPanel ()
void show_bind_dialog ()
void set_printer_state (PrinterState state)
void show_printer_bind (bool show, PrinterBindState state)
void show_edit_printer_name (bool show)
void update_machine_info (MachineObject *info, bool is_my_devices=false)

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_up (wxMouseEvent &evt)

Protected Attributes

wxStaticBitmap * m_bitmap_info
wxStaticBitmap * m_bitmap_bind

Private Attributes

bool m_is_my_devices {false}
bool m_show_edit {false}
bool m_show_bind {false}
bool m_hover {false}
bool m_is_macos_special_version {false}
PrinterBindState m_bind_state
PrinterState m_state
ScalableBitmap m_unbind_img
ScalableBitmap m_edit_name_img
ScalableBitmap m_select_unbind_img
ScalableBitmap m_printer_status_offline
ScalableBitmap m_printer_status_busy
ScalableBitmap m_printer_status_idle
ScalableBitmap m_printer_status_lock
ScalableBitmap m_printer_in_lan
MachineObject * m_info

Detailed Description

Constructor & Destructor Documentation

◆ MachineObjectPanel()

Slic3r::GUI::MachineObjectPanel::MachineObjectPanel ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxTAB_TRAVERSAL,
const wxString & name = wxEmptyString )
80{
81 wxPanel::Create(parent, id, pos, wxDefaultSize, style, name);
82
84 SetMinSize(SELECT_MACHINE_ITEM_SIZE);
85 SetMaxSize(SELECT_MACHINE_ITEM_SIZE);
86
87 Bind(wxEVT_PAINT, &MachineObjectPanel::OnPaint, this);
88
89 SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
90
91 m_unbind_img = ScalableBitmap(this, "unbind", 18);
92 m_edit_name_img = ScalableBitmap(this, "edit_button", 18);
93 m_select_unbind_img = ScalableBitmap(this, "unbind_selected", 18);
94
95 m_printer_status_offline = ScalableBitmap(this, "printer_status_offline", 12);
96 m_printer_status_busy = ScalableBitmap(this, "printer_status_busy", 12);
97 m_printer_status_idle = ScalableBitmap(this, "printer_status_idle", 12);
98 m_printer_status_lock = ScalableBitmap(this, "printer_status_lock", 16);
99 m_printer_in_lan = ScalableBitmap(this, "printer_in_lan", 16);
100
101 this->Bind(wxEVT_ENTER_WINDOW, &MachineObjectPanel::on_mouse_enter, this);
102 this->Bind(wxEVT_LEAVE_WINDOW, &MachineObjectPanel::on_mouse_leave, this);
103 this->Bind(wxEVT_LEFT_UP, &MachineObjectPanel::on_mouse_left_up, this);
104
105#ifdef __APPLE__
106 wxPlatformInfo platformInfo;
107 auto major = platformInfo.GetOSMajorVersion();
108 auto minor = platformInfo.GetOSMinorVersion();
109 auto micro = platformInfo.GetOSMicroVersion();
110
111 //macos over 13.1.0
112 if (major == 13 && minor >= 1) {
114 } else if (major > 13) {
116 }
117#endif
118
119}
#define SELECT_MACHINE_ITEM_SIZE
Definition SelectMachinePop.hpp:77
#define style
Definition WipeTowerDialog.cpp:101
bool m_is_macos_special_version
Definition SelectMachinePop.hpp:92
ScalableBitmap m_printer_status_busy
Definition SelectMachinePop.hpp:103
void on_mouse_enter(wxMouseEvent &evt)
Definition SelectMachinePop.cpp:262
ScalableBitmap m_printer_status_lock
Definition SelectMachinePop.hpp:105
ScalableBitmap m_edit_name_img
Definition SelectMachinePop.hpp:99
ScalableBitmap m_printer_status_idle
Definition SelectMachinePop.hpp:104
void on_mouse_leave(wxMouseEvent &evt)
Definition SelectMachinePop.cpp:268
ScalableBitmap m_unbind_img
Definition SelectMachinePop.hpp:98
ScalableBitmap m_printer_status_offline
Definition SelectMachinePop.hpp:102
void OnPaint(wxPaintEvent &event)
Definition SelectMachinePop.cpp:152
ScalableBitmap m_select_unbind_img
Definition SelectMachinePop.hpp:100
void on_mouse_left_up(wxMouseEvent &evt)
Definition SelectMachinePop.cpp:274
ScalableBitmap m_printer_in_lan
Definition SelectMachinePop.hpp:106
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219

References StateColor::darkModeColorFor(), m_edit_name_img, m_is_macos_special_version, m_printer_in_lan, m_printer_status_busy, m_printer_status_idle, m_printer_status_lock, m_printer_status_offline, m_select_unbind_img, m_unbind_img, on_mouse_enter(), on_mouse_leave(), on_mouse_left_up(), OnPaint(), SELECT_MACHINE_ITEM_SIZE, and style.

Here is the call graph for this function:

◆ ~MachineObjectPanel()

Slic3r::GUI::MachineObjectPanel::~MachineObjectPanel ( )
122{}

Member Function Documentation

◆ doRender()

void Slic3r::GUI::MachineObjectPanel::doRender ( wxDC & dc)
protected
180{
181 auto left = 10;
182 wxSize size = GetSize();
183 dc.SetPen(*wxTRANSPARENT_PEN);
184
185 auto dwbitmap = m_printer_status_offline;
186 if (m_state == PrinterState::IDLE) { dwbitmap = m_printer_status_idle; }
187 if (m_state == PrinterState::BUSY) { dwbitmap = m_printer_status_busy; }
189 if (m_state == PrinterState::LOCK) { dwbitmap = m_printer_status_lock; }
190 if (m_state == PrinterState::IN_LAN) { dwbitmap = m_printer_in_lan; }
191
192 // dc.DrawCircle(left, size.y / 2, 3);
193 dc.DrawBitmap(dwbitmap.bmp(), wxPoint(left, (size.y - dwbitmap.GetBmpSize().y) / 2));
194
195 left += dwbitmap.GetBmpSize().x + 8;
196 dc.SetFont(Label::Body_13);
197 dc.SetBackgroundMode(wxTRANSPARENT);
199 wxString dev_name = "";
200 if (m_info) {
201 dev_name = from_u8(m_info->get_dev_name());
202
204 dev_name += _L("(LAN)");
205 }
206 }
207 auto sizet = dc.GetTextExtent(dev_name);
208 auto text_end = 0;
209
210 if (m_show_edit) {
211 text_end = size.x - m_unbind_img.GetBmpSize().x - 30;
212 }
213 else {
214 text_end = size.x - m_unbind_img.GetBmpSize().x;
215 }
216
217 wxString finally_name = dev_name;
218 if (sizet.x > (text_end - left)) {
219 auto limit_width = text_end - left - dc.GetTextExtent("...").x - 15;
220 for (auto i = 0; i < dev_name.length(); i++) {
221 auto curr_width = dc.GetTextExtent(dev_name.substr(0, i));
222 if (curr_width.x >= limit_width) {
223 finally_name = dev_name.substr(0, i) + "...";
224 break;
225 }
226 }
227 }
228
229 dc.DrawText(finally_name, wxPoint(left, (size.y - sizet.y) / 2));
230
231
233
235 dc.SetPen(SELECT_MACHINE_BRAND);
236 dc.SetBrush(*wxTRANSPARENT_BRUSH);
237 dc.DrawRectangle(0, 0, size.x, size.y);
238 }
239
240 if (m_show_bind) {
241 if (m_bind_state == ALLOW_UNBIND) {
242 left = size.x - m_unbind_img.GetBmpSize().x - 6;
243 dc.DrawBitmap(m_unbind_img.bmp(), left, (size.y - m_unbind_img.GetBmpSize().y) / 2);
244 }
245 }
246
247 if (m_show_edit) {
248 left = size.x - m_unbind_img.GetBmpSize().x - 6 - m_edit_name_img.GetBmpSize().x - 6;
249 dc.DrawBitmap(m_edit_name_img.bmp(), left, (size.y - m_edit_name_img.GetBmpSize().y) / 2);
250 }
251 }
252
253}
#define _L(s)
Definition OBJ.cpp:34
#define SELECT_MACHINE_BRAND
Definition SelectMachinePop.hpp:81
#define SELECT_MACHINE_GREY900
Definition SelectMachinePop.hpp:78
static wxFont Body_13
Definition Label.hpp:54
bool m_show_edit
Definition SelectMachinePop.hpp:89
MachineObject * m_info
Definition SelectMachinePop.hpp:108
bool m_hover
Definition SelectMachinePop.hpp:91
bool m_show_bind
Definition SelectMachinePop.hpp:90
PrinterState m_state
Definition SelectMachinePop.hpp:96
PrinterBindState m_bind_state
Definition SelectMachinePop.hpp:95
@ BUSY
Definition SelectMachinePop.hpp:55
@ IDLE
Definition SelectMachinePop.hpp:54
@ IN_LAN
Definition SelectMachinePop.hpp:57
@ OFFLINE
Definition SelectMachinePop.hpp:53
@ LOCK
Definition SelectMachinePop.hpp:56
@ ALLOW_UNBIND
Definition SelectMachinePop.hpp:63
wxString from_u8(const std::string &str)
Definition GUI.cpp:544
@ left
Definition MarchingSquares.hpp:188

References _L, Slic3r::GUI::ALLOW_UNBIND, Label::Body_13, Slic3r::GUI::BUSY, StateColor::darkModeColorFor(), Slic3r::GUI::from_u8(), Slic3r::GUI::IDLE, Slic3r::GUI::IN_LAN, Slic3r::GUI::LOCK, m_bind_state, m_edit_name_img, m_hover, m_info, m_is_macos_special_version, m_printer_in_lan, m_printer_status_busy, m_printer_status_idle, m_printer_status_lock, m_printer_status_offline, m_show_bind, m_show_edit, m_state, m_unbind_img, Slic3r::GUI::OFFLINE, SELECT_MACHINE_BRAND, and SELECT_MACHINE_GREY900.

Referenced by OnPaint(), and render().

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

◆ on_mouse_enter()

void Slic3r::GUI::MachineObjectPanel::on_mouse_enter ( wxMouseEvent & evt)
protected
263{
264 m_hover = true;
265 Refresh();
266}

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

Referenced by MachineObjectPanel().

Here is the caller graph for this function:

◆ on_mouse_leave()

void Slic3r::GUI::MachineObjectPanel::on_mouse_leave ( wxMouseEvent & evt)
protected
269{
270 m_hover = false;
271 Refresh();
272}

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

Referenced by MachineObjectPanel().

Here is the caller graph for this function:

◆ on_mouse_left_up()

void Slic3r::GUI::MachineObjectPanel::on_mouse_left_up ( wxMouseEvent & evt)
protected
275{
276 if (m_is_my_devices) {
277 // show edit
278 if (m_show_edit) {
279 auto edit_left = GetSize().x - m_unbind_img.GetBmpSize().x - 6 - m_edit_name_img.GetBmpSize().x - 6;
280 auto edit_right = edit_left + m_edit_name_img.GetBmpSize().x;
281 auto edit_top = (GetSize().y - m_edit_name_img.GetBmpSize().y) / 2;
282 auto edit_bottom = (GetSize().y - m_edit_name_img.GetBmpSize().y) / 2 + m_edit_name_img.GetBmpSize().y;
283 if ((evt.GetPosition().x >= edit_left && evt.GetPosition().x <= edit_right) && evt.GetPosition().y >= edit_top && evt.GetPosition().y <= edit_bottom) {
284 wxCommandEvent event(EVT_EDIT_PRINT_NAME);
285 event.SetEventObject(this);
286 wxPostEvent(this, event);
287 return;
288 }
289 }
290 if (m_show_bind) {
291 auto left = GetSize().x - m_unbind_img.GetBmpSize().x - 6;
292 auto right = left + m_unbind_img.GetBmpSize().x;
293 auto top = (GetSize().y - m_unbind_img.GetBmpSize().y) / 2;
294 auto bottom = (GetSize().y - m_unbind_img.GetBmpSize().y) / 2 + m_unbind_img.GetBmpSize().y;
295
296 if ((evt.GetPosition().x >= left && evt.GetPosition().x <= right) && evt.GetPosition().y >= top && evt.GetPosition().y <= bottom) {
297 wxCommandEvent event(EVT_UNBIND_MACHINE, GetId());
298 event.SetEventObject(this);
299 GetEventHandler()->ProcessEvent(event);
300 } else {
301 if (m_info) {
302 wxGetApp().mainframe->jump_to_monitor(m_info->get_dev_id());
303 }
304 //wxGetApp().mainframe->SetFocus();
305 wxCommandEvent event(EVT_DISSMISS_MACHINE_LIST);
306 event.SetEventObject(this->GetParent());
307 wxPostEvent(this->GetParent(), event);
308 }
309 return;
310 }
311 if (m_info && m_info->is_lan_mode_printer()) {
312 if (m_info->has_access_right() && m_info->is_avaliable()) {
313 wxGetApp().mainframe->jump_to_monitor(m_info->get_dev_id());
314 } else {
315 wxCommandEvent event(EVT_CONNECT_LAN_PRINT);
316 event.SetEventObject(this);
317 wxPostEvent(this, event);
318 }
319 } else {
320 wxGetApp().mainframe->jump_to_monitor(m_info->get_dev_id());
321 }
322 } else {
323 if (m_info && m_info->is_lan_mode_printer()) {
324 wxCommandEvent event(EVT_CONNECT_LAN_PRINT);
325 event.SetEventObject(this);
326 wxPostEvent(this, event);
327 } else {
328 wxCommandEvent event(EVT_BIND_MACHINE);
329 event.SetEventObject(this);
330 wxPostEvent(this, event);
331 }
332 }
333
334}
bool m_is_my_devices
Definition SelectMachinePop.hpp:88
@ right
Definition MarchingSquares.hpp:190

References m_edit_name_img, m_info, m_is_my_devices, m_show_bind, m_show_edit, m_unbind_img, and Slic3r::GUI::wxMouseEvent.

Referenced by MachineObjectPanel().

Here is the caller graph for this function:

◆ OnPaint()

void Slic3r::GUI::MachineObjectPanel::OnPaint ( wxPaintEvent & event)
protected
153{
154 wxPaintDC dc(this);
155 doRender(dc);
156}
void doRender(wxDC &dc)
Definition SelectMachinePop.cpp:179

References doRender().

Referenced by MachineObjectPanel().

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

◆ render()

void Slic3r::GUI::MachineObjectPanel::render ( wxDC & dc)
protected
159{
160#ifdef __WXMSW__
161 wxSize size = GetSize();
162 wxMemoryDC memdc;
163 wxBitmap bmp(size.x, size.y);
164 memdc.SelectObject(bmp);
165 memdc.Blit({0, 0}, size, &dc, {0, 0});
166
167 {
168 wxGCDC dc2(memdc);
169 doRender(dc2);
170 }
171
172 memdc.SelectObject(wxNullBitmap);
173 dc.DrawBitmap(bmp, 0, 0);
174#else
175 doRender(dc);
176#endif
177}

References doRender().

Here is the call graph for this function:

◆ set_printer_state()

void Slic3r::GUI::MachineObjectPanel::set_printer_state ( PrinterState state)
134{
135 m_state = state;
136 Refresh();
137}

References m_state.

Referenced by Slic3r::GUI::SelectMachinePopup::update_other_devices().

Here is the caller graph for this function:

◆ show_bind_dialog()

void Slic3r::GUI::MachineObjectPanel::show_bind_dialog ( )
125{
126 if (wxGetApp().is_user_login(wxGetApp().get_printer_cloud_provider())) {
127 BindMachineDialog dlg;
128 dlg.update_machine_info(m_info);
129 dlg.ShowModal();
130 }
131}

References m_info, Slic3r::GUI::DPIAware< P >::ShowModal(), and Slic3r::GUI::BindMachineDialog::update_machine_info().

Here is the call graph for this function:

◆ show_edit_printer_name()

void Slic3r::GUI::MachineObjectPanel::show_edit_printer_name ( bool show)
140{
141 m_show_edit = show;
142 Refresh();
143}

References m_show_edit.

Referenced by Slic3r::GUI::SelectMachinePopup::update_other_devices().

Here is the caller graph for this function:

◆ show_printer_bind()

void Slic3r::GUI::MachineObjectPanel::show_printer_bind ( bool show,
PrinterBindState state )
146{
147 m_show_bind = show;
148 m_bind_state = state;
149 Refresh();
150}

References m_bind_state, and m_show_bind.

Referenced by Slic3r::GUI::SelectMachinePopup::update_other_devices().

Here is the caller graph for this function:

◆ update_machine_info()

void Slic3r::GUI::MachineObjectPanel::update_machine_info ( MachineObject * info,
bool is_my_devices = false )
256{
257 m_info = info;
258 m_is_my_devices = is_my_devices;
259 Refresh();
260}

References m_info, and m_is_my_devices.

Referenced by Slic3r::GUI::SelectMachinePopup::update_other_devices().

Here is the caller graph for this function:

Member Data Documentation

◆ m_bind_state

PrinterBindState Slic3r::GUI::MachineObjectPanel::m_bind_state
private

Referenced by doRender(), and show_printer_bind().

◆ m_bitmap_bind

wxStaticBitmap* Slic3r::GUI::MachineObjectPanel::m_bitmap_bind
protected

◆ m_bitmap_info

wxStaticBitmap* Slic3r::GUI::MachineObjectPanel::m_bitmap_info
protected

◆ m_edit_name_img

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_edit_name_img
private

◆ m_hover

bool Slic3r::GUI::MachineObjectPanel::m_hover {false}
private
91{false};

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

◆ m_info

MachineObject* Slic3r::GUI::MachineObjectPanel::m_info
private

◆ m_is_macos_special_version

bool Slic3r::GUI::MachineObjectPanel::m_is_macos_special_version {false}
private
92{false};

Referenced by MachineObjectPanel(), and doRender().

◆ m_is_my_devices

bool Slic3r::GUI::MachineObjectPanel::m_is_my_devices {false}
private
88{false};

Referenced by on_mouse_left_up(), and update_machine_info().

◆ m_printer_in_lan

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_printer_in_lan
private

Referenced by MachineObjectPanel(), and doRender().

◆ m_printer_status_busy

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_printer_status_busy
private

Referenced by MachineObjectPanel(), and doRender().

◆ m_printer_status_idle

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_printer_status_idle
private

Referenced by MachineObjectPanel(), and doRender().

◆ m_printer_status_lock

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_printer_status_lock
private

Referenced by MachineObjectPanel(), and doRender().

◆ m_printer_status_offline

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_printer_status_offline
private

Referenced by MachineObjectPanel(), and doRender().

◆ m_select_unbind_img

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_select_unbind_img
private

Referenced by MachineObjectPanel().

◆ m_show_bind

bool Slic3r::GUI::MachineObjectPanel::m_show_bind {false}
private
90{false};

Referenced by doRender(), on_mouse_left_up(), and show_printer_bind().

◆ m_show_edit

bool Slic3r::GUI::MachineObjectPanel::m_show_edit {false}
private
89{false};

Referenced by doRender(), on_mouse_left_up(), and show_edit_printer_name().

◆ m_state

PrinterState Slic3r::GUI::MachineObjectPanel::m_state
private

Referenced by doRender(), and set_printer_state().

◆ m_unbind_img

ScalableBitmap Slic3r::GUI::MachineObjectPanel::m_unbind_img
private

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