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

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceTab/wgtDeviceNozzleRack.h>

Inheritance diagram for Slic3r::GUI::wgtDeviceNozzleRackArea:
Collaboration diagram for Slic3r::GUI::wgtDeviceNozzleRackArea:

Public Member Functions

 wgtDeviceNozzleRackArea (wxWindow *parent)
void UpdateRackInfo (std::weak_ptr< DevNozzleRack > rack)
void Rescale ()

Private Member Functions

void CreateGui ()
StaticBox * CreateNozzleBox (const std::vector< int > nozzle_idxes)
wxSizer * CreateRefreshBook (wxPanel *parent)
void UpdateNozzleItems (const std::unordered_map< int, wgtDeviceNozzleRackNozzleItem * > &nozzle_items, std::shared_ptr< DevNozzleRack > nozzle_rack)
void OnBtnHotendsInfos (wxCommandEvent &evt)
void OnBtnReadAll (wxCommandEvent &evt)

Private Attributes

std::weak_ptr< DevNozzleRack > m_nozzle_rack
DevNozzleRack::RackPos m_rack_pos = DevNozzleRack::RACK_POS_UNKNOWN
DevNozzleRack::RackStatus m_rack_status = DevNozzleRack::RACK_STATUS_UNKNOWN
wxSimplebook * m_simple_book { nullptr }
wxPanel * m_panel_content { nullptr }
wxPanel * m_panel_refresh { nullptr }
wgtDeviceNozzleRackTitle * m_title_nozzle_rack
wxBoxSizer * m_hotends_sizer
StaticBox * m_arow_nozzles_box
StaticBox * m_brow_nozzles_box
std::unordered_map< int, wgtDeviceNozzleRackNozzleItem * > m_nozzle_items
wgtDeviceNozzleRackPos * m_rack_pos_panel
Button * m_btn_hotends_infos
Button * m_btn_read_all
Label * m_progress_refresh { nullptr }
AnimaIcon * m_refresh_icon { nullptr }
wgtDeviceNozzleRackUpgradeDlg * m_rack_upgrade_dlg = nullptr

Detailed Description

Constructor & Destructor Documentation

◆ wgtDeviceNozzleRackArea()

Slic3r::GUI::wgtDeviceNozzleRackArea::wgtDeviceNozzleRackArea ( wxWindow * parent)
inline
108: wxPanel(parent) { CreateGui();}
void CreateGui()
Definition wgtDeviceNozzleRack.cpp:266

References CreateGui().

Here is the call graph for this function:

Member Function Documentation

◆ CreateGui()

