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

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

Inheritance diagram for Slic3r::GUI::MultiMachineManagerPage:
Collaboration diagram for Slic3r::GUI::MultiMachineManagerPage:

Public Member Functions

 MultiMachineManagerPage (wxWindow *parent)
 ~MultiMachineManagerPage ()
void update_page ()
void refresh_user_device (bool clear=false)
void sync_state (MachineObject *obj_)
bool Show (bool show)
std::vector< ObjState > extractRange (const std::vector< ObjState > &source, int start, int end)
void start_timer ()
void update_page_number ()
void on_timer (wxTimerEvent &event)
void clear_page ()
void page_num_enter_evt ()
void msw_rescale ()

Private Attributes

std::vector< ObjState > m_state_objs
std::vector< MultiMachineItem * > m_device_items
SortItem m_sort
bool device_dev_name_big { true }
bool device_state_big { true }
Button * m_button_edit {nullptr}
wxBoxSizer * page_sizer { nullptr }
wxPanel * m_main_panel { nullptr }
wxBoxSizer * m_main_sizer {nullptr}
wxBoxSizer * m_sizer_machine_list {nullptr}
wxScrolledWindow * m_machine_list { nullptr }
wxPanel * m_table_head_panel { nullptr }
wxBoxSizer * m_table_head_sizer { nullptr }
Button * m_printer_name { nullptr }
Button * m_task_name { nullptr }
Button * m_status { nullptr }
Button * m_action { nullptr }
wxStaticText * m_tip_text { nullptr }
Button * m_button_add { nullptr }
int m_current_page { 0 }
int m_total_page { 0 }
int m_total_count { 0 }
int m_count_page_item { 10 }
Button * btn_last_page { nullptr }
Button * btn_next_page { nullptr }
wxStaticText * st_page_number { nullptr }
wxBoxSizer * m_flipping_page_sizer { nullptr }
wxBoxSizer * m_page_sizer { nullptr }
wxPanel * m_flipping_panel { nullptr }
wxTimer * m_flipping_timer { nullptr }
TextInput * m_page_num_input { nullptr }
Button * m_page_num_enter { nullptr }

Detailed Description

Constructor & Destructor Documentation

◆ MultiMachineManagerPage()

Slic3r::GUI::MultiMachineManagerPage::MultiMachineManagerPage ( wxWindow * parent)
300 : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
301{
302#ifdef __WINDOWS__
303 SetDoubleBuffered(true);
304#endif //__WINDOWS__
305 SetBackgroundColour(wxColour(0xEEEEEE));
306 m_main_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
307 m_main_panel->SetBackgroundColour(*wxWHITE);
308 m_main_sizer = new wxBoxSizer(wxVERTICAL);
309
310 StateColor head_bg(
311 std::pair<wxColour, int>(TABLE_HEAD_PRESSED_COLOUR, StateColor::Pressed),
312 std::pair<wxColour, int>(TABLE_HEAR_NORMAL_COLOUR, StateColor::Normal)
313 );
314
315 //edit prints
316 auto sizer_button_printer = new wxBoxSizer(wxHORIZONTAL);
317 sizer_button_printer->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
318 m_button_edit = new Button(m_main_panel, _L("Edit Printers"));
320
321 m_button_edit->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
322 MultiMachinePickPage dlg;
323 dlg.ShowModal();
325 evt.Skip();
326 });
327
328 sizer_button_printer->Add( 0, 0, 1, wxEXPAND, 5 );
329 sizer_button_printer->Add(m_button_edit, 0, wxALIGN_CENTER, 0);
330
331 m_table_head_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
332 m_table_head_panel->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
333 m_table_head_panel->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
334 m_table_head_panel->SetBackgroundColour(TABLE_HEAR_NORMAL_COLOUR);
335 m_table_head_sizer = new wxBoxSizer(wxHORIZONTAL);
336
337 m_printer_name = new Button(m_table_head_panel, _L("Device Name"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SINGLE_SIZE);
338 m_printer_name->SetBackgroundColor(head_bg);
340 m_printer_name->SetCornerRadius(0);
341 m_printer_name->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
342 m_printer_name->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
343 m_printer_name->SetCenter(false);
344 m_printer_name->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
345 SetCursor(wxCURSOR_HAND);
346 });
347 m_printer_name->Bind(wxEVT_LEAVE_WINDOW, [&](wxMouseEvent& evt) {
348 SetCursor(wxCURSOR_ARROW);
349 });
350 m_printer_name->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& evt) {
352 auto sortcb = [this](ObjState s1, ObjState s2) {
353 return device_dev_name_big ? s1.state_dev_name > s2.state_dev_name : s1.state_dev_name < s2.state_dev_name;
354 };
356 this->refresh_user_device();
357 });
358
359
360 m_task_name = new Button(m_table_head_panel, _L("Task Name"), "", wxNO_BORDER, ICON_SINGLE_SIZE);
361 m_task_name->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR);
363 m_task_name->SetCornerRadius(0);
364 m_task_name->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
365 m_task_name->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
366 m_task_name->SetCenter(false);
367
368
369
370 m_status = new Button(m_table_head_panel, _L("Device Status"), "toolbar_double_directional_arrow", wxNO_BORDER, ICON_SINGLE_SIZE);
371 m_status->SetBackgroundColor(head_bg);
372 m_status->SetFont(TABLE_HEAD_FONT);
373 m_status->SetCornerRadius(0);
374 m_status->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_PRO_INFO), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
375 m_status->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_PRO_INFO), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
376 m_status->SetCenter(false);
377 m_status->Bind(wxEVT_ENTER_WINDOW, [&](wxMouseEvent& evt) {
378 SetCursor(wxCURSOR_HAND);
379 });
380 m_status->Bind(wxEVT_LEAVE_WINDOW, [&](wxMouseEvent& evt) {
381 SetCursor(wxCURSOR_ARROW);
382 });
383 m_status->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent& evt) {
385 auto sortcb = [this](ObjState s1, ObjState s2) {
386 return device_state_big ? s1.state_device > s2.state_device : s1.state_device < s2.state_device;
387 };
389 this->refresh_user_device();
390 });
391
392
393 m_action = new Button(m_table_head_panel, _L("Actions"), "", wxNO_BORDER, ICON_SINGLE_SIZE, false);
394 m_action->SetBackgroundColor(TABLE_HEAR_NORMAL_COLOUR);
395 m_action->SetFont(TABLE_HEAD_FONT);
396 m_action->SetCornerRadius(0);
397 m_action->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_PRO_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
398 m_action->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_PRO_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
399 m_action->SetCenter(false);
400
401
402 m_table_head_sizer->AddSpacer(FromDIP(DEVICE_LEFT_PADDING_LEFT));
403 m_table_head_sizer->Add(m_printer_name, 0, wxALIGN_CENTER_VERTICAL, 0);
404 m_table_head_sizer->Add(m_task_name, 0, wxALIGN_CENTER_VERTICAL, 0);
405 m_table_head_sizer->Add(m_status, 0, wxALIGN_CENTER_VERTICAL, 0);
406 m_table_head_sizer->Add(m_action, 0, wxLEFT, 0);
407
409 m_table_head_panel->Layout();
410
411 m_tip_text = new wxStaticText(m_main_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER);
412 m_tip_text->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
413 m_tip_text->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
414 m_tip_text->SetLabel(_L("Please select the devices you would like to manage here (up to 6 devices)"));
415 m_tip_text->SetForegroundColour(wxColour(50, 58, 61));
417 m_tip_text->Wrap(-1);
418
419 m_button_add = new Button(m_main_panel, _L("Add"));
421
422 m_button_add->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
423 MultiMachinePickPage dlg;
424 dlg.ShowModal();
426 evt.Skip();
427 });
428
429 m_machine_list = new wxScrolledWindow(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
430 m_machine_list->SetBackgroundColour(*wxWHITE);
431 m_machine_list->SetScrollRate(0, FromDIP(DEVICE_ITEM_MAX_HEIGHT));
432 m_machine_list->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
433 m_machine_list->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), 10 * FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
434
435 m_sizer_machine_list = new wxBoxSizer(wxVERTICAL);
437 m_machine_list->Layout();
438
439 // add flipping page
440 StateColor ctrl_bg(
441 std::pair<wxColour, int>(CTRL_BUTTON_PRESSEN_COLOUR, StateColor::Pressed),
442 std::pair<wxColour, int>(CTRL_BUTTON_NORMAL_COLOUR, StateColor::Normal)
443 );
444
445 m_flipping_panel = new wxPanel(m_main_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize);
446 m_flipping_panel->SetMinSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
447 m_flipping_panel->SetMaxSize(wxSize(FromDIP(DEVICE_ITEM_MAX_WIDTH), -1));
448 m_flipping_panel->SetBackgroundColour(*wxWHITE);
449
450 m_flipping_page_sizer = new wxBoxSizer(wxHORIZONTAL);
451 m_page_sizer = new wxBoxSizer(wxVERTICAL);
452 btn_last_page = new Button(m_flipping_panel, "", "go_last_plate", 0, FromDIP(20));
453 btn_last_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
454 btn_last_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
455 btn_last_page->SetBackgroundColor(head_bg);
456 btn_last_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
457 evt.Skip();
458 if (m_current_page == 0)
459 return;
460 btn_last_page->Enable(false);
461 btn_next_page->Enable(false);
462 start_timer();
464 if (m_current_page < 0)
465 m_current_page = 0;
468 });
469 st_page_number = new wxStaticText(m_flipping_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
470 btn_next_page = new Button(m_flipping_panel, "", "go_next_plate", 0, FromDIP(20));
471 btn_next_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
472 btn_next_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
473 btn_next_page->SetBackgroundColor(head_bg);
474 btn_next_page->Bind(wxEVT_LEFT_DOWN, [&](wxMouseEvent& evt) {
475 evt.Skip();
476 if (m_current_page == m_total_page - 1)
477 return;
478 btn_last_page->Enable(false);
479 btn_next_page->Enable(false);
480 start_timer();
486 });
487
488 m_page_num_input = new ::TextInput(m_flipping_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(50), -1), wxTE_PROCESS_ENTER);
489 StateColor input_bg(std::pair<wxColour, int>(wxColour("#F0F0F1"), StateColor::Disabled), std::pair<wxColour, int>(*wxWHITE, StateColor::Enabled));
490 m_page_num_input->SetBackgroundColor(input_bg);
491 m_page_num_input->GetTextCtrl()->SetValue("1");
492 wxTextValidator validator(wxFILTER_DIGITS);
493 m_page_num_input->GetTextCtrl()->SetValidator(validator);
494 m_page_num_input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [&](wxCommandEvent& e) {
496 });
497
498 // TRN Button that jumps to the page number typed next to it
499 m_page_num_enter = new Button(m_flipping_panel, _L("Go"));
500 m_page_num_enter->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
501 m_page_num_enter->SetMaxSize(wxSize(FromDIP(25), FromDIP(25)));
502 m_page_num_enter->SetBackgroundColor(ctrl_bg);
503 m_page_num_enter->SetCornerRadius(FromDIP(5));
504 m_page_num_enter->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [&](auto& evt) {
506 });
507
508 m_flipping_page_sizer->Add(0, 0, 1, wxEXPAND, 0);
509 m_flipping_page_sizer->Add(btn_last_page, 0, wxALIGN_CENTER, 0);
510 m_flipping_page_sizer->Add(st_page_number, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
511 m_flipping_page_sizer->Add(btn_next_page, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
512 m_flipping_page_sizer->Add(m_page_num_input, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(20));
513 m_flipping_page_sizer->Add(m_page_num_enter, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
514 m_page_sizer->Add(m_flipping_page_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(5));
516 m_flipping_panel->Layout();
517
518 m_main_sizer->AddSpacer(FromDIP(16));
519 m_main_sizer->Add(sizer_button_printer, 0, wxALIGN_CENTER_HORIZONTAL, 0);
520 m_main_sizer->AddSpacer(FromDIP(5));
521 m_main_sizer->Add(m_table_head_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0);
522 m_main_sizer->Add(m_tip_text, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, FromDIP(50));
523 m_main_sizer->Add(m_button_add, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, FromDIP(16));
524 m_main_sizer->Add(m_machine_list, 0, wxALIGN_CENTER_HORIZONTAL, 0);
525 m_main_sizer->Add(m_flipping_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0);
526 m_main_panel->SetSizer(m_main_sizer);
527 m_main_panel->Layout();
528 page_sizer = new wxBoxSizer(wxVERTICAL);
529 page_sizer->Add(m_main_panel, 1, wxALL | wxEXPAND, FromDIP(10)); // ORCA match margin with other tabs
530
531 SetSizer(page_sizer);
532 Layout();
533 Fit();
534
535 Bind(wxEVT_TIMER, &MultiMachineManagerPage::on_timer, this);
536}
@ Confirm
Definition Button.hpp:25
@ Window
Definition Button.hpp:32
#define ICON_SINGLE_SIZE
Definition GUI_Utils.hpp:50
#define DEVICE_LEFT_DEV_NAME
Definition MultiMachineManagerPage.hpp:23
#define DEVICE_LEFT_PRO_NAME
Definition MultiMachineManagerPage.hpp:24
#define DEVICE_LEFT_PRO_INFO
Definition MultiMachineManagerPage.hpp:25
#define DEVICE_LEFT_PADDING_LEFT
Definition MultiMachineManagerPage.hpp:22
#define TABLE_HEAR_NORMAL_COLOUR
Definition MultiMachine.hpp:22
#define TABLE_HEAD_PRESSED_COLOUR
Definition MultiMachine.hpp:23
#define TABLE_HEAD_FONT
Definition MultiMachine.hpp:26
#define CTRL_BUTTON_PRESSEN_COLOUR
Definition MultiMachine.hpp:25
#define CTRL_BUTTON_NORMAL_COLOUR
Definition MultiMachine.hpp:24
#define DEVICE_ITEM_MAX_WIDTH
Definition MultiMachine.hpp:18
#define DEVICE_ITEM_MAX_HEIGHT
Definition MultiMachine.hpp:20
#define _L(s)
Definition OBJ.cpp:34
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
static wxFont Head_20
Definition Label.hpp:41
wxScrolledWindow * m_machine_list
Definition MultiMachineManagerPage.hpp:90
SortItem m_sort
Definition MultiMachineManagerPage.hpp:80
void refresh_user_device(bool clear=false)
Definition MultiMachineManagerPage.cpp:546
wxBoxSizer * page_sizer
Definition MultiMachineManagerPage.hpp:86
void start_timer()
Definition MultiMachineManagerPage.cpp:677
wxPanel * m_main_panel
Definition MultiMachineManagerPage.hpp:87
wxStaticText * st_page_number
Definition MultiMachineManagerPage.hpp:112
Button * m_action
Definition MultiMachineManagerPage.hpp:98
wxBoxSizer * m_flipping_page_sizer
Definition MultiMachineManagerPage.hpp:113
void page_num_enter_evt()
Definition MultiMachineManagerPage.cpp:714
TextInput * m_page_num_input
Definition MultiMachineManagerPage.hpp:117
wxPanel * m_flipping_panel
Definition MultiMachineManagerPage.hpp:115
wxBoxSizer * m_sizer_machine_list
Definition MultiMachineManagerPage.hpp:89
Button * m_page_num_enter
Definition MultiMachineManagerPage.hpp:118
bool device_dev_name_big
Definition MultiMachineManagerPage.hpp:81
bool device_state_big
Definition MultiMachineManagerPage.hpp:82
Button * m_button_edit
Definition MultiMachineManagerPage.hpp:85
Button * m_button_add
Definition MultiMachineManagerPage.hpp:102
int m_total_page
Definition MultiMachineManagerPage.hpp:106
Button * m_status
Definition MultiMachineManagerPage.hpp:97
void on_timer(wxTimerEvent &event)
Definition MultiMachineManagerPage.cpp:700
wxBoxSizer * m_table_head_sizer
Definition MultiMachineManagerPage.hpp:94
wxBoxSizer * m_main_sizer
Definition MultiMachineManagerPage.hpp:88
int m_current_page
Definition MultiMachineManagerPage.hpp:105
Button * m_task_name
Definition MultiMachineManagerPage.hpp:96
wxPanel * m_table_head_panel
Definition MultiMachineManagerPage.hpp:93
void update_page_number()
Definition MultiMachineManagerPage.cpp:691
wxStaticText * m_tip_text
Definition MultiMachineManagerPage.hpp:101
Button * btn_next_page
Definition MultiMachineManagerPage.hpp:111
Button * btn_last_page
Definition MultiMachineManagerPage.hpp:110
wxBoxSizer * m_page_sizer
Definition MultiMachineManagerPage.hpp:114
Button * m_printer_name
Definition MultiMachineManagerPage.hpp:95
@ Normal
Definition StateColor.hpp:16
@ Disabled
Definition StateColor.hpp:22
@ Pressed
Definition StateColor.hpp:21
@ Enabled
Definition StateColor.hpp:17
wxMouseEvent
Definition CameraPopup.cpp:47
@ SR_MACHINE_NAME
Definition MultiMachine.hpp:96
@ SR_MACHINE_STATE
Definition MultiMachine.hpp:97

References _L, btn_last_page, btn_next_page, Confirm, CTRL_BUTTON_NORMAL_COLOUR, CTRL_BUTTON_PRESSEN_COLOUR, device_dev_name_big, DEVICE_ITEM_MAX_HEIGHT, DEVICE_ITEM_MAX_WIDTH, DEVICE_LEFT_DEV_NAME, DEVICE_LEFT_PADDING_LEFT, DEVICE_LEFT_PRO_INFO, DEVICE_LEFT_PRO_NAME, device_state_big, StateColor::Disabled, StateColor::Enabled, Label::Head_20, ICON_SINGLE_SIZE, m_action, m_button_add, m_button_edit, m_current_page, m_flipping_page_sizer, m_flipping_panel, m_machine_list, m_main_panel, m_main_sizer, m_page_num_enter, m_page_num_input, m_page_sizer, m_printer_name, m_sizer_machine_list, m_sort, m_status, m_table_head_panel, m_table_head_sizer, m_task_name, m_tip_text, m_total_page, StateColor::Normal, on_timer(), page_num_enter_evt(), page_sizer, StateColor::Pressed, refresh_user_device(), Slic3r::GUI::DPIAware< P >::ShowModal(), Slic3r::GUI::SortItem::SR_MACHINE_NAME, Slic3r::GUI::SortItem::SR_MACHINE_STATE, st_page_number, start_timer(), Slic3r::GUI::ObjState::state_dev_name, Slic3r::GUI::ObjState::state_device, TABLE_HEAD_FONT, TABLE_HEAD_PRESSED_COLOUR, TABLE_HEAR_NORMAL_COLOUR, update_page_number(), Window, Slic3r::GUI::wxMouseEvent, and wxStaticText.

Here is the call graph for this function:

◆ ~MultiMachineManagerPage()

Slic3r::GUI::MultiMachineManagerPage::~MultiMachineManagerPage ( )
inline
58{};

Member Function Documentation

◆ clear_page()

void Slic3r::GUI::MultiMachineManagerPage::clear_page ( )
710{
711
712}

◆ extractRange()

std::vector< ObjState > Slic3r::GUI::MultiMachineManagerPage::extractRange ( const std::vector< ObjState > & source,
int start,
int end )
610 {
611 std::vector<ObjState> result;
612
613 if (start < 0 || start > end || source.size() <= 0) {
614 return result;
615 }
616
617 if ( end >= source.size() ) {
618 end = source.size();
619 }
620
621 auto startIter = source.begin() + start;
622 auto endIter = source.begin() + end;
623 result.assign(startIter, endIter);
624 return result;
625}
T * end(Slic3r::Mat< N, M, T > &mat)
Definition Point.hpp:841

Referenced by refresh_user_device().

Here is the caller graph for this function:

◆ msw_rescale()

void Slic3r::GUI::MultiMachineManagerPage::msw_rescale ( )
734{
735 m_printer_name->Rescale();
736 m_printer_name->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
737 m_printer_name->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
738 m_task_name->Rescale();
739 m_task_name->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
740 m_task_name->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_DEV_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
741 m_status->Rescale();
742 m_status->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_PRO_INFO), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
743 m_status->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_PRO_INFO), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
744 m_action->Rescale();
745 m_action->SetMinSize(wxSize(FromDIP(DEVICE_LEFT_PRO_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
746 m_action->SetMaxSize(wxSize(FromDIP(DEVICE_LEFT_PRO_NAME), FromDIP(DEVICE_ITEM_MAX_HEIGHT)));
747 m_button_add->Rescale();
748 m_button_add->SetMinSize(wxSize(FromDIP(90), FromDIP(36)));
749 m_button_add->SetMaxSize(wxSize(FromDIP(90), FromDIP(36)));
750
751 btn_last_page->Rescale();
752 btn_last_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
753 btn_last_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
754 btn_next_page->Rescale();
755 btn_next_page->SetMinSize(wxSize(FromDIP(20), FromDIP(20)));
756 btn_next_page->SetMaxSize(wxSize(FromDIP(20), FromDIP(20)));
757 m_page_num_enter->Rescale();
758 m_page_num_enter->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
759 m_page_num_enter->SetMaxSize(wxSize(FromDIP(25), FromDIP(25)));
760
761 m_button_edit->Rescale();
762 m_button_edit->SetMinSize(wxSize(FromDIP(90), FromDIP(36)));
763 m_button_edit->SetMaxSize(wxSize(FromDIP(90), FromDIP(36)));
764
765
766 for (const auto& item : m_device_items) {
767 item->Refresh();
768 }
769
770 Fit();
771 Layout();
772 Refresh();
773}
std::vector< MultiMachineItem * > m_device_items
Definition MultiMachineManagerPage.hpp:79

References btn_last_page, btn_next_page, DEVICE_ITEM_MAX_HEIGHT, DEVICE_LEFT_DEV_NAME, DEVICE_LEFT_PRO_INFO, DEVICE_LEFT_PRO_NAME, m_action, m_button_add, m_button_edit, m_device_items, m_page_num_enter, m_printer_name, m_status, and m_task_name.

◆ on_timer()

void Slic3r::GUI::MultiMachineManagerPage::on_timer ( wxTimerEvent & event)
701{
702 m_flipping_timer->Stop();
703 if (btn_last_page)
704 btn_last_page->Enable(true);
705 if (btn_next_page)
706 btn_next_page->Enable(true);
707}
wxTimer * m_flipping_timer
Definition MultiMachineManagerPage.hpp:116

References btn_last_page, btn_next_page, and m_flipping_timer.

Referenced by MultiMachineManagerPage().

Here is the caller graph for this function:

◆ page_num_enter_evt()

void Slic3r::GUI::MultiMachineManagerPage::page_num_enter_evt ( )
715{
716 btn_last_page->Enable(false);
717 btn_next_page->Enable(false);
718 start_timer();
719 auto value = m_page_num_input->GetTextCtrl()->GetValue();
720 long page_num = 0;
721 if (value.ToLong(&page_num)) {
722 if (page_num > m_total_page)
724 else if (page_num < 1)
725 m_current_page = 0;
726 else
727 m_current_page = page_num - 1;
728 }
731}

References btn_last_page, btn_next_page, m_current_page, m_page_num_input, m_total_page, refresh_user_device(), start_timer(), and update_page_number().

Referenced by MultiMachineManagerPage().

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

◆ refresh_user_device()

void Slic3r::GUI::MultiMachineManagerPage::refresh_user_device ( bool clear = false)
547{
548 m_sizer_machine_list->Clear(true);
549 m_device_items.clear();
550
551 if(clear) return;
552
553 Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
554 if (!dev) return;
555
556 auto all_machine = dev->get_my_cloud_machine_list();
557 auto user_machine = std::map<std::string, MachineObject*>();
558
559 //selected machine
560 for (int i = 0; i < PICK_DEVICE_MAX; i++) {
561 auto dev_id = wxGetApp().app_config->get("multi_devices", std::to_string(i));
562
563 if (all_machine.count(dev_id) > 0) {
564 user_machine[dev_id] = all_machine[dev_id];
565 }
566 }
567
568
569 m_total_count = user_machine.size();
570
571 m_state_objs.clear();
572 for (auto it = user_machine.begin(); it != user_machine.end(); ++it) {
573 sync_state(it->second);
574 }
575
576 //sort
578 std::sort(m_state_objs.begin(), m_state_objs.end(), m_sort.get_machine_call_back());
579 }
580
581 double result = static_cast<double>(user_machine.size()) / m_count_page_item;
582 m_total_page = std::ceil(result);
583
584 std::vector<ObjState> sort_devices = extractRange(m_state_objs, m_current_page * m_count_page_item, (m_current_page + 1) * m_count_page_item - 1 );
585 std::vector<std::string> subscribe_list;
586
587 for (auto i = 0; i < sort_devices.size(); ++i) {
588 auto dev_id = sort_devices[i].dev_id;
589
590 auto machine = user_machine[dev_id];
591
592 MultiMachineItem* di = new MultiMachineItem(m_machine_list, machine);
593 m_device_items.push_back(di);
594 m_sizer_machine_list->Add(m_device_items[i], 0, wxALL | wxEXPAND, 0);
595
596 subscribe_list.push_back(dev_id);
597 }
598
599 dev->subscribe_device_list(subscribe_list);
600
601 m_tip_text->Show(m_device_items.empty());
602 m_button_add->Show(m_device_items.empty());
603
606 m_sizer_machine_list->Layout();
607 Layout();
608}
#define PICK_DEVICE_MAX
Definition MultiMachinePage.hpp:34
void subscribe_device_list(std::vector< std::string > dev_list)
Definition DevManager.cpp:794
std::map< std::string, MachineObject * > get_my_cloud_machine_list(const std::string &agent_id="")
Definition DevManager.cpp:856
std::vector< ObjState > extractRange(const std::vector< ObjState > &source, int start, int end)
Definition MultiMachineManagerPage.cpp:610
std::vector< ObjState > m_state_objs
Definition MultiMachineManagerPage.hpp:78
int m_count_page_item
Definition MultiMachineManagerPage.hpp:108
void sync_state(MachineObject *obj_)
Definition MultiMachineManagerPage.cpp:627
int m_total_count
Definition MultiMachineManagerPage.hpp:107
@ SR_None
Definition MultiMachine.hpp:87

References extractRange(), Slic3r::DeviceManager::get_my_cloud_machine_list(), m_button_add, m_count_page_item, m_current_page, m_device_items, m_flipping_panel, m_machine_list, m_sizer_machine_list, m_sort, m_state_objs, m_tip_text, m_total_count, m_total_page, PICK_DEVICE_MAX, Slic3r::GUI::SortItem::SR_None, Slic3r::DeviceManager::subscribe_device_list(), sync_state(), and update_page_number().

Referenced by MultiMachineManagerPage(), page_num_enter_evt(), and Show().

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

◆ Show()

bool Slic3r::GUI::MultiMachineManagerPage::Show ( bool show)
664{
665 if (show) {
667 }
668 else {
669 Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
670 if (dev) {
671 dev->subscribe_device_list(std::vector<std::string>());
672 }
673 }
674 return wxPanel::Show(show);
675}

References refresh_user_device(), and Slic3r::DeviceManager::subscribe_device_list().

Here is the call graph for this function:

◆ start_timer()

void Slic3r::GUI::MultiMachineManagerPage::start_timer ( )
678{
679 if (m_flipping_timer) {
680 m_flipping_timer->Stop();
681 }
682 else {
683 m_flipping_timer = new wxTimer();
684 }
685
686 m_flipping_timer->SetOwner(this);
687 m_flipping_timer->Start(1000);
688 wxPostEvent(this, wxTimerEvent(*m_flipping_timer));
689}

References m_flipping_timer.

Referenced by MultiMachineManagerPage(), and page_num_enter_evt().

Here is the caller graph for this function:

◆ sync_state()

void Slic3r::GUI::MultiMachineManagerPage::sync_state ( MachineObject * obj_)
628{
629 ObjState state_obj;
630
631 if (obj_) {
632 state_obj.dev_id = obj_->get_dev_id();
633 state_obj.state_dev_name = obj_->get_dev_name();
634
635 if (obj_->print_status == "IDLE") {
636 state_obj.state_device = 0;
637 }
638 else if (obj_->print_status == "FINISH") {
639 state_obj.state_device = 1;
640 }
641 else if (obj_->print_status == "FAILED") {
642 state_obj.state_device = 2;
643 }
644 else if (obj_->print_status == "RUNNING") {
645 state_obj.state_device = 3;
646 }
647 else if (obj_->print_status == "PAUSE") {
648 state_obj.state_device = 4;
649 }
650 else if (obj_->print_status == "PREPARE") {
651 state_obj.state_device = 5;
652 }
653 else if (obj_->print_status == "SLICING") {
654 state_obj.state_device = 6;
655 }
656 else {
657 state_obj.state_device = 7;
658 }
659 }
660 m_state_objs.push_back(state_obj);
661}

References Slic3r::GUI::ObjState::dev_id, Slic3r::MachineObject::get_dev_id(), Slic3r::MachineObject::get_dev_name(), m_state_objs, Slic3r::MachineObject::print_status, Slic3r::GUI::ObjState::state_dev_name, and Slic3r::GUI::ObjState::state_device.

Referenced by refresh_user_device().

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

◆ update_page()

void Slic3r::GUI::MultiMachineManagerPage::update_page ( )
539{
540 for (int i = 0; i < m_device_items.size(); i++) {
541 m_device_items[i]->sync_state();
542 m_device_items[i]->Refresh();
543 }
544}

References m_device_items.

◆ update_page_number()

void Slic3r::GUI::MultiMachineManagerPage::update_page_number ( )
692{
693 double result = static_cast<double>(m_total_count) / m_count_page_item;
694 m_total_page = std::ceil(result);
695
696 wxString number = wxString(std::to_string(m_current_page + 1)) + " / " + wxString(std::to_string(m_total_page));
697 st_page_number->SetLabel(number);
698}

References m_count_page_item, m_current_page, m_total_count, m_total_page, and st_page_number.

Referenced by MultiMachineManagerPage(), page_num_enter_evt(), and refresh_user_device().

Here is the caller graph for this function:

Member Data Documentation

◆ btn_last_page

Button* Slic3r::GUI::MultiMachineManagerPage::btn_last_page { nullptr }
private

◆ btn_next_page

Button* Slic3r::GUI::MultiMachineManagerPage::btn_next_page { nullptr }
private

◆ device_dev_name_big

bool Slic3r::GUI::MultiMachineManagerPage::device_dev_name_big { true }
private
81{ true };

Referenced by MultiMachineManagerPage().

◆ device_state_big

bool Slic3r::GUI::MultiMachineManagerPage::device_state_big { true }
private
82{ true };

Referenced by MultiMachineManagerPage().

◆ m_action

Button* Slic3r::GUI::MultiMachineManagerPage::m_action { nullptr }
private
98{ nullptr };

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_button_add

Button* Slic3r::GUI::MultiMachineManagerPage::m_button_add { nullptr }
private
102{ nullptr };

Referenced by MultiMachineManagerPage(), msw_rescale(), and refresh_user_device().

◆ m_button_edit

Button* Slic3r::GUI::MultiMachineManagerPage::m_button_edit {nullptr}
private
85{nullptr};

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_count_page_item

int Slic3r::GUI::MultiMachineManagerPage::m_count_page_item { 10 }
private
108{ 10 };

Referenced by refresh_user_device(), and update_page_number().

◆ m_current_page

int Slic3r::GUI::MultiMachineManagerPage::m_current_page { 0 }
private

◆ m_device_items

std::vector<MultiMachineItem*> Slic3r::GUI::MultiMachineManagerPage::m_device_items
private

◆ m_flipping_page_sizer

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::m_flipping_page_sizer { nullptr }
private
113{ nullptr };

Referenced by MultiMachineManagerPage().

◆ m_flipping_panel

wxPanel* Slic3r::GUI::MultiMachineManagerPage::m_flipping_panel { nullptr }
private
115{ nullptr };

Referenced by MultiMachineManagerPage(), and refresh_user_device().

◆ m_flipping_timer

wxTimer* Slic3r::GUI::MultiMachineManagerPage::m_flipping_timer { nullptr }
private
116{ nullptr };

Referenced by on_timer(), and start_timer().

◆ m_machine_list

wxScrolledWindow* Slic3r::GUI::MultiMachineManagerPage::m_machine_list { nullptr }
private
90{ nullptr };

Referenced by MultiMachineManagerPage(), and refresh_user_device().

◆ m_main_panel

wxPanel* Slic3r::GUI::MultiMachineManagerPage::m_main_panel { nullptr }
private
87{ nullptr };

Referenced by MultiMachineManagerPage().

◆ m_main_sizer

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::m_main_sizer {nullptr}
private
88{nullptr};

Referenced by MultiMachineManagerPage().

◆ m_page_num_enter

Button* Slic3r::GUI::MultiMachineManagerPage::m_page_num_enter { nullptr }
private
118{ nullptr };

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_page_num_input

TextInput* Slic3r::GUI::MultiMachineManagerPage::m_page_num_input { nullptr }
private
117{ nullptr };

Referenced by MultiMachineManagerPage(), and page_num_enter_evt().

◆ m_page_sizer

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::m_page_sizer { nullptr }
private
114{ nullptr };

Referenced by MultiMachineManagerPage().

◆ m_printer_name

Button* Slic3r::GUI::MultiMachineManagerPage::m_printer_name { nullptr }
private
95{ nullptr };

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_sizer_machine_list

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::m_sizer_machine_list {nullptr}
private
89{nullptr};

Referenced by MultiMachineManagerPage(), and refresh_user_device().

◆ m_sort

SortItem Slic3r::GUI::MultiMachineManagerPage::m_sort
private

◆ m_state_objs

std::vector<ObjState> Slic3r::GUI::MultiMachineManagerPage::m_state_objs
private

Referenced by refresh_user_device(), and sync_state().

◆ m_status

Button* Slic3r::GUI::MultiMachineManagerPage::m_status { nullptr }
private
97{ nullptr };

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_table_head_panel

wxPanel* Slic3r::GUI::MultiMachineManagerPage::m_table_head_panel { nullptr }
private
93{ nullptr };

Referenced by MultiMachineManagerPage().

◆ m_table_head_sizer

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::m_table_head_sizer { nullptr }
private
94{ nullptr };

Referenced by MultiMachineManagerPage().

◆ m_task_name

Button* Slic3r::GUI::MultiMachineManagerPage::m_task_name { nullptr }
private
96{ nullptr };

Referenced by MultiMachineManagerPage(), and msw_rescale().

◆ m_tip_text

wxStaticText* Slic3r::GUI::MultiMachineManagerPage::m_tip_text { nullptr }
private
101{ nullptr };

Referenced by MultiMachineManagerPage(), and refresh_user_device().

◆ m_total_count

int Slic3r::GUI::MultiMachineManagerPage::m_total_count { 0 }
private
107{ 0 };

Referenced by refresh_user_device(), and update_page_number().

◆ m_total_page

int Slic3r::GUI::MultiMachineManagerPage::m_total_page { 0 }
private

◆ page_sizer

wxBoxSizer* Slic3r::GUI::MultiMachineManagerPage::page_sizer { nullptr }
private
86{ nullptr };

Referenced by MultiMachineManagerPage().

◆ st_page_number

wxStaticText* Slic3r::GUI::MultiMachineManagerPage::st_page_number { nullptr }
private
112{ nullptr };

Referenced by MultiMachineManagerPage(), and update_page_number().


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