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

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

Inheritance diagram for Slic3r::GUI::MObjectPanel:
Collaboration diagram for Slic3r::GUI::MObjectPanel:

Public Member Functions

 MObjectPanel (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
 ~MObjectPanel ()
void set_printer_state (PrinterState state)
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)

Private Attributes

bool m_is_my_devices { false }
bool m_hover { false }
PrinterState m_state
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

◆ MObjectPanel()

Slic3r::GUI::MObjectPanel::MObjectPanel ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxTAB_TRAVERSAL,
const wxString & name = wxEmptyString )
70{
71 wxPanel::Create(parent, id, pos, SELECT_MACHINE_ITEM_SIZE, style, name);
72 Bind(wxEVT_PAINT, &MObjectPanel::OnPaint, this);
73 SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
74
75
76 m_printer_status_offline = ScalableBitmap(this, "printer_status_offline", 12);
77 m_printer_status_busy = ScalableBitmap(this, "printer_status_busy", 12);
78 m_printer_status_idle = ScalableBitmap(this, "printer_status_idle", 12);
79 m_printer_status_lock = ScalableBitmap(this, "printer_status_lock", 16);
80 m_printer_in_lan = ScalableBitmap(this, "printer_in_lan", 16);
81
82 Bind(wxEVT_ENTER_WINDOW, &MObjectPanel::on_mouse_enter, this);
83 Bind(wxEVT_LEAVE_WINDOW, &MObjectPanel::on_mouse_leave, this);
84 Bind(wxEVT_LEFT_UP, &MObjectPanel::on_mouse_left_up, this);
85}
#define SELECT_MACHINE_ITEM_SIZE
Definition SelectMachinePop.hpp:77
#define style
Definition WipeTowerDialog.cpp:101
ScalableBitmap m_printer_status_lock
Definition CalibrationPanel.hpp:44
void on_mouse_enter(wxMouseEvent &evt)
Definition CalibrationPanel.cpp:185
ScalableBitmap m_printer_status_idle
Definition CalibrationPanel.hpp:43
void on_mouse_leave(wxMouseEvent &evt)
Definition CalibrationPanel.cpp:191
ScalableBitmap m_printer_status_busy
Definition CalibrationPanel.hpp:42
ScalableBitmap m_printer_in_lan
Definition CalibrationPanel.hpp:45
void OnPaint(wxPaintEvent &event)
Definition CalibrationPanel.cpp:97
ScalableBitmap m_printer_status_offline
Definition CalibrationPanel.hpp:41
void on_mouse_left_up(wxMouseEvent &evt)
Definition CalibrationPanel.cpp:197
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219

References StateColor::darkModeColorFor(), m_printer_in_lan, m_printer_status_busy, m_printer_status_idle, m_printer_status_lock, m_printer_status_offline, 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:

◆ ~MObjectPanel()

Slic3r::GUI::MObjectPanel::~MObjectPanel ( )
88{}

Member Function Documentation

◆ doRender()

void Slic3r::GUI::MObjectPanel::doRender ( wxDC & dc)
protected
125{
126 auto left = 10;
127 wxSize size = GetSize();
128 dc.SetPen(*wxTRANSPARENT_PEN);
129
130 auto dwbitmap = m_printer_status_offline;
131 if (m_state == PrinterState::IDLE) { dwbitmap = m_printer_status_idle; }
132 if (m_state == PrinterState::BUSY) { dwbitmap = m_printer_status_busy; }
134 if (m_state == PrinterState::LOCK) { dwbitmap = m_printer_status_lock; }
135 if (m_state == PrinterState::IN_LAN) { dwbitmap = m_printer_in_lan; }
136
137 // dc.DrawCircle(left, size.y / 2, 3);
138 dc.DrawBitmap(dwbitmap.bmp(), wxPoint(left, (size.y - dwbitmap.GetBmpSize().y) / 2));
139
140 left += dwbitmap.GetBmpSize().x + 8;
141 dc.SetFont(Label::Body_13);
142 dc.SetBackgroundMode(wxTRANSPARENT);
144 wxString dev_name = "";
145 if (m_info) {
146 dev_name = from_u8(m_info->get_dev_name());
147
149 dev_name += _L("(LAN)");
150 }
151 }
152 auto sizet = dc.GetTextExtent(dev_name);
153 auto text_end = size.x - FromDIP(15);
154
155 wxString finally_name = dev_name;
156 if (sizet.x > (text_end - left)) {
157 auto limit_width = text_end - left - dc.GetTextExtent("...").x - 15;
158 for (auto i = 0; i < dev_name.length(); i++) {
159 auto curr_width = dc.GetTextExtent(dev_name.substr(0, i));
160 if (curr_width.x >= limit_width) {
161 finally_name = dev_name.substr(0, i) + "...";
162 break;
163 }
164 }
165 }
166
167 dc.DrawText(finally_name, wxPoint(left, (size.y - sizet.y) / 2));
168
169
170 if (m_hover) {
171 dc.SetPen(SELECT_MACHINE_BRAND);
172 dc.SetBrush(*wxTRANSPARENT_BRUSH);
173 dc.DrawRectangle(0, 0, size.x, size.y);
174 }
175
176}
#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
MachineObject * m_info
Definition CalibrationPanel.hpp:46
bool m_hover
Definition CalibrationPanel.hpp:38
PrinterState m_state
Definition CalibrationPanel.hpp:40
@ 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
wxString from_u8(const std::string &str)
Definition GUI.cpp:544
@ left
Definition MarchingSquares.hpp:188