void Slic3r::GUI::wgtDeviceNozzleRackArea::CreateGui ( )
private
267{
268 wxSizer* main_sizer = new wxBoxSizer(wxVERTICAL);
269
270 // Create Header
271 m_title_nozzle_rack = new wgtDeviceNozzleRackTitle(this, _L("Induction Hotend Rack"));
272 main_sizer->Add(m_title_nozzle_rack, 0, wxEXPAND | wxTOP);
273
274 // Create Simple Book
275 m_simple_book = new wxSimplebook(this, wxID_ANY);
276
277 wxSizer* content_sizer = new wxBoxSizer(wxVERTICAL);
278
279 m_panel_content = new wxPanel(m_simple_book, wxID_ANY);
280 m_panel_content->SetBackgroundColour(*wxWHITE);
281 m_panel_refresh = new wxPanel(m_simple_book, wxID_ANY);
282 m_panel_refresh->SetBackgroundColour(*wxWHITE);
283
284 // Create Hotends ans Rack Position Panel
285 wxSizer* hotends_rack_sizer = new wxBoxSizer(wxHORIZONTAL);
286
287 // Hotends
288 m_hotends_sizer = new wxBoxSizer(wxVERTICAL);
289 m_arow_nozzles_box = CreateNozzleBox( { 0, 2, 4});
290 m_brow_nozzles_box = CreateNozzleBox( { 1, 3, 5});
293 hotends_rack_sizer->Add(m_hotends_sizer, 0, wxLEFT, FromDIP(8));
294
295 // Rack
296 m_rack_pos_panel = new wgtDeviceNozzleRackPos(m_panel_content);
297 hotends_rack_sizer->Add(m_rack_pos_panel, 0, wxEXPAND);
298 content_sizer->Add(hotends_rack_sizer, 0);
299
300 wxSizer* btn_sizer = new wxBoxSizer(wxHORIZONTAL);
301 m_btn_hotends_infos = new Button(m_panel_content, _L("Hotends Info"));
303 m_btn_hotends_infos->SetBackgroundColor(s_button_style_gray());
304 m_btn_hotends_infos->SetBackgroundColour(*wxWHITE);
306
307 m_btn_read_all = new Button(m_panel_content, _L("Read All"));
309 m_btn_read_all->SetBackgroundColor(s_button_style_gray());
310 m_btn_read_all->SetBackgroundColour(*wxWHITE);
311 m_btn_read_all->Bind(wxEVT_BUTTON, &wgtDeviceNozzleRackArea::OnBtnReadAll, this);
312
313 btn_sizer->Add(m_btn_hotends_infos, 0, wxLEFT);
314 btn_sizer->Add(m_btn_read_all, 0, wxLEFT, FromDIP(5));
315 content_sizer->Add(btn_sizer, 0, wxLEFT, FromDIP(10));
316
317 /* refresh panel */
318 wxSizer* refresh_sizer = CreateRefreshBook(m_panel_refresh);
319
320 m_panel_content->SetSizer(content_sizer);
321 m_panel_refresh->SetSizer(refresh_sizer);
322 m_simple_book->AddPage(m_panel_content, "Content");
323 m_simple_book->AddPage(m_panel_refresh, "Refresh");
324 main_sizer->Add(m_simple_book, 1, wxEXPAND);
325
326 m_simple_book->SetSelection(0);
327
328 SetSizer(main_sizer);
329 Layout();
330 Fit();
331}
#define _L(s)
Definition OBJ.cpp:34
static wxFont Body_12
Definition Label.hpp:55
Button * m_btn_hotends_infos
Definition wgtDeviceNozzleRack.h:145
wxPanel * m_panel_content
Definition wgtDeviceNozzleRack.h:134
StaticBox * m_arow_nozzles_box
Definition wgtDeviceNozzleRack.h:139
wxBoxSizer * m_hotends_sizer
Definition wgtDeviceNozzleRack.h:138
wxSimplebook * m_simple_book
Definition wgtDeviceNozzleRack.h:133
void OnBtnHotendsInfos(wxCommandEvent &evt)
Definition wgtDeviceNozzleRack.cpp:485
void OnBtnReadAll(wxCommandEvent &evt)
Definition wgtDeviceNozzleRack.cpp:500
StaticBox * CreateNozzleBox(const std::vector< int > nozzle_idxes)
Definition wgtDeviceNozzleRack.cpp:368
wgtDeviceNozzleRackTitle * m_title_nozzle_rack
Definition wgtDeviceNozzleRack.h:137
wxSizer * CreateRefreshBook(wxPanel *parent)
Definition wgtDeviceNozzleRack.cpp:333
StaticBox * m_brow_nozzles_box
Definition wgtDeviceNozzleRack.h:140
wgtDeviceNozzleRackPos * m_rack_pos_panel
Definition wgtDeviceNozzleRack.h:143
Button * m_btn_read_all
Definition wgtDeviceNozzleRack.h:146
wxPanel * m_panel_refresh
Definition wgtDeviceNozzleRack.h:135
static StateColor s_button_style_gray()
Definition wgtDeviceNozzleRack.cpp:96

References _L, Label::Body_12, CreateNozzleBox(), CreateRefreshBook(), m_arow_nozzles_box, m_brow_nozzles_box, m_btn_hotends_infos, m_btn_read_all, m_hotends_sizer, m_panel_content, m_panel_refresh, m_rack_pos_panel, m_simple_book, m_title_nozzle_rack, OnBtnHotendsInfos(), OnBtnReadAll(), and Slic3r::GUI::s_button_style_gray().

Referenced by wgtDeviceNozzleRackArea().

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

◆ CreateNozzleBox()

