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

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

Inheritance diagram for Slic3r::GUI::NewCalibrationHistoryDialog:
Collaboration diagram for Slic3r::GUI::NewCalibrationHistoryDialog:

Classes

struct  FilamentInfos

Public Member Functions

 NewCalibrationHistoryDialog (wxWindow *parent, const std::vector< PACalibResult > history_results)
 ~NewCalibrationHistoryDialog ()
void on_dpi_changed (const wxRect &suggested_rect) override
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

virtual void on_ok (wxCommandEvent &event)
virtual void on_cancel (wxCommandEvent &event)
void on_select_nozzle_pos (wxCommandEvent &event)
wxArrayString get_all_filaments (const MachineObject *obj)
int get_extruder_id (int extruder_index)
int get_nozzle_combo_id_code () const
virtual void on_sys_color_changed ()

Protected Attributes

PACalibResult m_new_result
std::vector< PACalibResult > m_history_results
MachineObject * curr_obj
TextInput * m_name_value {nullptr}
TextInput * m_k_value {nullptr}
ComboBox * m_comboBox_nozzle_diameter
ComboBox * m_comboBox_filament
ComboBox * m_comboBox_extruder
ComboBox * m_comboBox_nozzle_type
ComboBox * m_comboBox_nozzle_id {nullptr}
std::map< std::string, FilamentInfos > map_filament_items

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


Class Documentation

◆ Slic3r::GUI::NewCalibrationHistoryDialog::FilamentInfos

struct Slic3r::GUI::NewCalibrationHistoryDialog::FilamentInfos
Collaboration diagram for Slic3r::GUI::NewCalibrationHistoryDialog::FilamentInfos:
Class Members
string filament_id
string setting_id

Constructor & Destructor Documentation

◆ NewCalibrationHistoryDialog()

