ENH: refine calibration UI layout
1. adjust layout of every cali page 2. add tips panel about how to use PA result factor 3. modify PA start page text Change-Id: I5e9d4f9ab63e231289ac2b0db5efee158ddee7f5
BIN
resources/images/cali_fdc_editing_diagram.png
Normal file
After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 376 KiB After Width: | Height: | Size: 367 KiB |
Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 228 KiB After Width: | Height: | Size: 217 KiB |
|
@ -58,11 +58,15 @@ CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowI
|
|||
m_scrolledWindow->SetScrollRate(5, 5);
|
||||
m_scrolledWindow->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
wxBoxSizer* padding_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
padding_sizer->Add(0, 0, 1);
|
||||
|
||||
m_all_pages_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
padding_sizer->Add(m_all_pages_sizer, 0);
|
||||
|
||||
m_scrolledWindow->SetSizer(m_all_pages_sizer);
|
||||
m_scrolledWindow->Layout();
|
||||
m_all_pages_sizer->Fit(m_scrolledWindow);
|
||||
padding_sizer->Add(0, 0, 1);
|
||||
|
||||
m_scrolledWindow->SetSizer(padding_sizer);
|
||||
|
||||
main_sizer->Add(m_scrolledWindow, 1, wxEXPAND | wxALL, FromDIP(10));
|
||||
|
||||
|
@ -271,7 +275,16 @@ void CalibrationWizard::on_cali_go_home()
|
|||
int cali_stage = 0;
|
||||
CalibMode obj_cali_mode = get_obj_calibration_mode(curr_obj, method, cali_stage);
|
||||
|
||||
if (obj_cali_mode == m_mode && curr_obj && curr_obj->is_in_printing()) {
|
||||
bool double_confirm = false;
|
||||
CaliPageType page_type = get_curr_step()->page->get_page_type();
|
||||
if (page_type == CaliPageType::CALI_PAGE_COARSE_SAVE ||
|
||||
page_type == CaliPageType::CALI_PAGE_FINE_SAVE ||
|
||||
page_type == CaliPageType::CALI_PAGE_COMMON_SAVE ||
|
||||
page_type == CaliPageType::CALI_PAGE_FLOW_SAVE ||
|
||||
page_type == CaliPageType::CALI_PAGE_PA_SAVE) {
|
||||
double_confirm = true;
|
||||
}
|
||||
if (obj_cali_mode == m_mode && curr_obj && (curr_obj->is_in_printing() || double_confirm)) {
|
||||
if (go_home_dialog == nullptr)
|
||||
go_home_dialog = new SecondaryCheckDialog(this, wxID_ANY, _L("Confirm"));
|
||||
|
||||
|
@ -801,6 +814,8 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
|
|||
MessageDialog msg_dlg(nullptr, wx_err_string, wxEmptyString, wxICON_WARNING | wxOK);
|
||||
msg_dlg.ShowModal();
|
||||
}
|
||||
show_step(m_curr_step->next);
|
||||
|
||||
CalibrationCaliPage *cali_page = (static_cast<CalibrationCaliPage *>(cali_step->page));
|
||||
cali_page->clear_last_job_status();
|
||||
}
|
||||
|
@ -878,8 +893,6 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
|
|||
} else {
|
||||
assert(false);
|
||||
}
|
||||
|
||||
show_step(m_curr_step->next);
|
||||
}
|
||||
|
||||
void FlowRateWizard::on_cali_save()
|
||||
|
|
|
@ -39,13 +39,13 @@ void CalibrationCaliPage::create_page(wxWindow* parent)
|
|||
wxArrayString steps;
|
||||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(1);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_printing_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap);
|
||||
m_top_sizer->Add(m_printing_picture, 0, wxALIGN_CENTER, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
set_cali_img();
|
||||
|
@ -101,27 +101,27 @@ void CalibrationCaliPage::set_cali_img()
|
|||
{
|
||||
if (m_cali_mode == CalibMode::Calib_PA_Line) {
|
||||
if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) {
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("fd_calibration_manual", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("fd_calibration_manual", nullptr, 400));
|
||||
}
|
||||
else if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) {
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("fd_calibration_auto", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("fd_calibration_auto", nullptr, 400));
|
||||
}
|
||||
}
|
||||
else if (m_cali_mode == CalibMode::Calib_Flow_Rate) {
|
||||
if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) {
|
||||
if (m_page_type == CaliPageType::CALI_PAGE_CALI)
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_coarse", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_coarse", nullptr, 400));
|
||||
if (m_page_type == CaliPageType::CALI_PAGE_FINE_CALI)
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_fine", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_fine", nullptr, 400));
|
||||
else
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_coarse", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_coarse", nullptr, 400));
|
||||
}
|
||||
else if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) {
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_auto", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_auto", nullptr, 400));
|
||||
}
|
||||
}
|
||||
else if (m_cali_mode == CalibMode::Calib_Vol_speed_Tower) {
|
||||
m_printing_picture->SetBitmap(create_scaled_bitmap("max_volumetric_speed_calibration", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("max_volumetric_speed_calibration", nullptr, 400));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -406,13 +406,13 @@ void CalibrationCaliPage::set_cali_method(CalibrationMethod method)
|
|||
wxArrayString auto_steps;
|
||||
auto_steps.Add(_L("Preset"));
|
||||
auto_steps.Add(_L("Calibration"));
|
||||
auto_steps.Add(_L("Record"));
|
||||
auto_steps.Add(_L("Record Factor"));
|
||||
|
||||
wxArrayString manual_steps;
|
||||
manual_steps.Add(_L("Preset"));
|
||||
manual_steps.Add(_L("Calibration1"));
|
||||
manual_steps.Add(_L("Calibration2"));
|
||||
manual_steps.Add(_L("Record"));
|
||||
manual_steps.Add(_L("Record Factor"));
|
||||
|
||||
if (method == CalibrationMethod::CALI_METHOD_AUTO) {
|
||||
m_step_panel->set_steps_string(auto_steps);
|
||||
|
|
|
@ -40,7 +40,7 @@ protected:
|
|||
wxBoxSizer* m_top_sizer;
|
||||
CaliPageStepGuide* m_step_panel { nullptr };
|
||||
PrintingTaskPanel* m_printing_panel { nullptr };
|
||||
wxStaticBitmap* m_printing_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
SecondaryCheckDialog* abort_dlg { nullptr };
|
||||
};
|
||||
|
||||
|
|
|
@ -360,8 +360,8 @@ CaliPageCaption::CaliPageCaption(wxWindow* parent, CalibMode cali_mode,
|
|||
|
||||
wxString title = get_cali_mode_caption_string(cali_mode);
|
||||
wxStaticText* title_text = new wxStaticText(this, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, 0);
|
||||
title_text->SetFont(Label::Head_20);
|
||||
title_text->Wrap(-1);
|
||||
title_text->SetFont(Label::Head_16);
|
||||
caption_sizer->Add(title_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
|
||||
|
||||
m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help",
|
||||
|
@ -460,7 +460,7 @@ CaliPageStepGuide::CaliPageStepGuide(wxWindow* parent, wxArrayString steps,
|
|||
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 });
|
||||
auto line = new wxPanel(this, wxID_ANY, wxDefaultPosition);
|
||||
line->SetBackgroundColour(*wxBLACK);
|
||||
m_step_sizer->Add(line, 1, wxALIGN_CENTER);
|
||||
}
|
||||
|
@ -494,7 +494,7 @@ void CaliPageStepGuide::set_steps_string(wxArrayString steps)
|
|||
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 });
|
||||
auto line = new wxPanel(this, wxID_ANY, wxDefaultPosition);
|
||||
line->SetBackgroundColour(*wxBLACK);
|
||||
m_step_sizer->Add(line, 1, wxALIGN_CENTER);
|
||||
}
|
||||
|
@ -504,6 +504,95 @@ void CaliPageStepGuide::set_steps_string(wxArrayString steps)
|
|||
}
|
||||
|
||||
|
||||
CaliPagePicture::CaliPagePicture(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
: wxPanel(parent, id, pos, size, style)
|
||||
{
|
||||
SetBackgroundColour(wxColour(0xCECECE));
|
||||
auto top_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
top_sizer->AddStretchSpacer();
|
||||
m_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap);
|
||||
top_sizer->Add(m_img);
|
||||
top_sizer->AddStretchSpacer();
|
||||
this->SetSizer(top_sizer);
|
||||
top_sizer->Fit(this);
|
||||
}
|
||||
|
||||
void CaliPagePicture::set_img(const wxBitmap& bmp)
|
||||
{
|
||||
m_img->SetBitmap(bmp);
|
||||
}
|
||||
|
||||
|
||||
PAPageHelpPanel::PAPageHelpPanel(wxWindow* parent, bool ground_panel, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
|
||||
: wxPanel(parent, id, pos, size, style)
|
||||
{
|
||||
if (ground_panel)
|
||||
SetBackgroundColour(wxColour(238, 238, 238));
|
||||
else
|
||||
SetBackgroundColour(parent->GetBackgroundColour());
|
||||
int left_align_padding = ground_panel ? FromDIP(20) : 0;
|
||||
|
||||
wxBoxSizer* top_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
top_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
auto help_text_title = new wxStaticText(this, wxID_ANY, _L("How to use calibration result?"));
|
||||
help_text_title->SetFont(Label::Head_14);
|
||||
top_sizer->Add(help_text_title, 0, wxLEFT | wxRIGHT, left_align_padding);
|
||||
|
||||
wxBoxSizer* help_text_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto help_text = new wxStaticText(this, wxID_ANY, _L("You could change the Flow Dynamics Calibration Factor in material editing"));
|
||||
help_text->SetFont(Label::Body_14);
|
||||
m_help_btn = new ScalableButton(this, wxID_ANY, "cali_page_caption_help", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 24);
|
||||
m_help_btn->SetBackgroundColour(m_help_btn->GetParent()->GetBackgroundColour());
|
||||
help_text_sizer->Add(help_text, 0, wxALIGN_CENTER | wxLEFT, left_align_padding);
|
||||
help_text_sizer->Add(m_help_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(8));
|
||||
help_text_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
top_sizer->Add(help_text_sizer);
|
||||
|
||||
top_sizer->AddSpacer(FromDIP(6));
|
||||
|
||||
create_pop_window();
|
||||
|
||||
SetSizer(top_sizer);
|
||||
top_sizer->Fit(this);
|
||||
}
|
||||
|
||||
void PAPageHelpPanel::create_pop_window()
|
||||
{
|
||||
m_pop_win = new PopupWindow(this);
|
||||
m_pop_win->SetBackgroundColour(*wxWHITE);
|
||||
wxBoxSizer* pop_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_pop_win->SetSizer(pop_sizer);
|
||||
|
||||
wxStaticBitmap* img = new wxStaticBitmap(m_pop_win, wxID_ANY, wxNullBitmap);
|
||||
img->SetBitmap(ScalableBitmap(this, "cali_fdc_editing_diagram", 206).bmp());
|
||||
pop_sizer->Add(img, 1, wxEXPAND | wxALL, FromDIP(20));
|
||||
|
||||
m_pop_win->Layout();
|
||||
m_pop_win->Fit();
|
||||
|
||||
m_pop_win->Bind(wxEVT_PAINT, [this](auto&) {
|
||||
wxPaintDC dc(m_pop_win);
|
||||
dc.SetPen({ 0xACACAC });
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRectangle({ 0, 0 }, m_pop_win->GetSize());
|
||||
});
|
||||
|
||||
m_help_btn->Bind(wxEVT_ENTER_WINDOW, [this](auto&) {
|
||||
wxPoint pop_pos = m_help_btn->ClientToScreen(wxPoint(0, 0));
|
||||
pop_pos.x -= FromDIP(60);
|
||||
pop_pos.y -= m_pop_win->GetSize().y + FromDIP(10);
|
||||
|
||||
m_pop_win->Position(pop_pos, wxSize(0, 0));
|
||||
m_pop_win->Popup();
|
||||
});
|
||||
m_help_btn->Bind(wxEVT_LEAVE_WINDOW, [this](auto&) {
|
||||
m_pop_win->Dismiss();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
CaliPageActionPanel::CaliPageActionPanel(wxWindow* parent,
|
||||
CalibMode cali_mode,
|
||||
CaliPageType page_type,
|
||||
|
@ -642,6 +731,7 @@ CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, co
|
|||
, m_parent(parent)
|
||||
{
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
SetMinSize({ MIN_CALIBRATION_PAGE_WIDTH, -1 });
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
namespace Slic3r { namespace GUI {
|
||||
|
||||
|
||||
#define MIN_CALIBRATION_PAGE_WIDTH FromDIP(1100)
|
||||
#define PRESET_GAP FromDIP(25)
|
||||
#define CALIBRATION_COMBOX_SIZE wxSize(FromDIP(500), FromDIP(24))
|
||||
#define CALIBRATION_FILAMENT_COMBOX_SIZE wxSize(FromDIP(250), FromDIP(24))
|
||||
|
@ -156,6 +157,39 @@ protected:
|
|||
std::vector<wxStaticText*> m_text_steps;
|
||||
};
|
||||
|
||||
class CaliPagePicture : public wxPanel
|
||||
{
|
||||
public:
|
||||
CaliPagePicture(wxWindow* parent,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxTAB_TRAVERSAL);
|
||||
|
||||
void set_img(const wxBitmap& bmp);
|
||||
void paint_on_img();
|
||||
protected:
|
||||
wxStaticBitmap* m_img;
|
||||
};
|
||||
|
||||
class PAPageHelpPanel : public wxPanel
|
||||
{
|
||||
public:
|
||||
PAPageHelpPanel(wxWindow* parent,
|
||||
bool ground_panel = true,
|
||||
wxWindowID id = wxID_ANY,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxTAB_TRAVERSAL);
|
||||
|
||||
protected:
|
||||
void create_pop_window();
|
||||
|
||||
ScalableButton* m_help_btn;
|
||||
PopupWindow* m_pop_win;
|
||||
wxStaticBitmap* m_img;
|
||||
};
|
||||
|
||||
enum class CaliPageActionType : int
|
||||
{
|
||||
CALI_ACTION_MANAGE_RESULT = 0,
|
||||
|
|
|
@ -249,7 +249,7 @@ CaliPresetTipsPanel::CaliPresetTipsPanel(
|
|||
: wxPanel(parent, id, pos, size, style)
|
||||
{
|
||||
this->SetBackgroundColour(wxColour(238, 238, 238));
|
||||
this->SetMinSize(wxSize(CALIBRATION_TEXT_MAX_LENGTH * 1.7f, -1));
|
||||
this->SetMinSize(wxSize(MIN_CALIBRATION_PAGE_WIDTH, -1));
|
||||
|
||||
m_top_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
|
@ -291,8 +291,9 @@ void CaliPresetTipsPanel::create_panel(wxWindow* parent)
|
|||
bed_temp_sizer->Add(printing_param_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20));
|
||||
auto bed_temp_text = new wxStaticText(parent, wxID_ANY, _L("Bed temperature"));
|
||||
bed_temp_text->SetFont(Label::Body_12);
|
||||
m_bed_temp = new TextInput(parent, wxEmptyString, _L("\u2103"), "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE, wxTE_READONLY);
|
||||
m_bed_temp->SetBorderWidth(0);
|
||||
|
||||
m_bed_temp = new wxStaticText(parent, wxID_ANY, _L("- \u2103"));
|
||||
m_bed_temp->SetFont(Label::Body_12);
|
||||
bed_temp_sizer->Add(bed_temp_text, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(10));
|
||||
bed_temp_sizer->Add(m_bed_temp, 0, wxALIGN_CENTER);
|
||||
|
||||
|
@ -307,7 +308,6 @@ void CaliPresetTipsPanel::create_panel(wxWindow* parent)
|
|||
m_max_volumetric_speed->Hide();
|
||||
|
||||
m_nozzle_temp->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto&) {});
|
||||
m_bed_temp->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto&) {});
|
||||
m_max_volumetric_speed->GetTextCtrl()->Bind(wxEVT_SET_FOCUS, [](auto&) {});
|
||||
|
||||
info_sizer->Add(nozzle_temp_sizer);
|
||||
|
@ -324,7 +324,9 @@ void CaliPresetTipsPanel::set_params(int nozzle_temp, int bed_temp, float max_vo
|
|||
m_nozzle_temp->GetTextCtrl()->SetValue(text_nozzle_temp);
|
||||
|
||||
wxString bed_temp_text = wxString::Format("%d", bed_temp);
|
||||
m_bed_temp->GetTextCtrl()->SetValue(bed_temp_text);
|
||||
if (bed_temp == 0)
|
||||
bed_temp_text = "-";
|
||||
m_bed_temp->SetLabel(bed_temp_text + _L(" \u2103"));
|
||||
|
||||
wxString flow_val_text = wxString::Format("%0.2f", max_volumetric);
|
||||
m_max_volumetric_speed->GetTextCtrl()->SetValue(flow_val_text);
|
||||
|
@ -333,12 +335,22 @@ void CaliPresetTipsPanel::set_params(int nozzle_temp, int bed_temp, float max_vo
|
|||
void CaliPresetTipsPanel::get_params(int& nozzle_temp, int& bed_temp, float& max_volumetric)
|
||||
{
|
||||
try {
|
||||
nozzle_temp = stoi(m_nozzle_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
bed_temp = stoi(m_bed_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
max_volumetric = stof(m_max_volumetric_speed->GetTextCtrl()->GetValue().ToStdString());
|
||||
nozzle_temp = stoi(m_nozzle_temp->GetTextCtrl()->GetValue().ToStdString());
|
||||
}
|
||||
catch(...) {
|
||||
;
|
||||
catch (...) {
|
||||
nozzle_temp = 0;
|
||||
}
|
||||
try {
|
||||
bed_temp = stoi(m_bed_temp->GetLabel().ToStdString());
|
||||
}
|
||||
catch (...) {
|
||||
bed_temp = 0;
|
||||
}
|
||||
try {
|
||||
max_volumetric = stof(m_max_volumetric_speed->GetTextCtrl()->GetValue().ToStdString());
|
||||
}
|
||||
catch (...) {
|
||||
max_volumetric = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -370,7 +382,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
|||
{
|
||||
auto panel_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
auto nozzle_combo_text = new wxStaticText(parent, wxID_ANY, _L("Please select the nozzle diameter of your printer"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
auto nozzle_combo_text = new wxStaticText(parent, wxID_ANY, _L("Nozzle Diameter"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
nozzle_combo_text->SetFont(Label::Head_14);
|
||||
nozzle_combo_text->Wrap(-1);
|
||||
panel_sizer->Add(nozzle_combo_text, 0, wxALL, 0);
|
||||
|
@ -380,7 +392,7 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
|||
|
||||
panel_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto plate_type_combo_text = new wxStaticText(parent, wxID_ANY, _L("Please select the plate type of your printer"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
auto plate_type_combo_text = new wxStaticText(parent, wxID_ANY, _L("Plate Type"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
plate_type_combo_text->SetFont(Label::Head_14);
|
||||
plate_type_combo_text->Wrap(-1);
|
||||
panel_sizer->Add(plate_type_combo_text, 0, wxALL, 0);
|
||||
|
@ -415,8 +427,9 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent)
|
|||
m_ams_sync_button = new ScalableButton(parent, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, false, 18);
|
||||
m_ams_sync_button->SetBackgroundColour(*wxWHITE);
|
||||
m_ams_sync_button->SetToolTip(_L("Synchronize filament list from AMS"));
|
||||
filament_for_title_sizer->Add(m_ams_sync_button, 0, wxALIGN_CENTER, 0);
|
||||
filament_for_title_sizer->Add(m_ams_sync_button, 0, wxALIGN_CENTER);
|
||||
panel_sizer->Add(filament_for_title_sizer);
|
||||
panel_sizer->AddSpacer(FromDIP(6));
|
||||
|
||||
parent->SetSizer(panel_sizer);
|
||||
panel_sizer->Fit(parent);
|
||||
|
@ -540,9 +553,9 @@ void CalibrationPresetPage::create_ext_spool_panel(wxWindow* parent)
|
|||
|
||||
m_virtual_tray_comboBox->Bind(EVT_CALI_TRAY_CHANGED, &CalibrationPresetPage::on_select_tray, this);
|
||||
|
||||
panel_sizer->Add(radio_btn, 0, wxALIGN_CENTER);
|
||||
panel_sizer->Add(check_box, 0, wxALIGN_CENTER);
|
||||
panel_sizer->Add(m_virtual_tray_comboBox, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(8));
|
||||
panel_sizer->Add(radio_btn, 0, wxALIGN_CENTER | wxTOP, FromDIP(4));
|
||||
panel_sizer->Add(check_box, 0, wxALIGN_CENTER | wxTOP, FromDIP(4));
|
||||
panel_sizer->Add(m_virtual_tray_comboBox, 0, wxALIGN_CENTER | wxTOP, FromDIP(4));
|
||||
parent->SetSizer(panel_sizer);
|
||||
panel_sizer->Fit(parent);
|
||||
|
||||
|
@ -555,6 +568,9 @@ void CalibrationPresetPage::create_ext_spool_panel(wxWindow* parent)
|
|||
|
||||
void CalibrationPresetPage::create_sending_panel(wxWindow* parent)
|
||||
{
|
||||
parent->SetMinSize({ FromDIP(475), FromDIP(200) });
|
||||
parent->SetMaxSize({ FromDIP(475), FromDIP(200) });
|
||||
|
||||
auto panel_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
parent->SetSizer(panel_sizer);
|
||||
|
||||
|
@ -570,7 +586,7 @@ void CalibrationPresetPage::create_sending_panel(wxWindow* parent)
|
|||
}
|
||||
show_status(CaliPresetStatusNormal);
|
||||
});
|
||||
panel_sizer->Add(m_send_progress_bar->get_panel(), 0);
|
||||
panel_sizer->Add(m_send_progress_bar->get_panel(), 0, wxEXPAND);
|
||||
|
||||
m_sw_print_failed_info = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(380), FromDIP(125)), wxVSCROLL);
|
||||
m_sw_print_failed_info->SetBackgroundColour(*wxWHITE);
|
||||
|
@ -580,7 +596,7 @@ void CalibrationPresetPage::create_sending_panel(wxWindow* parent)
|
|||
|
||||
m_sw_print_failed_info->Hide();
|
||||
|
||||
panel_sizer->Add(m_sw_print_failed_info, 0);
|
||||
panel_sizer->Add(m_sw_print_failed_info, 0, wxEXPAND);
|
||||
|
||||
// create error info panel
|
||||
wxBoxSizer* sizer_print_failed_info = new wxBoxSizer(wxVERTICAL);
|
||||
|
@ -647,7 +663,6 @@ void CalibrationPresetPage::create_sending_panel(wxWindow* parent)
|
|||
sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
|
||||
sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5);
|
||||
|
||||
|
||||
Bind(EVT_SHOW_ERROR_INFO, [this](auto& e) {
|
||||
show_send_failed_info(true);
|
||||
});
|
||||
|
@ -672,7 +687,7 @@ void CalibrationPresetPage::create_page(wxWindow* parent)
|
|||
wxArrayString steps;
|
||||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(0);
|
||||
}
|
||||
|
@ -721,8 +736,8 @@ void CalibrationPresetPage::create_page(wxWindow* parent)
|
|||
m_top_sizer->AddSpacer(FromDIP(15));
|
||||
}
|
||||
m_top_sizer->Add(m_tips_panel, 0);
|
||||
m_top_sizer->Add(m_sending_panel, 0);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
m_top_sizer->Add(m_sending_panel, 0, wxALIGN_CENTER);
|
||||
m_top_sizer->Add(m_statictext_printer_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
|
||||
|
@ -1160,6 +1175,8 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status)
|
|||
m_sending_panel->Show(false);
|
||||
update_print_status_msg(wxEmptyString, false);
|
||||
Enable_Send_Button(true);
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
else if (status == CaliPresetPageStatus::CaliPresetStatusNoUserLogin) {
|
||||
wxString msg_text = _L("No login account, only printers in LAN mode are displayed");
|
||||
|
@ -1191,8 +1208,10 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status)
|
|||
Enable_Send_Button(false);
|
||||
}
|
||||
else if (status == CaliPresetPageStatus::CaliPresetStatusSending) {
|
||||
m_sending_panel->Show();
|
||||
m_sending_panel->Show();
|
||||
Enable_Send_Button(false);
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
else if (status == CaliPresetPageStatus::CaliPresetStatusSendingCanceled) {
|
||||
Enable_Send_Button(true);
|
||||
|
@ -1228,11 +1247,13 @@ void CalibrationPresetPage::Enable_Send_Button(bool enable)
|
|||
void CalibrationPresetPage::prepare_mode()
|
||||
{
|
||||
Enable_Send_Button(true);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true);
|
||||
}
|
||||
|
||||
void CalibrationPresetPage::sending_mode()
|
||||
{
|
||||
Enable_Send_Button(false);
|
||||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1347,6 +1368,7 @@ void CalibrationPresetPage::set_cali_method(CalibrationMethod method)
|
|||
void CalibrationPresetPage::on_cali_start_job()
|
||||
{
|
||||
m_send_progress_bar->reset();
|
||||
m_sw_print_failed_info->Show(false);
|
||||
show_status(CaliPresetPageStatus::CaliPresetStatusSending);
|
||||
}
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
protected:
|
||||
wxBoxSizer* m_top_sizer;
|
||||
TextInput* m_nozzle_temp;
|
||||
TextInput* m_bed_temp;
|
||||
wxStaticText* m_bed_temp;
|
||||
TextInput* m_max_volumetric_speed;
|
||||
};
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace Slic3r { namespace GUI {
|
||||
|
||||
|
||||
#define CALIBRATION_SAVE_INPUT_SIZE wxSize(FromDIP(240), FromDIP(24))
|
||||
static wxString get_default_name(wxString filament_name, CalibMode mode){
|
||||
PresetBundle* preset_bundle = wxGetApp().preset_bundle;
|
||||
for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) {
|
||||
|
@ -121,8 +121,7 @@ void CaliPASaveAutoPanel::create_panel(wxWindow* parent)
|
|||
wxBoxSizer* complete_text_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto complete_text = new wxStaticText(m_complete_text_panel, wxID_ANY, _L("We found the best Flow Dynamics Calibration Factor"));
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
complete_text_sizer->Add(complete_text, 0, wxALIGN_CENTER);
|
||||
complete_text_sizer->Add(complete_text, 0, wxEXPAND);
|
||||
m_complete_text_panel->SetSizer(complete_text_sizer);
|
||||
|
||||
m_part_failed_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
|
@ -132,25 +131,26 @@ void CaliPASaveAutoPanel::create_panel(wxWindow* parent)
|
|||
part_failed_sizer->AddSpacer(FromDIP(10));
|
||||
auto part_failed_text = new wxStaticText(m_part_failed_panel, wxID_ANY, _L("Part of the calibration failed! You may clean the plate and retry. The failed test result would be droped."));
|
||||
part_failed_text->SetFont(Label::Body_14);
|
||||
part_failed_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
part_failed_sizer->Add(part_failed_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(20));
|
||||
part_failed_sizer->Add(part_failed_text, 0, wxLEFT | wxRIGHT, FromDIP(20));
|
||||
part_failed_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
m_top_sizer->Add(m_complete_text_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(m_part_failed_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->Add(m_part_failed_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_top_sizer->Add(m_complete_text_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_grid_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_top_sizer->Add(m_grid_panel, 0, wxALIGN_CENTER);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
m_top_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
wxStaticText* naming_hints = new wxStaticText(parent, wxID_ANY, _L("*We recommend you to add brand, materia, type, and even humidity level in the Name"));
|
||||
naming_hints->SetFont(Label::Body_14);
|
||||
naming_hints->SetForegroundColour(wxColour(157, 157, 157));
|
||||
m_top_sizer->Add(naming_hints, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(naming_hints, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
}
|
||||
|
@ -165,7 +165,7 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal
|
|||
}
|
||||
m_grid_panel->DestroyChildren();
|
||||
auto grid_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
const int COLUMN_GAP = FromDIP(50);
|
||||
const int COLUMN_GAP = FromDIP(20);
|
||||
const int ROW_GAP = FromDIP(30);
|
||||
wxBoxSizer* left_title_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
left_title_sizer->AddSpacer(FromDIP(52));
|
||||
|
@ -179,12 +179,14 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal
|
|||
left_title_sizer->Add(n_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
auto brand_title = new wxStaticText(m_grid_panel, wxID_ANY, _L("Name"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
brand_title->SetFont(Label::Head_14);
|
||||
left_title_sizer->Add(brand_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
left_title_sizer->Add(brand_title, 0, wxALIGN_CENTER);
|
||||
grid_sizer->Add(left_title_sizer);
|
||||
grid_sizer->AddSpacer(COLUMN_GAP);
|
||||
|
||||
m_is_all_failed = true;
|
||||
bool part_failed = false;
|
||||
if (cali_result.empty())
|
||||
part_failed = true;
|
||||
for (auto& item : cali_result) {
|
||||
bool result_failed = false;
|
||||
if (item.confidence != 0) {
|
||||
|
@ -209,15 +211,15 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector<PACalibResult>& cal
|
|||
}
|
||||
tray_title->SetLabel(tray_name);
|
||||
|
||||
auto k_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_FROM_TO_INPUT_SIZE, item.tray_id, GridTextInputType::K);
|
||||
auto n_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_FROM_TO_INPUT_SIZE, item.tray_id, GridTextInputType::N);
|
||||
auto k_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_SAVE_INPUT_SIZE, item.tray_id, GridTextInputType::K);
|
||||
auto n_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_SAVE_INPUT_SIZE, item.tray_id, GridTextInputType::N);
|
||||
k_value->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
|
||||
n_value->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
|
||||
auto k_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE);
|
||||
auto n_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE);
|
||||
auto k_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition);
|
||||
auto n_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition);
|
||||
|
||||
auto comboBox_tray_name = new GridComboBox(m_grid_panel, CALIBRATION_FROM_TO_INPUT_SIZE, item.tray_id);
|
||||
auto tray_name_failed = new wxStaticText(m_grid_panel, wxID_ANY, " - ", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE);
|
||||
auto comboBox_tray_name = new GridComboBox(m_grid_panel, CALIBRATION_SAVE_INPUT_SIZE, item.tray_id);
|
||||
auto tray_name_failed = new wxStaticText(m_grid_panel, wxID_ANY, " - ", wxDefaultPosition);
|
||||
wxArrayString selections;
|
||||
static std::vector<PACalibResult> filtered_results;
|
||||
filtered_results.clear();
|
||||
|
@ -425,15 +427,15 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent)
|
|||
auto complete_text = new wxStaticText(complete_text_panel, wxID_ANY, _L("Please find the best line on your plate"));
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
complete_text_sizer->Add(complete_text, 0, wxALIGN_CENTER);
|
||||
complete_text_sizer->Add(complete_text, 0);
|
||||
complete_text_panel->SetSizer(complete_text_sizer);
|
||||
m_top_sizer->Add(complete_text_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(complete_text_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_top_sizer->Add(m_record_picture, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
set_save_img();
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -461,12 +463,12 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent)
|
|||
m_save_name_input = new TextInput(parent, "", "", "", wxDefaultPosition, { CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24) }, 0);
|
||||
m_top_sizer->Add(m_save_name_input, 0, 0, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
m_top_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
wxStaticText* naming_hints = new wxStaticText(parent, wxID_ANY, _L("*We recommend you to add brand, materia, type, and even humidity level in the Name"));
|
||||
naming_hints->SetFont(Label::Body_14);
|
||||
naming_hints->SetForegroundColour(wxColour(157, 157, 157));
|
||||
m_top_sizer->Add(naming_hints, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(naming_hints, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -476,7 +478,7 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent)
|
|||
}
|
||||
|
||||
void CaliPASaveManualPanel::set_save_img() {
|
||||
m_record_picture->SetBitmap(create_scaled_bitmap("fd_calibration_manual_result", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("fd_calibration_manual_result", nullptr, 330));
|
||||
}
|
||||
|
||||
void CaliPASaveManualPanel::set_default_name(const wxString& name) {
|
||||
|
@ -566,15 +568,15 @@ void CaliPASaveP1PPanel::create_panel(wxWindow* parent)
|
|||
auto complete_text = new wxStaticText(complete_text_panel, wxID_ANY, _L("Please find the best line on your plate"));
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
complete_text_sizer->Add(complete_text, 0, wxALIGN_CENTER);
|
||||
complete_text_sizer->Add(complete_text, 0, wxEXPAND);
|
||||
complete_text_panel->SetSizer(complete_text_sizer);
|
||||
m_top_sizer->Add(complete_text_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(complete_text_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_top_sizer->Add(m_record_picture, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
set_save_img();
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -600,13 +602,15 @@ void CaliPASaveP1PPanel::create_panel(wxWindow* parent)
|
|||
value_sizer->Add(m_n_val, 0);
|
||||
m_top_sizer->Add(value_sizer, 0, wxALIGN_CENTER);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
|
||||
SetFocusIgnoringChildren();
|
||||
});
|
||||
}
|
||||
|
||||
void CaliPASaveP1PPanel::set_save_img() {
|
||||
m_record_picture->SetBitmap(create_scaled_bitmap("fd_calibration_manual_result", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("fd_calibration_manual_result", nullptr, 350));
|
||||
}
|
||||
|
||||
bool CaliPASaveP1PPanel::get_result(float* out_k, float* out_n){
|
||||
|
@ -637,7 +641,7 @@ CaliSavePresetValuePanel::CaliSavePresetValuePanel(
|
|||
|
||||
void CaliSavePresetValuePanel::create_panel(wxWindow *parent)
|
||||
{
|
||||
m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
|
||||
m_value_title = new wxStaticText(parent, wxID_ANY, _L("Input Value"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_value_title->SetFont(Label::Head_14);
|
||||
|
@ -651,7 +655,7 @@ void CaliSavePresetValuePanel::create_panel(wxWindow *parent)
|
|||
|
||||
m_input_name = new TextInput(parent, wxEmptyString, "", "", wxDefaultPosition, {CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24)}, 0);
|
||||
|
||||
m_top_sizer->Add(m_record_picture, 0, wxALIGN_CENTER);
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
m_top_sizer->Add(m_value_title, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(10));
|
||||
|
@ -665,7 +669,7 @@ void CaliSavePresetValuePanel::create_panel(wxWindow *parent)
|
|||
|
||||
void CaliSavePresetValuePanel::set_img(const std::string& bmp_name_in)
|
||||
{
|
||||
m_record_picture->SetBitmap(create_scaled_bitmap(bmp_name_in, nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap(bmp_name_in, nullptr, 400));
|
||||
}
|
||||
|
||||
void CaliSavePresetValuePanel::set_value_title(const wxString& title) {
|
||||
|
@ -715,7 +719,7 @@ void CalibrationPASavePage::create_page(wxWindow* parent)
|
|||
wxArrayString steps;
|
||||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(2);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
@ -723,10 +727,15 @@ void CalibrationPASavePage::create_page(wxWindow* parent)
|
|||
m_manual_panel = new CaliPASaveManualPanel(parent, wxID_ANY);
|
||||
m_auto_panel = new CaliPASaveAutoPanel(parent, wxID_ANY);
|
||||
m_p1p_panel = new CaliPASaveP1PPanel(parent, wxID_ANY);
|
||||
m_help_panel = new PAPageHelpPanel(parent);
|
||||
m_manual_panel->Hide();
|
||||
m_p1p_panel->Hide();
|
||||
|
||||
m_top_sizer->Add(m_manual_panel, 0, wxEXPAND);
|
||||
m_top_sizer->Add(m_auto_panel, 0, wxEXPAND);
|
||||
m_top_sizer->Add(m_p1p_panel, 0, wxEXPAND);
|
||||
m_top_sizer->Add(m_help_panel, 0, wxEXPAND);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_PA_SAVE);
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
|
@ -827,7 +836,7 @@ void CalibrationFlowX1SavePage::create_page(wxWindow* parent)
|
|||
wxArrayString steps;
|
||||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(2);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
@ -837,8 +846,7 @@ void CalibrationFlowX1SavePage::create_page(wxWindow* parent)
|
|||
wxBoxSizer* complete_text_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto complete_text = new wxStaticText(m_complete_text_panel, wxID_ANY, _L("We found the best flow ratio for you"));
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
complete_text_sizer->Add(complete_text, 0, wxALIGN_CENTER);
|
||||
complete_text_sizer->Add(complete_text, 0, wxEXPAND);
|
||||
m_complete_text_panel->SetSizer(complete_text_sizer);
|
||||
|
||||
m_part_failed_panel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
|
@ -848,13 +856,14 @@ void CalibrationFlowX1SavePage::create_page(wxWindow* parent)
|
|||
part_failed_sizer->AddSpacer(FromDIP(10));
|
||||
auto part_failed_text = new wxStaticText(m_part_failed_panel, wxID_ANY, _L("Part of the calibration failed! You may clean the plate and retry. The failed test result would be droped."));
|
||||
part_failed_text->SetFont(Label::Body_14);
|
||||
part_failed_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH);
|
||||
part_failed_sizer->Add(part_failed_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(20));
|
||||
part_failed_sizer->Add(part_failed_text, 0, wxLEFT | wxRIGHT, FromDIP(20));
|
||||
part_failed_sizer->AddSpacer(FromDIP(10));
|
||||
|
||||
m_top_sizer->Add(m_complete_text_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(m_part_failed_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->Add(m_part_failed_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_top_sizer->Add(m_complete_text_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -870,22 +879,23 @@ void CalibrationFlowX1SavePage::sync_cali_result(const std::vector<FlowRatioCali
|
|||
m_save_results.clear();
|
||||
m_grid_panel->DestroyChildren();
|
||||
wxBoxSizer* grid_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
const int COLUMN_GAP = FromDIP(50);
|
||||
const int COLUMN_GAP = FromDIP(20);
|
||||
const int ROW_GAP = FromDIP(30);
|
||||
wxBoxSizer* left_title_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
left_title_sizer->AddSpacer(FromDIP(49));
|
||||
auto flow_ratio_title = new wxStaticText(m_grid_panel, wxID_ANY, _L("Flow Ratio"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
flow_ratio_title->SetFont(Label::Head_14);
|
||||
left_title_sizer->Add(flow_ratio_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
left_title_sizer->Add(flow_ratio_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP + FromDIP(10));
|
||||
auto brand_title = new wxStaticText(m_grid_panel, wxID_ANY, _L("Save to Filament Preset"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
brand_title->SetFont(Label::Head_14);
|
||||
left_title_sizer->Add(brand_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
left_title_sizer->Add(brand_title, 0, wxALIGN_CENTER);
|
||||
grid_sizer->Add(left_title_sizer);
|
||||
grid_sizer->AddSpacer(COLUMN_GAP);
|
||||
|
||||
m_is_all_failed = true;
|
||||
bool part_failed = false;
|
||||
|
||||
if (cali_result.empty())
|
||||
part_failed = true;
|
||||
for (auto& item : cali_result) {
|
||||
bool result_failed = false;
|
||||
if (item.confidence != 0) {
|
||||
|
@ -910,15 +920,15 @@ void CalibrationFlowX1SavePage::sync_cali_result(const std::vector<FlowRatioCali
|
|||
}
|
||||
tray_title->SetLabel(tray_name);
|
||||
|
||||
auto flow_ratio_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_FROM_TO_INPUT_SIZE, item.tray_id, GridTextInputType::FlowRatio);
|
||||
auto flow_ratio_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_SAVE_INPUT_SIZE, item.tray_id, GridTextInputType::FlowRatio);
|
||||
flow_ratio_value->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
|
||||
auto flow_ratio_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE);
|
||||
auto flow_ratio_value_failed = new wxStaticText(m_grid_panel, wxID_ANY, _L("Failed"), wxDefaultPosition);
|
||||
|
||||
auto save_name_input = new GridTextInput(m_grid_panel, "", "", CALIBRATION_FROM_TO_INPUT_SIZE, item.tray_id, GridTextInputType::Name);
|
||||
auto save_name_input_failed = new wxStaticText(m_grid_panel, wxID_ANY, " - ", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE);
|
||||
auto save_name_input = new GridTextInput(m_grid_panel, "", "", { CALIBRATION_TEXT_MAX_LENGTH, FromDIP(24) }, item.tray_id, GridTextInputType::Name);
|
||||
auto save_name_input_failed = new wxStaticText(m_grid_panel, wxID_ANY, " - ", wxDefaultPosition);
|
||||
|
||||
column_data_sizer->Add(tray_title, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
column_data_sizer->Add(flow_ratio_value, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
column_data_sizer->Add(flow_ratio_value, 0, wxALIGN_LEFT | wxBOTTOM, ROW_GAP);
|
||||
column_data_sizer->Add(flow_ratio_value_failed, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
column_data_sizer->Add(save_name_input, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
column_data_sizer->Add(save_name_input_failed, 0, wxALIGN_CENTER | wxBOTTOM, ROW_GAP);
|
||||
|
@ -1068,7 +1078,7 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent)
|
|||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration1"));
|
||||
steps.Add(_L("Calibration2"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(1);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
@ -1076,12 +1086,12 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent)
|
|||
auto complete_text = new wxStaticText(parent, wxID_ANY, _L("Please find the best object on your plate"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(-1);
|
||||
m_top_sizer->Add(complete_text, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(complete_text, 0, wxEXPAND, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_top_sizer->Add(m_record_picture, 0, wxALIGN_CENTER, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
set_save_img();
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -1150,6 +1160,7 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent)
|
|||
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2);
|
||||
}
|
||||
Layout();
|
||||
Fit();
|
||||
e.Skip();
|
||||
});
|
||||
|
||||
|
@ -1164,7 +1175,7 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent)
|
|||
}
|
||||
|
||||
void CalibrationFlowCoarseSavePage::set_save_img() {
|
||||
m_record_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_coarse_result", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_coarse_result", nullptr, 350));
|
||||
}
|
||||
|
||||
void CalibrationFlowCoarseSavePage::set_default_name(const wxString& name) {
|
||||
|
@ -1238,7 +1249,7 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent)
|
|||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration1"));
|
||||
steps.Add(_L("Calibration2"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(3);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
@ -1246,12 +1257,12 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent)
|
|||
auto complete_text = new wxStaticText(parent, wxID_ANY, _L("Please find the best object on your plate"), wxDefaultPosition, wxDefaultSize, 0);
|
||||
complete_text->SetFont(Label::Head_14);
|
||||
complete_text->Wrap(-1);
|
||||
m_top_sizer->Add(complete_text, 0, wxALIGN_CENTER, 0);
|
||||
m_top_sizer->Add(complete_text, 0, wxEXPAND, 0);
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
m_record_picture = new wxStaticBitmap(parent, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_top_sizer->Add(m_record_picture, 0, wxALIGN_CENTER, 0);
|
||||
m_picture_panel = new CaliPagePicture(parent);
|
||||
set_save_img();
|
||||
m_top_sizer->Add(m_picture_panel, 0, wxEXPAND, 0);
|
||||
|
||||
m_top_sizer->AddSpacer(FromDIP(20));
|
||||
|
||||
|
@ -1292,7 +1303,7 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent)
|
|||
}
|
||||
|
||||
void CalibrationFlowFineSavePage::set_save_img() {
|
||||
m_record_picture->SetBitmap(create_scaled_bitmap("flow_rate_calibration_fine_result", nullptr, 400));
|
||||
m_picture_panel->set_img(create_scaled_bitmap("flow_rate_calibration_fine_result", nullptr, 350));
|
||||
}
|
||||
|
||||
void CalibrationFlowFineSavePage::set_default_name(const wxString& name) {
|
||||
|
@ -1366,7 +1377,7 @@ void CalibrationMaxVolumetricSpeedSavePage::create_page(wxWindow *parent)
|
|||
wxArrayString steps;
|
||||
steps.Add(_L("Preset"));
|
||||
steps.Add(_L("Calibration"));
|
||||
steps.Add(_L("Record"));
|
||||
steps.Add(_L("Record Factor"));
|
||||
m_step_panel = new CaliPageStepGuide(parent, steps);
|
||||
m_step_panel->set_steps(2);
|
||||
m_top_sizer->Add(m_step_panel, 0, wxEXPAND, 0);
|
||||
|
|
|
@ -51,7 +51,7 @@ class CaliSavePresetValuePanel : public wxPanel
|
|||
{
|
||||
protected:
|
||||
wxBoxSizer* m_top_sizer;
|
||||
wxStaticBitmap* m_record_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
wxStaticText* m_value_title;
|
||||
wxStaticText* m_save_name_title;
|
||||
::TextInput* m_input_value;
|
||||
|
@ -129,7 +129,7 @@ public:
|
|||
|
||||
protected:
|
||||
wxBoxSizer* m_top_sizer;
|
||||
wxStaticBitmap* m_record_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
::TextInput* m_save_name_input;
|
||||
::TextInput* m_k_val;
|
||||
::TextInput* m_n_val;
|
||||
|
@ -153,7 +153,7 @@ public:
|
|||
|
||||
protected:
|
||||
wxBoxSizer* m_top_sizer;
|
||||
wxStaticBitmap* m_record_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
::TextInput* m_k_val;
|
||||
::TextInput* m_n_val;
|
||||
};
|
||||
|
@ -185,6 +185,7 @@ protected:
|
|||
CaliPASaveAutoPanel* m_auto_panel { nullptr };
|
||||
CaliPASaveManualPanel* m_manual_panel { nullptr };
|
||||
CaliPASaveP1PPanel* m_p1p_panel{ nullptr };
|
||||
PAPageHelpPanel* m_help_panel;
|
||||
|
||||
CaliSaveStyle m_save_style;
|
||||
};
|
||||
|
@ -233,7 +234,7 @@ public:
|
|||
|
||||
protected:
|
||||
CaliPageStepGuide* m_step_panel{ nullptr };
|
||||
wxStaticBitmap* m_record_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
ComboBox* m_optimal_block_coarse;
|
||||
TextInput* m_save_name_input;
|
||||
|
||||
|
@ -260,7 +261,7 @@ public:
|
|||
|
||||
protected:
|
||||
CaliPageStepGuide* m_step_panel{ nullptr };
|
||||
wxStaticBitmap* m_record_picture;
|
||||
CaliPagePicture* m_picture_panel;
|
||||
ComboBox* m_optimal_block_fine;
|
||||
TextInput* m_save_name_input;
|
||||
|
||||
|
|
|
@ -93,6 +93,10 @@ void CalibrationPAStartPage::create_page(wxWindow* parent)
|
|||
m_top_sizer->Add(m_images_sizer, 0, wxALL, 0);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
PAPageHelpPanel* m_help_panel = new PAPageHelpPanel(parent, false);
|
||||
m_top_sizer->Add(m_help_panel, 0, wxALL, 0);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
create_about(parent,
|
||||
_L("About this calibration"),
|
||||
_L("Please find the details of Flow Dynamics Calibration from our wiki.\
|
||||
|
@ -175,12 +179,12 @@ void CalibrationFlowRateStartPage::create_page(wxWindow* parent)
|
|||
m_page_caption->show_prev_btn(false);
|
||||
m_top_sizer->Add(m_page_caption, 0, wxEXPAND, 0);
|
||||
create_when(parent,
|
||||
_L("When you need to use Flow Rate Calibration"),
|
||||
_L("When to use Flow Rate Calibration"),
|
||||
_L("After using Flow Dynamics Calibration, there might still be some extrusion issues, such as:\
|
||||
\n1. Over-Extrusion: If you see excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform, it could be a sign of over-extrusion. This can also manifest through problems in parts that need to be assembled not fitting as expected.\
|
||||
\n2. Under-Extrusion: Signs include missing layers or very thin layers, weak infill strength, or gaps in the top layer of the model, even if the print is slow. This could mean that your printer isn't extruding enough filament.\
|
||||
\n3. Poor Surface Quality: If the surface of your prints seems rough or uneven, this could be a result of an incorrect flow rate.\
|
||||
\n4. Weak Structural Integrity: If your prints break easily or don't seem as sturdy as they should be, this might be due to under-extrusion or poor layer adhesion."));
|
||||
\n1. Over-Extrusion: Excess material on your printed object, forming blobs or zits, or the layers seem thicker than expected and not uniform.\
|
||||
\n2. Under-Extrusion: Very thin layers, weak infill strength, or gaps in the top layer of the model, even when printing slowly.\
|
||||
\n3. Poor Surface Quality: The surface of your prints seems rough or uneven.\
|
||||
\n4. Weak Structural Integrity: Prints break easily or don't seem as sturdy as they should be."));
|
||||
|
||||
m_top_sizer->Add(m_when_title);
|
||||
m_top_sizer->Add(m_when_content);
|
||||
|
@ -190,7 +194,7 @@ void CalibrationFlowRateStartPage::create_page(wxWindow* parent)
|
|||
m_top_sizer->Add(m_images_sizer, 0, wxALL, 0);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto extra_text = new wxStaticText(parent, wxID_ANY, _L("Beyond fixing the noted printing defects, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate to achieve good printing results with these special filaments."));
|
||||
auto extra_text = new wxStaticText(parent, wxID_ANY, _L("In addition, Flow Rate Calibration is crucial for foaming materials like LW-PLA used in RC planes. These materials expand greatly when heated, and calibration provides a useful reference flow rate."));
|
||||
extra_text->SetFont(Label::Body_14);
|
||||
extra_text->Wrap(CALIBRATION_START_PAGE_TEXT_MAX_LENGTH);
|
||||
m_top_sizer->Add(extra_text);
|
||||
|
@ -198,14 +202,27 @@ void CalibrationFlowRateStartPage::create_page(wxWindow* parent)
|
|||
|
||||
create_about(parent,
|
||||
_L("About this calibration"),
|
||||
_L("Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. This ratio is normally stable and the default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration. For more details, please check out the wiki article.\
|
||||
\n\nFlow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring calibration the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this calibration and can produce less-than-desirable results.\
|
||||
\n\nThe calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\
|
||||
\n\nCaution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it."));
|
||||
_L("Flow Rate Calibration measures the ratio of expected to actual extrusion volumes. The default setting works well in Bambu Lab printers and official filaments as they were pre-calibrated and fine-tuned. For a regular filament, you usually won't need to perform a Flow Rate Calibration unless you still see the listed defects after you have done other calibrations. For more details, please check out the wiki article."));
|
||||
|
||||
m_top_sizer->Add(m_about_title);
|
||||
m_top_sizer->Add(m_about_content);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
auto auto_cali_title = new wxStaticText(parent, wxID_ANY, _L("Auto-Calibration"));
|
||||
auto_cali_title->SetFont(Label::Head_14);
|
||||
auto_cali_title->Wrap(CALIBRATION_START_PAGE_TEXT_MAX_LENGTH);
|
||||
|
||||
auto auto_cali_content = new wxStaticText(this, wxID_ANY,
|
||||
_L("Auto Flow Rate Calibration utilizes Bambu Lab's Micro-Lidar technology, directly measuring the calibration patterns. However, please be advised that the efficacy and accuracy of this method may be compromised with specific types of materials. Particularly, filaments that are transparent or semi-transparent, sparkling-particled, or have a high-reflective finish may not be suitable for this calibration and can produce less-than-desirable results.\
|
||||
\n\nThe calibration results may vary between each calibration or filament. We are still improving the accuracy and compatibility of this calibration through firmware updates over time.\
|
||||
\n\nCaution: Flow Rate Calibration is an advanced process, to be attempted only by those who fully understand its purpose and implications. Incorrect usage can lead to sub-par prints or printer damage. Please make sure to carefully read and understand the process before doing it."));
|
||||
auto_cali_content->SetFont(Label::Body_14);
|
||||
auto_cali_content->Wrap(CALIBRATION_START_PAGE_TEXT_MAX_LENGTH);
|
||||
|
||||
m_top_sizer->Add(auto_cali_title);
|
||||
m_top_sizer->Add(auto_cali_content);
|
||||
m_top_sizer->AddSpacer(PRESET_GAP);
|
||||
|
||||
m_action_panel = new CaliPageActionPanel(parent, CalibMode::Calib_Flow_Rate, CaliPageType::CALI_PAGE_START);
|
||||
|
||||
m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0);
|
||||
|
|