StaticBox * Slic3r::GUI::wgtDeviceNozzleRackArea::CreateNozzleBox ( const std::vector< int > nozzle_idxes)
private
369{
370 StaticBox* nozzle_box = new StaticBox(m_panel_content);
371 nozzle_box->SetBackgroundColor(*wxWHITE);
372 nozzle_box->SetBorderColor(*wxWHITE);
373 nozzle_box->SetCornerRadius(0);
374
375 wxSizer* h_sizer = new wxBoxSizer(wxHORIZONTAL);
376 for (auto start_idx : nozzle_idxes)
377 {
378 wgtDeviceNozzleRackNozzleItem* nozzle_item = new wgtDeviceNozzleRackNozzleItem(nozzle_box, start_idx);
379 m_nozzle_items[start_idx] = nozzle_item;
380 h_sizer->Add(nozzle_item, 0, wxALL, FromDIP(8));
381 }
382
383 nozzle_box->SetSizer(h_sizer);
384 return nozzle_box;
385}
std::unordered_map< int, wgtDeviceNozzleRackNozzleItem * > m_nozzle_items
Definition wgtDeviceNozzleRack.h:141
void SetCornerRadius(double radius)
Definition StaticBox.cpp:62
void SetBorderColor(StateColor const &color)
Definition StaticBox.cpp:87
void SetBackgroundColor(StateColor const &color)
Definition StaticBox.cpp:102

References m_nozzle_items, m_panel_content, StaticBox::SetBackgroundColor(), StaticBox::SetBorderColor(), and StaticBox::SetCornerRadius().

Referenced by CreateGui().

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

◆ CreateRefreshBook()

wxSizer * Slic3r::GUI::wgtDeviceNozzleRackArea::CreateRefreshBook ( wxPanel * parent)
private
334{
335 wxSizer* refresh_sizer = new wxBoxSizer(wxVERTICAL);
336
337 std::vector<std::string> list{"ams_rfid_1", "ams_rfid_2", "ams_rfid_3", "ams_rfid_4"};
338 m_refresh_icon = new AnimaIcon(parent, wxID_ANY, list, "refresh_printer", 100);
339 m_refresh_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
340
341 wxSizer* progress_sizer = new wxBoxSizer(wxHORIZONTAL);
342
343 Label* progress_prefix = new Label(parent, _L("Reading "));
344 progress_prefix->SetBackgroundColour(*wxWHITE);
345 m_progress_refresh = new Label(parent, "(1/6)");
347 m_progress_refresh->SetBackgroundColour(*wxWHITE);
348 m_progress_refresh->SetForegroundColour(*wxGREEN);
349 Label* progress_suffix = new Label(parent, " ...");
350 progress_suffix->SetBackgroundColour(*wxWHITE);
351
352 progress_sizer->Add(progress_prefix, 0, wxLEFT);
353 progress_sizer->Add(m_progress_refresh, 0, wxLEFT);
354 progress_sizer->Add(progress_suffix, 0, wxLEFT);
355
356 Label* refresh_tip = new Label(parent, _L("Please wait"));
357 refresh_tip->SetBackgroundColour(*wxWHITE);
358
359 refresh_sizer->Add(0, 0, 1, wxEXPAND, 0);
360 refresh_sizer->Add(m_refresh_icon, 0, wxALIGN_CENTER_HORIZONTAL, 0);
361 refresh_sizer->Add(progress_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(0));
362 refresh_sizer->Add(refresh_tip, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(0));
363 refresh_sizer->Add(0, 0, 1, wxEXPAND, 0);
364
365 return refresh_sizer;
366}
static wxFont Body_14
Definition Label.hpp:53
AnimaIcon * m_refresh_icon
Definition wgtDeviceNozzleRack.h:150
Label * m_progress_refresh
Definition wgtDeviceNozzleRack.h:149

References _L, Label::Body_14, m_progress_refresh, and m_refresh_icon.

Referenced by CreateGui().

Here is the caller graph for this function:

◆ OnBtnHotendsInfos()

void Slic3r::GUI::wgtDeviceNozzleRackArea::OnBtnHotendsInfos ( wxCommandEvent & evt)
private
486{
487 const auto& nozzle_rack = m_nozzle_rack.lock();
488 if (nozzle_rack)
489 {
490 m_rack_upgrade_dlg = new wgtDeviceNozzleRackUpgradeDlg((wxWindow*)wxGetApp().mainframe, nozzle_rack);
491 m_rack_upgrade_dlg->ShowModal();
492
493 delete m_rack_upgrade_dlg;
494 m_rack_upgrade_dlg = nullptr;
495 }
496
497 evt.Skip();
498}
std::weak_ptr< DevNozzleRack > m_nozzle_rack
Definition wgtDeviceNozzleRack.h:128
wgtDeviceNozzleRackUpgradeDlg * m_rack_upgrade_dlg
Definition wgtDeviceNozzleRack.h:152

References m_nozzle_rack, and m_rack_upgrade_dlg.

Referenced by CreateGui().

Here is the caller graph for this function:

◆ OnBtnReadAll()

void Slic3r::GUI::wgtDeviceNozzleRackArea::OnBtnReadAll ( wxCommandEvent & evt)
private
501{
502 if (const auto nozzle_rack = m_nozzle_rack.lock())
503 {
504 nozzle_rack->CtrlRackReadAll(true);
505 }
506
507 evt.Skip();
508}

References m_nozzle_rack.

Referenced by CreateGui().

Here is the caller graph for this function:

◆ Rescale()

void Slic3r::GUI::wgtDeviceNozzleRackArea::Rescale ( )
511{
512 for (auto item : m_nozzle_items)
513 {
514 item.second->Rescale();
515 }
516
517 m_rack_pos_panel->Rescale();
518 m_btn_hotends_infos->Rescale();
519 m_btn_read_all->Rescale();
520}

References m_btn_hotends_infos, m_btn_read_all, m_nozzle_items, and m_rack_pos_panel.

◆ UpdateNozzleItems()

void Slic3r::GUI::wgtDeviceNozzleRackArea::UpdateNozzleItems ( const std::unordered_map< int, wgtDeviceNozzleRackNozzleItem * > & nozzle_items,
std::shared_ptr< DevNozzleRack > nozzle_rack )
private
419{
420 for (auto iter : nozzle_items)
421 {
422 iter.second->UpdateInfo(nozzle_rack);
423 }
424
425 /*update nozzle possition and background*/
426 if (nozzle_rack->GetReadingCount() != 0)
427 {
428 m_progress_refresh->SetLabel(wxString::Format("(%d/%d)", nozzle_rack->GetReadingIdx(), nozzle_rack->GetReadingCount()));
429 if(!m_refresh_icon->IsPlaying()) {
430 m_simple_book->SetSelection(1);
431 m_refresh_icon->Play();
432 }
433 return;
434 } else{
435 m_refresh_icon->Stop();
436 m_simple_book->SetSelection(0);
437 }
438
439 const DevNozzleRack::RackPos new_pos = nozzle_rack->GetPosition();
440 const DevNozzleRack::RackStatus new_status = nozzle_rack->GetStatus();
441 if (m_rack_pos != new_pos || m_rack_status != new_status)
442 {
443 m_rack_pos = new_pos;
444 m_rack_status = new_status;
446 {
447 m_hotends_sizer->Clear();
449 {
452 }
454 {
457 }
458 else
459 {
462 }
463 }
464 }
465}
RackPos
Definition DevNozzleRack.h:43
@ RACK_POS_A_TOP
Definition DevNozzleRack.h:45
@ RACK_POS_B_TOP
Definition DevNozzleRack.h:46
RackStatus
Definition DevNozzleRack.h:27
@ RACK_STATUS_IDLE
Definition DevNozzleRack.h:29
DevNozzleRack::RackPos m_rack_pos
Definition wgtDeviceNozzleRack.h:129
DevNozzleRack::RackStatus m_rack_status
Definition wgtDeviceNozzleRack.h:130

References m_arow_nozzles_box, m_brow_nozzles_box, m_hotends_sizer, m_progress_refresh, m_rack_pos, m_rack_status, m_refresh_icon, m_simple_book, Slic3r::DevNozzleRack::RACK_POS_A_TOP, Slic3r::DevNozzleRack::RACK_POS_B_TOP, and Slic3r::DevNozzleRack::RACK_STATUS_IDLE.

Referenced by UpdateRackInfo().

Here is the caller graph for this function:

◆ UpdateRackInfo()

void Slic3r::GUI::wgtDeviceNozzleRackArea::UpdateRackInfo ( std::weak_ptr< DevNozzleRack > rack)
468{
469 m_nozzle_rack = rack;
470 const auto& nozzle_rack = rack.lock();
471 if (nozzle_rack)
472 {
473 // s_update_title(nozzle_rack, m_title_nozzle_rack);
474 UpdateNozzleItems(m_nozzle_items, nozzle_rack);
475 m_rack_pos_panel->UpdateRackPos(nozzle_rack);
476 m_btn_read_all->Enable(nozzle_rack->CtrlCanReadAll());
477 }
478
479 if (m_rack_upgrade_dlg && m_rack_upgrade_dlg->IsShown())
480 {
481 m_rack_upgrade_dlg->UpdateRackInfo(nozzle_rack);
482 }
483};
void UpdateNozzleItems(const std::unordered_map< int, wgtDeviceNozzleRackNozzleItem * > &nozzle_items, std::shared_ptr< DevNozzleRack > nozzle_rack)
Definition wgtDeviceNozzleRack.cpp:417

