FIX: fix some issue in calibration

1.add part of x1c PAcalibrate save multi-filamnet-presets logic
2.fix a quit crash
3.fix keeping connecting device
4.part of UI refined

Change-Id: I221984529bd09111d408b09defe5e30c9d100714
This commit is contained in:
liz.li 2023-05-18 09:41:50 +08:00 committed by Lane.Wei
parent fb5a9062ff
commit 767edb03e0
9 changed files with 602 additions and 332 deletions

View file

@ -50,7 +50,6 @@ void CalibrationPanel::init_timer()
} }
void CalibrationPanel::on_timer(wxTimerEvent& event) { void CalibrationPanel::on_timer(wxTimerEvent& event) {
// todo only update at CalibrationPanel
update_all(); update_all();
} }
@ -73,4 +72,23 @@ void CalibrationPanel::update_all() {
} }
} }
bool CalibrationPanel::Show(bool show) {
if (show) {
m_refresh_timer->Stop();
m_refresh_timer->SetOwner(this);
m_refresh_timer->Start(REFRESH_INTERVAL);
wxPostEvent(this, wxTimerEvent());
}
else {
m_refresh_timer->Stop();
}
return wxPanel::Show(show);
}
CalibrationPanel::~CalibrationPanel() {
if (m_refresh_timer)
m_refresh_timer->Stop();
delete m_refresh_timer;
}
}} }}

View file

@ -10,10 +10,10 @@ class CalibrationPanel : public wxPanel
{ {
public: public:
CalibrationPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); CalibrationPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL);
~CalibrationPanel() {}; ~CalibrationPanel();
Tabbook* get_tabpanel() { return m_tabpanel; }; Tabbook* get_tabpanel() { return m_tabpanel; };
void update_all(); void update_all();
bool Show(bool show);
protected: protected:
void init_tabpanel(); void init_tabpanel();
void init_timer(); void init_timer();
@ -21,7 +21,6 @@ protected:
private: private:
Tabbook* m_tabpanel{ nullptr }; Tabbook* m_tabpanel{ nullptr };
//SideTools* m_side_tools{ nullptr };
CalibrationWizard* m_pa_panel{ nullptr }; CalibrationWizard* m_pa_panel{ nullptr };
CalibrationWizard* m_flow_panel{ nullptr }; CalibrationWizard* m_flow_panel{ nullptr };

File diff suppressed because it is too large Load diff

View file

