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

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

Inheritance diagram for Slic3r::GUI::CaliPresetCustomRangePanel:
Collaboration diagram for Slic3r::GUI::CaliPresetCustomRangePanel:

Public Member Functions

 CaliPresetCustomRangePanel (wxWindow *parent, int input_value_nums=3, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL)
void create_panel (wxWindow *parent)
void msw_rescale ()
void set_unit (wxString unit)
void set_titles (wxArrayString titles)
void set_values (wxArrayString values)
wxArrayString get_values ()

Protected Attributes

wxBoxSizer * m_top_sizer
int m_input_value_nums
std::vector< Label * > m_title_texts
std::vector< TextInput * > m_value_inputs

Detailed Description

Constructor & Destructor Documentation

◆ CaliPresetCustomRangePanel()

Slic3r::GUI::CaliPresetCustomRangePanel::CaliPresetCustomRangePanel ( wxWindow * parent,
int input_value_nums = 3,
wxWindowID id = wxID_ANY,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = wxTAB_TRAVERSAL )
314 : wxPanel(parent, id, pos, size, style)
315 , m_input_value_nums(input_value_nums)
316{
317 SetBackgroundColour(*wxWHITE);
318
319 m_title_texts.resize(input_value_nums);
320 m_value_inputs.resize(input_value_nums);
321
322 m_top_sizer = new wxBoxSizer(wxHORIZONTAL);
323 create_panel(this);
324
325 this->SetSizer(m_top_sizer);
326 m_top_sizer->Fit(this);
327}
#define style
Definition WipeTowerDialog.cpp:101
std::vector< TextInput * > m_value_inputs
Definition CalibrationWizardPresetPage.hpp:158
std::vector< Label * > m_title_texts
Definition CalibrationWizardPresetPage.hpp:157
void create_panel(wxWindow *parent)
Definition CalibrationWizardPresetPage.cpp:370
wxBoxSizer * m_top_sizer
Definition CalibrationWizardPresetPage.hpp:155
int m_input_value_nums
Definition CalibrationWizardPresetPage.hpp:156

References create_panel(), m_input_value_nums, m_title_texts, m_top_sizer, m_value_inputs, and style.

Here is the call graph for this function:

Member Function Documentation

◆ create_panel()

