mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	FIX: cali: manage result crash
1. fix input chinese on editing name will crash 2. fix: repeat editing action before the whole dialog is refreshed, will crash Change-Id: Ia5f785987aec547007a1d71e1af770b606b50d65 (cherry picked from commit a1f60dc682b5e46ae098ad2a720e5cb12f8148d7)
This commit is contained in:
		
							parent
							
								
									76cac6fac3
								
							
						
					
					
						commit
						e599469d01
					
				
					 2 changed files with 20 additions and 6 deletions
				
			
		|  | @ -203,9 +203,20 @@ void HistoryWindow::reqeust_history_result(MachineObject* obj) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void HistoryWindow::enbale_action_buttons(bool enable) { | ||||||
|  |     auto childern = m_history_data_panel->GetChildren(); | ||||||
|  |     for (auto child : childern) { | ||||||
|  |         auto button = dynamic_cast<Button*>(child); | ||||||
|  |         if (button) { | ||||||
|  |             button->Enable(enable); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void HistoryWindow::sync_history_data() { | void HistoryWindow::sync_history_data() { | ||||||
|     Freeze(); |     Freeze(); | ||||||
|     m_history_data_panel->DestroyChildren(); |     m_history_data_panel->DestroyChildren(); | ||||||
|  |     m_history_data_panel->Enable(); | ||||||
|     wxGridBagSizer* gbSizer; |     wxGridBagSizer* gbSizer; | ||||||
|     gbSizer = new wxGridBagSizer(FromDIP(0), FromDIP(50)); |     gbSizer = new wxGridBagSizer(FromDIP(0), FromDIP(50)); | ||||||
|     gbSizer->SetFlexibleDirection(wxBOTH); |     gbSizer->SetFlexibleDirection(wxBOTH); | ||||||
|  | @ -271,20 +282,22 @@ void HistoryWindow::sync_history_data() { | ||||||
|         edit_button->SetTextColor(wxColour("#FFFFFE")); |         edit_button->SetTextColor(wxColour("#FFFFFE")); | ||||||
|         edit_button->SetMinSize(wxSize(-1, FromDIP(24))); |         edit_button->SetMinSize(wxSize(-1, FromDIP(24))); | ||||||
|         edit_button->SetCornerRadius(FromDIP(12)); |         edit_button->SetCornerRadius(FromDIP(12)); | ||||||
|         edit_button->Bind(wxEVT_BUTTON, [this, &result, k_value, name_value](auto& e) { |         edit_button->Bind(wxEVT_BUTTON, [this, result, k_value, name_value, edit_button](auto& e) { | ||||||
|             PACalibResult result_buffer = result; |             PACalibResult result_buffer = result; | ||||||
|             result_buffer.k_value = stof(k_value->GetLabel().ToStdString()); |             result_buffer.k_value = stof(k_value->GetLabel().ToStdString()); | ||||||
|             result_buffer.name = name_value->GetLabel().ToStdString(); |             result_buffer.name = name_value->GetLabel().ToUTF8().data(); | ||||||
|             EditCalibrationHistoryDialog dlg(this, result_buffer); |             EditCalibrationHistoryDialog dlg(this, result_buffer); | ||||||
|             if (dlg.ShowModal() == wxID_OK) { |             if (dlg.ShowModal() == wxID_OK) { | ||||||
|                 auto new_result = dlg.get_result(); |                 auto new_result = dlg.get_result(); | ||||||
| 
 | 
 | ||||||
|                 wxString new_k_str = wxString::Format("%.3f", new_result.k_value); |                 wxString new_k_str = wxString::Format("%.3f", new_result.k_value); | ||||||
|                 k_value->SetLabel(new_k_str); |                 k_value->SetLabel(new_k_str); | ||||||
|                 name_value->SetLabel(new_result.name); |                 name_value->SetLabel(from_u8(new_result.name)); | ||||||
| 
 | 
 | ||||||
|                 new_result.tray_id = -1; |                 new_result.tray_id = -1; | ||||||
|                 CalibUtils::set_PA_calib_result({ new_result }); |                 CalibUtils::set_PA_calib_result({ new_result }); | ||||||
|  | 
 | ||||||
|  |                 enbale_action_buttons(false); | ||||||
|             } |             } | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|  | @ -336,14 +349,14 @@ EditCalibrationHistoryDialog::EditCalibrationHistoryDialog(wxWindow* parent, con | ||||||
|     flex_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); |     flex_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); | ||||||
| 
 | 
 | ||||||
|     Label* name_title = new Label(top_panel, _L("Name")); |     Label* name_title = new Label(top_panel, _L("Name")); | ||||||
|     TextInput* name_value = new TextInput(top_panel, m_new_result.name, "", "", wxDefaultPosition, EDIT_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER); |     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) { |     name_value->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [this, name_value](auto& e) { | ||||||
|         if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) |         if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) | ||||||
|             m_new_result.name = name_value->GetTextCtrl()->GetValue().ToStdString(); |             m_new_result.name = name_value->GetTextCtrl()->GetValue().ToUTF8().data(); | ||||||
|         }); |         }); | ||||||
|     name_value->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, name_value](auto& e) { |     name_value->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [this, name_value](auto& e) { | ||||||
|         if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) |         if (!name_value->GetTextCtrl()->GetValue().IsEmpty()) | ||||||
|             m_new_result.name = name_value->GetTextCtrl()->GetValue().ToStdString(); |             m_new_result.name = name_value->GetTextCtrl()->GetValue().ToUTF8().data(); | ||||||
|         e.Skip(); |         e.Skip(); | ||||||
|         }); |         }); | ||||||
|     flex_sizer->Add(name_title); |     flex_sizer->Add(name_title); | ||||||
|  |  | ||||||
|  | @ -22,6 +22,7 @@ public: | ||||||
|     void update(MachineObject* obj); |     void update(MachineObject* obj); | ||||||
| protected: | protected: | ||||||
|     void sync_history_data(); |     void sync_history_data(); | ||||||
|  |     void enbale_action_buttons(bool enable); | ||||||
|     float get_nozzle_value(); |     float get_nozzle_value(); | ||||||
| 
 | 
 | ||||||
|     wxPanel*                   m_history_data_panel; |     wxPanel*                   m_history_data_panel; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 liz.li
						liz.li