From 5c69b1dee34ffcb7fe829a63a19b02b57bee8b4d Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 27 Nov 2023 09:41:22 +0800 Subject: [PATCH] FIX: calibration manage result dialog issue on macos jira: STUDIO-4949 STUDIO-5378 Change-Id: I00abefd45a0d274a4b68bb1ab18debe8f91d169e --- src/slic3r/GUI/CaliHistoryDialog.cpp | 64 +++++++++++----------------- src/slic3r/GUI/CaliHistoryDialog.hpp | 3 ++ 2 files changed, 29 insertions(+), 38 deletions(-) diff --git a/src/slic3r/GUI/CaliHistoryDialog.cpp b/src/slic3r/GUI/CaliHistoryDialog.cpp index 8bc949c1e..8d20b9b17 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.cpp +++ b/src/slic3r/GUI/CaliHistoryDialog.cpp @@ -352,18 +352,10 @@ EditCalibrationHistoryDialog::EditCalibrationHistoryDialog(wxWindow* parent, con flex_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); Label* name_title = new Label(top_panel, _L("Name")); - TextInput* name_value = new TextInput(top_panel, from_u8(m_new_result.name), "", "", wxDefaultPosition, EDIT_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER); - name_value->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this, name_value](auto& e) { - if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) - m_new_result.name = name_value->GetTextCtrl()->GetValue().ToUTF8().data(); - }); - name_value->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, name_value](auto& e) { - if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) - m_new_result.name = name_value->GetTextCtrl()->GetValue().ToUTF8().data(); - e.Skip(); - }); + m_name_value = new TextInput(top_panel, from_u8(m_new_result.name), "", "", wxDefaultPosition, EDIT_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER); + flex_sizer->Add(name_title); - flex_sizer->Add(name_value); + flex_sizer->Add(m_name_value); Label* preset_name_title = new Label(top_panel, _L("Filament")); wxString preset_name = get_preset_name_by_filament_id(result.filament_id); @@ -373,34 +365,9 @@ EditCalibrationHistoryDialog::EditCalibrationHistoryDialog(wxWindow* parent, con Label* k_title = new Label(top_panel, _L("Factor K")); auto k_str = wxString::Format("%.3f", m_new_result.k_value); - TextInput* k_value = new TextInput(top_panel, k_str, "", "", wxDefaultPosition, EDIT_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER); - k_value->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this, k_value](auto& e) { - float k = 0.0f; - if (!CalibUtils::validate_input_k_value(k_value->GetTextCtrl()->GetValue(), &k)) { - MessageDialog msg_dlg(nullptr, _L(k_tips), wxEmptyString, wxICON_WARNING | wxOK); - msg_dlg.ShowModal(); - } - else { - wxString k_str = wxString::Format("%.3f", k); - k_value->GetTextCtrl()->SetValue(k_str); - m_new_result.k_value = k; - } - }); - k_value->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, k_value](auto& e) { - float k = 0.0f; - if (!CalibUtils::validate_input_k_value(k_value->GetTextCtrl()->GetValue(), &k)) { - MessageDialog msg_dlg(nullptr, _L(k_tips), wxEmptyString, wxICON_WARNING | wxOK); - msg_dlg.ShowModal(); - } - else { - wxString k_str = wxString::Format("%.3f", k); - k_value->GetTextCtrl()->SetValue(k_str); - m_new_result.k_value = k; - } - e.Skip(); - }); + m_k_value = new TextInput(top_panel, k_str, "", "", wxDefaultPosition, EDIT_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER); flex_sizer->Add(k_title); - flex_sizer->Add(k_value); + flex_sizer->Add(m_k_value); // Hide: //Label* n_title = new Label(top_panel, _L("Factor N")); @@ -454,6 +421,27 @@ PACalibResult EditCalibrationHistoryDialog::get_result() { } void EditCalibrationHistoryDialog::on_save(wxCommandEvent& event) { + wxString name = m_name_value->GetTextCtrl()->GetValue(); + if (name.IsEmpty()) + return; + if (name.Length() > 40) { + MessageDialog msg_dlg(nullptr, _L("The name cannot exceed 40 characters."), wxEmptyString, wxICON_WARNING | wxOK); + msg_dlg.ShowModal(); + return; + } + m_new_result.name = m_name_value->GetTextCtrl()->GetValue().ToUTF8().data(); + + float k = 0.0f; + if (!CalibUtils::validate_input_k_value(m_k_value->GetTextCtrl()->GetValue(), &k)) { + MessageDialog msg_dlg(nullptr, _L(k_tips), wxEmptyString, wxICON_WARNING | wxOK); + msg_dlg.ShowModal(); + return; + } + wxString k_str = wxString::Format("%.3f", k); + m_k_value->GetTextCtrl()->SetValue(k_str); + m_new_result.k_value = k; + + EndModal(wxID_OK); } diff --git a/src/slic3r/GUI/CaliHistoryDialog.hpp b/src/slic3r/GUI/CaliHistoryDialog.hpp index 38576fcba..c44d4399e 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.hpp +++ b/src/slic3r/GUI/CaliHistoryDialog.hpp @@ -50,6 +50,9 @@ protected: protected: PACalibResult m_new_result; + + TextInput* m_name_value{ nullptr }; + TextInput* m_k_value{ nullptr }; }; } // namespace GUI