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

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

Inheritance diagram for Slic3r::GUI::HistoryWindow:
Collaboration diagram for Slic3r::GUI::HistoryWindow:

Public Member Functions

 HistoryWindow (wxWindow *parent, const std::vector< PACalibResult > &calib_results_history, bool &show)
 ~HistoryWindow ()
void on_dpi_changed (const wxRect &suggested_rect)
void on_select_nozzle (wxCommandEvent &evt)
void on_switch_extruder (wxCommandEvent &evt)
void reqeust_history_result (MachineObject *obj)
void sync_history_result (MachineObject *obj)
void on_device_connected (MachineObject *obj)
void on_timer (wxTimerEvent &event)
void update (MachineObject *obj)
void EndModal (int retCode) override
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Protected Member Functions

void sync_history_data ()
void enbale_action_buttons (bool enable)
float get_nozzle_value ()
int get_extruder_id ()
bool support_nozzle_id_column ()
void on_click_new_button (wxCommandEvent &event)
virtual void on_sys_color_changed ()

Protected Attributes

wxPanel * m_history_data_panel
ComboBox * m_comboBox_nozzle_dia
SwitchButton * m_extruder_switch_btn
Label * m_tips
wxTimer * m_refresh_timer { nullptr }
bool & m_show_history_dialog
std::vector< PACalibResult > m_calib_results_history
MachineObject * curr_obj { nullptr }
bool m_ui_op_lock { false }

Private Member Functions

void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description

Constructor & Destructor Documentation

◆ HistoryWindow()

