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( wxVERTICAL );
26 wxBoxSizer* bPropertiesSizer;
27 bPropertiesSizer =
new wxBoxSizer( wxVERTICAL );
29 wxGridBagSizer* gbSizer8;
30 gbSizer8 =
new wxGridBagSizer( 3, 5 );
31 gbSizer8->SetFlexibleDirection( wxBOTH );
32 gbSizer8->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
34 m_zoneNameLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Zone name:"), wxDefaultPosition, wxDefaultSize, 0 );
36 gbSizer8->Add(
m_zoneNameLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
38 m_tcZoneName =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
39 gbSizer8->Add(
m_tcZoneName, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
41 m_netLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Net name:"), wxDefaultPosition, wxDefaultSize, 0 );
43 gbSizer8->Add(
m_netLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
46 gbSizer8->Add(
m_netSelector, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
49 gbSizer8->AddGrowableCol( 1 );
51 bPropertiesSizer->Add( gbSizer8, 0, wxEXPAND|wxALL, 5 );
53 m_cbLocked =
new wxCheckBox(
this, wxID_ANY,
_(
"Locked"), wxDefaultPosition, wxDefaultSize, 0 );
54 bPropertiesSizer->Add(
m_cbLocked, 0, wxRIGHT|wxLEFT, 5 );
56 m_notebook =
new wxNotebook(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
58 wxBoxSizer* bClearancesSizer;
59 bClearancesSizer =
new wxBoxSizer( wxVERTICAL );
61 wxGridBagSizer* gbSizerClearances;
62 gbSizerClearances =
new wxGridBagSizer( 1, 1 );
63 gbSizerClearances->SetFlexibleDirection( wxBOTH );
64 gbSizerClearances->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
65 gbSizerClearances->SetEmptyCellSize( wxSize( -1,10 ) );
69 m_clearanceLabel->SetToolTip(
_(
"Copper clearance for this zone (set to 0 to use the netclass clearance)") );
71 gbSizerClearances->Add(
m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
74 gbSizerClearances->Add(
m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
78 gbSizerClearances->Add(
m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
84 gbSizerClearances->Add(
m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
87 gbSizerClearances->Add(
m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 4 );
91 gbSizerClearances->Add(
m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
95 m_connectionLabel->SetToolTip(
_(
"Default pad connection type to zone.\nThis setting can be overridden by local pad settings") );
97 gbSizerClearances->Add(
m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
99 wxString m_PadInZoneOptChoices[] = {
_(
"Solid"),
_(
"Thermal reliefs"),
_(
"Reliefs for PTH"),
_(
"None") };
100 int m_PadInZoneOptNChoices =
sizeof( m_PadInZoneOptChoices ) /
sizeof( wxString );
103 gbSizerClearances->Add(
m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
107 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.") );
109 gbSizerClearances->Add(
m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 4 );
112 m_antipadCtrl->SetToolTip(
_(
"Clearance between pads in the same net and filled areas.") );
114 gbSizerClearances->Add(
m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 4 );
118 gbSizerClearances->Add(
m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
122 gbSizerClearances->Add(
m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 4 );
127 gbSizerClearances->Add(
m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 4 );
131 gbSizerClearances->Add(
m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
134 gbSizerClearances->AddGrowableCol( 2 );
136 bClearancesSizer->Add( gbSizerClearances, 0, wxALL, 5 );
144 wxBoxSizer* bDisplayOverridesSizer;
145 bDisplayOverridesSizer =
new wxBoxSizer( wxVERTICAL );
147 wxGridBagSizer* gbSizerDisplayOverrides;
148 gbSizerDisplayOverrides =
new wxGridBagSizer( 5, 5 );
149 gbSizerDisplayOverrides->SetFlexibleDirection( wxBOTH );
150 gbSizerDisplayOverrides->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
154 gbSizerDisplayOverrides->Add(
m_staticTextStyle, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
156 wxString m_OutlineDisplayCtrlChoices[] = {
_(
"Line"),
_(
"Hatched"),
_(
"Fully hatched") };
157 int m_OutlineDisplayCtrlNChoices =
sizeof( m_OutlineDisplayCtrlChoices ) /
sizeof( wxString );
160 gbSizerDisplayOverrides->Add(
m_OutlineDisplayCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
164 gbSizerDisplayOverrides->Add(
m_stBorderHatchPitchText, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
167 gbSizerDisplayOverrides->Add(
m_outlineHatchPitchCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
171 gbSizerDisplayOverrides->Add(
m_outlineHatchUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
174 gbSizerDisplayOverrides->AddGrowableCol( 2 );
176 bDisplayOverridesSizer->Add( gbSizerDisplayOverrides, 0, wxALL, 5 );
184 wxBoxSizer* bHatchedFillSizer;
185 bHatchedFillSizer =
new wxBoxSizer( wxHORIZONTAL );
187 wxGridBagSizer* gbSizerHatchedFill;
188 gbSizerHatchedFill =
new wxGridBagSizer( 0, 0 );
189 gbSizerHatchedFill->SetFlexibleDirection( wxBOTH );
190 gbSizerHatchedFill->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
191 gbSizerHatchedFill->SetEmptyCellSize( wxSize( -1,10 ) );
194 gbSizerHatchedFill->Add(
m_cbHatched, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT, 5 );
198 gbSizerHatchedFill->Add(
m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
201 gbSizerHatchedFill->Add(
m_tcGridStyleOrientation, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
205 gbSizerHatchedFill->Add(
m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
209 gbSizerHatchedFill->Add(
m_staticTextStyleThickness, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
212 gbSizerHatchedFill->Add(
m_tcGridStyleThickness, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
216 gbSizerHatchedFill->Add(
m_GridStyleThicknessUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
220 gbSizerHatchedFill->Add(
m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
223 gbSizerHatchedFill->Add(
m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
227 gbSizerHatchedFill->Add(
m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
231 m_staticTextGridSmoothingLevel->SetToolTip(
_(
"Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
236 gbSizerHatchedFill->Add(
m_spinCtrlSmoothLevel, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
240 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)") );
242 gbSizerHatchedFill->Add(
m_staticTextGridSmootingVal, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
246 gbSizerHatchedFill->Add(
m_spinCtrlSmoothValue, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
249 gbSizerHatchedFill->AddGrowableCol( 2 );
251 bHatchedFillSizer->Add( gbSizerHatchedFill, 0, wxALL, 5 );
254 bHatchedFillSizer->Add( 15, 0, 0, wxEXPAND, 5 );
256 wxBoxSizer* bSizerOffsetOverrides;
257 bSizerOffsetOverrides =
new wxBoxSizer( wxVERTICAL );
264 bSizerOffsetOverrides->Add( 0, 2, 0, 0, 5 );
298 wxBoxSizer* bButtonSizer;
299 bButtonSizer =
new wxBoxSizer( wxHORIZONTAL );
305 bButtonSizer->Add( 20, 0, 0, wxEXPAND, 5 );
311 bSizerOffsetOverrides->Add( bButtonSizer, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
314 bHatchedFillSizer->Add( bSizerOffsetOverrides, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
322 bPropertiesSizer->Add(
m_notebook, 1, wxEXPAND|wxALL, 5 );
325 bPropertiesSizer->Add( 0, 10, 0, wxEXPAND, 5 );
331 m_cornerSmoothingLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
335 wxString m_cornerSmoothingChoiceChoices[] = {
_(
"None"),
_(
"Chamfer"),
_(
"Fillet") };
336 int m_cornerSmoothingChoiceNChoices =
sizeof( m_cornerSmoothingChoiceChoices ) /
sizeof( wxString );
341 m_cornerRadiusLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Chamfer:"), wxDefaultPosition, wxDefaultSize, 0 );
345 m_cornerRadiusCtrl =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
348 m_cornerRadiusUnits =
new wxStaticText(
this, wxID_ANY,
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
352 m_staticText40 =
new wxStaticText(
this, wxID_ANY,
_(
"Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
354 m_staticText40->SetToolTip(
_(
"Choose what to do with unconnected copper islands") );
358 wxString m_cbRemoveIslandsChoices[] = {
_(
"Always"),
_(
"Never"),
_(
"Below area limit") };
359 int m_cbRemoveIslandsNChoices =
sizeof( m_cbRemoveIslandsChoices ) /
sizeof( wxString );
360 m_cbRemoveIslands =
new wxChoice(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
364 m_islandThresholdLabel =
new wxStaticText(
this, wxID_ANY,
_(
"Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
370 m_tcIslandThreshold =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
381 bMainSizer->Add( bPropertiesSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
384 this->SetSizer( bMainSizer );
386 bMainSizer->Fit(
this );