References m_btn_read_all, m_nozzle_items, m_nozzle_rack, m_rack_pos_panel, m_rack_upgrade_dlg, and UpdateNozzleItems().

Here is the call graph for this function:

Member Data Documentation

◆ m_arow_nozzles_box

StaticBox* Slic3r::GUI::wgtDeviceNozzleRackArea::m_arow_nozzles_box
private

Referenced by CreateGui(), and UpdateNozzleItems().

◆ m_brow_nozzles_box

StaticBox* Slic3r::GUI::wgtDeviceNozzleRackArea::m_brow_nozzles_box
private

Referenced by CreateGui(), and UpdateNozzleItems().

◆ m_btn_hotends_infos

Button* Slic3r::GUI::wgtDeviceNozzleRackArea::m_btn_hotends_infos
private

Referenced by CreateGui(), and Rescale().

◆ m_btn_read_all

Button* Slic3r::GUI::wgtDeviceNozzleRackArea::m_btn_read_all
private

Referenced by CreateGui(), Rescale(), and UpdateRackInfo().

◆ m_hotends_sizer

wxBoxSizer* Slic3r::GUI::wgtDeviceNozzleRackArea::m_hotends_sizer
private

Referenced by CreateGui(), and UpdateNozzleItems().

◆ m_nozzle_items

std::unordered_map<int, wgtDeviceNozzleRackNozzleItem*> Slic3r::GUI::wgtDeviceNozzleRackArea::m_nozzle_items
private

◆ m_nozzle_rack

std::weak_ptr<DevNozzleRack> Slic3r::GUI::wgtDeviceNozzleRackArea::m_nozzle_rack
private

◆ m_panel_content

wxPanel* Slic3r::GUI::wgtDeviceNozzleRackArea::m_panel_content { nullptr }
private
134{ nullptr };

Referenced by CreateGui(), and CreateNozzleBox().

◆ m_panel_refresh

wxPanel* Slic3r::GUI::wgtDeviceNozzleRackArea::m_panel_refresh { nullptr }
private
135{ nullptr };

Referenced by CreateGui().

◆ m_progress_refresh

Label* Slic3r::GUI::wgtDeviceNozzleRackArea::m_progress_refresh { nullptr }
private
149{ nullptr };

Referenced by CreateRefreshBook(), and UpdateNozzleItems().

◆ m_rack_pos

DevNozzleRack::RackPos Slic3r::GUI::wgtDeviceNozzleRackArea::m_rack_pos = DevNozzleRack::RACK_POS_UNKNOWN
private

Referenced by UpdateNozzleItems().

◆ m_rack_pos_panel

wgtDeviceNozzleRackPos* Slic3r::GUI::wgtDeviceNozzleRackArea::m_rack_pos_panel
private

Referenced by CreateGui(), Rescale(), and UpdateRackInfo().

◆ m_rack_status

DevNozzleRack::RackStatus Slic3r::GUI::wgtDeviceNozzleRackArea::m_rack_status = DevNozzleRack::RACK_STATUS_UNKNOWN
private

Referenced by UpdateNozzleItems().

◆ m_rack_upgrade_dlg

wgtDeviceNozzleRackUpgradeDlg* Slic3r::GUI::wgtDeviceNozzleRackArea::m_rack_upgrade_dlg = nullptr
private

◆ m_refresh_icon

AnimaIcon* Slic3r::GUI::wgtDeviceNozzleRackArea::m_refresh_icon { nullptr }
private
150{ nullptr };

Referenced by CreateRefreshBook(), and UpdateNozzleItems().

◆ m_simple_book

wxSimplebook* Slic3r::GUI::wgtDeviceNozzleRackArea::m_simple_book { nullptr }
private
133{ nullptr };

Referenced by CreateGui(), and UpdateNozzleItems().

◆ m_title_nozzle_rack

wgtDeviceNozzleRackTitle* Slic3r::GUI::wgtDeviceNozzleRackArea::m_title_nozzle_rack
private

Referenced by CreateGui().


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