Slic3r::GUI::NewCalibrationHistoryDialog::NewCalibrationHistoryDialog ( wxWindow * parent,
const std::vector< PACalibResult > history_results )
768 : DPIDialog(parent, wxID_ANY, _L("New Flow Dynamic Calibration"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
769 , m_history_results(history_results)
770{
771 Slic3r::DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager();
772 if (!dev)
773 return;
774 MachineObject *obj = dev->get_selected_machine();
775 if (!obj)
776 return;
777
778 curr_obj = obj;
779
780 this->SetBackgroundColour(*wxWHITE);
781 auto main_sizer = new wxBoxSizer(wxVERTICAL);
782
783 auto top_panel = new wxPanel(this);
784 top_panel->SetBackgroundColour(*wxWHITE);
785 auto panel_sizer = new wxBoxSizer(wxVERTICAL);
786 top_panel->SetSizer(panel_sizer);
787
788 auto flex_sizer = new wxFlexGridSizer(0, 2, FromDIP(15), FromDIP(30));
789 flex_sizer->SetFlexibleDirection(wxBOTH);
790 flex_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
791
792 Label *name_title = new Label(top_panel, _L("Name"));
793 m_name_value = new TextInput(top_panel, "", "", "", wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER);
794
795 // Name
796 flex_sizer->Add(name_title);
797 flex_sizer->Add(m_name_value);
798
799 Label * preset_name_title = new Label(top_panel, _L("Filament"));
800 m_comboBox_filament = new ::ComboBox(top_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, 0, nullptr, wxCB_READONLY);
801
802 wxArrayString filament_items = get_all_filaments(obj);
803 m_comboBox_filament->Set(filament_items);
804 m_comboBox_filament->SetSelection(-1);
805
806 // Filament
807 flex_sizer->Add(preset_name_title);
808 flex_sizer->Add(m_comboBox_filament);
809
810 if (curr_obj->is_multi_extruders())
811 {
812 Label *extruder_name_title = new Label(top_panel, _L("Extruder"));
813 m_comboBox_extruder = new ::ComboBox(top_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, 0, nullptr, wxCB_READONLY);
814 wxArrayString extruder_items;
819 m_comboBox_extruder->Set(extruder_items);
820 m_comboBox_extruder->SetSelection(-1);
821 flex_sizer->Add(extruder_name_title);
822 flex_sizer->Add(m_comboBox_extruder);
823 }
824
825 // Nozzle ID (rack printers only): choose the hotend position this manual record belongs to.
826 if (curr_obj->GetNozzleSystem() && curr_obj->GetNozzleSystem()->GetNozzleRack()
827 && curr_obj->GetNozzleSystem()->GetNozzleRack()->IsSupported()) {
828 auto rack = curr_obj->GetNozzleSystem()->GetNozzleRack();
829 Label *nozzle_id_title = new Label(top_panel, _L("Nozzle ID"));
830 m_comboBox_nozzle_id = new ::ComboBox(top_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, 0, nullptr, wxCB_READONLY);
831 m_comboBox_nozzle_id->Bind(wxEVT_COMMAND_COMBOBOX_SELECTED, &NewCalibrationHistoryDialog::on_select_nozzle_pos, this);
832
833 auto main_extder = curr_obj->GetExtderSystem()->GetExtderById(MAIN_EXTRUDER_ID);
834 int r_nozzle_id = main_extder ? main_extder->GetNozzleId() : 0;
835 auto r_nozzle = curr_obj->GetNozzleSystem()->GetExtNozzle(r_nozzle_id);
836 if (r_nozzle.IsNormal()) {
837 m_comboBox_nozzle_id->Append("R", wxNullBitmap, new int{0});
838 }
839 for (auto nozzle_item : rack->GetRackNozzles()) {
840 if (nozzle_item.second.IsNormal()) {
841 m_comboBox_nozzle_id->Append(wxString::Format("%d", nozzle_item.first + 1), wxNullBitmap, new int{0x10 | nozzle_item.first});
842 }
843 }
844 m_comboBox_nozzle_id->SetSelection(-1);
845 flex_sizer->Add(nozzle_id_title);
846 flex_sizer->Add(m_comboBox_nozzle_id);
847 }
848
850 Label *nozzle_name_title = new Label(top_panel, _L("Nozzle"));
851 m_comboBox_nozzle_type = new ::ComboBox(top_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, 0, nullptr, wxCB_READONLY);
852 // The labels are in display order, not enum order (E3D High Flow is 5 but the fifth label), so each
853 // item carries its NozzleVolumeType as client data.
854 const ConfigOptionDef *nozzle_volume_type_def = print_config_def.get("nozzle_volume_type");
855 if (nozzle_volume_type_def && nozzle_volume_type_def->enum_keys_map) {
856 for (size_t i = 0; i < nozzle_volume_type_def->enum_labels.size(); ++i)
857 m_comboBox_nozzle_type->Append(_L(nozzle_volume_type_def->enum_labels[i]), wxNullBitmap,
858 (void *) (intptr_t) nozzle_volume_type_def->enum_keys_map->at(nozzle_volume_type_def->enum_values[i]));
859 }
860 m_comboBox_nozzle_type->SetSelection(-1);
861 flex_sizer->Add(nozzle_name_title);
862 flex_sizer->Add(m_comboBox_nozzle_type);
863 }
864
865 Label *nozzle_diameter_title = new Label(top_panel, _L("Nozzle Diameter"));
866 m_comboBox_nozzle_diameter = new ::ComboBox(top_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, 0, nullptr, wxCB_READONLY);
867 static std::array<float, 4> nozzle_diameter_list = {0.2f, 0.4f, 0.6f, 0.8f};
868 for (int i = 0; i < nozzle_diameter_list.size(); i++) {
869 m_comboBox_nozzle_diameter->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
870 if (abs(obj->GetExtderSystem()->GetNozzleDiameter(0) - nozzle_diameter_list[i]) < 1e-3) {
871 m_comboBox_nozzle_diameter->SetSelection(i);
872 }
873 }
874
875 // Nozzle Diameter
876 flex_sizer->Add(nozzle_diameter_title);
877 flex_sizer->Add(m_comboBox_nozzle_diameter);
878
879 Label *k_title = new Label(top_panel, _L("Factor K"));
880 auto k_str = wxString::Format("%.3f", m_new_result.k_value);
881 m_k_value = new TextInput(top_panel, k_str, "", "", wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER);
882
883 // Factor K
884 flex_sizer->Add(k_title);
885 flex_sizer->Add(m_k_value);
886
887 panel_sizer->Add(flex_sizer);
888
889 panel_sizer->AddSpacer(FromDIP(25));
890
891 auto dlg_btns = new DialogButtons(top_panel, {"OK", "Cancel"});
892 dlg_btns->GetOK()->Bind(wxEVT_BUTTON, &NewCalibrationHistoryDialog::on_ok, this);
893 dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, &NewCalibrationHistoryDialog::on_cancel, this);
894 panel_sizer->Add(dlg_btns, 0, wxEXPAND, 0);
895
896 main_sizer->Add(top_panel, 1, wxEXPAND | wxALL, FromDIP(20));
897
898 SetSizerAndFit(main_sizer);
899 Layout();
900 CenterOnParent();
901
902 wxGetApp().UpdateDlgDarkUI(this);
903}
#define NEW_HISTORY_DIALOG_INPUT_SIZE
Definition CaliHistoryDialog.cpp:57
#define DEPUTY_EXTRUDER_ID
Definition DevDefs.h:102
#define MAIN_EXTRUDER_ID
Definition DevDefs.h:101
#define _L(s)
Definition OBJ.cpp:34
const ConfigOptionDef * get(const t_config_option_key &opt_key) const
Definition Config.hpp:2662
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
MachineObject * get_selected_machine()
Definition DevManager.cpp:747
TextInput * m_k_value
Definition CaliHistoryDialog.hpp:103
virtual void on_cancel(wxCommandEvent &event)
Definition CaliHistoryDialog.cpp:1035
std::vector< PACalibResult > m_history_results
Definition CaliHistoryDialog.hpp:99
ComboBox * m_comboBox_nozzle_type
Definition CaliHistoryDialog.hpp:108
PACalibResult m_new_result
Definition CaliHistoryDialog.hpp:98
wxArrayString get_all_filaments(const MachineObject *obj)
Definition CaliHistoryDialog.cpp:730
ComboBox * m_comboBox_nozzle_id
Definition CaliHistoryDialog.hpp:109
virtual void on_ok(wxCommandEvent &event)
Definition CaliHistoryDialog.cpp:944
TextInput * m_name_value
Definition CaliHistoryDialog.hpp:102
ComboBox * m_comboBox_nozzle_diameter
Definition CaliHistoryDialog.hpp:105
ComboBox * m_comboBox_filament
Definition CaliHistoryDialog.hpp:106
void on_select_nozzle_pos(wxCommandEvent &event)
Definition CaliHistoryDialog.cpp:925
ComboBox * m_comboBox_extruder
Definition CaliHistoryDialog.hpp:107
MachineObject * curr_obj
Definition CaliHistoryDialog.hpp:100
float nozzle_diameter_list[NOZZLE_LIST_COUNT]
Definition CalibrationWizardPresetPage.cpp:859
bool support_nozzle_volume(const MachineObject *obj)
Definition CaliHistoryDialog.cpp:74
@ Extruder
Definition DevConfigUtil.h:34
const PrintConfigDef print_config_def
Definition PrintConfig.cpp:10099
@ TitleCase
Definition DevConfigUtil.h:41

