46 std::vector<DRC_RE_FIELD_POSITION> positions =
m_data->GetFieldPositions();
48 wxWindow* eventSource =
nullptr;
50 for( wxWindow* win = aParent; win; win = win->GetParent() )
59 auto* minWidthField =
AddField<wxTextCtrl>( wxS(
"min_width" ), positions[0], wxTE_CENTRE | wxTE_PROCESS_ENTER );
61 std::make_unique<UNIT_BINDER>( &
m_unitsProvider, eventSource,
nullptr, minWidthField->GetControl(),
62 minWidthField->GetLabel(),
false,
false );
66 wxTE_CENTRE | wxTE_PROCESS_ENTER );
68 std::make_unique<UNIT_BINDER>( &
m_unitsProvider, eventSource,
nullptr, prefWidthField->GetControl(),
69 prefWidthField->GetLabel(),
false,
false );
73 wxTE_CENTRE | wxTE_PROCESS_ENTER );
75 std::make_unique<UNIT_BINDER>( &
m_unitsProvider, eventSource,
nullptr, maxWidthField->GetControl(),
76 maxWidthField->GetLabel(),
false,
false );
81 wxTE_CENTRE | wxTE_PROCESS_ENTER );
83 minGapField->GetLabel(),
false,
false );
87 wxTE_CENTRE | wxTE_PROCESS_ENTER );
89 std::make_unique<UNIT_BINDER>( &
m_unitsProvider, eventSource,
nullptr, prefGapField->GetControl(),
90 prefGapField->GetLabel(),
false,
false );
94 wxTE_CENTRE | wxTE_PROCESS_ENTER );
96 maxGapField->GetLabel(),
false,
false );
101 wxTE_CENTRE | wxTE_PROCESS_ENTER );
103 std::make_unique<UNIT_BINDER>( &
m_unitsProvider, eventSource,
nullptr, maxUncoupledField->GetControl(),
104 maxUncoupledField->GetLabel(),
false,
false );
107 auto* maxSkewField =
AddField<wxTextCtrl>( wxS(
"max_skew" ), positions[7], wxTE_CENTRE | wxTE_PROCESS_ENTER );
109 maxSkewField->GetLabel(),
false,
false );
112 auto notifyModified = [
this]( wxCommandEvent& )
119 minWidthField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
120 prefWidthField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
121 maxWidthField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
122 minGapField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
123 prefGapField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
124 maxGapField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
125 maxUncoupledField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
126 maxSkewField->GetControl()->Bind( wxEVT_TEXT, notifyModified );
128 auto notifySave = [
this]( wxCommandEvent& aEvent )
135 minWidthField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
136 prefWidthField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
137 maxWidthField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
138 minGapField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
139 prefGapField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
140 maxGapField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
141 maxUncoupledField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
142 maxSkewField->GetControl()->Bind( wxEVT_TEXT_ENTER, notifySave );
wxString result
Test unit parsing edge cases and error handling.