@ -15,6 +15,7 @@
namespace Slic3r { namespace GUI { namespace Slic3r { namespace GUI {
wxDECLARE_EVENT(EVT_CALIBRATION_TRAY_SELECTION_CHANGED, SimpleEvent); wxDECLARE_EVENT(EVT_CALIBRATION_TRAY_SELECTION_CHANGED, SimpleEvent);
wxDECLARE_EVENT(EVT_CALIBRATION_NOTIFY_CHANGE_PAGES, SimpleEvent);
enum FilamentSelectMode { enum FilamentSelectMode {
FSMCheckBoxMode, FSMCheckBoxMode,
@ -31,6 +32,7 @@ public:
void load_tray_from_ams(int id, DynamicPrintConfig& tray); void load_tray_from_ams(int id, DynamicPrintConfig& tray);
void update_from_preset(); void update_from_preset();
int get_tray_id() { return m_tray_id; } int get_tray_id() { return m_tray_id; }
std::string get_tray_name() { return m_tray_name; }
CalibrateFilamentComboBox* GetComboBox() { return m_comboBox; } CalibrateFilamentComboBox* GetComboBox() { return m_comboBox; }
CheckBox* GetCheckBox() { return m_checkBox; } CheckBox* GetCheckBox() { return m_checkBox; }
void SetCheckBox(CheckBox* cb) { m_checkBox = cb; } void SetCheckBox(CheckBox* cb) { m_checkBox = cb; }
@ -42,6 +44,7 @@ public:
protected: protected:
int m_tray_id; int m_tray_id;
std::string m_tray_name;
CheckBox* m_checkBox{nullptr}; CheckBox* m_checkBox{nullptr};
//RadioBox* m_radioBox; //RadioBox* m_radioBox;
@ -61,7 +64,6 @@ public:
void show_page(CalibrationWizardPage* page); void show_page(CalibrationWizardPage* page);
void show_send_progress_bar(bool show); void show_send_progress_bar(bool show);
void update_printer_selections(); void update_printer_selections();
void update_ams(MachineObject* obj);
void update_print_progress(); void update_print_progress();
void update_filaments_from_preset(); void update_filaments_from_preset();
@ -70,6 +72,7 @@ protected:
virtual bool start_calibration(std::vector<int> tray_ids) = 0; virtual bool start_calibration(std::vector<int> tray_ids) = 0;
virtual bool save_calibration_result() = 0; virtual bool save_calibration_result() = 0;
virtual bool recommend_input_value(); virtual bool recommend_input_value();
virtual void request_calib_result() {};
protected: protected:
MachineObject* curr_obj{ nullptr }; MachineObject* curr_obj{ nullptr };
@ -129,7 +132,7 @@ protected:
PageButton* m_btn_recali; PageButton* m_btn_recali;
// save panel // save panel
wxPanel* m_save_panel; //wxPanel* m_save_panel;
void add_presets_panel_to_page(CalibrationWizardPage* page, wxBoxSizer* sizer); void add_presets_panel_to_page(CalibrationWizardPage* page, wxBoxSizer* sizer);
@ -144,7 +147,7 @@ protected:
std::vector<int> get_selected_tray(); std::vector<int> get_selected_tray();
FilamentComboBoxList get_selected_filament_comboBox(); FilamentComboBoxList get_selected_filament_comboBox();
virtual void on_select_printer(wxCommandEvent& evt); void on_select_printer(wxCommandEvent& evt);
void on_select_nozzle(wxCommandEvent& evt); void on_select_nozzle(wxCommandEvent& evt);
void on_select_tray(SimpleEvent& evt); void on_select_tray(SimpleEvent& evt);
void on_select_bed_type(wxCommandEvent& evt); void on_select_bed_type(wxCommandEvent& evt);
@ -160,7 +163,7 @@ protected:
private: private:
void create_presets_panel(); void create_presets_panel();
void create_print_panel(); void create_print_panel();
void create_save_panel(); //void create_save_panel();
void create_send_progress_bar(); void create_send_progress_bar();
void init_presets_selections(); void init_presets_selections();
@ -174,21 +177,31 @@ public:
PressureAdvanceWizard(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL); PressureAdvanceWizard(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL);
~PressureAdvanceWizard() {}; ~PressureAdvanceWizard() {};
protected: protected:
void create_low_end_pages();
void create_high_end_pages();
virtual void create_pages() override; virtual void create_pages() override;
virtual bool start_calibration(std::vector<int> tray_ids) override; virtual bool start_calibration(std::vector<int> tray_ids) override;
virtual bool save_calibration_result() override; virtual bool save_calibration_result() override;
virtual bool recommend_input_value() override; virtual bool recommend_input_value() override;
virtual void request_calib_result() override;
void sync_save_page_data();
void switch_pages(SimpleEvent& evt);
private: private:
// page 1 // page 1
CalibrationWizardPage* m_page1; CalibrationWizardPage* m_page1{ nullptr };
// page 2 // page 2
CalibrationWizardPage* m_page2; CalibrationWizardPage* m_page2{ nullptr };
// page 3 // page 3
CalibrationWizardPage* m_page3; CalibrationWizardPage* m_low_end_page3{ nullptr };
TextInput* m_k_val; TextInput* m_k_val;
TextInput* m_n_val; TextInput* m_n_val;
CalibrationWizardPage* m_high_end_page3{ nullptr };
std::vector<PACalibResult> m_calib_results;
wxPanel* m_grid_panel;
}; };
class FlowRateWizard : public CalibrationWizard { class FlowRateWizard : public CalibrationWizard {
@ -202,8 +215,9 @@ protected:
virtual bool start_calibration(std::vector<int> tray_ids) override; virtual bool start_calibration(std::vector<int> tray_ids) override;
virtual bool save_calibration_result() override; virtual bool save_calibration_result() override;
virtual bool recommend_input_value() override; virtual bool recommend_input_value() override;
virtual void request_calib_result() override;
virtual void on_select_printer(wxCommandEvent& evt) override; void switch_pages(SimpleEvent& evt);
private: private:
// page 1 // page 1
CalibrationWizardPage* m_page1{ nullptr }; CalibrationWizardPage* m_page1{ nullptr };
@ -212,16 +226,16 @@ private:
CalibrationWizardPage* m_page2{ nullptr }; CalibrationWizardPage* m_page2{ nullptr };
// page 3 // page 3
CalibrationWizardPage* m_page3{ nullptr }; CalibrationWizardPage* m_low_end_page3{ nullptr };
CalibrationWizardPage* m_high_end_page3{ nullptr };
ComboBox* m_optimal_block_coarse; ComboBox* m_optimal_block_coarse;
CalibrationWizardPage* m_high_end_page3{ nullptr };
std::vector<FlowRatioCalibResult> m_calib_results;
// page 4 // page 4
CalibrationWizardPage* m_page4{ nullptr }; CalibrationWizardPage* m_low_end_page4{ nullptr };
//BBLStatusBarSend* m_progress_bar2;
// page 5 // page 5
CalibrationWizardPage* m_page5{ nullptr }; CalibrationWizardPage* m_low_end_page5{ nullptr };
ComboBox* m_optimal_block_fine; ComboBox* m_optimal_block_fine;
void on_fine_tune(wxCommandEvent&); void on_fine_tune(wxCommandEvent&);
@ -263,10 +277,10 @@ private:
// page 2 // page 2
CalibrationWizardPage* m_page2; CalibrationWizardPage* m_page2;
TextInput* m_optimal_temp;
// page 3 // page 3
CalibrationWizardPage* m_page3; CalibrationWizardPage* m_page3;
TextInput* m_optimal_temp;
}; };
class VFAWizard : public CalibrationWizard {}; class VFAWizard : public CalibrationWizard {};

View file

@ -74,7 +74,8 @@ CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, co
m_title->Wrap(-1); m_title->Wrap(-1);
m_title->SetFont(Label::Head_16); m_title->SetFont(Label::Head_16);
title_sizer->Add(m_title, 0, wxALL | wxEXPAND, 0); title_sizer->Add(m_title, 0, wxALL | wxEXPAND, 0);
title_sizer->Add(0, 0, 1, wxEXPAND, 0);
title_sizer->AddStretchSpacer();
m_index = new wxStaticText(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, 0); m_index = new wxStaticText(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, 0);
m_index->Wrap(-1); m_index->Wrap(-1);
@ -83,12 +84,30 @@ CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, co
page_sizer->Add(title_sizer, 0, wxEXPAND, 0); page_sizer->Add(title_sizer, 0, wxEXPAND, 0);
page_sizer->Add(0, FromDIP(20), 0, wxEXPAND, 0); page_sizer->AddSpacer(FromDIP(20));
m_top_sizer = new wxBoxSizer(wxVERTICAL);
m_top_sizer = new wxBoxSizer(wxHORIZONTAL);
m_top_sizer->AddSpacer(FromDIP(180));
m_preset_text = new wxStaticText(this, wxID_ANY, _L("Preset"), wxDefaultPosition, wxDefaultSize, 0);
m_preset_text->SetFont(::Label::Head_14);
m_top_sizer->Add(m_preset_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(15));
auto line1 = new wxPanel(this, wxID_ANY, wxDefaultPosition, {FromDIP(250), 1});
line1->SetBackgroundColour(*wxBLACK);
m_top_sizer->Add(line1, 1, wxALIGN_CENTER, 0);
m_calibration_text = new wxStaticText(this, wxID_ANY, _L("Calibration"), wxDefaultPosition, wxDefaultSize, 0);
m_calibration_text->SetFont(::Label::Head_14);
m_top_sizer->Add(m_calibration_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(15));
auto line2 = new wxPanel(this, wxID_ANY, wxDefaultPosition, { FromDIP(250), 1});
line2->SetBackgroundColour(*wxBLACK);
m_top_sizer->Add(line2, 1, wxALIGN_CENTER, 0);
m_record_text = new wxStaticText(this, wxID_ANY, _L("Record"), wxDefaultPosition, wxDefaultSize, 0);
m_record_text->SetFont(::Label::Head_14);
m_top_sizer->Add(m_record_text, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(15));
m_top_sizer->AddSpacer(FromDIP(180));
page_sizer->Add(m_top_sizer, 0, wxEXPAND, 0); page_sizer->Add(m_top_sizer, 0, wxEXPAND, 0);
page_sizer->AddSpacer(FromDIP(40));
m_content_sizer = new wxBoxSizer(wxVERTICAL); m_content_sizer = new wxBoxSizer(wxVERTICAL);
page_sizer->Add(m_content_sizer, 0, wxEXPAND, 0); page_sizer->Add(m_content_sizer, 0, wxEXPAND, 0);
@ -113,6 +132,18 @@ CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, co
m_btn_next->Bind(wxEVT_BUTTON, &CalibrationWizardPage::on_click_next, this); m_btn_next->Bind(wxEVT_BUTTON, &CalibrationWizardPage::on_click_next, this);
} }
void CalibrationWizardPage::set_highlight_step_text(wxString text) {
m_preset_text->SetForegroundColour(wxColour(181, 181, 181));
m_calibration_text->SetForegroundColour(wxColour(181, 181, 181));
m_record_text->SetForegroundColour(wxColour(181, 181, 181));
if(text == "Preset")
m_preset_text->SetForegroundColour(*wxBLACK);
if (text == "Calibration")
m_calibration_text->SetForegroundColour(*wxBLACK);
if (text == "Record")
m_record_text->SetForegroundColour(*wxBLACK);
}
void CalibrationWizardPage::on_click_prev(wxCommandEvent&) void CalibrationWizardPage::on_click_prev(wxCommandEvent&)
{ {
IntEvent e(EVT_CALIBRATIONPAGE_PREV, static_cast<int>(m_btn_prev->GetButtonType()), m_parent); IntEvent e(EVT_CALIBRATIONPAGE_PREV, static_cast<int>(m_btn_prev->GetButtonType()), m_parent);

View file

@ -48,7 +48,7 @@ public:
return next; return next;
} }
wxBoxSizer* get_top_vsizer() { return m_top_sizer; } wxBoxSizer* get_top_hsizer() { return m_top_sizer; }
wxBoxSizer* get_content_vsizer() { return m_content_sizer; } wxBoxSizer* get_content_vsizer() { return m_content_sizer; }
wxBoxSizer* get_btn_hsizer() { return m_btn_sizer; } wxBoxSizer* get_btn_hsizer() { return m_btn_sizer; }
PageButton* get_prev_btn() { return m_btn_prev; } PageButton* get_prev_btn() { return m_btn_prev; }
@ -56,11 +56,15 @@ public:
void set_page_title(wxString title) { m_title->SetLabel(title); } void set_page_title(wxString title) { m_title->SetLabel(title); }
void set_page_index(wxString index) { m_index->SetLabel(index); } void set_page_index(wxString index) { m_index->SetLabel(index); }
void set_highlight_step_text(wxString text);
private: private:
wxStaticText* m_title; wxStaticText* m_title;
wxStaticText* m_index; wxStaticText* m_index;
wxBoxSizer* m_top_sizer; wxBoxSizer* m_top_sizer;
wxStaticText* m_preset_text;
wxStaticText* m_calibration_text;
wxStaticText* m_record_text;
wxBoxSizer* m_content_sizer; wxBoxSizer* m_content_sizer;
wxBoxSizer* m_btn_sizer; wxBoxSizer* m_btn_sizer;
PageButton* m_btn_prev; PageButton* m_btn_prev;

View file

@ -229,6 +229,7 @@ public:
void update() override; void update() override;
void OnSelect(wxCommandEvent &evt) override; void OnSelect(wxCommandEvent &evt) override;
const Preset* get_selected_preset() { return m_selected_preset; } const Preset* get_selected_preset() { return m_selected_preset; }
std::string get_tray_name() { return m_tray_name; }
bool is_tray_exist() { return m_filament_exist; } bool is_tray_exist() { return m_filament_exist; }
private: private:

View file

@ -147,6 +147,19 @@ bool CalibUtils::get_PA_calib_tab(std::vector<PACalibResult> &pa_calib_infos)
return pa_calib_infos.size() > 0; return pa_calib_infos.size() > 0;
} }
void CalibUtils::set_PA_calib_result(const std::vector<PACalibResult>& pa_calib_values)
{
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
if (!dev)
return;
MachineObject* obj_ = dev->get_selected_machine();
if (obj_ == nullptr)
return;
obj_->command_set_pa_calibration(pa_calib_values);
}
void CalibUtils::calib_flowrate_X1C(const X1CCalibInfos& calib_infos, std::string& error_message) void CalibUtils::calib_flowrate_X1C(const X1CCalibInfos& calib_infos, std::string& error_message)
{ {
DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager();

View file

@ -47,6 +47,7 @@ public:
static bool get_PA_calib_results(std::vector<PACalibResult> &pa_calib_results); static bool get_PA_calib_results(std::vector<PACalibResult> &pa_calib_results);
static void emit_get_PA_calib_infos(); static void emit_get_PA_calib_infos();
static bool get_PA_calib_tab(std::vector<PACalibResult> &pa_calib_infos); static bool get_PA_calib_tab(std::vector<PACalibResult> &pa_calib_infos);
static void set_PA_calib_result(const std::vector<PACalibResult>& pa_calib_values);
static void calib_flowrate_X1C(const X1CCalibInfos& calib_infos, std::string& error_message); static void calib_flowrate_X1C(const X1CCalibInfos& calib_infos, std::string& error_message);
static void emit_get_flow_ratio_calib_results(); static void emit_get_flow_ratio_calib_results();