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

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

Inheritance diagram for Slic3r::GUI::CaliPASaveManualPanel:
Collaboration diagram for Slic3r::GUI::CaliPASaveManualPanel:

Public Member Functions

 CaliPASaveManualPanel (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL)
void create_panel (wxWindow *parent)
void set_save_img ()
void set_pa_cali_method (ManualPaCaliMethod method)
void set_machine_obj (MachineObject *obj)
void set_default_name (const wxString &name)
bool get_result (PACalibResult &out_result)
virtual bool Show (bool show=true) override
void msw_rescale ()

Protected Attributes

wxBoxSizer * m_top_sizer
Label * m_complete_text
CaliPagePicture * m_picture_panel
::TextInput * m_save_name_input
::TextInput * m_k_val
::TextInput * m_n_val
MachineObject * m_obj { nullptr }

Detailed Description

Constructor & Destructor Documentation

◆ CaliPASaveManualPanel()

Slic3r::GUI::CaliPASaveManualPanel::CaliPASaveManualPanel ( wxWindow * parent,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxTAB_TRAVERSAL )
870 : wxPanel(parent, id, pos, size, style)
871{
872 SetBackgroundColour(*wxWHITE);
873
874 m_top_sizer = new wxBoxSizer(wxVERTICAL);
875
876 create_panel(this);
877
878 this->SetSizer(m_top_sizer);
879 m_top_sizer->Fit(this);
880}
#define style
Definition WipeTowerDialog.cpp:101
wxBoxSizer * m_top_sizer
Definition CalibrationWizardSavePage.hpp:161
void create_panel(wxWindow *parent)
Definition CalibrationWizardSavePage.cpp:882

References create_panel(), m_top_sizer, and style.

Here is the call graph for this function:

Member Function Documentation

◆ create_panel()

void Slic3r::GUI::CaliPASaveManualPanel::create_panel ( wxWindow * parent)
883{
884 auto complete_text_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
885 complete_text_panel->SetBackgroundColour(*wxWHITE);
886 wxBoxSizer* complete_text_sizer = new wxBoxSizer(wxVERTICAL);
887 m_complete_text = new Label(complete_text_panel, _L("Please find the best line on your plate"));
890 complete_text_sizer->Add(m_complete_text, 0);
891 complete_text_panel->SetSizer(complete_text_sizer);
892 m_top_sizer->Add(complete_text_panel, 0, wxEXPAND, 0);
893
894 m_top_sizer->AddSpacer(FromDIP(20));
895
896 m_picture_panel = new CaliPagePicture(parent);
897 set_save_img();
898 m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
899
900 m_top_sizer->AddSpacer(FromDIP(20));
901
902 auto k_value_text = new Label(parent, _L("Factor K"));
903 k_value_text->SetFont(::Label::Head_14);
904 k_value_text->Wrap(-1);
905 auto n_value_text = new Label(parent, _L("Factor N"));
906 n_value_text->SetFont(::Label::Head_14);
907 n_value_text->Wrap(-1);
908 n_value_text->Hide();
909 m_k_val = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, CALIBRATION_OPTIMAL_INPUT_SIZE, 0);
910 m_k_val->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
911 m_n_val = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, CALIBRATION_OPTIMAL_INPUT_SIZE, 0);
912 m_n_val->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
913 m_n_val->Hide();
914 m_top_sizer->Add(k_value_text, 0);
915 m_top_sizer->Add(m_k_val, 0);
916
917 m_top_sizer->AddSpacer(FromDIP(20));
918
919 auto save_text = new Label(parent, _L("Name"));
920 save_text->SetFont(Label::Head_14);
921 m_top_sizer->Add(save_text, 0, 0, 0);
922
923 m_save_name_input = new TextInput(parent, "", "", "", wxDefaultPosition, { CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24) }, 0);
924 m_top_sizer->Add(m_save_name_input, 0, 0, 0);
925
926 m_top_sizer->AddSpacer(FromDIP(10));
927
928 auto naming_hints = new Label(parent, _L("*We recommend you to add brand, materia, type, and even humidity level in the Name"));
929 naming_hints->SetFont(Label::Body_14);
930 naming_hints->SetForegroundColour(wxColour(157, 157, 157));
931 m_top_sizer->Add(naming_hints, 0, wxEXPAND, 0);
932
933 m_top_sizer->AddSpacer(FromDIP(20));
934
935 Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
936 SetFocusIgnoringChildren();
937 });
938}
#define CALIBRATION_TEXT_MAX_LENGTH
Definition CalibrationWizardPage.hpp:40
#define CALIBRATION_OPTIMAL_INPUT_SIZE
Definition CalibrationWizardPage.hpp:37
#define _L(s)
Definition OBJ.cpp:34
static wxFont Head_14
Definition Label.hpp:45
static wxFont Body_14
Definition Label.hpp:53
::TextInput * m_k_val
Definition CalibrationWizardSavePage.hpp:165
::TextInput * m_n_val
Definition CalibrationWizardSavePage.hpp:166
::TextInput * m_save_name_input
Definition CalibrationWizardSavePage.hpp:164
void set_save_img()
Definition CalibrationWizardSavePage.cpp:940
CaliPagePicture * m_picture_panel
Definition CalibrationWizardSavePage.hpp:163
Label * m_complete_text
Definition CalibrationWizardSavePage.hpp:162

