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

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

Inheritance diagram for Slic3r::GUI::EditGCodeDialog:
Collaboration diagram for Slic3r::GUI::EditGCodeDialog:

Public Member Functions

 EditGCodeDialog (wxWindow *parent, const std::string &key, const std::string &value)
 ~EditGCodeDialog ()
std::string get_edited_gcode () const
void on_search_update ()
void init_params_list (const std::string &custom_gcode_name)
wxDataViewItem add_presets_placeholders ()
void add_selected_value_to_gcode ()
void bind_list_and_button ()
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 on_dpi_changed (const wxRect &suggested_rect) override
void on_sys_color_changed () override
void selection_changed (wxDataViewEvent &evt)

Protected Attributes

std::unordered_map< int, Button * > m_button_list

Private Member Functions

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

Private Attributes

ParamsViewCtrl * m_params_list {nullptr}
ScalableButton * m_add_btn {nullptr}
wxTextCtrl * m_gcode_editor {nullptr}
wxStaticText * m_param_label {nullptr}
wxStaticText * m_param_description {nullptr}
wxSearchCtrl * m_search_bar {nullptr}
ReadOnlySlicingStatesConfigDef cgp_ro_slicing_states_config_def
ReadWriteSlicingStatesConfigDef cgp_rw_slicing_states_config_def
OtherSlicingStatesConfigDef cgp_other_slicing_states_config_def
PrintStatisticsConfigDef cgp_print_statistics_config_def
ObjectsInfoConfigDef cgp_objects_info_config_def
DimensionsConfigDef cgp_dimensions_config_def
TemperaturesConfigDef cgp_temperatures_config_def
TimestampsConfigDef cgp_timestamps_config_def
OtherPresetsConfigDef cgp_other_presets_config_def
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

◆ EditGCodeDialog()

