16DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
18 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
24 wxBoxSizer* m_PanelPropertiesBoxSizer;
25 m_PanelPropertiesBoxSizer =
new wxBoxSizer( wxVERTICAL );
27 wxStaticBoxSizer* sbSizerTexts;
28 sbSizerTexts =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY, wxEmptyString ), wxVERTICAL );
30 m_itemsGrid =
new WX_GRID( sbSizerTexts->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), 0 );
65 m_itemsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
69 m_itemsGrid->SetRowLabelValue( 0,
_(
"Reference designator") );
72 m_itemsGrid->SetRowLabelAlignment( wxALIGN_LEFT, wxALIGN_CENTER );
77 m_itemsGrid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
80 sbSizerTexts->Add(
m_itemsGrid, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
82 wxBoxSizer* bButtonSize;
83 bButtonSize =
new wxBoxSizer( wxHORIZONTAL );
85 m_bpAdd =
new STD_BITMAP_BUTTON( sbSizerTexts->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
86 bButtonSize->Add(
m_bpAdd, 0, wxBOTTOM|wxLEFT|wxRIGHT, 5 );
89 bButtonSize->Add( 20, 0, 0, wxEXPAND, 5 );
91 m_bpDelete =
new STD_BITMAP_BUTTON( sbSizerTexts->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
95 sbSizerTexts->Add( bButtonSize, 0, wxEXPAND, 5 );
98 m_PanelPropertiesBoxSizer->Add( sbSizerTexts, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
100 wxFlexGridSizer* fgSizerFPID;
101 fgSizerFPID =
new wxFlexGridSizer( 4, 2, 3, 0 );
102 fgSizerFPID->AddGrowableCol( 1 );
103 fgSizerFPID->SetFlexibleDirection( wxBOTH );
104 fgSizerFPID->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
106 wxStaticText* staticFPNameLabel;
107 staticFPNameLabel =
new wxStaticText(
m_PanelGeneral, wxID_ANY,
_(
"Footprint name:"), wxDefaultPosition, wxDefaultSize, 0 );
108 staticFPNameLabel->Wrap( -1 );
109 fgSizerFPID->Add( staticFPNameLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5 );
114 wxStaticText* staticDescriptionLabel;
115 staticDescriptionLabel =
new wxStaticText(
m_PanelGeneral, wxID_ANY,
_(
"Description:"), wxDefaultPosition, wxDefaultSize, 0 );
116 staticDescriptionLabel->Wrap( -1 );
117 fgSizerFPID->Add( staticDescriptionLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
120 fgSizerFPID->Add(
m_DocCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
127 fgSizerFPID->Add(
m_KeywordCtrl, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
130 m_PanelPropertiesBoxSizer->Add( fgSizerFPID, 0, wxEXPAND|wxBOTTOM, 10 );
132 wxBoxSizer* bSizerProperties;
133 bSizerProperties =
new wxBoxSizer( wxHORIZONTAL );
135 wxStaticBoxSizer* bSizerPrivateLayers;
136 bSizerPrivateLayers =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Private Layers") ), wxVERTICAL );
165 wxBoxSizer* bButtonSize1;
166 bButtonSize1 =
new wxBoxSizer( wxHORIZONTAL );
168 m_bpAddLayer =
new STD_BITMAP_BUTTON( bSizerPrivateLayers->GetStaticBox(), wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
169 bButtonSize1->Add(
m_bpAddLayer, 0, wxRIGHT|wxLEFT, 5 );
172 bButtonSize1->Add( 20, 0, 0, wxEXPAND, 5 );
178 bSizerPrivateLayers->Add( bButtonSize1, 0, wxEXPAND, 5 );
181 bSizerProperties->Add( bSizerPrivateLayers, 1, wxEXPAND|wxRIGHT, 15 );
183 wxStaticBoxSizer* sbFabSizer;
184 sbFabSizer =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelGeneral, wxID_ANY,
_(
"Fabrication Attributes") ), wxVERTICAL );
186 wxBoxSizer* bPartTypeSizer;
187 bPartTypeSizer =
new wxBoxSizer( wxHORIZONTAL );
189 m_componentTypeLabel =
new wxStaticText( sbFabSizer->GetStaticBox(), wxID_ANY,
_(
"Component type:"), wxDefaultPosition, wxDefaultSize, 0 );
191 bPartTypeSizer->Add(
m_componentTypeLabel, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
193 wxString m_componentTypeChoices[] = {
_(
"Through hole"),
_(
"SMD"),
_(
"Unspecified") };
194 int m_componentTypeNChoices =
sizeof( m_componentTypeChoices ) /
sizeof( wxString );
195 m_componentType =
new wxChoice( sbFabSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_componentTypeNChoices, m_componentTypeChoices, 0 );
197 bPartTypeSizer->Add(
m_componentType, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
200 sbFabSizer->Add( bPartTypeSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
202 m_boardOnly =
new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY,
_(
"Not in schematic"), wxDefaultPosition, wxDefaultSize, 0 );
205 m_excludeFromPosFiles =
new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from position files"), wxDefaultPosition, wxDefaultSize, 0 );
208 m_excludeFromBOM =
new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY,
_(
"Exclude from bill of materials"), wxDefaultPosition, wxDefaultSize, 0 );
211 m_noCourtyards =
new wxCheckBox( sbFabSizer->GetStaticBox(), wxID_ANY,
_(
"Exempt from courtyard requirement"), wxDefaultPosition, wxDefaultSize, 0 );
212 m_noCourtyards->SetToolTip(
_(
"Will not generate \"missing courtyard\" DRC violations") );
217 bSizerProperties->Add( sbFabSizer, 1, wxEXPAND|wxRIGHT, 5 );
220 m_PanelPropertiesBoxSizer->Add( bSizerProperties, 0, wxEXPAND|wxTOP|wxBOTTOM|wxLEFT, 5 );
228 wxBoxSizer* bSizerPanelClearances;
229 bSizerPanelClearances =
new wxBoxSizer( wxVERTICAL );
231 wxStaticBoxSizer* sbSizerLocalProperties;
232 sbSizerLocalProperties =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Clearances") ), wxVERTICAL );
234 m_staticTextInfo =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Set values to 0 to use netclass values."), wxDefaultPosition, wxDefaultSize, 0 );
236 sbSizerLocalProperties->Add(
m_staticTextInfo, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
238 wxGridBagSizer* gbSizer1;
239 gbSizer1 =
new wxGridBagSizer( 4, 0 );
240 gbSizer1->SetFlexibleDirection( wxBOTH );
241 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
242 gbSizer1->SetEmptyCellSize( wxSize( -1,15 ) );
244 m_NetClearanceLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Pad clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
246 m_NetClearanceLabel->SetToolTip(
_(
"This is the local net clearance for all pads of this footprint.\nIf 0, the Netclass values are used.\nThis value can be overridden on a pad-by-pad basis in the Local\nClearance and Settings tab of Pad Properties.") );
248 gbSizer1->Add(
m_NetClearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
250 m_NetClearanceCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"0"), wxDefaultPosition, wxDefaultSize, 0 );
251 gbSizer1->Add(
m_NetClearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
253 m_NetClearanceUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
255 gbSizer1->Add(
m_NetClearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
257 m_SolderMaskMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder mask expansion:"), wxDefaultPosition, wxDefaultSize, 0 );
259 m_SolderMaskMarginLabel->SetToolTip(
_(
"This is the local clearance between pads and the solder mask for \nthis footprint.\nIf 0, the global value is used.\nThis value can be overridden on a pad-by-pad basis in the Local\nClearance and Settings tab of Pad Properties.") );
261 gbSizer1->Add(
m_SolderMaskMarginLabel, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
263 m_SolderMaskMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
264 gbSizer1->Add(
m_SolderMaskMarginCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
266 m_SolderMaskMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
268 gbSizer1->Add(
m_SolderMaskMarginUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
270 m_allowBridges =
new wxCheckBox( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Allow bridged solder mask apertures between pads"), wxDefaultPosition, wxDefaultSize, 0 );
271 gbSizer1->Add(
m_allowBridges, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
273 m_SolderPasteMarginLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste absolute clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
275 m_SolderPasteMarginLabel->SetToolTip(
_(
"This is the local clearance between pads and the solder paste for\nthis footprint.\nThe final clearance value is the sum of this value and the clearance value ratio.\nA negative value means a smaller stencil aperture size than pad size.\nThis value can be overridden on a pad-by-pad basis in the Local\nClearance and Settings tab of Pad Properties.") );
277 gbSizer1->Add(
m_SolderPasteMarginLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
279 m_SolderPasteMarginCtrl =
new wxTextCtrl( sbSizerLocalProperties->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
282 m_SolderPasteMarginUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
284 gbSizer1->Add(
m_SolderPasteMarginUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
286 m_PasteMarginRatioLabel =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Solder paste relative clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
288 m_PasteMarginRatioLabel->SetToolTip(
_(
"This is the local clearance ratio applied as a percentage of the pad width and height for this footprint.\nA value of 10 means the horizontal clearance value is 10% of the pad’s width, and the vertical clearance value is 10% of the pad’s height.\nThe final clearance value is the sum of this value and the absolute clearance value.\nA negative value means a smaller stencil aperture size than pad size.\nThis value can be overridden on a pad-by-pad basis in the Local Clearance and Settings tab of Pad Properties.") );
290 gbSizer1->Add(
m_PasteMarginRatioLabel, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
293 gbSizer1->Add(
m_PasteMarginRatioCtrl, wxGBPosition( 6, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
295 m_PasteMarginRatioUnits =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"%"), wxDefaultPosition, wxDefaultSize, 0 );
297 gbSizer1->Add(
m_PasteMarginRatioUnits, wxGBPosition( 6, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
300 sbSizerLocalProperties->Add( gbSizer1, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
302 wxFlexGridSizer* fgSizerClearances;
303 fgSizerClearances =
new wxFlexGridSizer( 5, 3, 0, 0 );
304 fgSizerClearances->AddGrowableCol( 1 );
305 fgSizerClearances->SetFlexibleDirection( wxBOTH );
306 fgSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
309 sbSizerLocalProperties->Add( fgSizerClearances, 1, wxEXPAND, 5 );
311 m_staticTextInfoCopper =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Note: solder mask and paste values are used only for pads on copper layers."), wxDefaultPosition, wxDefaultSize, 0 );
315 m_staticTextInfoPaste =
new wxStaticText( sbSizerLocalProperties->GetStaticBox(), wxID_ANY,
_(
"Note: solder paste clearances (absolute and relative) are added to determine the final clearance."), wxDefaultPosition, wxDefaultSize, 0 );
320 bSizerPanelClearances->Add( sbSizerLocalProperties, 0, wxEXPAND|wxALL, 5 );
322 wxStaticBoxSizer* sbSizerCopperZones;
323 sbSizerCopperZones =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Connection to Copper Zones") ), wxHORIZONTAL );
325 m_staticText16 =
new wxStaticText( sbSizerCopperZones->GetStaticBox(), wxID_ANY,
_(
"Pad connection to zones:"), wxDefaultPosition, wxDefaultSize, 0 );
327 sbSizerCopperZones->Add(
m_staticText16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
329 wxString m_ZoneConnectionChoiceChoices[] = {
_(
"Use zone setting"),
_(
"Solid"),
_(
"Thermal relief"),
_(
"None") };
330 int m_ZoneConnectionChoiceNChoices =
sizeof( m_ZoneConnectionChoiceChoices ) /
sizeof( wxString );
331 m_ZoneConnectionChoice =
new wxChoice( sbSizerCopperZones->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ZoneConnectionChoiceNChoices, m_ZoneConnectionChoiceChoices, 0 );
336 bSizerPanelClearances->Add( sbSizerCopperZones, 0, wxALL|wxEXPAND, 5 );
338 wxStaticBoxSizer* sbSizerNetTies;
339 sbSizerNetTies =
new wxStaticBoxSizer(
new wxStaticBox(
m_PanelClearances, wxID_ANY,
_(
"Net Ties") ), wxVERTICAL );
341 m_padGroupsLabel =
new wxStaticText( sbSizerNetTies->GetStaticBox(), wxID_ANY,
_(
"Pad groups allowed to short different nets:"), wxDefaultPosition, wxDefaultSize, 0 );
345 m_padGroupsGrid =
new WX_GRID( sbSizerNetTies->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
359 m_padGroupsGrid->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
364 m_padGroupsGrid->SetRowLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
374 wxBoxSizer* bButtonSize2;
375 bButtonSize2 =
new wxBoxSizer( wxHORIZONTAL );
381 bButtonSize2->Add( 20, 0, 0, wxEXPAND, 5 );
387 sbSizerNetTies->Add( bButtonSize2, 0, wxEXPAND, 2 );
390 bSizerPanelClearances->Add( sbSizerNetTies, 1, wxEXPAND|wxALL, 5 );
400 wxBoxSizer* bSizer16;
401 bSizer16 =
new wxBoxSizer( wxHORIZONTAL );
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
wxTextCtrl wrapper to handle math expression evaluation.
void SetColLabelSize(int aHeight)
Hide wxGrid's SetColLabelSize() method with one which makes sure the size is tall enough for the syst...