References NewCalibrationHistoryDialog(), _L, curr_obj, DEPUTY_EXTRUDER_ID, Slic3r::ConfigOptionDef::enum_keys_map, Slic3r::ConfigOptionDef::enum_labels, Slic3r::ConfigOptionDef::enum_values, Slic3r::Extruder, get_all_filaments(), Slic3r::DeviceManager::get_selected_machine(), Slic3r::DevPrinterConfigUtil::get_toolhead_display_name(), Slic3r::MachineObject::GetExtderSystem(), Slic3r::DevExtderSystem::GetNozzleDiameter(), Slic3r::GUI::DialogButtons::GetOK(), m_comboBox_extruder, m_comboBox_filament, m_comboBox_nozzle_diameter, m_comboBox_nozzle_id, m_comboBox_nozzle_type, m_history_results, m_k_value, m_name_value, m_new_result, MAIN_EXTRUDER_ID, NEW_HISTORY_DIALOG_INPUT_SIZE, Slic3r::GUI::nozzle_diameter_list, on_cancel(), on_ok(), on_select_nozzle_pos(), Slic3r::print_config_def, Slic3r::GUI::support_nozzle_volume(), and Slic3r::TitleCase.

Referenced by NewCalibrationHistoryDialog().

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

◆ ~NewCalibrationHistoryDialog()

Slic3r::GUI::NewCalibrationHistoryDialog::~NewCalibrationHistoryDialog ( )
inline
84{};

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; }

◆ 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_all_filaments()

wxArrayString Slic3r::GUI::NewCalibrationHistoryDialog::get_all_filaments ( const MachineObject * obj)
protected
731{
732 PresetBundle *preset_bundle = wxGetApp().preset_bundle;
733
734 wxArrayString filament_items;
735 std::set<std::string> filament_id_set;
736 std::ostringstream stream;
737 // If the machine didn't report a nozzle diameter (0.0 = unknown), fall back to the currently
738 // selected printer preset so the filament list isn't empty.
739 float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0);
740 if (machine_diameter == 0.0f && preset_bundle) {
741 const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter");
742 if (opt) machine_diameter = static_cast<const ConfigOptionFloats *>(opt)->values[0];
743 }
744 stream << std::fixed << std::setprecision(1) << machine_diameter;
745 std::string nozzle_diameter_str = stream.str();
746
747 if (preset_bundle) {
748 BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
749 for (Preset *filament_it : preset_bundle->get_filament_presets_for_machine(
750 DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str, obj->is_support_user_preset)) {
751 if (!filament_id_set.insert(filament_it->filament_id).second)
752 continue;
753 const std::string alias = preset_bundle->filaments.get_preset_alias(*filament_it, true);
754 if (alias.empty())
755 continue;
756
757 filament_items.push_back(alias);
758 FilamentInfos filament_infos;
759 filament_infos.filament_id = filament_it->filament_id;
760 filament_infos.setting_id = filament_it->setting_id;
761 map_filament_items[alias] = filament_infos;
762 }
763 }
764 return filament_items;
765}
static std::string get_printer_display_name(const std::string &type_str)
Definition DevConfigUtil.h:71
std::map< std::string, FilamentInfos > map_filament_items
Definition CaliHistoryDialog.hpp:116
std::string filament_id
Definition CaliHistoryDialog.hpp:113
void trace(unsigned int level, const char *message)
Definition utils.cpp:247
@ Preset
Definition calib.hpp:39
ConfigOptionFloatsTempl< false > ConfigOptionFloats
Definition Config.hpp:1015

References Slic3r::Preset::config, Slic3r::GUI::NewCalibrationHistoryDialog::FilamentInfos::filament_id, Slic3r::PresetBundle::filaments, get_all_filaments(), Slic3r::PresetBundle::get_filament_presets_for_machine(), Slic3r::PresetCollection::get_preset_alias(), Slic3r::DevPrinterConfigUtil::get_printer_display_name(), Slic3r::PresetCollection::get_selected_preset(), Slic3r::MachineObject::GetExtderSystem(), Slic3r::DevExtderSystem::GetNozzleDiameter(), Slic3r::MachineObject::is_support_user_preset, map_filament_items, Slic3r::ConfigBase::option(), Slic3r::MachineObject::printer_type, Slic3r::PresetBundle::printers, Slic3r::GUI::NewCalibrationHistoryDialog::FilamentInfos::setting_id, Slic3r::PresetCollection::size(), and Slic3r::trace().

Referenced by NewCalibrationHistoryDialog(), and get_all_filaments().

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

◆ get_extruder_id()

int Slic3r::GUI::NewCalibrationHistoryDialog::get_extruder_id ( int extruder_index)
protected
906{
907 if ((extruder_index != -1) && curr_obj->is_multi_extruders()) {
908 return curr_obj->is_main_extruder_on_left() ? extruder_index : (1 - extruder_index);
909 }
910 return 0;
911}

References curr_obj.

Referenced by on_ok().

Here is the caller graph for this function:

◆ get_nozzle_combo_id_code()

int Slic3r::GUI::NewCalibrationHistoryDialog::get_nozzle_combo_id_code ( ) const
protected
914{
916 return -1;
917
918 auto sel = m_comboBox_nozzle_id->GetSelection();
919 if (sel != wxNOT_FOUND && m_comboBox_nozzle_id->GetClientData(sel))
920 return *(reinterpret_cast<int*>(m_comboBox_nozzle_id->GetClientData(sel)));
921
922 return -1;
923}

References m_comboBox_nozzle_id.

Referenced by on_ok(), and on_select_nozzle_pos().

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_cancel()

void Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel ( wxCommandEvent & event)
protectedvirtual
1036{
1037 EndModal(wxID_CANCEL);
1038}
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305

References Slic3r::GUI::DPIDialog::EndModal(), and on_cancel().

Referenced by NewCalibrationHistoryDialog(), and on_cancel().

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

◆ on_dpi_changed()

void Slic3r::GUI::NewCalibrationHistoryDialog::on_dpi_changed ( const wxRect & suggested_rect)
inlineoverridevirtual

◆ on_ok()

void Slic3r::GUI::NewCalibrationHistoryDialog::on_ok ( wxCommandEvent & event)
protectedvirtual
945{
946 wxString name = m_name_value->GetTextCtrl()->GetValue();
948 return;
949
950 float k = 0.0f;
951 if (!CalibUtils::validate_input_k_value(m_k_value->GetTextCtrl()->GetValue(), &k)) {
952 MessageDialog msg_dlg(nullptr, wxString::Format(_L("Please input a valid value (K in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE), wxEmptyString, wxICON_WARNING | wxOK);
953 msg_dlg.ShowModal();
954 return;
955 }
956 wxString k_str = wxString::Format("%.3f", k);
957 m_k_value->GetTextCtrl()->SetValue(k_str);
958
959 double nozzle_value = 0.0;
960 wxString nozzle_value_str = m_comboBox_nozzle_diameter->GetValue();
961 nozzle_value_str.ToDouble(&nozzle_value);
962
963 std::string filament_name = m_comboBox_filament->GetValue().ToStdString();
964 if (filament_name.empty()) {
965 MessageDialog msg_dlg(nullptr, _L("The filament must be selected."), wxEmptyString, wxICON_WARNING | wxOK);
966 msg_dlg.ShowModal();
967 return;
968 }
969
970 if (curr_obj->is_multi_extruders()) {
971 std::string extruder_name = m_comboBox_extruder->GetValue().ToStdString();
972 if (extruder_name.empty()) {
973 MessageDialog msg_dlg(nullptr, _L("The extruder must be selected."), wxEmptyString, wxICON_WARNING | wxOK);
974 msg_dlg.ShowModal();
975 return;
976 }
977 m_new_result.extruder_id = get_extruder_id(m_comboBox_extruder->GetSelection());
978 }
979
981 std::string nozzle_name = m_comboBox_nozzle_type->GetValue().ToStdString();
982 if (nozzle_name.empty()) {
983 MessageDialog msg_dlg(nullptr, _L("The nozzle must be selected."), wxEmptyString, wxICON_WARNING | wxOK);
984 msg_dlg.ShowModal();
985 return;
986 }
987 m_new_result.nozzle_volume_type = NozzleVolumeType(intptr_t(m_comboBox_nozzle_type->GetClientData(m_comboBox_nozzle_type->GetSelection())));
988 }
989
990 auto filament_item = map_filament_items[m_comboBox_filament->GetValue().ToStdString()];
991 std::string filament_id = filament_item.filament_id;
992 std::string setting_id = filament_item.setting_id;
993
994 m_new_result.name = name.ToUTF8().data();
995 m_new_result.k_value = k;
996 m_new_result.tray_id = -1;
997 m_new_result.cali_idx = -1;
998
999 m_new_result.nozzle_diameter = nozzle_value;
1000 m_new_result.filament_id = filament_id;
1001 m_new_result.setting_id = setting_id;
1002 m_new_result.nozzle_pos_id = get_nozzle_combo_id_code();
1003
1004 // Check for duplicate names from history
1005 {
1006 auto iter = std::find_if(m_history_results.begin(), m_history_results.end(), [this](const PACalibResult &item) {
1007 bool has_same_name = item.name == m_new_result.name && item.filament_id == m_new_result.filament_id;
1008 if (curr_obj && curr_obj->is_multi_extruders()) {
1009 has_same_name &= (item.extruder_id == m_new_result.extruder_id);
1010 }
1012 has_same_name &= (item.nozzle_volume_type == m_new_result.nozzle_volume_type);
1013 }
1014 return has_same_name;
1015 });
1016
1017 if (iter != m_history_results.end()) {
1018
1019 wxString duplicate_name_info = wxString::Format(_L("There is already a previous calibration result with the same name: %s. Only one result with a name is saved. Are you sure you want to overwrite the previous result\?"), m_new_result.name);
1020
1021 duplicate_name_info = wxString::Format(_L("Within the same extruder, the name(%s) must be unique when the filament type, nozzle diameter, and nozzle flow are the same.\n"
1022 "Are you sure you want to override the historical result?"), m_new_result.name);
1023
1024 MessageDialog msg_dlg(nullptr, duplicate_name_info, wxEmptyString, wxICON_WARNING | wxYES_NO);
1025 if (msg_dlg.ShowModal() != wxID_YES)
1026 return;
1027 }
1028 }
1029
1031
1032 EndModal(wxID_OK);
1033}
static bool validate_input_k_value(wxString k_text, float *output_value)
Definition CalibUtils.cpp:452
static bool validate_input_name(wxString name)
Definition CalibUtils.cpp:434
static void set_PA_calib_result(const std::vector< PACalibResult > &pa_calib_values, bool is_auto_cali)
Definition CalibUtils.cpp:634
int get_extruder_id(int extruder_index)
Definition CaliHistoryDialog.cpp:905
int get_nozzle_combo_id_code() const
Definition CaliHistoryDialog.cpp:913
const double MAX_PA_K_VALUE
Definition CalibUtils.cpp:68
const double MIN_PA_K_VALUE
Definition CalibUtils.cpp:67
NozzleVolumeType
Definition PrintConfig.hpp:618

References _L, curr_obj, get_extruder_id(), get_nozzle_combo_id_code(), m_comboBox_extruder, m_comboBox_filament, m_comboBox_nozzle_diameter, m_comboBox_nozzle_type, m_history_results, m_k_value, m_name_value, m_new_result, map_filament_items, Slic3r::GUI::MAX_PA_K_VALUE, Slic3r::GUI::MIN_PA_K_VALUE, Slic3r::PACalibResult::nozzle_volume_type, Slic3r::GUI::DPIAware< P >::ShowModal(), Slic3r::GUI::support_nozzle_volume(), Slic3r::GUI::CalibUtils::validate_input_k_value(), and Slic3r::GUI::CalibUtils::validate_input_name().

Referenced by NewCalibrationHistoryDialog().

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

◆ on_select_nozzle_pos()

void Slic3r::GUI::NewCalibrationHistoryDialog::on_select_nozzle_pos ( wxCommandEvent & event)
protected
926{
927 // Mirror the picked hotend's flow onto the nozzle-type combo.
928 if (!curr_obj || !m_comboBox_nozzle_id || !m_comboBox_nozzle_type || !curr_obj->GetNozzleSystem())
929 return;
930
932 if (pos < 0)
933 return;
934
935 DevNozzle nozzle = curr_obj->GetNozzleSystem()->GetNozzleByPosId(pos);
936 if (nozzle.IsNormal()) {
937 NozzleVolumeType volume_type = DevNozzle::ToNozzleVolumeType(nozzle.GetNozzleFlowType());
938 for (unsigned int i = 0; i < m_comboBox_nozzle_type->GetCount(); ++i)
939 if (NozzleVolumeType(intptr_t(m_comboBox_nozzle_type->GetClientData(i))) == volume_type)
940 m_comboBox_nozzle_type->SetSelection(i);
941 }
942}
Vec3d pos(const Pt &p)
Definition ReprojectPointsOnMesh.hpp:16
static NozzleVolumeType ToNozzleVolumeType(const NozzleFlowType &type)
Definition DevNozzleSystem.cpp:52

References curr_obj, get_nozzle_combo_id_code(), Slic3r::DevNozzle::GetNozzleFlowType(), Slic3r::DevNozzle::IsNormal(), m_comboBox_nozzle_id, m_comboBox_nozzle_type, and Slic3r::DevNozzle::ToNozzleVolumeType().

Referenced by NewCalibrationHistoryDialog().

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

◆ on_sys_color_changed()

◆ prev_scale_factor()

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

◆ 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()

◆ 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

MachineObject* Slic3r::GUI::NewCalibrationHistoryDialog::curr_obj
protected

◆ m_can_rescale

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

◆ m_comboBox_extruder

ComboBox* Slic3r::GUI::NewCalibrationHistoryDialog::m_comboBox_extruder
protected

◆ m_comboBox_filament

ComboBox* Slic3r::GUI::NewCalibrationHistoryDialog::m_comboBox_filament
protected

◆ m_comboBox_nozzle_diameter

ComboBox* Slic3r::GUI::NewCalibrationHistoryDialog::m_comboBox_nozzle_diameter
protected

◆ m_comboBox_nozzle_id

ComboBox* Slic3r::GUI::NewCalibrationHistoryDialog::m_comboBox_nozzle_id {nullptr}
protected

◆ m_comboBox_nozzle_type

ComboBox* Slic3r::GUI::NewCalibrationHistoryDialog::m_comboBox_nozzle_type
protected

◆ m_em_unit

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

◆ m_force_rescale

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

◆ m_history_results

std::vector<PACalibResult> Slic3r::GUI::NewCalibrationHistoryDialog::m_history_results
protected

◆ m_k_value

TextInput* Slic3r::GUI::NewCalibrationHistoryDialog::m_k_value {nullptr}
protected
103{nullptr};

Referenced by NewCalibrationHistoryDialog(), and on_ok().

◆ m_name_value

TextInput* Slic3r::GUI::NewCalibrationHistoryDialog::m_name_value {nullptr}
protected
102{nullptr};

Referenced by NewCalibrationHistoryDialog(), and on_ok().

◆ m_new_font_point_size

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

◆ m_new_result

PACalibResult Slic3r::GUI::NewCalibrationHistoryDialog::m_new_result
protected

◆ 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_scale_factor

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

◆ map_filament_items

std::map<std::string, FilamentInfos> Slic3r::GUI::NewCalibrationHistoryDialog::map_filament_items
protected

Referenced by get_all_filaments(), and on_ok().


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