Slic3r::GUI::EditGCodeDialog::EditGCodeDialog ( wxWindow * parent,
const std::string & key,
const std::string & value )
58 :
59 DPIDialog(parent, wxID_ANY, format_wxstr(_L("Edit Custom G-code (%1%)"), key), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
60{
61 SetFont(wxGetApp().normal_font());
62 SetBackgroundColour(*wxWHITE);
63 wxGetApp().UpdateDarkUI(this);
64 wxGetApp().UpdateDlgDarkUI(this);
65
66 int border = 10;
67 int em = em_unit();
68
69 wxStaticText* label_top = new wxStaticText(this, wxID_ANY, _L("Built-in placeholders (Double click item to add to G-code)") + ":");
70
71 auto* grid_sizer = new wxFlexGridSizer(1, 3, 5, 15);
72 grid_sizer->SetFlexibleDirection(wxBOTH);
73
74 auto* param_sizer = new wxBoxSizer(wxVERTICAL);
75
76 m_search_bar = new wxSearchCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
77 m_search_bar->ShowSearchButton(true);
78 m_search_bar->ShowCancelButton(true);
79 m_search_bar->SetDescriptiveText(_L("Search G-code placeholders"));
80 m_search_bar->SetForegroundColour(*wxBLACK);
81 m_search_bar->SetBackgroundColour(*wxWHITE);
82 wxGetApp().UpdateDarkUI(m_search_bar);
83
84 m_search_bar->Bind(wxEVT_SET_FOCUS, [](wxFocusEvent&) {
85// this->on_search_update();
86 });
87 m_search_bar->Bind(wxEVT_COMMAND_TEXT_UPDATED, [this](wxCommandEvent&) {
88 this->on_search_update();
89 });
90
91 param_sizer->Add(m_search_bar, 0, wxEXPAND | wxALL, border);
92
93 m_params_list = new ParamsViewCtrl(this, wxDefaultSize);
94 m_params_list->SetBackgroundColour(*wxWHITE);
95 m_params_list->SetFont(wxGetApp().code_font());
96 wxGetApp().UpdateDarkUI(m_params_list);
97 param_sizer->Add(m_params_list, 1, wxEXPAND | wxALL, border);
98
99 m_add_btn = new ScalableButton(this, wxID_ANY, "add_copies");
100 m_add_btn->SetToolTip(_L("Add selected placeholder to G-code"));
101
102 m_gcode_editor = new wxTextCtrl(this, wxID_ANY, wxString::FromUTF8(value), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE
103 #ifdef _WIN32
104 | wxBORDER_SIMPLE
105 #endif
106 );
107
108 m_gcode_editor->SetFont(wxGetApp().code_font());
109 m_gcode_editor->SetBackgroundColour(*wxWHITE);
110 m_gcode_editor->SetInsertionPointEnd();
111 wxGetApp().UpdateDarkUI(m_gcode_editor);
112
113 grid_sizer->Add(param_sizer, 1, wxEXPAND);
114 grid_sizer->Add(m_add_btn, 0, wxALIGN_CENTER_VERTICAL);
115 grid_sizer->Add(m_gcode_editor, 2, wxEXPAND);
116
117 grid_sizer->AddGrowableRow(0, 1);
118 grid_sizer->AddGrowableCol(0, 1);
119 grid_sizer->AddGrowableCol(2, 2);
120
121 m_param_label = new wxStaticText(this, wxID_ANY, _L("Select placeholder"));
122 m_param_label->SetFont(wxGetApp().bold_font());
123
124 m_param_description = new wxStaticText(this, wxID_ANY, wxEmptyString);
125
126 auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"});
127
128 wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
129
130 topSizer->Add(label_top , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
131 topSizer->Add(grid_sizer , 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
132 topSizer->Add(m_param_label , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
133 topSizer->Add(m_param_description , 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, border);
134 topSizer->Add(dlg_btns , 0, wxEXPAND);
135
136 SetSizer(topSizer);
137 topSizer->SetSizeHints(this);
138
139 this->Fit();
140
141 fit_in_display(*this, {100 * em, 70 * em});
142
143 this->Layout();
144
145 this->CenterOnScreen();
146
147 init_params_list(key);
149}
#define _L(s)
Definition OBJ.cpp:34
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
int em_unit() const
Definition GUI_Utils.hpp:203
const wxFont & normal_font() const
Definition GUI_Utils.hpp:205
ParamsViewCtrl * m_params_list
Definition EditGCodeDialog.hpp:37
void init_params_list(const std::string &custom_gcode_name)
Definition EditGCodeDialog.cpp:178
wxStaticText * m_param_label
Definition EditGCodeDialog.hpp:40
void bind_list_and_button()
Definition EditGCodeDialog.cpp:428
wxTextCtrl * m_gcode_editor
Definition EditGCodeDialog.hpp:39
wxStaticText * m_param_description
Definition EditGCodeDialog.hpp:41
wxSearchCtrl * m_search_bar
Definition EditGCodeDialog.hpp:42
ScalableButton * m_add_btn
Definition EditGCodeDialog.hpp:38
void on_search_update()
Definition EditGCodeDialog.cpp:164
wxString format_wxstr(const char *fmt, TArgs &&... args)
Definition format.hpp:22
void fit_in_display(wxTopLevelWindow &window, wxSize desired_size)
Make sure the given window fits inside current display.
Definition GUI_Utils.cpp:551

References _L, bind_list_and_button(), Slic3r::GUI::DPIAware< wxDialog >::em_unit(), Slic3r::GUI::fit_in_display(), Slic3r::GUI::format_wxstr(), init_params_list(), m_add_btn, m_gcode_editor, m_param_description, m_param_label, m_params_list, m_search_bar, Slic3r::GUI::DPIAware< wxDialog >::normal_font(), on_search_update(), and wxStaticText.

Here is the call graph for this function:

◆ ~EditGCodeDialog()

Slic3r::GUI::EditGCodeDialog::~EditGCodeDialog ( )
152{
153 // To avoid redundant process of wxEVT_DATAVIEW_SELECTION_CHANGED after dialog distroing (on Linux)
154 // unbind this event from params_list
155 m_params_list->Unbind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this);
156}
void selection_changed(wxDataViewEvent &evt)
Definition EditGCodeDialog.cpp:359

References m_params_list, and selection_changed().

Here is the call graph for this function:

Member Function Documentation

◆ add_presets_placeholders()

wxDataViewItem Slic3r::GUI::EditGCodeDialog::add_presets_placeholders ( )
271{
272 auto get_set_from_vec = [](const std::vector<std::string>&vec) {
273 return std::set(vec.begin(), vec.end());
274 };
275
276 const bool is_fff = wxGetApp().plater()->printer_technology() == ptFFF;
277 const std::set<std::string> print_options = get_set_from_vec(is_fff ? Preset::print_options() : Preset::sla_print_options());
278 const std::set<std::string> material_options = get_set_from_vec(is_fff ? Preset::filament_options() : Preset::sla_material_options());
279 const std::set<std::string> printer_options = get_set_from_vec(is_fff ? Preset::printer_options() : Preset::sla_printer_options());
280 const auto& full_config = wxGetApp().preset_bundle->full_config();
281 const auto& tab_list = wxGetApp().tabs_list;
282
283 Tab* tab_print = nullptr;
284 Tab* tab_filament = nullptr;
285 Tab* tab_printer = nullptr;
286 for (const auto tab : tab_list) {
287 if (tab->m_type == Preset::TYPE_PRINT)
288 tab_print = tab;
289 else if (tab->m_type == Preset::TYPE_FILAMENT)
290 tab_filament = tab;
291 else if (tab->m_type == Preset::TYPE_PRINTER)
292 tab_printer = tab;
293 }
294
295
296 // Orca: create subgroups from the pages of the tabs
297 auto init_from_tab = [this, full_config](wxDataViewItem parent, Tab* tab, const std::set<std::string>& preset_keys){
298 std::set extra_keys(preset_keys);
299 for (const auto& page : tab->m_pages) {
300 // ORCA: Pull icons from tabs for subgroups, icons are hidden on tabs
301 std::string icon_name = "empty"; // use empty icon if not defined
302 for (const auto& icons_list : tab->m_icon_index) {
303 if (icons_list.second == page->iconID()) {
304 icon_name = icons_list.first;
305 break;
306 }
307 }
308 wxDataViewItem subgroup = m_params_list->AppendSubGroup(parent, page->title(), icon_name); // Use icon instead empty icon
309
310 std::set<std::string> opt_keys;
311 for (const auto& optgroup : page->m_optgroups)
312 for (const auto& opt : optgroup->opt_map())
313 opt_keys.emplace(opt.first);
314
315 for (const auto& opt_key : opt_keys)
316 if (const ConfigOption* optptr = full_config.optptr(opt_key)) {
317 extra_keys.erase(opt_key);
318 m_params_list->AppendParam(subgroup, optptr->is_scalar() ? ParamType::Scalar : ParamType::Vector, opt_key);
319 }
320 }
321 for (auto opt_key : extra_keys)
322 if (const ConfigOption* optptr = full_config.optptr(opt_key))
323 m_params_list->AppendParam(parent, optptr->is_scalar() ? ParamType::Scalar : ParamType::Vector, opt_key);
324 };
325
326 wxDataViewItem group = m_params_list->AppendGroup(_L("Presets"), "cog");
327
328 wxDataViewItem print = m_params_list->AppendSubGroup(group, _L("Print settings"), "process");
329 init_from_tab(print, tab_print, print_options);
330
331 wxDataViewItem material = m_params_list->AppendSubGroup(group, _(is_fff ? L("Filament settings") : L("SLA Materials settings")), is_fff ? "filament" : "resin");
332 init_from_tab(material, tab_filament, material_options);
333
334 wxDataViewItem printer = m_params_list->AppendSubGroup(group, _L("Printer settings"), is_fff ? "printer" : "sla_printer");
335 init_from_tab(printer, tab_printer, printer_options);
336
337 return group;
338}
#define _(s)
Definition 3mf.cpp:306
#define L(s)
Definition ExtrusionEntity.cpp:25
static const std::vector< std::string > & sla_printer_options()
Definition Preset.cpp:1713
static const std::vector< std::string > & sla_material_options()
Definition Preset.cpp:1712
static const std::vector< std::string > & print_options()
Definition Preset.cpp:1705
static const std::vector< std::string > & printer_options()
Definition Preset.cpp:1715
static const std::vector< std::string > & filament_options()
Definition Preset.cpp:1706
@ TYPE_PRINTER
Definition Preset.hpp:250
@ TYPE_PRINT
Definition Preset.hpp:246
@ TYPE_FILAMENT
Definition Preset.hpp:248
static const std::vector< std::string > & sla_print_options()
Definition Preset.cpp:1711
@ Vector
Definition EditGCodeDialog.hpp:89
@ Scalar
Definition EditGCodeDialog.hpp:88
@ ptFFF
Definition Config.hpp:231

References _, _L, Slic3r::Preset::filament_options(), L, m_params_list, Slic3r::Preset::print_options(), Slic3r::Preset::printer_options(), Slic3r::ptFFF, Slic3r::GUI::Scalar, Slic3r::Preset::sla_material_options(), Slic3r::Preset::sla_print_options(), Slic3r::Preset::sla_printer_options(), Slic3r::Preset::TYPE_FILAMENT, Slic3r::Preset::TYPE_PRINT, Slic3r::Preset::TYPE_PRINTER, and Slic3r::GUI::Vector.

Referenced by init_params_list().

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

◆ add_selected_value_to_gcode()

void Slic3r::GUI::EditGCodeDialog::add_selected_value_to_gcode ( )
341{
342 const wxString val = m_params_list->GetSelectedValue();
343 if (val.IsEmpty())
344 return;
345
346 m_gcode_editor->WriteText(m_gcode_editor->GetInsertionPoint() == m_gcode_editor->GetLastPosition() ? "\n" + val : val);
347
348 if (val.Last() == ']') {
349 const long new_pos = m_gcode_editor->GetInsertionPoint();
350 if (val[val.Len() - 2] == '[')
351 m_gcode_editor->SetInsertionPoint(new_pos - 1); // set cursor into brackets
352 else
353 m_gcode_editor->SetSelection(new_pos - 17, new_pos - 1); // select "current_extruder"
354 }
355
356 m_gcode_editor->SetFocus();
357}

References m_gcode_editor, and m_params_list.

Referenced by bind_list_and_button().

Here is the caller graph for this function:

◆ bind_list_and_button()

void Slic3r::GUI::EditGCodeDialog::bind_list_and_button ( )
429{
430 m_params_list->Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, &EditGCodeDialog::selection_changed, this);
431
432 m_params_list->Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& ) {
434 });
435
436 m_add_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
438 });
439}
void add_selected_value_to_gcode()
Definition EditGCodeDialog.cpp:340