References _L, Label::Body_13, Slic3r::GUI::BUSY, StateColor::darkModeColorFor(), Slic3r::GUI::from_u8(), Slic3r::GUI::IDLE, Slic3r::GUI::IN_LAN, Slic3r::GUI::LOCK, m_hover, m_info, m_printer_in_lan, m_printer_status_busy, m_printer_status_idle, m_printer_status_lock, m_printer_status_offline, m_state, 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::MObjectPanel::on_mouse_enter ( wxMouseEvent & evt)
protected
186{
187 m_hover = true;
188 Refresh();
189}

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

Referenced by MObjectPanel().

Here is the caller graph for this function:

◆ on_mouse_leave()

void Slic3r::GUI::MObjectPanel::on_mouse_leave ( wxMouseEvent & evt)
protected
192{
193 m_hover = false;
194 Refresh();
195}

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

Referenced by MObjectPanel().

Here is the caller graph for this function:

◆ on_mouse_left_up()

void Slic3r::GUI::MObjectPanel::on_mouse_left_up ( wxMouseEvent & evt)
protected
198{
199 if (m_is_my_devices) {
200 if (m_info && m_info->is_lan_mode_printer()) {
201 if (m_info->has_access_right() && m_info->is_avaliable()) {
202 Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
203 if (!dev) return;
204 dev->set_selected_machine(m_info->get_dev_id());
205 }
206 }
207 else {
208 Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
209 if (!dev) return;
210 dev->set_selected_machine(m_info->get_dev_id());
211 }
212 wxCommandEvent event(EVT_DISSMISS_MACHINE_LIST);
213 event.SetEventObject(this->GetParent()->GetParent());
214 wxPostEvent(this, event);
215 }
216}
bool set_selected_machine(std::string dev_id)
Definition DevManager.cpp:636
bool m_is_my_devices
Definition CalibrationPanel.hpp:37

References m_info, m_is_my_devices, Slic3r::DeviceManager::set_selected_machine(), and Slic3r::GUI::wxMouseEvent.

Referenced by MObjectPanel().

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

◆ OnPaint()

void Slic3r::GUI::MObjectPanel::OnPaint ( wxPaintEvent & event)
protected
98{
99 wxPaintDC dc(this);
100 doRender(dc);
101}
void doRender(wxDC &dc)
Definition CalibrationPanel.cpp:124

References doRender().

Referenced by MObjectPanel().

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

◆ render()

void Slic3r::GUI::MObjectPanel::render ( wxDC & dc)
protected
104{
105#ifdef __WXMSW__
106 wxSize size = GetSize();
107 wxMemoryDC memdc;
108 wxBitmap bmp(size.x, size.y);
109 memdc.SelectObject(bmp);
110 memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 });
111
112 {
113 wxGCDC dc2(memdc);
114 doRender(dc2);
115 }
116
117 memdc.SelectObject(wxNullBitmap);
118 dc.DrawBitmap(bmp, 0, 0);
119#else
120 doRender(dc);
121#endif
122}

References doRender().

Here is the call graph for this function:

◆ set_printer_state()

void Slic3r::GUI::MObjectPanel::set_printer_state ( PrinterState state)
92{
93 m_state = state;
94 Refresh();
95}

References m_state.

◆ update_machine_info()

void Slic3r::GUI::MObjectPanel::update_machine_info ( MachineObject * info,
bool is_my_devices = false )
179{
180 m_info = info;
181 m_is_my_devices = is_my_devices;
182 Refresh();
183}

References m_info, and m_is_my_devices.

Member Data Documentation

◆ m_hover

bool Slic3r::GUI::MObjectPanel::m_hover { false }
private
38{ false };

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

◆ m_info

MachineObject* Slic3r::GUI::MObjectPanel::m_info
private

◆ m_is_my_devices

bool Slic3r::GUI::MObjectPanel::m_is_my_devices { false }
private
37{ false };

Referenced by on_mouse_left_up(), and update_machine_info().

◆ m_printer_in_lan

ScalableBitmap Slic3r::GUI::MObjectPanel::m_printer_in_lan
private

Referenced by MObjectPanel(), and doRender().

◆ m_printer_status_busy

ScalableBitmap Slic3r::GUI::MObjectPanel::m_printer_status_busy
private

Referenced by MObjectPanel(), and doRender().

◆ m_printer_status_idle

ScalableBitmap Slic3r::GUI::MObjectPanel::m_printer_status_idle
private

Referenced by MObjectPanel(), and doRender().

◆ m_printer_status_lock

ScalableBitmap Slic3r::GUI::MObjectPanel::m_printer_status_lock
private

Referenced by MObjectPanel(), and doRender().

◆ m_printer_status_offline

ScalableBitmap Slic3r::GUI::MObjectPanel::m_printer_status_offline
private

Referenced by MObjectPanel(), and doRender().

◆ m_state

PrinterState Slic3r::GUI::MObjectPanel::m_state
private

Referenced by doRender(), and set_printer_state().


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