371{
372 wxBoxSizer* horiz_sizer;
373 horiz_sizer = new wxBoxSizer(wxHORIZONTAL);
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);
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);
412 }
413 }
414
415 else
416 BOOST_LOG_TRIVIAL(
trace) <<
"The K input string is not a valid number when calibrating. ";
417
418 });
420 horiz_sizer->Add(item_sizer, 0, wxEXPAND, 0);
421 }
422
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