References add_selected_value_to_gcode(), m_add_btn, m_params_list, and selection_changed().

Referenced by EditGCodeDialog().

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

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

std::string Slic3r::GUI::EditGCodeDialog::get_edited_gcode ( ) const
159{
160 wxString text = m_gcode_editor->GetValue();
161 return std::string(text.ToUTF8());
162}

References m_gcode_editor.

Referenced by Slic3r::GUI::Tab::edit_custom_gcode().

Here is the caller graph for this function:

◆ init_params_list()

void Slic3r::GUI::EditGCodeDialog::init_params_list ( const std::string & custom_gcode_name)
179{
180 const auto& custom_gcode_placeholders = custom_gcode_specific_placeholders();
181 const auto& specific_params = custom_gcode_placeholders.count(custom_gcode_name) > 0 ?
182 custom_gcode_placeholders.at(custom_gcode_name) : t_config_option_keys({});
183
184 // Add slicing states placeholders
185
186 wxDataViewItem slicing_state = m_params_list->AppendGroup(_L("[Global] Slicing State"), "custom-gcode_slicing-state_global");
188 wxDataViewItem read_only = m_params_list->AppendSubGroup(slicing_state, _L("Read Only"), "lock_closed");
189 for (const auto& [opt_key, def]: cgp_ro_slicing_states_config_def.options)
190 m_params_list->AppendParam(read_only, get_type(opt_key, def), opt_key);
191 }
192
194 wxDataViewItem read_write = m_params_list->AppendSubGroup(slicing_state, _L("Read Write"), "lock_open");
195 for (const auto& [opt_key, def] : cgp_rw_slicing_states_config_def.options)
196 m_params_list->AppendParam(read_write, get_type(opt_key, def), opt_key);
197 }
198
199 // add other universal params, which are related to slicing state
201 slicing_state = m_params_list->AppendGroup(_L("Slicing State"), "custom-gcode_slicing-state");
202 for (const auto& [opt_key, def] : cgp_other_slicing_states_config_def.options)
203 m_params_list->AppendParam(slicing_state, get_type(opt_key, def), opt_key);
204 }
205
206 // Add universal placeholders
207
208 {
209 // Add print statistics subgroup
210
211 if (!cgp_print_statistics_config_def.empty()) {
212 wxDataViewItem statistics = m_params_list->AppendGroup(_L("Print Statistics"), "custom-gcode_stats");
213 for (const auto& [opt_key, def] : cgp_print_statistics_config_def.options)
214 m_params_list->AppendParam(statistics, get_type(opt_key, def), opt_key);
215 }
216
217 // Add objects info subgroup
218
219 if (!cgp_objects_info_config_def.empty()) {
220 wxDataViewItem objects_info = m_params_list->AppendGroup(_L("Objects Info"), "custom-gcode_object-info");
221 for (const auto& [opt_key, def] : cgp_objects_info_config_def.options)
222 m_params_list->AppendParam(objects_info, get_type(opt_key, def), opt_key);
223 }
224
225 // Add dimensions subgroup
226
227 if (!cgp_dimensions_config_def.empty()) {
228 wxDataViewItem dimensions = m_params_list->AppendGroup(_L("Dimensions"), "custom-gcode_measure");
229 for (const auto& [opt_key, def] : cgp_dimensions_config_def.options)
230 m_params_list->AppendParam(dimensions, get_type(opt_key, def), opt_key);
231 }
232
233 // Add temperature subgroup
234
235 if (!cgp_temperatures_config_def.empty()) {
236 wxDataViewItem temperatures = m_params_list->AppendGroup(_L("Temperatures"), "custom-gcode_temperature");
237 for (const auto& [opt_key, def] : cgp_temperatures_config_def.options)
238 m_params_list->AppendParam(temperatures, get_type(opt_key, def), opt_key);
239 }
240
241 // Add timestamp subgroup
242
243 if (!cgp_timestamps_config_def.empty()) {
244 wxDataViewItem dimensions = m_params_list->AppendGroup(_L("Timestamps"), "custom-gcode_time");
245 for (const auto& [opt_key, def] : cgp_timestamps_config_def.options)
246 m_params_list->AppendParam(dimensions, get_type(opt_key, def), opt_key);
247 }
248 }
249
250 // Add specific placeholders
251
252 if (!specific_params.empty()) {
253 wxDataViewItem group = m_params_list->AppendGroup(format_wxstr(_L("Specific for %1%"), custom_gcode_name), "custom-gcode_gcode");
254 for (const auto& opt_key : specific_params)
255 if (auto def = custom_gcode_specific_config_def.get(opt_key); def && def->type != coNone) {
256 m_params_list->AppendParam(group, get_type(opt_key, *def), opt_key);
257 }
258 m_params_list->Expand(group);
259 }
260
261 // Add placeholders from presets
262
263 wxDataViewItem presets = add_presets_placeholders();
264 // add other params which are related to presets
265 if (!cgp_other_presets_config_def.empty())
266 for (const auto& [opt_key, def] : cgp_other_presets_config_def.options)
267 m_params_list->AppendParam(presets, get_type(opt_key, def), opt_key);
268}
const ConfigOptionDef * get(const t_config_option_key &opt_key) const
Definition Config.hpp:2662
ConfigOptionType type
Definition Config.hpp:2344
OtherPresetsConfigDef cgp_other_presets_config_def
Definition EditGCodeDialog.hpp:52
TemperaturesConfigDef cgp_temperatures_config_def
Definition EditGCodeDialog.hpp:50
wxDataViewItem add_presets_placeholders()
Definition EditGCodeDialog.cpp:270
TimestampsConfigDef cgp_timestamps_config_def
Definition EditGCodeDialog.hpp:51
OtherSlicingStatesConfigDef cgp_other_slicing_states_config_def
Definition EditGCodeDialog.hpp:46
ReadWriteSlicingStatesConfigDef cgp_rw_slicing_states_config_def
Definition EditGCodeDialog.hpp:45
DimensionsConfigDef cgp_dimensions_config_def
Definition EditGCodeDialog.hpp:49
ReadOnlySlicingStatesConfigDef cgp_ro_slicing_states_config_def
Definition EditGCodeDialog.hpp:44
ObjectsInfoConfigDef cgp_objects_info_config_def
Definition EditGCodeDialog.hpp:48
PrintStatisticsConfigDef cgp_print_statistics_config_def
Definition EditGCodeDialog.hpp:47
static ParamType get_type(const std::string &opt_key, const ConfigOptionDef &opt_def)
Definition EditGCodeDialog.cpp:173
std::vector< std::string > t_config_option_keys
Definition Config.hpp:97
const std::map< t_custom_gcode_key, t_config_option_keys > & custom_gcode_specific_placeholders()
Definition PrintConfig.cpp:13669
@ coNone
Definition Config.hpp:182
const CustomGcodeSpecificConfigDef custom_gcode_specific_config_def
Definition PrintConfig.cpp:13806

