KiCad PCB EDA Suite
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
dialog_pad_properties_base.cpp
Go to the documentation of this file.
1
2// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
3// http://www.wxformbuilder.org/
4//
5// PLEASE DO *NOT* EDIT THIS FILE!
7
9
11
13
14DIALOG_PAD_PROPERTIES_BASE::DIALOG_PAD_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 )
15{
16 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
17
18 m_MainSizer = new wxBoxSizer( wxVERTICAL );
19
20 wxBoxSizer* bSizerUpper;
21 bSizerUpper = new wxBoxSizer( wxHORIZONTAL );
22
23 m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
24 m_panelGeneral = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
25 wxBoxSizer* bGeneralSizer;
26 bGeneralSizer = new wxBoxSizer( wxHORIZONTAL );
27
28 m_LeftBoxSizer = new wxBoxSizer( wxVERTICAL );
29
30 wxGridBagSizer* gbSizerCommon;
31 gbSizerCommon = new wxGridBagSizer( 4, 0 );
32 gbSizerCommon->SetFlexibleDirection( wxBOTH );
33 gbSizerCommon->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
34
35 m_padTypeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad type:"), wxDefaultPosition, wxDefaultSize, 0 );
36 m_padTypeLabel->Wrap( -1 );
37 gbSizerCommon->Add( m_padTypeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
38
39 wxString m_padTypeChoices[] = { _("Through-hole"), _("SMD"), _("Edge Connector"), _("NPTH, Mechanical"), _("SMD Aperture") };
40 int m_padTypeNChoices = sizeof( m_padTypeChoices ) / sizeof( wxString );
41 m_padType = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_padTypeNChoices, m_padTypeChoices, 0 );
42 m_padType->SetSelection( 0 );
43 gbSizerCommon->Add( m_padType, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
44
45 m_padNumLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad number:"), wxDefaultPosition, wxDefaultSize, 0 );
46 m_padNumLabel->Wrap( -1 );
47 gbSizerCommon->Add( m_padNumLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
48
49 m_padNumCtrl = new wxTextCtrl( m_panelGeneral, wxID_PADNUMCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
50 gbSizerCommon->Add( m_padNumCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
51
52 m_padNetLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Net name:"), wxDefaultPosition, wxDefaultSize, 0 );
53 m_padNetLabel->Wrap( -1 );
54 gbSizerCommon->Add( m_padNetLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
55
56 m_padNetSelector = new NET_SELECTOR( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
57 gbSizerCommon->Add( m_padNetSelector, wxGBPosition( 2, 1 ), wxGBSpan( 1, 5 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
58
59 m_posXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Position X:"), wxDefaultPosition, wxDefaultSize, 0 );
60 m_posXLabel->Wrap( -1 );
61 gbSizerCommon->Add( m_posXLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
62
63 m_posXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
64 gbSizerCommon->Add( m_posXCtrl, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
65
66 m_posXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
67 m_posXUnits->Wrap( -1 );
68 gbSizerCommon->Add( m_posXUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
69
70 m_posYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 );
71 m_posYLabel->Wrap( -1 );
72 gbSizerCommon->Add( m_posYLabel, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
73
74 m_posYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
75 gbSizerCommon->Add( m_posYCtrl, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
76
77 m_posYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
78 m_posYUnits->Wrap( -1 );
79 gbSizerCommon->Add( m_posYUnits, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
80
81
82 gbSizerCommon->AddGrowableCol( 1 );
83 gbSizerCommon->AddGrowableCol( 4 );
84
85 m_LeftBoxSizer->Add( gbSizerCommon, 0, wxEXPAND|wxBOTTOM, 5 );
86
87 m_staticline5 = new wxStaticLine( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
88 m_LeftBoxSizer->Add( m_staticline5, 0, wxEXPAND|wxTOP|wxBOTTOM, 7 );
89
90 m_padstackControls = new wxBoxSizer( wxHORIZONTAL );
91
92 m_staticText891 = new wxStaticText( m_panelGeneral, wxID_ANY, _("Padstack mode:"), wxDefaultPosition, wxDefaultSize, 0 );
93 m_staticText891->Wrap( -1 );
94 m_padstackControls->Add( m_staticText891, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
95
96 wxString m_cbPadstackModeChoices[] = { _("Normal"), _("Front/Inner/Bottom"), _("Custom") };
97 int m_cbPadstackModeNChoices = sizeof( m_cbPadstackModeChoices ) / sizeof( wxString );
98 m_cbPadstackMode = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbPadstackModeNChoices, m_cbPadstackModeChoices, 0 );
99 m_cbPadstackMode->SetSelection( 1 );
100 m_padstackControls->Add( m_cbPadstackMode, 0, wxALL, 5 );
101
102
103 m_padstackControls->Add( 0, 0, 1, wxEXPAND, 5 );
104
105 m_staticText90 = new wxStaticText( m_panelGeneral, wxID_ANY, _("Edit layer:"), wxDefaultPosition, wxDefaultSize, 0 );
106 m_staticText90->Wrap( -1 );
107 m_padstackControls->Add( m_staticText90, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
108
109 wxString m_cbEditLayerChoices[] = { _("Inner Layers") };
110 int m_cbEditLayerNChoices = sizeof( m_cbEditLayerChoices ) / sizeof( wxString );
111 m_cbEditLayer = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbEditLayerNChoices, m_cbEditLayerChoices, 0 );
112 m_cbEditLayer->SetSelection( 0 );
113 m_padstackControls->Add( m_cbEditLayer, 0, wxALL, 5 );
114
115
116 m_LeftBoxSizer->Add( m_padstackControls, 0, wxEXPAND, 5 );
117
118 wxGridBagSizer* gbSizerPadOrientation;
119 gbSizerPadOrientation = new wxGridBagSizer( 4, 5 );
120 gbSizerPadOrientation->SetFlexibleDirection( wxBOTH );
121 gbSizerPadOrientation->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
122
123 m_shapeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad shape:"), wxDefaultPosition, wxDefaultSize, 0 );
124 m_shapeLabel->Wrap( -1 );
125 gbSizerPadOrientation->Add( m_shapeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
126
127 wxString m_PadShapeSelectorChoices[] = { _("Circular"), _("Oval"), _("Rectangular"), _("Trapezoidal"), _("Rounded rectangle"), _("Chamfered rectangle"), _("Chamfered with other corners rounded"), _("Custom (circular base)"), _("Custom (rectangular base)") };
128 int m_PadShapeSelectorNChoices = sizeof( m_PadShapeSelectorChoices ) / sizeof( wxString );
129 m_PadShapeSelector = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadShapeSelectorNChoices, m_PadShapeSelectorChoices, 0 );
130 m_PadShapeSelector->SetSelection( 4 );
131 gbSizerPadOrientation->Add( m_PadShapeSelector, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
132
133 m_shapePropsBook = new wxSimplebook( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
134 m_emptyProps = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
135 m_shapePropsBook->AddPage( m_emptyProps, _("a page"), false );
136 m_trapProps = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
137 fgSizerTrapProps = new wxFlexGridSizer( 0, 3, 4, 0 );
138 fgSizerTrapProps->AddGrowableCol( 1 );
139 fgSizerTrapProps->SetFlexibleDirection( wxBOTH );
140 fgSizerTrapProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
141
142 m_trapDeltaLabel = new wxStaticText( m_trapProps, wxID_ANY, _("Trapezoid delta:"), wxDefaultPosition, wxDefaultSize, 0 );
143 m_trapDeltaLabel->Wrap( -1 );
144 fgSizerTrapProps->Add( m_trapDeltaLabel, 0, wxALIGN_CENTER_VERTICAL, 5 );
145
146 m_trapDeltaCtrl = new wxTextCtrl( m_trapProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
147 fgSizerTrapProps->Add( m_trapDeltaCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
148
149 m_trapDeltaUnits = new wxStaticText( m_trapProps, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
150 m_trapDeltaUnits->Wrap( -1 );
151 fgSizerTrapProps->Add( m_trapDeltaUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
152
153 m_trapAxisLabel = new wxStaticText( m_trapProps, wxID_ANY, _("Trapezoid axis:"), wxDefaultPosition, wxDefaultSize, 0 );
154 m_trapAxisLabel->Wrap( -1 );
155 fgSizerTrapProps->Add( m_trapAxisLabel, 0, wxALIGN_CENTER_VERTICAL, 5 );
156
157 wxString m_trapAxisCtrlChoices[] = { _("Horizontal"), _("Vertical") };
158 int m_trapAxisCtrlNChoices = sizeof( m_trapAxisCtrlChoices ) / sizeof( wxString );
159 m_trapAxisCtrl = new wxChoice( m_trapProps, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_trapAxisCtrlNChoices, m_trapAxisCtrlChoices, 0 );
160 m_trapAxisCtrl->SetSelection( 0 );
161 fgSizerTrapProps->Add( m_trapAxisCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
162
163
164 m_trapProps->SetSizer( fgSizerTrapProps );
165 m_trapProps->Layout();
167 m_shapePropsBook->AddPage( m_trapProps, _("a page"), false );
168 m_roudingProps = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
169 fgSizerRoundingProps = new wxFlexGridSizer( 0, 3, 4, 0 );
170 fgSizerRoundingProps->AddGrowableCol( 1 );
171 fgSizerRoundingProps->SetFlexibleDirection( wxBOTH );
172 fgSizerRoundingProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
173
174 m_cornerRatioLabel = new wxStaticText( m_roudingProps, wxID_ANY, _("Corner size:"), wxDefaultPosition, wxDefaultSize, 0 );
175 m_cornerRatioLabel->Wrap( -1 );
176 m_cornerRatioLabel->SetToolTip( _("Corner radius in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
177
178 fgSizerRoundingProps->Add( m_cornerRatioLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
179
180 m_cornerRatioCtrl = new TEXT_CTRL_EVAL( m_roudingProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
181 fgSizerRoundingProps->Add( m_cornerRatioCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
182
183 m_cornerRatioUnits = new wxStaticText( m_roudingProps, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
184 m_cornerRatioUnits->Wrap( -1 );
185 fgSizerRoundingProps->Add( m_cornerRatioUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
186
187 m_cornerRadiusLabel = new wxStaticText( m_roudingProps, wxID_ANY, _("Corner radius:"), wxDefaultPosition, wxDefaultSize, 0 );
188 m_cornerRadiusLabel->Wrap( -1 );
189 m_cornerRadiusLabel->SetToolTip( _("Corner radius.\nCan be no more than half pad width.\nThe width is the smaller value between size X and size Y.\nNote: IPC norm gives a max value = 0.25mm.") );
190
191 fgSizerRoundingProps->Add( m_cornerRadiusLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
192
193 m_cornerRadiusCtrl = new wxTextCtrl( m_roudingProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
194 fgSizerRoundingProps->Add( m_cornerRadiusCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
195
196 m_cornerRadiusUnits = new wxStaticText( m_roudingProps, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
197 m_cornerRadiusUnits->Wrap( -1 );
198 fgSizerRoundingProps->Add( m_cornerRadiusUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
199
200
202 m_roudingProps->Layout();
204 m_shapePropsBook->AddPage( m_roudingProps, _("a page"), false );
205 m_chamferProps = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
206 wxFlexGridSizer* fgSizerChamferProps;
207 fgSizerChamferProps = new wxFlexGridSizer( 0, 2, 4, 0 );
208 fgSizerChamferProps->AddGrowableCol( 1 );
209 fgSizerChamferProps->SetFlexibleDirection( wxBOTH );
210 fgSizerChamferProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
211
212 m_chamferRatioLabel = new wxStaticText( m_chamferProps, wxID_ANY, _("Chamfer size:"), wxDefaultPosition, wxDefaultSize, 0 );
213 m_chamferRatioLabel->Wrap( -1 );
214 m_chamferRatioLabel->SetToolTip( _("Chamfer size in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
215
216 fgSizerChamferProps->Add( m_chamferRatioLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
217
218 wxBoxSizer* bSizer29;
219 bSizer29 = new wxBoxSizer( wxHORIZONTAL );
220
221 m_chamferRatioCtrl = new TEXT_CTRL_EVAL( m_chamferProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
222 bSizer29->Add( m_chamferRatioCtrl, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
223
224 m_chamferRatioUnits = new wxStaticText( m_chamferProps, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
225 m_chamferRatioUnits->Wrap( -1 );
226 bSizer29->Add( m_chamferRatioUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
227
228
229 fgSizerChamferProps->Add( bSizer29, 1, wxEXPAND, 5 );
230
231 m_staticTextChamferCorner = new wxStaticText( m_chamferProps, wxID_ANY, _("Chamfer corners:"), wxDefaultPosition, wxDefaultSize, 0 );
232 m_staticTextChamferCorner->Wrap( -1 );
233 m_staticTextChamferCorner->SetToolTip( _("Chamfered corners. The position is relative to a pad orientation 0 degree.") );
234
235 fgSizerChamferProps->Add( m_staticTextChamferCorner, 0, 0, 5 );
236
237 wxGridSizer* gCornersSizer;
238 gCornersSizer = new wxGridSizer( 0, 2, 3, 6 );
239
240 m_cbTopLeft = new wxCheckBox( m_chamferProps, wxID_ANY, _("Top left"), wxDefaultPosition, wxDefaultSize, 0 );
241 m_cbTopLeft->SetValue(true);
242 gCornersSizer->Add( m_cbTopLeft, 0, 0, 5 );
243
244 m_cbTopRight = new wxCheckBox( m_chamferProps, wxID_ANY, _("Top right"), wxDefaultPosition, wxDefaultSize, 0 );
245 gCornersSizer->Add( m_cbTopRight, 0, 0, 5 );
246
247 m_cbBottomLeft = new wxCheckBox( m_chamferProps, wxID_ANY, _("Bottom left"), wxDefaultPosition, wxDefaultSize, 0 );
248 gCornersSizer->Add( m_cbBottomLeft, 0, 0, 5 );
249
250 m_cbBottomRight = new wxCheckBox( m_chamferProps, wxID_ANY, _("Bottom right"), wxDefaultPosition, wxDefaultSize, 0 );
251 gCornersSizer->Add( m_cbBottomRight, 0, 0, 5 );
252
253
254 fgSizerChamferProps->Add( gCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
255
256
257 m_chamferProps->SetSizer( fgSizerChamferProps );
258 m_chamferProps->Layout();
259 fgSizerChamferProps->Fit( m_chamferProps );
260 m_shapePropsBook->AddPage( m_chamferProps, _("a page"), false );
261 m_mixedProps = new wxPanel( m_shapePropsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
262 wxFlexGridSizer* fgMixedProps;
263 fgMixedProps = new wxFlexGridSizer( 0, 2, 4, 0 );
264 fgMixedProps->AddGrowableCol( 1 );
265 fgMixedProps->SetFlexibleDirection( wxBOTH );
266 fgMixedProps->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
267
268 m_mixedChamferRatioLabel = new wxStaticText( m_mixedProps, wxID_ANY, _("Chamfer size:"), wxDefaultPosition, wxDefaultSize, 0 );
269 m_mixedChamferRatioLabel->Wrap( -1 );
270 m_mixedChamferRatioLabel->SetToolTip( _("Chamfer size in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
271
272 fgMixedProps->Add( m_mixedChamferRatioLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
273
274 wxBoxSizer* bSizer30;
275 bSizer30 = new wxBoxSizer( wxHORIZONTAL );
276
277 m_mixedChamferRatioCtrl = new TEXT_CTRL_EVAL( m_mixedProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
278 bSizer30->Add( m_mixedChamferRatioCtrl, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
279
280 m_mixedChamferRatioUnits = new wxStaticText( m_mixedProps, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
281 m_mixedChamferRatioUnits->Wrap( -1 );
282 bSizer30->Add( m_mixedChamferRatioUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
283
284
285 fgMixedProps->Add( bSizer30, 1, wxEXPAND, 5 );
286
287 m_staticTextChamferCorner1 = new wxStaticText( m_mixedProps, wxID_ANY, _("Chamfer corners:"), wxDefaultPosition, wxDefaultSize, 0 );
288 m_staticTextChamferCorner1->Wrap( -1 );
289 m_staticTextChamferCorner1->SetToolTip( _("Chamfered corners. The position is relative to a pad orientation 0 degree.") );
290
291 fgMixedProps->Add( m_staticTextChamferCorner1, 0, 0, 5 );
292
293 wxGridSizer* gMixedCornersSizer;
294 gMixedCornersSizer = new wxGridSizer( 0, 2, 2, 6 );
295
296 m_cbTopLeft1 = new wxCheckBox( m_mixedProps, wxID_ANY, _("Top left"), wxDefaultPosition, wxDefaultSize, 0 );
297 m_cbTopLeft1->SetValue(true);
298 gMixedCornersSizer->Add( m_cbTopLeft1, 0, 0, 5 );
299
300 m_cbTopRight1 = new wxCheckBox( m_mixedProps, wxID_ANY, _("Top right"), wxDefaultPosition, wxDefaultSize, 0 );
301 gMixedCornersSizer->Add( m_cbTopRight1, 0, 0, 5 );
302
303 m_cbBottomLeft1 = new wxCheckBox( m_mixedProps, wxID_ANY, _("Bottom left"), wxDefaultPosition, wxDefaultSize, 0 );
304 gMixedCornersSizer->Add( m_cbBottomLeft1, 0, 0, 5 );
305
306 m_cbBottomRight1 = new wxCheckBox( m_mixedProps, wxID_ANY, _("Bottom right"), wxDefaultPosition, wxDefaultSize, 0 );
307 gMixedCornersSizer->Add( m_cbBottomRight1, 0, 0, 5 );
308
309
310 fgMixedProps->Add( gMixedCornersSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
311
312 m_mixedCornerRatioLabel = new wxStaticText( m_mixedProps, wxID_ANY, _("Corner size:"), wxDefaultPosition, wxDefaultSize, 0 );
313 m_mixedCornerRatioLabel->Wrap( -1 );
314 m_mixedCornerRatioLabel->SetToolTip( _("Corner radius in percent of the pad width.\nThe width is the smaller value between size X and size Y.\nThe max value is 50 percent.") );
315
316 fgMixedProps->Add( m_mixedCornerRatioLabel, 0, wxBOTTOM|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
317
318 wxBoxSizer* bSizer31;
319 bSizer31 = new wxBoxSizer( wxHORIZONTAL );
320
321 m_mixedCornerRatioCtrl = new TEXT_CTRL_EVAL( m_mixedProps, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
322 bSizer31->Add( m_mixedCornerRatioCtrl, 1, wxBOTTOM|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
323
324 m_mixedCornerRatioUnits = new wxStaticText( m_mixedProps, wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
325 m_mixedCornerRatioUnits->Wrap( -1 );
326 bSizer31->Add( m_mixedCornerRatioUnits, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
327
328
329 fgMixedProps->Add( bSizer31, 1, wxEXPAND, 5 );
330
331
332 m_mixedProps->SetSizer( fgMixedProps );
333 m_mixedProps->Layout();
334 fgMixedProps->Fit( m_mixedProps );
335 m_shapePropsBook->AddPage( m_mixedProps, _("a page"), false );
336
337 gbSizerPadOrientation->Add( m_shapePropsBook, wxGBPosition( 1, 0 ), wxGBSpan( 1, 6 ), wxEXPAND|wxLEFT, 25 );
338
339 m_sizeXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Pad size X:"), wxDefaultPosition, wxDefaultSize, 0 );
340 m_sizeXLabel->Wrap( -1 );
341 gbSizerPadOrientation->Add( m_sizeXLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
342
343 m_sizeXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1,-1 ), 0 );
344 gbSizerPadOrientation->Add( m_sizeXCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
345
346 m_sizeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
347 m_sizeXUnits->Wrap( -1 );
348 gbSizerPadOrientation->Add( m_sizeXUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
349
350 m_sizeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 );
351 m_sizeYLabel->Wrap( -1 );
352 gbSizerPadOrientation->Add( m_sizeYLabel, wxGBPosition( 2, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
353
354 m_sizeYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
355 gbSizerPadOrientation->Add( m_sizeYCtrl, wxGBPosition( 2, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
356
357 m_sizeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
358 m_sizeYUnits->Wrap( -1 );
359 gbSizerPadOrientation->Add( m_sizeYUnits, wxGBPosition( 2, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
360
361 m_PadOrientText = new wxStaticText( m_panelGeneral, wxID_ANY, _("Angle:"), wxDefaultPosition, wxSize( -1,-1 ), 0 );
362 m_PadOrientText->Wrap( -1 );
363 gbSizerPadOrientation->Add( m_PadOrientText, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
364
365 m_cb_padrotation = new wxComboBox( m_panelGeneral, wxID_ANY, _("0"), wxDefaultPosition, wxSize( 100,-1 ), 0, NULL, 0 );
366 m_cb_padrotation->Append( _("0") );
367 m_cb_padrotation->Append( _("90") );
368 m_cb_padrotation->Append( _("-90") );
369 m_cb_padrotation->Append( _("180") );
370 m_cb_padrotation->SetSelection( 0 );
371 gbSizerPadOrientation->Add( m_cb_padrotation, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
372
373 m_orientationUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
374 m_orientationUnits->Wrap( -1 );
375 gbSizerPadOrientation->Add( m_orientationUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
376
377
378 gbSizerPadOrientation->AddGrowableCol( 1 );
379 gbSizerPadOrientation->AddGrowableCol( 4 );
380
381 m_LeftBoxSizer->Add( gbSizerPadOrientation, 0, wxEXPAND, 5 );
382
383 wxBoxSizer* bSizer35;
384 bSizer35 = new wxBoxSizer( wxHORIZONTAL );
385
386 m_offsetShapeOpt = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Offset shape from hole"), wxDefaultPosition, wxDefaultSize, 0 );
387 bSizer35->Add( m_offsetShapeOpt, 0, wxTOP|wxLEFT, 5 );
388
389 m_offsetShapeOptLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _(":"), wxDefaultPosition, wxDefaultSize, 0 );
390 m_offsetShapeOptLabel->Wrap( -1 );
391 bSizer35->Add( m_offsetShapeOptLabel, 0, wxTOP|wxRIGHT, 5 );
392
393
394 m_LeftBoxSizer->Add( bSizer35, 0, wxEXPAND|wxTOP, 5 );
395
396
397 m_LeftBoxSizer->Add( 0, 2, 0, wxEXPAND, 5 );
398
399 m_offsetCtrls = new wxFlexGridSizer( 0, 6, 0, 5 );
400 m_offsetCtrls->AddGrowableCol( 1 );
401 m_offsetCtrls->AddGrowableCol( 4 );
402 m_offsetCtrls->SetFlexibleDirection( wxBOTH );
403 m_offsetCtrls->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
404
405 m_offsetXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("X:"), wxDefaultPosition, wxDefaultSize, 0 );
406 m_offsetXLabel->Wrap( -1 );
407 m_offsetCtrls->Add( m_offsetXLabel, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxLEFT, 5 );
408
409 m_offsetXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
410 m_offsetCtrls->Add( m_offsetXCtrl, 0, wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL, 5 );
411
412 m_offsetXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
413 m_offsetXUnits->Wrap( -1 );
414 m_offsetCtrls->Add( m_offsetXUnits, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
415
416 m_offsetYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 );
417 m_offsetYLabel->Wrap( -1 );
418 m_offsetCtrls->Add( m_offsetYLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
419
420 m_offsetYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
421 m_offsetCtrls->Add( m_offsetYCtrl, 0, wxEXPAND|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxALIGN_CENTER_VERTICAL, 5 );
422
423 m_offsetYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
424 m_offsetYUnits->Wrap( -1 );
425 m_offsetCtrls->Add( m_offsetYUnits, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
426
427
428 m_LeftBoxSizer->Add( m_offsetCtrls, 0, wxEXPAND|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 25 );
429
430 m_staticline7 = new wxStaticLine( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
431 m_LeftBoxSizer->Add( m_staticline7, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
432
433 m_gbSizerHole = new wxGridBagSizer( 4, 5 );
434 m_gbSizerHole->SetFlexibleDirection( wxBOTH );
435 m_gbSizerHole->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
436
437 m_holeShapeLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Hole shape:"), wxDefaultPosition, wxDefaultSize, 0 );
438 m_holeShapeLabel->Wrap( -1 );
439 m_gbSizerHole->Add( m_holeShapeLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
440
441 wxString m_holeShapeCtrlChoices[] = { _("Round"), _("Oblong") };
442 int m_holeShapeCtrlNChoices = sizeof( m_holeShapeCtrlChoices ) / sizeof( wxString );
443 m_holeShapeCtrl = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_holeShapeCtrlNChoices, m_holeShapeCtrlChoices, 0 );
444 m_holeShapeCtrl->SetSelection( 1 );
445 m_gbSizerHole->Add( m_holeShapeCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 5 ), wxEXPAND|wxRIGHT, 5 );
446
447 m_holeXLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Hole size X:"), wxDefaultPosition, wxDefaultSize, 0 );
448 m_holeXLabel->Wrap( -1 );
449 m_gbSizerHole->Add( m_holeXLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
450
451 m_holeXCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
452 m_gbSizerHole->Add( m_holeXCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
453
454 m_holeXUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
455 m_holeXUnits->Wrap( -1 );
456 m_gbSizerHole->Add( m_holeXUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
457
458 m_holeYLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _("Y:"), wxDefaultPosition, wxDefaultSize, 0 );
459 m_holeYLabel->Wrap( -1 );
460 m_gbSizerHole->Add( m_holeYLabel, wxGBPosition( 1, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
461
462 m_holeYCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
463 m_gbSizerHole->Add( m_holeYCtrl, wxGBPosition( 1, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
464
465 m_holeYUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
466 m_holeYUnits->Wrap( -1 );
467 m_gbSizerHole->Add( m_holeYUnits, wxGBPosition( 1, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
468
469
470 m_gbSizerHole->AddGrowableCol( 1 );
471 m_gbSizerHole->AddGrowableCol( 4 );
472
473 m_LeftBoxSizer->Add( m_gbSizerHole, 0, wxEXPAND, 5 );
474
475 m_staticline71 = new wxStaticLine( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
476 m_LeftBoxSizer->Add( m_staticline71, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
477
478 wxFlexGridSizer* fgSizerPadToDie;
479 fgSizerPadToDie = new wxFlexGridSizer( 14, 3, 0, 0 );
480 fgSizerPadToDie->AddGrowableCol( 1 );
481 fgSizerPadToDie->SetFlexibleDirection( wxBOTH );
482 fgSizerPadToDie->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
483
484 wxBoxSizer* bSizer34;
485 bSizer34 = new wxBoxSizer( wxHORIZONTAL );
486
487 m_padToDieOpt = new wxCheckBox( m_panelGeneral, wxID_ANY, _("Specify pad to die length"), wxDefaultPosition, wxDefaultSize, 0 );
488 bSizer34->Add( m_padToDieOpt, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
489
490 m_padToDieLabel = new wxStaticText( m_panelGeneral, wxID_ANY, _(":"), wxDefaultPosition, wxDefaultSize, 0 );
491 m_padToDieLabel->Wrap( -1 );
492 bSizer34->Add( m_padToDieLabel, 0, wxALIGN_CENTER_VERTICAL|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
493
494
495 fgSizerPadToDie->Add( bSizer34, 0, wxEXPAND|wxRIGHT, 5 );
496
497 m_padToDieCtrl = new wxTextCtrl( m_panelGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
498 fgSizerPadToDie->Add( m_padToDieCtrl, 0, wxEXPAND|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN, 5 );
499
500 m_padToDieUnits = new wxStaticText( m_panelGeneral, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
501 m_padToDieUnits->Wrap( -1 );
502 fgSizerPadToDie->Add( m_padToDieUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRESERVE_SPACE_EVEN_IF_HIDDEN|wxRIGHT, 5 );
503
504
505 m_LeftBoxSizer->Add( fgSizerPadToDie, 0, wxEXPAND, 5 );
506
507
508 bGeneralSizer->Add( m_LeftBoxSizer, 0, wxEXPAND|wxALL, 5 );
509
510 m_middleBoxSizer = new wxBoxSizer( wxVERTICAL );
511
512 wxStaticBoxSizer* m_LayersSizer;
513 m_LayersSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelGeneral, wxID_ANY, wxEmptyString ), wxVERTICAL );
514
515 m_FlippedWarningSizer = new wxBoxSizer( wxHORIZONTAL );
516
517 m_FlippedWarningIcon = new wxStaticBitmap( m_LayersSizer->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
518 m_FlippedWarningIcon->SetMinSize( wxSize( 48,48 ) );
519
520 m_FlippedWarningSizer->Add( m_FlippedWarningIcon, 0, wxALIGN_TOP|wxBOTTOM|wxTOP, 4 );
521
522 m_staticText86 = new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Parent footprint on board is flipped.\nLayers will be reversed."), wxDefaultPosition, wxDefaultSize, 0 );
523 m_staticText86->Wrap( 150 );
524 m_FlippedWarningSizer->Add( m_staticText86, 1, wxALIGN_TOP|wxBOTTOM|wxLEFT|wxRIGHT, 8 );
525
526
527 m_LayersSizer->Add( m_FlippedWarningSizer, 0, wxEXPAND|wxBOTTOM, 10 );
528
529 m_copperLayersLabel = new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Copper layers:"), wxDefaultPosition, wxDefaultSize, 0 );
530 m_copperLayersLabel->Wrap( -1 );
531 m_LayersSizer->Add( m_copperLayersLabel, 0, wxRIGHT|wxLEFT, 4 );
532
533 wxArrayString m_rbCopperLayersSelChoices;
534 m_rbCopperLayersSel = new wxChoice( m_LayersSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_rbCopperLayersSelChoices, 0 );
535 m_rbCopperLayersSel->SetSelection( 0 );
536 m_LayersSizer->Add( m_rbCopperLayersSel, 1, wxALL|wxEXPAND|wxTOP, 4 );
537
538 m_techLayersLabel = new wxStaticText( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Technical layers:"), wxDefaultPosition, wxDefaultSize, 0 );
539 m_techLayersLabel->Wrap( -1 );
540 m_LayersSizer->Add( m_techLayersLabel, 0, wxALL, 5 );
541
542 m_layerFrontAdhesive = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Front adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
543 m_LayersSizer->Add( m_layerFrontAdhesive, 0, wxLEFT|wxRIGHT, 4 );
544
545 m_layerBackAdhesive = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Back adhesive"), wxDefaultPosition, wxDefaultSize, 0 );
546 m_LayersSizer->Add( m_layerBackAdhesive, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
547
548 m_layerFrontPaste = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Front solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
549 m_LayersSizer->Add( m_layerFrontPaste, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
550
551 m_layerBackPaste = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Back solder paste"), wxDefaultPosition, wxDefaultSize, 0 );
552 m_LayersSizer->Add( m_layerBackPaste, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
553
554 m_layerFrontSilk = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Front silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
555 m_LayersSizer->Add( m_layerFrontSilk, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
556
557 m_layerBackSilk = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Back silk screen"), wxDefaultPosition, wxDefaultSize, 0 );
558 m_LayersSizer->Add( m_layerBackSilk, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
559
560 m_layerFrontMask = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Front solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
561 m_LayersSizer->Add( m_layerFrontMask, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
562
563 m_layerBackMask = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Back solder mask"), wxDefaultPosition, wxDefaultSize, 0 );
564 m_LayersSizer->Add( m_layerBackMask, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
565
566 m_layerUserDwgs = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("Drafting notes"), wxDefaultPosition, wxDefaultSize, 0 );
567 m_LayersSizer->Add( m_layerUserDwgs, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
568
569 m_layerECO1 = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("E.C.O.1"), wxDefaultPosition, wxDefaultSize, 0 );
570 m_LayersSizer->Add( m_layerECO1, 0, wxTOP|wxRIGHT|wxLEFT, 4 );
571
572 m_layerECO2 = new wxCheckBox( m_LayersSizer->GetStaticBox(), wxID_ANY, _("E.C.O.2"), wxDefaultPosition, wxDefaultSize, 0 );
573 m_LayersSizer->Add( m_layerECO2, 0, wxALL, 4 );
574
575
576 m_middleBoxSizer->Add( m_LayersSizer, 0, wxEXPAND|wxALL, 5 );
577
578 m_staticTextFabProperty = new wxStaticText( m_panelGeneral, wxID_ANY, _("Fabrication property:"), wxDefaultPosition, wxDefaultSize, 0 );
579 m_staticTextFabProperty->Wrap( -1 );
580 m_staticTextFabProperty->SetToolTip( _("Optional property to specify a special purpose or constraint in fabrication files:\nBGA attribute is for pads in BGA footprints\nFiducial local is a fiducial for the parent footprint\nFiducial global is a fiducial for the whole board\nTest Point specifies an electrical test point\nHeatsink specifies a thermal pad\nCastellated specifies a through hole pad on a board edge\nMechanical specifies a through-hole pad that is used for mechanical support") );
581
582 m_middleBoxSizer->Add( m_staticTextFabProperty, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
583
584
585 m_middleBoxSizer->Add( 0, 2, 0, wxEXPAND, 5 );
586
587 wxString m_choiceFabPropertyChoices[] = { _("None"), _("BGA pad"), _("Fiducial, local to footprint"), _("Fiducial, global to board"), _("Test point pad"), _("Heatsink pad"), _("Castellated pad (through hole only)"), _("Mechanical") };
588 int m_choiceFabPropertyNChoices = sizeof( m_choiceFabPropertyChoices ) / sizeof( wxString );
589 m_choiceFabProperty = new wxChoice( m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceFabPropertyNChoices, m_choiceFabPropertyChoices, 0 );
590 m_choiceFabProperty->SetSelection( 0 );
591 m_middleBoxSizer->Add( m_choiceFabProperty, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
592
593
594 bGeneralSizer->Add( m_middleBoxSizer, 0, wxEXPAND|wxALL, 3 );
595
596
597 m_panelGeneral->SetSizer( bGeneralSizer );
598 m_panelGeneral->Layout();
599 bGeneralSizer->Fit( m_panelGeneral );
600 m_notebook->AddPage( m_panelGeneral, _("General"), true );
601 m_connectionsPanel = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
602 wxBoxSizer* bSizerPanelConnections;
603 bSizerPanelConnections = new wxBoxSizer( wxVERTICAL );
604
605 wxBoxSizer* bSizerConnectionsMargins;
606 bSizerConnectionsMargins = new wxBoxSizer( wxVERTICAL );
607
608 wxStaticBoxSizer* bSizerTeardrops;
609 bSizerTeardrops = new wxStaticBoxSizer( new wxStaticBox( m_connectionsPanel, wxID_ANY, _("Teardrops") ), wxVERTICAL );
610
611 m_legacyTeardropsWarning = new wxBoxSizer( wxHORIZONTAL );
612
613 m_legacyTeardropsIcon = new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
614 m_legacyTeardropsWarning->Add( m_legacyTeardropsIcon, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
615
616 wxBoxSizer* bSizer42;
617 bSizer42 = new wxBoxSizer( wxVERTICAL );
618
619 m_staticText85 = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Board contains legacy teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
620 m_staticText85->Wrap( -1 );
621 bSizer42->Add( m_staticText85, 0, wxRIGHT|wxLEFT, 5 );
622
623 m_staticText851 = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Use Edit > Edit Teardrops to apply automatic teardrops."), wxDefaultPosition, wxDefaultSize, 0 );
624 m_staticText851->Wrap( -1 );
625 bSizer42->Add( m_staticText851, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
626
627
628 m_legacyTeardropsWarning->Add( bSizer42, 1, wxALIGN_CENTER_VERTICAL, 5 );
629
630
631 bSizerTeardrops->Add( m_legacyTeardropsWarning, 0, wxEXPAND|wxBOTTOM, 5 );
632
633 wxBoxSizer* bSizerCols11;
634 bSizerCols11 = new wxBoxSizer( wxHORIZONTAL );
635
636 wxBoxSizer* bSizerLeftCol11;
637 bSizerLeftCol11 = new wxBoxSizer( wxVERTICAL );
638
639 m_cbTeardrops = new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Add teardrops on pad's track connections"), wxDefaultPosition, wxDefaultSize, 0 );
640 bSizerLeftCol11->Add( m_cbTeardrops, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
641
642 m_cbPreferZoneConnection = new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
643 m_cbPreferZoneConnection->SetValue(true);
644 m_cbPreferZoneConnection->SetToolTip( _("Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
645
646 bSizerLeftCol11->Add( m_cbPreferZoneConnection, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
647
648 m_cbTeardropsUseNextTrack = new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Allow teardrops to span 2 track segments"), wxDefaultPosition, wxDefaultSize, 0 );
649 m_cbTeardropsUseNextTrack->SetValue(true);
650 m_cbTeardropsUseNextTrack->SetToolTip( _("Allows a teardrop to spread over 2 tracks if the first track segment is too short") );
651
652 bSizerLeftCol11->Add( m_cbTeardropsUseNextTrack, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
653
654
655 bSizerCols11->Add( bSizerLeftCol11, 1, wxEXPAND|wxTOP, 3 );
656
657
658 bSizerCols11->Add( 15, 0, 0, wxEXPAND, 5 );
659
660 wxBoxSizer* bSizerRightCol11;
661 bSizerRightCol11 = new wxBoxSizer( wxVERTICAL );
662
663 wxBoxSizer* bSizer39;
664 bSizer39 = new wxBoxSizer( wxHORIZONTAL );
665
666 m_stHDRatio = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Track width limit:"), wxDefaultPosition, wxDefaultSize, 0 );
667 m_stHDRatio->Wrap( -1 );
668 m_stHDRatio->SetToolTip( _("Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
669
670 bSizer39->Add( m_stHDRatio, 0, wxALIGN_CENTER_VERTICAL, 5 );
671
672 m_spTeardropHDPercent = new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
673 m_spTeardropHDPercent->SetDigits( 0 );
674 m_spTeardropHDPercent->SetToolTip( _("Tracks which are similar in size to the pad do not need teardrops.") );
675
676 bSizer39->Add( m_spTeardropHDPercent, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
677
678 m_minTrackWidthUnits = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("%("), wxDefaultPosition, wxDefaultSize, 0 );
679 m_minTrackWidthUnits->Wrap( -1 );
680 bSizer39->Add( m_minTrackWidthUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
681
682 m_minTrackWidthHint = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("d"), wxDefaultPosition, wxDefaultSize, 0 );
683 m_minTrackWidthHint->Wrap( -1 );
684 m_minTrackWidthHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
685
686 bSizer39->Add( m_minTrackWidthHint, 0, wxBOTTOM|wxALIGN_BOTTOM, 3 );
687
688 m_staticText87 = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _(" )"), wxDefaultPosition, wxDefaultSize, 0 );
689 m_staticText87->Wrap( -1 );
690 bSizer39->Add( m_staticText87, 0, wxALIGN_CENTER_VERTICAL, 5 );
691
692
693 bSizerRightCol11->Add( bSizer39, 0, 0, 3 );
694
695
696 bSizerCols11->Add( bSizerRightCol11, 1, wxEXPAND|wxLEFT, 10 );
697
698
699 bSizerTeardrops->Add( bSizerCols11, 0, wxEXPAND, 5 );
700
701
702 bSizerTeardrops->Add( 0, 5, 0, wxEXPAND, 5 );
703
704 m_teardropShapeLabel = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Teardrop Shape"), wxDefaultPosition, wxDefaultSize, 0 );
705 m_teardropShapeLabel->Wrap( -1 );
706 bSizerTeardrops->Add( m_teardropShapeLabel, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
707
708 m_staticline51 = new wxStaticLine( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
709 bSizerTeardrops->Add( m_staticline51, 0, wxEXPAND, 5 );
710
711 wxBoxSizer* bSizerShapeColumns;
712 bSizerShapeColumns = new wxBoxSizer( wxHORIZONTAL );
713
714 wxBoxSizer* bSizerLeftCol;
715 bSizerLeftCol = new wxBoxSizer( wxVERTICAL );
716
717 m_bitmapTeardrop = new wxStaticBitmap( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
718 bSizerLeftCol->Add( m_bitmapTeardrop, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
719
720
721 bSizerShapeColumns->Add( bSizerLeftCol, 1, wxEXPAND|wxRIGHT, 10 );
722
723
724 bSizerShapeColumns->Add( 10, 0, 0, wxEXPAND, 5 );
725
726 wxBoxSizer* bSizer43;
727 bSizer43 = new wxBoxSizer( wxVERTICAL );
728
729 wxFlexGridSizer* fgSizerRightCol;
730 fgSizerRightCol = new wxFlexGridSizer( 0, 3, 2, 0 );
731 fgSizerRightCol->AddGrowableCol( 1 );
732 fgSizerRightCol->SetFlexibleDirection( wxBOTH );
733 fgSizerRightCol->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
734
735 m_stHsetting = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
736 m_stHsetting->Wrap( -1 );
737 fgSizerRightCol->Add( m_stHsetting, 0, wxALIGN_CENTER_VERTICAL, 5 );
738
739 m_spTeardropLenPercent = new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 200, 40.000000, 10 );
740 m_spTeardropLenPercent->SetDigits( 0 );
741 fgSizerRightCol->Add( m_spTeardropLenPercent, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
742
743 wxBoxSizer* bSizer131;
744 bSizer131 = new wxBoxSizer( wxHORIZONTAL );
745
746 m_stLenPercentUnits = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("%("), wxDefaultPosition, wxDefaultSize, 0 );
747 m_stLenPercentUnits->Wrap( -1 );
748 bSizer131->Add( m_stLenPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
749
750 m_stLenPercentHint = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("d"), wxDefaultPosition, wxDefaultSize, 0 );
751 m_stLenPercentHint->Wrap( -1 );
752 m_stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
753
754 bSizer131->Add( m_stLenPercentHint, 0, wxALIGN_BOTTOM, 1 );
755
756 m_staticText88 = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _(" )"), wxDefaultPosition, wxDefaultSize, 0 );
757 m_staticText88->Wrap( -1 );
758 bSizer131->Add( m_staticText88, 0, wxALIGN_CENTER_VERTICAL, 5 );
759
760
761 fgSizerRightCol->Add( bSizer131, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
762
763 m_stMaxLen = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
764 m_stMaxLen->Wrap( -1 );
765 fgSizerRightCol->Add( m_stMaxLen, 0, wxALIGN_CENTER_VERTICAL, 5 );
766
767 m_tcTdMaxLen = new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
768 fgSizerRightCol->Add( m_tcTdMaxLen, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
769
770 m_stMaxLenUnits = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
771 m_stMaxLenUnits->Wrap( -1 );
772 fgSizerRightCol->Add( m_stMaxLenUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
773
774
775 fgSizerRightCol->Add( 0, 5, 1, wxEXPAND, 5 );
776
777
778 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
779
780
781 fgSizerRightCol->Add( 0, 0, 1, wxEXPAND, 5 );
782
783 m_stVsetting = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
784 m_stVsetting->Wrap( -1 );
785 fgSizerRightCol->Add( m_stVsetting, 0, wxALIGN_CENTER_VERTICAL, 10 );
786
787 m_spTeardropSizePercent = new wxSpinCtrlDouble( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
788 m_spTeardropSizePercent->SetDigits( 0 );
789 fgSizerRightCol->Add( m_spTeardropSizePercent, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
790
791 wxBoxSizer* bSizer13;
792 bSizer13 = new wxBoxSizer( wxHORIZONTAL );
793
794 m_stWidthPercentUnits = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("%("), wxDefaultPosition, wxDefaultSize, 0 );
795 m_stWidthPercentUnits->Wrap( -1 );
796 bSizer13->Add( m_stWidthPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
797
798 m_stWidthPercentHint = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("d"), wxDefaultPosition, wxDefaultSize, 0 );
799 m_stWidthPercentHint->Wrap( -1 );
800 m_stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
801
802 bSizer13->Add( m_stWidthPercentHint, 0, wxALIGN_BOTTOM, 1 );
803
804 m_staticText89 = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _(" )"), wxDefaultPosition, wxDefaultSize, 0 );
805 m_staticText89->Wrap( -1 );
806 bSizer13->Add( m_staticText89, 0, wxALIGN_CENTER_VERTICAL, 5 );
807
808
809 fgSizerRightCol->Add( bSizer13, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
810
811 m_stTdMaxSize = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
812 m_stTdMaxSize->Wrap( -1 );
813 fgSizerRightCol->Add( m_stTdMaxSize, 0, wxALIGN_CENTER_VERTICAL, 10 );
814
815 m_tcMaxHeight = new wxTextCtrl( bSizerTeardrops->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
816 fgSizerRightCol->Add( m_tcMaxHeight, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 3 );
817
818 m_stMaxHeightUnits = new wxStaticText( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
819 m_stMaxHeightUnits->Wrap( -1 );
820 fgSizerRightCol->Add( m_stMaxHeightUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
821
822
823 bSizer43->Add( fgSizerRightCol, 1, wxEXPAND|wxTOP|wxLEFT, 10 );
824
825 wxBoxSizer* bSizer44;
826 bSizer44 = new wxBoxSizer( wxHORIZONTAL );
827
828 m_curvedEdges = new wxCheckBox( bSizerTeardrops->GetStaticBox(), wxID_ANY, _("Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
829 bSizer44->Add( m_curvedEdges, 0, wxALIGN_CENTER_VERTICAL, 5 );
830
831
832 bSizer43->Add( bSizer44, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8 );
833
834
835 bSizerShapeColumns->Add( bSizer43, 1, wxEXPAND, 5 );
836
837
838 bSizerTeardrops->Add( bSizerShapeColumns, 1, wxBOTTOM|wxEXPAND|wxRIGHT, 5 );
839
840
841 bSizerConnectionsMargins->Add( bSizerTeardrops, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
842
843 wxBoxSizer* bSizerConnectionsLower;
844 bSizerConnectionsLower = new wxBoxSizer( wxHORIZONTAL );
845
846 m_sbSizerZonesSettings = new wxStaticBoxSizer( new wxStaticBox( m_connectionsPanel, wxID_ANY, _("Connection to Copper Zones") ), wxVERTICAL );
847
848 wxFlexGridSizer* fgSizerCopperZonesOpts;
849 fgSizerCopperZonesOpts = new wxFlexGridSizer( 0, 2, 5, 0 );
850 fgSizerCopperZonesOpts->AddGrowableCol( 1 );
851 fgSizerCopperZonesOpts->SetFlexibleDirection( wxBOTH );
852 fgSizerCopperZonesOpts->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
853
854 m_padConnectionLabel = new wxStaticText( m_sbSizerZonesSettings->GetStaticBox(), wxID_ANY, _("Pad connection:"), wxDefaultPosition, wxDefaultSize, 0 );
855 m_padConnectionLabel->Wrap( -1 );
856 fgSizerCopperZonesOpts->Add( m_padConnectionLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
857
858 wxString m_ZoneConnectionChoiceChoices[] = { _("From parent footprint"), _("Solid"), _("Thermal relief"), _("None") };
859 int m_ZoneConnectionChoiceNChoices = sizeof( m_ZoneConnectionChoiceChoices ) / sizeof( wxString );
860 m_ZoneConnectionChoice = new wxChoice( m_sbSizerZonesSettings->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
861 m_ZoneConnectionChoice->SetSelection( 0 );
862 fgSizerCopperZonesOpts->Add( m_ZoneConnectionChoice, 1, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
863
864 m_zoneKnockoutLabel = new wxStaticText( m_sbSizerZonesSettings->GetStaticBox(), wxID_ANY, _("Zone knockout:"), wxDefaultPosition, wxDefaultSize, 0 );
865 m_zoneKnockoutLabel->Wrap( -1 );
866 fgSizerCopperZonesOpts->Add( m_zoneKnockoutLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
867
868 wxString m_ZoneCustomPadShapeChoices[] = { _("Pad shape"), _("Pad convex hull") };
869 int m_ZoneCustomPadShapeNChoices = sizeof( m_ZoneCustomPadShapeChoices ) / sizeof( wxString );
870 m_ZoneCustomPadShape = new wxChoice( m_sbSizerZonesSettings->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneCustomPadShapeNChoices, m_ZoneCustomPadShapeChoices, 0 );
871 m_ZoneCustomPadShape->SetSelection( 0 );
872 fgSizerCopperZonesOpts->Add( m_ZoneCustomPadShape, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT, 5 );
873
874
875 m_sbSizerZonesSettings->Add( fgSizerCopperZonesOpts, 0, 0, 5 );
876
877
878 bSizerConnectionsLower->Add( m_sbSizerZonesSettings, 1, wxALL|wxEXPAND, 5 );
879
880 wxStaticBoxSizer* sbSizerThermalReliefs;
881 sbSizerThermalReliefs = new wxStaticBoxSizer( new wxStaticBox( m_connectionsPanel, wxID_ANY, _("Thermal Relief Overrides") ), wxVERTICAL );
882
883 wxFlexGridSizer* fgSizerThermalReliefs;
884 fgSizerThermalReliefs = new wxFlexGridSizer( 0, 3, 3, 0 );
885 fgSizerThermalReliefs->AddGrowableCol( 1 );
886 fgSizerThermalReliefs->SetFlexibleDirection( wxBOTH );
887 fgSizerThermalReliefs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
888
889 m_thermalGapLabel = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("Relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
890 m_thermalGapLabel->Wrap( -1 );
891 fgSizerThermalReliefs->Add( m_thermalGapLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
892
893 m_thermalGapCtrl = new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
894 fgSizerThermalReliefs->Add( m_thermalGapCtrl, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxEXPAND, 3 );
895
896 m_thermalGapUnits = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
897 m_thermalGapUnits->Wrap( -1 );
898 fgSizerThermalReliefs->Add( m_thermalGapUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
899
900 m_spokeWidthLabel = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("Spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
901 m_spokeWidthLabel->Wrap( -1 );
902 fgSizerThermalReliefs->Add( m_spokeWidthLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
903
904 m_spokeWidthCtrl = new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
905 fgSizerThermalReliefs->Add( m_spokeWidthCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 3 );
906
907 m_spokeWidthUnits = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
908 m_spokeWidthUnits->Wrap( -1 );
909 fgSizerThermalReliefs->Add( m_spokeWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
910
911 m_spokeAngleLabel = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("Spoke angle:"), wxDefaultPosition, wxDefaultSize, 0 );
912 m_spokeAngleLabel->Wrap( -1 );
913 fgSizerThermalReliefs->Add( m_spokeAngleLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
914
915 m_spokeAngleCtrl = new wxTextCtrl( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
916 fgSizerThermalReliefs->Add( m_spokeAngleCtrl, 0, wxEXPAND|wxLEFT, 3 );
917
918 m_spokeAngleUnits = new wxStaticText( sbSizerThermalReliefs->GetStaticBox(), wxID_ANY, _("deg"), wxDefaultPosition, wxDefaultSize, 0 );
919 m_spokeAngleUnits->Wrap( -1 );
920 fgSizerThermalReliefs->Add( m_spokeAngleUnits, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
921
922
923 sbSizerThermalReliefs->Add( fgSizerThermalReliefs, 1, wxBOTTOM|wxEXPAND, 5 );
924
925
926 bSizerConnectionsLower->Add( sbSizerThermalReliefs, 1, wxEXPAND|wxALL, 5 );
927
928
929 bSizerConnectionsMargins->Add( bSizerConnectionsLower, 0, wxEXPAND|wxTOP, 10 );
930
931
932 bSizerPanelConnections->Add( bSizerConnectionsMargins, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
933
934
935 m_connectionsPanel->SetSizer( bSizerPanelConnections );
936 m_connectionsPanel->Layout();
937 bSizerPanelConnections->Fit( m_connectionsPanel );
938 m_notebook->AddPage( m_connectionsPanel, _("Connections"), false );
939 m_localSettingsPanel = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
940 wxBoxSizer* bSizerPanelClearance;
941 bSizerPanelClearance = new wxBoxSizer( wxVERTICAL );
942
943 wxBoxSizer* bSizerClearance;
944 bSizerClearance = new wxBoxSizer( wxVERTICAL );
945
946 wxStaticBoxSizer* sbClearancesSizer;
947 sbClearancesSizer = new wxStaticBoxSizer( new wxStaticBox( m_localSettingsPanel, wxID_ANY, _("Clearance Overrides") ), wxVERTICAL );
948
949 wxStaticText* m_staticTextHint;
950 m_staticTextHint = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Leave values blank to use parent footprint or netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
951 m_staticTextHint->Wrap( -1 );
952 sbClearancesSizer->Add( m_staticTextHint, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
953
954 m_staticTextInfoPosValue = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Positive clearance means area bigger than the pad (usual for mask clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
955 m_staticTextInfoPosValue->Wrap( -1 );
956 sbClearancesSizer->Add( m_staticTextInfoPosValue, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
957
958 m_staticTextInfoNegVal = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Negative clearance means area smaller than the pad (usual for paste clearance)."), wxDefaultPosition, wxDefaultSize, 0 );
959 m_staticTextInfoNegVal->Wrap( -1 );
960 sbClearancesSizer->Add( m_staticTextInfoNegVal, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
961
962 wxFlexGridSizer* fgClearancesGridSizer;
963 fgClearancesGridSizer = new wxFlexGridSizer( 4, 3, 4, 0 );
964 fgClearancesGridSizer->AddGrowableCol( 1 );
965 fgClearancesGridSizer->SetFlexibleDirection( wxBOTH );
966 fgClearancesGridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
967
968 m_clearanceLabel = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
969 m_clearanceLabel->Wrap( -1 );
970 m_clearanceLabel->SetToolTip( _("This is the local net clearance for this pad.\nIf 0, the footprint local value or the Netclass value is used.") );
971
972 fgClearancesGridSizer->Add( m_clearanceLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
973
974 m_clearanceCtrl = new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
975 fgClearancesGridSizer->Add( m_clearanceCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
976
977 m_clearanceUnits = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
978 m_clearanceUnits->Wrap( -1 );
979 fgClearancesGridSizer->Add( m_clearanceUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
980
981 m_maskMarginLabel = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
982 m_maskMarginLabel->Wrap( -1 );
983 m_maskMarginLabel->SetToolTip( _("This is the local clearance between this pad and the solder mask.\nIf 0, the footprint local value or the global value is used.") );
984
985 fgClearancesGridSizer->Add( m_maskMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
986
987 m_maskMarginCtrl = new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
988 fgClearancesGridSizer->Add( m_maskMarginCtrl, 0, wxEXPAND|wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL, 15 );
989
990 m_maskMarginUnits = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
991 m_maskMarginUnits->Wrap( -1 );
992 fgClearancesGridSizer->Add( m_maskMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
993
994 m_pasteMarginLabel = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Solder paste absolute clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
995 m_pasteMarginLabel->Wrap( -1 );
996 m_pasteMarginLabel->SetToolTip( _("This is the local clearance between this pad and the solder paste.\nIf 0, the footprint value or the global value is used.\nThe final clearance value is the sum of this value and the clearance value ratio.\nA negative value means a smaller mask size than pad size.") );
997
998 fgClearancesGridSizer->Add( m_pasteMarginLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
999
1000 m_pasteMarginCtrl = new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1001 fgClearancesGridSizer->Add( m_pasteMarginCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
1002
1003 m_pasteMarginUnits = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 );
1004 m_pasteMarginUnits->Wrap( -1 );
1005 fgClearancesGridSizer->Add( m_pasteMarginUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1006
1007 m_pasteMarginRatioLabel = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
1008 m_pasteMarginRatioLabel->Wrap( -1 );
1009 m_pasteMarginRatioLabel->SetToolTip( _("This is the local clearance ratio in percent between this pad and the solder paste.\nA value of 10 means the clearance value is 10 percent of the pad size.\nIf 0, the footprint value or the global value is used.\nThe final clearance value is the sum of this value and the clearance value.\nA negative value means a smaller mask size than pad size.") );
1010
1011 fgClearancesGridSizer->Add( m_pasteMarginRatioLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
1012
1013 m_pasteMarginRatioCtrl = new wxTextCtrl( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1014 fgClearancesGridSizer->Add( m_pasteMarginRatioCtrl, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
1015
1016 m_pasteMarginRatioUnits = new wxStaticText( sbClearancesSizer->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
1017 m_pasteMarginRatioUnits->Wrap( -1 );
1018 fgClearancesGridSizer->Add( m_pasteMarginRatioUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1019
1020
1021 sbClearancesSizer->Add( fgClearancesGridSizer, 0, wxTOP|wxBOTTOM, 10 );
1022
1023 m_nonCopperWarningBook = new wxSimplebook( sbClearancesSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
1024 wxPanel* notePanel;
1025 notePanel = new wxPanel( m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1026 wxBoxSizer* bNoteSizer;
1027 bNoteSizer = new wxBoxSizer( wxVERTICAL );
1028
1029 m_nonCopperNote = new wxStaticText( notePanel, wxID_ANY, _("Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1030 m_nonCopperNote->Wrap( -1 );
1031 bNoteSizer->Add( m_nonCopperNote, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
1032
1033 m_staticTextInfoPaste = new wxStaticText( notePanel, wxID_ANY, _("Note: solder paste clearances (absolute and relative) are added to determine the final clearance."), wxDefaultPosition, wxDefaultSize, 0 );
1034 m_staticTextInfoPaste->Wrap( -1 );
1035 bNoteSizer->Add( m_staticTextInfoPaste, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
1036
1037
1038 notePanel->SetSizer( bNoteSizer );
1039 notePanel->Layout();
1040 bNoteSizer->Fit( notePanel );
1041 m_nonCopperWarningBook->AddPage( notePanel, _("a page"), false );
1042 wxPanel* warningPanel;
1043 warningPanel = new wxPanel( m_nonCopperWarningBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1044 wxBoxSizer* bWarningSizer;
1045 bWarningSizer = new wxBoxSizer( wxHORIZONTAL );
1046
1047 bWarningSizer->SetMinSize( wxSize( -1,50 ) );
1048 m_nonCopperWarningIcon = new wxStaticBitmap( warningPanel, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 48,48 ), 0 );
1049 m_nonCopperWarningIcon->SetMinSize( wxSize( 48,48 ) );
1050
1051 bWarningSizer->Add( m_nonCopperWarningIcon, 0, wxALL, 5 );
1052
1053 m_nonCopperWarningText = new wxStaticText( warningPanel, wxID_ANY, _("Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
1054 m_nonCopperWarningText->Wrap( -1 );
1055 bWarningSizer->Add( m_nonCopperWarningText, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
1056
1057
1058 warningPanel->SetSizer( bWarningSizer );
1059 warningPanel->Layout();
1060 bWarningSizer->Fit( warningPanel );
1061 m_nonCopperWarningBook->AddPage( warningPanel, _("a page"), false );
1062
1063 sbClearancesSizer->Add( m_nonCopperWarningBook, 1, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 );
1064
1065
1066 bSizerClearance->Add( sbClearancesSizer, 0, wxALL|wxEXPAND, 5 );
1067
1068
1069 bSizerPanelClearance->Add( bSizerClearance, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1070
1071
1072 m_localSettingsPanel->SetSizer( bSizerPanelClearance );
1073 m_localSettingsPanel->Layout();
1074 bSizerPanelClearance->Fit( m_localSettingsPanel );
1075 m_notebook->AddPage( m_localSettingsPanel, _("Clearance Overrides"), false );
1076
1077 bSizerUpper->Add( m_notebook, 0, wxEXPAND|wxTOP|wxBOTTOM, 12 );
1078
1079 wxBoxSizer* bSizerDisplayPad;
1080 bSizerDisplayPad = new wxBoxSizer( wxVERTICAL );
1081
1082 bSizerDisplayPad->SetMinSize( wxSize( 290,-1 ) );
1083
1084 bSizerDisplayPad->Add( 0, 25, 0, wxEXPAND, 5 );
1085
1086 m_stackupImagesBook = new wxSimplebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_SIMPLE );
1087 page0 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1088 wxBoxSizer* page0Sizer;
1089 page0Sizer = new wxBoxSizer( wxVERTICAL );
1090
1091 m_stackupImage0 = new wxStaticBitmap( page0, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1092 page0Sizer->Add( m_stackupImage0, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1093
1094
1095 page0->SetSizer( page0Sizer );
1096 page0->Layout();
1097 page0Sizer->Fit( page0 );
1098 m_stackupImagesBook->AddPage( page0, _("a page"), false );
1099 page1 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1100 wxBoxSizer* page1Sizer;
1101 page1Sizer = new wxBoxSizer( wxVERTICAL );
1102
1103 m_stackupImage1 = new wxStaticBitmap( page1, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1104 page1Sizer->Add( m_stackupImage1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1105
1106
1107 page1->SetSizer( page1Sizer );
1108 page1->Layout();
1109 page1Sizer->Fit( page1 );
1110 m_stackupImagesBook->AddPage( page1, _("a page"), false );
1111 page2 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1112 wxBoxSizer* page2Sizer;
1113 page2Sizer = new wxBoxSizer( wxVERTICAL );
1114
1115 m_stackupImage2 = new wxStaticBitmap( page2, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1116 page2Sizer->Add( m_stackupImage2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1117
1118
1119 page2->SetSizer( page2Sizer );
1120 page2->Layout();
1121 page2Sizer->Fit( page2 );
1122 m_stackupImagesBook->AddPage( page2, _("a page"), false );
1123 page3 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1124 wxBoxSizer* page3Sizer;
1125 page3Sizer = new wxBoxSizer( wxVERTICAL );
1126
1127
1128 page3->SetSizer( page3Sizer );
1129 page3->Layout();
1130 page3Sizer->Fit( page3 );
1131 m_stackupImagesBook->AddPage( page3, _("a page"), false );
1132 page4 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1133 wxBoxSizer* page4Sizer;
1134 page4Sizer = new wxBoxSizer( wxVERTICAL );
1135
1136 m_stackupImage4 = new wxStaticBitmap( page4, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1137 page4Sizer->Add( m_stackupImage4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1138
1139
1140 page4->SetSizer( page4Sizer );
1141 page4->Layout();
1142 page4Sizer->Fit( page4 );
1143 m_stackupImagesBook->AddPage( page4, _("a page"), false );
1144 page5 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1145 wxBoxSizer* page5Sizer;
1146 page5Sizer = new wxBoxSizer( wxVERTICAL );
1147
1148 m_stackupImage5 = new wxStaticBitmap( page5, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1149 page5Sizer->Add( m_stackupImage5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1150
1151
1152 page5->SetSizer( page5Sizer );
1153 page5->Layout();
1154 page5Sizer->Fit( page5 );
1155 m_stackupImagesBook->AddPage( page5, _("a page"), false );
1156 page6 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1157 wxBoxSizer* page6Sizer;
1158 page6Sizer = new wxBoxSizer( wxVERTICAL );
1159
1160 m_stackupImage6 = new wxStaticBitmap( page6, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1161 page6Sizer->Add( m_stackupImage6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1162
1163
1164 page6->SetSizer( page6Sizer );
1165 page6->Layout();
1166 page6Sizer->Fit( page6 );
1167 m_stackupImagesBook->AddPage( page6, _("a page"), false );
1168 page7 = new wxPanel( m_stackupImagesBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1169 wxBoxSizer* page7Sizer;
1170 page7Sizer = new wxBoxSizer( wxVERTICAL );
1171
1172 m_stackupImage7 = new wxStaticBitmap( page7, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1173 page7Sizer->Add( m_stackupImage7, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1174
1175
1176 page7->SetSizer( page7Sizer );
1177 page7->Layout();
1178 page7Sizer->Fit( page7 );
1179 m_stackupImagesBook->AddPage( page7, _("a page"), false );
1180
1181 bSizerDisplayPad->Add( m_stackupImagesBook, 0, wxEXPAND|wxRIGHT|wxLEFT, 7 );
1182
1183
1184 bSizerDisplayPad->Add( 0, 4, 0, wxEXPAND, 5 );
1185
1186 m_boardViewPanel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1187 m_padPreviewSizer = new wxBoxSizer( wxVERTICAL );
1188
1189 m_padPreviewSizer->SetMinSize( wxSize( 280,-1 ) );
1190
1192 m_boardViewPanel->Layout();
1194 bSizerDisplayPad->Add( m_boardViewPanel, 1, wxEXPAND|wxRIGHT|wxLEFT, 2 );
1195
1196
1197 bSizerUpper->Add( bSizerDisplayPad, 1, wxEXPAND|wxTOP, 5 );
1198
1199
1200 m_MainSizer->Add( bSizerUpper, 1, wxEXPAND|wxLEFT, 8 );
1201
1202 wxBoxSizer* bottomSizer;
1203 bottomSizer = new wxBoxSizer( wxHORIZONTAL );
1204
1205 m_parentInfo = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1206 m_parentInfo->Wrap( -1 );
1207 bottomSizer->Add( m_parentInfo, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 8 );
1208
1209
1210 bottomSizer->Add( 20, 0, 1, wxEXPAND, 5 );
1211
1212 m_cbShowPadOutline = new wxCheckBox( this, wxID_ANY, _("Preview pad in sketch mode"), wxDefaultPosition, wxDefaultSize, 0 );
1213 bottomSizer->Add( m_cbShowPadOutline, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1214
1215
1216 bottomSizer->Add( 40, 0, 0, wxEXPAND, 5 );
1217
1218 m_sdbSizer = new wxStdDialogButtonSizer();
1219 m_sdbSizerOK = new wxButton( this, wxID_OK );
1220 m_sdbSizer->AddButton( m_sdbSizerOK );
1221 m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
1222 m_sdbSizer->AddButton( m_sdbSizerCancel );
1223 m_sdbSizer->Realize();
1224
1225 bottomSizer->Add( m_sdbSizer, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
1226
1227
1228 m_MainSizer->Add( bottomSizer, 0, wxEXPAND|wxLEFT, 5 );
1229
1230
1231 this->SetSizer( m_MainSizer );
1232 this->Layout();
1233 m_MainSizer->Fit( this );
1234
1235 this->Centre( wxBOTH );
1236
1237 // Connect Events
1238 this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnInitDialog ) );
1239 m_panelGeneral->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUI ), NULL, this );
1240 m_padType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadTypeSelected ), NULL, this );
1241 m_padNumCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1242 m_cbPadstackMode->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadstackModeChanged ), NULL, this );
1243 m_cbEditLayer->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnEditLayerChanged ), NULL, this );
1244 m_PadShapeSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadShapeSelection ), NULL, this );
1245 m_trapDeltaCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1246 m_trapAxisCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1247 m_cornerRatioCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1248 m_cornerRadiusCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerRadiusChange ), NULL, this );
1249 m_chamferRatioCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1250 m_cbTopLeft->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1251 m_cbTopRight->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1252 m_cbBottomLeft->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1253 m_cbBottomRight->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1254 m_mixedChamferRatioCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1255 m_cbTopLeft1->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1256 m_cbTopRight1->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1257 m_cbBottomLeft1->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1258 m_cbBottomRight1->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1259 m_mixedCornerRatioCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1260 m_sizeXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1261 m_sizeYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1262 m_cb_padrotation->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this );
1263 m_cb_padrotation->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this );
1264 m_offsetShapeOpt->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnOffsetCheckbox ), NULL, this );
1265 m_offsetXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1266 m_offsetYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1267 m_holeShapeCtrl->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnDrillShapeSelected ), NULL, this );
1268 m_holeXCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1269 m_holeYCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1270 m_padToDieOpt->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadToDieCheckbox ), NULL, this );
1271 m_rbCopperLayersSel->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetCopperLayers ), NULL, this );
1272 m_layerFrontAdhesive->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1273 m_layerBackAdhesive->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1274 m_layerFrontPaste->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1275 m_layerBackPaste->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1276 m_layerFrontSilk->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1277 m_layerBackSilk->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1278 m_layerFrontMask->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1279 m_layerBackMask->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1280 m_layerUserDwgs->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1281 m_layerECO1->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1282 m_layerECO2->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1283 m_cbTeardrops->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1284 m_cbTeardrops->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1285 m_cbPreferZoneConnection->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1286 m_cbPreferZoneConnection->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1287 m_cbTeardropsUseNextTrack->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1288 m_cbTeardropsUseNextTrack->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1289 m_stHDRatio->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1290 m_spTeardropHDPercent->Connect( wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, wxSpinDoubleEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1291 m_spTeardropHDPercent->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1292 m_spTeardropHDPercent->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1293 m_minTrackWidthUnits->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1294 m_teardropShapeLabel->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1295 m_bitmapTeardrop->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1296 m_stHsetting->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1297 m_spTeardropLenPercent->Connect( wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, wxSpinDoubleEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1298 m_spTeardropLenPercent->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1299 m_spTeardropLenPercent->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1300 m_stMaxLen->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1301 m_tcTdMaxLen->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1302 m_stMaxLenUnits->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1303 m_stVsetting->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1304 m_spTeardropSizePercent->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1305 m_stTdMaxSize->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1306 m_tcMaxHeight->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1307 m_stMaxHeightUnits->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1308 m_ZoneConnectionChoice->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1309 m_ZoneCustomPadShape->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1310 m_thermalGapCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1311 m_spokeWidthCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1312 m_spokeAngleCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1313 m_clearanceCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1314 m_maskMarginCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1315 m_pasteMarginCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1316 m_pasteMarginRatioCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1317 m_nonCopperWarningBook->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUINonCopperWarning ), NULL, this );
1318 m_cbShowPadOutline->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onChangePadMode ), NULL, this );
1319 m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnCancel ), NULL, this );
1320}
1321
1323{
1324 // Disconnect Events
1325 this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnInitDialog ) );
1326 m_panelGeneral->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUI ), NULL, this );
1327 m_padType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadTypeSelected ), NULL, this );
1328 m_padNumCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1329 m_cbPadstackMode->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadstackModeChanged ), NULL, this );
1330 m_cbEditLayer->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnEditLayerChanged ), NULL, this );
1331 m_PadShapeSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadShapeSelection ), NULL, this );
1332 m_trapDeltaCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1333 m_trapAxisCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1334 m_cornerRatioCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1335 m_cornerRadiusCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerRadiusChange ), NULL, this );
1336 m_chamferRatioCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1337 m_cbTopLeft->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1338 m_cbTopRight->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1339 m_cbBottomLeft->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1340 m_cbBottomRight->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1341 m_mixedChamferRatioCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1342 m_cbTopLeft1->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1343 m_cbTopRight1->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1344 m_cbBottomLeft1->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1345 m_cbBottomRight1->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1346 m_mixedCornerRatioCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onCornerSizePercentChange ), NULL, this );
1347 m_sizeXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1348 m_sizeYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1349 m_cb_padrotation->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this );
1350 m_cb_padrotation->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::PadOrientEvent ), NULL, this );
1351 m_offsetShapeOpt->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnOffsetCheckbox ), NULL, this );
1352 m_offsetXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1353 m_offsetYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1354 m_holeShapeCtrl->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnDrillShapeSelected ), NULL, this );
1355 m_holeXCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1356 m_holeYCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1357 m_padToDieOpt->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnPadToDieCheckbox ), NULL, this );
1358 m_rbCopperLayersSel->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetCopperLayers ), NULL, this );
1359 m_layerFrontAdhesive->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1360 m_layerBackAdhesive->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1361 m_layerFrontPaste->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1362 m_layerBackPaste->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1363 m_layerFrontSilk->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1364 m_layerBackSilk->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1365 m_layerFrontMask->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1366 m_layerBackMask->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1367 m_layerUserDwgs->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1368 m_layerECO1->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1369 m_layerECO2->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnSetLayers ), NULL, this );
1370 m_cbTeardrops->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1371 m_cbTeardrops->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1372 m_cbPreferZoneConnection->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1373 m_cbPreferZoneConnection->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1374 m_cbTeardropsUseNextTrack->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1375 m_cbTeardropsUseNextTrack->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1376 m_stHDRatio->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1377 m_spTeardropHDPercent->Disconnect( wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, wxSpinDoubleEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1378 m_spTeardropHDPercent->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1379 m_spTeardropHDPercent->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1380 m_minTrackWidthUnits->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1381 m_teardropShapeLabel->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1382 m_bitmapTeardrop->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1383 m_stHsetting->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1384 m_spTeardropLenPercent->Disconnect( wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED, wxSpinDoubleEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1385 m_spTeardropLenPercent->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1386 m_spTeardropLenPercent->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1387 m_stMaxLen->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1388 m_tcTdMaxLen->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1389 m_stMaxLenUnits->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1390 m_stVsetting->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1391 m_spTeardropSizePercent->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1392 m_stTdMaxSize->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1393 m_tcMaxHeight->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1394 m_stMaxHeightUnits->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::onTeardropsUpdateUi ), NULL, this );
1395 m_ZoneConnectionChoice->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1396 m_ZoneCustomPadShape->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1397 m_thermalGapCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1398 m_spokeWidthCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1399 m_spokeAngleCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onModify ), NULL, this );
1400 m_clearanceCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1401 m_maskMarginCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1402 m_pasteMarginCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1403 m_pasteMarginRatioCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnValuesChanged ), NULL, this );
1404 m_nonCopperWarningBook->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnUpdateUINonCopperWarning ), NULL, this );
1405 m_cbShowPadOutline->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::onChangePadMode ), NULL, this );
1406 m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PAD_PROPERTIES_BASE::OnCancel ), NULL, this );
1407
1408}
virtual void PadOrientEvent(wxCommandEvent &event)
virtual void onChangePadMode(wxCommandEvent &event)
virtual void OnInitDialog(wxInitDialogEvent &event)
wxStdDialogButtonSizer * m_sdbSizer
virtual void OnPadToDieCheckbox(wxCommandEvent &event)
virtual void OnUpdateUINonCopperWarning(wxUpdateUIEvent &event)
virtual void OnPadstackModeChanged(wxCommandEvent &event)
virtual void onTeardropsUpdateUi(wxUpdateUIEvent &event)
virtual void OnCancel(wxCommandEvent &event)
virtual void PadTypeSelected(wxCommandEvent &event)
virtual void OnPadShapeSelection(wxCommandEvent &event)
virtual void OnEditLayerChanged(wxCommandEvent &event)
virtual void OnUpdateUI(wxUpdateUIEvent &event)
virtual void onModify(wxCommandEvent &event)
virtual void onCornerRadiusChange(wxCommandEvent &event)
virtual void OnValuesChanged(wxCommandEvent &event)
DIALOG_PAD_PROPERTIES_BASE(wxWindow *parent, wxWindowID id=wxID_DIALOG_EDIT_PAD, const wxString &title=_("Pad Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
virtual void OnOffsetCheckbox(wxCommandEvent &event)
virtual void onCornerSizePercentChange(wxCommandEvent &event)
virtual void OnDrillShapeSelected(wxCommandEvent &event)
virtual void OnSetLayers(wxCommandEvent &event)
virtual void OnSetCopperLayers(wxCommandEvent &event)
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
Definition: dialog_shim.h:52
wxTextCtrl wrapper to handle math expression evaluation.
#define wxID_PADNUMCTRL
#define _(s)