12PANEL_SETUP_TEARDROPS_BASE::PANEL_SETUP_TEARDROPS_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* mainSizer;
 
   15    mainSizer = 
new wxBoxSizer( wxVERTICAL );
 
   19    m_roundShapesLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Default Properties for Round Shapes"), wxDefaultPosition, wxDefaultSize, 0 );
 
   23    m_staticline1 = 
new wxStaticLine( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
   26    wxBoxSizer* bSizerShapeColumns;
 
   27    bSizerShapeColumns = 
new wxBoxSizer( wxHORIZONTAL );
 
   29    wxBoxSizer* bSizerLeftCol;
 
   30    bSizerLeftCol = 
new wxBoxSizer( wxVERTICAL );
 
   32    m_bitmapTeardrop = 
new wxStaticBitmap( 
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
 
   33    bSizerLeftCol->Add( 
m_bitmapTeardrop, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
 
   36    bSizerShapeColumns->Add( bSizerLeftCol, 0, wxEXPAND|wxRIGHT, 10 );
 
   39    bSizerShapeColumns->Add( 10, 0, 0, wxEXPAND, 5 );
 
   41    wxGridBagSizer* gbSizer;
 
   42    gbSizer = 
new wxGridBagSizer( 2, 3 );
 
   43    gbSizer->SetFlexibleDirection( wxBOTH );
 
   44    gbSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   45    gbSizer->SetEmptyCellSize( wxSize( 10,7 ) );
 
   47    m_stLenPercentLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
   49    gbSizer->Add( 
m_stLenPercentLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
   51    m_spLenPercent = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
 
   53    gbSizer->Add( 
m_spLenPercent, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   55    wxBoxSizer* bSizer131;
 
   56    bSizer131 = 
new wxBoxSizer( wxHORIZONTAL );
 
   58    wxStaticText* stLenPercentUnits;
 
   59    stLenPercentUnits = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
   60    stLenPercentUnits->Wrap( -1 );
 
   61    bSizer131->Add( stLenPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
   63    wxStaticText* stLenPercentHint;
 
   64    stLenPercentHint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
 
   65    stLenPercentHint->Wrap( -1 );
 
   66    stLenPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
   68    bSizer131->Add( stLenPercentHint, 0, wxALIGN_BOTTOM, 1 );
 
   70    wxStaticText* staticText76;
 
   71    staticText76 = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
   72    staticText76->Wrap( -1 );
 
   73    bSizer131->Add( staticText76, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
   76    gbSizer->Add( bSizer131, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
   78    m_stMaxLen = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
   80    gbSizer->Add( 
m_stMaxLen, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
   82    m_tcTdMaxLen = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
   83    gbSizer->Add( 
m_tcTdMaxLen, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   85    m_stMaxLenUnits = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
   87    gbSizer->Add( 
m_stMaxLenUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
   89    m_stWidthLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
   91    gbSizer->Add( 
m_stWidthLabel, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
   93    m_spWidthPercent = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
 
   95    gbSizer->Add( 
m_spWidthPercent, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
   98    bSizer13 = 
new wxBoxSizer( wxHORIZONTAL );
 
  100    wxStaticText* stWidthPercentUnits;
 
  101    stWidthPercentUnits = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  102    stWidthPercentUnits->Wrap( -1 );
 
  103    bSizer13->Add( stWidthPercentUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  105    wxStaticText* stWidthPercentHint;
 
  106    stWidthPercentHint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
 
  107    stWidthPercentHint->Wrap( -1 );
 
  108    stWidthPercentHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  110    bSizer13->Add( stWidthPercentHint, 0, wxALIGN_BOTTOM, 1 );
 
  112    wxStaticText* stWidthPercentSuffix;
 
  113    stWidthPercentSuffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  114    stWidthPercentSuffix->Wrap( -1 );
 
  115    bSizer13->Add( stWidthPercentSuffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  118    gbSizer->Add( bSizer13, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  120    m_stMaxWidthLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  122    gbSizer->Add( 
m_stMaxWidthLabel, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  124    m_tcMaxWidth = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  125    gbSizer->Add( 
m_tcMaxWidth, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  127    m_stMaxWidthUnits = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  129    gbSizer->Add( 
m_stMaxWidthUnits, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  131    m_cbPreferZoneConnection = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
 
  132    m_cbPreferZoneConnection->SetToolTip( 
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
 
  134    gbSizer->Add( 
m_cbPreferZoneConnection, wxGBPosition( 1, 3 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
 
  136    m_stHDRatio = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Track width limit:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  138    m_stHDRatio->SetToolTip( 
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
 
  140    gbSizer->Add( 
m_stHDRatio, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
 
  142    m_spTeardropHDPercent = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
 
  144    m_spTeardropHDPercent->SetToolTip( 
_(
"Tracks which are similar in size to the pad or via do not need teardrops.") );
 
  146    gbSizer->Add( 
m_spTeardropHDPercent, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  148    wxBoxSizer* bSizer1311;
 
  149    bSizer1311 = 
new wxBoxSizer( wxHORIZONTAL );
 
  151    wxStaticText* minTrackWidthUnits;
 
  152    minTrackWidthUnits = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  153    minTrackWidthUnits->Wrap( -1 );
 
  154    bSizer1311->Add( minTrackWidthUnits, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  156    wxStaticText* stMinTrackWidthHint;
 
  157    stMinTrackWidthHint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"d"), wxDefaultPosition, wxDefaultSize, 0 );
 
  158    stMinTrackWidthHint->Wrap( -1 );
 
  159    stMinTrackWidthHint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  161    bSizer1311->Add( stMinTrackWidthHint, 0, wxALIGN_BOTTOM, 1 );
 
  163    wxStaticText* stMinTrackWidthSuffix;
 
  164    stMinTrackWidthSuffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  165    stMinTrackWidthSuffix->Wrap( -1 );
 
  166    bSizer1311->Add( stMinTrackWidthSuffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  169    gbSizer->Add( bSizer1311, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  171    m_cbTeardropsUseNextTrack = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Allow teardrop to span two track segments"), wxDefaultPosition, wxDefaultSize, 0 );
 
  173    m_cbTeardropsUseNextTrack->SetToolTip( 
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
 
  177    m_cbCurvedEdges = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
 
  178    gbSizer->Add( 
m_cbCurvedEdges, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), 0, 5 );
 
  181    bSizerShapeColumns->Add( gbSizer, 0, wxEXPAND|wxLEFT, 20 );
 
  184    m_gridSizer->Add( bSizerShapeColumns, 1, wxEXPAND|wxTOP, 5 );
 
  189    m_rectShapesLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Default Properties for Rectangular Shapes"), wxDefaultPosition, wxDefaultSize, 0 );
 
  193    m_staticline2 = 
new wxStaticLine( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
  196    wxBoxSizer* bSizerShapeColumns1;
 
  197    bSizerShapeColumns1 = 
new wxBoxSizer( wxHORIZONTAL );
 
  199    wxBoxSizer* bSizerLeftCol1;
 
  200    bSizerLeftCol1 = 
new wxBoxSizer( wxVERTICAL );
 
  202    m_bitmapTeardrop1 = 
new wxStaticBitmap( 
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
 
  203    bSizerLeftCol1->Add( 
m_bitmapTeardrop1, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
 
  206    bSizerShapeColumns1->Add( bSizerLeftCol1, 0, wxEXPAND|wxRIGHT, 10 );
 
  209    bSizerShapeColumns1->Add( 10, 0, 0, wxEXPAND, 5 );
 
  211    wxGridBagSizer* gbSizer1;
 
  212    gbSizer1 = 
new wxGridBagSizer( 2, 3 );
 
  213    gbSizer1->SetFlexibleDirection( wxBOTH );
 
  214    gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  215    gbSizer1->SetEmptyCellSize( wxSize( 10,7 ) );
 
  217    m_stLenPercent1Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  219    gbSizer1->Add( 
m_stLenPercent1Label, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  221    m_spLenPercent1 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
 
  223    gbSizer1->Add( 
m_spLenPercent1, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  225    wxBoxSizer* bSizer122;
 
  226    bSizer122 = 
new wxBoxSizer( wxHORIZONTAL );
 
  228    wxStaticText* stLenPercent1Units;
 
  229    stLenPercent1Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  230    stLenPercent1Units->Wrap( -1 );
 
  231    bSizer122->Add( stLenPercent1Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  233    wxStaticText* stLenPercent1Hint;
 
  234    stLenPercent1Hint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  235    stLenPercent1Hint->Wrap( -1 );
 
  236    stLenPercent1Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  238    bSizer122->Add( stLenPercent1Hint, 0, wxALIGN_BOTTOM, 1 );
 
  240    wxStaticText* stLenPercent1Suffix;
 
  241    stLenPercent1Suffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  242    stLenPercent1Suffix->Wrap( -1 );
 
  243    bSizer122->Add( stLenPercent1Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  246    gbSizer1->Add( bSizer122, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  248    m_stMaxLen1 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  250    gbSizer1->Add( 
m_stMaxLen1, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  252    m_tcTdMaxLen1 = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  253    gbSizer1->Add( 
m_tcTdMaxLen1, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  255    m_stMaxLen1Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  257    gbSizer1->Add( 
m_stMaxLen1Units, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  259    m_stWidth1Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  261    gbSizer1->Add( 
m_stWidth1Label, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  263    m_spWidthPercent1 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
 
  265    gbSizer1->Add( 
m_spWidthPercent1, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  267    wxBoxSizer* bSizer12;
 
  268    bSizer12 = 
new wxBoxSizer( wxHORIZONTAL );
 
  270    wxStaticText* stWidthPercent1Units;
 
  271    stWidthPercent1Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  272    stWidthPercent1Units->Wrap( -1 );
 
  273    bSizer12->Add( stWidthPercent1Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  275    wxStaticText* stSizePercent1Hint;
 
  276    stSizePercent1Hint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  277    stSizePercent1Hint->Wrap( -1 );
 
  278    stSizePercent1Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  280    bSizer12->Add( stSizePercent1Hint, 0, wxALIGN_BOTTOM, 1 );
 
  282    wxStaticText* stSizePercent1Suffix;
 
  283    stSizePercent1Suffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  284    stSizePercent1Suffix->Wrap( -1 );
 
  285    bSizer12->Add( stSizePercent1Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  288    gbSizer1->Add( bSizer12, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  290    m_stMaxWidth1Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  292    gbSizer1->Add( 
m_stMaxWidth1Label, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  294    m_tcMaxWidth1 = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  295    gbSizer1->Add( 
m_tcMaxWidth1, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  297    m_stMaxWidth1Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  299    gbSizer1->Add( 
m_stMaxWidth1Units, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  301    m_cbPreferZoneConnection1 = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Prefer zone connection"), wxDefaultPosition, wxDefaultSize, 0 );
 
  302    m_cbPreferZoneConnection1->SetToolTip( 
_(
"Do not create teardrops on tracks connected to pads that are also connected to a copper zone.") );
 
  306    m_stHDRatio1 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Track width limit:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  308    m_stHDRatio1->SetToolTip( 
_(
"Max pad/via size to track width ratio to create a teardrop.\n100 always creates a teardrop.") );
 
  310    gbSizer1->Add( 
m_stHDRatio1, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
 
  312    m_spTeardropHDPercent1 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
 
  316    gbSizer1->Add( 
m_spTeardropHDPercent1, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  318    wxBoxSizer* bSizer1221;
 
  319    bSizer1221 = 
new wxBoxSizer( wxHORIZONTAL );
 
  321    wxStaticText* minTrackWidthUnits1;
 
  322    minTrackWidthUnits1 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  323    minTrackWidthUnits1->Wrap( -1 );
 
  324    bSizer1221->Add( minTrackWidthUnits1, 0, 0, 5 );
 
  326    wxStaticText* stMinTrackWidthHint1;
 
  327    stMinTrackWidthHint1 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  328    stMinTrackWidthHint1->Wrap( -1 );
 
  329    stMinTrackWidthHint1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  331    bSizer1221->Add( stMinTrackWidthHint1, 0, wxALIGN_BOTTOM, 1 );
 
  333    wxStaticText* staticText73;
 
  334    staticText73 = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  335    staticText73->Wrap( -1 );
 
  336    bSizer1221->Add( staticText73, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  339    gbSizer1->Add( bSizer1221, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  341    m_cbTeardropsUseNextTrack1 = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Allow teardrop to span track segments"), wxDefaultPosition, wxDefaultSize, 0 );
 
  343    m_cbTeardropsUseNextTrack1->SetToolTip( 
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
 
  347    m_cbCurvedEdges1 = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
 
  348    gbSizer1->Add( 
m_cbCurvedEdges1, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), 0, 5 );
 
  351    bSizerShapeColumns1->Add( gbSizer1, 0, wxEXPAND|wxLEFT, 20 );
 
  354    m_gridSizer->Add( bSizerShapeColumns1, 1, wxEXPAND|wxTOP, 5 );
 
  359    m_tracksLabel = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Properties for Track-to-Track Teardrops"), wxDefaultPosition, wxDefaultSize, 0 );
 
  363    m_staticline3 = 
new wxStaticLine( 
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
 
  366    wxBoxSizer* bSizerShapeColumns2;
 
  367    bSizerShapeColumns2 = 
new wxBoxSizer( wxHORIZONTAL );
 
  369    wxBoxSizer* bSizerLeftCol2;
 
  370    bSizerLeftCol2 = 
new wxBoxSizer( wxVERTICAL );
 
  372    m_bitmapTeardrop2 = 
new wxStaticBitmap( 
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
 
  373    bSizerLeftCol2->Add( 
m_bitmapTeardrop2, 1, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
 
  376    bSizerShapeColumns2->Add( bSizerLeftCol2, 0, wxEXPAND|wxRIGHT, 10 );
 
  379    bSizerShapeColumns2->Add( 10, 0, 0, wxEXPAND, 5 );
 
  381    wxGridBagSizer* gbSizer2;
 
  382    gbSizer2 = 
new wxGridBagSizer( 2, 3 );
 
  383    gbSizer2->SetFlexibleDirection( wxBOTH );
 
  384    gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  385    gbSizer2->SetEmptyCellSize( wxSize( 10,7 ) );
 
  387    m_stLenPercent2Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  389    gbSizer2->Add( 
m_stLenPercent2Label, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  391    m_spLenPercent2 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 20, 100, 40.000000, 10 );
 
  393    gbSizer2->Add( 
m_spLenPercent2, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  395    wxBoxSizer* bSizer1211;
 
  396    bSizer1211 = 
new wxBoxSizer( wxHORIZONTAL );
 
  398    wxStaticText* stLenPercent2Units;
 
  399    stLenPercent2Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  400    stLenPercent2Units->Wrap( -1 );
 
  401    bSizer1211->Add( stLenPercent2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  403    wxStaticText* stLenPercent2Hint;
 
  404    stLenPercent2Hint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  405    stLenPercent2Hint->Wrap( -1 );
 
  406    stLenPercent2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  408    bSizer1211->Add( stLenPercent2Hint, 0, wxALIGN_BOTTOM, 1 );
 
  410    wxStaticText* stLenPercent2Suffix;
 
  411    stLenPercent2Suffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  412    stLenPercent2Suffix->Wrap( -1 );
 
  413    bSizer1211->Add( stLenPercent2Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  416    gbSizer2->Add( bSizer1211, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  418    m_stMaxLen2 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum length (L):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  420    gbSizer2->Add( 
m_stMaxLen2, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  422    m_tcTdMaxLen2 = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  423    gbSizer2->Add( 
m_tcTdMaxLen2, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  425    m_stMaxLen2Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  427    gbSizer2->Add( 
m_stMaxLen2Units, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  429    m_stWidth2Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Best width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  431    gbSizer2->Add( 
m_stWidth2Label, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  433    m_spWidthPercent2 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 60, 100, 100.000000, 10 );
 
  435    gbSizer2->Add( 
m_spWidthPercent2, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  437    wxBoxSizer* bSizer121;
 
  438    bSizer121 = 
new wxBoxSizer( wxHORIZONTAL );
 
  440    wxStaticText* stWidthPercent2Units;
 
  441    stWidthPercent2Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  442    stWidthPercent2Units->Wrap( -1 );
 
  443    bSizer121->Add( stWidthPercent2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  445    wxStaticText* stWidthPercent2Hint;
 
  446    stWidthPercent2Hint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  447    stWidthPercent2Hint->Wrap( -1 );
 
  448    stWidthPercent2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  450    bSizer121->Add( stWidthPercent2Hint, 0, wxALIGN_BOTTOM, 1 );
 
  452    wxStaticText* stWidthPercent2Suffix;
 
  453    stWidthPercent2Suffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  454    stWidthPercent2Suffix->Wrap( -1 );
 
  455    bSizer121->Add( stWidthPercent2Suffix, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  458    gbSizer2->Add( bSizer121, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  460    m_stMaxWidth2Label = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Maximum width (W):"), wxDefaultPosition, wxDefaultSize, 0 );
 
  462    gbSizer2->Add( 
m_stMaxWidth2Label, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  464    m_tcMaxWidth2 = 
new wxTextCtrl( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  465    gbSizer2->Add( 
m_tcMaxWidth2, wxGBPosition( 4, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  467    m_stMaxWidth2Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"mm"), wxDefaultPosition, wxDefaultSize, 0 );
 
  469    gbSizer2->Add( 
m_stMaxWidth2Units, wxGBPosition( 4, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  471    m_stHDRatio2 = 
new wxStaticText( 
this, wxID_ANY, 
_(
"Track width limit:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  473    m_stHDRatio2->SetToolTip( 
_(
"Max track width ratio to create a teardrop.\n100 always creates a teardrop.") );
 
  475    gbSizer2->Add( 
m_stHDRatio2, wxGBPosition( 3, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 40 );
 
  477    m_spTeardropHDPercent2 = 
new wxSpinCtrlDouble( 
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 100, 90, 10 );
 
  481    gbSizer2->Add( 
m_spTeardropHDPercent2, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  483    wxBoxSizer* bSizer12211;
 
  484    bSizer12211 = 
new wxBoxSizer( wxHORIZONTAL );
 
  486    wxStaticText* stMinTrackWidth2Units;
 
  487    stMinTrackWidth2Units = 
new wxStaticText( 
this, wxID_ANY, 
_(
"%("), wxDefaultPosition, wxDefaultSize, 0 );
 
  488    stMinTrackWidth2Units->Wrap( -1 );
 
  489    bSizer12211->Add( stMinTrackWidth2Units, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  491    wxStaticText* stMinTrackWidth2Hint;
 
  492    stMinTrackWidth2Hint = 
new wxStaticText( 
this, wxID_ANY, 
_(
"w"), wxDefaultPosition, wxDefaultSize, 0 );
 
  493    stMinTrackWidth2Hint->Wrap( -1 );
 
  494    stMinTrackWidth2Hint->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, 
false, wxEmptyString ) );
 
  496    bSizer12211->Add( stMinTrackWidth2Hint, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  498    wxStaticText* stMinTrackWidth2Suffix;
 
  499    stMinTrackWidth2Suffix = 
new wxStaticText( 
this, wxID_ANY, 
_(
" )"), wxDefaultPosition, wxDefaultSize, 0 );
 
  500    stMinTrackWidth2Suffix->Wrap( -1 );
 
  501    bSizer12211->Add( stMinTrackWidth2Suffix, 0, wxALIGN_BOTTOM|wxBOTTOM, 1 );
 
  504    gbSizer2->Add( bSizer12211, wxGBPosition( 3, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  506    m_cbTeardropsUseNextTrack2 = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Allow teardrop to span track segments"), wxDefaultPosition, wxDefaultSize, 0 );
 
  508    m_cbTeardropsUseNextTrack2->SetToolTip( 
_(
"Allows a teardrop to extend over the first 2 connected track segments if the first track segment is too short to accommodate the best length.") );
 
  512    m_cbCurvedEdges2 = 
new wxCheckBox( 
this, wxID_ANY, 
_(
"Curved edges"), wxDefaultPosition, wxDefaultSize, 0 );
 
  513    gbSizer2->Add( 
m_cbCurvedEdges2, wxGBPosition( 6, 0 ), wxGBSpan( 1, 1 ), 0, 5 );
 
  516    bSizerShapeColumns2->Add( gbSizer2, 0, wxEXPAND|wxLEFT, 20 );
 
  519    m_gridSizer->Add( bSizerShapeColumns2, 1, wxEXPAND|wxTOP, 5 );
 
  528    this->SetSizer( mainSizer );
 
  530    mainSizer->Fit( 
this );