12PANEL_SETUP_TEARDROPS_BASE::PANEL_SETUP_TEARDROPS_BASE( wxWindow* parent, wxWindowID
id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString&
name ) : wxPanel( parent, id, pos, size, style,
name )
14 wxBoxSizer* mainSizer;
15 mainSizer =
new wxBoxSizer( wxVERTICAL );
19 m_roundShapesLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Default properties for round shapes:"), wxDefaultPosition, wxDefaultSize, 0 );
23 m_staticline1 =
new wxStaticLine(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
26 wxBoxSizer* bSizerShapeColumns;
27 bSizerShapeColumns =
new wxBoxSizer( wxHORIZONTAL );
29 wxBoxSizer* bSizerLeftCol;
30 bSizerLeftCol =
new wxBoxSizer( wxVERTICAL );
32 m_bitmapTeardrop =
new wxStaticBitmap(
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
33 bSizerLeftCol->Add(
m_bitmapTeardrop, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
36 bSizer41 =
new wxBoxSizer( wxHORIZONTAL );
38 m_edgesLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Edges:"), wxDefaultPosition, wxDefaultSize, 0 );
40 bSizer41->Add(
m_edgesLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
42 m_rbStraightLines =
new wxRadioButton(
this, wxID_ANY,
_(
"Straight lines"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
45 m_rbCurved =
new wxRadioButton(
this, wxID_ANY,
_(
"Curved"), wxDefaultPosition, wxDefaultSize, 0 );
46 bSizer41->Add(
m_rbCurved, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
49 bSizerLeftCol->Add( bSizer41, 0, wxEXPAND|wxBOTTOM, 4 );
52 bSizerShapeColumns->Add( bSizerLeftCol, 0, wxEXPAND|wxRIGHT, 10 );
55 bSizerShapeColumns->Add( 10, 0, 0, wxEXPAND, 5 );
57 wxGridBagSizer* gbSizer;
58 gbSizer =
new wxGridBagSizer( 2, 3 );
59 gbSizer->SetFlexibleDirection( wxBOTH );
60 gbSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
61 gbSizer->SetEmptyCellSize( wxSize( 10,7 ) );
63 m_stLenPercentLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
65 gbSizer->Add(
m_stLenPercentLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
67 m_spLenPercent =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
69 gbSizer->Add(
m_spLenPercent, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
71 wxBoxSizer* bSizer131;
72 bSizer131 =
new wxBoxSizer( wxHORIZONTAL );
74 wxStaticText* stLenPercentUnits;
75 stLenPercentUnits =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
76 stLenPercentUnits->Wrap( -1 );
77 bSizer131->Add( stLenPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
79 wxStaticText* stLenPercentHint;
80 stLenPercentHint =
new wxStaticText(
this, wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
81 stLenPercentHint->Wrap( -1 );
82 stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
84 bSizer131->Add( stLenPercentHint, 0, wxALIGN_BOTTOM, 1 );
86 wxStaticText* staticText76;
87 staticText76 =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
88 staticText76->Wrap( -1 );
89 bSizer131->Add( staticText76, 0, wxALIGN_CENTER_VERTICAL, 5 );
92 gbSizer->Add( bSizer131, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
94 m_stMaxLen =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
96 gbSizer->Add(
m_stMaxLen, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
98 m_tcTdMaxLen =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
99 gbSizer->Add(
m_tcTdMaxLen, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
101 m_stMaxLenUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
103 gbSizer->Add(
m_stMaxLenUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
105 m_stWidthLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
107 gbSizer->Add(
m_stWidthLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
109 m_spWidthPercent =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
111 gbSizer->Add(
m_spWidthPercent, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
113 wxBoxSizer* bSizer13;
114 bSizer13 =
new wxBoxSizer( wxHORIZONTAL );
116 wxStaticText* stWidthPercentUnits;
117 stWidthPercentUnits =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
118 stWidthPercentUnits->Wrap( -1 );
119 bSizer13->Add( stWidthPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
121 wxStaticText* stWidthPercentHint;
122 stWidthPercentHint =
new wxStaticText(
this, wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
123 stWidthPercentHint->Wrap( -1 );
124 stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
126 bSizer13->Add( stWidthPercentHint, 0, wxALIGN_BOTTOM, 1 );
128 wxStaticText* stWidthPercentSuffix;
129 stWidthPercentSuffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
130 stWidthPercentSuffix->Wrap( -1 );
131 bSizer13->Add( stWidthPercentSuffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
134 gbSizer->Add( bSizer13, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
136 m_stMaxWidthLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
138 gbSizer->Add(
m_stMaxWidthLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
140 m_tcMaxWidth =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
141 gbSizer->Add(
m_tcMaxWidth, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
143 m_stMaxWidthUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
145 gbSizer->Add(
m_stMaxWidthUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
147 m_curvePointsLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Curve points:"), wxDefaultPosition, wxDefaultSize, 0 );
149 gbSizer->Add(
m_curvePointsLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
151 m_curvePointsCtrl =
new wxSpinCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 10, 5 );
152 gbSizer->Add(
m_curvePointsCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
154 m_cbPreferZoneConnection =
new wxCheckBox(
this, wxID_ANY,
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
155 m_cbPreferZoneConnection->SetToolTip(
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
157 gbSizer->Add(
m_cbPreferZoneConnection, wxGBPosition( 1, 3 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
159 m_stHDRatio =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum track width:"), wxDefaultPosition, wxDefaultSize, 0 );
161 m_stHDRatio->SetToolTip(
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
163 gbSizer->Add(
m_stHDRatio, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
165 m_spTeardropHDPercent =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
167 m_spTeardropHDPercent->SetToolTip(
_(
"Tracks which are similar in size to the pad or via do not need teardrops.") );
169 gbSizer->Add(
m_spTeardropHDPercent, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
171 wxBoxSizer* bSizer1311;
172 bSizer1311 =
new wxBoxSizer( wxHORIZONTAL );
174 wxStaticText* minTrackWidthUnits;
175 minTrackWidthUnits =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
176 minTrackWidthUnits->Wrap( -1 );
177 bSizer1311->Add( minTrackWidthUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
179 wxStaticText* stMinTrackWidthHint;
180 stMinTrackWidthHint =
new wxStaticText(
this, wxID_ANY,
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
181 stMinTrackWidthHint->Wrap( -1 );
182 stMinTrackWidthHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
184 bSizer1311->Add( stMinTrackWidthHint, 0, wxALIGN_BOTTOM, 1 );
186 wxStaticText* stMinTrackWidthSuffix;
187 stMinTrackWidthSuffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
188 stMinTrackWidthSuffix->Wrap( -1 );
189 bSizer1311->Add( stMinTrackWidthSuffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
192 gbSizer->Add( bSizer1311, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
194 m_cbTeardropsUseNextTrack =
new wxCheckBox(
this, wxID_ANY,
_(
"Allow teardrop to span two track segments"), wxDefaultPosition, wxDefaultSize, 0 );
196 m_cbTeardropsUseNextTrack->SetToolTip(
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
198 gbSizer->Add(
m_cbTeardropsUseNextTrack, wxGBPosition( 6, 2 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
201 bSizerShapeColumns->Add( gbSizer, 0, wxEXPAND|wxLEFT, 20 );
204 m_gridSizer->Add( bSizerShapeColumns, 1, wxEXPAND, 5 );
209 m_rectShapesLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Default properties for rectangular shapes:"), wxDefaultPosition, wxDefaultSize, 0 );
213 m_staticline2 =
new wxStaticLine(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
216 wxBoxSizer* bSizerShapeColumns1;
217 bSizerShapeColumns1 =
new wxBoxSizer( wxHORIZONTAL );
219 wxBoxSizer* bSizerLeftCol1;
220 bSizerLeftCol1 =
new wxBoxSizer( wxVERTICAL );
222 m_bitmapTeardrop1 =
new wxStaticBitmap(
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
223 bSizerLeftCol1->Add(
m_bitmapTeardrop1, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
225 wxBoxSizer* bSizer411;
226 bSizer411 =
new wxBoxSizer( wxHORIZONTAL );
228 m_edgesLabel1 =
new wxStaticText(
this, wxID_ANY,
_(
"Edges:"), wxDefaultPosition, wxDefaultSize, 0 );
230 bSizer411->Add(
m_edgesLabel1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
232 m_rbStraightLines1 =
new wxRadioButton(
this, wxID_ANY,
_(
"Straight lines"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
235 m_rbCurved1 =
new wxRadioButton(
this, wxID_ANY,
_(
"Curved"), wxDefaultPosition, wxDefaultSize, 0 );
236 bSizer411->Add(
m_rbCurved1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
239 bSizerLeftCol1->Add( bSizer411, 0, wxEXPAND|wxBOTTOM, 4 );
242 bSizerShapeColumns1->Add( bSizerLeftCol1, 0, wxEXPAND|wxRIGHT, 10 );
245 bSizerShapeColumns1->Add( 10, 0, 0, wxEXPAND, 5 );
247 wxGridBagSizer* gbSizer1;
248 gbSizer1 =
new wxGridBagSizer( 2, 3 );
249 gbSizer1->SetFlexibleDirection( wxBOTH );
250 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
251 gbSizer1->SetEmptyCellSize( wxSize( 10,7 ) );
253 m_stLenPercent1Label =
new wxStaticText(
this, wxID_ANY,
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
255 gbSizer1->Add(
m_stLenPercent1Label, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
257 m_spLenPercent1 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
259 gbSizer1->Add(
m_spLenPercent1, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
261 wxBoxSizer* bSizer122;
262 bSizer122 =
new wxBoxSizer( wxHORIZONTAL );
264 wxStaticText* stLenPercent1Units;
265 stLenPercent1Units =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
266 stLenPercent1Units->Wrap( -1 );
267 bSizer122->Add( stLenPercent1Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
269 wxStaticText* stLenPercent1Hint;
270 stLenPercent1Hint =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
271 stLenPercent1Hint->Wrap( -1 );
272 stLenPercent1Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
274 bSizer122->Add( stLenPercent1Hint, 0, wxALIGN_BOTTOM, 1 );
276 wxStaticText* stLenPercent1Suffix;
277 stLenPercent1Suffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
278 stLenPercent1Suffix->Wrap( -1 );
279 bSizer122->Add( stLenPercent1Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
282 gbSizer1->Add( bSizer122, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
284 m_stMaxLen1 =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
286 gbSizer1->Add(
m_stMaxLen1, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
288 m_tcTdMaxLen1 =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
289 gbSizer1->Add(
m_tcTdMaxLen1, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
291 m_stMaxLen1Units =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
293 gbSizer1->Add(
m_stMaxLen1Units, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
295 m_stWidth1Label =
new wxStaticText(
this, wxID_ANY,
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
297 gbSizer1->Add(
m_stWidth1Label, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
299 m_spWidthPercent1 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
301 gbSizer1->Add(
m_spWidthPercent1, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
303 wxBoxSizer* bSizer12;
304 bSizer12 =
new wxBoxSizer( wxHORIZONTAL );
306 wxStaticText* stWidthPercent1Units;
307 stWidthPercent1Units =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
308 stWidthPercent1Units->Wrap( -1 );
309 bSizer12->Add( stWidthPercent1Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
311 wxStaticText* stSizePercent1Hint;
312 stSizePercent1Hint =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
313 stSizePercent1Hint->Wrap( -1 );
314 stSizePercent1Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
316 bSizer12->Add( stSizePercent1Hint, 0, wxALIGN_BOTTOM, 1 );
318 wxStaticText* stSizePercent1Suffix;
319 stSizePercent1Suffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
320 stSizePercent1Suffix->Wrap( -1 );
321 bSizer12->Add( stSizePercent1Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
324 gbSizer1->Add( bSizer12, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
326 m_stMaxWidth1Label =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
328 gbSizer1->Add(
m_stMaxWidth1Label, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
330 m_tcMaxWidth1 =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
331 gbSizer1->Add(
m_tcMaxWidth1, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
333 m_stMaxWidth1Units =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
335 gbSizer1->Add(
m_stMaxWidth1Units, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
337 m_curvePoints1Label =
new wxStaticText(
this, wxID_ANY,
_(
"Curve points:"), wxDefaultPosition, wxDefaultSize, 0 );
339 gbSizer1->Add(
m_curvePoints1Label, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
341 m_curvePointsCtrl1 =
new wxSpinCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 10, 5 );
342 gbSizer1->Add(
m_curvePointsCtrl1, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
344 m_cbPreferZoneConnection1 =
new wxCheckBox(
this, wxID_ANY,
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
345 m_cbPreferZoneConnection1->SetToolTip(
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
349 m_stHDRatio1 =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum track width:"), wxDefaultPosition, wxDefaultSize, 0 );
351 m_stHDRatio1->SetToolTip(
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
353 gbSizer1->Add(
m_stHDRatio1, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
355 m_spTeardropHDPercent1 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
359 gbSizer1->Add(
m_spTeardropHDPercent1, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
361 wxBoxSizer* bSizer1221;
362 bSizer1221 =
new wxBoxSizer( wxHORIZONTAL );
364 wxStaticText* minTrackWidthUnits1;
365 minTrackWidthUnits1 =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
366 minTrackWidthUnits1->Wrap( -1 );
367 bSizer1221->Add( minTrackWidthUnits1, 0, 0, 5 );
369 wxStaticText* stMinTrackWidthHint1;
370 stMinTrackWidthHint1 =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
371 stMinTrackWidthHint1->Wrap( -1 );
372 stMinTrackWidthHint1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
374 bSizer1221->Add( stMinTrackWidthHint1, 0, wxALIGN_BOTTOM, 1 );
376 wxStaticText* staticText73;
377 staticText73 =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
378 staticText73->Wrap( -1 );
379 bSizer1221->Add( staticText73, 0, wxALIGN_CENTER_VERTICAL, 5 );
382 gbSizer1->Add( bSizer1221, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
384 m_cbTeardropsUseNextTrack1 =
new wxCheckBox(
this, wxID_ANY,
_(
"Allow teardrop to span two track segments"), wxDefaultPosition, wxDefaultSize, 0 );
386 m_cbTeardropsUseNextTrack1->SetToolTip(
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
388 gbSizer1->Add(
m_cbTeardropsUseNextTrack1, wxGBPosition( 6, 2 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
391 bSizerShapeColumns1->Add( gbSizer1, 0, wxEXPAND|wxLEFT, 20 );
394 m_gridSizer->Add( bSizerShapeColumns1, 1, wxEXPAND, 5 );
399 m_tracksLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Properties for track-to-track teardrops:"), wxDefaultPosition, wxDefaultSize, 0 );
403 m_staticline3 =
new wxStaticLine(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
406 wxBoxSizer* bSizerShapeColumns2;
407 bSizerShapeColumns2 =
new wxBoxSizer( wxHORIZONTAL );
409 wxBoxSizer* bSizerLeftCol2;
410 bSizerLeftCol2 =
new wxBoxSizer( wxVERTICAL );
412 m_bitmapTeardrop2 =
new wxStaticBitmap(
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
413 bSizerLeftCol2->Add(
m_bitmapTeardrop2, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
415 wxBoxSizer* bSizer412;
416 bSizer412 =
new wxBoxSizer( wxHORIZONTAL );
418 m_edgesLabel2 =
new wxStaticText(
this, wxID_ANY,
_(
"Edges:"), wxDefaultPosition, wxDefaultSize, 0 );
420 bSizer412->Add(
m_edgesLabel2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
422 m_rbStraightLines2 =
new wxRadioButton(
this, wxID_ANY,
_(
"Straight lines"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
425 m_rbCurved2 =
new wxRadioButton(
this, wxID_ANY,
_(
"Curved"), wxDefaultPosition, wxDefaultSize, 0 );
426 bSizer412->Add(
m_rbCurved2, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
429 bSizerLeftCol2->Add( bSizer412, 0, wxEXPAND|wxBOTTOM, 4 );
432 bSizerShapeColumns2->Add( bSizerLeftCol2, 0, wxEXPAND|wxRIGHT, 10 );
435 bSizerShapeColumns2->Add( 10, 0, 0, wxEXPAND, 5 );
437 wxGridBagSizer* gbSizer2;
438 gbSizer2 =
new wxGridBagSizer( 2, 3 );
439 gbSizer2->SetFlexibleDirection( wxBOTH );
440 gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
441 gbSizer2->SetEmptyCellSize( wxSize( 10,7 ) );
443 m_stLenPercent2Label =
new wxStaticText(
this, wxID_ANY,
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
445 gbSizer2->Add(
m_stLenPercent2Label, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
447 m_spLenPercent2 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
449 gbSizer2->Add(
m_spLenPercent2, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
451 wxBoxSizer* bSizer1211;
452 bSizer1211 =
new wxBoxSizer( wxHORIZONTAL );
454 wxStaticText* stLenPercent2Units;
455 stLenPercent2Units =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
456 stLenPercent2Units->Wrap( -1 );
457 bSizer1211->Add( stLenPercent2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
459 wxStaticText* stLenPercent2Hint;
460 stLenPercent2Hint =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
461 stLenPercent2Hint->Wrap( -1 );
462 stLenPercent2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
464 bSizer1211->Add( stLenPercent2Hint, 0, wxALIGN_BOTTOM, 1 );
466 wxStaticText* stLenPercent2Suffix;
467 stLenPercent2Suffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
468 stLenPercent2Suffix->Wrap( -1 );
469 bSizer1211->Add( stLenPercent2Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
472 gbSizer2->Add( bSizer1211, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
474 m_stMaxLen2 =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
476 gbSizer2->Add(
m_stMaxLen2, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
478 m_tcTdMaxLen2 =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
479 gbSizer2->Add(
m_tcTdMaxLen2, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
481 m_stMaxLen2Units =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
483 gbSizer2->Add(
m_stMaxLen2Units, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
485 m_stWidth2Label =
new wxStaticText(
this, wxID_ANY,
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
487 gbSizer2->Add(
m_stWidth2Label, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
489 m_spWidthPercent2 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
491 gbSizer2->Add(
m_spWidthPercent2, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
493 wxBoxSizer* bSizer121;
494 bSizer121 =
new wxBoxSizer( wxHORIZONTAL );
496 wxStaticText* stWidthPercent2Units;
497 stWidthPercent2Units =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
498 stWidthPercent2Units->Wrap( -1 );
499 bSizer121->Add( stWidthPercent2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
501 wxStaticText* stWidthPercent2Hint;
502 stWidthPercent2Hint =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
503 stWidthPercent2Hint->Wrap( -1 );
504 stWidthPercent2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
506 bSizer121->Add( stWidthPercent2Hint, 0, wxALIGN_BOTTOM, 1 );
508 wxStaticText* stWidthPercent2Suffix;
509 stWidthPercent2Suffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
510 stWidthPercent2Suffix->Wrap( -1 );
511 bSizer121->Add( stWidthPercent2Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
514 gbSizer2->Add( bSizer121, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
516 m_stMaxWidth2Label =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
518 gbSizer2->Add(
m_stMaxWidth2Label, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
520 m_tcMaxWidth2 =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
521 gbSizer2->Add(
m_tcMaxWidth2, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
523 m_stMaxWidth2Units =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
525 gbSizer2->Add(
m_stMaxWidth2Units, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
527 m_curvePoints2Label =
new wxStaticText(
this, wxID_ANY,
_(
"Curve points:"), wxDefaultPosition, wxDefaultSize, 0 );
529 gbSizer2->Add(
m_curvePoints2Label, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
531 m_curvePointsCtrl2 =
new wxSpinCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 3, 10, 5 );
532 gbSizer2->Add(
m_curvePointsCtrl2, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
534 m_stHDRatio2 =
new wxStaticText(
this, wxID_ANY,
_(
"Maximum track width"), wxDefaultPosition, wxDefaultSize, 0 );
536 m_stHDRatio2->SetToolTip(
_(
"Max track width ratio to create a teardrop.\n100 always creates a teardrop.") );
538 gbSizer2->Add(
m_stHDRatio2, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
540 m_spTeardropHDPercent2 =
new wxSpinCtrlDouble(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
544 gbSizer2->Add(
m_spTeardropHDPercent2, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
546 wxBoxSizer* bSizer12211;
547 bSizer12211 =
new wxBoxSizer( wxHORIZONTAL );
549 wxStaticText* stMinTrackWidth2Units;
550 stMinTrackWidth2Units =
new wxStaticText(
this, wxID_ANY,
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
551 stMinTrackWidth2Units->Wrap( -1 );
552 bSizer12211->Add( stMinTrackWidth2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
554 wxStaticText* stMinTrackWidth2Hint;
555 stMinTrackWidth2Hint =
new wxStaticText(
this, wxID_ANY,
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
556 stMinTrackWidth2Hint->Wrap( -1 );
557 stMinTrackWidth2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
559 bSizer12211->Add( stMinTrackWidth2Hint, 0, wxALIGN_CENTER_VERTICAL, 5 );
561 wxStaticText* stMinTrackWidth2Suffix;
562 stMinTrackWidth2Suffix =
new wxStaticText(
this, wxID_ANY,
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
563 stMinTrackWidth2Suffix->Wrap( -1 );
564 bSizer12211->Add( stMinTrackWidth2Suffix, 0, wxALIGN_BOTTOM|wxBOTTOM, 1 );
567 gbSizer2->Add( bSizer12211, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
569 m_cbTeardropsUseNextTrack2 =
new wxCheckBox(
this, wxID_ANY,
_(
"Allow teardrop to span two track segments"), wxDefaultPosition, wxDefaultSize, 0 );
571 m_cbTeardropsUseNextTrack2->SetToolTip(
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
573 gbSizer2->Add(
m_cbTeardropsUseNextTrack2, wxGBPosition( 6, 2 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
576 bSizerShapeColumns2->Add( gbSizer2, 0, wxEXPAND|wxLEFT, 20 );
579 m_gridSizer->Add( bSizerShapeColumns2, 1, wxEXPAND, 5 );
588 this->SetSizer( mainSizer );
590 mainSizer->Fit(
this );
wxRadioButton * m_rbStraightLines
wxSpinCtrl * m_curvePointsCtrl1
wxStaticText * m_stMaxLen1Units
wxStaticText * m_edgesLabel2
wxSpinCtrl * m_curvePointsCtrl2
wxStaticText * m_tracksLabel
wxSpinCtrlDouble * m_spLenPercent
wxTextCtrl * m_tcMaxWidth1
wxStaticLine * m_staticline2
wxStaticText * m_stMaxLen1
wxCheckBox * m_cbTeardropsUseNextTrack
wxStaticText * m_stMaxWidth2Units
wxTextCtrl * m_tcTdMaxLen2
wxStaticLine * m_staticline3
wxSpinCtrl * m_curvePointsCtrl
wxStaticText * m_edgesLabel
wxTextCtrl * m_tcMaxWidth2
wxTextCtrl * m_tcTdMaxLen1
wxCheckBox * m_cbTeardropsUseNextTrack1
wxTextCtrl * m_tcTdMaxLen
wxCheckBox * m_cbTeardropsUseNextTrack2
wxStaticLine * m_staticline1
wxStaticText * m_rectShapesLabel
wxSpinCtrlDouble * m_spTeardropHDPercent2
wxStaticText * m_stLenPercent1Label
wxRadioButton * m_rbCurved
wxStaticText * m_stHDRatio2
wxStaticText * m_stWidthLabel
wxStaticText * m_edgesLabel1
PANEL_SETUP_TEARDROPS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
wxStaticText * m_curvePointsLabel
wxSpinCtrlDouble * m_spWidthPercent
wxSpinCtrlDouble * m_spTeardropHDPercent1
wxStaticText * m_stMaxWidth1Units
wxStaticText * m_stMaxLen2
wxStaticText * m_stMaxWidth2Label
wxStaticBitmap * m_bitmapTeardrop2
wxStaticText * m_curvePoints1Label
wxStaticText * m_stMaxLenUnits
wxStaticText * m_stMaxWidthUnits
wxStaticText * m_stMaxWidthLabel
wxStaticText * m_stLenPercentLabel
wxRadioButton * m_rbCurved2
wxStaticBitmap * m_bitmapTeardrop1
wxCheckBox * m_cbPreferZoneConnection1
wxTextCtrl * m_tcMaxWidth
wxStaticText * m_stLenPercent2Label
wxStaticText * m_stMaxLen
wxStaticText * m_stHDRatio1
wxRadioButton * m_rbCurved1
wxStaticText * m_stWidth1Label
~PANEL_SETUP_TEARDROPS_BASE()
wxStaticText * m_roundShapesLabel
wxCheckBox * m_cbPreferZoneConnection
wxStaticBitmap * m_bitmapTeardrop
wxStaticText * m_stHDRatio
wxStaticText * m_stWidth2Label
wxStaticText * m_stMaxWidth1Label
wxRadioButton * m_rbStraightLines2
wxSpinCtrlDouble * m_spLenPercent2
wxStaticText * m_curvePoints2Label
wxSpinCtrlDouble * m_spWidthPercent2
wxRadioButton * m_rbStraightLines1
wxStaticText * m_stMaxLen2Units
wxSpinCtrlDouble * m_spLenPercent1
wxSpinCtrlDouble * m_spWidthPercent1
wxSpinCtrlDouble * m_spTeardropHDPercent