void Slic3r::GUI::CaliPresetCustomRangePanel::create_panel ( wxWindow * parent)
371{
372 wxBoxSizer* horiz_sizer;
373 horiz_sizer = new wxBoxSizer(wxHORIZONTAL);
374 for (size_t i = 0; i < m_input_value_nums; ++i) {
375 if (i > 0) {
376 horiz_sizer->Add(FromDIP(10), 0, 0, wxEXPAND, 0);
377 }
378
379 wxBoxSizer *item_sizer;
380 item_sizer = new wxBoxSizer(wxVERTICAL);
381 m_title_texts[i] = new Label(parent, _L("Title"));
382 m_title_texts[i]->Wrap(-1);
383 m_title_texts[i]->SetFont(::Label::Body_14);
384 item_sizer->Add(m_title_texts[i], 0, wxALL, 0);
385 m_value_inputs[i] = new TextInput(parent, wxEmptyString, _L("\u2103" /* °C */), "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE, 0);
386 m_value_inputs[i]->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
387 m_value_inputs[i]->GetTextCtrl()->Bind(wxEVT_TEXT, [this, i](wxCommandEvent& event) {
388 std::string number = m_value_inputs[i]->GetTextCtrl()->GetValue().ToStdString();
389 std::string decimal_point;
390 std::string expression = "^[-+]?[0-9]+([,.][0-9]+)?$";
391 std::regex decimalRegex(expression);
392 int decimal_number = 0;
393 if (std::regex_match(number, decimalRegex)) {
394 std::smatch match;
395 if (std::regex_search(number, match, decimalRegex)) {
396 std::string decimalPart = match[1].str();
397 if (decimalPart != "")
398 decimal_number = decimalPart.length() - 1;
399 else
400 decimal_number = 0;
401 }
402 int max_decimal_length;
403 if (i <= 1)
404 max_decimal_length = 3;
405 else
406 max_decimal_length = 4;
407 if (decimal_number > max_decimal_length) {
408 int allowed_length = number.length() - decimal_number + max_decimal_length;
409 number = number.substr(0, allowed_length);
410 m_value_inputs[i]->GetTextCtrl()->SetValue(number);
411 m_value_inputs[i]->GetTextCtrl()->SetInsertionPointEnd();
412 }
413 }
414 // input is not a number, invalid.
415 else
416 BOOST_LOG_TRIVIAL(trace) << "The K input string is not a valid number when calibrating. ";
417
418 });
419 item_sizer->Add(m_value_inputs[i], 0, wxALL, 0);
420 horiz_sizer->Add(item_sizer, 0, wxEXPAND, 0);
421 }
422
423 m_top_sizer->Add(horiz_sizer, 0, wxEXPAND, 0);
424}
#define CALIBRATION_FROM_TO_INPUT_SIZE
Definition CalibrationWizardPage.hpp:38
#define _L(s)
Definition OBJ.cpp:34
static wxFont Body_14
Definition Label.hpp:53
void trace(unsigned int level, const char *message)
Definition utils.cpp:247

References _L, Label::Body_14, CALIBRATION_FROM_TO_INPUT_SIZE, m_input_value_nums, m_title_texts, m_top_sizer, m_value_inputs, and Slic3r::trace().

Referenced by CaliPresetCustomRangePanel().

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

◆ get_values()

wxArrayString Slic3r::GUI::CaliPresetCustomRangePanel::get_values ( )
362{
363 wxArrayString result;
364 for (size_t i = 0; i < m_input_value_nums; ++i) {
365 result.push_back(m_value_inputs[i]->GetTextCtrl()->GetValue());
366 }
367 return result;
368}

References m_input_value_nums, and m_value_inputs.

◆ msw_rescale()

void Slic3r::GUI::CaliPresetCustomRangePanel::msw_rescale ( )
330{
331 for (TextInput *value_input : m_value_inputs)
332 value_input->GetTextCtrl()->SetSize(wxSize(-1, CALIBRATION_TEXT_INPUT_Y_SIZE));
333}
#define CALIBRATION_TEXT_INPUT_Y_SIZE
Definition CalibrationWizardPresetPage.cpp:61

References CALIBRATION_TEXT_INPUT_Y_SIZE, and m_value_inputs.

◆ set_titles()

void Slic3r::GUI::CaliPresetCustomRangePanel::set_titles ( wxArrayString titles)
343{
344 if (titles.size() != m_input_value_nums)
345 return;
346
347 for (size_t i = 0; i < m_input_value_nums; ++i) {
348 m_title_texts[i]->SetLabel(titles[i]);
349 }
350}

References m_input_value_nums, and m_title_texts.

◆ set_unit()

void Slic3r::GUI::CaliPresetCustomRangePanel::set_unit ( wxString unit)
336{
337 for (size_t i = 0; i < m_input_value_nums; ++i) {
338 m_value_inputs[i]->SetLabel(unit);
339 }
340}

References m_input_value_nums, and m_value_inputs.

◆ set_values()

void Slic3r::GUI::CaliPresetCustomRangePanel::set_values ( wxArrayString values)
352 {
353 if (values.size() != m_input_value_nums)
354 return;
355
356 for (size_t i = 0; i < m_input_value_nums; ++i) {
357 m_value_inputs[i]->GetTextCtrl()->SetValue(values[i]);
358 }
359}

References m_input_value_nums, and m_value_inputs.

Member Data Documentation

◆ m_input_value_nums

int Slic3r::GUI::CaliPresetCustomRangePanel::m_input_value_nums
protected

◆ m_title_texts

std::vector<Label*> Slic3r::GUI::CaliPresetCustomRangePanel::m_title_texts
protected

◆ m_top_sizer

wxBoxSizer* Slic3r::GUI::CaliPresetCustomRangePanel::m_top_sizer
protected

◆ m_value_inputs

std::vector<TextInput*> Slic3r::GUI::CaliPresetCustomRangePanel::m_value_inputs
protected

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