References _L, Label::Body_14, CALIBRATION_OPTIMAL_INPUT_SIZE, CALIBRATION_TEXT_MAX_LENGTH, Label::Head_14, m_complete_text, m_k_val, m_n_val, m_picture_panel, m_save_name_input, m_top_sizer, and set_save_img().

Referenced by CaliPASaveManualPanel().

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

◆ get_result()

bool Slic3r::GUI::CaliPASaveManualPanel::get_result ( PACalibResult & out_result)
967 {
968 // Check if the value is valid
969 float k;
970 if (!CalibUtils::validate_input_k_value(m_k_val->GetTextCtrl()->GetValue(), &k)) {
971 MessageDialog msg_dlg(nullptr, wxString::Format(_L("Please input a valid value (K in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE), wxEmptyString, wxICON_WARNING | wxOK);
972 msg_dlg.ShowModal();
973 return false;
974 }
975
976 wxString name = m_save_name_input->GetTextCtrl()->GetValue();
978 return false;
979
980 out_result.k_value = k;
981 out_result.name = into_u8(name);
982 if (m_obj) {
983 assert(m_obj->selected_cali_preset.size() <= 1);
984 if (!m_obj->selected_cali_preset.empty()) {
985 out_result.tray_id = m_obj->selected_cali_preset[0].tray_id;
986 out_result.nozzle_diameter = m_obj->selected_cali_preset[0].nozzle_diameter;
987 out_result.filament_id = m_obj->selected_cali_preset[0].filament_id;
988 out_result.setting_id = m_obj->selected_cali_preset[0].setting_id;
989 out_result.extruder_id = m_obj->selected_cali_preset[0].extruder_id;
990 out_result.nozzle_volume_type = m_obj->selected_cali_preset[0].nozzle_volume_type;
991 }
992 else {
993 BOOST_LOG_TRIVIAL(trace) << "CaliPASaveManual: obj->selected_cali_preset is empty";
994 return false;
995 }
996 }
997 else {
998 BOOST_LOG_TRIVIAL(trace) << "CaliPASaveManual::get_result(): obj is nullptr";
999 return false;
1000 }
1001
1002 return true;
1003}
MachineObject * m_obj
Definition CalibrationWizardSavePage.hpp:168
static bool validate_input_k_value(wxString k_text, float *output_value)
Definition CalibUtils.cpp:452
static bool validate_input_name(wxString name)
Definition CalibUtils.cpp:434
const double MAX_PA_K_VALUE
Definition CalibUtils.cpp:68
std::string into_u8(const wxString &str)
Definition GUI.cpp:549
const double MIN_PA_K_VALUE
Definition CalibUtils.cpp:67
void trace(unsigned int level, const char *message)
Definition utils.cpp:247

References _L, Slic3r::PACalibResult::extruder_id, Slic3r::PACalibResult::filament_id, Slic3r::GUI::into_u8(), Slic3r::PACalibResult::k_value, m_k_val, m_obj, m_save_name_input, Slic3r::GUI::MAX_PA_K_VALUE, Slic3r::GUI::MIN_PA_K_VALUE, Slic3r::PACalibResult::name, Slic3r::PACalibResult::nozzle_diameter, Slic3r::PACalibResult::nozzle_volume_type, Slic3r::PACalibResult::setting_id, Slic3r::GUI::DPIAware< P >::ShowModal(), Slic3r::trace(), Slic3r::PACalibResult::tray_id, Slic3r::GUI::CalibUtils::validate_input_k_value(), and Slic3r::GUI::CalibUtils::validate_input_name().

Here is the call graph for this function:

◆ msw_rescale()

void Slic3r::GUI::CaliPASaveManualPanel::msw_rescale ( )
1057{
1058 m_picture_panel->msw_rescale();
1059}

References m_picture_panel.

◆ set_default_name()

void Slic3r::GUI::CaliPASaveManualPanel::set_default_name ( const wxString & name)
963 {
964 m_save_name_input->GetTextCtrl()->SetValue(name);
965}

References m_save_name_input.

Referenced by Show().

Here is the caller graph for this function:

◆ set_machine_obj()

void Slic3r::GUI::CaliPASaveManualPanel::set_machine_obj ( MachineObject * obj)
inline
150{ m_obj = obj; }

References m_obj.

◆ set_pa_cali_method()

void Slic3r::GUI::CaliPASaveManualPanel::set_pa_cali_method ( ManualPaCaliMethod method)
949{
950 if (method == ManualPaCaliMethod::PA_LINE) {
951 m_complete_text->SetLabel(_L("Please find the best line on your plate"));
952 set_save_img();
953 } else if (method == ManualPaCaliMethod::PA_PATTERN) {
954 m_complete_text->SetLabel(_L("Please find the corner with the perfect degree of extrusion"));
955 if (wxGetApp().app_config->get_language_code() == "zh-cn") {
956 m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result_CN", 350));
957 } else {
958 m_picture_panel->set_bmp(ScalableBitmap(this, "fd_pattern_manual_result", 350));
959 }
960 }
961}
@ PA_PATTERN
Definition DevCalib.h:25
@ PA_LINE
Definition DevCalib.h:24

References _L, m_complete_text, m_picture_panel, Slic3r::PA_LINE, Slic3r::PA_PATTERN, and set_save_img().

Here is the call graph for this function:

◆ set_save_img()

void Slic3r::GUI::CaliPASaveManualPanel::set_save_img ( )
940 {
941 if (wxGetApp().app_config->get_language_code() == "zh-cn") {
942 m_picture_panel->set_bmp(ScalableBitmap(this, "fd_calibration_manual_result_CN", 330));
943 } else {
944 m_picture_panel->set_bmp(ScalableBitmap(this, "fd_calibration_manual_result", 330));
945 }
946}

References m_picture_panel.

Referenced by create_panel(), and set_pa_cali_method().

Here is the caller graph for this function:

◆ Show()

bool Slic3r::GUI::CaliPASaveManualPanel::Show ( bool show = true)
overridevirtual
1005 {
1006 if (show) {
1007 if (m_obj) {
1008 if (!m_obj->selected_cali_preset.empty()) {
1009 wxString default_name = get_default_name(m_obj->selected_cali_preset[0].name, CalibMode::Calib_PA_Line);
1010 if (m_obj->is_multi_extruders()) {
1011 wxString recommend_name;
1012 CaliPresetInfo info = m_obj->selected_cali_preset[0];
1013 // extruder _id
1014 {
1015 int extruder_id = 0;
1016 if (info.tray_id == VIRTUAL_TRAY_MAIN_ID) {
1017 extruder_id = 0;
1018 } else if (info.tray_id == VIRTUAL_TRAY_DEPUTY_ID) {
1019 extruder_id = 1;
1020 } else {
1021 int ams_id = info.tray_id / 4;
1022 extruder_id = m_obj->get_extruder_id_by_ams_id(std::to_string(ams_id));
1023 }
1024
1025 if (extruder_id == 0) {
1026 recommend_name += L("Right");
1027 } else if (extruder_id == 1) {
1028 recommend_name += L("Left");
1029 }
1030 }
1031
1032 // nozzle_volume_type
1033 {
1034 recommend_name += "_";
1035 if (info.nozzle_volume_type == NozzleVolumeType::nvtStandard) {
1036 recommend_name += L("Standard");
1037 } else if (info.nozzle_volume_type == NozzleVolumeType::nvtHighFlow) {
1038 recommend_name += L("High Flow");
1039 }
1040 }
1041
1042 default_name = recommend_name + "_" + default_name;
1043 }
1044 set_default_name(default_name);
1045 m_k_val->GetTextCtrl()->ChangeValue("");
1046 m_n_val->GetTextCtrl()->ChangeValue("");
1047 }
1048 }
1049 else {
1050 BOOST_LOG_TRIVIAL(trace) << "CaliPASaveManual::Show(): obj is nullptr";
1051 }
1052 }
1053 return wxPanel::Show(show);
1054}
#define VIRTUAL_TRAY_DEPUTY_ID
Definition DevDefs.h:90
#define VIRTUAL_TRAY_MAIN_ID
Definition DevDefs.h:89
#define L(s)
Definition ExtrusionEntity.cpp:25
void set_default_name(const wxString &name)
Definition CalibrationWizardSavePage.cpp:963
static wxString get_default_name(wxString filament_name, CalibMode mode)
Definition CalibrationWizardSavePage.cpp:48
@ nvtHighFlow
Definition PrintConfig.hpp:620
@ nvtStandard
Definition PrintConfig.hpp:619
@ Calib_PA_Line
Definition calib.hpp:25

References Slic3r::Calib_PA_Line, Slic3r::GUI::get_default_name(), L, m_k_val, m_n_val, m_obj, Slic3r::CaliPresetInfo::nozzle_volume_type, Slic3r::nvtHighFlow, Slic3r::nvtStandard, set_default_name(), Slic3r::trace(), Slic3r::CaliPresetInfo::tray_id, VIRTUAL_TRAY_DEPUTY_ID, and VIRTUAL_TRAY_MAIN_ID.

Here is the call graph for this function:

Member Data Documentation

◆ m_complete_text

Label* Slic3r::GUI::CaliPASaveManualPanel::m_complete_text
protected

Referenced by create_panel(), and set_pa_cali_method().

◆ m_k_val

::TextInput* Slic3r::GUI::CaliPASaveManualPanel::m_k_val
protected

Referenced by create_panel(), get_result(), and Show().

◆ m_n_val

::TextInput* Slic3r::GUI::CaliPASaveManualPanel::m_n_val
protected

Referenced by create_panel(), and Show().

◆ m_obj

MachineObject* Slic3r::GUI::CaliPASaveManualPanel::m_obj { nullptr }
protected
168{ nullptr };

Referenced by get_result(), set_machine_obj(), and Show().

◆ m_picture_panel

CaliPagePicture* Slic3r::GUI::CaliPASaveManualPanel::m_picture_panel
protected

◆ m_save_name_input

::TextInput* Slic3r::GUI::CaliPASaveManualPanel::m_save_name_input
protected

◆ m_top_sizer

wxBoxSizer* Slic3r::GUI::CaliPASaveManualPanel::m_top_sizer
protected

The documentation for this class was generated from the following files: