ENH: Restrictions on setting the air duct mode during printing

JIRA: STUDIO-9350

Change-Id: Ie6442eccfef78d5431316f91b68fd0e55d4644aa
This commit is contained in:
Kunlong Ma 2024-12-30 17:37:12 +08:00 committed by lane.wei
parent 31e6527b8e
commit eaafe82f6f
2 changed files with 42 additions and 5 deletions

View File

@ -3,6 +3,7 @@
#include "../BitmapCache.hpp" #include "../BitmapCache.hpp"
#include "../I18N.hpp" #include "../I18N.hpp"
#include "../GUI_App.hpp" #include "../GUI_App.hpp"
#include "../MsgDialog.hpp"
#include <wx/simplebook.h> #include <wx/simplebook.h>
#include <wx/dcgraph.h> #include <wx/dcgraph.h>
@ -205,6 +206,11 @@ void FanOperate::on_left_down(wxMouseEvent& event)
} }
} }
void FanOperate::set_machine_obj(MachineObject *obj)
{
m_obj = obj;
}
void FanOperate::set_fan_speeds(int g) void FanOperate::set_fan_speeds(int g)
{ {
m_current_speeds = g; m_current_speeds = g;
@ -213,6 +219,13 @@ void FanOperate::set_fan_speeds(int g)
void FanOperate::add_fan_speeds() void FanOperate::add_fan_speeds()
{ {
if (m_obj && m_obj->is_in_printing()) {
MessageDialog msg_wingow(nullptr, _L("Changed fan speed during pringing may affect print quality, please choose carefully."), "", wxICON_WARNING | wxCANCEL | wxOK);
if (msg_wingow.ShowModal() == wxID_CANCEL) {
return;
}
}
if (m_current_speeds + 1 > m_max_speeds) return; if (m_current_speeds + 1 > m_max_speeds) return;
set_fan_speeds(++m_current_speeds); set_fan_speeds(++m_current_speeds);
post_event(wxCommandEvent(EVT_FAN_ADD)); post_event(wxCommandEvent(EVT_FAN_ADD));
@ -221,6 +234,13 @@ void FanOperate::add_fan_speeds()
void FanOperate::decrease_fan_speeds() void FanOperate::decrease_fan_speeds()
{ {
if (m_obj && m_obj->is_in_printing()) {
MessageDialog msg_wingow(nullptr, _L("Changed fan speed during pringing may affect print quality, please choose carefully."), "", wxICON_WARNING | wxCANCEL | wxOK);
if (msg_wingow.ShowModal() == wxID_CANCEL) {
return;
}
}
//turn off //turn off
if (m_current_speeds - 1 < m_min_speeds) { if (m_current_speeds - 1 < m_min_speeds) {
m_current_speeds = 0; m_current_speeds = 0;
@ -413,6 +433,13 @@ void FanControlNew::command_control_fan()
void FanControlNew::on_swith_fan(wxMouseEvent& evt) void FanControlNew::on_swith_fan(wxMouseEvent& evt)
{ {
if (m_obj && m_obj->is_in_printing()) {
MessageDialog msg_wingow(nullptr, _L("Changed fan speed during pringing may affect print quality, please choose carefully."), "", wxICON_WARNING | wxCANCEL | wxOK);
if (msg_wingow.ShowModal() == wxID_CANCEL) {
return;
}
}
int speed = 0; int speed = 0;
if (m_switch_fan) { if (m_switch_fan) {
m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp()); m_switch_button->SetBitmap(m_bitmap_toggle_off->bmp());
@ -478,6 +505,8 @@ void FanControlNew::set_machine_obj(MachineObject* obj)
{ {
m_update_already = true; m_update_already = true;
m_obj = obj; m_obj = obj;
if (m_fan_operate)
m_fan_operate->set_machine_obj(obj);
} }
void FanControlNew::set_name(wxString name) void FanControlNew::set_name(wxString name)
@ -563,6 +592,7 @@ FanControlPopupNew::FanControlPopupNew(wxWindow* parent, MachineObject* obj,AirD
}); });
m_mode_sizer->Add(m_radio_btn_sizer, 0, wxALIGN_CENTRE_VERTICAL, 0); m_mode_sizer->Add(m_radio_btn_sizer, 0, wxALIGN_CENTRE_VERTICAL, 0);
m_mode_sizer->Add(m_button_refresh, 0, wxALIGN_CENTRE_VERTICAL, 0); m_mode_sizer->Add(m_button_refresh, 0, wxALIGN_CENTRE_VERTICAL, 0);
m_button_refresh->Hide();
m_cooling_text = new wxStaticText(this, wxID_ANY, wxT("")); m_cooling_text = new wxStaticText(this, wxID_ANY, wxT(""));
m_cooling_text->SetBackgroundColour(*wxWHITE); m_cooling_text->SetBackgroundColour(*wxWHITE);
@ -594,9 +624,6 @@ FanControlPopupNew::FanControlPopupNew(wxWindow* parent, MachineObject* obj,AirD
#endif #endif
Bind(wxEVT_SHOW, &FanControlPopupNew::on_show, this); Bind(wxEVT_SHOW, &FanControlPopupNew::on_show, this);
Bind(EVT_FAN_CHANGED, &FanControlPopupNew::on_fan_changed, this); Bind(EVT_FAN_CHANGED, &FanControlPopupNew::on_fan_changed, this);
Bind(wxEVT_CLOSE_WINDOW, [this](const auto& e) {
int a = 0;
});
} }
void FanControlPopupNew::CreateDuct() void FanControlPopupNew::CreateDuct()
@ -610,7 +637,7 @@ void FanControlPopupNew::CreateDuct()
UpdateParts(m_data.curren_mode); UpdateParts(m_data.curren_mode);
if (m_data.modes.empty()) { if (m_data.modes.empty()) {
m_button_refresh->Hide(); //m_button_refresh->Hide();
return; return;
} }
size_t mode_size = m_data.modes.size(); size_t mode_size = m_data.modes.size();
@ -841,6 +868,12 @@ void FanControlPopupNew::paintEvent(wxPaintEvent& evt)
void FanControlPopupNew::on_mode_changed(const wxMouseEvent &event) void FanControlPopupNew::on_mode_changed(const wxMouseEvent &event)
{ {
if (m_obj && m_obj->is_in_printing()) {
MessageDialog msg_wingow(nullptr, _L("The selected material only supports the current fan mode, and it can't be changed during printing."), "", wxICON_WARNING | wxOK);
msg_wingow.ShowModal();
return;
}
size_t btn_list_size = m_mode_switch_btn_list.size(); size_t btn_list_size = m_mode_switch_btn_list.size();
for (size_t i = 0; i < btn_list_size; ++i) { for (size_t i = 0; i < btn_list_size; ++i) {
if (m_mode_switch_btn_list[i]->GetId() == event.GetId()) { if (m_mode_switch_btn_list[i]->GetId() == event.GetId()) {

View File

@ -90,7 +90,7 @@ Description:FanOperate
class FanOperate : public wxWindow class FanOperate : public wxWindow
{ {
public: public:
FanOperate(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); FanOperate(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
~FanOperate() {}; ~FanOperate() {};
void post_event(wxCommandEvent&& event); void post_event(wxCommandEvent&& event);
void paintEvent(wxPaintEvent& evt); void paintEvent(wxPaintEvent& evt);
@ -100,6 +100,8 @@ public:
void create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size); void create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size);
void on_left_down(wxMouseEvent& event); void on_left_down(wxMouseEvent& event);
void set_machine_obj(MachineObject *obj);
public: public:
void set_fan_speeds(int g); void set_fan_speeds(int g);
void add_fan_speeds(); void add_fan_speeds();
@ -111,6 +113,8 @@ private:
int m_max_speeds; int m_max_speeds;
ScalableBitmap m_bitmap_add; ScalableBitmap m_bitmap_add;
ScalableBitmap m_bitmap_decrease; ScalableBitmap m_bitmap_decrease;
MachineObject* m_obj;
}; };