2023-04-23 01:04:55 +00:00
# include "CalibrationWizardPage.hpp"
# include "I18N.hpp"
2023-05-18 01:41:50 +00:00
# include "Widgets/Label.hpp"
2023-07-03 13:48:19 +00:00
# include "MsgDialog.hpp"
2023-04-23 01:04:55 +00:00
namespace Slic3r { namespace GUI {
2023-07-03 13:48:19 +00:00
wxDEFINE_EVENT ( EVT_CALI_ACTION , wxCommandEvent ) ;
wxDEFINE_EVENT ( EVT_CALI_TRAY_CHANGED , wxCommandEvent ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
CalibrationStyle get_cali_style ( MachineObject * obj )
{
if ( ! obj ) return CalibrationStyle : : CALI_STYLE_DEFAULT ;
if ( obj - > printer_type = = " BL-P001 " | | obj - > printer_type = = " BL-P002 " )
return CalibrationStyle : : CALI_STYLE_X1 ;
else if ( obj - > printer_type = = " C11 " | | obj - > printer_type = = " C12 " )
return CalibrationStyle : : CALI_STYLE_P1P ;
return CalibrationStyle : : CALI_STYLE_DEFAULT ;
}
wxString get_cali_mode_caption_string ( CalibMode mode )
{
if ( mode = = CalibMode : : Calib_PA_Line )
2023-07-04 03:42:57 +00:00
return _L ( " Dynamic Pressure Control Calibration " ) ;
2023-07-03 13:48:19 +00:00
if ( mode = = CalibMode : : Calib_Flow_Rate )
return _L ( " Flow Rate Calibration " ) ;
if ( mode = = CalibMode : : Calib_Vol_speed_Tower )
2023-07-04 03:42:57 +00:00
return _L ( " Max Volumetric Speed Calibration " ) ;
2023-07-03 13:48:19 +00:00
return " no cali_mode_caption " ;
}
wxString get_calibration_wiki_page ( CalibMode cali_mode )
{
switch ( cali_mode ) {
case CalibMode : : Calib_PA_Line :
return wxString ( " https://wiki.bambulab.com/en/software/bambu-studio/calibration_pa " ) ;
case CalibMode : : Calib_Flow_Rate :
return wxString ( " https://wiki.bambulab.com/en/software/bambu-studio/calibration_flow_rate " ) ;
case CalibMode : : Calib_Vol_speed_Tower :
return wxString ( " https://wiki.bambulab.com/en/software/bambu-studio/calibration_volumetric " ) ;
case CalibMode : : Calib_Temp_Tower :
return wxString ( " https://wiki.bambulab.com/en/software/bambu-studio/calibration_temperature " ) ;
case CalibMode : : Calib_Retraction_tower :
return wxString ( " https://wiki.bambulab.com/en/software/bambu-studio/calibration_retraction " ) ;
default :
return " " ;
}
}
CalibrationFilamentMode get_cali_filament_mode ( MachineObject * obj , CalibMode mode )
{
// default
if ( ! obj ) return CalibrationFilamentMode : : CALI_MODEL_SINGLE ;
if ( mode = = CalibMode : : Calib_PA_Line ) {
if ( obj - > printer_type = = " BL-P001 " | | obj - > printer_type = = " BL-P002 " )
return CalibrationFilamentMode : : CALI_MODEL_MULITI ;
else if ( obj - > printer_type = = " C11 " | | obj - > printer_type = = " C12 " )
return CalibrationFilamentMode : : CALI_MODEL_SINGLE ;
}
else if ( mode = = CalibMode : : Calib_Flow_Rate ) {
if ( obj - > printer_type = = " BL-P001 " | | obj - > printer_type = = " BL-P002 " )
return CalibrationFilamentMode : : CALI_MODEL_SINGLE ;
else if ( obj - > printer_type = = " C11 " | | obj - > printer_type = = " C12 " )
return CalibrationFilamentMode : : CALI_MODEL_SINGLE ;
}
return CalibrationFilamentMode : : CALI_MODEL_SINGLE ;
}
CalibMode get_obj_calibration_mode ( const MachineObject * obj )
{
CalibrationMethod method ;
int cali_stage ;
return get_obj_calibration_mode ( obj , method , cali_stage ) ;
}
CalibMode get_obj_calibration_mode ( const MachineObject * obj , int & cali_stage )
{
CalibrationMethod method ;
return get_obj_calibration_mode ( obj , method , cali_stage ) ;
}
CalibMode get_obj_calibration_mode ( const MachineObject * obj , CalibrationMethod & method , int & cali_stage )
{
method = CalibrationMethod : : CALI_METHOD_MANUAL ;
if ( ! obj ) return CalibMode : : Calib_None ;
if ( boost : : contains ( obj - > m_gcode_file , " auto_filament_cali " ) ) {
method = CalibrationMethod : : CALI_METHOD_AUTO ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > m_gcode_file , " user_cali_manual_pa " ) ) {
method = CalibrationMethod : : CALI_METHOD_MANUAL ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > m_gcode_file , " extrusion_cali " ) ) {
method = = CalibrationMethod : : CALI_METHOD_MANUAL ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > m_gcode_file , " abs_flowcalib_cali " ) ) {
method = CalibrationMethod : : CALI_METHOD_AUTO ;
return CalibMode : : Calib_Flow_Rate ;
}
2023-07-04 07:45:39 +00:00
if ( obj - > printer_type = = " C11 " | | obj - > printer_type = = " C12 " ) {
if ( boost : : contains ( obj - > subtask_name , " auto_filament_cali " ) ) {
method = CalibrationMethod : : CALI_METHOD_AUTO ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > subtask_name , " user_cali_manual_pa " ) ) {
method = CalibrationMethod : : CALI_METHOD_MANUAL ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > subtask_name , " extrusion_cali " ) ) {
method = = CalibrationMethod : : CALI_METHOD_MANUAL ;
return CalibMode : : Calib_PA_Line ;
}
if ( boost : : contains ( obj - > subtask_name , " abs_flowcalib_cali " ) ) {
method = CalibrationMethod : : CALI_METHOD_AUTO ;
return CalibMode : : Calib_Flow_Rate ;
}
}
2023-07-03 13:48:19 +00:00
CalibMode cali_mode = CalibUtils : : get_calib_mode_by_name ( obj - > subtask_name , cali_stage ) ;
if ( cali_mode ! = CalibMode : : Calib_None ) {
method = CalibrationMethod : : CALI_METHOD_MANUAL ;
}
return cali_mode ;
}
CaliPageButton : : CaliPageButton ( wxWindow * parent , CaliPageActionType type , wxString text )
: m_action_type ( type ) ,
2023-04-23 01:04:55 +00:00
Button ( parent , text )
{
2023-05-18 01:41:50 +00:00
StateColor btn_bg_green ( std : : pair < wxColour , int > ( wxColour ( 206 , 206 , 206 ) , StateColor : : Disabled ) ,
2023-04-23 01:04:55 +00:00
std : : pair < wxColour , int > ( wxColour ( 27 , 136 , 68 ) , StateColor : : Pressed ) ,
std : : pair < wxColour , int > ( wxColour ( 61 , 203 , 115 ) , StateColor : : Hovered ) ,
std : : pair < wxColour , int > ( wxColour ( 0 , 174 , 66 ) , StateColor : : Normal ) ) ;
2023-05-18 01:41:50 +00:00
StateColor btn_bg_white ( std : : pair < wxColour , int > ( wxColour ( 206 , 206 , 206 ) , StateColor : : Disabled ) ,
2023-04-23 01:04:55 +00:00
std : : pair < wxColour , int > ( wxColour ( 206 , 206 , 206 ) , StateColor : : Pressed ) ,
std : : pair < wxColour , int > ( wxColour ( 238 , 238 , 238 ) , StateColor : : Hovered ) ,
std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 255 ) , StateColor : : Normal ) ) ;
StateColor btn_bd_green ( std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 254 ) , StateColor : : Disabled ) ,
std : : pair < wxColour , int > ( wxColour ( 0 , 174 , 66 ) , StateColor : : Enabled ) ) ;
StateColor btn_bd_white ( std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 254 ) , StateColor : : Disabled ) ,
std : : pair < wxColour , int > ( wxColour ( 38 , 46 , 48 ) , StateColor : : Enabled ) ) ;
StateColor btn_text_green ( std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 254 ) , StateColor : : Disabled ) ,
std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 254 ) , StateColor : : Enabled ) ) ;
StateColor btn_text_white ( std : : pair < wxColour , int > ( wxColour ( 255 , 255 , 254 ) , StateColor : : Disabled ) ,
std : : pair < wxColour , int > ( wxColour ( 38 , 46 , 48 ) , StateColor : : Enabled ) ) ;
2023-07-03 13:48:19 +00:00
switch ( m_action_type )
{
case CaliPageActionType : : CALI_ACTION_MANAGE_RESULT :
this - > SetLabel ( _L ( " Manage Result " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_MANUAL_CALI :
2023-07-05 07:48:26 +00:00
this - > SetLabel ( _L ( " Manual Calibration " ) ) ;
2023-07-03 13:48:19 +00:00
this - > SetToolTip ( _L ( " Result can be read by human eyes. " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_AUTO_CALI :
this - > SetLabel ( _L ( " Auto-Calibration " ) ) ;
this - > SetToolTip ( _L ( " We would use Lidar to read the calibration result " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_START :
this - > SetLabel ( _L ( " Start Calibration " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_PREV :
this - > SetLabel ( _L ( " Prev " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_RECALI :
this - > SetLabel ( _L ( " Recalibration " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_NEXT :
this - > SetLabel ( _L ( " Next " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_CALI_NEXT :
this - > SetLabel ( _L ( " Next " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_CALI :
this - > SetLabel ( _L ( " Calibrate " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_FLOW_CALI_STAGE_2 :
this - > SetLabel ( _L ( " Calibrate " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_PA_SAVE :
this - > SetLabel ( _L ( " Finish " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_FLOW_SAVE :
this - > SetLabel ( _L ( " Finish " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_FLOW_COARSE_SAVE :
this - > SetLabel ( _L ( " Finish " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_FLOW_FINE_SAVE :
this - > SetLabel ( _L ( " Finish " ) ) ;
break ;
case CaliPageActionType : : CALI_ACTION_COMMON_SAVE :
this - > SetLabel ( _L ( " Finish " ) ) ;
break ;
default :
this - > SetLabel ( " Unknown " ) ;
break ;
}
switch ( m_action_type )
2023-04-23 01:04:55 +00:00
{
2023-07-03 13:48:19 +00:00
case CaliPageActionType : : CALI_ACTION_PREV :
case CaliPageActionType : : CALI_ACTION_RECALI :
2023-04-23 01:04:55 +00:00
SetBackgroundColor ( btn_bg_white ) ;
SetBorderColor ( btn_bd_white ) ;
SetTextColor ( btn_text_white ) ;
break ;
2023-07-03 13:48:19 +00:00
case CaliPageActionType : : CALI_ACTION_START :
case CaliPageActionType : : CALI_ACTION_NEXT :
case CaliPageActionType : : CALI_ACTION_CALI :
2023-07-05 08:47:39 +00:00
case CaliPageActionType : : CALI_ACTION_CALI_NEXT :
2023-07-03 13:48:19 +00:00
case CaliPageActionType : : CALI_ACTION_FLOW_CALI_STAGE_2 :
case CaliPageActionType : : CALI_ACTION_PA_SAVE :
case CaliPageActionType : : CALI_ACTION_FLOW_SAVE :
case CaliPageActionType : : CALI_ACTION_FLOW_COARSE_SAVE :
case CaliPageActionType : : CALI_ACTION_FLOW_FINE_SAVE :
case CaliPageActionType : : CALI_ACTION_COMMON_SAVE :
2023-04-23 01:04:55 +00:00
SetBackgroundColor ( btn_bg_green ) ;
SetBorderColor ( btn_bd_green ) ;
SetTextColor ( btn_text_green ) ;
break ;
default :
break ;
}
SetBackgroundColour ( * wxWHITE ) ;
SetFont ( Label : : Body_13 ) ;
SetMinSize ( wxSize ( - 1 , FromDIP ( 24 ) ) ) ;
SetCornerRadius ( FromDIP ( 12 ) ) ;
}
2023-07-03 13:48:19 +00:00
FilamentComboBox : : FilamentComboBox ( wxWindow * parent , const wxPoint & pos , const wxSize & size )
: wxPanel ( parent , wxID_ANY , pos , size , wxTAB_TRAVERSAL )
{
wxBoxSizer * main_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
m_comboBox = new CalibrateFilamentComboBox ( this ) ;
m_comboBox - > SetSize ( CALIBRATION_FILAMENT_COMBOX_SIZE ) ;
m_comboBox - > SetMinSize ( CALIBRATION_FILAMENT_COMBOX_SIZE ) ;
main_sizer - > Add ( m_comboBox - > clr_picker , 0 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 8 ) ) ;
main_sizer - > Add ( m_comboBox , 0 , wxALIGN_CENTER ) ;
this - > SetSizer ( main_sizer ) ;
this - > Layout ( ) ;
main_sizer - > Fit ( this ) ;
}
void FilamentComboBox : : set_select_mode ( CalibrationFilamentMode mode )
{
m_mode = mode ;
if ( m_checkBox )
m_checkBox - > Show ( m_mode = = CalibrationFilamentMode : : CALI_MODEL_MULITI ) ;
if ( m_radioBox )
m_radioBox - > Show ( m_mode = = CalibrationFilamentMode : : CALI_MODEL_SINGLE ) ;
Layout ( ) ;
}
void FilamentComboBox : : load_tray_from_ams ( int id , DynamicPrintConfig & tray )
{
m_comboBox - > load_tray ( tray ) ;
m_tray_id = id ;
m_tray_name = m_comboBox - > get_tray_name ( ) ;
m_is_bbl_filamnet = MachineObject : : is_bbl_filament ( m_comboBox - > get_tag_uid ( ) ) ;
Enable ( m_comboBox - > is_tray_exist ( ) ) ;
if ( m_comboBox - > is_tray_exist ( ) ) {
if ( ! m_comboBox - > is_compatible_with_printer ( ) ) {
SetValue ( false ) ;
}
2023-07-05 03:14:24 +00:00
if ( m_radioBox )
m_radioBox - > Enable ( m_comboBox - > is_compatible_with_printer ( ) ) ;
if ( m_checkBox )
m_checkBox - > Enable ( m_comboBox - > is_compatible_with_printer ( ) ) ;
2023-07-03 13:48:19 +00:00
}
2023-07-04 08:06:29 +00:00
// check compatibility
wxCommandEvent event ( EVT_CALI_TRAY_CHANGED ) ;
event . SetEventObject ( GetParent ( ) ) ;
wxPostEvent ( GetParent ( ) , event ) ;
2023-07-03 13:48:19 +00:00
}
void FilamentComboBox : : update_from_preset ( ) { m_comboBox - > update ( ) ; }
bool FilamentComboBox : : Show ( bool show )
{
return wxPanel : : Show ( show ) ;
}
bool FilamentComboBox : : Enable ( bool enable ) {
if ( ! enable )
SetValue ( false ) ;
if ( m_radioBox )
m_radioBox - > Enable ( enable ) ;
if ( m_checkBox )
m_checkBox - > Enable ( enable ) ;
return wxPanel : : Enable ( enable ) ;
}
void FilamentComboBox : : SetValue ( bool value , bool send_event ) {
if ( m_radioBox ) {
if ( value = = m_radioBox - > GetValue ( ) ) {
if ( m_checkBox ) {
if ( value = = m_checkBox - > GetValue ( ) )
return ;
}
else {
return ;
}
}
}
if ( m_radioBox )
m_radioBox - > SetValue ( value ) ;
if ( m_checkBox )
m_checkBox - > SetValue ( value ) ;
}
CaliPageCaption : : CaliPageCaption ( wxWindow * parent , CalibMode cali_mode ,
wxWindowID id , const wxPoint & pos , const wxSize & size , long style )
2023-05-18 01:41:50 +00:00
: wxPanel ( parent , id , pos , size , style )
2023-04-23 01:04:55 +00:00
{
2023-07-03 13:48:19 +00:00
init_bitmaps ( ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
auto top_sizer = new wxBoxSizer ( wxVERTICAL ) ;
auto caption_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
m_prev_btn = new ScalableButton ( this , wxID_ANY , " cali_page_caption_prev " ,
wxEmptyString , wxDefaultSize , wxDefaultPosition , wxBU_EXACTFIT | wxNO_BORDER , true , 30 ) ;
m_prev_btn - > SetBackgroundColour ( * wxWHITE ) ;
caption_sizer - > Add ( m_prev_btn , 0 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 10 ) ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
wxString title = get_cali_mode_caption_string ( cali_mode ) ;
wxStaticText * title_text = new wxStaticText ( this , wxID_ANY , title , wxDefaultPosition , wxDefaultSize , 0 ) ;
title_text - > Wrap ( - 1 ) ;
title_text - > SetFont ( Label : : Head_16 ) ;
caption_sizer - > Add ( title_text , 0 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 10 ) ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
m_help_btn = new ScalableButton ( this , wxID_ANY , " cali_page_caption_help " ,
wxEmptyString , wxDefaultSize , wxDefaultPosition , wxBU_EXACTFIT | wxNO_BORDER , true , 30 ) ;
2023-07-06 03:17:55 +00:00
m_help_btn - > Hide ( ) ;
2023-07-03 13:48:19 +00:00
m_help_btn - > SetBackgroundColour ( * wxWHITE ) ;
caption_sizer - > Add ( m_help_btn , 0 , wxALIGN_CENTER ) ;
2023-05-18 01:41:50 +00:00
2023-07-05 08:46:52 +00:00
caption_sizer - > AddStretchSpacer ( ) ;
m_wiki_url = get_calibration_wiki_page ( cali_mode ) ;
create_wiki ( this ) ;
caption_sizer - > Add ( m_wiki_text , 0 ) ;
2023-07-03 13:48:19 +00:00
top_sizer - > Add ( caption_sizer , 1 , wxEXPAND ) ;
top_sizer - > AddSpacer ( FromDIP ( 35 ) ) ;
this - > SetSizer ( top_sizer ) ;
top_sizer - > Fit ( this ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
// hover effect
m_prev_btn - > Bind ( wxEVT_ENTER_WINDOW , [ this ] ( auto & e ) {
m_prev_btn - > SetBitmap ( m_prev_bmp_hover . bmp ( ) ) ;
} ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
m_prev_btn - > Bind ( wxEVT_LEAVE_WINDOW , [ this ] ( auto & e ) {
m_prev_btn - > SetBitmap ( m_prev_bmp_normal . bmp ( ) ) ;
} ) ;
2023-05-18 01:41:50 +00:00
2023-07-03 13:48:19 +00:00
// hover effect
m_help_btn - > Bind ( wxEVT_ENTER_WINDOW , [ this ] ( auto & e ) {
m_help_btn - > SetBitmap ( m_help_bmp_hover . bmp ( ) ) ;
} ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
m_help_btn - > Bind ( wxEVT_LEAVE_WINDOW , [ this ] ( auto & e ) {
m_help_btn - > SetBitmap ( m_help_bmp_normal . bmp ( ) ) ;
} ) ;
2023-05-18 01:41:50 +00:00
2023-07-03 13:48:19 +00:00
// send event
m_prev_btn - > Bind ( wxEVT_BUTTON , [ this ] ( auto & e ) {
wxCommandEvent event ( EVT_CALI_ACTION ) ;
event . SetEventObject ( m_parent ) ;
event . SetInt ( ( int ) ( CaliPageActionType : : CALI_ACTION_GO_HOME ) ) ;
wxPostEvent ( m_parent , event ) ;
} ) ;
}
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
void CaliPageCaption : : init_bitmaps ( ) {
m_prev_bmp_normal = ScalableBitmap ( this , " cali_page_caption_prev " , 30 ) ;
m_prev_bmp_hover = ScalableBitmap ( this , " cali_page_caption_prev_hover " , 30 ) ;
m_help_bmp_normal = ScalableBitmap ( this , " cali_page_caption_help " , 30 ) ;
m_help_bmp_hover = ScalableBitmap ( this , " cali_page_caption_help_hover " , 30 ) ;
}
2023-04-23 01:04:55 +00:00
2023-07-05 08:46:52 +00:00
void CaliPageCaption : : create_wiki ( wxWindow * parent )
{
m_wiki_text = new wxStaticText ( parent , wxID_ANY , _L ( " Wiki " ) ) ;
m_wiki_text - > SetFont ( Label : : Head_14 ) ;
m_wiki_text - > SetForegroundColour ( { 0 , 88 , 220 } ) ;
m_wiki_text - > Bind ( wxEVT_ENTER_WINDOW , [ this ] ( wxMouseEvent & e ) {
e . Skip ( ) ;
SetCursor ( wxCURSOR_HAND ) ;
} ) ;
m_wiki_text - > Bind ( wxEVT_LEAVE_WINDOW , [ this ] ( wxMouseEvent & e ) {
e . Skip ( ) ;
SetCursor ( wxCURSOR_ARROW ) ;
} ) ;
m_wiki_text - > Bind ( wxEVT_LEFT_UP , [ this ] ( wxMouseEvent & e ) {
if ( ! m_wiki_url . empty ( ) )
wxLaunchDefaultBrowser ( m_wiki_url ) ;
} ) ;
}
2023-07-03 13:48:19 +00:00
void CaliPageCaption : : show_prev_btn ( bool show )
{
m_prev_btn - > Show ( show ) ;
}
void CaliPageCaption : : show_help_icon ( bool show )
{
2023-07-06 03:17:55 +00:00
//m_help_btn->Show(show);
m_help_btn - > Hide ( ) ;
2023-07-03 13:48:19 +00:00
}
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
CaliPageStepGuide : : CaliPageStepGuide ( wxWindow * parent , wxArrayString steps ,
wxWindowID id , const wxPoint & pos , const wxSize & size , long style )
: wxPanel ( parent , id , pos , size , style ) ,
m_steps ( steps )
{
auto top_sizer = new wxBoxSizer ( wxVERTICAL ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
m_step_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
m_step_sizer - > AddSpacer ( FromDIP ( 90 ) ) ;
for ( int i = 0 ; i < m_steps . size ( ) ; i + + ) {
wxStaticText * step_text = new wxStaticText ( this , wxID_ANY , m_steps [ i ] ) ;
step_text - > SetForegroundColour ( wxColour ( 181 , 181 , 181 ) ) ;
m_text_steps . push_back ( step_text ) ;
m_step_sizer - > Add ( step_text , 0 , wxALIGN_CENTER | wxLEFT | wxRIGHT , FromDIP ( 15 ) ) ;
if ( i ! = m_steps . size ( ) - 1 ) {
auto line = new wxPanel ( this , wxID_ANY , wxDefaultPosition , { FromDIP ( 200 ) , 1 } ) ;
line - > SetBackgroundColour ( * wxBLACK ) ;
m_step_sizer - > Add ( line , 1 , wxALIGN_CENTER ) ;
}
}
m_step_sizer - > AddSpacer ( FromDIP ( 90 ) ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
top_sizer - > Add ( m_step_sizer , 0 , wxEXPAND ) ;
top_sizer - > AddSpacer ( FromDIP ( 30 ) ) ;
this - > SetSizer ( top_sizer ) ;
top_sizer - > Fit ( this ) ;
}
void CaliPageStepGuide : : set_steps ( int index )
{
for ( wxStaticText * text_step : m_text_steps ) {
text_step - > SetForegroundColour ( wxColour ( 181 , 181 , 181 ) ) ;
}
m_text_steps [ index ] - > SetForegroundColour ( * wxBLACK ) ;
}
void CaliPageStepGuide : : set_steps_string ( wxArrayString steps )
{
m_steps . Clear ( ) ;
m_text_steps . clear ( ) ;
m_step_sizer - > Clear ( true ) ;
m_steps = steps ;
m_step_sizer - > AddSpacer ( FromDIP ( 90 ) ) ;
for ( int i = 0 ; i < m_steps . size ( ) ; i + + ) {
wxStaticText * step_text = new wxStaticText ( this , wxID_ANY , m_steps [ i ] ) ;
step_text - > SetForegroundColour ( wxColour ( 181 , 181 , 181 ) ) ;
m_text_steps . push_back ( step_text ) ;
m_step_sizer - > Add ( step_text , 0 , wxALIGN_CENTER | wxLEFT | wxRIGHT , FromDIP ( 15 ) ) ;
if ( i ! = m_steps . size ( ) - 1 ) {
auto line = new wxPanel ( this , wxID_ANY , wxDefaultPosition , { FromDIP ( 200 ) , 1 } ) ;
line - > SetBackgroundColour ( * wxBLACK ) ;
m_step_sizer - > Add ( line , 1 , wxALIGN_CENTER ) ;
}
}
m_step_sizer - > AddSpacer ( FromDIP ( 90 ) ) ;
Layout ( ) ;
}
CaliPageActionPanel : : CaliPageActionPanel ( wxWindow * parent ,
CalibMode cali_mode ,
CaliPageType page_type ,
wxWindowID id , const wxPoint & pos , const wxSize & size , long style )
: wxPanel ( parent , id , pos , size , style )
{
m_parent = parent ;
wxWindow * btn_parent = this ;
if ( cali_mode = = CalibMode : : Calib_PA_Line ) {
if ( page_type = = CaliPageType : : CALI_PAGE_START ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_MANAGE_RESULT ) ) ;
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_MANUAL_CALI ) ) ;
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_AUTO_CALI ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_PRESET ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_CALI ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_CALI ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_CALI_NEXT ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_PA_SAVE ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_PA_SAVE ) ) ;
}
}
else if ( cali_mode = = CalibMode : : Calib_Flow_Rate ) {
if ( page_type = = CaliPageType : : CALI_PAGE_START ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_MANUAL_CALI ) ) ;
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_AUTO_CALI ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_PRESET ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_CALI ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_CALI ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_NEXT ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_COARSE_SAVE ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_FLOW_COARSE_SAVE ) ) ;
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_FLOW_CALI_STAGE_2 ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_FINE_SAVE ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_FLOW_FINE_SAVE ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_FLOW_SAVE ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_FLOW_SAVE ) ) ;
}
}
else {
if ( page_type = = CaliPageType : : CALI_PAGE_START ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_START ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_PRESET ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_CALI ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_CALI ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_NEXT ) ) ;
}
else if ( page_type = = CaliPageType : : CALI_PAGE_COMMON_SAVE ) {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_COMMON_SAVE ) ) ;
}
else {
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_PREV ) ) ;
m_action_btns . push_back ( new CaliPageButton ( btn_parent , CaliPageActionType : : CALI_ACTION_NEXT ) ) ;
}
}
auto top_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
2023-07-06 09:05:12 +00:00
top_sizer - > Add ( 0 , 0 , 1 , wxEXPAND , 0 ) ;
2023-07-03 13:48:19 +00:00
for ( int i = 0 ; i < m_action_btns . size ( ) ; i + + ) {
2023-07-06 09:05:12 +00:00
top_sizer - > Add ( m_action_btns [ i ] , 0 , wxALL , FromDIP ( 5 ) ) ;
2023-07-03 13:48:19 +00:00
m_action_btns [ i ] - > Bind ( wxEVT_BUTTON ,
[ this , i ] ( wxCommandEvent & evt ) {
wxCommandEvent event ( EVT_CALI_ACTION ) ;
event . SetEventObject ( m_parent ) ;
event . SetInt ( ( int ) m_action_btns [ i ] - > get_action_type ( ) ) ;
wxPostEvent ( m_parent , event ) ;
} ) ;
}
2023-07-06 09:05:12 +00:00
top_sizer - > Add ( 0 , 0 , 1 , wxEXPAND , 0 ) ;
2023-04-23 01:04:55 +00:00
2023-07-03 13:48:19 +00:00
this - > SetSizer ( top_sizer ) ;
top_sizer - > Fit ( this ) ;
2023-04-23 01:04:55 +00:00
}
2023-07-03 13:48:19 +00:00
void CaliPageActionPanel : : bind_button ( CaliPageActionType action_type , bool is_block )
{
for ( int i = 0 ; i < m_action_btns . size ( ) ; i + + ) {
if ( m_action_btns [ i ] - > get_action_type ( ) = = action_type ) {
if ( is_block ) {
m_action_btns [ i ] - > Bind ( wxEVT_BUTTON ,
[ this ] ( wxCommandEvent & evt ) {
MessageDialog msg ( nullptr , _L ( " The current firmware version of the printer does not support calibration. \n Please upgrade the printer firmware. " ) , _L ( " Calibration not supported " ) , wxOK | wxICON_WARNING ) ;
msg . ShowModal ( ) ;
} ) ;
}
else {
m_action_btns [ i ] - > Bind ( wxEVT_BUTTON ,
[ this , i ] ( wxCommandEvent & evt ) {
wxCommandEvent event ( EVT_CALI_ACTION ) ;
event . SetEventObject ( m_parent ) ;
event . SetInt ( ( int ) m_action_btns [ i ] - > get_action_type ( ) ) ;
wxPostEvent ( m_parent , event ) ;
} ) ;
}
}
2023-06-16 02:04:51 +00:00
}
2023-07-03 13:48:19 +00:00
2023-05-18 01:41:50 +00:00
}
2023-07-03 13:48:19 +00:00
void CaliPageActionPanel : : show_button ( CaliPageActionType action_type , bool show )
2023-04-23 01:04:55 +00:00
{
2023-07-03 13:48:19 +00:00
for ( int i = 0 ; i < m_action_btns . size ( ) ; i + + ) {
if ( m_action_btns [ i ] - > get_action_type ( ) = = action_type ) {
m_action_btns [ i ] - > Show ( show ) ;
}
}
2023-07-06 09:05:12 +00:00
Layout ( ) ;
2023-04-23 01:04:55 +00:00
}
2023-07-03 13:48:19 +00:00
void CaliPageActionPanel : : enable_button ( CaliPageActionType action_type , bool enable )
2023-04-23 01:04:55 +00:00
{
2023-07-03 13:48:19 +00:00
for ( int i = 0 ; i < m_action_btns . size ( ) ; i + + ) {
if ( m_action_btns [ i ] - > get_action_type ( ) = = action_type ) {
m_action_btns [ i ] - > Enable ( enable ) ;
}
}
}
CalibrationWizardPage : : CalibrationWizardPage ( wxWindow * parent , wxWindowID id , const wxPoint & pos , const wxSize & size , long style )
: wxPanel ( parent , id , pos , size , style )
, m_parent ( parent )
{
SetBackgroundColour ( * wxWHITE ) ;
2023-04-23 01:04:55 +00:00
}
2023-07-03 13:48:19 +00:00
} }