References _L, add_presets_placeholders(), cgp_dimensions_config_def, cgp_objects_info_config_def, cgp_other_presets_config_def, cgp_other_slicing_states_config_def, cgp_print_statistics_config_def, cgp_ro_slicing_states_config_def, cgp_rw_slicing_states_config_def, cgp_temperatures_config_def, cgp_timestamps_config_def, Slic3r::coNone, Slic3r::custom_gcode_specific_config_def, Slic3r::custom_gcode_specific_placeholders(), Slic3r::GUI::format_wxstr(), Slic3r::GUI::get_type(), and m_params_list.

Referenced by EditGCodeDialog().

Here is the call graph for this function:
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_dpi_changed()

void Slic3r::GUI::EditGCodeDialog::on_dpi_changed ( const wxRect & suggested_rect)
overrideprotectedvirtual

Implements Slic3r::GUI::DPIAware< wxDialog >.

442{
443 const int& em = em_unit();
444 const wxSize& size = wxSize(45 * em, 35 * em);
445 SetMinSize(size);
446
447 Fit();
448 Refresh();
449}

References Slic3r::GUI::DPIAware< wxDialog >::em_unit().

Here is the call graph for this function:

◆ on_search_update()

void Slic3r::GUI::EditGCodeDialog::on_search_update ( )
165{
166 wxString search_text = m_search_bar->GetValue().Lower();
167 if (search_text.empty())
168 m_params_list->model->FinishSearch();
169 else
170 m_params_list->model->RefreshSearch(search_text);
171}

