FIX: Limit the max length of k when calibrating
Jira: STUDIO-4291 Signed-off-by: wenjie.guo <wenjie.guo@bambulab.com> Change-Id: Ie7cff086cf2a3c744213525d5d83f9ac4b55333d
This commit is contained in:
parent
785062bdfe
commit
7c99f28d16
|
@ -299,7 +299,6 @@ void CaliPresetCustomRangePanel::create_panel(wxWindow* parent)
|
||||||
{
|
{
|
||||||
wxBoxSizer* horiz_sizer;
|
wxBoxSizer* horiz_sizer;
|
||||||
horiz_sizer = new wxBoxSizer(wxHORIZONTAL);
|
horiz_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
for (size_t i = 0; i < m_input_value_nums; ++i) {
|
for (size_t i = 0; i < m_input_value_nums; ++i) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
horiz_sizer->Add(FromDIP(10), 0, 0, wxEXPAND, 0);
|
horiz_sizer->Add(FromDIP(10), 0, 0, wxEXPAND, 0);
|
||||||
|
@ -313,6 +312,38 @@ void CaliPresetCustomRangePanel::create_panel(wxWindow* parent)
|
||||||
item_sizer->Add(m_title_texts[i], 0, wxALL, 0);
|
item_sizer->Add(m_title_texts[i], 0, wxALL, 0);
|
||||||
m_value_inputs[i] = new TextInput(parent, wxEmptyString, wxString::FromUTF8("°C"), "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE, 0);
|
m_value_inputs[i] = new TextInput(parent, wxEmptyString, wxString::FromUTF8("°C"), "", wxDefaultPosition, CALIBRATION_FROM_TO_INPUT_SIZE, 0);
|
||||||
m_value_inputs[i]->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
|
m_value_inputs[i]->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
|
||||||
|
m_value_inputs[i]->GetTextCtrl()->Bind(wxEVT_TEXT, [this, i](wxCommandEvent& event) {
|
||||||
|
std::string number = m_value_inputs[i]->GetTextCtrl()->GetValue().ToStdString();
|
||||||
|
std::string decimal_point;
|
||||||
|
std::string expression = "^[-+]?[0-9]+([,.][0-9]+)?$";
|
||||||
|
std::regex decimalRegex(expression);
|
||||||
|
int decimal_number;
|
||||||
|
if (std::regex_match(number, decimalRegex)) {
|
||||||
|
std::smatch match;
|
||||||
|
if (std::regex_search(number, match, decimalRegex)) {
|
||||||
|
std::string decimalPart = match[1].str();
|
||||||
|
if (decimalPart != "")
|
||||||
|
decimal_number = decimalPart.length() - 1;
|
||||||
|
else
|
||||||
|
decimal_number = 0;
|
||||||
|
}
|
||||||
|
int max_decimal_length;
|
||||||
|
if (i <= 1)
|
||||||
|
max_decimal_length = 3;
|
||||||
|
else if (i >= 2)
|
||||||
|
max_decimal_length = 4;
|
||||||
|
if (decimal_number > max_decimal_length) {
|
||||||
|
int allowed_length = number.length() - decimal_number + max_decimal_length;
|
||||||
|
number = number.substr(0, allowed_length);
|
||||||
|
m_value_inputs[i]->GetTextCtrl()->SetValue(number);
|
||||||
|
m_value_inputs[i]->GetTextCtrl()->SetInsertionPointEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// input is not a number, invalid.
|
||||||
|
else
|
||||||
|
BOOST_LOG_TRIVIAL(trace) << "The K input string is not a valid number when calibrating. ";
|
||||||
|
|
||||||
|
});
|
||||||
item_sizer->Add(m_value_inputs[i], 0, wxALL, 0);
|
item_sizer->Add(m_value_inputs[i], 0, wxALL, 0);
|
||||||
horiz_sizer->Add(item_sizer, 0, wxEXPAND, 0);
|
horiz_sizer->Add(item_sizer, 0, wxEXPAND, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue