12PANEL_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 )
 
   14    wxBoxSizer* bSizerMiddle;
 
   15    bSizerMiddle = 
new wxBoxSizer( wxHORIZONTAL );
 
   17    wxBoxSizer* bLeftColumn;
 
   18    bLeftColumn = 
new wxBoxSizer( wxVERTICAL );
 
   20    wxStaticBoxSizer* sbGeneral;
 
   21    sbGeneral = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"General") ), wxHORIZONTAL );
 
   23    wxFlexGridSizer* fgSizer1;
 
   24    fgSizer1 = 
new wxFlexGridSizer( 0, 2, 0, 0 );
 
   25    fgSizer1->AddGrowableCol( 1 );
 
   26    fgSizer1->SetFlexibleDirection( wxBOTH );
 
   27    fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   29    m_zoneNameLabel = 
new wxStaticText( sbGeneral->GetStaticBox(), wxID_ANY, 
_(
"Zone name:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   31    m_zoneNameLabel->SetToolTip( 
_(
"A unique name for this zone to identify it for DRC") );
 
   35    m_tcZoneName = 
new wxTextCtrl( sbGeneral->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
   36    fgSizer1->Add( 
m_tcZoneName, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
 
   39    sbGeneral->Add( fgSizer1, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 );
 
   42    bLeftColumn->Add( sbGeneral, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
 
   44    wxStaticBoxSizer* m_ExportableSetupSizer;
 
   45    m_ExportableSetupSizer = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Shape") ), wxHORIZONTAL );
 
   47    wxGridBagSizer* gbSizer1;
 
   48    gbSizer1 = 
new wxGridBagSizer( 5, 5 );
 
   49    gbSizer1->SetFlexibleDirection( wxBOTH );
 
   50    gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   52    m_cbLocked = 
new wxCheckBox( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"Locked"), wxDefaultPosition, wxDefaultSize, 0 );
 
   53    gbSizer1->Add( 
m_cbLocked, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxBOTTOM|wxRIGHT, 5 );
 
   55    m_staticTextStyle = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"Outline display:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   57    gbSizer1->Add( 
m_staticTextStyle, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
 
   59    wxString m_OutlineDisplayCtrlChoices[] = { 
_(
"Line"), 
_(
"Hatched"), 
_(
"Fully hatched") };
 
   60    int m_OutlineDisplayCtrlNChoices = 
sizeof( m_OutlineDisplayCtrlChoices ) / 
sizeof( wxString );
 
   61    m_OutlineDisplayCtrl = 
new wxChoice( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_OutlineDisplayCtrlNChoices, m_OutlineDisplayCtrlChoices, 0 );
 
   65    m_stBorderHatchPitchText = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"Outline hatch pitch:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   67    gbSizer1->Add( 
m_stBorderHatchPitchText, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
   69    m_outlineHatchPitchCtrl = 
new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
   70    gbSizer1->Add( 
m_outlineHatchPitchCtrl, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   72    m_outlineHatchUnits = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
   74    gbSizer1->Add( 
m_outlineHatchUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
   76    m_staticline4 = 
new wxStaticLine( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
   77    gbSizer1->Add( 
m_staticline4, wxGBPosition( 3, 0 ), wxGBSpan( 1, 3 ), wxEXPAND | wxALL, 5 );
 
   79    m_staticTextSmoothing = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"Corner smoothing:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   81    gbSizer1->Add( 
m_staticTextSmoothing, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
   83    wxString m_cornerSmoothingChoiceChoices[] = { 
_(
"None"), 
_(
"Chamfer"), 
_(
"Fillet") };
 
   84    int m_cornerSmoothingChoiceNChoices = 
sizeof( m_cornerSmoothingChoiceChoices ) / 
sizeof( wxString );
 
   85    m_cornerSmoothingChoice = 
new wxChoice( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cornerSmoothingChoiceNChoices, m_cornerSmoothingChoiceChoices, 0 );
 
   87    gbSizer1->Add( 
m_cornerSmoothingChoice, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   89    m_cornerRadiusLabel = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"Chamfer distance:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   91    gbSizer1->Add( 
m_cornerRadiusLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
   93    m_cornerRadiusCtrl = 
new wxTextCtrl( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
   94    gbSizer1->Add( 
m_cornerRadiusCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   96    m_cornerRadiusUnits = 
new wxStaticText( m_ExportableSetupSizer->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
   98    gbSizer1->Add( 
m_cornerRadiusUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  101    gbSizer1->AddGrowableCol( 0 );
 
  103    m_ExportableSetupSizer->Add( gbSizer1, 1, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
 
  106    bLeftColumn->Add( m_ExportableSetupSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
 
  109    bSizerMiddle->Add( bLeftColumn, 0, wxBOTTOM|wxEXPAND|wxTOP, 5 );
 
  111    wxBoxSizer* bMiddleColumn;
 
  112    bMiddleColumn = 
new wxBoxSizer( wxVERTICAL );
 
  114    wxStaticBoxSizer* sbSizer5;
 
  115    sbSizer5 = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Electrical Properties") ), wxVERTICAL );
 
  117    wxGridBagSizer* gbSizerSettings;
 
  118    gbSizerSettings = 
new wxGridBagSizer( 0, 0 );
 
  119    gbSizerSettings->SetFlexibleDirection( wxBOTH );
 
  120    gbSizerSettings->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  122    m_clearanceLabel = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"Clearance:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  124    m_clearanceLabel->SetToolTip( 
_(
"Copper clearance for this zone (set to 0 to use the netclass clearance)") );
 
  126    gbSizerSettings->Add( 
m_clearanceLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
 
  128    m_clearanceCtrl = 
new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  129    gbSizerSettings->Add( 
m_clearanceCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  131    m_clearanceUnits = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  133    gbSizerSettings->Add( 
m_clearanceUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
 
  135    m_minWidthLabel = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"Minimum width:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  139    gbSizerSettings->Add( 
m_minWidthLabel, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT, 5 );
 
  141    m_minWidthCtrl = 
new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  142    gbSizerSettings->Add( 
m_minWidthCtrl, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
  144    m_minWidthUnits = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  146    gbSizerSettings->Add( 
m_minWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
 
  148    m_staticline2 = 
new wxStaticLine( sbSizer5->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
  149    gbSizerSettings->Add( 
m_staticline2, wxGBPosition( 2, 0 ), wxGBSpan( 1, 3 ), wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
 
  151    m_connectionLabel = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"Pad connections:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  153    m_connectionLabel->SetToolTip( 
_(
"Default pad connection type to zone.\nThis setting can be overridden by local  pad settings") );
 
  155    gbSizerSettings->Add( 
m_connectionLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
 
  157    wxString m_PadInZoneOptChoices[] = { 
_(
"Solid"), 
_(
"Thermal reliefs"), 
_(
"Reliefs for PTH"), 
_(
"None") };
 
  158    int m_PadInZoneOptNChoices = 
sizeof( m_PadInZoneOptChoices ) / 
sizeof( wxString );
 
  159    m_PadInZoneOpt = 
new wxChoice( sbSizer5->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_PadInZoneOptNChoices, m_PadInZoneOptChoices, 0 );
 
  161    gbSizerSettings->Add( 
m_PadInZoneOpt, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
 
  163    m_antipadLabel = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"Thermal relief gap:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  165    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.") );
 
  167    gbSizerSettings->Add( 
m_antipadLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5 );
 
  169    m_antipadCtrl = 
new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  170    m_antipadCtrl->SetToolTip( 
_(
"Clearance between pads in the same net and filled areas.") );
 
  172    gbSizerSettings->Add( 
m_antipadCtrl, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
 
  174    m_antipadUnits = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  176    gbSizerSettings->Add( 
m_antipadUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
 
  178    m_spokeWidthLabel = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"Thermal spoke width:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  180    gbSizerSettings->Add( 
m_spokeWidthLabel, wxGBPosition( 5, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
 
  182    m_spokeWidthCtrl = 
new wxTextCtrl( sbSizer5->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  185    gbSizerSettings->Add( 
m_spokeWidthCtrl, wxGBPosition( 5, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALL, 5 );
 
  187    m_spokeWidthUnits = 
new wxStaticText( sbSizer5->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  189    gbSizerSettings->Add( 
m_spokeWidthUnits, wxGBPosition( 5, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
 
  192    gbSizerSettings->AddGrowableCol( 1 );
 
  194    sbSizer5->Add( gbSizerSettings, 0, wxEXPAND, 5 );
 
  197    bMiddleColumn->Add( sbSizer5, 1, wxEXPAND|wxRIGHT, 5 );
 
  200    bSizerMiddle->Add( bMiddleColumn, 1, wxEXPAND|wxALL, 5 );
 
  202    wxStaticBoxSizer* sbSizerZoneStyle;
 
  203    sbSizerZoneStyle = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Fill") ), wxVERTICAL );
 
  205    wxGridBagSizer* gbSizer3;
 
  206    gbSizer3 = 
new wxGridBagSizer( 5, 5 );
 
  207    gbSizer3->SetFlexibleDirection( wxBOTH );
 
  208    gbSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  209    gbSizer3->SetEmptyCellSize( wxSize( -1,10 ) );
 
  211    m_staticTextGridFillType = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Fill type:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  213    gbSizer3->Add( 
m_staticTextGridFillType, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  215    wxString m_GridStyleCtrlChoices[] = { 
_(
"Solid fill"), 
_(
"Hatch pattern") };
 
  216    int m_GridStyleCtrlNChoices = 
sizeof( m_GridStyleCtrlChoices ) / 
sizeof( wxString );
 
  217    m_GridStyleCtrl = 
new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_GridStyleCtrlNChoices, m_GridStyleCtrlChoices, 0 );
 
  219    gbSizer3->Add( 
m_GridStyleCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
  221    m_staticTextGrindOrient = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Orientation:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  223    gbSizer3->Add( 
m_staticTextGrindOrient, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP, 5 );
 
  225    m_tcGridStyleOrientation = 
new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  228    m_staticTextRotUnits = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"deg"), wxDefaultPosition, wxDefaultSize, 0 );
 
  230    gbSizer3->Add( 
m_staticTextRotUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5 );
 
  232    m_staticTextStyleThickness = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Hatch width:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  236    m_tcGridStyleThickness = 
new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  239    m_GridStyleThicknessUnits = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  243    m_staticTextGridGap = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Hatch gap:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  245    gbSizer3->Add( 
m_staticTextGridGap, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  247    m_tcGridStyleGap = 
new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  248    gbSizer3->Add( 
m_tcGridStyleGap, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
  250    m_GridStyleGapUnits = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  252    gbSizer3->Add( 
m_GridStyleGapUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  254    m_staticTextGridSmoothingLevel = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Smoothing effort:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  256    m_staticTextGridSmoothingLevel->SetToolTip( 
_(
"Value of smoothing effort\n0 = no smoothing\n1 = chamfer\n2 = round corners\n3 = round corners (finer shape)") );
 
  260    m_spinCtrlSmoothLevel = 
new wxSpinCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 3, 0 );
 
  263    m_staticTextGridSmootingVal = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Smoothing amount:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  265    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)") );
 
  269    m_spinCtrlSmoothValue = 
new wxSpinCtrlDouble( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 1, 0.1, 0.1 );
 
  273    m_staticline5 = 
new wxStaticLine( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
  274    gbSizer3->Add( 
m_staticline5, wxGBPosition( 6, 0 ), wxGBSpan( 1, 3 ), wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
 
  276    m_staticText40 = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Remove islands:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  278    m_staticText40->SetToolTip( 
_(
"Choose what to do with unconnected copper islands") );
 
  280    gbSizer3->Add( 
m_staticText40, wxGBPosition( 7, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  282    wxString m_cbRemoveIslandsChoices[] = { 
_(
"Always"), 
_(
"Never"), 
_(
"Below area limit") };
 
  283    int m_cbRemoveIslandsNChoices = 
sizeof( m_cbRemoveIslandsChoices ) / 
sizeof( wxString );
 
  284    m_cbRemoveIslands = 
new wxChoice( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbRemoveIslandsNChoices, m_cbRemoveIslandsChoices, 0 );
 
  286    gbSizer3->Add( 
m_cbRemoveIslands, wxGBPosition( 7, 1 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
  288    m_islandThresholdLabel = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"Area limit:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  293    gbSizer3->Add( 
m_islandThresholdLabel, wxGBPosition( 8, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  295    m_tcIslandThreshold = 
new wxTextCtrl( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  300    m_islandThresholdUnits = 
new wxStaticText( sbSizerZoneStyle->GetStaticBox(), wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  304    gbSizer3->Add( 
m_islandThresholdUnits, wxGBPosition( 8, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  307    gbSizer3->AddGrowableCol( 0 );
 
  309    sbSizerZoneStyle->Add( gbSizer3, 1, wxBOTTOM|wxEXPAND, 5 );
 
  312    bSizerMiddle->Add( sbSizerZoneStyle, 0, wxBOTTOM|wxEXPAND|wxRIGHT|wxTOP, 5 );
 
  315    this->SetSizer( bSizerMiddle );
 
  317    bSizerMiddle->Fit( 
this );