References m_params_list, and m_search_bar.

Referenced by EditGCodeDialog().

Here is the caller graph for this function:

◆ on_sys_color_changed()

void Slic3r::GUI::EditGCodeDialog::on_sys_color_changed ( )
overrideprotectedvirtual

Reimplemented from Slic3r::GUI::DPIAware< wxDialog >.

452{
453 m_add_btn->msw_rescale();
454}

References m_add_btn.

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

◆ selection_changed()

void Slic3r::GUI::EditGCodeDialog::selection_changed ( wxDataViewEvent & evt)
protected
360{
361 wxString label;
362 wxString description;
363
364 const std::string opt_key = m_params_list->GetSelectedParamKey();
365 if (!opt_key.empty()) {
366 const ConfigOptionDef* def { nullptr };
367
368 for (const ConfigDef* config: std::initializer_list<const ConfigDef*> {
379 }) {
380 if (config->has(opt_key)) {
381 def = config->get(opt_key);
382 break;
383 }
384 }
385 // Orca: move below checking for def in custom defined G-code placeholders
386 // This allows custom placeholders to override the default ones for this dialog
387 // Override custom def if selection is within the preset category
388 // The group label is translated, so compare against the translated label.
389 if (!def || m_params_list->GetSelectedTopLevelCategory() == _L("Presets").ToStdString()) {
390 const auto& full_config = wxGetApp().preset_bundle->full_config();
391 if (const ConfigDef* config_def = full_config.def(); config_def && config_def->has(opt_key)) {
392 def = config_def->get(opt_key);
393 }
394 }
395
396 if (def) {
397 const ConfigOptionType scalar_type = def->is_scalar() ? def->type : static_cast<ConfigOptionType>(def->type - coVectorType);
398 wxString type_str = scalar_type == coNone ? "none" :
399 scalar_type == coFloat ? "float" :
400 scalar_type == coInt ? "integer" :
401 scalar_type == coString ? "string" :
402 scalar_type == coPercent ? "percent" :
403 scalar_type == coFloatOrPercent ? "float or percent" :
404 scalar_type == coPoint ? "point" :
405 scalar_type == coBool ? "bool" :
406 scalar_type == coEnum ? "enum" : "undef";
407 if (!def->is_scalar())
408 type_str += "[]";
409
410 label = (!def || (def->full_label.empty() && def->label.empty()) ) ? format_wxstr("%1%\n(%2%)", opt_key, type_str) :
411 (!def->full_label.empty() && !def->label.empty() ) ?
412 format_wxstr("%1% > %2%\n(%3%)", _(def->full_label), _(def->label), type_str) :
413 format_wxstr("%1%\n(%2%)", def->label.empty() ? _(def->full_label) : _(def->label), type_str);
414
415 if (def)
416 description = get_wraped_wxString(_(def->tooltip), 120);
417 }
418 else
419 label = "Undef optptr";
420 }
421
422 m_param_label->SetLabel(label);
423 m_param_description->SetLabel(description);
424
425 Layout();
426}
wxString get_wraped_wxString(const wxString &in, size_t line_len)
Definition MsgDialog.cpp:568
ConfigOptionType
Definition Config.hpp:180
@ coString
Definition Config.hpp:192
@ coPoint
Definition Config.hpp:204
@ coEnum
Definition Config.hpp:214
@ coVectorType
Definition Config.hpp:181
@ coInt
Definition Config.hpp:188
@ coBool
Definition Config.hpp:210
@ coFloat
Definition Config.hpp:184
@ coFloatOrPercent
Definition Config.hpp:200
@ coPercent
Definition Config.hpp:196
bool empty(const BoundingBoxBase< PointType, PointsType > &bb)
Definition BoundingBox.hpp:273

