7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-07 17:25:33 +00:00

Modernize drill map dialog.

This commit is contained in:
Jeff Young 2025-01-07 11:11:14 +00:00
parent 8a059c05cb
commit a4754eef5d
5 changed files with 951 additions and 1208 deletions

View File

@ -134,16 +134,16 @@ bool DIALOG_GENDRILL::TransferDataFromWindow()
m_job->SetOutputPath( m_outputDirectoryName->GetValue() );
m_job->m_format = m_rbExcellon->GetValue() ? JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::EXCELLON
: JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::GERBER;
m_job->m_drillUnits = m_Choice_Unit->GetSelection() == 0
m_job->m_drillUnits = m_units->GetSelection() == 0
? JOB_EXPORT_PCB_DRILL::DRILL_UNITS::MILLIMETERS
: JOB_EXPORT_PCB_DRILL::DRILL_UNITS::INCHES;
m_job->m_drillOrigin = static_cast<JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN>( m_Choice_Drill_Offset->GetSelection() );
m_job->m_drillOrigin = static_cast<JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN>( m_origin->GetSelection() );
m_job->m_excellonCombinePTHNPTH = m_Check_Merge_PTH_NPTH->IsChecked();
m_job->m_excellonMinimalHeader = m_Check_Minimal->IsChecked();
m_job->m_excellonMirrorY = m_Check_Mirror->IsChecked();
m_job->m_excellonOvalDrillRoute = m_radioBoxOvalHoleMode->GetSelection() == 0;
m_job->m_mapFormat = static_cast<JOB_EXPORT_PCB_DRILL::MAP_FORMAT>( m_Choice_Drill_Map->GetSelection() );
m_job->m_zeroFormat = static_cast<JOB_EXPORT_PCB_DRILL::ZEROS_FORMAT>( m_Choice_Zeros_Format->GetSelection() );
m_job->m_excellonOvalDrillRoute = !m_altDrillMode->GetValue();
m_job->m_mapFormat = static_cast<JOB_EXPORT_PCB_DRILL::MAP_FORMAT>( m_choiceDrillMap->GetSelection() );
m_job->m_zeroFormat = static_cast<JOB_EXPORT_PCB_DRILL::ZEROS_FORMAT>( m_zeros->GetSelection() );
m_job->m_generateMap = m_cbGenerateMap->IsChecked();
}
@ -178,10 +178,9 @@ void DIALOG_GENDRILL::initDialog()
m_ZerosFormat = cfg->m_GenDrill.zeros_format;
m_GenerateMap = cfg->m_GenDrill.generate_map;
// Ensure validity of m_mapFileType
if( m_mapFileType < 0 || m_mapFileType >= (int) m_Choice_Drill_Map->GetCount() )
m_mapFileType = m_Choice_Drill_Map->GetCount() - 1; // last item in list = default = PDF
if( m_mapFileType < 0 || m_mapFileType >= (int) m_choiceDrillMap->GetCount() )
m_mapFileType = m_choiceDrillMap->GetCount() - 1; // last item in list = default = PDF
}
// DIALOG_SHIM needs a unique hash_key because classname will be the same for both job and
@ -202,17 +201,17 @@ void DIALOG_GENDRILL::InitDisplayParams()
m_rbExcellon->SetValue( m_drillFileType == 0 );
m_rbGerberX2->SetValue( m_drillFileType == 1 );
m_Choice_Unit->SetSelection( m_UnitDrillIsInch ? 1 : 0 );
m_Choice_Zeros_Format->SetSelection( m_ZerosFormat );
m_units->SetSelection( m_UnitDrillIsInch ? 1 : 0 );
m_zeros->SetSelection( m_ZerosFormat );
UpdatePrecisionOptions();
m_Check_Minimal->SetValue( m_MinimalHeader );
m_Choice_Drill_Offset->SetSelection( m_drillOriginIsAuxAxis ? 1 : 0 );
m_origin->SetSelection( m_drillOriginIsAuxAxis ? 1 : 0 );
m_Check_Mirror->SetValue( m_Mirror );
m_Check_Merge_PTH_NPTH->SetValue( m_Merge_PTH_NPTH );
m_Choice_Drill_Map->SetSelection( m_mapFileType );
m_radioBoxOvalHoleMode->SetSelection( m_UseRouteModeForOvalHoles ? 0 : 1 );
m_choiceDrillMap->SetSelection( m_mapFileType );
m_altDrillMode->SetValue( !m_UseRouteModeForOvalHoles );
m_cbGenerateMap->SetValue( m_GenerateMap );
// Output directory
@ -225,76 +224,20 @@ void DIALOG_GENDRILL::InitDisplayParams()
m_rbExcellon->SetValue( m_job->m_format == JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::EXCELLON );
m_rbGerberX2->SetValue( m_job->m_format == JOB_EXPORT_PCB_DRILL::DRILL_FORMAT::GERBER );
m_Choice_Unit->SetSelection( m_job->m_drillUnits == JOB_EXPORT_PCB_DRILL::DRILL_UNITS::INCHES );
m_Choice_Zeros_Format->SetSelection( static_cast<int>( m_job->m_zeroFormat ) );
m_units->SetSelection( m_job->m_drillUnits == JOB_EXPORT_PCB_DRILL::DRILL_UNITS::INCHES );
m_zeros->SetSelection( static_cast<int>( m_job->m_zeroFormat ) );
UpdatePrecisionOptions();
m_Check_Minimal->SetValue( m_job->m_excellonMinimalHeader );
m_Choice_Drill_Offset->SetSelection( m_job->m_drillOrigin == JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::PLOT );
m_origin->SetSelection( m_job->m_drillOrigin == JOB_EXPORT_PCB_DRILL::DRILL_ORIGIN::PLOT );
m_Check_Mirror->SetValue( m_job->m_excellonMirrorY );
m_Check_Merge_PTH_NPTH->SetValue( m_job->m_excellonCombinePTHNPTH );
m_Choice_Drill_Map->SetSelection( static_cast<int>( m_job->m_mapFormat ) );
m_radioBoxOvalHoleMode->SetSelection( m_job->m_excellonOvalDrillRoute ? 0 : 1 );
m_choiceDrillMap->SetSelection( static_cast<int>( m_job->m_mapFormat ) );
m_altDrillMode->SetValue( !m_job->m_excellonOvalDrillRoute );
m_cbGenerateMap->SetValue( m_job->m_generateMap );
}
m_platedPadsHoleCount = 0;
m_notplatedPadsHoleCount = 0;
m_throughViasCount = 0;
m_microViasCount = 0;
m_blindOrBuriedViasCount = 0;
for( FOOTPRINT* footprint : m_board->Footprints() )
{
for( PAD* pad : footprint->Pads() )
{
if( pad->GetDrillShape() == PAD_DRILL_SHAPE::CIRCLE )
{
if( pad->GetDrillSize().x != 0 )
{
if( pad->GetAttribute() == PAD_ATTRIB::NPTH )
m_notplatedPadsHoleCount++;
else
m_platedPadsHoleCount++;
}
}
else
{
if( pad->GetDrillSize().x != 0 && pad->GetDrillSize().y != 0 )
{
if( pad->GetAttribute() == PAD_ATTRIB::NPTH )
m_notplatedPadsHoleCount++;
else
m_platedPadsHoleCount++;
}
}
}
}
for( PCB_TRACK* track : m_board->Tracks() )
{
const PCB_VIA *via = dynamic_cast<const PCB_VIA*>( track );
if( via )
{
switch( via->GetViaType() )
{
case VIATYPE::THROUGH: m_throughViasCount++; break;
case VIATYPE::MICROVIA: m_microViasCount++; break;
case VIATYPE::BLIND_BURIED: m_blindOrBuriedViasCount++; break;
default: break;
}
}
}
// Display hole counts:
m_PlatedPadsCountInfoMsg->SetLabel( wxString() << m_platedPadsHoleCount );
m_NotPlatedPadsCountInfoMsg->SetLabel( wxString() << m_notplatedPadsHoleCount );
m_ThroughViasInfoMsg->SetLabel( wxString() << m_throughViasCount );
m_MicroViasInfoMsg->SetLabel( wxString() << m_microViasCount );
m_BuriedViasInfoMsg->SetLabel( wxString() << m_blindOrBuriedViasCount );
wxCommandEvent dummy;
onFileFormatSelection( dummy );
}
@ -306,12 +249,14 @@ void DIALOG_GENDRILL::onFileFormatSelection( wxCommandEvent& event )
m_drillFileType = enbl_Excellon ? 0 : 1;
m_Choice_Unit->Enable( enbl_Excellon );
m_Choice_Zeros_Format->Enable( enbl_Excellon );
m_unitsLabel->Enable( enbl_Excellon );
m_units->Enable( enbl_Excellon );
m_zerosLabel->Enable( enbl_Excellon );
m_zeros->Enable( enbl_Excellon );
m_Check_Mirror->Enable( enbl_Excellon );
m_Check_Minimal->Enable( enbl_Excellon );
m_Check_Merge_PTH_NPTH->Enable( enbl_Excellon );
m_radioBoxOvalHoleMode->Enable( enbl_Excellon );
m_altDrillMode->Enable( enbl_Excellon );
if( enbl_Excellon )
{
@ -319,6 +264,7 @@ void DIALOG_GENDRILL::onFileFormatSelection( wxCommandEvent& event )
}
else
{
m_precisionLabel->Enable( true );
m_staticTextPrecision->Enable( true );
m_staticTextPrecision->SetLabel( m_plotOpts.GetGerberPrecision() == 6 ? wxT( "4.6" )
: wxT( "4.5" ) );
@ -358,7 +304,7 @@ void DIALOG_GENDRILL::OnSelZerosFmtSelected( wxCommandEvent& event )
void DIALOG_GENDRILL::UpdatePrecisionOptions()
{
if( m_Choice_Unit->GetSelection()== 1 )
if( m_units->GetSelection() == 1 )
{
// Units = inches
m_staticTextPrecision->SetLabel( precisionListForInches.GetPrecisionString() );
@ -369,10 +315,16 @@ void DIALOG_GENDRILL::UpdatePrecisionOptions()
m_staticTextPrecision->SetLabel( precisionListForMetric.GetPrecisionString() );
}
if( m_Choice_Zeros_Format->GetSelection() == EXCELLON_WRITER::DECIMAL_FORMAT )
if( m_zeros->GetSelection() == EXCELLON_WRITER::DECIMAL_FORMAT )
{
m_precisionLabel->Enable( false );
m_staticTextPrecision->Enable( false );
}
else
{
m_precisionLabel->Enable( true );
m_staticTextPrecision->Enable( true );
}
}
@ -417,20 +369,20 @@ void DIALOG_GENDRILL::UpdateDrillParams()
dirStr = m_outputDirectoryName->GetValue();
dirStr.Replace( wxT( "\\" ), wxT( "/" ) );
m_plotOpts.SetOutputDirectory( dirStr );
m_drillOriginIsAuxAxis = m_Choice_Drill_Offset->GetSelection() == 1;
m_drillOriginIsAuxAxis = m_origin->GetSelection() == 1;
m_plotOpts.SetUseAuxOrigin( m_drillOriginIsAuxAxis );
m_mapFileType = m_Choice_Drill_Map->GetSelection();
m_mapFileType = m_choiceDrillMap->GetSelection();
m_UnitDrillIsInch = (m_Choice_Unit->GetSelection() == 0) ? false : true;
m_UnitDrillIsInch = ( m_units->GetSelection() == 0 ) ? false : true;
m_MinimalHeader = m_Check_Minimal->IsChecked();
m_Mirror = m_Check_Mirror->IsChecked();
m_Merge_PTH_NPTH = m_Check_Merge_PTH_NPTH->IsChecked();
m_ZerosFormat = m_Choice_Zeros_Format->GetSelection();
m_UseRouteModeForOvalHoles = m_radioBoxOvalHoleMode->GetSelection() == 0;
m_ZerosFormat = m_zeros->GetSelection();
m_UseRouteModeForOvalHoles = !m_altDrillMode->GetValue();
m_GenerateMap = m_cbGenerateMap->IsChecked();
if( m_Choice_Drill_Offset->GetSelection() == 0 )
if( m_origin->GetSelection() == 0 )
m_DrillFileOffset = VECTOR2I( 0, 0 );
else
m_DrillFileOffset = m_board->GetDesignSettings().GetAuxOrigin();
@ -464,7 +416,7 @@ void DIALOG_GENDRILL::GenDrillAndMapFiles( bool aGenDrill, bool aGenMap )
PLOT_FORMAT::PDF
};
unsigned choice = (unsigned) m_Choice_Drill_Map->GetSelection();
unsigned choice = (unsigned) m_choiceDrillMap->GetSelection();
if( choice >= arrayDim( filefmt ) )
choice = arrayDim( filefmt )-1; // Last choice = PDF