Slic3r::GUI::HistoryWindow::HistoryWindow ( wxWindow * parent,
const std::vector< PACalibResult > & calib_results_history,
bool & show )
141 : DPIDialog(parent, wxID_ANY, _L("Flow Dynamics Calibration Result"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
142 , m_calib_results_history(calib_results_history)
144{
145 this->SetBackgroundColour(*wxWHITE);
146 auto main_sizer = new wxBoxSizer(wxVERTICAL);
147
148 auto scroll_window = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL | wxVSCROLL);
149 scroll_window->SetScrollRate(5, FromDIP(20));
150 scroll_window->SetBackgroundColour(*wxWHITE);
151 scroll_window->SetMinSize(HISTORY_WINDOW_SIZE);
152 scroll_window->SetSize(HISTORY_WINDOW_SIZE);
153 scroll_window->SetMaxSize(HISTORY_WINDOW_SIZE);
154
155 auto scroll_sizer = new wxBoxSizer(wxVERTICAL);
156 scroll_window->SetSizer(scroll_sizer);
157
158 Button * mew_btn = new Button(scroll_window, _L("New"));
160 mew_btn->Bind(wxEVT_BUTTON, &HistoryWindow::on_click_new_button, this);
161
162 scroll_sizer->Add(mew_btn, 0, wxLEFT, FromDIP(20));
163 scroll_sizer->AddSpacer(FromDIP(15));
164
165 m_extruder_switch_btn = new SwitchButton(scroll_window);
166 m_extruder_switch_btn->SetBackgroundColour(wxColour(0, 150, 136));
167 m_extruder_switch_btn->SetMinSize(wxSize(FromDIP(120), FromDIP(24)));
168 m_extruder_switch_btn->SetMaxSize(wxSize(FromDIP(120), FromDIP(24)));
169 m_extruder_switch_btn->SetLabels(_L("Left Nozzle"), _L("Right Nozzle"));
170 m_extruder_switch_btn->Bind(wxEVT_TOGGLEBUTTON, &HistoryWindow::on_switch_extruder, this);
171 m_extruder_switch_btn->SetValue(false);
172 scroll_sizer->Add(m_extruder_switch_btn, 0, wxCENTER | wxALL, FromDIP(10));
173 scroll_sizer->AddSpacer(10);
174
175 wxPanel* comboBox_panel = new wxPanel(scroll_window);
176 comboBox_panel->SetBackgroundColour(wxColour(238, 238, 238));
177 auto comboBox_sizer = new wxBoxSizer(wxVERTICAL);
178 comboBox_panel->SetSizer(comboBox_sizer);
179 comboBox_sizer->AddSpacer(10);
180
181 auto nozzle_dia_title = new Label(comboBox_panel, _L("Nozzle Diameter"));
182 nozzle_dia_title->SetFont(Label::Head_14);
183 comboBox_sizer->Add(nozzle_dia_title, 0, wxLEFT | wxRIGHT, FromDIP(15));
184 comboBox_sizer->AddSpacer(10);
185
186 m_comboBox_nozzle_dia = new ComboBox(comboBox_panel, wxID_ANY, "", wxDefaultPosition, wxSize(-1, FromDIP(24)), 0, nullptr, wxCB_READONLY);
187 comboBox_sizer->Add(m_comboBox_nozzle_dia, 0, wxLEFT | wxEXPAND | wxRIGHT, FromDIP(15));
188 comboBox_sizer->AddSpacer(10);
189
190 scroll_sizer->Add(comboBox_panel, 0, wxEXPAND | wxRIGHT, FromDIP(10));
191
192 scroll_sizer->AddSpacer(FromDIP(15));
193
194 wxPanel* tips_panel = new wxPanel(scroll_window, wxID_ANY);
195 tips_panel->SetBackgroundColour(*wxWHITE);
196 auto tips_sizer = new wxBoxSizer(wxVERTICAL);
197 tips_panel->SetSizer(tips_sizer);
198 m_tips = new Label(tips_panel, "");
199 m_tips->SetForegroundColour({ 145, 145, 145 });
200 tips_sizer->Add(m_tips, 0, wxEXPAND);
201
202 scroll_sizer->Add(tips_panel, 0, wxEXPAND);
203
204 scroll_sizer->AddSpacer(FromDIP(15));
205
206 m_history_data_panel = new wxPanel(scroll_window);
207 m_history_data_panel->SetBackgroundColour(*wxWHITE);
208
209 scroll_sizer->Add(m_history_data_panel, 1, wxEXPAND);
210
211 main_sizer->Add(scroll_window, 1, wxEXPAND | wxALL, FromDIP(10));
212
213 SetSizer(main_sizer);
214 Layout();
215 main_sizer->Fit(this);
216 CenterOnParent();
217
218 wxGetApp().UpdateDlgDarkUI(this);
219
220 m_comboBox_nozzle_dia->Bind(wxEVT_COMBOBOX, &HistoryWindow::on_select_nozzle, this);
221
222 m_refresh_timer = new wxTimer();
223 m_refresh_timer->SetOwner(this);
224 m_refresh_timer->Start(200);
225 Bind(wxEVT_TIMER, &HistoryWindow::on_timer, this);
226
228}
@ Confirm
Definition Button.hpp:25
@ Window
Definition Button.hpp:32
#define HISTORY_WINDOW_SIZE
Definition CaliHistoryDialog.cpp:55
#define _L(s)
Definition OBJ.cpp:34
void SetStyle(const ButtonStyle style, const ButtonType type)
Definition Button.cpp:200
static wxFont Head_14
Definition Label.hpp:45
Label * m_tips
Definition CaliHistoryDialog.hpp:47
bool & m_show_history_dialog
Definition CaliHistoryDialog.hpp:51
void on_timer(wxTimerEvent &event)
Definition CaliHistoryDialog.cpp:303
std::vector< PACalibResult > m_calib_results_history
Definition CaliHistoryDialog.hpp:52
void on_switch_extruder(wxCommandEvent &evt)
Definition CaliHistoryDialog.cpp:329
void on_click_new_button(wxCommandEvent &event)
Definition CaliHistoryDialog.cpp:559
wxTimer * m_refresh_timer
Definition CaliHistoryDialog.hpp:49
wxPanel * m_history_data_panel
Definition CaliHistoryDialog.hpp:44
void on_select_nozzle(wxCommandEvent &evt)
Definition CaliHistoryDialog.cpp:324
SwitchButton * m_extruder_switch_btn
Definition CaliHistoryDialog.hpp:46
ComboBox * m_comboBox_nozzle_dia
Definition CaliHistoryDialog.hpp:45

References _L, Confirm, Label::Head_14, HISTORY_WINDOW_SIZE, m_calib_results_history, m_comboBox_nozzle_dia, m_extruder_switch_btn, m_history_data_panel, m_refresh_timer, m_show_history_dialog, m_tips, on_click_new_button(), on_select_nozzle(), on_switch_extruder(), on_timer(), Button::SetStyle(), and Window.

Here is the call graph for this function:

◆ ~HistoryWindow()

Slic3r::GUI::HistoryWindow::~HistoryWindow ( )
231{
232 m_refresh_timer->Stop();
233 m_show_history_dialog = false;
234}

References m_refresh_timer, and m_show_history_dialog.

Member Function Documentation

◆ em_unit()

int Slic3r::GUI::DPIAware< wxDialog >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

Referenced by Slic3r::GUI::AuxiliaryDialog::AuxiliaryDialog(), Slic3r::GUI::CopyrightsDialog::CopyrightsDialog(), Slic3r::GUI::DesignTextDialog::DesignTextDialog(), Slic3r::GUI::EditGCodeDialog::EditGCodeDialog(), Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::MsgNoUpdates::MsgNoUpdates(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::OAuthDialog::OAuthDialog(), Slic3r::GUI::ParamsDialog::ParamsDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::SettingsDialog::SettingsDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), anonymous_namespace{3DPrinterOS.cpp}::UploadOptionsDialog::UploadOptionsDialog(), Slic3r::GUI::PublishSettingsDialog::add_row_ui(), Slic3r::GUI::DiffPresetDialog::complete_dialog_creation(), Slic3r::GUI::DiffPresetDialog::create_edit_sizer(), Slic3r::GUI::DiffPresetDialog::create_presets_sizer(), Slic3r::GUI::DiffPresetDialog::create_tree(), Slic3r::GUI::ElegooPrintHostSendDialog::init(), Slic3r::GUI::FlashforgePrintHostSendDialog::init(), Slic3r::GUI::PrintHostSendDialog::init(), Slic3r::GUI::AboutDialog::on_dpi_changed(), Slic3r::GUI::AuxiliaryDialog::on_dpi_changed(), Slic3r::GUI::BedShapeDialog::on_dpi_changed(), Slic3r::GUI::ConfigWizard::on_dpi_changed(), Slic3r::GUI::CopyrightsDialog::on_dpi_changed(), Slic3r::GUI::DiffPresetDialog::on_dpi_changed(), Slic3r::GUI::EditGCodeDialog::on_dpi_changed(), Slic3r::GUI::FileArchiveDialog::on_dpi_changed(), Slic3r::GUI::OAuthDialog::on_dpi_changed(), Slic3r::GUI::ObjectTableDialog::on_dpi_changed(), Slic3r::GUI::ParamsDialog::on_dpi_changed(), Slic3r::GUI::PhysicalPrinterDialog::on_dpi_changed(), Slic3r::GUI::PrintHostQueueDialog::on_dpi_changed(), Slic3r::GUI::PurgeModeDialog::on_dpi_changed(), Slic3r::GUI::SavePresetDialog::on_dpi_changed(), Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed(), Slic3r::GUI::SettingsDialog::on_dpi_changed(), and Slic3r::GUI::UnsavedChangesDialog::on_dpi_changed().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxDialog >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

◆ enbale_action_buttons()

void Slic3r::GUI::HistoryWindow::enbale_action_buttons ( bool enable)
protected
358 {
359 auto childern = m_history_data_panel->GetChildren();
360 for (auto child : childern) {
361 auto button = dynamic_cast<Button*>(child);
362 if (button) {
363 button->Enable(enable);
364 }
365 }
366}
bool button(const IconManager::Icon &activ, const IconManager::Icon &hover, const IconManager::Icon &disable, bool disabled)
Use icon as button with 3 states activ hover and disabled.
Definition IconManager.cpp:418

References Slic3r::GUI::button(), and m_history_data_panel.

Referenced by sync_history_data().

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

◆ EndModal()

void Slic3r::GUI::DPIDialog::EndModal ( int retCode)
inlineoverrideinherited
306 {
307 if (!dialogStack.empty() && dialogStack.front() != this) {
308 // This is a bug in wxWidgets
309 // when the dialog is not top modal dialog, EndModal() just hide dialog without quit
310 // the modal event loop. And the modal event loop blocks us from bottom widgets.
311 // Solution: let user click it manually or close outside. FIXME
312 BOOST_LOG_TRIVIAL(warning) << "DPIAware::EndModal Error: dialogStack is not empty, but top dialog is not this one. retCode=" << retCode;
313 return;
314 }
315
316 return wxDialog::EndModal(retCode);
317 }
std::deque< wxDialog * > dialogStack
Definition GUI_Utils.cpp:549

References Slic3r::GUI::dialogStack.

Referenced by Slic3r::GUI::CloneDialog::CloneDialog(), Slic3r::GUI::ConfigWizard::ConfigWizard(), Slic3r::GUI::CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(), Slic3r::GUI::DeleteConfirmDialog::DeleteConfirmDialog(), Slic3r::GUI::DesignVariableDialog::DesignVariableDialog(), Slic3r::GUI::anonymous_namespace{PrintHostDialogs.cpp}::FlashforgeSlotDialog::FlashforgeSlotDialog(), Slic3r::GUI::GuideFrame::GuideFrame(), Slic3r::GUI::InputIpAddressDialog::InputIpAddressDialog(), Slic3r::GUI::ManualNozzleCountDialog::ManualNozzleCountDialog(), Slic3r::GUI::MsgUpdateConfig::MsgUpdateConfig(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::MultiChoiceDialog::MultiChoiceDialog(), Slic3r::GUI::NetworkErrorDialog::NetworkErrorDialog(), Slic3r::GUI::NetworkPluginRestartDialog::NetworkPluginRestartDialog(), Slic3r::GUI::PartSkipConfirmDialog::PartSkipConfirmDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::PlateNameEditDialog::PlateNameEditDialog(), Slic3r::GUI::PlateSettingsDialog::PlateSettingsDialog(), Slic3r::GUI::PublishSettingsDialog::PublishSettingsDialog(), Slic3r::GUI::SelectMachineDialog::SelectMachineDialog(), Slic3r::GUI::SendFailedConfirm::SendFailedConfirm(), Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog(), Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), Slic3r::GUI::SingleChoiceDialog::SingleChoiceDialog(), StepMeshDialog::StepMeshDialog(), Slic3r::GUI::SyncAmsInfoDialog::SyncAmsInfoDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), Slic3r::GUI::UpdatePluginDialog::UpdatePluginDialog(), Slic3r::GUI::UpdateVersionDialog::UpdateVersionDialog(), Slic3r::GUI::wgtDeviceNozzleRackUpgradeDlg::wgtDeviceNozzleRackUpgradeDlg(), Slic3r::GUI::SavePresetDialog::accept(), Slic3r::GUI::MsgDialog::add_button(), Slic3r::GUI::TipsDialog::add_button(), Slic3r::GUI::FilamentPickerDialog::BindEvents(), Slic3r::GUI::PluginPickerDialog::build_capability_ui(), Slic3r::GUI::BedShapeDialog::build_dialog(), Slic3r::GUI::PluginPickerDialog::build_ui(), Slic3r::GUI::UnsavedChangesDialog::close(), Slic3r::GUI::FileArchiveDialog::create_btn_sizer(), Slic3r::GUI::ColorDecomposeDialog::create_button_panel(), Slic3r::GUI::MixedFilamentDialog::create_button_panel(), Slic3r::GUI::CreateFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::CreatePresetForPrinterDialog::create_dialog_buttons(), Slic3r::GUI::EditFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::create_dialog_buttons(), Slic3r::GUI::PreferencesDialog::create_item_language_combobox(), Slic3r::GUI::PreferencesDialog::create_item_region_combobox(), Slic3r::GUI::PreferencesDialog::create_items(), Slic3r::GUI::CreatePrinterPresetDialog::create_page1_dialog_buttons(), Slic3r::GUI::CreatePrinterPresetDialog::create_page2_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::data_init(), Slic3r::GUI::WebDialog::destroy_silently(), Slic3r::GUI::EditFilamentPresetDialog::edit_preset(), Slic3r::GUI::ConnectPrinterDialog::end_modal(), Slic3r::GUI::PrintHostSendDialog::EndModal(), Slic3r::GUI::ColorPickerDialog::finish(), Slic3r::GUI::WebDialog::finish(), Slic3r::GUI::Newer3mfVersionDialog::get_btn_sizer(), Slic3r::GUI::ScoreDialog::get_button_sizer(), Slic3r::GUI::WebViewHostDialog::handle_common_script_command(), Slic3r::GUI::ExportPresetBundleDialog::InitExportData(), Slic3r::GUI::SelectMachineDialog::navigate_to_timelapse_page(), Slic3r::GUI::BindMachineDialog::on_bind_success(), Slic3r::GUI::ConnectPrinterDialog::on_button_confirm(), Slic3r::GUI::RecenterDialog::on_button_confirm(), Slic3r::GUI::BindMachineDialog::on_cancel(), Slic3r::GUI::EditCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::InputIpAddressDialog::on_cancel(), Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::OAuthDialog::on_cancel(), Slic3r::GUI::PingCodeBindDialog::on_cancel(), Slic3r::GUI::SelectMachineDialog::on_cancel(), Slic3r::GUI::SendToPrinterDialog::on_cancel(), Slic3r::GUI::SyncAmsInfoDialog::on_cancel(), Slic3r::GUI::UnBindMachineDialog::on_cancel(), Slic3r::GUI::WebDialog::on_close_window(), Slic3r::GUI::NetworkPluginDownloadDialog::on_dont_ask(), Slic3r::GUI::NetworkPluginDownloadDialog::on_download(), Slic3r::GUI::EditDevNameDialog::on_edit_name(), Slic3r::GUI::ConfirmBeforeSendDialog::on_hide(), Slic3r::GUI::PrivacyUpdateDialog::on_hide(), Slic3r::GUI::ShortcutCaptureDialog::on_key(), Slic3r::GUI::TextureImportDialog::on_ok_clicked(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::GUI::NetworkPluginDownloadDialog::on_remind_later(), Slic3r::GUI::ProjectDropDialog::on_select_cancel(), Slic3r::GUI::SavePresetDialog::on_select_cancel(), Slic3r::GUI::ProjectDropDialog::on_select_ok(), Slic3r::GUI::SendMultiMachinePage::on_send(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip(), Slic3r::GUI::TextureImportDialog::on_skip_clicked(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip_version(), Slic3r::GUI::Cornering_Test_Dlg::on_start(), Slic3r::GUI::FlowRateCalibrationDialog::on_start(), Slic3r::GUI::Input_Shaping_Damp_Test_Dlg::on_start(), Slic3r::GUI::Input_Shaping_Freq_Test_Dlg::on_start(), Slic3r::GUI::MaxVolumetricSpeed_Test_Dlg::on_start(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::GUI::Retraction_Test_Dlg::on_start(), Slic3r::GUI::Temp_Calibration_Dlg::on_start(), Slic3r::GUI::VFA_Test_Dlg::on_start(), Slic3r::GUI::CalibrationDialog::on_start_calibration(), Slic3r::GUI::UnBindMachineDialog::on_unbind_printer(), Slic3r::GUI::PartSkipDialog::OnApplyDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::OnCancel(), Slic3r::GUI::AboutDialog::onCloseDialog(), Slic3r::GUI::CopyrightsDialog::onCloseDialog(), Slic3r::GUI::MultiNozzleSyncDialog::OnRackStatusReadingFinished(), Slic3r::GUI::GuideFrame::OnScriptMessage(), Slic3r::GUI::InputIpAddressDialog::OnTimer(), Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences(), Slic3r::GUI::TroubleshootDialog::PackAll(), Slic3r::GUI::TroubleshootDialog::RebuildSystemProfiles(), Slic3r::GUI::SpeedDialWebDialog::run_action(), Slic3r::GUI::OAuthDialog::Show(), Slic3r::GUI::MultiNozzleSyncDialog::UpdateButton(), and Slic3r::GUI::CreatePrinterPresetDialog::validate_input_valid().

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxDialog >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

◆ get_extruder_id()

int Slic3r::GUI::HistoryWindow::get_extruder_id ( )
protected
541{
542 if (!curr_obj) {
543 assert(false);
544 return 0;
545 }
546 if (!curr_obj->is_multi_extruders() || !m_extruder_switch_btn)
547 return -1;
548
549 bool is_left = !m_extruder_switch_btn->GetValue();
550 bool main_on_left = curr_obj->is_main_extruder_on_left();
551
552 if (is_left == main_on_left) {
553 return 0;
554 }
555
556 return 1;
557}
MachineObject * curr_obj
Definition CaliHistoryDialog.hpp:53

References curr_obj, and m_extruder_switch_btn.

Referenced by reqeust_history_result(), and support_nozzle_id_column().

Here is the caller graph for this function:

◆ get_nozzle_value()

float Slic3r::GUI::HistoryWindow::get_nozzle_value ( )
protected
527{
528 double nozzle_value = 0.0;
529 wxString nozzle_value_str = m_comboBox_nozzle_dia->GetValue();
530 try {
531 nozzle_value_str.ToDouble(&nozzle_value);
532 }
533 catch (...) {
534 ;
535 }
536
537 return nozzle_value;
538}

References m_comboBox_nozzle_dia.

Referenced by reqeust_history_result().

Here is the caller graph for this function:

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxDialog >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

◆ normal_font()

◆ on_click_new_button()

void Slic3r::GUI::HistoryWindow::on_click_new_button ( wxCommandEvent & event)
protected
560{
561 if (curr_obj && curr_obj->get_printer_series() == PrinterSeries::SERIES_P1P && m_calib_results_history.size() >= 16) {
562 MessageDialog msg_dlg(nullptr, wxString::Format(_L_PLURAL("This machine type can only hold %d historical result per nozzle.", "This machine type can only hold %d historical results per nozzle.", 16), 16), wxEmptyString, wxICON_WARNING | wxOK);
563 msg_dlg.ShowModal();
564 return;
565 }
566
567 NewCalibrationHistoryDialog dlg(this, m_calib_results_history);
568 dlg.ShowModal();
569}
@ SERIES_P1P
Definition DevDefs.h:36
#define _L_PLURAL(s, plural, n)
Definition I18N.hpp:96

References _L_PLURAL, curr_obj, m_calib_results_history, SERIES_P1P, and Slic3r::GUI::DPIAware< P >::ShowModal().

Referenced by HistoryWindow().

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

◆ on_device_connected()

void Slic3r::GUI::HistoryWindow::on_device_connected ( MachineObject * obj)
271{
272 if (!obj) {
273 return;
274 }
275
276 curr_obj = obj;
277 // init nozzle value
278 static std::array<float, 4> nozzle_diameter_list = { 0.2f, 0.4f, 0.6f, 0.8f };
279 int selection = 1;
280 for (int i = 0; i < nozzle_diameter_list.size(); i++) {
281 m_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
282 if (abs(curr_obj->GetExtderSystem()->GetNozzleDiameter(0) - nozzle_diameter_list[i]) < 1e-3) {
283 selection = i;
284 }
285 }
286 m_comboBox_nozzle_dia->SetSelection(selection);
287
288 m_extruder_switch_btn->SetLabels(
291
292 if (obj->is_multi_extruders())
293 m_extruder_switch_btn->Show();
294 else
295 m_extruder_switch_btn->Hide();
296
297 // trigger on_select nozzle
298 wxCommandEvent evt(wxEVT_COMBOBOX);
299 evt.SetEventObject(m_comboBox_nozzle_dia);
300 wxPostEvent(m_comboBox_nozzle_dia, evt);
301}
#define DEPUTY_EXTRUDER_ID
Definition DevDefs.h:102
#define MAIN_EXTRUDER_ID
Definition DevDefs.h:101
static std::string get_toolhead_display_name(const std::string &type_str, int ext_id, ToolHeadComponent component, ToolHeadNameCase name_case=ToolHeadNameCase::TitleCase, bool short_name=false)
Definition DevConfigUtil.cpp:379
float nozzle_diameter_list[NOZZLE_LIST_COUNT]
Definition CalibrationWizardPresetPage.cpp:859
@ Nozzle
Definition DevConfigUtil.h:35
@ TitleCase
Definition DevConfigUtil.h:41

References _L, curr_obj, DEPUTY_EXTRUDER_ID, Slic3r::DevPrinterConfigUtil::get_toolhead_display_name(), Slic3r::MachineObject::is_multi_extruders(), m_comboBox_nozzle_dia, m_extruder_switch_btn, MAIN_EXTRUDER_ID, Slic3r::Nozzle, Slic3r::GUI::nozzle_diameter_list, Slic3r::MachineObject::printer_type, and Slic3r::TitleCase.

Referenced by Slic3r::GUI::PressureAdvanceWizard::on_cali_action().

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

◆ on_dpi_changed()

void Slic3r::GUI::HistoryWindow::on_dpi_changed ( const wxRect & suggested_rect)
inlinevirtual

◆ on_select_nozzle()

void Slic3r::GUI::HistoryWindow::on_select_nozzle ( wxCommandEvent & evt)
325{
327}
void reqeust_history_result(MachineObject *obj)
Definition CaliHistoryDialog.cpp:335

References curr_obj, and reqeust_history_result().

Referenced by HistoryWindow().

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

◆ on_switch_extruder()

void Slic3r::GUI::HistoryWindow::on_switch_extruder ( wxCommandEvent & evt)
330{
331 evt.Skip();
333}

References curr_obj, and reqeust_history_result().

Referenced by HistoryWindow().

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

◆ on_sys_color_changed()

◆ on_timer()

void Slic3r::GUI::HistoryWindow::on_timer ( wxTimerEvent & event)
304{
306}
void update(MachineObject *obj)
Definition CaliHistoryDialog.cpp:308

References curr_obj, and update().

Referenced by HistoryWindow().

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

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

◆ reqeust_history_result()

void Slic3r::GUI::HistoryWindow::reqeust_history_result ( MachineObject * obj)
336{
337 if (curr_obj) {
338 // reset
339 curr_obj->reset_pa_cali_history_result();
342
343 float nozzle_value = get_nozzle_value();
344 int extruder_id = get_extruder_id();
345 if (nozzle_value > 0) {
346 PACalibExtruderInfo cali_info;
347 cali_info.nozzle_diameter = nozzle_value;
348 cali_info.extruder_id = extruder_id;
349 cali_info.use_nozzle_volume_type = false;
350 cali_info.use_extruder_id = false;
352 m_tips->SetLabel(_L("Refreshing the previous Flow Dynamics Calibration records"));
353 BOOST_LOG_TRIVIAL(info) << "request calib history";
354 }
355 }
356}
static void emit_get_PA_calib_infos(const PACalibExtruderInfo &cali_info)
Definition CalibUtils.cpp:605
int get_extruder_id()
Definition CaliHistoryDialog.cpp:540
float get_nozzle_value()
Definition CaliHistoryDialog.cpp:526
void sync_history_data()
Definition CaliHistoryDialog.cpp:380

References _L, curr_obj, Slic3r::GUI::CalibUtils::emit_get_PA_calib_infos(), Slic3r::PACalibExtruderInfo::extruder_id, get_extruder_id(), get_nozzle_value(), m_calib_results_history, m_tips, Slic3r::PACalibExtruderInfo::nozzle_diameter, sync_history_data(), Slic3r::PACalibExtruderInfo::use_extruder_id, and Slic3r::PACalibExtruderInfo::use_nozzle_volume_type.

Referenced by on_select_nozzle(), on_switch_extruder(), and update().

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

◆ rescale()

void Slic3r::GUI::DPIAware< wxDialog >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_prev_scale_factor ( float v)
inlineinherited

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

◆ ShowModal()

◆ support_nozzle_id_column()

bool Slic3r::GUI::HistoryWindow::support_nozzle_id_column ( )
protected
370{
372 return false;
373 auto ns = curr_obj->GetNozzleSystem();
374 if (!ns)
375 return false;
376 auto rack = ns->GetNozzleRack();
377 return rack && rack->IsSupported();
378}

References curr_obj, get_extruder_id(), and MAIN_EXTRUDER_ID.

Referenced by sync_history_data().

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

◆ sync_history_data()

void Slic3r::GUI::HistoryWindow::sync_history_data ( )
protected
380 {
381 int column_idx = 0;
382
383 Freeze();
384 m_history_data_panel->DestroyChildren();
385 m_history_data_panel->Enable();
386 wxGridBagSizer* gbSizer;
387 gbSizer = new wxGridBagSizer(FromDIP(0), FromDIP(50));
388 gbSizer->SetFlexibleDirection(wxBOTH);
389 gbSizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
390
391 m_history_data_panel->SetSizer(gbSizer, true);
392
393 const bool has_nozzle_id = support_nozzle_id_column();
394
395 auto title_name = new Label(m_history_data_panel, _L("Name"));
396 title_name->SetFont(Label::Head_14);
397 gbSizer->Add(title_name, {0, column_idx++ }, {1, 1}, wxBOTTOM, FromDIP(15));
398
399 auto title_preset_name = new Label(m_history_data_panel, _L("Filament"));
400 title_preset_name->SetFont(Label::Head_14);
401 gbSizer->Add(title_preset_name, { 0, column_idx++ }, { 1, 1 }, wxBOTTOM, FromDIP(15));
402
403 if (has_nozzle_id) {
404 auto nozzle_id_name = new Label(m_history_data_panel, _L("Nozzle ID"));
405 nozzle_id_name->SetFont(Label::Head_14);
406 {
408 nozzle_id_name->SetToolTip(wxString::Format(_L("Note: The hotend number on the %s is tied to the holder. When the hotend is moved to a new holder, its number will update automatically."), chd_ext_name));
409 }
410 gbSizer->Add(nozzle_id_name, {0, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
411 }
412
414 auto nozzle_name = new Label(m_history_data_panel, _L("Nozzle Flow"));
415 nozzle_name->SetFont(Label::Head_14);
416 gbSizer->Add(nozzle_name, {0, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
417 }
418
419 auto title_k = new Label(m_history_data_panel, _L("Factor K"));
420 title_k->SetFont(Label::Head_14);
421 gbSizer->Add(title_k, { 0, column_idx++ }, { 1, 1 }, wxBOTTOM, FromDIP(15));
422
423 // Hide
424 //auto title_n = new Label(m_history_data_panel, wxID_ANY, _L("N"));
425 //title_n->SetFont(Label::Head_14);
426 //gbSizer->Add(title_n, { 0, 3 }, { 1, 1 }, wxBOTTOM, FromDIP(15));
427
428 auto title_action = new Label(m_history_data_panel, _L("Action"));
429 title_action->SetFont(Label::Head_14);
430 gbSizer->Add(title_action, {0, column_idx++}, {1, 1});
431
432 // grid item num in row (Delete + Edit share one "Action" header)
433 const int column_count = column_idx + 1;
434 // reset column_idx for the data rows
435 column_idx = 0;
436
437 int i = 1;
438 for (auto& result : m_calib_results_history) {
439 auto name_value = new Label(m_history_data_panel, from_u8(result.name));
440
441 wxString preset_name = get_preset_name_by_filament_id(result.filament_id);
442 auto preset_name_value = new Label(m_history_data_panel, preset_name);
443
444 auto k_str = wxString::Format("%.3f", result.k_value);
445 auto n_str = wxString::Format("%.3f", result.n_coef);
446 auto k_value = new Label(m_history_data_panel, k_str);
447 auto n_value = new Label(m_history_data_panel, n_str);
448 n_value->Hide();
449 auto delete_button = new Button(m_history_data_panel, _L("Delete"));
450 delete_button->SetStyle(ButtonStyle::Alert, ButtonType::Window);
451 delete_button->Bind(wxEVT_BUTTON, [this, gbSizer, i, &result, column_count](auto& e) {
452 if (m_ui_op_lock) {
453 return;
454 } else {
455 m_ui_op_lock = true;
456 }
457 for (int j = 0; j < column_count; j++) {
458 auto item = gbSizer->FindItemAtPosition({ i, j });
459 if (item && item->GetWindow())
460 item->GetWindow()->Hide();
461 }
462 gbSizer->SetEmptyCellSize({ 0,0 });
463 m_history_data_panel->Layout();
465 PACalibIndexInfo cali_info;
466 cali_info.tray_id = result.tray_id;
467 cali_info.cali_idx = result.cali_idx;
468 cali_info.nozzle_diameter = result.nozzle_diameter;
469 cali_info.filament_id = result.filament_id;
470 cali_info.nozzle_pos_id = result.nozzle_pos_id;
471 cali_info.nozzle_sn = result.nozzle_sn;
473 });
474
475 auto edit_button = new Button(m_history_data_panel, _L("Edit"));
476 edit_button->SetStyle(ButtonStyle::Confirm, ButtonType::Window);
477 edit_button->Bind(wxEVT_BUTTON, [this, result, k_value, name_value](auto& e) {
478 if (m_ui_op_lock) return;
479
480 PACalibResult result_buffer = result;
481 result_buffer.k_value = stof(k_value->GetLabel().ToStdString());
482 result_buffer.name = name_value->GetLabel().ToUTF8().data();
483 EditCalibrationHistoryDialog dlg(this, result_buffer, curr_obj, m_calib_results_history);
484 if (dlg.ShowModal() == wxID_OK) {
485 auto new_result = dlg.get_result();
486
487 wxString new_k_str = wxString::Format("%.3f", new_result.k_value);
488 k_value->SetLabel(new_k_str);
489 name_value->SetLabel(from_u8(new_result.name));
490
491 new_result.tray_id = -1;
492 CalibUtils::set_PA_calib_result({ new_result }, true);
493
495 }
496 });
497
498 gbSizer->Add(name_value, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
499 gbSizer->Add(preset_name_value, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
500 if (has_nozzle_id) {
501 wxString nozzle_id = nozzle_id_code_to_string(result.nozzle_pos_id);
502 auto nozzle_id_label = new Label(m_history_data_panel, nozzle_id);
503 gbSizer->Add(nozzle_id_label, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
504 }
506 wxString nozzle_name = get_nozzle_volume_type_name(result.nozzle_volume_type);
507 auto nozzle_name_label = new Label(m_history_data_panel, nozzle_name);
508 gbSizer->Add(nozzle_name_label, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
509 }
510 gbSizer->Add(k_value, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
511 //gbSizer->Add(n_value, { i, 3 }, { 1, 1 }, wxBOTTOM, FromDIP(15));
512 gbSizer->Add(delete_button, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
513 gbSizer->Add(edit_button, {i, column_idx++}, {1, 1}, wxBOTTOM, FromDIP(15));
514 column_idx = 0;
515 i++;
516 m_ui_op_lock = false;
517 }
518
519 wxGetApp().UpdateDlgDarkUI(this);
520
521 Layout();
522 Fit();
523 Thaw();
524}
@ Alert
Definition Button.hpp:26
static void delete_PA_calib_result(const PACalibIndexInfo &pa_calib_info)
Definition CalibUtils.cpp:660
static void set_PA_calib_result(const std::vector< PACalibResult > &pa_calib_values, bool is_auto_cali)
Definition CalibUtils.cpp:634
bool m_ui_op_lock
Definition CaliHistoryDialog.hpp:55
void enbale_action_buttons(bool enable)
Definition CaliHistoryDialog.cpp:358
bool support_nozzle_id_column()
Definition CaliHistoryDialog.cpp:369
static wxString nozzle_id_code_to_string(int code)
Definition CaliHistoryDialog.cpp:91
wxString from_u8(const std::string &str)
Definition GUI.cpp:544
bool support_nozzle_volume(const MachineObject *obj)
Definition CaliHistoryDialog.cpp:74
wxString get_nozzle_volume_type_name(NozzleVolumeType type)
Definition CalibUtils.cpp:138
static wxString get_preset_name_by_filament_id(std::string filament_id)
Definition CaliHistoryDialog.cpp:103
@ Extruder
Definition DevConfigUtil.h:34
@ LowerCase
Definition DevConfigUtil.h:43

References _L, Alert, Slic3r::PACalibIndexInfo::cali_idx, Confirm, curr_obj, Slic3r::GUI::CalibUtils::delete_PA_calib_result(), enbale_action_buttons(), Slic3r::Extruder, Slic3r::PACalibIndexInfo::filament_id, Slic3r::GUI::from_u8(), Slic3r::GUI::get_nozzle_volume_type_name(), Slic3r::GUI::get_preset_name_by_filament_id(), Slic3r::GUI::EditCalibrationHistoryDialog::get_result(), Slic3r::DevPrinterConfigUtil::get_toolhead_display_name(), Label::Head_14, Slic3r::PACalibResult::k_value, Slic3r::LowerCase, m_calib_results_history, m_history_data_panel, m_ui_op_lock, MAIN_EXTRUDER_ID, Slic3r::PACalibResult::name, Slic3r::PACalibIndexInfo::nozzle_diameter, Slic3r::GUI::nozzle_id_code_to_string(), Slic3r::PACalibIndexInfo::nozzle_pos_id, Slic3r::PACalibIndexInfo::nozzle_sn, Slic3r::GUI::CalibUtils::set_PA_calib_result(), Slic3r::GUI::DPIAware< P >::ShowModal(), support_nozzle_id_column(), Slic3r::GUI::support_nozzle_volume(), Slic3r::PACalibIndexInfo::tray_id, and Window.

Referenced by reqeust_history_result(), and sync_history_result().

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

◆ sync_history_result()

void Slic3r::GUI::HistoryWindow::sync_history_result ( MachineObject * obj)
237{
238 BOOST_LOG_TRIVIAL(info) << "sync_history_result";
239
241 if (obj) {
242 if (obj->is_multi_extruders()) {
243 for (const PACalibResult &pa_result : obj->pa_calib_tab) {
244 if (pa_result.extruder_id == 0 && m_extruder_switch_btn->GetValue()) {
245 // left extruder
246 m_calib_results_history.emplace_back(pa_result);
247 } else if (pa_result.extruder_id == 1 && !m_extruder_switch_btn->GetValue()) {
248 // right extruder
249 m_calib_results_history.emplace_back(pa_result);
250 }
251 }
252 }
253 else {
254 m_calib_results_history = obj->pa_calib_tab;
255 }
256 }
257
258 if (m_calib_results_history.empty()) {
259 m_tips->SetLabel(_L("No History Result"));
260 return;
261 }
262 else {
263 m_tips->SetLabel(_L("Success to get history result"));
264 }
265 m_tips->Refresh();
266
268}

References _L, Slic3r::PACalibResult::extruder_id, Slic3r::MachineObject::is_multi_extruders(), m_calib_results_history, m_extruder_switch_btn, m_tips, Slic3r::MachineObject::pa_calib_tab, and sync_history_data().

Referenced by update().

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

◆ update()

void Slic3r::GUI::HistoryWindow::update ( MachineObject * obj)
309{
310 if (!obj) return;
311
312 if (obj->cali_version != obj->last_cali_version) {
313 if (obj->has_get_pa_calib_tab) {
315 }
316 }
317
318 // sync when history is not empty
319 if (obj->has_get_pa_calib_tab && m_calib_results_history.empty()) {
321 }
322}
void sync_history_result(MachineObject *obj)
Definition CaliHistoryDialog.cpp:236

References Slic3r::MachineObject::cali_version, curr_obj, Slic3r::MachineObject::has_get_pa_calib_tab, Slic3r::MachineObject::last_cali_version, m_calib_results_history, reqeust_history_result(), and sync_history_result().

Referenced by on_timer().

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

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

Member Data Documentation

◆ curr_obj

◆ m_calib_results_history

std::vector<PACalibResult> Slic3r::GUI::HistoryWindow::m_calib_results_history
protected

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_can_rescale
privateinherited
235{ true };

◆ m_comboBox_nozzle_dia

ComboBox* Slic3r::GUI::HistoryWindow::m_comboBox_nozzle_dia
protected

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxDialog >::m_em_unit
privateinherited

◆ m_extruder_switch_btn

SwitchButton* Slic3r::GUI::HistoryWindow::m_extruder_switch_btn
protected

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_force_rescale
privateinherited
236{ false };

◆ m_history_data_panel

wxPanel* Slic3r::GUI::HistoryWindow::m_history_data_panel
protected

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxDialog >::m_new_font_point_size
privateinherited

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxDialog >::m_normal_font
privateinherited

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_prev_scale_factor
privateinherited

◆ m_refresh_timer

wxTimer* Slic3r::GUI::HistoryWindow::m_refresh_timer { nullptr }
protected
49{ nullptr };

Referenced by HistoryWindow(), and ~HistoryWindow().

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_scale_factor
privateinherited

◆ m_show_history_dialog

bool& Slic3r::GUI::HistoryWindow::m_show_history_dialog
protected

Referenced by HistoryWindow(), and ~HistoryWindow().

◆ m_tips

Label* Slic3r::GUI::HistoryWindow::m_tips
protected

◆ m_ui_op_lock

bool Slic3r::GUI::HistoryWindow::m_ui_op_lock { false }
protected
55{ false };

Referenced by sync_history_data().


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