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

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

Inheritance diagram for Slic3r::GUI::FanControlNew:
Collaboration diagram for Slic3r::GUI::FanControlNew:

Public Member Functions

 FanControlNew (wxWindow *parent, const AirDuctData &fan_data, int mode_id, int part_id, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize)
 ~FanControlNew ()
void update_obj_state (bool stat)
void update_fan_data (const AirDuctData &data)
void command_control_fan ()
bool check_printing_state ()
void set_machine_obj (MachineObject *obj)
void set_name (wxString name)
void set_mode_id (int id)
void set_part_id (int id)
void set_fan_speed (int g)
void set_fan_speed_percent (int speed)
void set_fan_switch (bool s)
void post_event ()
void on_swith_fan (wxMouseEvent &evt)
void on_swith_fan (bool on)
void update_mode ()
void on_left_down (wxMouseEvent &event)
void on_mode_change (wxMouseEvent &event)
void msw_rescale ()

Public Attributes

wxStaticBitmap * m_static_bitmap_fan { nullptr}
wxStaticBitmap * m_switch_button { nullptr }

Protected Attributes

MachineObject * m_obj
wxStaticText * m_static_name { nullptr }
int m_fan_id
ScalableBitmap * m_bitmap_fan { nullptr }
ScalableBitmap * m_bitmap_toggle_off { nullptr }
ScalableBitmap * m_bitmap_toggle_on { nullptr }
FanOperate * m_fan_operate { nullptr }
bool m_switch_fan { false }
bool m_update_already { false }
int m_current_speed { 0 }
int m_part_id {0}
int m_mode_id {0}
wxBoxSizer * m_sizer_control_bottom { nullptr }
wxStaticText * m_static_status_name {nullptr}
int m_show_mode {0}
AirDuctData m_fan_data
bool m_new_protocol { false }
std::shared_ptr< FanControlNew > token

Detailed Description

Constructor & Destructor Documentation

◆ FanControlNew()