References _, _L, cgp_dimensions_config_def, cgp_objects_info_config_def, cgp_other_presets_config_def, cgp_other_slicing_states_config_def, cgp_print_statistics_config_def, cgp_ro_slicing_states_config_def, cgp_rw_slicing_states_config_def, cgp_temperatures_config_def, cgp_timestamps_config_def, Slic3r::coBool, Slic3r::coEnum, Slic3r::coFloat, Slic3r::coFloatOrPercent, Slic3r::coInt, Slic3r::coNone, Slic3r::coPercent, Slic3r::coPoint, Slic3r::coString, Slic3r::coVectorType, Slic3r::custom_gcode_specific_config_def, Slic3r::GUI::format_wxstr(), Slic3r::ConfigOptionDef::full_label, Slic3r::GUI::get_wraped_wxString(), Slic3r::ConfigDef::has(), Slic3r::ConfigOptionDef::is_scalar(), Slic3r::ConfigOptionDef::label, m_param_description, m_param_label, m_params_list, Slic3r::ConfigOptionDef::tooltip, and Slic3r::ConfigOptionDef::type.

Referenced by ~EditGCodeDialog(), and bind_list_and_button().

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

◆ 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

◆ cgp_dimensions_config_def

DimensionsConfigDef Slic3r::GUI::EditGCodeDialog::cgp_dimensions_config_def
private

