15PANEL_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 )
17 wxBoxSizer* bMainSizer;
18 bMainSizer =
new wxBoxSizer( wxVERTICAL );
25 wxBoxSizer* bPropertiesSizer;
26 bPropertiesSizer =
new wxBoxSizer( wxVERTICAL );
28 wxGridBagSizer* gbSizer8;
29 gbSizer8 =
new wxGridBagSizer( 3, 5 );
30 gbSizer8->SetFlexibleDirection( wxBOTH );
31 gbSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
33 m_zoneNameLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Zone name:"), wxDefaultPosition, wxDefaultSize, 0 );
35 gbSizer8->Add(
m_zoneNameLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
37 m_tcZoneName =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
38 gbSizer8->Add(
m_tcZoneName, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
40 m_netLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Net name:"), wxDefaultPosition, wxDefaultSize, 0 );
42 gbSizer8->Add(
m_netLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
45 gbSizer8->Add(
m_netSelector, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
48 gbSizer8->AddGrowableCol( 1 );
50 bPropertiesSizer->Add( gbSizer8, 0, wxEXPAND|wxALL, 5 );
52 m_cbLocked =
new wxCheckBox(
this, wxID_ANY,
_(
"Locked"), wxDefaultPosition, wxDefaultSize, 0 );
53 bPropertiesSizer->Add(
m_cbLocked, 0, wxRIGHT|wxLEFT, 5 );
55 m_notebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
57 wxBoxSizer* bClearancesSizer;
58 bClearancesSizer =
new wxBoxSizer( wxVERTICAL );
60 wxGridBagSizer* gbSizerClearances;
61 gbSizerClearances =
new wxGridBagSizer( 1, 1 );
62 gbSizerClearances->SetFlexibleDirection( wxBOTH );
63 gbSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
64 gbSizerClearances->SetEmptyCellSize( wxSize( -1,10 ) );
68 m_clearanceLabel->SetToolTip(
_(
"Copper clearance for this zone (set to 0 to use the netclass clearance)") );
70 gbSizerClearances->Add(
m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
73 gbSizerClearances->Add(
m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
77 gbSizerClearances->Add(
m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
83 gbSizerClearances->Add(
m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
86 gbSizerClearances->Add(
m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 4 );
90 gbSizerClearances->Add(
m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
94 m_connectionLabel->SetToolTip(
_(
"Default pad connection type to zone.\nThis setting can be overridden by local pad settings") );
96 gbSizerClearances->Add(
m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
98 wxString m_PadInZoneOptChoices[] = {
_(
"Solid"),
_(
"Thermal reliefs"),
_(
"Reliefs for PTH"),
_(
"None") };
99 int m_PadInZoneOptNChoices =
sizeof( m_PadInZoneOptChoices ) /
sizeof( wxString );
102 gbSizerClearances->Add(
m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
106 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.") );
108 gbSizerClearances->Add(
m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 4 );
111 m_antipadCtrl->SetToolTip(
_(
"Clearance between pads in the same net and filled areas.") );
113 gbSizerClearances->Add(
m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 4 );
117 gbSizerClearances->Add(
m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
121 gbSizerClearances->Add(
m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 4 );
126 gbSizerClearances->Add(
m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
130 gbSizerClearances->Add(
m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
133 gbSizerClearances->AddGrowableCol( 2 );
135 bClearancesSizer->Add( gbSizerClearances, 0, wxALL, 5 );
143 wxBoxSizer* bDisplayOverridesSizer;
144 bDisplayOverridesSizer =
new wxBoxSizer( wxVERTICAL );
146 wxGridBagSizer* gbSizerDisplayOverrides;
147 gbSizerDisplayOverrides =
new wxGridBagSizer( 5, 5 );
148 gbSizerDisplayOverrides->SetFlexibleDirection( wxBOTH );
149 gbSizerDisplayOverrides->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
153 gbSizerDisplayOverrides->Add(
m_staticTextStyle, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
155 wxString m_OutlineDisplayCtrlChoices[] = {
_(
"Line"),
_(
"Hatched"),
_(
"Fully hatched") };
156 int m_OutlineDisplayCtrlNChoices =
sizeof( m_OutlineDisplayCtrlChoices ) /
sizeof( wxString );
159 gbSizerDisplayOverrides->Add(
m_OutlineDisplayCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
163 gbSizerDisplayOverrides->Add(
m_stBorderHatchPitchText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
166 gbSizerDisplayOverrides->Add(
m_outlineHatchPitchCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
170 gbSizerDisplayOverrides->Add(
m_outlineHatchUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
173 gbSizerDisplayOverrides->AddGrowableCol( 2 );
175 bDisplayOverridesSizer->Add( gbSizerDisplayOverrides, 0, wxALL, 5 );
183 wxBoxSizer* bHatchedFillSizer;
184 bHatchedFillSizer =
new wxBoxSizer( wxHORIZONTAL );
186 wxGridBagSizer* gbSizerHatchedFill;
187 gbSizerHatchedFill =
new wxGridBagSizer( 0, 0 );
188 gbSizerHatchedFill->SetFlexibleDirection( wxBOTH );
189 gbSizerHatchedFill->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
190 gbSizerHatchedFill->SetEmptyCellSize( wxSize( -1,10 ) );
193 gbSizerHatchedFill->Add(
m_cbHatched, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT, 5 );
197 gbSizerHatchedFill->Add(
m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
200 gbSizerHatchedFill->Add(
m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
204 gbSizerHatchedFill->Add(
m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
208 gbSizerHatchedFill->Add(
m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
211 gbSizerHatchedFill->Add(
m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
215 gbSizerHatchedFill->Add(
m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
219 gbSizerHatchedFill->Add(
m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
222 gbSizerHatchedFill->Add(
m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
226 gbSizerHatchedFill->Add(
m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
230 m_staticTextGridSmoothingLevel->SetToolTip(
_(
"Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
235 gbSizerHatchedFill->Add(
m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
239 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)") );
241 gbSizerHatchedFill->Add(
m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
245 gbSizerHatchedFill->Add(
m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
248 gbSizerHatchedFill->AddGrowableCol( 2 );
250 bHatchedFillSizer->Add( gbSizerHatchedFill, 0, wxALL, 5 );
253 bHatchedFillSizer->Add( 15, 0, 0, wxEXPAND, 5 );
255 wxBoxSizer* bSizerOffsetOverrides;
256 bSizerOffsetOverrides =
new wxBoxSizer( wxVERTICAL );
263 bSizerOffsetOverrides->Add( 0, 2, 0, 0, 5 );
297 wxBoxSizer* bButtonSizer;
298 bButtonSizer =
new wxBoxSizer( wxHORIZONTAL );
304 bButtonSizer->Add( 20, 0, 0, wxEXPAND, 5 );
310 bSizerOffsetOverrides->Add( bButtonSizer, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
313 bHatchedFillSizer->Add( bSizerOffsetOverrides, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
321 bPropertiesSizer->Add(
m_notebook, 1, wxEXPAND|wxALL, 5 );
324 bPropertiesSizer->Add( 0, 10, 0, wxEXPAND, 5 );
330 m_cornerSmoothingLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
334 wxString m_cornerSmoothingChoiceChoices[] = {
_(
"None"),
_(
"Chamfer"),
_(
"Fillet") };
335 int m_cornerSmoothingChoiceNChoices =
sizeof( m_cornerSmoothingChoiceChoices ) /
sizeof( wxString );
340 m_cornerRadiusLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Chamfer:"), wxDefaultPosition, wxDefaultSize, 0 );
344 m_cornerRadiusCtrl =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
347 m_cornerRadiusUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
351 m_staticText40 =
new wxStaticText(
this, wxID_ANY,
_(
"Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
353 m_staticText40->SetToolTip(
_(
"Choose what to do with unconnected copper islands") );
357 wxString m_cbRemoveIslandsChoices[] = {
_(
"Always"),
_(
"Never"),
_(
"Below area limit") };
358 int m_cbRemoveIslandsNChoices =
sizeof( m_cbRemoveIslandsChoices ) /
sizeof( wxString );
359 m_cbRemoveIslands =
new wxChoice(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
363 m_islandThresholdLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
369 m_tcIslandThreshold =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
380 bMainSizer->Add( bPropertiesSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
383 this->SetSizer( bMainSizer );
385 bMainSizer->Fit(
this );