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 gbSizer8->Add(
m_zoneNameLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
41 m_tcZoneName =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
42 gbSizer8->Add(
m_tcZoneName, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
44 m_netLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Net name:"), wxDefaultPosition, wxDefaultSize, 0 );
46 gbSizer8->Add(
m_netLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
49 gbSizer8->Add(
m_netSelector, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
52 gbSizer8->AddGrowableCol( 1 );
54 bPropertiesSizer->Add( gbSizer8, 0, wxEXPAND|wxALL, 5 );
56 m_cbLocked =
new wxCheckBox(
this, wxID_ANY,
_(
"Locked"), wxDefaultPosition, wxDefaultSize, 0 );
57 bPropertiesSizer->Add(
m_cbLocked, 0, wxRIGHT|wxLEFT, 5 );
59 m_notebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
61 wxBoxSizer* bClearancesSizer;
62 bClearancesSizer =
new wxBoxSizer( wxVERTICAL );
64 wxGridBagSizer* gbSizerClearances;
65 gbSizerClearances =
new wxGridBagSizer( 1, 1 );
66 gbSizerClearances->SetFlexibleDirection( wxBOTH );
67 gbSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
68 gbSizerClearances->SetEmptyCellSize( wxSize( -1,10 ) );
72 m_clearanceLabel->SetToolTip(
_(
"Copper clearance for this zone (set to 0 to use the netclass clearance)") );
74 gbSizerClearances->Add(
m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
77 gbSizerClearances->Add(
m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
81 gbSizerClearances->Add(
m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
87 gbSizerClearances->Add(
m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
90 gbSizerClearances->Add(
m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 4 );
94 gbSizerClearances->Add(
m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
98 m_connectionLabel->SetToolTip(
_(
"Default pad connection type to zone.\nThis setting can be overridden by local pad settings") );
100 gbSizerClearances->Add(
m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
102 wxString m_PadInZoneOptChoices[] = {
_(
"Solid"),
_(
"Thermal reliefs"),
_(
"Reliefs for PTH"),
_(
"None") };
103 int m_PadInZoneOptNChoices =
sizeof( m_PadInZoneOptChoices ) /
sizeof( wxString );
106 gbSizerClearances->Add(
m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
110 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.") );
112 gbSizerClearances->Add(
m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 4 );
115 m_antipadCtrl->SetToolTip(
_(
"Clearance between pads in the same net and filled areas.") );
117 gbSizerClearances->Add(
m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 4 );
121 gbSizerClearances->Add(
m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
125 gbSizerClearances->Add(
m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 4 );
130 gbSizerClearances->Add(
m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
134 gbSizerClearances->Add(
m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
137 gbSizerClearances->AddGrowableCol( 2 );
139 bClearancesSizer->Add( gbSizerClearances, 0, wxALL, 5 );
147 wxBoxSizer* bDisplayOverridesSizer;
148 bDisplayOverridesSizer =
new wxBoxSizer( wxVERTICAL );
150 wxGridBagSizer* gbSizerDisplayOverrides;
151 gbSizerDisplayOverrides =
new wxGridBagSizer( 5, 5 );
152 gbSizerDisplayOverrides->SetFlexibleDirection( wxBOTH );
153 gbSizerDisplayOverrides->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
157 gbSizerDisplayOverrides->Add(
m_staticTextStyle, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
159 wxString m_OutlineDisplayCtrlChoices[] = {
_(
"Line"),
_(
"Hatched"),
_(
"Fully hatched") };
160 int m_OutlineDisplayCtrlNChoices =
sizeof( m_OutlineDisplayCtrlChoices ) /
sizeof( wxString );
163 gbSizerDisplayOverrides->Add(
m_OutlineDisplayCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
167 gbSizerDisplayOverrides->Add(
m_stBorderHatchPitchText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
170 gbSizerDisplayOverrides->Add(
m_outlineHatchPitchCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
174 gbSizerDisplayOverrides->Add(
m_outlineHatchUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
177 gbSizerDisplayOverrides->AddGrowableCol( 2 );
179 bDisplayOverridesSizer->Add( gbSizerDisplayOverrides, 0, wxALL, 5 );
187 wxBoxSizer* bHatchedFillSizer;
188 bHatchedFillSizer =
new wxBoxSizer( wxHORIZONTAL );
190 wxGridBagSizer* gbSizerHatchedFill;
191 gbSizerHatchedFill =
new wxGridBagSizer( 0, 0 );
192 gbSizerHatchedFill->SetFlexibleDirection( wxBOTH );
193 gbSizerHatchedFill->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
194 gbSizerHatchedFill->SetEmptyCellSize( wxSize( -1,10 ) );
198 gbSizerHatchedFill->Add(
m_cbHatched, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxRIGHT, 5 );
202 gbSizerHatchedFill->Add(
m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
205 gbSizerHatchedFill->Add(
m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
209 gbSizerHatchedFill->Add(
m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
213 gbSizerHatchedFill->Add(
m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
216 gbSizerHatchedFill->Add(
m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
220 gbSizerHatchedFill->Add(
m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
224 gbSizerHatchedFill->Add(
m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
227 gbSizerHatchedFill->Add(
m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
231 gbSizerHatchedFill->Add(
m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
235 m_staticTextGridSmoothingLevel->SetToolTip(
_(
"Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
240 gbSizerHatchedFill->Add(
m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
244 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)") );
246 gbSizerHatchedFill->Add(
m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
250 gbSizerHatchedFill->Add(
m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
253 gbSizerHatchedFill->AddGrowableCol( 2 );
255 bHatchedFillSizer->Add( gbSizerHatchedFill, 0, wxALL, 5 );
257 wxBoxSizer* bSizerOffsetOverrides;
258 bSizerOffsetOverrides =
new wxBoxSizer( wxVERTICAL );
265 bSizerOffsetOverrides->Add( 0, 2, 0, 0, 5 );
299 wxBoxSizer* bButtonSizer;
300 bButtonSizer =
new wxBoxSizer( wxHORIZONTAL );
306 bButtonSizer->Add( 20, 0, 0, wxEXPAND, 5 );
312 bSizerOffsetOverrides->Add( bButtonSizer, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
315 bHatchedFillSizer->Add( bSizerOffsetOverrides, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
323 bPropertiesSizer->Add(
m_notebook, 1, wxEXPAND|wxALL, 5 );
329 m_cornerSmoothingLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
333 wxString m_cornerSmoothingChoiceChoices[] = {
_(
"None"),
_(
"Chamfer"),
_(
"Fillet") };
334 int m_cornerSmoothingChoiceNChoices =
sizeof( m_cornerSmoothingChoiceChoices ) /
sizeof( wxString );
339 m_cornerRadiusLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Chamfer:"), wxDefaultPosition, wxDefaultSize, 0 );
343 m_cornerRadiusCtrl =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
346 m_cornerRadiusUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
350 m_removeIslandsLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
356 wxString m_cbRemoveIslandsChoices[] = {
_(
"Always"),
_(
"Never"),
_(
"Below area limit") };
357 int m_cbRemoveIslandsNChoices =
sizeof( m_cbRemoveIslandsChoices ) /
sizeof( wxString );
358 m_cbRemoveIslands =
new wxChoice(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
362 m_islandThresholdLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
368 m_tcIslandThreshold =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
382 bSizer8->Add( bPropertiesSizer, 1, wxEXPAND, 5 );
385 bMainSizer->Add( bSizer8, 1, wxEXPAND, 5 );
388 this->SetSizer( bMainSizer );
390 bMainSizer->Fit(
this );