OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
StepMeshDialog Class Reference

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

Inheritance diagram for StepMeshDialog:
Collaboration diagram for StepMeshDialog:

Public Member Functions

 StepMeshDialog (wxWindow *parent, Slic3r::Step &file, double linear_init, double angle_init)
 ~StepMeshDialog () override
void on_dpi_changed (const wxRect &suggested_rect) override
double get_linear_deflection ()
double get_angle_deflection ()
bool get_split_compound_value ()
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_sys_color_changed ()

Private Member Functions

bool validate_number_range (const wxString &value, double min, double max)
void update_mesh_number_text ()
void on_task_done (wxCommandEvent &event)
void stop_task ()
void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

Slic3r::Step & m_file
wxCheckBox * m_checkbox = nullptr
wxCheckBox * m_split_compound_checkbox = nullptr
wxCheckBox * m_save_default_checkbox = nullptr
wxString m_linear_last
wxString m_angle_last
wxStaticText * mesh_face_number_text
double m_last_linear = 0.003
double m_last_angle = 0.5
unsigned int m_mesh_number = 0
boost::thread * m_task {nullptr}
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

◆ StepMeshDialog()

StepMeshDialog::StepMeshDialog ( wxWindow * parent,
Slic3r::Step & file,
double linear_init,
double angle_init )
88 : DPIDialog(parent ? parent : static_cast<wxWindow *>(wxGetApp().mainframe),
89 wxID_ANY,
90 _(L("Step file import parameters")),
91 wxDefaultPosition,
92 wxDefaultSize,
93 wxDEFAULT_DIALOG_STYLE /* | wxRESIZE_BORDER*/), m_file(file)
94{
95 m_linear_last = wxString::Format("%.3f", linear_init);
96 m_angle_last = wxString::Format("%.2f", angle_init);
97
98 Bind(wxEVT_THREAD_DONE, &StepMeshDialog::on_task_done, this);
99
100 SetBackgroundColour(*wxWHITE);
101
102 wxBoxSizer* bSizer = new wxBoxSizer(wxVERTICAL);
103 //bSizer->SetMinSize(wxSize(MIN_DIALOG_WIDTH, -1));
104
105 //auto image_bitmap = create_scaled_bitmap("step_mesh_info", this, FromDIP(120));
106
107 // wxPanel* overlay_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, image_bitmap.GetSize(), wxTAB_TRAVERSAL);
108 // overlay_panel->SetBackgroundStyle(wxBG_STYLE_PAINT);
109 // wxStaticBitmap *image = new wxStaticBitmap(overlay_panel, wxID_ANY, image_bitmap, wxDefaultPosition, overlay_panel->GetSize(), 0);
110
111 // CenteredStaticText* text_1 = new CenteredStaticText (overlay_panel, wxID_ANY, _L("Smooth"),
112 // wxPoint(overlay_panel->GetSize().GetWidth() / 6,
113 // overlay_panel->GetSize().GetHeight() / 2));
114 // CenteredStaticText* text_2 = new CenteredStaticText(overlay_panel, wxID_ANY, _L("Rough"),
115 // wxPoint(overlay_panel->GetSize().GetWidth() * 5 / 6,
116 // overlay_panel->GetSize().GetHeight() / 2));
117 // CenteredStaticText* text_3 = new CenteredStaticText(overlay_panel, wxID_ANY, _L("Reduce Linear"),
118 // wxPoint(overlay_panel->GetSize().GetWidth() / 2,
119 // overlay_panel->GetSize().GetHeight() * 1.3 / 3));
120 // CenteredStaticText* text_4 = new CenteredStaticText(overlay_panel, wxID_ANY, _L("Reduce Angle"),
121 // wxPoint(overlay_panel->GetSize().GetWidth() / 2,
122 // overlay_panel->GetSize().GetHeight() * 2 / 3));
123 // CenteredStaticText* text_5 = new CenteredStaticText(overlay_panel, wxID_ANY, _L("More faces"),
124 // wxPoint(overlay_panel->GetSize().GetWidth() / 6,
125 // overlay_panel->GetSize().GetHeight() * 2.8 / 3));
126 // CenteredStaticText* text_6 = new CenteredStaticText(overlay_panel, wxID_ANY, _L("Fewer faces"),
127 // wxPoint(overlay_panel->GetSize().GetWidth() * 5 / 6,
128 // overlay_panel->GetSize().GetHeight() * 2.8 / 3));
129
130 // bSizer->Add(overlay_panel, 0, wxALIGN_CENTER | wxALL, 10);
131
132 auto tip_frame = new RoundedRectangle(this, StateColor::darkModeColorFor(wxColour("#F1F1F1")), wxDefaultPosition, wxSize(-1,-1), 6, 0);
133
134 wxBoxSizer* tips_sizer = new wxBoxSizer(wxHORIZONTAL);
135 wxStaticText* info = new wxStaticText(tip_frame, wxID_ANY, _L("Smaller linear and angular deflections result in higher-quality transformations but increase the processing time."));
136 info->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636")));
137 info->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F1F1F1")));
138 info->SetFont(::Label::Body_14);
139 info->Wrap(FromDIP(450));
140
141 tips_sizer->Add(info, 0, wxEXPAND |wxALL , FromDIP(10));
142
143 tip_frame->SetSizer(tips_sizer);
144 tip_frame->Layout();
145 bSizer->Add(tip_frame, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING);
146
147 wxBoxSizer* linear_sizer = new wxBoxSizer(wxHORIZONTAL);
148 //linear_sizer->SetMinSize(wxSize(MIN_DIALOG_WIDTH, -1));
149 wxStaticText* linear_title = new wxStaticText(this,
150 wxID_ANY, _L("Linear Deflection") + ": ");
151 linear_title->SetFont(::Label::Body_14);
152 linear_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR));
153 linear_sizer->Add(linear_title, 0, wxALIGN_LEFT);
154 linear_sizer->AddStretchSpacer(1);
155 wxSlider* linear_slider = new wxSlider(this, wxID_ANY,
157 1, 100, wxDefaultPosition,
159 wxSL_HORIZONTAL);
160 linear_sizer->Add(linear_slider, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5));
161
162 auto linear_input = new ::TextInput(this, m_linear_last, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(TEXT_CTRL_WIDTH, -1), wxTE_CENTER);
163 linear_input->GetTextCtrl()->SetFont(Label::Body_14);
164 linear_input->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
165 linear_sizer->Add(linear_input, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5));
166 linear_input->Bind(wxEVT_KILL_FOCUS, ([this, linear_input](wxFocusEvent& e) {
167 wxString value = linear_input->GetTextCtrl()->GetValue();
168 if (validate_number_range(value, 0.001, 0.1)) {
169 m_linear_last = value;
171 } else {
172 MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.001 < linear deflection < 0.1)"), wxEmptyString, wxICON_WARNING | wxOK);
173 msg_dlg.ShowModal();
174 linear_input->GetTextCtrl()->SetValue(m_linear_last);
175 }
176 e.Skip();
177 }));
178 // textctrl bind slider
179 linear_input->Bind(wxEVT_TEXT, ([linear_slider, linear_input](wxCommandEvent& e) {
180 double slider_value_long;
181 int slider_value;
182 wxString value = linear_input->GetTextCtrl()->GetValue();
183 if (value.ToDouble(&slider_value_long)) {
184 slider_value = SLIDER_SCALE(slider_value_long);
185 if (slider_value >= linear_slider->GetMin() && slider_value <= linear_slider->GetMax()) {
186 linear_slider->SetValue(slider_value);
187 }
188 }
189 }));
190 linear_slider->Bind(wxEVT_SLIDER, ([this, linear_slider, linear_input](wxCommandEvent& e) {
191 double slider_value = SLIDER_UNSCALE(linear_slider->GetValue());
192 linear_input->GetTextCtrl()->SetValue(wxString::Format("%.3f", slider_value));
193 m_linear_last = wxString::Format("%.3f", slider_value);
194 }));
195 linear_slider->Bind(wxEVT_LEFT_UP, ([this](wxMouseEvent& e) {
197 e.Skip();
198 }));
199
200 bSizer->Add(linear_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING);
201 bSizer->AddSpacer(FromDIP(5));
202
203 wxBoxSizer* angle_sizer = new wxBoxSizer(wxHORIZONTAL);
204 wxStaticText* angle_title = new wxStaticText(this,
205 wxID_ANY, _L("Angle Deflection") + ": ");
206 angle_title->SetFont(::Label::Body_14);
207 angle_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR));
208 angle_sizer->Add(angle_title, 0, wxALIGN_LEFT);
209 angle_sizer->AddStretchSpacer(1);
210 wxSlider* angle_slider = new wxSlider(this, wxID_ANY,
212 1, 100, wxDefaultPosition,
214 wxSL_HORIZONTAL);
215 angle_sizer->Add(angle_slider, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5));
216
217 auto angle_input = new ::TextInput(this, m_angle_last, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(TEXT_CTRL_WIDTH, -1), wxTE_CENTER);
218 angle_input->GetTextCtrl()->SetFont(Label::Body_14);
219 angle_input->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
220 angle_sizer->Add(angle_input, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5));
221 angle_input->Bind(wxEVT_KILL_FOCUS, ([this, angle_input](wxFocusEvent& e) {
222 wxString value = angle_input->GetTextCtrl()->GetValue();
223 if (validate_number_range(value, 0.01, 1)) {
224 m_angle_last = value;
226 } else {
227 MessageDialog msg_dlg(nullptr, _L("Please input a valid value (0.01 < angle deflection < 1.0)"), wxEmptyString, wxICON_WARNING | wxOK);
228 msg_dlg.ShowModal();
229 angle_input->GetTextCtrl()->SetValue(m_angle_last);
230 }
231 e.Skip();
232 }));
233 // textctrl bind slider
234 angle_input->Bind(wxEVT_TEXT, ([angle_slider, angle_input](wxCommandEvent& e) {
235 double slider_value_long;
236 int slider_value;
237 wxString value = angle_input->GetTextCtrl()->GetValue();
238 if (value.ToDouble(&slider_value_long)) {
239 slider_value = SLIDER_SCALE_10(slider_value_long);
240 if (slider_value >= angle_slider->GetMin() && slider_value <= angle_slider->GetMax()) {
241 angle_slider->SetValue(slider_value);
242 }
243 }
244 }));
245
246 angle_slider->Bind(wxEVT_SLIDER, ([this, angle_slider, angle_input](wxCommandEvent& e) {
247 double slider_value = SLIDER_UNSCALE_10(angle_slider->GetValue());
248 angle_input->GetTextCtrl()->SetValue(wxString::Format("%.2f", slider_value));
249 m_angle_last = wxString::Format("%.2f", slider_value);
250 }));
251 angle_slider->Bind(wxEVT_LEFT_UP, ([this](wxMouseEvent& e) {
253 e.Skip();
254 }));
255
256 bSizer->Add(angle_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING);
257
258 wxBoxSizer* check_sizer = new wxBoxSizer(wxHORIZONTAL);
259 m_split_compound_checkbox = new wxCheckBox(this, wxID_ANY, _L("Split compound and compsolid into multiple objects"), wxDefaultPosition, wxDefaultSize, 0);
262 m_split_compound_checkbox->SetValue(wxGetApp().app_config->get_bool("is_split_compound"));
263 check_sizer->Add(m_split_compound_checkbox, 0, wxALIGN_LEFT);
264 bSizer->Add(check_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING);
265
266 wxBoxSizer* mesh_face_number_sizer = new wxBoxSizer(wxHORIZONTAL);
267 wxStaticText *mesh_face_number_title = new wxStaticText(this, wxID_ANY, _L("Number of triangular facets") + ": ");
268 mesh_face_number_title->SetFont(::Label::Body_14);
269 mesh_face_number_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR));
270 mesh_face_number_text = new wxStaticText(this, wxID_ANY, _L("Calculating, please wait..."));
273 mesh_face_number_sizer->Add(mesh_face_number_title, 0, wxALIGN_LEFT);
274 mesh_face_number_sizer->Add(mesh_face_number_text, 0, wxALIGN_LEFT);
275 bSizer->Add(mesh_face_number_sizer, 0, wxEXPAND | wxALL, LEFT_RIGHT_PADING);
276
277 bSizer->AddSpacer(FromDIP(10));
278
279 wxBoxSizer* save_default_sizer = new wxBoxSizer(wxHORIZONTAL);
280 m_save_default_checkbox = new wxCheckBox(this, wxID_ANY, _L("Save these settings as default"), wxDefaultPosition, wxDefaultSize, 0);
283 m_save_default_checkbox->SetToolTip(_L("If enabled, the values above are stored as the defaults used for future STEP imports (and shown in Preferences)."));
284 save_default_sizer->Add(m_save_default_checkbox, 0, wxALIGN_LEFT);
285 bSizer->Add(save_default_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING);
286
287 bSizer->AddSpacer(FromDIP(10));
288
289 m_checkbox = new wxCheckBox(this, wxID_ANY, _L("Don't show again"), wxDefaultPosition, wxDefaultSize, 0);
292 bSizer->Add(m_checkbox, 0, wxLEFT, LEFT_RIGHT_PADING);
293
294 wxBoxSizer* bSizer_button = new wxBoxSizer(wxHORIZONTAL);
295
296 // ORCA standardized HyperLink
297 auto wiki_btn = new Button(this, "", "toolbar_wiki", 0, 15);
298 auto wiki_url = "https://www.orcaslicer.com/wiki/import_export#step";
299 wiki_btn->SetToolTip(_L("Wiki Guide") + "\n" + wiki_url);
300 wiki_btn->SetStyle(ButtonStyle::Confirm, ButtonType::Circle);
301 wiki_btn->SetCanFocus(false);
302 wiki_btn->Bind(wxEVT_LEFT_DOWN, ([wiki_url](auto& e) {wxLaunchDefaultBrowser(wiki_url);}));
303 bSizer_button->Add(wiki_btn, 0, wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, LEFT_RIGHT_PADING);
304
305 bSizer_button->AddStretchSpacer(1);
306
307 auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"});
308
309 bSizer_button->Add(dlg_btns, 0, wxEXPAND);
310
311 dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this, angle_input, linear_input](wxCommandEvent& e) {
312 stop_task();
313 if (validate_number_range(angle_input->GetTextCtrl()->GetValue(), 0.01, 1) &&
314 validate_number_range(linear_input->GetTextCtrl()->GetValue(), 0.001, 0.1)) {
315 if (m_checkbox->IsChecked()) {
316 wxGetApp().app_config->set_bool("enable_step_mesh_setting", false);
317 }
318 if (m_save_default_checkbox->IsChecked()) {
319 wxGetApp().app_config->set_bool("is_split_compound", m_split_compound_checkbox->GetValue());
320 wxGetApp().app_config->set("linear_deflection", float_to_string_decimal_point(get_linear_deflection(), 3));
321 wxGetApp().app_config->set("angle_deflection", float_to_string_decimal_point(get_angle_deflection(), 2));
322 }
323
324 EndModal(wxID_OK);
325 }
326 SetFocusIgnoringChildren();
327 });
328
329 dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
330 stop_task();
331 EndModal(wxID_CANCEL);
332 });
333
334 bSizer->Add(bSizer_button, 1, wxEXPAND);
335
336 this->SetSizerAndFit(bSizer);
338 this->Layout();
339
340 this->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
341 SetFocusIgnoringChildren();
342 });
343 mesh_face_number_text->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
344 SetFocusIgnoringChildren();
345 });
346
347 this->Bind(wxEVT_CLOSE_WINDOW, [this](wxCloseEvent& e) {
348 stop_task();
349 EndModal(wxID_CANCEL);
350 });
351
352 wxGetApp().UpdateDlgDarkUI(this);
353}
#define _(s)
Definition 3mf.cpp:306
@ Confirm
Definition Button.hpp:25
@ Circle
Definition Button.hpp:37
#define L(s)
Definition ExtrusionEntity.cpp:25
#define _L(s)
Definition OBJ.cpp:34
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
#define TEXT_CTRL_WIDTH
Definition StepMeshDialog.cpp:39
#define LEFT_RIGHT_PADING
Definition StepMeshDialog.cpp:46
#define SLIDER_SCALE_10(val)
Definition StepMeshDialog.cpp:44
#define SLIDER_UNSCALE(val)
Definition StepMeshDialog.cpp:43
#define SLIDER_WIDTH
Definition StepMeshDialog.cpp:37
#define SLIDER_SCALE(val)
Definition StepMeshDialog.cpp:42
#define SLIDER_UNSCALE_10(val)
Definition StepMeshDialog.cpp:45
#define SLIDER_HEIGHT
Definition StepMeshDialog.cpp:38
#define FONT_COLOR
Definition StepMeshDialog.cpp:47
static wxFont Body_14
Definition Label.hpp:53
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
wxStaticText * mesh_face_number_text
Definition StepMeshDialog.hpp:44
wxString m_angle_last
Definition StepMeshDialog.hpp:43
void stop_task()
Definition StepMeshDialog.cpp:373
void on_task_done(wxCommandEvent &event)
Definition StepMeshDialog.cpp:360
bool validate_number_range(const wxString &value, double min, double max)
Definition StepMeshDialog.cpp:71
wxCheckBox * m_split_compound_checkbox
Definition StepMeshDialog.hpp:40
double get_linear_deflection()
Definition StepMeshDialog.hpp:18
wxCheckBox * m_checkbox
Definition StepMeshDialog.hpp:39
wxCheckBox * m_save_default_checkbox
Definition StepMeshDialog.hpp:41
double get_angle_deflection()
Definition StepMeshDialog.hpp:26
void update_mesh_number_text()
Definition StepMeshDialog.cpp:387
Slic3r::Step & m_file
Definition StepMeshDialog.hpp:38
wxString m_linear_last
Definition StepMeshDialog.hpp:42
wxMouseEvent
Definition CameraPopup.cpp:47
std::string float_to_string_decimal_point(double value, int precision)
Definition LocalesUtils.cpp:108

