16PANEL_ZONE_PROPERTIES_BASE::PANEL_ZONE_PROPERTIES_BASE( wxWindow* parent, wxWindowID
id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString&
name ) : wxPanel( parent, id, pos, size, style,
name )
18 wxBoxSizer* bMainSizer;
19 bMainSizer =
new wxBoxSizer( wxHORIZONTAL );
22 bSizer8 =
new wxBoxSizer( wxVERTICAL );
29 wxBoxSizer* bPropertiesSizer;
30 bPropertiesSizer =
new wxBoxSizer( wxVERTICAL );
32 wxGridBagSizer* gbSizer8;
33 gbSizer8 =
new wxGridBagSizer( 3, 5 );
34 gbSizer8->SetFlexibleDirection( wxBOTH );
35 gbSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
37 m_zoneNameLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Zone name:"), wxDefaultPosition, wxDefaultSize, 0 );
39 m_zoneNameLabel->SetToolTip(
_(
"A unique name for this zone, used to identify it in DRC rules") );
41 gbSizer8->Add(
m_zoneNameLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
43 m_tcZoneName =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
44 m_tcZoneName->SetToolTip(
_(
"A unique name for this zone, used to identify it in DRC rules") );
46 gbSizer8->Add(
m_tcZoneName, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
48 m_netLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Net name:"), wxDefaultPosition, wxDefaultSize, 0 );
50 gbSizer8->Add(
m_netLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
53 gbSizer8->Add(
m_netSelector, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
56 gbSizer8->AddGrowableCol( 1 );
58 bPropertiesSizer->Add( gbSizer8, 0, wxEXPAND|wxALL, 5 );
60 m_cbLocked =
new wxCheckBox(
this, wxID_ANY,
_(
"Locked"), wxDefaultPosition, wxDefaultSize, 0 );
61 bPropertiesSizer->Add(
m_cbLocked, 0, wxLEFT|wxRIGHT, 5 );
63 m_notebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
65 wxBoxSizer* bClearancesSizer;
66 bClearancesSizer =
new wxBoxSizer( wxVERTICAL );
68 wxGridBagSizer* gbSizerClearances;
69 gbSizerClearances =
new wxGridBagSizer( 1, 1 );
70 gbSizerClearances->SetFlexibleDirection( wxBOTH );
71 gbSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
72 gbSizerClearances->SetEmptyCellSize( wxSize( -1,10 ) );
76 m_clearanceLabel->SetToolTip(
_(
"Copper clearance for this zone (set to 0 to use the netclass clearance)") );
78 gbSizerClearances->Add(
m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
81 gbSizerClearances->Add(
m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
85 gbSizerClearances->Add(
m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
91 gbSizerClearances->Add(
m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
94 gbSizerClearances->Add(
m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 4 );
98 gbSizerClearances->Add(
m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
102 m_connectionLabel->SetToolTip(
_(
"Default pad connection type to zone.\nThis setting can be overridden by local pad settings") );
104 gbSizerClearances->Add(
m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
106 wxString m_PadInZoneOptChoices[] = {
_(
"Solid"),
_(
"Thermal reliefs"),
_(
"Reliefs for PTH"),
_(
"None") };
107 int m_PadInZoneOptNChoices =
sizeof( m_PadInZoneOptChoices ) /
sizeof( wxString );
110 gbSizerClearances->Add(
m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
114 m_antipadLabel->SetToolTip(
_(
"The distance that will be kept clear between the filled area of the zone and a pad connected by thermal relief spokes.") );
116 gbSizerClearances->Add(
m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 4 );
119 m_antipadCtrl->SetToolTip(
_(
"Clearance between pads in the same net and filled areas.") );
121 gbSizerClearances->Add(
m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 4 );
125 gbSizerClearances->Add(
m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
129 gbSizerClearances->Add(
m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 4 );
134 gbSizerClearances->Add(
m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
138 gbSizerClearances->Add(
m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
141 gbSizerClearances->AddGrowableCol( 2 );
143 bClearancesSizer->Add( gbSizerClearances, 0, wxALL, 5 );
151 wxBoxSizer* bDisplayOverridesSizer;
152 bDisplayOverridesSizer =
new wxBoxSizer( wxVERTICAL );
154 wxGridBagSizer* gbSizerDisplayOverrides;
155 gbSizerDisplayOverrides =
new wxGridBagSizer( 5, 5 );
156 gbSizerDisplayOverrides->SetFlexibleDirection( wxBOTH );
157 gbSizerDisplayOverrides->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
161 gbSizerDisplayOverrides->Add(
m_staticTextStyle, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
163 wxString m_OutlineDisplayCtrlChoices[] = {
_(
"Line"),
_(
"Hatched"),
_(
"Fully hatched") };
164 int m_OutlineDisplayCtrlNChoices =
sizeof( m_OutlineDisplayCtrlChoices ) /
sizeof( wxString );
167 gbSizerDisplayOverrides->Add(
m_OutlineDisplayCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
171 gbSizerDisplayOverrides->Add(
m_stBorderHatchPitchText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
174 gbSizerDisplayOverrides->Add(
m_outlineHatchPitchCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
178 gbSizerDisplayOverrides->Add(
m_outlineHatchUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
181 gbSizerDisplayOverrides->AddGrowableCol( 2 );
183 bDisplayOverridesSizer->Add( gbSizerDisplayOverrides, 0, wxALL, 5 );
191 wxBoxSizer* bHatchedFillSizer;
192 bHatchedFillSizer =
new wxBoxSizer( wxHORIZONTAL );
194 wxGridBagSizer* gbSizerHatchedFill;
195 gbSizerHatchedFill =
new wxGridBagSizer( 0, 0 );
196 gbSizerHatchedFill->SetFlexibleDirection( wxBOTH );
197 gbSizerHatchedFill->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
198 gbSizerHatchedFill->SetEmptyCellSize( wxSize( -1,10 ) );
202 gbSizerHatchedFill->Add(
m_cbHatched, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxLEFT|wxRIGHT, 5 );
206 gbSizerHatchedFill->Add(
m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
209 gbSizerHatchedFill->Add(
m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
213 gbSizerHatchedFill->Add(
m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
217 gbSizerHatchedFill->Add(
m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
220 gbSizerHatchedFill->Add(
m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
224 gbSizerHatchedFill->Add(
m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
228 gbSizerHatchedFill->Add(
m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
231 gbSizerHatchedFill->Add(
m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
235 gbSizerHatchedFill->Add(
m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
239 m_staticTextGridSmoothingLevel->SetToolTip(
_(
"Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
244 gbSizerHatchedFill->Add(
m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
248 m_staticTextGridSmootingVal->SetToolTip(
_(
"Ratio between smoothed corners size and the gap between lines\n0 = no smoothing\n1.0 = max radius/chamfer size (half gap value)") );
250 gbSizerHatchedFill->Add(
m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
254 gbSizerHatchedFill->Add(
m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
257 gbSizerHatchedFill->AddGrowableCol( 2 );
259 bHatchedFillSizer->Add( gbSizerHatchedFill, 0, wxALL, 5 );
261 wxBoxSizer* bSizerOffsetOverrides;
262 bSizerOffsetOverrides =
new wxBoxSizer( wxVERTICAL );
269 bSizerOffsetOverrides->Add( 0, 2, 0, 0, 5 );
303 wxBoxSizer* bButtonSizer;
304 bButtonSizer =
new wxBoxSizer( wxHORIZONTAL );
310 bButtonSizer->Add( 20, 0, 0, wxEXPAND, 5 );
316 bSizerOffsetOverrides->Add( bButtonSizer, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
319 bHatchedFillSizer->Add( bSizerOffsetOverrides, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
327 bPropertiesSizer->Add(
m_notebook, 1, wxEXPAND|wxALL, 5 );
333 m_cornerSmoothingLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
337 wxString m_cornerSmoothingChoiceChoices[] = {
_(
"None"),
_(
"Chamfer"),
_(
"Fillet") };
338 int m_cornerSmoothingChoiceNChoices =
sizeof( m_cornerSmoothingChoiceChoices ) /
sizeof( wxString );
343 m_cornerRadiusLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Radius:"), wxDefaultPosition, wxDefaultSize, 0 );
347 m_cornerRadiusCtrl =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
350 m_cornerRadiusUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
354 m_removeIslandsLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
360 wxString m_cbRemoveIslandsChoices[] = {
_(
"Always"),
_(
"Never"),
_(
"Below area limit") };
361 int m_cbRemoveIslandsNChoices =
sizeof( m_cbRemoveIslandsChoices ) /
sizeof( wxString );
362 m_cbRemoveIslands =
new wxChoice(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
366 m_islandThresholdLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
372 m_tcIslandThreshold =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
386 bSizer8->Add( bPropertiesSizer, 1, wxEXPAND, 5 );
389 bMainSizer->Add( bSizer8, 1, wxEXPAND, 5 );
392 this->SetSizer( bMainSizer );
394 bMainSizer->Fit(
this );