14DIALOG_TRACK_VIA_PROPERTIES_BASE::DIALOG_TRACK_VIA_PROPERTIES_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
16 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
20 m_sbCommonSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Common") ), wxVERTICAL );
22 wxBoxSizer* bSizerNetWidgets;
23 bSizerNetWidgets =
new wxBoxSizer( wxHORIZONTAL );
25 wxBoxSizer* bNetWidgetsLeftCol;
26 bNetWidgetsLeftCol =
new wxBoxSizer( wxHORIZONTAL );
33 bNetWidgetsLeftCol->Add(
m_netSelector, 1, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
36 bSizerNetWidgets->Add( bNetWidgetsLeftCol, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 10 );
38 wxBoxSizer* bNetWidgetsRightCol;
39 bNetWidgetsRightCol =
new wxBoxSizer( wxHORIZONTAL );
41 m_viaNotFree =
new wxCheckBox(
m_sbCommonSizer->GetStaticBox(), wxID_ANY,
_(
"Automatically update via nets"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
42 m_viaNotFree->SetToolTip(
_(
"Automatically change the net of this via when the pads or zones it touches are changed") );
44 bNetWidgetsRightCol->Add(
m_viaNotFree, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
47 bSizerNetWidgets->Add( bNetWidgetsRightCol, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
50 m_sbCommonSizer->Add( bSizerNetWidgets, 5, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
58 m_lockedCbox =
new wxCheckBox(
m_sbCommonSizer->GetStaticBox(), wxID_ANY,
_(
"Locked"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
64 m_sbTrackSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Tracks") ), wxHORIZONTAL );
66 wxBoxSizer* bSizerTracksLeftCol;
67 bSizerTracksLeftCol =
new wxBoxSizer( wxVERTICAL );
69 wxFlexGridSizer* fgTrackEnds;
70 fgTrackEnds =
new wxFlexGridSizer( 7, 5, 3, 3 );
71 fgTrackEnds->AddGrowableCol( 1 );
72 fgTrackEnds->AddGrowableCol( 3 );
73 fgTrackEnds->SetFlexibleDirection( wxBOTH );
74 fgTrackEnds->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
99 fgTrackEnds->Add(
m_TrackEndXCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 3 );
106 fgTrackEnds->Add(
m_TrackEndYCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 3 );
113 bSizerTracksLeftCol->Add( fgTrackEnds, 0, wxEXPAND|wxBOTTOM, 8 );
115 wxGridBagSizer* gbSizer1;
116 gbSizer1 =
new wxGridBagSizer( 3, 3 );
117 gbSizer1->SetFlexibleDirection( wxBOTH );
118 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
119 gbSizer1->SetEmptyCellSize( wxSize( -1,0 ) );
125 wxArrayString m_predefinedTrackWidthsCtrlChoices;
128 gbSizer1->Add(
m_predefinedTrackWidthsCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM, 3 );
136 gbSizer1->Add(
m_TrackWidthLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
139 gbSizer1->Add(
m_TrackWidthCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
143 gbSizer1->Add(
m_TrackWidthUnit, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
146 gbSizer1->AddGrowableCol( 1 );
148 bSizerTracksLeftCol->Add( gbSizer1, 1, wxEXPAND|wxTOP, 5 );
151 m_sbTrackSizer->Add( bSizerTracksLeftCol, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
156 wxBoxSizer* bSizerTrackRightControl;
157 bSizerTrackRightControl =
new wxBoxSizer( wxVERTICAL );
159 wxFlexGridSizer* fgTrackRightSizer;
160 fgTrackRightSizer =
new wxFlexGridSizer( 1, 3, 3, 5 );
161 fgTrackRightSizer->AddGrowableCol( 2 );
162 fgTrackRightSizer->SetFlexibleDirection( wxBOTH );
163 fgTrackRightSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
167 fgTrackRightSizer->Add(
m_TrackLayerLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
170 fgTrackRightSizer->Add( 25, 0, 0, wxEXPAND, 5 );
173 fgTrackRightSizer->Add(
m_TrackLayerCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
176 bSizerTrackRightControl->Add( fgTrackRightSizer, 0, wxEXPAND|wxRIGHT, 3 );
178 wxBoxSizer* bSizerTechLayers;
179 bSizerTechLayers =
new wxBoxSizer( wxVERTICAL );
182 bSizerTechLayers->Add( 0, 15, 0, wxEXPAND, 5 );
184 wxBoxSizer* bSizer26;
185 bSizer26 =
new wxBoxSizer( wxHORIZONTAL );
189 bSizer26->Add(
m_techLayersLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
192 bSizer26->Add(
m_staticline3, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 3 );
195 bSizerTechLayers->Add( bSizer26, 0, wxEXPAND, 5 );
197 wxFlexGridSizer* fgSizerTrackMaskMargin;
198 fgSizerTrackMaskMargin =
new wxFlexGridSizer( 0, 4, 3, 5 );
199 fgSizerTrackMaskMargin->AddGrowableCol( 2 );
200 fgSizerTrackMaskMargin->SetFlexibleDirection( wxBOTH );
201 fgSizerTrackMaskMargin->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
203 m_trackHasSolderMask =
new wxCheckBox(
m_sbTrackSizer->GetStaticBox(), wxID_ANY,
_(
"Solder mask"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
211 m_trackMaskMarginCtrl->SetToolTip(
_(
"This is the local clearance between the track and the solder mask opening.\nLeave blank to use the value defined in the Board Setup.") );
220 bSizerTechLayers->Add( fgSizerTrackMaskMargin, 1, wxEXPAND|wxTOP, 2 );
223 bSizerTrackRightControl->Add( bSizerTechLayers, 1, wxEXPAND, 3 );
231 m_sbViaSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Vias") ), wxVERTICAL );
233 wxBoxSizer* bSizerViaCols;
234 bSizerViaCols =
new wxBoxSizer( wxHORIZONTAL );
236 wxBoxSizer* bSizerViasLeftCol;
237 bSizerViasLeftCol =
new wxBoxSizer( wxVERTICAL );
239 wxFlexGridSizer* fgViaPos;
240 fgViaPos =
new wxFlexGridSizer( 6, 5, 4, 2 );
241 fgViaPos->AddGrowableCol( 1 );
242 fgViaPos->AddGrowableCol( 3 );
243 fgViaPos->SetFlexibleDirection( wxBOTH );
244 fgViaPos->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
246 m_ViaXLabel =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Position X:"), wxDefaultPosition, wxDefaultSize, 0 );
248 fgViaPos->Add(
m_ViaXLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 1 );
250 m_ViaXCtrl =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
251 fgViaPos->Add(
m_ViaXCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 3 );
253 m_ViaYLabel =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Y:"), wxDefaultPosition, wxDefaultSize, 0 );
255 fgViaPos->Add(
m_ViaYLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 8 );
257 m_ViaYCtrl =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
258 fgViaPos->Add(
m_ViaYCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 3 );
260 m_ViaYUnit =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
262 fgViaPos->Add(
m_ViaYUnit, 0, wxALIGN_CENTER_VERTICAL, 5 );
265 bSizerViasLeftCol->Add( fgViaPos, 0, wxEXPAND|wxBOTTOM, 8 );
267 wxGridBagSizer* gbSizer3;
268 gbSizer3 =
new wxGridBagSizer( 3, 3 );
269 gbSizer3->SetFlexibleDirection( wxBOTH );
270 gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
271 gbSizer3->SetEmptyCellSize( wxSize( -1,0 ) );
277 wxArrayString m_predefinedViaSizesCtrlChoices;
280 gbSizer3->Add(
m_predefinedViaSizesCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM, 3 );
292 wxString m_cbPadstackModeChoices[] = {
_(
"Normal"),
_(
"Front/Inner/Back"),
_(
"Custom") };
293 int m_cbPadstackModeNChoices =
sizeof( m_cbPadstackModeChoices ) /
sizeof( wxString );
294 m_cbPadstackMode =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbPadstackModeNChoices, m_cbPadstackModeChoices, 0 );
298 m_stEditLayer =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Edit layer:"), wxDefaultPosition, wxDefaultSize, 0 );
302 wxArrayString m_cbEditLayerChoices;
303 m_cbEditLayer =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbEditLayerChoices, 0 );
312 gbSizer3->Add(
m_ViaDiameterLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxLEFT|wxALIGN_CENTER_VERTICAL, 1 );
315 gbSizer3->Add(
m_ViaDiameterCtrl, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
319 gbSizer3->Add(
m_ViaDiameterUnit, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
323 gbSizer3->Add(
m_ViaDrillLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 1 );
325 m_ViaDrillCtrl =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
326 gbSizer3->Add(
m_ViaDrillCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
330 gbSizer3->Add(
m_ViaDrillUnit, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
333 gbSizer3->AddGrowableCol( 1 );
335 bSizerViasLeftCol->Add( gbSizer3, 1, wxEXPAND|wxTOP, 5 );
338 bSizerViaCols->Add( bSizerViasLeftCol, 1, wxEXPAND, 5 );
341 bSizerViaCols->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 15 );
343 wxBoxSizer* viaRightColumn;
344 viaRightColumn =
new wxBoxSizer( wxVERTICAL );
346 wxGridBagSizer* gbSizer4;
347 gbSizer4 =
new wxGridBagSizer( 0, 0 );
348 gbSizer4->SetFlexibleDirection( wxBOTH );
349 gbSizer4->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
353 gbSizer4->Add(
m_ViaTypeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
355 wxString m_ViaTypeChoiceChoices[] = {
_(
"Through"),
_(
"Micro"),
_(
"Blind"),
_(
"Buried") };
356 int m_ViaTypeChoiceNChoices =
sizeof( m_ViaTypeChoiceChoices ) /
sizeof( wxString );
357 m_ViaTypeChoice =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ViaTypeChoiceNChoices, m_ViaTypeChoiceChoices, 0 );
361 gbSizer4->Add(
m_ViaTypeChoice, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
365 gbSizer4->Add(
m_ViaStartLayerLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
368 gbSizer4->Add(
m_ViaStartLayer, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
372 gbSizer4->Add(
m_ViaEndLayerLabel1, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
375 gbSizer4->Add(
m_ViaEndLayer, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
379 gbSizer4->Add(
m_annularRingsLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
381 wxString m_annularRingsCtrlChoices[] = {
_(
"All copper layers"),
_(
"Start, end, and connected layers"),
_(
"Connected layers only"),
_(
"Start and end layers only") };
382 int m_annularRingsCtrlNChoices =
sizeof( m_annularRingsCtrlChoices ) /
sizeof( wxString );
383 m_annularRingsCtrl =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_annularRingsCtrlNChoices, m_annularRingsCtrlChoices, 0 );
385 gbSizer4->Add(
m_annularRingsCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 4 );
389 gbSizer4->Add(
m_protectionPresetsLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
391 wxArrayString m_protectionFeaturesChoices;
394 m_protectionFeatures->SetToolTip(
_(
"Select which protection feature according to IPC-4761 the via should have.") );
396 gbSizer4->Add(
m_protectionFeatures, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 4 );
399 gbSizer4->AddGrowableCol( 1 );
401 viaRightColumn->Add( gbSizer4, 1, wxEXPAND, 5 );
404 bSizerViaCols->Add( viaRightColumn, 1, wxEXPAND, 5 );
407 m_sbViaSizer->Add( bSizerViaCols, 0, wxALL|wxEXPAND, 5 );
409 wxBoxSizer* bBackdrillLabel;
410 bBackdrillLabel =
new wxBoxSizer( wxHORIZONTAL );
414 bBackdrillLabel->Add(
m_backDrillLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
416 m_staticline2 =
new wxStaticLine(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
417 bBackdrillLabel->Add(
m_staticline2, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8 );
422 wxBoxSizer* bSizerBackdrill;
423 bSizerBackdrill =
new wxBoxSizer( wxHORIZONTAL );
425 wxFlexGridSizer* fgSizer6;
426 fgSizer6 =
new wxFlexGridSizer( 0, 2, 0, 0 );
427 fgSizer6->SetFlexibleDirection( wxBOTH );
428 fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
430 wxString m_backDrillChoiceChoices[] = {
_(
"None"),
_(
"Bottom"),
_(
"Top"),
_(
"Both") };
431 int m_backDrillChoiceNChoices =
sizeof( m_backDrillChoiceChoices ) /
sizeof( wxString );
432 m_backDrillChoice =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_backDrillChoiceNChoices, m_backDrillChoiceChoices, 0 );
434 fgSizer6->Add(
m_backDrillChoice, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
437 bSizerBackdrill->Add( fgSizer6, 1, wxEXPAND, 5 );
439 wxFlexGridSizer* fgSizer7;
440 fgSizer7 =
new wxFlexGridSizer( 0, 2, 0, 0 );
441 fgSizer7->SetFlexibleDirection( wxBOTH );
442 fgSizer7->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
452 bSizerBackdrill->Add( fgSizer7, 2, wxEXPAND, 5 );
454 wxFlexGridSizer* fgSizer8;
455 fgSizer8 =
new wxFlexGridSizer( 0, 2, 0, 0 );
456 fgSizer8->SetFlexibleDirection( wxBOTH );
457 fgSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
466 fgSizer8->Add(
m_ViaStartLayer11, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
469 bSizerBackdrill->Add( fgSizer8, 2, wxEXPAND, 5 );
472 m_sbViaSizer->Add( bSizerBackdrill, 0, wxALL|wxEXPAND, 5 );
474 wxBoxSizer* bPostMachineLabel;
475 bPostMachineLabel =
new wxBoxSizer( wxHORIZONTAL );
481 m_staticline21 =
new wxStaticLine(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
482 bPostMachineLabel->Add(
m_staticline21, 1, wxALIGN_CENTER_VERTICAL|wxRIGHT, 8 );
487 wxBoxSizer* bSizerPostMachine;
488 bSizerPostMachine =
new wxBoxSizer( wxHORIZONTAL );
490 wxFlexGridSizer* fgSizer9;
491 fgSizer9 =
new wxFlexGridSizer( 0, 3, 0, 0 );
492 fgSizer9->AddGrowableCol( 1 );
493 fgSizer9->SetFlexibleDirection( wxBOTH );
494 fgSizer9->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
500 wxString m_topPostMachineChoices[] = {
_(
"None"),
_(
"Countersink"),
_(
"Counterbore") };
501 int m_topPostMachineNChoices =
sizeof( m_topPostMachineChoices ) /
sizeof( wxString );
502 m_topPostMachine =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_topPostMachineNChoices, m_topPostMachineChoices, 0 );
504 fgSizer9->Add(
m_topPostMachine, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
507 fgSizer9->Add( 0, 0, 1, wxEXPAND, 5 );
532 bSizerPostMachine->Add( fgSizer9, 1, wxEXPAND, 5 );
535 bSizerPostMachine->Add( 0, 0, 0, wxEXPAND|wxLEFT|wxRIGHT, 15 );
537 wxFlexGridSizer* fgSizer10;
538 fgSizer10 =
new wxFlexGridSizer( 0, 3, 0, 0 );
539 fgSizer10->AddGrowableCol( 1 );
540 fgSizer10->SetFlexibleDirection( wxBOTH );
541 fgSizer10->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
547 wxString m_bottomPostMachineChoices[] = {
_(
"None"),
_(
"Countersink"),
_(
"Counterbore") };
548 int m_bottomPostMachineNChoices =
sizeof( m_bottomPostMachineChoices ) /
sizeof( wxString );
549 m_bottomPostMachine =
new wxChoice(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_bottomPostMachineNChoices, m_bottomPostMachineChoices, 0 );
554 fgSizer10->Add( 0, 0, 1, wxEXPAND, 5 );
579 bSizerPostMachine->Add( fgSizer10, 1, wxEXPAND, 5 );
584 m_staticline4 =
new wxStaticLine(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
592 wxBoxSizer* bSizer42;
593 bSizer42 =
new wxBoxSizer( wxVERTICAL );
595 m_staticText85 =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Board contains legacy teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
599 m_staticText851 =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Use Edit > Edit Teardrops to apply automatic teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
609 wxBoxSizer* bSizerTeardrops;
610 bSizerTeardrops =
new wxBoxSizer( wxVERTICAL );
612 wxBoxSizer* bSizerCols11;
613 bSizerCols11 =
new wxBoxSizer( wxHORIZONTAL );
615 wxBoxSizer* bSizerLeftCol11;
616 bSizerLeftCol11 =
new wxBoxSizer( wxVERTICAL );
619 bSizerLeftCol11->Add( 0, 2, 0, wxEXPAND, 5 );
621 m_cbTeardrops =
new wxCheckBox(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Add teardrops on via's track connections"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
622 bSizerLeftCol11->Add(
m_cbTeardrops, 0, wxBOTTOM|wxRIGHT, 3 );
624 m_cbTeardropsUseNextTrack =
new wxCheckBox(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Allow teardrops to span two track segments"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
625 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.") );
630 bSizerCols11->Add( bSizerLeftCol11, 1, wxEXPAND|wxTOP|wxLEFT, 1 );
633 bSizerCols11->Add( 20, 0, 0, wxEXPAND, 5 );
635 wxBoxSizer* bSizerRightCol11;
636 bSizerRightCol11 =
new wxBoxSizer( wxVERTICAL );
638 wxBoxSizer* bSizer39;
639 bSizer39 =
new wxBoxSizer( wxHORIZONTAL );
641 m_stHDRatio =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Maximum track width:"), wxDefaultPosition, wxDefaultSize, 0 );
643 m_stHDRatio->SetToolTip(
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
645 bSizer39->Add(
m_stHDRatio, 0, wxALIGN_CENTER_VERTICAL, 5 );
647 m_tcHDRatio =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), 0 );
648 m_tcHDRatio->SetToolTip(
_(
"Tracks which are similar in size to the via do not need teardrops.") );
650 bSizer39->Add(
m_tcHDRatio, 0, wxRIGHT|wxLEFT, 5 );
657 bSizerRightCol11->Add( bSizer39, 0, wxEXPAND, 3 );
659 wxBoxSizer* bSizer17;
660 bSizer17 =
new wxBoxSizer( wxVERTICAL );
662 m_minTrackWidthHint =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"(as a percentage of pad/via/track size)"), wxDefaultPosition, wxDefaultSize, 0 );
667 bSizerRightCol11->Add( bSizer17, 0, wxEXPAND|wxLEFT, 5 );
670 bSizerCols11->Add( bSizerRightCol11, 1, wxEXPAND|wxLEFT, 10 );
673 bSizerTeardrops->Add( bSizerCols11, 0, wxEXPAND|wxTOP, 3 );
676 bSizerTeardrops->Add( 0, 5, 0, wxEXPAND, 5 );
678 wxBoxSizer* bSizerShapeColumns;
679 bSizerShapeColumns =
new wxBoxSizer( wxHORIZONTAL );
681 wxBoxSizer* bSizerLeftCol;
682 bSizerLeftCol =
new wxBoxSizer( wxVERTICAL );
688 bSizerShapeColumns->Add( bSizerLeftCol, 1, wxEXPAND|wxRIGHT, 10 );
691 bSizerShapeColumns->Add( 20, 0, 0, wxEXPAND, 5 );
693 wxBoxSizer* bSizer20;
694 bSizer20 =
new wxBoxSizer( wxVERTICAL );
696 wxFlexGridSizer* fgSizerRightCol;
697 fgSizerRightCol =
new wxFlexGridSizer( 0, 3, 3, 5 );
698 fgSizerRightCol->AddGrowableCol( 1 );
699 fgSizerRightCol->SetFlexibleDirection( wxBOTH );
700 fgSizerRightCol->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
706 m_tcLenPercent =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
707 fgSizerRightCol->Add(
m_tcLenPercent, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
709 wxBoxSizer* bSizer131;
710 bSizer131 =
new wxBoxSizer( wxHORIZONTAL );
718 m_stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
727 fgSizerRightCol->Add( bSizer131, 0, wxALIGN_CENTER_VERTICAL, 5 );
729 m_stMaxLen =
new wxStaticText(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
731 fgSizerRightCol->Add(
m_stMaxLen, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
733 m_tcTdMaxLen =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
734 fgSizerRightCol->Add(
m_tcTdMaxLen, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
738 fgSizerRightCol->Add(
m_stMaxLenUnits, 0, wxALIGN_CENTER_VERTICAL, 3 );
741 fgSizerRightCol->Add( 0, 3, 1, wxEXPAND, 5 );
744 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
747 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
754 fgSizerRightCol->Add(
m_tcWidthPercent, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
756 wxBoxSizer* bSizer1311;
757 bSizer1311 =
new wxBoxSizer( wxHORIZONTAL );
765 m_stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL,
false, wxEmptyString ) );
774 fgSizerRightCol->Add( bSizer1311, 0, wxALIGN_CENTER_VERTICAL, 5 );
780 m_tcMaxWidth =
new wxTextCtrl(
m_sbViaSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
781 fgSizerRightCol->Add(
m_tcMaxWidth, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
788 bSizer20->Add( fgSizerRightCol, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
790 wxBoxSizer* bSizer44;
791 bSizer44 =
new wxBoxSizer( wxHORIZONTAL );
793 m_curvedEdges =
new wxCheckBox(
m_sbViaSizer->GetStaticBox(), wxID_ANY,
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER );
794 bSizer44->Add(
m_curvedEdges, 0, wxALIGN_CENTER_VERTICAL, 5 );
797 bSizer44->Add( 45, 0, 0, 0, 5 );
800 bSizer20->Add( bSizer44, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxTOP, 5 );
803 bSizerShapeColumns->Add( bSizer20, 1, wxEXPAND, 5 );
806 bSizerTeardrops->Add( bSizerShapeColumns, 1, wxEXPAND|wxBOTTOM, 3 );
828 this->Centre( wxBOTH );