Slic3r::GUI::FanControlNew::FanControlNew ( wxWindow * parent,
const AirDuctData & fan_data,
int mode_id,
int part_id,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize )
357 : wxWindow(parent, id, pos, size)
358 , m_fan_data(fan_data)
359 , m_mode_id(mode_id)
360 , m_part_id(part_id)
361{
362 SetMaxSize(wxSize(FromDIP(180), FromDIP(80)));
363 SetMinSize(wxSize(FromDIP(180), FromDIP(80)));
364 m_bitmap_fan = new ScalableBitmap(this, "fan_icon", 20);
365 m_bitmap_toggle_off = new ScalableBitmap(this, "toggle_off", 16);
366 m_bitmap_toggle_on = new ScalableBitmap(this, "toggle_on", 16);
367
368 SetBackgroundColour(wxColour(248, 248, 248));
369
370 wxBoxSizer* m_sizer_main = new wxBoxSizer(wxHORIZONTAL);
371
372 //m_sizer_main->Add(0, 0, 0, wxLEFT, FromDIP(18));
373
374 wxBoxSizer* sizer_control = new wxBoxSizer(wxVERTICAL);
375 wxBoxSizer* sizer_control_top = new wxBoxSizer(wxHORIZONTAL);
376 m_sizer_control_bottom = new wxBoxSizer(wxVERTICAL);
377
378 m_static_bitmap_fan = new wxStaticBitmap(this, wxID_ANY, m_bitmap_fan->bmp(), wxDefaultPosition, wxDefaultSize);
379
380 m_static_name = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END | wxALIGN_CENTER_HORIZONTAL);
381 m_static_name->SetBackgroundColour(wxColour(248, 248, 248));
383 m_static_name->SetMinSize(wxSize(FromDIP(100), -1));
384 m_static_name->SetMaxSize(wxSize(FromDIP(100), -1));
385
386 m_switch_button = new wxStaticBitmap(this, wxID_ANY, m_bitmap_toggle_off->bmp(), wxDefaultPosition, wxDefaultSize, 0);
387 m_switch_button->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_HAND); });
388 m_switch_button->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) { SetCursor(wxCURSOR_RIGHT_ARROW); });
389 m_switch_button->Bind(wxEVT_LEFT_DOWN, &FanControlNew::on_swith_fan, this);
390
391
392 sizer_control_top->Add(m_static_bitmap_fan, 0, wxLEFT | wxTOP, FromDIP(8));
393 sizer_control_top->Add(m_static_name, 0, wxLEFT | wxTOP, FromDIP(5));
394 sizer_control_top->Add(0, 0, 1, wxEXPAND, 0);
395 sizer_control_top->Add(m_switch_button, 0, wxALIGN_RIGHT | wxRIGHT | wxTOP, FromDIP(5));
396
397 sizer_control->Add(sizer_control_top, 0, wxEXPAND, 0);
398
399 m_static_status_name = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END | wxALIGN_CENTER_HORIZONTAL);
400 m_static_status_name->SetForegroundColour(wxColour("#009688"));
401 m_static_status_name->SetBackgroundColour(wxColour(248, 248, 248));
403 m_static_status_name->SetMinSize(wxSize(FromDIP(100), -1));
404 m_static_status_name->SetMaxSize(wxSize(FromDIP(100), -1));
405 m_fan_operate = new FanOperate(this, wxID_ANY, wxDefaultPosition, wxDefaultSize);
406
407 m_fan_operate->Bind(EVT_FAN_SWITCH_ON, [this](const wxCommandEvent &e) {
408 m_current_speed = e.GetInt();
409 m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp());
410 m_switch_fan = true;
411 });
412 m_fan_operate->Bind(EVT_FAN_SWITCH_OFF, [this](const wxCommandEvent &e) {
413 m_current_speed = e.GetInt();
414 m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
415 m_switch_fan = false;
416 });
417
418 m_fan_operate->Bind(EVT_FAN_ADD, [this](const wxCommandEvent &e) {
419 m_current_speed = e.GetInt();
421 });
422
423 m_fan_operate->Bind(EVT_FAN_DEC, [this](const wxCommandEvent& e) {
424 m_current_speed = e.GetInt();
426 });
427
428 m_sizer_control_bottom->Add(m_static_status_name, 0, wxLEFT | wxALIGN_CENTER, FromDIP(30));
429 m_sizer_control_bottom->Add(m_fan_operate, 0, wxALL, FromDIP(5));
430
431 sizer_control->Add(m_sizer_control_bottom, 0, wxALL | wxEXPAND, 0);
432 m_sizer_main->Add(sizer_control, 0, wxALIGN_CENTER, 0);
433 update_mode();
434
435#if __APPLE__
436 Bind(wxEVT_LEFT_DOWN, &FanControlNew::on_left_down, this);
437#endif
438
439 this->SetSizer(m_sizer_main);
440 this->Layout();
441 m_sizer_main->Fit(this);
442 wxGetApp().UpdateDarkUIWin(this);
443}
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
static wxFont Head_16
Definition Label.hpp:43
bool m_switch_fan
Definition FanControl.hpp:154
ScalableBitmap * m_bitmap_toggle_on
Definition FanControl.hpp:151
int m_part_id
Definition FanControl.hpp:157
AirDuctData m_fan_data
Definition FanControl.hpp:165
void update_mode()
Definition FanControl.cpp:534
void command_control_fan()
Definition FanControl.cpp:475
wxBoxSizer * m_sizer_control_bottom
Definition FanControl.hpp:160
int m_current_speed
Definition FanControl.hpp:156
ScalableBitmap * m_bitmap_toggle_off
Definition FanControl.hpp:150
ScalableBitmap * m_bitmap_fan
Definition FanControl.hpp:149
void on_left_down(wxMouseEvent &event)
Definition FanControl.cpp:445
wxStaticBitmap * m_static_bitmap_fan
Definition FanControl.hpp:171
int m_mode_id
Definition FanControl.hpp:158
wxStaticBitmap * m_switch_button
Definition FanControl.hpp:172
void on_swith_fan(wxMouseEvent &evt)
Definition FanControl.cpp:502
wxStaticText * m_static_name
Definition FanControl.hpp:146
FanOperate * m_fan_operate
Definition FanControl.hpp:153
wxStaticText * m_static_status_name
Definition FanControl.hpp:161

References command_control_fan(), Label::Head_16, m_bitmap_fan, m_bitmap_toggle_off, m_bitmap_toggle_on, m_current_speed, m_fan_data, m_fan_operate, m_mode_id, m_part_id, m_sizer_control_bottom, m_static_bitmap_fan, m_static_name, m_static_status_name, m_switch_button, m_switch_fan, on_left_down(), on_swith_fan(), update_mode(), and wxStaticText.

Here is the call graph for this function:

◆ ~FanControlNew()

Slic3r::GUI::FanControlNew::~FanControlNew ( )
inline
142{};

Member Function Documentation

◆ check_printing_state()

bool Slic3r::GUI::FanControlNew::check_printing_state ( )
492{
493 if (m_obj && !not_show_fan_speed_warning_dlg && m_obj->is_in_printing()) {
494 MessageDialog msg_wingow(nullptr, _L("Changing fan speed during printing may affect print quality, please choose carefully."), "", wxICON_WARNING | wxCANCEL | wxOK);
495 msg_wingow.SetButtonLabel(wxID_OK, _L("Change Anyway"));
497 return (msg_wingow.ShowModal() == wxID_OK);
498 }
499 return true;
500}
#define _L(s)
Definition OBJ.cpp:34
MachineObject * m_obj
Definition FanControl.hpp:145
static bool not_show_fan_speed_warning_dlg
Definition FanControl.cpp:42

References _L, m_obj, Slic3r::GUI::not_show_fan_speed_warning_dlg, Slic3r::GUI::MsgDialog::SetButtonLabel(), and Slic3r::GUI::DPIAware< P >::ShowModal().

Referenced by on_swith_fan().

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

◆ command_control_fan()

void Slic3r::GUI::FanControlNew::command_control_fan ( )
476{
478
479 BOOST_LOG_TRIVIAL(info) << "Functions Need to be supplemented! :FanControlNew::command_control_fan. the speed may change";
480 if (m_obj) {
481 if (!m_obj->is_enable_np){
482 int speed = floor(m_current_speed * float(25.5));
483 m_obj->GetFan()->command_control_fan(m_part_id, speed);
484 } else {
485 m_obj->GetFan()->command_control_fan_new(m_part_id, m_current_speed * 10);
486 }
487 post_event();
488 }
489}
void post_event()
Definition FanControl.cpp:635

References m_current_speed, m_obj, m_part_id, and post_event().

Referenced by FanControlNew(), and on_swith_fan().

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

◆ msw_rescale()

void Slic3r::GUI::FanControlNew::msw_rescale ( )
454{
455 m_bitmap_fan->msw_rescale();
456 m_static_bitmap_fan->SetBitmap(m_bitmap_fan->bmp());
457
458 m_bitmap_toggle_off->msw_rescale();
459 m_bitmap_toggle_on->msw_rescale();
460 if (m_switch_fan)
461 {
462 m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp());
463 }
464 else
465 {
466 m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
467 }
468
469 m_fan_operate->msw_rescale();
470
471 Layout();
472 Refresh();
473}

References m_bitmap_fan, m_bitmap_toggle_off, m_bitmap_toggle_on, m_fan_operate, m_static_bitmap_fan, m_switch_button, and m_switch_fan.

◆ on_left_down()

void Slic3r::GUI::FanControlNew::on_left_down ( wxMouseEvent & event)
446{
447 //auto mouse_pos = GetParent()->ClientToScreen(evt.GetPosition());
448 //auto tag_pos = m_fan_operate->ScreenToClient(mouse_pos);
449 //evt.SetPosition(tag_pos);
450 m_fan_operate->on_left_down(evt);
451}

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

Referenced by FanControlNew().

Here is the caller graph for this function:

◆ on_mode_change()

void Slic3r::GUI::FanControlNew::on_mode_change ( wxMouseEvent & event)

◆ on_swith_fan() [1/2]

void Slic3r::GUI::FanControlNew::on_swith_fan ( bool on)
524{
525 m_switch_fan = on;
526 if (m_switch_fan) {
527 m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp());
528 }
529 else {
530 m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
531 }
532}

References m_bitmap_toggle_off, m_bitmap_toggle_on, m_switch_button, and m_switch_fan.

◆ on_swith_fan() [2/2]

void Slic3r::GUI::FanControlNew::on_swith_fan ( wxMouseEvent & evt)
503{
504 if (!check_printing_state()) {
505 return;
506 }
507
508 int speed = 0;
509 if (m_switch_fan) {
510 m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
511 m_switch_fan = false;
512 }
513 else {
514 speed = 255;
515 m_switch_button->SetBitmap(m_bitmap_toggle_on->bmp());
516 m_switch_fan = true;
517 }
518
519 set_fan_speed(speed);
521}
bool check_printing_state()
Definition FanControl.cpp:491
void set_fan_speed(int g)
Definition FanControl.cpp:599

