16DIALOG_DIMENSION_PROPERTIES_BASE::DIALOG_DIMENSION_PROPERTIES_BASE( wxWindow* parent, wxWindowID 
id, 
const wxString& title, 
const wxPoint& pos, 
const wxSize& size, 
long style ) : 
DIALOG_SHIM( parent, id, title, pos, size, style )
 
   18    this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
 
   22    m_sizerLeader = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Leader Format") ), wxVERTICAL );
 
   24    wxGridBagSizer* gbSizerLeader;
 
   25    gbSizerLeader = 
new wxGridBagSizer( 0, 0 );
 
   26    gbSizerLeader->SetFlexibleDirection( wxBOTH );
 
   27    gbSizerLeader->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   31    gbSizerLeader->Add( 
m_lblLeaderValue, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   34    gbSizerLeader->Add( 
m_txtLeaderValue, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   37    gbSizerLeader->Add( 60, 0, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
   43    gbSizerLeader->Add( 
m_lblTextFrame, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   45    wxString m_cbTextFrameChoices[] = { 
_(
"None"), 
_(
"Rectangle"), 
_(
"Circle") };
 
   46    int m_cbTextFrameNChoices = 
sizeof( m_cbTextFrameChoices ) / 
sizeof( wxString );
 
   47    m_cbTextFrame = 
new wxChoice( 
m_sizerLeader->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbTextFrameNChoices, m_cbTextFrameChoices, 0 );
 
   49    m_cbTextFrame->SetToolTip( 
_(
"Draw a shape around the leader text") );
 
   51    gbSizerLeader->Add( 
m_cbTextFrame, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   55    gbSizerLeader->Add( 
m_lblLeaderLayer, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   58    gbSizerLeader->Add( 
m_cbLeaderLayer, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   61    gbSizerLeader->AddGrowableCol( 1 );
 
   62    gbSizerLeader->AddGrowableCol( 4 );
 
   69    m_sizerCenter = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Dimension Format") ), wxVERTICAL );
 
   71    wxGridBagSizer* gbSizerCenter;
 
   72    gbSizerCenter = 
new wxGridBagSizer( 0, 0 );
 
   73    gbSizerCenter->SetFlexibleDirection( wxBOTH );
 
   74    gbSizerCenter->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   78    gbSizerCenter->Add( 
m_lblCenterLayer, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
 
   81    gbSizerCenter->Add( 
m_cbCenterLayer, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
 
   89    m_sizerFormat = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Dimension Format") ), wxVERTICAL );
 
   91    wxGridBagSizer* gbSizerFormat;
 
   92    gbSizerFormat = 
new wxGridBagSizer( 3, 0 );
 
   93    gbSizerFormat->SetFlexibleDirection( wxBOTH );
 
   94    gbSizerFormat->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
   96    m_lblValue = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Value:"), wxDefaultPosition, wxDefaultSize, 0 );
 
   98    m_lblValue->SetToolTip( 
_(
"Measured value of this dimension") );
 
  100    gbSizerFormat->Add( 
m_lblValue, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  102    m_txtValue = 
new wxTextCtrl( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  104    m_txtValue->SetToolTip( 
_(
"Measured value of this dimension") );
 
  106    gbSizerFormat->Add( 
m_txtValue, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  109    m_cbOverrideValue->SetToolTip( 
_(
"When checked, the actual measurement is ignored and any value can be entered") );
 
  111    gbSizerFormat->Add( 
m_cbOverrideValue, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  114    gbSizerFormat->Add( 40, 0, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), 0, 5 );
 
  116    m_lblUnits = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Units:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  118    m_lblUnits->SetToolTip( 
_(
"Units of this dimension (\"automatic\" to follow the units selected in the editor)") );
 
  120    gbSizerFormat->Add( 
m_lblUnits, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  122    wxString m_cbUnitsChoices[] = { 
_(
"Inches"), 
_(
"Mils"), 
_(
"Millimeters"), 
_(
"Automatic") };
 
  123    int m_cbUnitsNChoices = 
sizeof( m_cbUnitsChoices ) / 
sizeof( wxString );
 
  124    m_cbUnits = 
new wxChoice( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbUnitsNChoices, m_cbUnitsChoices, 0 );
 
  126    m_cbUnits->SetToolTip( 
_(
"Units of this dimension (\"automatic\" to follow the units selected in the editor)") );
 
  128    gbSizerFormat->Add( 
m_cbUnits, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  130    m_lblPrefix = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Prefix:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  132    m_lblPrefix->SetToolTip( 
_(
"Text to print before the dimension value") );
 
  134    gbSizerFormat->Add( 
m_lblPrefix, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  136    m_txtPrefix = 
new wxTextCtrl( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  137    m_txtPrefix->SetToolTip( 
_(
"Text to print before the dimension value") );
 
  139    gbSizerFormat->Add( 
m_txtPrefix, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  145    gbSizerFormat->Add( 
m_txtUnitsFormat, wxGBPosition( 1, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  147    wxString m_cbUnitsFormatChoices[] = { 
_(
"1234"), 
_(
"1234 mm"), 
_(
"1234 (mm)") };
 
  148    int m_cbUnitsFormatNChoices = 
sizeof( m_cbUnitsFormatChoices ) / 
sizeof( wxString );
 
  149    m_cbUnitsFormat = 
new wxChoice( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbUnitsFormatNChoices, m_cbUnitsFormatChoices, 0 );
 
  153    gbSizerFormat->Add( 
m_cbUnitsFormat, wxGBPosition( 1, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  155    m_lblSuffix = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Suffix:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  157    m_lblSuffix->SetToolTip( 
_(
"Text to print after the dimension value") );
 
  159    gbSizerFormat->Add( 
m_lblSuffix, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  161    m_txtSuffix = 
new wxTextCtrl( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  162    m_txtSuffix->SetToolTip( 
_(
"Text to print after the dimension value") );
 
  164    gbSizerFormat->Add( 
m_txtSuffix, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  168    m_lblPrecision->SetToolTip( 
_(
"Choose how many digits of precision to display") );
 
  170    gbSizerFormat->Add( 
m_lblPrecision, wxGBPosition( 2, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  172    wxString m_cbPrecisionChoices[] = { 
_(
"0"), 
_(
"0.0"), 
_(
"0.00"), 
_(
"0.000"), 
_(
"0.0000"), 
_(
"0.00000"), 
_(
"0.00 in / 0 mils / 0.0 mm"), 
_(
"0.000 / 0 / 0.00"), 
_(
"0.0000 / 0.0 / 0.000"), 
_(
"0.00000 / 0.00 / 0.0000") };
 
  173    int m_cbPrecisionNChoices = 
sizeof( m_cbPrecisionChoices ) / 
sizeof( wxString );
 
  174    m_cbPrecision = 
new wxChoice( 
m_sizerFormat->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbPrecisionNChoices, m_cbPrecisionChoices, 0 );
 
  176    m_cbPrecision->SetToolTip( 
_(
"Choose how many digits of precision to display") );
 
  178    gbSizerFormat->Add( 
m_cbPrecision, wxGBPosition( 2, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  181    gbSizerFormat->Add( 
m_cbLayer, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  183    m_lblLayer = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  185    gbSizerFormat->Add( 
m_lblLayer, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  188    m_cbSuppressZeroes->SetToolTip( 
_(
"When checked, \"0.100\" will be shown as \"0.1\" even if the precision setting is higher") );
 
  190    gbSizerFormat->Add( 
m_cbSuppressZeroes, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
 
  192    m_lblPreview = 
new wxStaticText( 
m_sizerFormat->GetStaticBox(), wxID_ANY, 
_(
"Preview:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  194    gbSizerFormat->Add( 
m_lblPreview, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
 
  198    gbSizerFormat->Add( 
m_staticTextPreview, wxGBPosition( 4, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxEXPAND, 5 );
 
  201    gbSizerFormat->AddGrowableCol( 1 );
 
  202    gbSizerFormat->AddGrowableCol( 5 );
 
  204    m_sizerFormat->Add( gbSizerFormat, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
 
  209    m_sizerText = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Dimension Text") ), wxVERTICAL );
 
  211    wxGridBagSizer* gbSizerText;
 
  212    gbSizerText = 
new wxGridBagSizer( 3, 0 );
 
  213    gbSizerText->SetFlexibleDirection( wxBOTH );
 
  214    gbSizerText->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  216    m_fontLabel = 
new wxStaticText( 
m_sizerText->GetStaticBox(), wxID_ANY, 
_(
"Font:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  218    gbSizerText->Add( 
m_fontLabel, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
 
  220    wxString m_fontCtrlChoices[] = { 
_(
"KiCad Font") };
 
  221    int m_fontCtrlNChoices = 
sizeof( m_fontCtrlChoices ) / 
sizeof( wxString );
 
  224    gbSizerText->Add( 
m_fontCtrl, wxGBPosition( 0, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxEXPAND, 5 );
 
  226    wxBoxSizer* bSizerButtonBar;
 
  227    bSizerButtonBar = 
new wxBoxSizer( wxHORIZONTAL );
 
  232    bSizerButtonBar->Add( 
m_separator0, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  235    bSizerButtonBar->Add( 
m_bold, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  238    bSizerButtonBar->Add( 
m_italic, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  243    bSizerButtonBar->Add( 
m_separator1, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  246    bSizerButtonBar->Add( 
m_alignLeft, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  249    bSizerButtonBar->Add( 
m_alignCenter, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  252    bSizerButtonBar->Add( 
m_alignRight, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  257    bSizerButtonBar->Add( 
m_separator2, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  260    bSizerButtonBar->Add( 
m_mirrored, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  265    bSizerButtonBar->Add( 
m_separator3, 0, wxALIGN_CENTER_VERTICAL, 5 );
 
  268    gbSizerText->Add( bSizerButtonBar, wxGBPosition( 0, 4 ), wxGBSpan( 1, 3 ), wxEXPAND|wxBOTTOM|wxALIGN_CENTER_VERTICAL, 5 );
 
  274    gbSizerText->Add( 
m_lblTextWidth, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  276    m_txtTextWidth = 
new wxTextCtrl( 
m_sizerText->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  277    gbSizerText->Add( 
m_txtTextWidth, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  281    gbSizerText->Add( 
m_lblTextWidthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  284    gbSizerText->Add( 40, 0, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
  286    m_lblTextPosX = 
new wxStaticText( 
m_sizerText->GetStaticBox(), wxID_ANY, 
_(
"Position X:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  290    gbSizerText->Add( 
m_lblTextPosX, wxGBPosition( 1, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  292    m_txtTextPosX = 
new wxTextCtrl( 
m_sizerText->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  293    gbSizerText->Add( 
m_txtTextPosX, wxGBPosition( 1, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  297    gbSizerText->Add( 
m_lblTextPosXUnits, wxGBPosition( 1, 6 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxLEFT|wxRIGHT, 5 );
 
  303    gbSizerText->Add( 
m_lblTextHeight, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  305    m_txtTextHeight = 
new wxTextCtrl( 
m_sizerText->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  306    gbSizerText->Add( 
m_txtTextHeight, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  310    gbSizerText->Add( 
m_lblTextHeightUnits, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
 
  312    m_lblTextPosY = 
new wxStaticText( 
m_sizerText->GetStaticBox(), wxID_ANY, 
_(
"Position Y:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  316    gbSizerText->Add( 
m_lblTextPosY, wxGBPosition( 2, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  318    m_txtTextPosY = 
new wxTextCtrl( 
m_sizerText->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  319    gbSizerText->Add( 
m_txtTextPosY, wxGBPosition( 2, 5 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  323    gbSizerText->Add( 
m_lblTextPosYUnits, wxGBPosition( 2, 6 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT|wxLEFT, 5 );
 
  329    gbSizerText->Add( 
m_lblTextThickness, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  331    m_txtTextThickness = 
new wxTextCtrl( 
m_sizerText->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  332    gbSizerText->Add( 
m_txtTextThickness, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  336    gbSizerText->Add( 
m_lblTextThicknessUnits, wxGBPosition( 3, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  342    gbSizerText->Add( 
m_lblTextOrientation, wxGBPosition( 3, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  349    gbSizerText->Add( 
m_cbTextOrientation, wxGBPosition( 3, 5 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
 
  353    gbSizerText->Add( 
m_lblTextPositionMode, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
 
  355    wxString m_cbTextPositionModeChoices[] = { 
_(
"Outside"), 
_(
"Inline"), 
_(
"Manual") };
 
  356    int m_cbTextPositionModeNChoices = 
sizeof( m_cbTextPositionModeChoices ) / 
sizeof( wxString );
 
  357    m_cbTextPositionMode = 
new wxChoice( 
m_sizerText->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbTextPositionModeNChoices, m_cbTextPositionModeChoices, 0 );
 
  359    m_cbTextPositionMode->SetToolTip( 
_(
"Choose how to position the text relative to the dimension line") );
 
  361    gbSizerText->Add( 
m_cbTextPositionMode, wxGBPosition( 4, 1 ), wxGBSpan( 1, 2 ), wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
 
  363    m_cbKeepAligned = 
new wxCheckBox( 
m_sizerText->GetStaticBox(), wxID_ANY, 
_(
"Keep aligned with dimension"), wxDefaultPosition, wxDefaultSize, 0 );
 
  364    m_cbKeepAligned->SetToolTip( 
_(
"Automatically set the text orientation to match the dimension lines") );
 
  366    gbSizerText->Add( 
m_cbKeepAligned, wxGBPosition( 4, 4 ), wxGBSpan( 1, 3 ), wxALIGN_CENTER_VERTICAL|wxTOP, 5 );
 
  369    gbSizerText->AddGrowableCol( 1 );
 
  370    gbSizerText->AddGrowableCol( 5 );
 
  372    m_sizerText->Add( gbSizerText, 0, wxBOTTOM|wxEXPAND|wxLEFT, 5 );
 
  377    wxStaticBoxSizer* sbSizerLine;
 
  378    sbSizerLine = 
new wxStaticBoxSizer( 
new wxStaticBox( 
this, wxID_ANY, 
_(
"Dimension Line") ), wxVERTICAL );
 
  380    wxGridBagSizer* gbSizerLine;
 
  381    gbSizerLine = 
new wxGridBagSizer( 3, 0 );
 
  382    gbSizerLine->SetFlexibleDirection( wxBOTH );
 
  383    gbSizerLine->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
 
  385    m_lblLineThickness = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"Line thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  389    gbSizerLine->Add( 
m_lblLineThickness, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  391    m_txtLineThickness = 
new wxTextCtrl( sbSizerLine->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  392    gbSizerLine->Add( 
m_txtLineThickness, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  394    m_lblLineThicknessUnits = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
 
  396    gbSizerLine->Add( 
m_lblLineThicknessUnits, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  399    gbSizerLine->Add( 40, 0, wxGBPosition( 0, 3 ), wxGBSpan( 1, 1 ), wxEXPAND, 5 );
 
  401    m_lblArrowLength = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"Arrow length:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  403    gbSizerLine->Add( 
m_lblArrowLength, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  405    m_txtArrowLength = 
new wxTextCtrl( sbSizerLine->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 
  406    gbSizerLine->Add( 
m_txtArrowLength, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
 
  408    m_lblArrowLengthUnits = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
 
  410    gbSizerLine->Add( 
m_lblArrowLengthUnits, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  412    m_lblExtensionOffset = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"Extension line offset:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  414    m_lblExtensionOffset->SetToolTip( 
_(
"Gap between the measured points and the start of the extension lines") );
 
  416    gbSizerLine->Add( 
m_lblExtensionOffset, wxGBPosition( 0, 4 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
 
  418    m_txtExtensionOffset = 
new wxTextCtrl( sbSizerLine->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  419    m_txtExtensionOffset->SetToolTip( 
_(
"Gap between the measured points and the start of the extension lines") );
 
  421    gbSizerLine->Add( 
m_txtExtensionOffset, wxGBPosition( 0, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  423    m_lblExtensionOffsetUnits = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"unit"), wxDefaultPosition, wxDefaultSize, 0 );
 
  425    gbSizerLine->Add( 
m_lblExtensionOffsetUnits, wxGBPosition( 0, 6 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
 
  427    m_lblExtensionOvershoot = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"Extension line overshoot:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  429    gbSizerLine->Add( 
m_lblExtensionOvershoot, wxGBPosition( 1, 4 ), wxGBSpan( 1, 1 ), wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
 
  431    m_txtExtensionOvershoot = 
new wxTextCtrl( sbSizerLine->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
 
  432    gbSizerLine->Add( 
m_txtExtensionOvershoot, wxGBPosition( 1, 5 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
 
  438    m_lblArrowDirection = 
new wxStaticText( sbSizerLine->GetStaticBox(), wxID_ANY, 
_(
"Arrow direction:"), wxDefaultPosition, wxDefaultSize, 0 );
 
  440    gbSizerLine->Add( 
m_lblArrowDirection, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 5 );
 
  442    wxString m_cbArrowDirectionChoices[] = { 
_(
"Inward"), 
_(
"Outward") };
 
  443    int m_cbArrowDirectionNChoices = 
sizeof( m_cbArrowDirectionChoices ) / 
sizeof( wxString );
 
  444    m_cbArrowDirection = 
new wxChoice( sbSizerLine->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cbArrowDirectionNChoices, m_cbArrowDirectionChoices, 0 );
 
  446    m_cbArrowDirection->SetToolTip( 
_(
"Chose Dimension Arrow Direction\nAutomatic: Determined based on text position.\nInward:    >-----<\nOutward: <----->") );
 
  448    gbSizerLine->Add( 
m_cbArrowDirection, wxGBPosition( 2, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP, 5 );
 
  451    gbSizerLine->AddGrowableCol( 1 );
 
  452    gbSizerLine->AddGrowableCol( 5 );
 
  454    sbSizerLine->Add( gbSizerLine, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
 
  457    m_mainSizer->Add( sbSizerLine, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 10 );
 
  473    this->Centre( wxBOTH );