◆ cgp_objects_info_config_def

ObjectsInfoConfigDef Slic3r::GUI::EditGCodeDialog::cgp_objects_info_config_def
private

◆ cgp_other_presets_config_def

OtherPresetsConfigDef Slic3r::GUI::EditGCodeDialog::cgp_other_presets_config_def
private

◆ cgp_other_slicing_states_config_def

OtherSlicingStatesConfigDef Slic3r::GUI::EditGCodeDialog::cgp_other_slicing_states_config_def
private

◆ cgp_print_statistics_config_def

PrintStatisticsConfigDef Slic3r::GUI::EditGCodeDialog::cgp_print_statistics_config_def
private

◆ cgp_ro_slicing_states_config_def

ReadOnlySlicingStatesConfigDef Slic3r::GUI::EditGCodeDialog::cgp_ro_slicing_states_config_def
private

◆ cgp_rw_slicing_states_config_def

ReadWriteSlicingStatesConfigDef Slic3r::GUI::EditGCodeDialog::cgp_rw_slicing_states_config_def
private

◆ cgp_temperatures_config_def

TemperaturesConfigDef Slic3r::GUI::EditGCodeDialog::cgp_temperatures_config_def
private

◆ cgp_timestamps_config_def

TimestampsConfigDef Slic3r::GUI::EditGCodeDialog::cgp_timestamps_config_def
private

◆ m_add_btn

ScalableButton* Slic3r::GUI::EditGCodeDialog::m_add_btn {nullptr}
private

◆ m_button_list

std::unordered_map<int, Button *> Slic3r::GUI::EditGCodeDialog::m_button_list
protected

◆ m_can_rescale

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

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

wxTextCtrl* Slic3r::GUI::EditGCodeDialog::m_gcode_editor {nullptr}
private

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

wxStaticText* Slic3r::GUI::EditGCodeDialog::m_param_description {nullptr}
private
41{nullptr};

Referenced by EditGCodeDialog(), and selection_changed().

◆ m_param_label

wxStaticText* Slic3r::GUI::EditGCodeDialog::m_param_label {nullptr}
private
40{nullptr};

Referenced by EditGCodeDialog(), and selection_changed().

◆ m_params_list

◆ 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

◆ m_search_bar

wxSearchCtrl* Slic3r::GUI::EditGCodeDialog::m_search_bar {nullptr}
private
42{nullptr};

Referenced by EditGCodeDialog(), and on_search_update().


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