References check_printing_state(), command_control_fan(), m_bitmap_toggle_off, m_bitmap_toggle_on, m_switch_button, m_switch_fan, set_fan_speed(), and Slic3r::GUI::wxMouseEvent.

Referenced by FanControlNew(), set_fan_speed(), and set_fan_speed_percent().

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

◆ post_event()

void Slic3r::GUI::FanControlNew::post_event ( )
636{
637 auto event = wxCommandEvent(EVT_FAN_CHANGED);
638 event.SetString(wxString::Format("%d", m_current_speed));
639 event.SetEventObject(GetParent());
640 wxPostEvent(GetParent(), event);
641 event.Skip();
642}

References m_current_speed.

Referenced by command_control_fan().

Here is the caller graph for this function:

◆ set_fan_speed()

void Slic3r::GUI::FanControlNew::set_fan_speed ( int g)
600{
601 if (g < 0 || g > 255) return;
602 int speed = round(float(g) / float(25.5));
603
604 if (m_current_speed != speed) {
605 m_current_speed = speed;
606 m_fan_operate->set_fan_speeds(m_current_speed);
607
608 if (m_current_speed <= 0) {
609 on_swith_fan(false);
610 }
611 else {
612 on_swith_fan(true);
613 }
614 }
615}

References m_current_speed, m_fan_operate, and on_swith_fan().

Referenced by on_swith_fan().

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

◆ set_fan_speed_percent()

void Slic3r::GUI::FanControlNew::set_fan_speed_percent ( int speed)
618{
619 if (m_current_speed != speed) {
620 m_current_speed = speed;
621 m_fan_operate->set_fan_speeds(m_current_speed);
622
623 if (m_current_speed <= 0) {
624 on_swith_fan(false);
625 } else {
626 on_swith_fan(true);
627 }
628 }
629}

References m_current_speed, m_fan_operate, and on_swith_fan().

Here is the call graph for this function:

◆ set_fan_switch()

void Slic3r::GUI::FanControlNew::set_fan_switch ( bool s)
632{
633}

◆ set_machine_obj()

void Slic3r::GUI::FanControlNew::set_machine_obj ( MachineObject * obj)
570{
571 m_update_already = true;
572 m_obj = obj;
573 if (m_fan_operate)
574 m_fan_operate->set_machine_obj(obj);
575}
bool m_update_already
Definition FanControl.hpp:155

References m_fan_operate, m_obj, and m_update_already.

◆ set_mode_id()

void Slic3r::GUI::FanControlNew::set_mode_id ( int id)
inline
179{ m_mode_id = id;}

References m_mode_id.

◆ set_name()

void Slic3r::GUI::FanControlNew::set_name ( wxString name)
578{
579 if (name.Contains('(') && name.Contains(')'))
580 {
581 wxClientDC dc(m_static_name);
582 dc.SetFont(m_static_name->GetFont());
583 if (dc.GetTextExtent(name).GetWidth() > m_static_name->GetSize().GetWidth())
584 {
585 const wxString& name_without_brackets = name.BeforeFirst('(');
586 const wxString& bracket_content = name.Right(name.Length() - name_without_brackets.Length());
587 const wxString& content = name_without_brackets + "\n" + bracket_content;
588 m_static_name->SetLabelText(content);
589
590 Layout();
591 return;
592 }
593 }
594
595 m_static_name->SetLabelText(name);
596 Layout();
597}

References m_static_name.

◆ set_part_id()

void Slic3r::GUI::FanControlNew::set_part_id ( int id)
inline
180{m_part_id = id;};

References m_part_id.

◆ update_fan_data()

void Slic3r::GUI::FanControlNew::update_fan_data ( const AirDuctData & data)
inline
174{ m_fan_data = data; };

References m_fan_data.

◆ update_mode()

void Slic3r::GUI::FanControlNew::update_mode ( )
535{
536 int cur_mode = m_mode_id;
537 if (cur_mode < 0) {
538 m_static_status_name->Hide();
539 m_fan_operate->Show();
540 } else {
541 auto mode = m_fan_data.modes[cur_mode];
542 auto it = std::find(mode.off.begin(), mode.off.end(), m_part_id);
543
544 if (it != mode.off.end()) {
545 m_show_mode = 2;
546 m_static_status_name->SetLabelText(_L("Off"));
547 } else {
548 auto it_ctrl = std::find(mode.ctrl.begin(), mode.ctrl.end(), m_part_id);
549 if (it_ctrl == mode.ctrl.end()) {
550 m_show_mode = 1;
551 m_static_status_name->SetLabelText(_L("Auto"));
552 } else {
553 m_show_mode = 0;
554 }
555 }
556
557 if (m_show_mode == 0) {
558 m_static_status_name->Hide();
559 m_switch_button->Show();
560 m_fan_operate->Show();
561 } else {
562 m_static_status_name->Show();
563 m_switch_button->Hide();
564 m_fan_operate->Hide();
565 }
566 }
567}
int m_show_mode
Definition FanControl.hpp:162