View File

@ -99,26 +99,20 @@ public:
static bool m_GenerateMap;
DRILL_PRECISION m_Precision; // Precision for drill files, in non decimal format
VECTOR2I m_DrillFileOffset; // Drill offset: 0,0 for absolute coordinates,
// or origin of the auxiliary axis
// or origin of the auxiliary axis
static bool m_UseRouteModeForOvalHoles; // True to use a G00 route command for oval holes
// False to use a G85 canned mode for oval holes
private:
PCB_EDIT_FRAME* m_pcbEditFrame;
BOARD* m_board;
PCB_PLOT_PARAMS m_plotOpts;
PCB_EDIT_FRAME* m_pcbEditFrame;
BOARD* m_board;
PCB_PLOT_PARAMS m_plotOpts;
JOB_EXPORT_PCB_DRILL* m_job;
bool m_drillOriginIsAuxAxis; // Axis selection (main / auxiliary)
// for drill origin coordinates
int m_platedPadsHoleCount;
int m_notplatedPadsHoleCount;
int m_throughViasCount;
int m_microViasCount;
int m_blindOrBuriedViasCount;
static int m_mapFileType; // format of map file: HPGL, PS ...
static int m_drillFileType; // for Excellon, Gerber
bool m_drillOriginIsAuxAxis; // Axis selection (main / auxiliary)
// for drill origin coordinates
static int m_mapFileType; // format of map file: HPGL, PS ...
static int m_drillFileType; // for Excellon, Gerber
};
#endif // DIALOG_GENDRILL_H_

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -36,168 +36,146 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
wxBoxSizer* bmiddlerSizer;
bmiddlerSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bMiddleSizer;
bMiddleSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bLeftCol;
bLeftCol = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizer6;
sbSizer6 = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Drill File Format") ), wxVERTICAL );
m_formatLabel = new wxStaticText( this, wxID_ANY, _("Format"), wxDefaultPosition, wxDefaultSize, 0 );
m_formatLabel->Wrap( -1 );
bLeftCol->Add( m_formatLabel, 0, wxRIGHT|wxLEFT, 13 );
m_rbExcellon = new wxRadioButton( sbSizer6->GetStaticBox(), wxID_ANY, _("Excellon"), wxDefaultPosition, wxDefaultSize, 0 );
sbSizer6->Add( m_rbExcellon, 0, wxBOTTOM|wxRIGHT, 5 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bLeftCol->Add( m_staticline1, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerExcellonOptions;
bSizerExcellonOptions = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizerMargins;
bSizerMargins = new wxBoxSizer( wxVERTICAL );
m_Check_Mirror = new wxCheckBox( sbSizer6->GetStaticBox(), wxID_ANY, _("Mirror Y axis"), wxDefaultPosition, wxDefaultSize, 0 );
m_rbExcellon = new wxRadioButton( this, wxID_ANY, _("Excellon"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerMargins->Add( m_rbExcellon, 0, wxALL, 5 );
wxFlexGridSizer* fgSizerExcellonOptions;
fgSizerExcellonOptions = new wxFlexGridSizer( 4, 1, 3, 0 );
fgSizerExcellonOptions->SetFlexibleDirection( wxBOTH );
fgSizerExcellonOptions->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_Check_Mirror = new wxCheckBox( this, wxID_ANY, _("Mirror Y axis"), wxDefaultPosition, wxDefaultSize, 0 );
m_Check_Mirror->SetToolTip( _("Not recommended.\nUsed mostly by users who make the boards themselves.") );
bSizerExcellonOptions->Add( m_Check_Mirror, 0, wxLEFT, 5 );
fgSizerExcellonOptions->Add( m_Check_Mirror, 0, wxLEFT, 5 );
m_Check_Minimal = new wxCheckBox( sbSizer6->GetStaticBox(), wxID_ANY, _("Minimal header"), wxDefaultPosition, wxDefaultSize, 0 );
m_Check_Minimal = new wxCheckBox( this, wxID_ANY, _("Minimal header"), wxDefaultPosition, wxDefaultSize, 0 );
m_Check_Minimal->SetToolTip( _("Not recommended.\nOnly use it for board houses which do not accept fully featured headers.") );
bSizerExcellonOptions->Add( m_Check_Minimal, 0, wxRIGHT|wxLEFT, 5 );
fgSizerExcellonOptions->Add( m_Check_Minimal, 0, wxRIGHT|wxLEFT, 5 );
m_Check_Merge_PTH_NPTH = new wxCheckBox( sbSizer6->GetStaticBox(), wxID_ANY, _("PTH and NPTH in single file"), wxDefaultPosition, wxDefaultSize, 0 );
m_Check_Merge_PTH_NPTH = new wxCheckBox( this, wxID_ANY, _("PTH and NPTH in single file"), wxDefaultPosition, wxDefaultSize, 0 );
m_Check_Merge_PTH_NPTH->SetToolTip( _("Not recommended.\nOnly use for board houses which ask for merged PTH and NPTH into a single file.") );
bSizerExcellonOptions->Add( m_Check_Merge_PTH_NPTH, 0, wxLEFT, 5 );
fgSizerExcellonOptions->Add( m_Check_Merge_PTH_NPTH, 0, wxLEFT, 5 );
wxString m_radioBoxOvalHoleModeChoices[] = { _("Use route command (recommended)"), _("Use alternate drill mode") };
int m_radioBoxOvalHoleModeNChoices = sizeof( m_radioBoxOvalHoleModeChoices ) / sizeof( wxString );
m_radioBoxOvalHoleMode = new wxRadioBox( sbSizer6->GetStaticBox(), wxID_ANY, _("Oval Holes Drill Mode"), wxDefaultPosition, wxDefaultSize, m_radioBoxOvalHoleModeNChoices, m_radioBoxOvalHoleModeChoices, 1, wxRA_SPECIFY_COLS );
m_radioBoxOvalHoleMode->SetSelection( 0 );
m_radioBoxOvalHoleMode->SetToolTip( _("Oval holes frequently create problems for board houses.\n\"Use route command\" uses the usual G00 route command (recommended)\n \"Use alternate mode\" uses another drill/ route command (G85)\n(Use it only if the recommended command does not work)") );
bSizerExcellonOptions->Add( m_radioBoxOvalHoleMode, 0, wxALL|wxEXPAND, 5 );
m_altDrillMode = new wxCheckBox( this, wxID_ANY, _("Use alternate drill mode for oval holes"), wxDefaultPosition, wxDefaultSize, 0 );
fgSizerExcellonOptions->Add( m_altDrillMode, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
sbSizer6->Add( bSizerExcellonOptions, 1, wxEXPAND|wxLEFT, 12 );
m_rbGerberX2 = new wxRadioButton( sbSizer6->GetStaticBox(), wxID_ANY, _("Gerber X2"), wxDefaultPosition, wxDefaultSize, 0 );
sbSizer6->Add( m_rbGerberX2, 0, wxTOP|wxBOTTOM|wxRIGHT, 5 );
bSizerMargins->Add( fgSizerExcellonOptions, 0, wxEXPAND|wxLEFT, 20 );
bMiddleSizer->Add( sbSizer6, 1, wxEXPAND|wxALL, 5 );
bSizerMargins->Add( 0, 3, 1, wxEXPAND, 5 );
m_cbGenerateMap = new wxCheckBox( this, wxID_ANY, _("Generate Map"), wxDefaultPosition, wxDefaultSize, 0 );
bMiddleSizer->Add( m_cbGenerateMap, 0, wxALL, 5 );
wxString m_Choice_Drill_MapChoices[] = { _("PostScript"), _("Gerber X2"), _("DXF"), _("SVG"), _("PDF") };
int m_Choice_Drill_MapNChoices = sizeof( m_Choice_Drill_MapChoices ) / sizeof( wxString );
m_Choice_Drill_Map = new wxRadioBox( this, wxID_ANY, _("Map File Format"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_MapNChoices, m_Choice_Drill_MapChoices, 1, wxRA_SPECIFY_COLS );
m_Choice_Drill_Map->SetSelection( 4 );
m_Choice_Drill_Map->SetToolTip( _("Creates a drill map in PDF or other formats") );
bMiddleSizer->Add( m_Choice_Drill_Map, 0, wxALL|wxEXPAND, 5 );
m_rbGerberX2 = new wxRadioButton( this, wxID_ANY, _("Gerber X2"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerMargins->Add( m_rbGerberX2, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
bmiddlerSizer->Add( bMiddleSizer, 1, wxEXPAND, 5 );
bSizerMargins->Add( 0, 6, 0, wxEXPAND, 5 );
wxBoxSizer* bLeftSizer;
bLeftSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizer9;
bSizer9 = new wxBoxSizer( wxHORIZONTAL );
wxString m_Choice_Drill_OffsetChoices[] = { _("Absolute"), _("Drill/place file origin") };
int m_Choice_Drill_OffsetNChoices = sizeof( m_Choice_Drill_OffsetChoices ) / sizeof( wxString );
m_Choice_Drill_Offset = new wxRadioBox( this, wxID_ANY, _("Drill Origin"), wxDefaultPosition, wxDefaultSize, m_Choice_Drill_OffsetNChoices, m_Choice_Drill_OffsetChoices, 1, wxRA_SPECIFY_COLS );
m_Choice_Drill_Offset->SetSelection( 0 );
m_Choice_Drill_Offset->SetToolTip( _("Choose the coordinate origin: absolute or relative to the drill/place file origin") );
m_cbGenerateMap = new wxCheckBox( this, wxID_ANY, _("Generate map:"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer9->Add( m_cbGenerateMap, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 );
bLeftSizer->Add( m_Choice_Drill_Offset, 0, wxALL|wxEXPAND, 5 );
wxString m_choiceDrillMapChoices[] = { _("Postscript"), _("Gerber X2"), _("DXF"), _("SVG"), _("PDF") };
int m_choiceDrillMapNChoices = sizeof( m_choiceDrillMapChoices ) / sizeof( wxString );
m_choiceDrillMap = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceDrillMapNChoices, m_choiceDrillMapChoices, 0 );
m_choiceDrillMap->SetSelection( 0 );
bSizer9->Add( m_choiceDrillMap, 1, wxALL, 5 );
wxString m_Choice_UnitChoices[] = { _("Millimeters"), _("Inches") };
int m_Choice_UnitNChoices = sizeof( m_Choice_UnitChoices ) / sizeof( wxString );
m_Choice_Unit = new wxRadioBox( this, wxID_ANY, _("Drill Units"), wxDefaultPosition, wxDefaultSize, m_Choice_UnitNChoices, m_Choice_UnitChoices, 1, wxRA_SPECIFY_COLS );
m_Choice_Unit->SetSelection( 0 );
bLeftSizer->Add( m_Choice_Unit, 0, wxALL|wxEXPAND, 5 );
wxString m_Choice_Zeros_FormatChoices[] = { _("Decimal format (recommended)"), _("Suppress leading zeros"), _("Suppress trailing zeros"), _("Keep zeros") };
int m_Choice_Zeros_FormatNChoices = sizeof( m_Choice_Zeros_FormatChoices ) / sizeof( wxString );
m_Choice_Zeros_Format = new wxRadioBox( this, wxID_ANY, _("Zeros Format"), wxDefaultPosition, wxDefaultSize, m_Choice_Zeros_FormatNChoices, m_Choice_Zeros_FormatChoices, 1, wxRA_SPECIFY_COLS );
m_Choice_Zeros_Format->SetSelection( 0 );
m_Choice_Zeros_Format->SetToolTip( _("Choose EXCELLON numbers notation") );
bSizerMargins->Add( bSizer9, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bLeftSizer->Add( m_Choice_Zeros_Format, 0, wxALL|wxEXPAND, 5 );
bLeftCol->Add( bSizerMargins, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bmiddlerSizer->Add( bLeftCol, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bmiddlerSizer->Add( 10, 0, 0, 0, 5 );
wxBoxSizer* bRightCol;
bRightCol = new wxBoxSizer( wxVERTICAL );
m_optionsLabel = new wxStaticText( this, wxID_ANY, _("Options"), wxDefaultPosition, wxDefaultSize, 0 );
m_optionsLabel->Wrap( -1 );
bRightCol->Add( m_optionsLabel, 0, wxRIGHT|wxLEFT, 13 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
bRightCol->Add( m_staticline2, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxFlexGridSizer* fgSizer1;
fgSizer1 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer1 = new wxFlexGridSizer( 0, 2, 5, 5 );
fgSizer1->AddGrowableCol( 1 );
fgSizer1->SetFlexibleDirection( wxBOTH );
fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
m_staticTextTitle = new wxStaticText( this, wxID_ANY, _("Precision:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextTitle->Wrap( -1 );
fgSizer1->Add( m_staticTextTitle, 0, wxALL, 10 );
m_originLabel = new wxStaticText( this, wxID_ANY, _("Origin:"), wxDefaultPosition, wxDefaultSize, 0 );
m_originLabel->Wrap( -1 );
fgSizer1->Add( m_originLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
wxString m_originChoices[] = { _("Absolute"), _("Drill/place file origin") };
int m_originNChoices = sizeof( m_originChoices ) / sizeof( wxString );
m_origin = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_originNChoices, m_originChoices, 0 );
m_origin->SetSelection( 0 );
fgSizer1->Add( m_origin, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
m_unitsLabel = new wxStaticText( this, wxID_ANY, _("Units:"), wxDefaultPosition, wxDefaultSize, 0 );
m_unitsLabel->Wrap( -1 );
fgSizer1->Add( m_unitsLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
wxString m_unitsChoices[] = { _("Millimeters"), _("Inches") };
int m_unitsNChoices = sizeof( m_unitsChoices ) / sizeof( wxString );
m_units = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_unitsNChoices, m_unitsChoices, 0 );
m_units->SetSelection( 0 );
fgSizer1->Add( m_units, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
m_zerosLabel = new wxStaticText( this, wxID_ANY, _("Zeros:"), wxDefaultPosition, wxDefaultSize, 0 );
m_zerosLabel->Wrap( -1 );
fgSizer1->Add( m_zerosLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
wxString m_zerosChoices[] = { _("Decimal format (recommended)"), _("Suppress leading zeros"), _("Suppress trailing zeros"), _("Keep zeros") };
int m_zerosNChoices = sizeof( m_zerosChoices ) / sizeof( wxString );
m_zeros = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_zerosNChoices, m_zerosChoices, 0 );
m_zeros->SetSelection( 0 );
fgSizer1->Add( m_zeros, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
fgSizer1->Add( 0, 8, 1, wxEXPAND, 5 );
fgSizer1->Add( 0, 0, 1, wxEXPAND, 5 );
m_precisionLabel = new wxStaticText( this, wxID_ANY, _("Precision:"), wxDefaultPosition, wxDefaultSize, 0 );
m_precisionLabel->Wrap( -1 );
fgSizer1->Add( m_precisionLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_staticTextPrecision = new wxStaticText( this, wxID_ANY, _("Precision"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPrecision->Wrap( -1 );
fgSizer1->Add( m_staticTextPrecision, 0, wxALL, 10 );
fgSizer1->Add( m_staticTextPrecision, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
bLeftSizer->Add( fgSizer1, 0, wxEXPAND, 5 );
bRightCol->Add( fgSizer1, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bmiddlerSizer->Add( bLeftSizer, 0, wxEXPAND, 5 );
wxBoxSizer* bRightBoxSizer;
bRightBoxSizer = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizerHoles;
sbSizerHoles = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Hole Counts") ), wxVERTICAL );
wxFlexGridSizer* fgSizer2;
fgSizer2 = new wxFlexGridSizer( 0, 2, 0, 0 );
fgSizer2->SetFlexibleDirection( wxBOTH );
fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
staticTextPlatedPads = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("Plated pads:"), wxDefaultPosition, wxDefaultSize, 0 );
staticTextPlatedPads->Wrap( -1 );
fgSizer2->Add( staticTextPlatedPads, 0, wxLEFT|wxRIGHT, 5 );
m_PlatedPadsCountInfoMsg = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_PlatedPadsCountInfoMsg->Wrap( -1 );
fgSizer2->Add( m_PlatedPadsCountInfoMsg, 0, wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 );
staticTextNonPlatedPads = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("Non-plated pads:"), wxDefaultPosition, wxDefaultSize, 0 );
staticTextNonPlatedPads->Wrap( -1 );
fgSizer2->Add( staticTextNonPlatedPads, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
m_NotPlatedPadsCountInfoMsg = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_NotPlatedPadsCountInfoMsg->Wrap( -1 );
fgSizer2->Add( m_NotPlatedPadsCountInfoMsg, 0, wxALIGN_RIGHT|wxLEFT|wxRIGHT|wxTOP, 5 );
staticTextThroughVias = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("Through vias:"), wxDefaultPosition, wxDefaultSize, 0 );
staticTextThroughVias->Wrap( -1 );
fgSizer2->Add( staticTextThroughVias, 0, wxLEFT|wxRIGHT|wxTOP|wxALIGN_BOTTOM, 4 );
m_ThroughViasInfoMsg = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_ThroughViasInfoMsg->Wrap( -1 );
fgSizer2->Add( m_ThroughViasInfoMsg, 0, wxALIGN_RIGHT|wxLEFT|wxRIGHT|wxTOP, 5 );
staticTextMicroVias = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("Micro vias:"), wxDefaultPosition, wxDefaultSize, 0 );
staticTextMicroVias->Wrap( -1 );
fgSizer2->Add( staticTextMicroVias, 0, wxLEFT|wxRIGHT|wxTOP, 5 );
m_MicroViasInfoMsg = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_MicroViasInfoMsg->Wrap( -1 );
fgSizer2->Add( m_MicroViasInfoMsg, 0, wxALIGN_RIGHT|wxLEFT|wxRIGHT|wxTOP, 5 );
staticTextBuriedVias = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("Buried vias:"), wxDefaultPosition, wxDefaultSize, 0 );
staticTextBuriedVias->Wrap( -1 );
fgSizer2->Add( staticTextBuriedVias, 0, wxALL, 5 );
m_BuriedViasInfoMsg = new wxStaticText( sbSizerHoles->GetStaticBox(), wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_BuriedViasInfoMsg->Wrap( -1 );
fgSizer2->Add( m_BuriedViasInfoMsg, 0, wxALIGN_RIGHT|wxALL, 5 );
sbSizerHoles->Add( fgSizer2, 1, wxEXPAND, 5 );
bRightBoxSizer->Add( sbSizerHoles, 1, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 );
bmiddlerSizer->Add( bRightBoxSizer, 0, wxEXPAND|wxTOP, 5 );
bmiddlerSizer->Add( bRightCol, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
bMainSizer->Add( bmiddlerSizer, 0, wxEXPAND|wxTOP, 8 );
@ -210,7 +188,7 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
bMsgSizer->Add( m_messagesBox, 1, wxEXPAND, 5 );
bMainSizer->Add( bMsgSizer, 1, wxALL|wxEXPAND, 5 );
bMainSizer->Add( bMsgSizer, 1, wxALL|wxEXPAND, 10 );
m_buttonsSizer = new wxBoxSizer( wxHORIZONTAL );
@ -227,7 +205,7 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
m_buttonsSizer->Add( m_sdbSizer, 1, wxEXPAND, 5 );
bMainSizer->Add( m_buttonsSizer, 0, wxALL|wxEXPAND, 5 );
bMainSizer->Add( m_buttonsSizer, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
this->SetSizer( bMainSizer );
@ -241,8 +219,8 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
m_browseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnOutputDirectoryBrowseClicked ), NULL, this );
m_rbExcellon->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onFileFormatSelection ), NULL, this );
m_rbGerberX2->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onFileFormatSelection ), NULL, this );
m_Choice_Unit->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelDrillUnitsSelected ), NULL, this );
m_Choice_Zeros_Format->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelZerosFmtSelected ), NULL, this );
m_units->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelDrillUnitsSelected ), NULL, this );
m_zeros->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelZerosFmtSelected ), NULL, this );
m_buttonReport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenReportFile ), NULL, this );
}
@ -253,8 +231,8 @@ DIALOG_GENDRILL_BASE::~DIALOG_GENDRILL_BASE()
m_browseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnOutputDirectoryBrowseClicked ), NULL, this );
m_rbExcellon->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onFileFormatSelection ), NULL, this );
m_rbGerberX2->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onFileFormatSelection ), NULL, this );
m_Choice_Unit->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelDrillUnitsSelected ), NULL, this );
m_Choice_Zeros_Format->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelZerosFmtSelected ), NULL, this );
m_units->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelDrillUnitsSelected ), NULL, this );
m_zeros->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnSelZerosFmtSelected ), NULL, this );
m_buttonReport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenReportFile ), NULL, this );
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version 4.0.0-0-g0efcecf)
// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@ -26,15 +26,15 @@ class STD_BITMAP_BUTTON;
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/sizer.h>
#include <wx/statline.h>
#include <wx/radiobut.h>
#include <wx/checkbox.h>
#include <wx/radiobox.h>
#include <wx/choice.h>
#include <wx/statbox.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_GENDRILL_BASE
///////////////////////////////////////////////////////////////////////////////
@ -47,29 +47,26 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
wxStaticText* staticTextOutputDir;
wxTextCtrl* m_outputDirectoryName;
STD_BITMAP_BUTTON* m_browseButton;
wxStaticText* m_formatLabel;
wxStaticLine* m_staticline1;
wxRadioButton* m_rbExcellon;
wxCheckBox* m_Check_Mirror;
wxCheckBox* m_Check_Minimal;
wxCheckBox* m_Check_Merge_PTH_NPTH;
wxRadioBox* m_radioBoxOvalHoleMode;
wxCheckBox* m_altDrillMode;
wxRadioButton* m_rbGerberX2;
wxCheckBox* m_cbGenerateMap;
wxRadioBox* m_Choice_Drill_Map;
wxRadioBox* m_Choice_Drill_Offset;
wxRadioBox* m_Choice_Unit;
wxRadioBox* m_Choice_Zeros_Format;
wxStaticText* m_staticTextTitle;
wxChoice* m_choiceDrillMap;
wxStaticText* m_optionsLabel;
wxStaticLine* m_staticline2;
wxStaticText* m_originLabel;
wxChoice* m_origin;
wxStaticText* m_unitsLabel;
wxChoice* m_units;
wxStaticText* m_zerosLabel;
wxChoice* m_zeros;
wxStaticText* m_precisionLabel;
wxStaticText* m_staticTextPrecision;
wxStaticText* staticTextPlatedPads;
wxStaticText* m_PlatedPadsCountInfoMsg;
wxStaticText* staticTextNonPlatedPads;
wxStaticText* m_NotPlatedPadsCountInfoMsg;
wxStaticText* staticTextThroughVias;
wxStaticText* m_ThroughViasInfoMsg;
wxStaticText* staticTextMicroVias;
wxStaticText* m_MicroViasInfoMsg;
wxStaticText* staticTextBuriedVias;
wxStaticText* m_BuriedViasInfoMsg;
wxStaticBoxSizer* bMsgSizer;
wxTextCtrl* m_messagesBox;
wxBoxSizer* m_buttonsSizer;