14DIALOG_CREATE_ARRAY_BASE::DIALOG_CREATE_ARRAY_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
16 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
18 wxBoxSizer* bMainSizer;
19 bMainSizer =
new wxBoxSizer( wxVERTICAL );
22 bSizer7 =
new wxBoxSizer( wxHORIZONTAL );
24 m_gridTypeNotebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
26 wxBoxSizer* bSizerGridArray;
27 bSizerGridArray =
new wxBoxSizer( wxHORIZONTAL );
29 wxBoxSizer* bSizerGridLeft;
30 bSizerGridLeft =
new wxBoxSizer( wxVERTICAL );
32 wxStaticBoxSizer* sbSizerGridSize;
33 sbSizerGridSize =
new wxStaticBoxSizer(
new wxStaticBox(
m_gridPanel, wxID_ANY,
_(
"Grid Array Size") ), wxVERTICAL );
35 wxFlexGridSizer* fgSizerGridSize;
36 fgSizerGridSize =
new wxFlexGridSizer( 0, 2, 5, 5 );
37 fgSizerGridSize->AddGrowableCol( 1 );
38 fgSizerGridSize->SetFlexibleDirection( wxBOTH );
39 fgSizerGridSize->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
41 m_labelNx =
new wxStaticText( sbSizerGridSize->GetStaticBox(), wxID_ANY,
_(
"Horizontal count:"), wxDefaultPosition, wxDefaultSize, 0 );
43 m_labelNx->SetToolTip(
_(
"Number of columns") );
45 fgSizerGridSize->Add(
m_labelNx, 0, wxALIGN_CENTER_VERTICAL, 5 );
47 m_entryNx =
new TEXT_CTRL_EVAL( sbSizerGridSize->GetStaticBox(), wxID_ANY,
_(
"5"), wxDefaultPosition, wxDefaultSize, 0 );
50 fgSizerGridSize->Add(
m_entryNx, 0, wxEXPAND, 5 );
52 m_labelNy =
new wxStaticText( sbSizerGridSize->GetStaticBox(), wxID_ANY,
_(
"Vertical count:"), wxDefaultPosition, wxDefaultSize, 0 );
56 fgSizerGridSize->Add(
m_labelNy, 0, wxALIGN_CENTER_VERTICAL, 5 );
58 m_entryNy =
new TEXT_CTRL_EVAL( sbSizerGridSize->GetStaticBox(), wxID_ANY,
_(
"5"), wxDefaultPosition, wxDefaultSize, 0 );
62 fgSizerGridSize->Add(
m_entryNy, 0, wxEXPAND, 5 );
65 sbSizerGridSize->Add( fgSizerGridSize, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
68 bSizerGridLeft->Add( sbSizerGridSize, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 10 );
70 wxStaticBoxSizer* sbSizerItemsSpacing;
71 sbSizerItemsSpacing =
new wxStaticBoxSizer(
new wxStaticBox(
m_gridPanel, wxID_ANY,
_(
"Items Spacing") ), wxVERTICAL );
73 wxFlexGridSizer* fgSizerItemSpacing;
74 fgSizerItemSpacing =
new wxFlexGridSizer( 0, 3, 5, 5 );
75 fgSizerItemSpacing->AddGrowableCol( 1 );
76 fgSizerItemSpacing->SetFlexibleDirection( wxBOTH );
77 fgSizerItemSpacing->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
79 m_labelDx =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"Horizontal spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
81 m_labelDx->SetToolTip(
_(
"Distance between columns") );
83 fgSizerItemSpacing->Add(
m_labelDx, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
85 m_entryDx =
new wxTextCtrl( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"2.54"), wxDefaultPosition, wxDefaultSize, 0 );
86 fgSizerItemSpacing->Add(
m_entryDx, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
88 m_unitLabelDx =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
90 fgSizerItemSpacing->Add(
m_unitLabelDx, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
92 m_labelDy =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"Vertical spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
94 m_labelDy->SetToolTip(
_(
"Distance between rows") );
96 fgSizerItemSpacing->Add(
m_labelDy, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
98 m_entryDy =
new wxTextCtrl( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"2.54"), wxDefaultPosition, wxDefaultSize, 0 );
99 fgSizerItemSpacing->Add(
m_entryDy, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
101 m_unitLabelDy =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
103 fgSizerItemSpacing->Add(
m_unitLabelDy, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
106 fgSizerItemSpacing->Add( 0, 5, 1, wxEXPAND, 5 );
109 fgSizerItemSpacing->Add( 0, 0, 1, wxEXPAND, 5 );
112 fgSizerItemSpacing->Add( 0, 0, 1, wxEXPAND, 5 );
114 m_labelOffsetX =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"Horizontal offset:"), wxDefaultPosition, wxDefaultSize, 0 );
116 m_labelOffsetX->SetToolTip(
_(
"Offset added to the next row position.") );
118 fgSizerItemSpacing->Add(
m_labelOffsetX, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
120 m_entryOffsetX =
new wxTextCtrl( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"0"), wxDefaultPosition, wxDefaultSize, 0 );
121 fgSizerItemSpacing->Add(
m_entryOffsetX, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
123 m_unitLabelOffsetX =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
127 m_labelOffsetY =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"Vertical offset:"), wxDefaultPosition, wxDefaultSize, 0 );
129 m_labelOffsetY->SetToolTip(
_(
"Offset added to the next column position") );
131 fgSizerItemSpacing->Add(
m_labelOffsetY, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
133 m_entryOffsetY =
new wxTextCtrl( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"0"), wxDefaultPosition, wxDefaultSize, 0 );
134 fgSizerItemSpacing->Add(
m_entryOffsetY, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
136 m_unitLabelOffsetY =
new wxStaticText( sbSizerItemsSpacing->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
141 sbSizerItemsSpacing->Add( fgSizerItemSpacing, 1, wxEXPAND|wxBOTTOM, 5 );
144 bSizerGridLeft->Add( sbSizerItemsSpacing, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 );
146 wxStaticBoxSizer* sbSizerStagger;
147 sbSizerStagger =
new wxStaticBoxSizer(
new wxStaticBox(
m_gridPanel, wxID_ANY,
_(
"Stagger Settings") ), wxVERTICAL );
149 wxBoxSizer* bSizerStaggerset;
150 bSizerStaggerset =
new wxBoxSizer( wxHORIZONTAL );
152 m_labelStagger =
new wxStaticText( sbSizerStagger->GetStaticBox(), wxID_ANY,
_(
"Stagger:"), wxDefaultPosition, wxDefaultSize, 0 );
154 m_labelStagger->SetToolTip(
_(
"Value -1, 0 or 1 disable this option.") );
156 bSizerStaggerset->Add(
m_labelStagger, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
159 bSizerStaggerset->Add(
m_entryStagger, 1, wxRIGHT|wxLEFT|wxEXPAND, 5 );
162 sbSizerStagger->Add( bSizerStaggerset, 1, wxEXPAND, 5 );
164 m_staggerRows =
new wxRadioButton( sbSizerStagger->GetStaticBox(), wxID_ANY,
_(
"Rows"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
167 m_staggerCols =
new wxRadioButton( sbSizerStagger->GetStaticBox(), wxID_ANY,
_(
"Columns"), wxDefaultPosition, wxDefaultSize, 0 );
169 sbSizerStagger->Add(
m_staggerCols, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
172 bSizerGridLeft->Add( sbSizerStagger, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 );
174 wxStaticBoxSizer* sbGridPosition;
175 sbGridPosition =
new wxStaticBoxSizer(
new wxStaticBox(
m_gridPanel, wxID_ANY,
_(
"Grid Position") ), wxVERTICAL );
177 m_rbItemsRemainInPlace =
new wxRadioButton( sbGridPosition->GetStaticBox(), wxID_ANY,
_(
"Source items remain in place"), wxDefaultPosition, wxDefaultSize, 0 );
180 m_rbCentreOnSource =
new wxRadioButton( sbGridPosition->GetStaticBox(), wxID_ANY,
_(
"Centre on source items"), wxDefaultPosition, wxDefaultSize, 0 );
184 bSizerGridLeft->Add( sbGridPosition, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 10 );
187 bSizerGridArray->Add( bSizerGridLeft, 1, wxEXPAND, 5 );
192 wxBoxSizer* bSizer15;
193 bSizer15 =
new wxBoxSizer( wxVERTICAL );
201 wxString m_radioBoxGridNumberingAxisChoices[] = {
_(
"Horizontal, then vertical"),
_(
"Vertical, then horizontal") };
202 int m_radioBoxGridNumberingAxisNChoices =
sizeof( m_radioBoxGridNumberingAxisChoices ) /
sizeof( wxString );
210 wxString m_rbGridStartNumberingOptChoices[] = {
_(
"Use first free number"),
_(
"From start value") };
211 int m_rbGridStartNumberingOptNChoices =
sizeof( m_rbGridStartNumberingOptChoices ) /
sizeof( wxString );
216 wxString m_radioBoxGridNumberingSchemeChoices[] = {
_(
"Continuous (1, 2, 3...)"),
_(
"Coordinate (A1, A2, ... B1, ...)") };
217 int m_radioBoxGridNumberingSchemeNChoices =
sizeof( m_radioBoxGridNumberingSchemeChoices ) /
sizeof( wxString );
226 wxArrayString m_choicePriAxisNumberingChoices;
237 wxArrayString m_choiceSecAxisNumberingChoices;
244 wxFlexGridSizer* fgSizer1;
245 fgSizer1 =
new wxFlexGridSizer( 2, 3, 0, 0 );
246 fgSizer1->AddGrowableCol( 0 );
247 fgSizer1->SetFlexibleDirection( wxBOTH );
248 fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
297 bSizer4 =
new wxBoxSizer( wxHORIZONTAL );
299 wxBoxSizer* bSizerCircLeft;
300 bSizerCircLeft =
new wxBoxSizer( wxVERTICAL );
302 wxStaticBoxSizer* sbSizerInfo;
303 sbSizerInfo =
new wxStaticBoxSizer(
new wxStaticBox(
m_circularPanel, wxID_ANY,
_(
"Center position") ), wxVERTICAL );
305 wxFlexGridSizer* fgSizerArrayPrms;
306 fgSizerArrayPrms =
new wxFlexGridSizer( 0, 3, 5, 5 );
307 fgSizerArrayPrms->AddGrowableCol( 1 );
308 fgSizerArrayPrms->SetFlexibleDirection( wxBOTH );
309 fgSizerArrayPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
311 m_labelCentreX =
new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"Center pos X:"), wxDefaultPosition, wxDefaultSize, 0 );
313 fgSizerArrayPrms->Add(
m_labelCentreX, 0, wxALIGN_CENTER_VERTICAL, 5 );
315 m_entryCentreX =
new wxTextCtrl( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"0"), wxDefaultPosition, wxDefaultSize, 0 );
318 m_unitLabelCentreX =
new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
322 m_labelCentreY =
new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"Center pos Y:"), wxDefaultPosition, wxDefaultSize, 0 );
324 fgSizerArrayPrms->Add(
m_labelCentreY, 0, wxALIGN_CENTER_VERTICAL, 5 );
326 m_entryCentreY =
new wxTextCtrl( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"0"), wxDefaultPosition, wxDefaultSize, 0 );
329 m_unitLabelCentreY =
new wxStaticText( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
334 fgSizerArrayPrms->Add( 0, 0, 1, wxEXPAND, 5 );
337 sbSizerInfo->Add( fgSizerArrayPrms, 0, wxEXPAND|wxLEFT, 25 );
339 wxBoxSizer* bSizer12;
340 bSizer12 =
new wxBoxSizer( wxHORIZONTAL );
342 m_btnSelectCenterPoint =
new wxButton( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"Select Point..."), wxDefaultPosition, wxDefaultSize, 0 );
345 m_btnSelectCenterItem =
new wxButton( sbSizerInfo->GetStaticBox(), wxID_ANY,
_(
"Select Item..."), wxDefaultPosition, wxDefaultSize, 0 );
349 sbSizerInfo->Add( bSizer12, 1, wxEXPAND, 5 );
352 bSizerCircLeft->Add( sbSizerInfo, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 10 );
354 wxStaticBoxSizer* sbSizerDupPrms;
355 sbSizerDupPrms =
new wxStaticBoxSizer(
new wxStaticBox(
m_circularPanel, wxID_ANY,
_(
"Duplication Settings") ), wxVERTICAL );
357 m_checkBoxFullCircle =
new wxCheckBox( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"Full circle"), wxDefaultPosition, wxDefaultSize, 0 );
361 wxString m_rbCircDirectionChoices[] = {
_(
"Clockwise"),
_(
"Anti-clockwise") };
362 int m_rbCircDirectionNChoices =
sizeof( m_rbCircDirectionChoices ) /
sizeof( wxString );
363 m_rbCircDirection =
new wxRadioBox( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"Direction"), wxDefaultPosition, wxDefaultSize, m_rbCircDirectionNChoices, m_rbCircDirectionChoices, 1, wxRA_SPECIFY_COLS );
367 wxFlexGridSizer* fgSizerDupPrms;
368 fgSizerDupPrms =
new wxFlexGridSizer( 0, 3, 5, 5 );
369 fgSizerDupPrms->AddGrowableCol( 1 );
370 fgSizerDupPrms->SetFlexibleDirection( wxBOTH );
371 fgSizerDupPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
373 m_labelCircAngle =
new wxStaticText( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"Angle between items:"), wxDefaultPosition, wxDefaultSize, 0 );
375 fgSizerDupPrms->Add(
m_labelCircAngle, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
377 m_entryCircAngle =
new wxTextCtrl( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"90"), wxDefaultPosition, wxDefaultSize, 0 );
378 m_entryCircAngle->SetToolTip(
_(
"Positive angles represent an anti-clockwise rotation. An angle of 0 will produce a full circle divided evenly into \"Count\" portions.") );
382 m_unitLabelCircAngle =
new wxStaticText( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"deg"), wxDefaultPosition, wxDefaultSize, 0 );
386 m_labelCircCount =
new wxStaticText( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"Item count:"), wxDefaultPosition, wxDefaultSize, 0 );
388 fgSizerDupPrms->Add(
m_labelCircCount, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
396 fgSizerDupPrms->Add( 0, 0, 1, wxEXPAND, 5 );
398 m_labelCircOffset =
new wxStaticText( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"First item angle:"), wxDefaultPosition, wxDefaultSize, 0 );
407 m_unitLabelCircOffset =
new wxStaticText( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"deg"), wxDefaultPosition, wxDefaultSize, 0 );
412 sbSizerDupPrms->Add( fgSizerDupPrms, 0, wxBOTTOM|wxEXPAND, 5 );
414 m_entryRotateItemsCb =
new wxCheckBox( sbSizerDupPrms->GetStaticBox(), wxID_ANY,
_(
"Rotate items"), wxDefaultPosition, wxDefaultSize, 0 );
415 m_entryRotateItemsCb->SetToolTip(
_(
"Rotate the item as well as move it - multi-selections will be rotated together") );
420 bSizerCircLeft->Add( sbSizerDupPrms, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 );
423 bSizer4->Add( bSizerCircLeft, 1, wxEXPAND, 5 );
428 wxBoxSizer* bSizer13;
429 bSizer13 =
new wxBoxSizer( wxHORIZONTAL );
432 bSizer13->Add( 10, 0, 0, wxEXPAND, 5 );
436 wxString m_rbCircStartNumberingOptChoices[] = {
_(
"Use first free number"),
_(
"From start value") };
437 int m_rbCircStartNumberingOptNChoices =
sizeof( m_rbCircStartNumberingOptChoices ) /
sizeof( wxString );
438 m_rbCircStartNumberingOpt =
new wxRadioBox(
m_circPadNumberingSizer->GetStaticBox(), wxID_ANY,
_(
"Initial Pad Number:"), wxDefaultPosition, wxDefaultSize, m_rbCircStartNumberingOptNChoices, m_rbCircStartNumberingOptChoices, 1, wxRA_SPECIFY_COLS );
446 wxArrayString m_choiceCircNumberingChoices;
451 wxFlexGridSizer* fgSizer2;
452 fgSizer2 =
new wxFlexGridSizer( 0, 2, 0, 0 );
453 fgSizer2->AddGrowableCol( 0 );
454 fgSizer2->SetFlexibleDirection( wxBOTH );
455 fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
466 fgSizer2->Add(
m_labelCircNumStep, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
491 m_optionsPanel =
new wxPanel(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
493 bSizer8 =
new wxBoxSizer( wxVERTICAL );
496 wxStaticBoxSizer* sbSizerDuplicateOrArrange;
497 sbSizerDuplicateOrArrange =
new wxStaticBoxSizer(
new wxStaticBox(
m_itemSourcePanel, wxID_ANY,
_(
"Item Source") ), wxVERTICAL );
499 m_radioBtnDuplicateSelection =
new wxRadioButton( sbSizerDuplicateOrArrange->GetStaticBox(), wxID_ANY,
_(
"Duplicate selection"), wxDefaultPosition, wxDefaultSize, 0 );
503 m_radioBtnArrangeSelection =
new wxRadioButton( sbSizerDuplicateOrArrange->GetStaticBox(), wxID_ANY,
_(
"Arrange selection"), wxDefaultPosition, wxDefaultSize, 0 );
504 m_radioBtnArrangeSelection->SetToolTip(
_(
"This can conflict with reference designators in the schematic that have not yet been synchronized with the board.") );
515 wxStaticBoxSizer* sbSizerFootprintAnnotation;
516 sbSizerFootprintAnnotation =
new wxStaticBoxSizer(
new wxStaticBox(
m_footprintReannotatePanel, wxID_ANY,
_(
"Footprint Annotation") ), wxVERTICAL );
518 m_radioBtnKeepRefs =
new wxRadioButton( sbSizerFootprintAnnotation->GetStaticBox(), wxID_ANY,
_(
"Keep existing reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
521 m_radioBtnUniqueRefs =
new wxRadioButton( sbSizerFootprintAnnotation->GetStaticBox(), wxID_ANY,
_(
"Assign unique reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
523 m_radioBtnUniqueRefs->SetToolTip(
_(
"This can conflict with reference designators in the schematic that have not yet been synchronized with the board.") );
540 bMainSizer->Add( bSizer7, 1, wxEXPAND, 5 );
552 this->SetSizer( bMainSizer );
554 bMainSizer->Fit(
this );