References _L, m_fan_data, m_fan_operate, m_mode_id, m_part_id, m_show_mode, m_static_status_name, and m_switch_button.

Referenced by FanControlNew().

Here is the caller graph for this function:

◆ update_obj_state()

void Slic3r::GUI::FanControlNew::update_obj_state ( bool stat)
inline
173{ m_update_already = stat; };

References m_update_already.

Member Data Documentation

◆ m_bitmap_fan

ScalableBitmap* Slic3r::GUI::FanControlNew::m_bitmap_fan { nullptr }
protected
149{ nullptr };

Referenced by FanControlNew(), and msw_rescale().

◆ m_bitmap_toggle_off

ScalableBitmap* Slic3r::GUI::FanControlNew::m_bitmap_toggle_off { nullptr }
protected
150{ nullptr };

Referenced by FanControlNew(), msw_rescale(), on_swith_fan(), and on_swith_fan().

◆ m_bitmap_toggle_on

ScalableBitmap* Slic3r::GUI::FanControlNew::m_bitmap_toggle_on { nullptr }
protected
151{ nullptr };

Referenced by FanControlNew(), msw_rescale(), on_swith_fan(), and on_swith_fan().

◆ m_current_speed

int Slic3r::GUI::FanControlNew::m_current_speed { 0 }
protected

◆ m_fan_data

AirDuctData Slic3r::GUI::FanControlNew::m_fan_data
protected

◆ m_fan_id

int Slic3r::GUI::FanControlNew::m_fan_id
protected

◆ m_fan_operate

FanOperate* Slic3r::GUI::FanControlNew::m_fan_operate { nullptr }
protected

◆ m_mode_id

int Slic3r::GUI::FanControlNew::m_mode_id {0}
protected
158{0};

Referenced by FanControlNew(), set_mode_id(), and update_mode().

◆ m_new_protocol

bool Slic3r::GUI::FanControlNew::m_new_protocol { false }
protected
166{ false };

◆ m_obj

MachineObject* Slic3r::GUI::FanControlNew::m_obj
protected

◆ m_part_id

int Slic3r::GUI::FanControlNew::m_part_id {0}
protected

◆ m_show_mode

int Slic3r::GUI::FanControlNew::m_show_mode {0}
protected
162{0};// 0 - ctrl, 1 - auto, 2 - off

Referenced by update_mode().

◆ m_sizer_control_bottom

wxBoxSizer* Slic3r::GUI::FanControlNew::m_sizer_control_bottom { nullptr }
protected
160{ nullptr };

Referenced by FanControlNew().

◆ m_static_bitmap_fan

wxStaticBitmap* Slic3r::GUI::FanControlNew::m_static_bitmap_fan { nullptr}
171{ nullptr};

Referenced by FanControlNew(), and msw_rescale().

◆ m_static_name

wxStaticText* Slic3r::GUI::FanControlNew::m_static_name { nullptr }
protected
146{ nullptr };

Referenced by FanControlNew(), and set_name().

◆ m_static_status_name

wxStaticText* Slic3r::GUI::FanControlNew::m_static_status_name {nullptr}
protected
161{nullptr};

Referenced by FanControlNew(), and update_mode().

◆ m_switch_button

wxStaticBitmap* Slic3r::GUI::FanControlNew::m_switch_button { nullptr }

◆ m_switch_fan

bool Slic3r::GUI::FanControlNew::m_switch_fan { false }
protected
154{ false };

Referenced by FanControlNew(), msw_rescale(), on_swith_fan(), and on_swith_fan().

◆ m_update_already

bool Slic3r::GUI::FanControlNew::m_update_already { false }
protected
155{ false };

Referenced by set_machine_obj(), and update_obj_state().

◆ token

std::shared_ptr<FanControlNew> Slic3r::GUI::FanControlNew::token
protected

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