2022-07-15 15:37:19 +00:00
# include "AMSMaterialsSetting.hpp"
# include "GUI_App.hpp"
# include "libslic3r/Preset.hpp"
# include "I18N.hpp"
namespace Slic3r { namespace GUI {
2022-07-22 09:46:10 +00:00
static bool show_flag ;
2022-07-15 15:37:19 +00:00
2022-07-22 09:46:10 +00:00
# ifdef __APPLE__
# define COMBOBOX_FILAMENT (m_comboBox_filament_mac)
# else
# define COMBOBOX_FILAMENT (m_comboBox_filament)
# endif
2022-08-03 03:28:16 +00:00
AMSMaterialsSetting : : AMSMaterialsSetting ( wxWindow * parent , wxWindowID id )
2022-09-07 02:00:48 +00:00
: DPIDialog ( parent , id , _L ( " AMS Materials Setting " ) , wxDefaultPosition , wxDefaultSize , wxBORDER_NONE )
2022-08-03 03:28:16 +00:00
{
2022-07-15 15:37:19 +00:00
create ( ) ;
}
void AMSMaterialsSetting : : create ( )
{
SetBackgroundColour ( * wxWHITE ) ;
wxBoxSizer * m_sizer_main = new wxBoxSizer ( wxVERTICAL ) ;
wxBoxSizer * m_sizer_filament = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-08-03 03:28:16 +00:00
m_title_filament = new wxStaticText ( this , wxID_ANY , _L ( " Filament " ) , wxDefaultPosition , wxSize ( AMS_MATERIALS_SETTING_LABEL_WIDTH , - 1 ) , 0 ) ;
2022-07-15 15:37:19 +00:00
m_title_filament - > SetFont ( : : Label : : Body_13 ) ;
m_title_filament - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_filament - > Wrap ( - 1 ) ;
m_sizer_filament - > Add ( m_title_filament , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_filament - > Add ( 0 , 0 , 0 , wxEXPAND , 0 ) ;
2022-07-22 09:46:10 +00:00
# ifdef __APPLE__
2022-08-03 03:28:16 +00:00
m_comboBox_filament_mac = new wxComboBox ( this , wxID_ANY , wxEmptyString , wxDefaultPosition , AMS_MATERIALS_SETTING_COMBOX_WIDTH , 0 , nullptr , wxCB_READONLY ) ;
2022-07-22 09:46:10 +00:00
# else
2022-08-03 03:28:16 +00:00
m_comboBox_filament = new : : ComboBox ( this , wxID_ANY , wxEmptyString , wxDefaultPosition , AMS_MATERIALS_SETTING_COMBOX_WIDTH , 0 , nullptr , wxCB_READONLY ) ;
2022-07-22 09:46:10 +00:00
# endif
2022-07-15 15:37:19 +00:00
2022-07-22 09:46:10 +00:00
m_sizer_filament - > Add ( COMBOBOX_FILAMENT , 1 , wxALIGN_CENTER , 0 ) ;
2022-09-05 07:07:57 +00:00
m_readonly_filament = new TextInput ( this , wxEmptyString , " " , " " , wxDefaultPosition , AMS_MATERIALS_SETTING_COMBOX_WIDTH , wxTE_READONLY ) ;
m_readonly_filament - > SetBorderColor ( StateColor ( std : : make_pair ( 0xDBDBDB , ( int ) StateColor : : Focused ) , std : : make_pair ( 0x00AE42 , ( int ) StateColor : : Hovered ) ,
std : : make_pair ( 0xDBDBDB , ( int ) StateColor : : Normal ) ) ) ;
m_readonly_filament - > GetTextCtrl ( ) - > Bind ( wxEVT_SET_FOCUS , [ ] ( auto & e ) {
;
} ) ;
m_sizer_filament - > Add ( m_readonly_filament , 1 , wxALIGN_CENTER , 0 ) ;
m_readonly_filament - > Hide ( ) ;
2022-07-15 15:37:19 +00:00
wxBoxSizer * m_sizer_colour = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-08-03 03:28:16 +00:00
m_title_colour = new wxStaticText ( this , wxID_ANY , _L ( " Colour " ) , wxDefaultPosition , wxSize ( AMS_MATERIALS_SETTING_LABEL_WIDTH , - 1 ) , 0 ) ;
2022-07-15 15:37:19 +00:00
m_title_colour - > SetFont ( : : Label : : Body_13 ) ;
m_title_colour - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_colour - > Wrap ( - 1 ) ;
m_sizer_colour - > Add ( m_title_colour , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_colour - > Add ( 0 , 0 , 0 , wxEXPAND , 0 ) ;
m_clrData = new wxColourData ( ) ;
m_clrData - > SetChooseFull ( true ) ;
m_clrData - > SetChooseAlpha ( false ) ;
2022-08-03 03:28:16 +00:00
m_clr_picker = new Button ( this , " " , " " ) ;
2022-08-02 02:45:43 +00:00
m_clr_picker - > SetCanFocus ( false ) ;
2022-08-03 03:28:16 +00:00
m_clr_picker - > SetSize ( FromDIP ( 50 ) , FromDIP ( 25 ) ) ;
m_clr_picker - > SetMinSize ( wxSize ( FromDIP ( 50 ) , FromDIP ( 25 ) ) ) ;
2022-08-02 02:45:43 +00:00
m_clr_picker - > SetCornerRadius ( FromDIP ( 6 ) ) ;
m_clr_picker - > SetBorderColor ( wxColour ( 172 , 172 , 172 ) ) ;
2022-07-15 15:37:19 +00:00
m_clr_picker - > Bind ( wxEVT_BUTTON , & AMSMaterialsSetting : : on_clr_picker , this ) ;
m_sizer_colour - > Add ( m_clr_picker , 0 , 0 , 0 ) ;
wxBoxSizer * m_sizer_temperature = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-08-03 03:28:16 +00:00
m_title_temperature = new wxStaticText ( this , wxID_ANY , _L ( " Nozzle \n Temperature " ) , wxDefaultPosition , wxSize ( AMS_MATERIALS_SETTING_LABEL_WIDTH , - 1 ) , 0 ) ;
2022-07-15 15:37:19 +00:00
m_title_temperature - > SetFont ( : : Label : : Body_13 ) ;
m_title_temperature - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_temperature - > Wrap ( - 1 ) ;
m_sizer_temperature - > Add ( m_title_temperature , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_temperature - > Add ( 0 , 0 , 0 , wxEXPAND , 0 ) ;
wxBoxSizer * sizer_other = new wxBoxSizer ( wxVERTICAL ) ;
wxBoxSizer * sizer_tempinput = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-08-03 03:28:16 +00:00
m_input_nozzle_max = new : : TextInput ( this , wxEmptyString , wxEmptyString , wxEmptyString , wxDefaultPosition , AMS_MATERIALS_SETTING_INPUT_SIZE , wxTE_CENTRE | wxTE_PROCESS_ENTER ) ;
m_input_nozzle_min = new : : TextInput ( this , wxEmptyString , wxEmptyString , wxEmptyString , wxDefaultPosition , AMS_MATERIALS_SETTING_INPUT_SIZE , wxTE_CENTRE | wxTE_PROCESS_ENTER ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_max - > Enable ( false ) ;
m_input_nozzle_min - > Enable ( false ) ;
2022-07-15 15:37:19 +00:00
m_input_nozzle_max - > GetTextCtrl ( ) - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
m_input_nozzle_max - > GetTextCtrl ( ) - > SetSize ( wxSize ( - 1 , FromDIP ( 20 ) ) ) ;
m_input_nozzle_min - > GetTextCtrl ( ) - > SetValidator ( wxTextValidator ( wxFILTER_NUMERIC ) ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_min - > GetTextCtrl ( ) - > SetSize ( wxSize ( - 1 , FromDIP ( 20 ) ) ) ;
2022-08-03 03:28:16 +00:00
auto bitmap_max_degree = new wxStaticBitmap ( this , - 1 , create_scaled_bitmap ( " degree " , nullptr , 16 ) , wxDefaultPosition , wxDefaultSize ) ;
auto bitmap_min_degree = new wxStaticBitmap ( this , - 1 , create_scaled_bitmap ( " degree " , nullptr , 16 ) , wxDefaultPosition , wxDefaultSize ) ;
2022-07-15 15:37:19 +00:00
sizer_tempinput - > Add ( m_input_nozzle_max , 1 , wxALIGN_CENTER , 0 ) ;
sizer_tempinput - > Add ( bitmap_min_degree , 0 , wxALIGN_CENTER , 0 ) ;
2022-10-20 08:17:46 +00:00
sizer_tempinput - > Add ( FromDIP ( 10 ) , 0 , 0 , 0 ) ;
2022-07-15 15:37:19 +00:00
sizer_tempinput - > Add ( m_input_nozzle_min , 1 , wxALIGN_CENTER , 0 ) ;
sizer_tempinput - > Add ( bitmap_max_degree , 0 , wxALIGN_CENTER , 0 ) ;
wxBoxSizer * sizer_temp_txt = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-08-03 03:28:16 +00:00
auto m_title_max = new wxStaticText ( this , wxID_ANY , _L ( " max " ) , wxDefaultPosition , AMS_MATERIALS_SETTING_INPUT_SIZE ) ;
2022-07-15 15:37:19 +00:00
m_title_max - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_max - > SetFont ( : : Label : : Body_13 ) ;
2022-08-03 03:28:16 +00:00
auto m_title_min = new wxStaticText ( this , wxID_ANY , _L ( " min " ) , wxDefaultPosition , AMS_MATERIALS_SETTING_INPUT_SIZE ) ;
2022-07-15 15:37:19 +00:00
m_title_min - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_min - > SetFont ( : : Label : : Body_13 ) ;
sizer_temp_txt - > Add ( m_title_max , 1 , wxALIGN_CENTER , 0 ) ;
2022-10-20 08:17:46 +00:00
sizer_temp_txt - > Add ( FromDIP ( 10 ) , 0 , 0 , 0 ) ;
sizer_temp_txt - > Add ( m_title_min , 1 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 16 ) ) ;
2022-07-15 15:37:19 +00:00
sizer_other - > Add ( sizer_temp_txt , 0 , wxALIGN_CENTER , 0 ) ;
sizer_other - > Add ( sizer_tempinput , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_temperature - > Add ( sizer_other , 0 , wxALL | wxALIGN_CENTER , 0 ) ;
m_sizer_temperature - > AddStretchSpacer ( ) ;
wxString warning_string = wxString : : FromUTF8 (
( boost : : format ( _u8L ( " The input value should be greater than %1% and less than %2% " ) ) % FILAMENT_MIN_TEMP % FILAMENT_MAX_TEMP ) . str ( ) ) ;
2022-08-03 03:28:16 +00:00
warning_text = new wxStaticText ( this , wxID_ANY , warning_string , wxDefaultPosition , wxDefaultSize , 0 ) ;
2022-07-15 15:37:19 +00:00
warning_text - > SetFont ( : : Label : : Body_13 ) ;
warning_text - > SetForegroundColour ( wxColour ( 255 , 111 , 0 ) ) ;
warning_text - > Wrap ( AMS_MATERIALS_SETTING_BODY_WIDTH ) ;
warning_text - > SetMinSize ( wxSize ( AMS_MATERIALS_SETTING_BODY_WIDTH , - 1 ) ) ;
warning_text - > Hide ( ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_min - > GetTextCtrl ( ) - > Bind ( wxEVT_SET_FOCUS , [ this ] ( wxFocusEvent & e ) {
2022-07-15 15:37:19 +00:00
warning_text - > Hide ( ) ;
Layout ( ) ;
Fit ( ) ;
e . Skip ( ) ;
} ) ;
m_input_nozzle_min - > GetTextCtrl ( ) - > Bind ( wxEVT_TEXT_ENTER , [ this ] ( wxCommandEvent & e ) {
input_min_finish ( ) ;
e . Skip ( ) ;
} ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_min - > GetTextCtrl ( ) - > Bind ( wxEVT_KILL_FOCUS , [ this ] ( wxFocusEvent & e ) {
2022-07-15 15:37:19 +00:00
input_min_finish ( ) ;
e . Skip ( ) ;
} ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_max - > GetTextCtrl ( ) - > Bind ( wxEVT_SET_FOCUS , [ this ] ( wxFocusEvent & e ) {
2022-07-15 15:37:19 +00:00
warning_text - > Hide ( ) ;
Layout ( ) ;
Fit ( ) ;
e . Skip ( ) ;
} ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_max - > GetTextCtrl ( ) - > Bind ( wxEVT_TEXT_ENTER , [ this ] ( wxCommandEvent & e ) {
2022-07-15 15:37:19 +00:00
input_max_finish ( ) ;
e . Skip ( ) ;
} ) ;
2022-07-22 09:46:10 +00:00
m_input_nozzle_max - > GetTextCtrl ( ) - > Bind ( wxEVT_KILL_FOCUS , [ this ] ( wxFocusEvent & e ) {
2022-07-15 15:37:19 +00:00
input_max_finish ( ) ;
e . Skip ( ) ;
} ) ;
2022-08-03 03:28:16 +00:00
m_panel_SN = new wxPanel ( this , wxID_ANY ) ;
2022-08-02 02:45:43 +00:00
wxBoxSizer * m_sizer_SN = new wxBoxSizer ( wxVERTICAL ) ;
m_sizer_SN - > AddSpacer ( FromDIP ( 16 ) ) ;
wxBoxSizer * m_sizer_SN_inside = new wxBoxSizer ( wxHORIZONTAL ) ;
auto m_title_SN = new wxStaticText ( m_panel_SN , wxID_ANY , _L ( " SN " ) , wxDefaultPosition , wxSize ( AMS_MATERIALS_SETTING_LABEL_WIDTH , - 1 ) , 0 ) ;
m_title_SN - > SetFont ( : : Label : : Body_13 ) ;
m_title_SN - > SetForegroundColour ( AMS_MATERIALS_SETTING_GREY800 ) ;
m_title_SN - > Wrap ( - 1 ) ;
m_sizer_SN_inside - > Add ( m_title_SN , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_SN_inside - > Add ( 0 , 0 , 0 , wxEXPAND , 0 ) ;
m_sn_number = new wxStaticText ( m_panel_SN , wxID_ANY , wxEmptyString , wxDefaultPosition , wxDefaultSize ) ;
m_sizer_SN_inside - > Add ( m_sn_number , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_SN - > Add ( m_sizer_SN_inside ) ;
m_panel_SN - > SetSizer ( m_sizer_SN ) ;
m_panel_SN - > Layout ( ) ;
m_panel_SN - > Fit ( ) ;
2022-10-20 08:17:46 +00:00
wxBoxSizer * m_tip_sizer = new wxBoxSizer ( wxHORIZONTAL ) ;
m_tip_readonly = new wxStaticText ( this , wxID_ANY , _L ( " Setting AMS slot information while printing is not supported " ) , wxDefaultPosition , wxSize ( - 1 , AMS_MATERIALS_SETTING_INPUT_SIZE . y ) ) ;
m_tip_readonly - > Hide ( ) ;
m_tip_sizer - > Add ( m_tip_readonly , 0 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 20 ) ) ;
2022-07-15 15:37:19 +00:00
wxBoxSizer * m_sizer_button = new wxBoxSizer ( wxHORIZONTAL ) ;
2022-10-20 08:17:46 +00:00
2022-07-15 15:37:19 +00:00
m_sizer_button - > Add ( 0 , 0 , 1 , wxEXPAND , 0 ) ;
2022-08-03 03:28:16 +00:00
m_button_confirm = new Button ( this , _L ( " Confirm " ) ) ;
2022-07-15 15:37:19 +00:00
m_btn_bg_green = StateColor ( 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 ) ) ;
m_button_confirm - > SetBackgroundColor ( m_btn_bg_green ) ;
m_button_confirm - > SetBorderColor ( wxColour ( 0 , 174 , 66 ) ) ;
m_button_confirm - > SetTextColor ( AMS_MATERIALS_SETTING_GREY200 ) ;
m_button_confirm - > SetMinSize ( AMS_MATERIALS_SETTING_BUTTON_SIZE ) ;
2022-08-02 02:45:43 +00:00
m_button_confirm - > SetCornerRadius ( FromDIP ( 12 ) ) ;
2022-08-03 03:28:16 +00:00
m_button_confirm - > Bind ( wxEVT_BUTTON , & AMSMaterialsSetting : : on_select_ok , this ) ;
m_button_close = new Button ( this , _L ( " Close " ) ) ;
m_btn_bg_gray = StateColor ( std : : pair < wxColour , int > ( wxColour ( 206 , 206 , 206 ) , StateColor : : Pressed ) , std : : pair < wxColour , int > ( * wxWHITE , StateColor : : Focused ) ,
std : : pair < wxColour , int > ( wxColour ( 238 , 238 , 238 ) , StateColor : : Hovered ) ,
std : : pair < wxColour , int > ( * wxWHITE , StateColor : : Normal ) ) ;
m_button_close - > SetBackgroundColor ( m_btn_bg_gray ) ;
m_button_close - > SetBorderColor ( AMS_MATERIALS_SETTING_GREY900 ) ;
m_button_close - > SetTextColor ( AMS_MATERIALS_SETTING_GREY900 ) ;
m_button_close - > SetMinSize ( AMS_MATERIALS_SETTING_BUTTON_SIZE ) ;
m_button_close - > SetCornerRadius ( FromDIP ( 12 ) ) ;
m_button_close - > Bind ( wxEVT_BUTTON , & AMSMaterialsSetting : : on_select_close , this ) ;
m_sizer_button - > Add ( m_button_confirm , 0 , wxALIGN_CENTER | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_button - > Add ( m_button_close , 0 , wxALIGN_CENTER , 0 ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 16 ) ) ;
m_sizer_main - > Add ( m_sizer_filament , 0 , wxLEFT | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 16 ) ) ;
m_sizer_main - > Add ( m_sizer_colour , 0 , wxLEFT | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 16 ) ) ;
m_sizer_main - > Add ( m_sizer_temperature , 0 , wxLEFT | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 5 ) ) ;
m_sizer_main - > Add ( warning_text , 0 , wxLEFT | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( m_panel_SN , 0 , wxLEFT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 24 ) ) ;
2022-10-20 08:17:46 +00:00
m_sizer_main - > Add ( m_tip_sizer , 0 , wxLEFT , FromDIP ( 20 ) ) ;
2022-08-03 03:28:16 +00:00
m_sizer_main - > Add ( m_sizer_button , 0 , wxEXPAND | wxLEFT | wxRIGHT , FromDIP ( 20 ) ) ;
m_sizer_main - > Add ( 0 , 0 , 0 , wxTOP , FromDIP ( 16 ) ) ;
SetSizer ( m_sizer_main ) ;
Layout ( ) ;
Fit ( ) ;
2022-07-15 15:37:19 +00:00
Bind ( wxEVT_PAINT , & AMSMaterialsSetting : : paintEvent , this ) ;
2022-07-22 09:46:10 +00:00
COMBOBOX_FILAMENT - > Connect ( wxEVT_COMMAND_COMBOBOX_SELECTED , wxCommandEventHandler ( AMSMaterialsSetting : : on_select_filament ) , NULL , this ) ;
2022-07-15 15:37:19 +00:00
}
void AMSMaterialsSetting : : paintEvent ( wxPaintEvent & evt )
{
auto size = GetSize ( ) ;
wxPaintDC dc ( this ) ;
dc . SetPen ( wxPen ( wxColour ( 38 , 46 , 48 ) , 1 , wxSOLID ) ) ;
dc . SetBrush ( wxBrush ( * wxTRANSPARENT_BRUSH ) ) ;
dc . DrawRectangle ( 0 , 0 , size . x , size . y ) ;
}
AMSMaterialsSetting : : ~ AMSMaterialsSetting ( )
{
2022-07-22 09:46:10 +00:00
COMBOBOX_FILAMENT - > Disconnect ( wxEVT_COMMAND_COMBOBOX_SELECTED , wxCommandEventHandler ( AMSMaterialsSetting : : on_select_filament ) , NULL , this ) ;
2022-07-15 15:37:19 +00:00
}
void AMSMaterialsSetting : : input_min_finish ( )
{
2022-07-22 09:46:10 +00:00
if ( m_input_nozzle_min - > GetTextCtrl ( ) - > GetValue ( ) . empty ( ) ) return ;
2022-07-15 15:37:19 +00:00
auto val = std : : atoi ( m_input_nozzle_min - > GetTextCtrl ( ) - > GetValue ( ) . c_str ( ) ) ;
if ( val < FILAMENT_MIN_TEMP | | val > FILAMENT_MAX_TEMP ) {
warning_text - > Show ( ) ;
} else {
warning_text - > Hide ( ) ;
}
Layout ( ) ;
Fit ( ) ;
}
void AMSMaterialsSetting : : input_max_finish ( )
{
2022-07-22 09:46:10 +00:00
if ( m_input_nozzle_max - > GetTextCtrl ( ) - > GetValue ( ) . empty ( ) ) return ;
2022-07-15 15:37:19 +00:00
auto val = std : : atoi ( m_input_nozzle_max - > GetTextCtrl ( ) - > GetValue ( ) . c_str ( ) ) ;
if ( val < FILAMENT_MIN_TEMP | | val > FILAMENT_MAX_TEMP ) {
warning_text - > Show ( ) ;
}
else {
warning_text - > Hide ( ) ;
}
Layout ( ) ;
Fit ( ) ;
}
void AMSMaterialsSetting : : update ( )
{
if ( obj ) {
if ( obj - > is_in_printing ( ) | | obj - > can_resume ( ) ) {
enable_confirm_button ( false ) ;
} else {
enable_confirm_button ( true ) ;
}
}
}
void AMSMaterialsSetting : : enable_confirm_button ( bool en )
{
2022-10-20 08:17:46 +00:00
if ( ! m_is_third ) {
m_tip_readonly - > Hide ( ) ;
}
2022-09-05 07:07:57 +00:00
else {
m_button_confirm - > Show ( en ) ;
COMBOBOX_FILAMENT - > Show ( en ) ;
m_readonly_filament - > Show ( ! en ) ;
2022-10-20 08:17:46 +00:00
m_tip_readonly - > Show ( ! en ) ;
2022-09-05 07:07:57 +00:00
}
2022-07-15 15:37:19 +00:00
}
2022-08-03 03:28:16 +00:00
void AMSMaterialsSetting : : on_select_ok ( wxCommandEvent & event )
2022-07-15 15:37:19 +00:00
{
2022-08-02 02:45:43 +00:00
if ( ! m_is_third ) {
2022-08-03 03:28:16 +00:00
Close ( ) ;
2022-08-02 02:45:43 +00:00
return ;
}
2022-07-22 09:46:10 +00:00
wxString nozzle_temp_min = m_input_nozzle_min - > GetTextCtrl ( ) - > GetValue ( ) ;
auto filament = COMBOBOX_FILAMENT - > GetValue ( ) ;
2022-07-15 15:37:19 +00:00
wxString nozzle_temp_max = m_input_nozzle_max - > GetTextCtrl ( ) - > GetValue ( ) ;
long nozzle_temp_min_int , nozzle_temp_max_int ;
nozzle_temp_min . ToLong ( & nozzle_temp_min_int ) ;
nozzle_temp_max . ToLong ( & nozzle_temp_max_int ) ;
wxColour color = m_clrData - > GetColour ( ) ;
char col_buf [ 10 ] ;
sprintf ( col_buf , " %02X%02X%02XFF " , ( int ) color . Red ( ) , ( int ) color . Green ( ) , ( int ) color . Blue ( ) ) ;
ams_filament_id = " " ;
PresetBundle * preset_bundle = wxGetApp ( ) . preset_bundle ;
if ( preset_bundle ) {
for ( auto it = preset_bundle - > filaments . begin ( ) ; it ! = preset_bundle - > filaments . end ( ) ; it + + ) {
2022-07-22 09:46:10 +00:00
if ( it - > alias . compare ( COMBOBOX_FILAMENT - > GetValue ( ) . ToStdString ( ) ) = = 0 ) {
2022-07-15 15:37:19 +00:00
ams_filament_id = it - > filament_id ;
}
}
}
if ( ams_filament_id . empty ( ) | | nozzle_temp_min . empty ( ) | | nozzle_temp_max . empty ( ) | | m_filament_type . empty ( ) ) {
BOOST_LOG_TRIVIAL ( trace ) < < " Invalid Setting id " ;
} else {
if ( obj ) {
obj - > command_ams_filament_settings ( ams_id , tray_id , ams_filament_id , std : : string ( col_buf ) , m_filament_type , nozzle_temp_min_int , nozzle_temp_max_int ) ;
}
}
2022-08-03 03:28:16 +00:00
Close ( ) ;
}
void AMSMaterialsSetting : : on_select_close ( wxCommandEvent & event )
{
Close ( ) ;
2022-07-15 15:37:19 +00:00
}
void AMSMaterialsSetting : : set_color ( wxColour color )
{
m_clrData - > SetColour ( color ) ;
}
2022-07-22 09:46:10 +00:00
void AMSMaterialsSetting : : on_clr_picker ( wxCommandEvent & event )
{
2022-09-05 07:07:57 +00:00
if ( ! m_is_third | | obj - > is_in_printing ( ) | | obj - > can_resume ( ) )
2022-08-02 02:45:43 +00:00
return ;
2022-07-15 15:37:19 +00:00
auto clr_dialog = new wxColourDialog ( this , m_clrData ) ;
show_flag = true ;
if ( clr_dialog - > ShowModal ( ) = = wxID_OK ) {
m_clrData = & ( clr_dialog - > GetColourData ( ) ) ;
2022-08-02 02:45:43 +00:00
m_clr_picker - > SetBackgroundColor ( m_clrData - > GetColour ( ) ) ;
2022-07-15 15:37:19 +00:00
}
}
bool AMSMaterialsSetting : : Show ( bool show )
{
if ( show ) {
m_button_confirm - > SetMinSize ( AMS_MATERIALS_SETTING_BUTTON_SIZE ) ;
m_input_nozzle_max - > GetTextCtrl ( ) - > SetSize ( wxSize ( - 1 , FromDIP ( 20 ) ) ) ;
m_input_nozzle_min - > GetTextCtrl ( ) - > SetSize ( wxSize ( - 1 , FromDIP ( 20 ) ) ) ;
}
2022-08-03 03:28:16 +00:00
return DPIDialog : : Show ( show ) ;
2022-07-15 15:37:19 +00:00
}
2022-08-03 03:28:16 +00:00
void AMSMaterialsSetting : : Popup ( wxString filament , wxString sn , wxString temp_min , wxString temp_max )
2022-07-15 15:37:19 +00:00
{
2022-08-02 02:45:43 +00:00
m_clr_picker - > SetBackgroundColor ( m_clrData - > GetColour ( ) ) ;
2022-07-15 15:37:19 +00:00
if ( ! m_is_third ) {
2022-08-03 03:28:16 +00:00
m_button_confirm - > Hide ( ) ;
2022-08-02 02:45:43 +00:00
m_sn_number - > SetLabel ( sn ) ;
2022-07-15 15:37:19 +00:00
m_panel_SN - > Show ( ) ;
2022-09-05 07:07:57 +00:00
COMBOBOX_FILAMENT - > Hide ( ) ;
m_readonly_filament - > Show ( ) ;
m_readonly_filament - > GetTextCtrl ( ) - > SetLabel ( " Bambu " + filament ) ;
2022-08-02 02:45:43 +00:00
m_input_nozzle_min - > GetTextCtrl ( ) - > SetValue ( temp_min ) ;
m_input_nozzle_max - > GetTextCtrl ( ) - > SetValue ( temp_max ) ;
2022-07-22 09:46:10 +00:00
2022-10-20 08:17:46 +00:00
update ( ) ;
2022-07-15 15:37:19 +00:00
Layout ( ) ;
2022-08-02 02:45:43 +00:00
Fit ( ) ;
2022-08-03 03:28:16 +00:00
ShowModal ( ) ;
2022-07-15 15:37:19 +00:00
return ;
}
2022-09-05 07:07:57 +00:00
2022-08-03 03:28:16 +00:00
m_button_confirm - > Show ( ) ;
2022-07-15 15:37:19 +00:00
m_panel_SN - > Hide ( ) ;
2022-09-05 07:07:57 +00:00
COMBOBOX_FILAMENT - > Show ( ) ;
m_readonly_filament - > Hide ( ) ;
2022-07-15 15:37:19 +00:00
int selection_idx = - 1 , idx = 0 ;
wxArrayString filament_items ;
std : : set < std : : string > filament_id_set ;
2022-09-05 07:07:57 +00:00
PresetBundle * preset_bundle = wxGetApp ( ) . preset_bundle ;
if ( preset_bundle ) {
BOOST_LOG_TRIVIAL ( trace ) < < " system_preset_bundle filament number= " < < preset_bundle - > filaments . size ( ) ;
for ( auto filament_it = preset_bundle - > filaments . begin ( ) ; filament_it ! = preset_bundle - > filaments . end ( ) ; filament_it + + ) {
// filter by system preset
if ( ! filament_it - > is_system ) continue ;
for ( auto printer_it = preset_bundle - > printers . begin ( ) ; printer_it ! = preset_bundle - > printers . end ( ) ; printer_it + + ) {
2022-07-15 15:37:19 +00:00
// filter by system preset
2022-09-05 07:07:57 +00:00
if ( ! printer_it - > is_system ) continue ;
// get printer_model
ConfigOption * printer_model_opt = printer_it - > config . option ( " printer_model " ) ;
ConfigOptionString * printer_model_str = dynamic_cast < ConfigOptionString * > ( printer_model_opt ) ;
if ( ! printer_model_str | | ! obj )
continue ;
// use printer_model as printer type
if ( printer_model_str - > value ! = MachineObject : : get_preset_printer_model_name ( obj - > printer_type ) )
continue ;
ConfigOption * printer_opt = filament_it - > config . option ( " compatible_printers " ) ;
ConfigOptionStrings * printer_strs = dynamic_cast < ConfigOptionStrings * > ( printer_opt ) ;
for ( auto printer_str : printer_strs - > values ) {
if ( printer_it - > name = = printer_str ) {
if ( filament_id_set . find ( filament_it - > filament_id ) ! = filament_id_set . end ( ) ) {
continue ;
}
else {
filament_id_set . insert ( filament_it - > filament_id ) ;
// name matched
filament_items . push_back ( filament_it - > alias ) ;
if ( filament_it - > filament_id = = ams_filament_id ) {
selection_idx = idx ;
// update if nozzle_temperature_range is found
ConfigOption * opt_min = filament_it - > config . option ( " nozzle_temperature_range_low " ) ;
if ( opt_min ) {
ConfigOptionInts * opt_min_ints = dynamic_cast < ConfigOptionInts * > ( opt_min ) ;
if ( opt_min_ints ) {
wxString text_nozzle_temp_min = wxString : : Format ( " %d " , opt_min_ints - > get_at ( 0 ) ) ;
m_input_nozzle_min - > GetTextCtrl ( ) - > SetValue ( text_nozzle_temp_min ) ;
2022-07-15 15:37:19 +00:00
}
2022-09-05 07:07:57 +00:00
}
ConfigOption * opt_max = filament_it - > config . option ( " nozzle_temperature_range_high " ) ;
if ( opt_max ) {
ConfigOptionInts * opt_max_ints = dynamic_cast < ConfigOptionInts * > ( opt_max ) ;
if ( opt_max_ints ) {
wxString text_nozzle_temp_max = wxString : : Format ( " %d " , opt_max_ints - > get_at ( 0 ) ) ;
m_input_nozzle_max - > GetTextCtrl ( ) - > SetValue ( text_nozzle_temp_max ) ;
2022-07-15 15:37:19 +00:00
}
}
}
2022-09-05 07:07:57 +00:00
idx + + ;
2022-07-15 15:37:19 +00:00
}
}
}
}
2022-09-05 07:07:57 +00:00
}
2022-07-22 09:46:10 +00:00
COMBOBOX_FILAMENT - > Set ( filament_items ) ;
2022-08-03 03:28:16 +00:00
COMBOBOX_FILAMENT - > SetSelection ( selection_idx ) ;
post_select_event ( ) ;
2022-07-15 15:37:19 +00:00
}
2022-09-05 07:07:57 +00:00
2022-08-05 02:31:50 +00:00
update ( ) ;
2022-10-20 08:17:46 +00:00
Layout ( ) ;
Fit ( ) ;
2022-08-03 03:28:16 +00:00
ShowModal ( ) ;
2022-07-15 15:37:19 +00:00
}
void AMSMaterialsSetting : : post_select_event ( ) {
wxCommandEvent event ( wxEVT_COMBOBOX ) ;
2022-07-22 09:46:10 +00:00
event . SetEventObject ( COMBOBOX_FILAMENT ) ;
wxPostEvent ( COMBOBOX_FILAMENT , event ) ;
2022-07-15 15:37:19 +00:00
}
void AMSMaterialsSetting : : on_select_filament ( wxCommandEvent & evt )
{
m_filament_type = " " ;
PresetBundle * preset_bundle = wxGetApp ( ) . preset_bundle ;
if ( preset_bundle ) {
for ( auto it = preset_bundle - > filaments . begin ( ) ; it ! = preset_bundle - > filaments . end ( ) ; it + + ) {
auto a = it - > alias ;
2022-07-22 09:46:10 +00:00
if ( it - > alias . compare ( COMBOBOX_FILAMENT - > GetValue ( ) . ToStdString ( ) ) = = 0 ) {
2022-07-15 15:37:19 +00:00
// ) if nozzle_temperature_range is found
ConfigOption * opt_min = it - > config . option ( " nozzle_temperature_range_low " ) ;
if ( opt_min ) {
ConfigOptionInts * opt_min_ints = dynamic_cast < ConfigOptionInts * > ( opt_min ) ;
if ( opt_min_ints ) {
wxString text_nozzle_temp_min = wxString : : Format ( " %d " , opt_min_ints - > get_at ( 0 ) ) ;
m_input_nozzle_min - > GetTextCtrl ( ) - > SetValue ( text_nozzle_temp_min ) ;
}
}
ConfigOption * opt_max = it - > config . option ( " nozzle_temperature_range_high " ) ;
if ( opt_max ) {
ConfigOptionInts * opt_max_ints = dynamic_cast < ConfigOptionInts * > ( opt_max ) ;
if ( opt_max_ints ) {
wxString text_nozzle_temp_max = wxString : : Format ( " %d " , opt_max_ints - > get_at ( 0 ) ) ;
m_input_nozzle_max - > GetTextCtrl ( ) - > SetValue ( text_nozzle_temp_max ) ;
}
}
ConfigOption * opt_type = it - > config . option ( " filament_type " ) ;
bool found_filament_type = false ;
if ( opt_type ) {
ConfigOptionStrings * opt_type_strs = dynamic_cast < ConfigOptionStrings * > ( opt_type ) ;
if ( opt_type_strs ) {
found_filament_type = true ;
//m_filament_type = opt_type_strs->get_at(0);
2022-08-04 09:56:40 +00:00
std : : string display_filament_type ;
m_filament_type = it - > config . get_filament_type ( display_filament_type ) ;
2022-07-15 15:37:19 +00:00
}
}
if ( ! found_filament_type )
m_filament_type = " " ;
}
}
}
if ( m_input_nozzle_min - > GetTextCtrl ( ) - > GetValue ( ) . IsEmpty ( ) ) {
2022-07-22 09:46:10 +00:00
m_input_nozzle_min - > GetTextCtrl ( ) - > SetValue ( " 220 " ) ;
2022-07-15 15:37:19 +00:00
}
if ( m_input_nozzle_max - > GetTextCtrl ( ) - > GetValue ( ) . IsEmpty ( ) ) {
2022-07-22 09:46:10 +00:00
m_input_nozzle_max - > GetTextCtrl ( ) - > SetValue ( " 220 " ) ;
}
}
2022-08-03 03:28:16 +00:00
void AMSMaterialsSetting : : on_dpi_changed ( const wxRect & suggested_rect ) { this - > Refresh ( ) ; }
2022-07-15 15:37:19 +00:00
} } // namespace Slic3r::GUI