2023-08-25 09:36:16 +08:00
# include "calib_dlg.hpp"
# include "GUI_App.hpp"
# include "MsgDialog.hpp"
# include "I18N.hpp"
# include <wx/dcgraph.h>
# include "MainFrame.hpp"
# include <string>
2023-09-01 20:05:08 +08:00
# include <iomanip>
2023-08-25 09:36:16 +08:00
namespace Slic3r {
namespace GUI {
2023-08-30 11:12:12 +08:00
FRF_Calibration_Dlg : : FRF_Calibration_Dlg ( wxWindow * parent , wxWindowID id , Plater * plater )
2023-09-01 20:05:08 +08:00
: DPIDialog ( parent , id , _L ( " Flowrate Fine Calibration " ) , wxDefaultPosition , wxSize ( - 1 , 280 ) , wxDEFAULT_DIALOG_STYLE | wxNO_BORDER ) , m_plater ( plater )
2023-08-30 11:12:12 +08:00
{
wxBoxSizer * v_sizer = new wxBoxSizer ( wxVERTICAL ) ;
SetSizer ( v_sizer ) ;
2023-09-01 20:05:08 +08:00
// desc
std : : string setting_desc_message = _u8L ( " Please input the best value from the coarse calibration to further determine a more accurate extrusion multiplier. " ) ;
auto setting_desc = new wxStaticText ( this , wxID_ANY , setting_desc_message , wxDefaultPosition , wxSize ( 340 , - 1 ) , wxALIGN_LEFT ) ;
setting_desc - > Wrap ( setting_desc - > GetClientSize ( ) . x ) ;
v_sizer - > Add ( setting_desc , 0 , wxTOP | wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
2023-08-30 11:12:12 +08:00
// Settings
2023-09-01 20:05:08 +08:00
wxStaticBoxSizer * settings_sizer = new wxStaticBoxSizer ( wxHORIZONTAL , this , _L ( " Settings " ) ) ;
2023-08-30 11:12:12 +08:00
2024-07-23 14:19:21 +08:00
auto extrusion_multiplier_text = new wxStaticText ( this , wxID_ANY , _L ( " Extrusion Multiplier: " ) , wxDefaultPosition , wxSize ( 230 , - 1 ) , wxALIGN_LEFT ) ;
2023-09-01 20:05:08 +08:00
settings_sizer - > Add ( extrusion_multiplier_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-08-30 16:53:46 +08:00
// extru
2023-09-01 20:05:08 +08:00
auto filament_config = & wxGetApp ( ) . preset_bundle - > filaments . get_edited_preset ( ) . config ;
auto read_extrusion_multiplier = filament_config - > opt_float ( " extrusion_multiplier " , 0 ) ;
2023-11-09 10:56:33 +08:00
m_tc_extrusion_multiplier = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( read_extrusion_multiplier ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
2023-09-01 20:05:08 +08:00
m_tc_extrusion_multiplier - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
settings_sizer - > Add ( m_tc_extrusion_multiplier , 0 , wxRIGHT | wxALIGN_RIGHT , 0 ) ;
2023-08-30 16:53:46 +08:00
2023-08-31 18:26:57 +08:00
v_sizer - > Add ( settings_sizer , 0 , wxTOP | wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
2023-09-01 20:05:08 +08:00
v_sizer - > Add ( 0 , 5 , 0 , wxEXPAND , 5 ) ;
m_btnStart = new wxButton ( this , wxID_ANY , _L ( " OK " ) ) ;
2023-08-30 11:12:12 +08:00
m_btnStart - > Bind ( wxEVT_BUTTON , & FRF_Calibration_Dlg : : on_start , this ) ;
2023-08-31 18:26:57 +08:00
v_sizer - > Add ( m_btnStart , 0 , wxRIGHT | wxALIGN_RIGHT , 15 ) ;
2023-09-01 20:05:08 +08:00
v_sizer - > Add ( 0 , 8 , 0 , wxEXPAND , 5 ) ;
2023-08-30 11:12:12 +08:00
m_btnStart - > Connect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( FRF_Calibration_Dlg : : on_start ) , NULL , this ) ;
2023-08-31 18:26:57 +08:00
wxGetApp ( ) . UpdateDlgDarkUI ( this ) ;
2023-08-30 11:12:12 +08:00
Layout ( ) ;
Fit ( ) ;
}
FRF_Calibration_Dlg : : ~ FRF_Calibration_Dlg ( ) {
// Disconnect Events
m_btnStart - > Disconnect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( FRF_Calibration_Dlg : : on_start ) , NULL , this ) ;
}
void FRF_Calibration_Dlg : : on_start ( wxCommandEvent & event ) {
bool read_double = false ;
2023-09-01 20:05:08 +08:00
double target_extrusion_multiplier ;
read_double = m_tc_extrusion_multiplier - > GetValue ( ) . ToDouble ( & target_extrusion_multiplier ) ;
2023-08-30 11:12:12 +08:00
2023-09-01 20:05:08 +08:00
if ( ! read_double | | target_extrusion_multiplier < 0.5 ) {
MessageDialog msg_dlg ( nullptr , _L ( " Please input valid values: \n 0.5 <= Extrusion Multiplier <= 1.5 \n " ) , wxEmptyString , wxICON_WARNING | wxOK ) ;
2023-08-31 09:32:08 +08:00
msg_dlg . ShowModal ( ) ;
2023-09-01 20:05:08 +08:00
m_tc_extrusion_multiplier - > SetValue ( " 0.5 " ) ;
2023-08-30 16:53:46 +08:00
return ;
2023-09-01 20:05:08 +08:00
} else if ( ! read_double | | target_extrusion_multiplier > 1.5 ) {
MessageDialog msg_dlg ( nullptr , _L ( " Please input valid values: \n 0.5 <= Extrusion Multiplier <= 1.5 \n " ) , wxEmptyString , wxICON_WARNING | wxOK ) ;
2023-08-31 09:32:08 +08:00
msg_dlg . ShowModal ( ) ;
2023-09-01 20:05:08 +08:00
m_tc_extrusion_multiplier - > SetValue ( " 1.5 " ) ;
2023-08-30 11:12:12 +08:00
return ;
}
2023-09-01 20:05:08 +08:00
m_plater - > calib_flowrate_fine ( target_extrusion_multiplier ) ;
2023-08-30 11:12:12 +08:00
EndModal ( wxID_OK ) ;
}
void FRF_Calibration_Dlg : : on_dpi_changed ( const wxRect & suggested_rect ) {
this - > Refresh ( ) ;
Fit ( ) ;
}
2023-08-25 09:36:16 +08:00
PA_Calibration_Dlg : : PA_Calibration_Dlg ( wxWindow * parent , wxWindowID id , Plater * plater )
2023-09-01 20:05:08 +08:00
: DPIDialog ( parent , id , _L ( " Pressure Advance Calibration " ) , wxDefaultPosition , wxSize ( - 1 , 280 ) , wxDEFAULT_DIALOG_STYLE | wxNO_BORDER ) , m_plater ( plater )
2023-08-25 09:36:16 +08:00
{
wxBoxSizer * v_sizer = new wxBoxSizer ( wxVERTICAL ) ;
SetSizer ( v_sizer ) ;
2023-09-01 20:05:08 +08:00
wxString m_rbMethodChoices [ ] = { _L ( " PA Line " ) , _L ( " PA Pattern " ) , _L ( " PA Tower " ) } ;
int m_rbMethodNChoices = sizeof ( m_rbMethodChoices ) / sizeof ( wxString ) ;
m_rbMethod = new wxRadioBox ( this , wxID_ANY , _L ( " Method " ) , wxDefaultPosition , wxDefaultSize , m_rbMethodNChoices , m_rbMethodChoices , 1 , wxRA_SPECIFY_COLS ) ;
m_rbMethod - > SetSelection ( 0 ) ;
v_sizer - > Add ( m_rbMethod , 0 , wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
2023-08-25 09:36:16 +08:00
// Settings
2023-09-01 20:05:08 +08:00
wxStaticBoxSizer * settings_sizer = new wxStaticBoxSizer ( wxVERTICAL , this , _L ( " Settings " ) ) ;
2023-08-25 09:36:16 +08:00
// start PA
auto start_PA_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-01-26 16:15:38 +08:00
2024-07-23 14:19:21 +08:00
auto start_pa_text = new wxStaticText ( this , wxID_ANY , _L ( " Start PA: " ) , wxDefaultPosition , wxSize ( 80 , - 1 ) , wxALIGN_LEFT ) ;
2023-09-01 20:05:08 +08:00
start_PA_sizer - > Add ( start_pa_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-08-25 09:36:16 +08:00
2023-11-09 10:56:33 +08:00
m_tcStartPA = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 0.0 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
2023-09-01 20:05:08 +08:00
m_tcStartPA - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
start_PA_sizer - > Add ( m_tcStartPA , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2024-01-26 16:15:38 +08:00
auto start_PA_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
start_PA_sizer - > Add ( start_PA_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-08-25 09:36:16 +08:00
settings_sizer - > Add ( start_PA_sizer ) ;
// end PA
auto end_PA_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-01-26 16:15:38 +08:00
2024-07-23 14:19:21 +08:00
auto end_pa_text = new wxStaticText ( this , wxID_ANY , _L ( " End PA: " ) , wxDefaultPosition , wxSize ( 80 , - 1 ) , wxALIGN_LEFT ) ;
2023-08-25 09:36:16 +08:00
end_PA_sizer - > Add ( end_pa_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-09-01 20:05:08 +08:00
2023-11-09 10:56:33 +08:00
m_tcEndPA = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 0.04 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
2023-09-01 20:05:08 +08:00
m_tcStartPA - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
end_PA_sizer - > Add ( m_tcEndPA , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2024-01-26 16:15:38 +08:00
auto end_PA_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
end_PA_sizer - > Add ( end_PA_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-08-25 09:36:16 +08:00
settings_sizer - > Add ( end_PA_sizer ) ;
// PA step
auto PA_step_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-01-26 16:15:38 +08:00
2024-07-23 14:19:21 +08:00
auto PA_step_text = new wxStaticText ( this , wxID_ANY , _L ( " PA step: " ) , wxDefaultPosition , wxSize ( 80 , - 1 ) , wxALIGN_LEFT ) ;
2023-08-25 09:36:16 +08:00
PA_step_sizer - > Add ( PA_step_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-09-01 20:05:08 +08:00
2023-11-09 10:56:33 +08:00
m_tcPAStep = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 0.002 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
2023-09-01 20:05:08 +08:00
m_tcStartPA - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
PA_step_sizer - > Add ( m_tcPAStep , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2024-01-26 16:15:38 +08:00
auto PA_step_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
PA_step_sizer - > Add ( PA_step_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
2023-08-25 09:36:16 +08:00
settings_sizer - > Add ( PA_step_sizer ) ;
2023-09-01 20:05:08 +08:00
v_sizer - > Add ( 0 , 5 , 0 , wxEXPAND , 5 ) ;
v_sizer - > Add ( settings_sizer , 0 , wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
v_sizer - > Add ( 0 , 5 , 0 , wxEXPAND , 5 ) ;
2024-07-23 14:19:21 +08:00
// Note
auto note_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
std : : string note_message = _u8L ( " Note: PA calibration is not applicable to PETG, please modify the PA value according to the actual printing of the model. " ) ;
auto note_text = new wxStaticText ( this , wxID_ANY , note_message , wxDefaultPosition , wxSize ( 240 , - 1 ) , wxALIGN_LEFT ) ;
note_text - > Wrap ( note_text - > GetClientSize ( ) . x ) ;
note_sizer - > Add ( note_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
v_sizer - > Add ( note_sizer , 0 , wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
2023-09-01 20:05:08 +08:00
m_btnStart = new wxButton ( this , wxID_ANY , _L ( " OK " ) ) ;
m_btnStart - > Bind ( wxEVT_BUTTON , & PA_Calibration_Dlg : : on_start , this ) ;
v_sizer - > Add ( m_btnStart , 0 , wxRIGHT | wxALIGN_RIGHT , 15 ) ;
v_sizer - > Add ( 0 , 8 , 0 , wxEXPAND , 5 ) ;
2023-08-25 09:36:16 +08:00
m_rbMethod - > Connect ( wxEVT_COMMAND_RADIOBOX_SELECTED , wxCommandEventHandler ( PA_Calibration_Dlg : : on_method_changed ) , NULL , this ) ;
2023-09-01 20:05:08 +08:00
m_btnStart - > Connect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( PA_Calibration_Dlg : : on_start ) , NULL , this ) ;
wxGetApp ( ) . UpdateDlgDarkUI ( this ) ;
2023-08-25 09:36:16 +08:00
Layout ( ) ;
Fit ( ) ;
}
PA_Calibration_Dlg : : ~ PA_Calibration_Dlg ( ) {
// Disconnect Events
m_rbMethod - > Disconnect ( wxEVT_COMMAND_RADIOBOX_SELECTED , wxCommandEventHandler ( PA_Calibration_Dlg : : on_method_changed ) , NULL , this ) ;
m_btnStart - > Disconnect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( PA_Calibration_Dlg : : on_start ) , NULL , this ) ;
}
void PA_Calibration_Dlg : : on_start ( wxCommandEvent & event ) {
bool read_double = false ;
2023-09-01 20:05:08 +08:00
double start_pa ;
double end_pa ;
double pa_step ;
read_double = m_tcStartPA - > GetValue ( ) . ToDouble ( & start_pa ) ;
read_double = read_double & & m_tcEndPA - > GetValue ( ) . ToDouble ( & end_pa ) ;
read_double = read_double & & m_tcPAStep - > GetValue ( ) . ToDouble ( & pa_step ) ;
2023-10-13 13:45:48 +08:00
if ( ! read_double | | start_pa < 0 | | pa_step < 0.001 | | end_pa < start_pa + pa_step ) {
2023-09-01 20:05:08 +08:00
MessageDialog msg_dlg ( nullptr , _L ( " Please input valid values: \n Start PA: >= 0.0 \n End PA: > Start PA + PA step \n PA step: >= 0.001) " ), wxEmptyString, wxICON_WARNING | wxOK) ;
2023-08-25 09:36:16 +08:00
msg_dlg . ShowModal ( ) ;
return ;
}
switch ( m_rbMethod - > GetSelection ( ) ) {
2023-09-01 20:05:08 +08:00
case 0 : {
m_plater - > calib_pa_line ( start_pa , end_pa , pa_step ) ;
2023-08-25 09:36:16 +08:00
break ;
2023-09-01 20:05:08 +08:00
}
case 1 : {
m_plater - > calib_pa_pattern ( start_pa , end_pa , pa_step ) ;
2023-08-25 09:36:16 +08:00
break ;
2023-09-01 20:05:08 +08:00
}
case 2 : {
m_plater - > calib_pa_tower ( start_pa , end_pa , pa_step ) ;
break ;
}
default : break ;
2023-08-25 09:36:16 +08:00
}
EndModal ( wxID_OK ) ;
}
2023-08-31 16:25:40 +08:00
2023-08-25 09:36:16 +08:00
void PA_Calibration_Dlg : : on_method_changed ( wxCommandEvent & event ) {
event . Skip ( ) ;
}
void PA_Calibration_Dlg : : on_dpi_changed ( const wxRect & suggested_rect ) {
this - > Refresh ( ) ;
Fit ( ) ;
}
2024-01-26 16:15:38 +08:00
MVS_Calibration_Dlg : : MVS_Calibration_Dlg ( wxWindow * parent , wxWindowID id , Plater * plater )
: DPIDialog ( parent , id , _L ( " Max Volumetric Speed " ) , wxDefaultPosition , wxSize ( - 1 , 280 ) , wxDEFAULT_DIALOG_STYLE | wxNO_BORDER ) , m_plater ( plater )
{
wxBoxSizer * v_sizer = new wxBoxSizer ( wxVERTICAL ) ;
SetSizer ( v_sizer ) ;
// Settings
wxStaticBoxSizer * settings_sizer = new wxStaticBoxSizer ( wxVERTICAL , this , _L ( " Settings " ) ) ;
// start VS
auto start_VS_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-07-23 14:19:21 +08:00
auto start_VS_text = new wxStaticText ( this , wxID_ANY , _L ( " Start Volumetric Speed: " ) , wxDefaultPosition , wxSize ( 160 , - 1 ) , wxALIGN_LEFT ) ;
2024-01-26 16:15:38 +08:00
start_VS_sizer - > Add ( start_VS_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
m_tcStartVS = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 5 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
m_tcStartVS - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
start_VS_sizer - > Add ( m_tcStartVS , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
auto start_VS_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm³/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
start_VS_sizer - > Add ( start_VS_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
settings_sizer - > Add ( start_VS_sizer ) ;
// end VS
auto end_VS_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-07-23 14:19:21 +08:00
auto end_VS_text = new wxStaticText ( this , wxID_ANY , _L ( " End Volumetric Speed: " ) , wxDefaultPosition , wxSize ( 160 , - 1 ) , wxALIGN_LEFT ) ;
2024-01-26 16:15:38 +08:00
end_VS_sizer - > Add ( end_VS_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
m_tcEndVS = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 15 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
m_tcStartVS - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
end_VS_sizer - > Add ( m_tcEndVS , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
auto end_VS_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm³/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
end_VS_sizer - > Add ( end_VS_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
settings_sizer - > Add ( end_VS_sizer ) ;
// VS step
auto VS_step_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2024-07-23 14:19:21 +08:00
auto VS_step_text = new wxStaticText ( this , wxID_ANY , _L ( " Volumetric Speed step: " ) , wxDefaultPosition , wxSize ( 160 , - 1 ) , wxALIGN_LEFT ) ;
2024-01-26 16:15:38 +08:00
VS_step_sizer - > Add ( VS_step_text , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
m_tcVSStep = new wxTextCtrl ( this , wxID_ANY , wxString : : FromDouble ( 0.1 ) , wxDefaultPosition , wxSize ( 100 , - 1 ) , wxBORDER_SIMPLE ) ;
m_tcStartVS - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
VS_step_sizer - > Add ( m_tcVSStep , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
auto VS_step_unit = new wxStaticText ( this , wxID_ANY , _L ( " mm³/s " ) , wxDefaultPosition , wxSize ( 40 , - 1 ) , wxALIGN_LEFT ) ;
VS_step_sizer - > Add ( VS_step_unit , 0 , wxALL | wxALIGN_CENTER_VERTICAL , 2 ) ;
settings_sizer - > Add ( VS_step_sizer ) ;
v_sizer - > Add ( 0 , 5 , 0 , wxEXPAND , 5 ) ;
v_sizer - > Add ( settings_sizer , 0 , wxRIGHT | wxLEFT | wxALIGN_CENTER_VERTICAL , 15 ) ;
v_sizer - > Add ( 0 , 5 , 0 , wxEXPAND , 5 ) ;
m_btnStart = new wxButton ( this , wxID_ANY , _L ( " OK " ) ) ;
m_btnStart - > Bind ( wxEVT_BUTTON , & MVS_Calibration_Dlg : : on_start , this ) ;
v_sizer - > Add ( m_btnStart , 0 , wxRIGHT | wxALIGN_RIGHT , 15 ) ;
v_sizer - > Add ( 0 , 8 , 0 , wxEXPAND , 5 ) ;
m_btnStart - > Connect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( MVS_Calibration_Dlg : : on_start ) , NULL , this ) ;
wxGetApp ( ) . UpdateDlgDarkUI ( this ) ;
Layout ( ) ;
Fit ( ) ;
}
MVS_Calibration_Dlg : : ~ MVS_Calibration_Dlg ( ) {
// Disconnect Events
m_btnStart - > Disconnect ( wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler ( MVS_Calibration_Dlg : : on_start ) , NULL , this ) ;
}
void MVS_Calibration_Dlg : : on_start ( wxCommandEvent & event ) {
bool read_double = false ;
double start_vs ;
double end_vs ;
double vs_step ;
read_double = m_tcStartVS - > GetValue ( ) . ToDouble ( & start_vs ) ;
read_double = read_double & & m_tcEndVS - > GetValue ( ) . ToDouble ( & end_vs ) ;
read_double = read_double & & m_tcVSStep - > GetValue ( ) . ToDouble ( & vs_step ) ;
if ( ! read_double | | start_vs < 0 | | vs_step < 0.01 | | end_vs < start_vs + vs_step ) {
MessageDialog msg_dlg ( nullptr , _L ( " Please input valid values: \n Start Volumetric Speed: >= 0.0 \n End Volumetric Speed: > Start Volumetric Speed + Volumetric Speed step \n Volumetric Speed step: >= 0.01) " ), wxEmptyString, wxICON_WARNING | wxOK) ;
msg_dlg . ShowModal ( ) ;
return ;
}
m_plater - > calib_max_volumetric_speed ( start_vs , end_vs , vs_step ) ;
EndModal ( wxID_OK ) ;
}
void MVS_Calibration_Dlg : : on_dpi_changed ( const wxRect & suggested_rect ) {
this - > Refresh ( ) ;
Fit ( ) ;
}
2023-08-25 09:36:16 +08:00
} } // namespace Slic3r::GUI