References _, _L, Label::Body_14, Circle, Confirm, StateColor::darkModeColorFor(), Slic3r::GUI::DPIDialog::EndModal(), Slic3r::float_to_string_decimal_point(), FONT_COLOR, get_angle_deflection(), get_linear_deflection(), Slic3r::GUI::DialogButtons::GetOK(), L, LEFT_RIGHT_PADING, m_angle_last, m_checkbox, m_file, m_linear_last, m_save_default_checkbox, m_split_compound_checkbox, mesh_face_number_text, on_task_done(), Slic3r::GUI::DPIAware< P >::ShowModal(), SLIDER_HEIGHT, SLIDER_SCALE, SLIDER_SCALE_10, SLIDER_UNSCALE, SLIDER_UNSCALE_10, SLIDER_WIDTH, stop_task(), TEXT_CTRL_WIDTH, update_mesh_number_text(), validate_number_range(), Slic3r::GUI::wxMouseEvent, and wxStaticText.

Here is the call graph for this function:

◆ ~StepMeshDialog()

StepMeshDialog::~StepMeshDialog ( )
override
356{
357 stop_task();
358}

References stop_task().

Here is the call graph for this function:

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

double StepMeshDialog::get_angle_deflection ( )
inline
26 {
27 double value;
28 if (m_angle_last.ToDouble(&value)) {
29 return value;
30 } else {
31 return m_last_angle;
32 }
33 }
double m_last_angle
Definition StepMeshDialog.hpp:46

References m_angle_last, and m_last_angle.

Referenced by StepMeshDialog(), Slic3r::GUI::Plater::priv::load_files(), Slic3r::GUI::ObjectList::load_modifier(), Slic3r::GUI::Plater::priv::replace_volume_with_stl(), and update_mesh_number_text().

Here is the caller graph for this function:

◆ get_linear_deflection()

double StepMeshDialog::get_linear_deflection ( )
inline
18 {
19 double value;
20 if (m_linear_last.ToDouble(&value)) {
21 return value;
22 }else {
23 return m_last_linear;
24 }
25 }
double m_last_linear
Definition StepMeshDialog.hpp:45

References m_last_linear, and m_linear_last.

Referenced by StepMeshDialog(), Slic3r::GUI::Plater::priv::load_files(), Slic3r::GUI::ObjectList::load_modifier(), Slic3r::GUI::Plater::priv::replace_volume_with_stl(), and update_mesh_number_text().

Here is the caller graph for this function:

◆ get_split_compound_value()

bool StepMeshDialog::get_split_compound_value ( )
inline
34 {
35 return m_split_compound_checkbox->GetValue();
36 }

References m_split_compound_checkbox.

Referenced by Slic3r::GUI::Plater::priv::load_files(), Slic3r::GUI::ObjectList::load_modifier(), and Slic3r::GUI::Plater::priv::replace_volume_with_stl().

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 StepMeshDialog::on_dpi_changed ( const wxRect & suggested_rect)
overridevirtual

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

68 {
69};

◆ on_sys_color_changed()

◆ on_task_done()

void StepMeshDialog::on_task_done ( wxCommandEvent & event)
private
361{
362 wxString text = event.GetString();
363 mesh_face_number_text->SetLabel(text);
364 if(m_task) {
365 if (m_task->joinable()) {
366 m_task->join();
367 delete m_task;
368 m_task = nullptr;
369 }
370 }
371}
boost::thread * m_task
Definition StepMeshDialog.hpp:48

References m_task, and mesh_face_number_text.

Referenced by StepMeshDialog().

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

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

◆ stop_task()

void StepMeshDialog::stop_task ( )
private
374{
375 if(m_task) {
376 m_file.m_stop_mesh.store(true);
377 if (m_task->joinable()) {
378 m_task->join();
379 delete m_task;
380 m_task = nullptr;
381 }
382 m_file.m_stop_mesh.store(false);
383 }
384
385}

References m_file, and m_task.

Referenced by StepMeshDialog(), ~StepMeshDialog(), and update_mesh_number_text().

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 }

◆ update_mesh_number_text()

void StepMeshDialog::update_mesh_number_text ( )
private
388{
390 return;
391 wxString newText = wxString::Format(_L("Calculating, please wait..."));
392 mesh_face_number_text->SetLabel(newText);
393 stop_task();
394 if (!m_task) {
395 m_task = new boost::thread(Slic3r::create_thread([this]() -> void {
397 if (m_mesh_number != 0) {
398 wxString number_text = wxString::Format("%d", m_mesh_number);
399 wxCommandEvent event(wxEVT_THREAD_DONE);
400 event.SetString(number_text);
401 wxPostEvent(this, event);
404 }
405 }));
406 }
407}
unsigned int m_mesh_number
Definition StepMeshDialog.hpp:47
boost::thread create_thread(boost::thread::attributes &attrs, Fn &&fn)
Definition Thread.hpp:48

References _L, Slic3r::create_thread(), get_angle_deflection(), get_linear_deflection(), m_file, m_last_angle, m_last_linear, m_mesh_number, m_task, mesh_face_number_text, and stop_task().

Referenced by StepMeshDialog().

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

◆ validate_number_range()

bool StepMeshDialog::validate_number_range ( const wxString & value,
double min,
double max )
private
71 {
72 double num = 0.0;
73 if (value.IsEmpty()) {
74 return false;
75 }
76 try {
77 if (!value.ToDouble(&num)) {
78 return false;
79 }
80 } catch (...) {
81 return false;
82 }
83
84 return (num >= min && num <= max);
85}

Referenced by StepMeshDialog().

Here is the caller graph for this function:

Member Data Documentation

◆ m_angle_last

wxString StepMeshDialog::m_angle_last
private

◆ m_can_rescale

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

◆ m_checkbox

wxCheckBox* StepMeshDialog::m_checkbox = nullptr
private

Referenced by StepMeshDialog().

◆ m_em_unit

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

◆ m_file

Slic3r::Step& StepMeshDialog::m_file
private

◆ m_force_rescale

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

◆ m_last_angle

double StepMeshDialog::m_last_angle = 0.5
private

◆ m_last_linear

double StepMeshDialog::m_last_linear = 0.003
private

◆ m_linear_last

wxString StepMeshDialog::m_linear_last
private

◆ m_mesh_number

unsigned int StepMeshDialog::m_mesh_number = 0
private

Referenced by update_mesh_number_text().

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

wxCheckBox* StepMeshDialog::m_save_default_checkbox = nullptr
private

Referenced by StepMeshDialog().

◆ m_scale_factor

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

◆ m_split_compound_checkbox

wxCheckBox* StepMeshDialog::m_split_compound_checkbox = nullptr
private

◆ m_task

boost::thread* StepMeshDialog::m_task {nullptr}
private
48{nullptr};

Referenced by on_task_done(), stop_task(), and update_mesh_number_text().

◆ mesh_face_number_text

wxStaticText* StepMeshDialog::mesh_face_number_text
private

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