7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-21 22:13:44 +00:00

CHANGED: Make drill dialog generate maps a checkbox option rather than explicit button

Wouldn't you want to always consistently generating both drill list and map rather than separately?

Fixes https://gitlab.com/kicad/code/kicad/-/issues/19400
This commit is contained in:
Marek Roszko 2024-12-28 18:17:57 -05:00
parent 1cf569b0be
commit f07e3e5b3b
7 changed files with 90 additions and 28 deletions

View File

@ -75,9 +75,8 @@ DIALOG_GENDRILL::DIALOG_GENDRILL( PCB_EDIT_FRAME* aPcbEditFrame, wxWindow* aPare
m_job = nullptr;
m_plotOpts = m_pcbEditFrame->GetPlotSettings();
SetupStandardButtons( { { wxID_OK, _( "Generate Drill File" ) },
{ wxID_APPLY, _( "Generate Map File" ) },
{ wxID_CANCEL, _( "Close" ) } } );
SetupStandardButtons( { { wxID_OK, _( "Generate" ) },
{ wxID_CANCEL, _( "Close" ) } } );
m_buttonsSizer->Layout();
@ -101,7 +100,6 @@ DIALOG_GENDRILL::DIALOG_GENDRILL( PCB_EDIT_FRAME* aPcbEditFrame, JOB_EXPORT_PCB_
bMainSizer->Remove( bMsgSizer );
m_messagesBox->Hide();
m_sdbSizerApply->Hide();
SetupStandardButtons( { { wxID_OK, _( "Save" ) }, { wxID_CANCEL, _( "Cancel" ) } } );
m_buttonsSizer->Layout();
@ -117,6 +115,7 @@ int DIALOG_GENDRILL::m_ZerosFormat = EXCELLON_WRITER::DECIMAL_FORMAT;
bool DIALOG_GENDRILL::m_MinimalHeader = false; // Only for Excellon format
bool DIALOG_GENDRILL::m_Mirror = false; // Only for Excellon format
bool DIALOG_GENDRILL::m_Merge_PTH_NPTH = false; // Only for Excellon format
bool DIALOG_GENDRILL::m_GenerateMap = false;
int DIALOG_GENDRILL::m_mapFileType = 4; // The last choice in m_Choice_Drill_Map
int DIALOG_GENDRILL::m_drillFileType = 0;
bool DIALOG_GENDRILL::m_UseRouteModeForOvalHoles = true; // Use G00 route mode to "drill" oval holes
@ -153,6 +152,8 @@ void DIALOG_GENDRILL::initDialog()
m_drillFileType = cfg->m_GenDrill.drill_file_type;
m_mapFileType = cfg->m_GenDrill.map_file_type;
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() )
@ -184,6 +185,7 @@ void DIALOG_GENDRILL::InitDisplayParams()
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_cbGenerateMap->SetValue( m_GenerateMap );
// Output directory
m_outputDirectoryName->SetValue( m_plotOpts.GetOutputDirectory() );
@ -309,6 +311,7 @@ void DIALOG_GENDRILL::UpdateConfig()
cfg->m_GenDrill.drill_file_type = m_drillFileType;
cfg->m_GenDrill.map_file_type = m_mapFileType;
cfg->m_GenDrill.zeros_format = m_ZerosFormat;
cfg->m_GenDrill.generate_map = m_GenerateMap;
}
@ -318,20 +321,11 @@ void DIALOG_GENDRILL::OnSelDrillUnitsSelected( wxCommandEvent& event )
}
void DIALOG_GENDRILL::OnGenMapFile( wxCommandEvent& event )
{
if( !m_job )
{
GenDrillAndMapFiles( false, true );
}
}
void DIALOG_GENDRILL::OnGenDrillFile( wxCommandEvent& event )
{
if( !m_job )
{
GenDrillAndMapFiles( true, false );
GenDrillAndMapFiles( true, m_cbGenerateMap->GetValue() );
}
else
{
@ -348,6 +342,7 @@ void DIALOG_GENDRILL::OnGenDrillFile( wxCommandEvent& event )
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_generateMap = m_cbGenerateMap->IsChecked();
Close();
}
}
@ -431,6 +426,7 @@ void DIALOG_GENDRILL::UpdateDrillParams()
m_Merge_PTH_NPTH = m_Check_Merge_PTH_NPTH->IsChecked();
m_ZerosFormat = m_Choice_Zeros_Format->GetSelection();
m_UseRouteModeForOvalHoles = m_radioBoxOvalHoleMode->GetSelection() == 0;
m_GenerateMap = m_cbGenerateMap->IsChecked();
if( m_Choice_Drill_Offset->GetSelection() == 0 )
m_DrillFileOffset = VECTOR2I( 0, 0 );

View File

@ -57,7 +57,6 @@ private:
void OnSelDrillUnitsSelected( wxCommandEvent& event ) override;
void OnSelZerosFmtSelected( wxCommandEvent& event ) override;
void OnGenDrillFile( wxCommandEvent& event ) override;
void OnGenMapFile( wxCommandEvent& event ) override;
void onFileFormatSelection( wxCommandEvent& event ) override;
// Called when closing the dialog: Update config.
@ -104,6 +103,7 @@ public:
static bool m_MinimalHeader;
static bool m_Mirror;
static bool m_Merge_PTH_NPTH;
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

View File

@ -80,6 +80,9 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
bMiddleSizer->Add( sbSizer6, 1, wxEXPAND|wxALL, 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 );
@ -217,8 +220,6 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
m_sdbSizer = new wxStdDialogButtonSizer();
m_sdbSizerOK = new wxButton( this, wxID_OK );
m_sdbSizer->AddButton( m_sdbSizerOK );
m_sdbSizerApply = new wxButton( this, wxID_APPLY );
m_sdbSizer->AddButton( m_sdbSizerApply );
m_sdbSizerCancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer->AddButton( m_sdbSizerCancel );
m_sdbSizer->Realize();
@ -243,7 +244,6 @@ DIALOG_GENDRILL_BASE::DIALOG_GENDRILL_BASE( wxWindow* parent, wxWindowID id, con
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_buttonReport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenReportFile ), NULL, this );
m_sdbSizerApply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenMapFile ), NULL, this );
m_sdbSizerCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onQuitDlg ), NULL, this );
m_sdbSizerOK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenDrillFile ), NULL, this );
}
@ -258,7 +258,6 @@ DIALOG_GENDRILL_BASE::~DIALOG_GENDRILL_BASE()
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_buttonReport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenReportFile ), NULL, this );
m_sdbSizerApply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenMapFile ), NULL, this );
m_sdbSizerCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::onQuitDlg ), NULL, this );
m_sdbSizerOK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_GENDRILL_BASE::OnGenDrillFile ), NULL, this );

View File

@ -282,25 +282,25 @@
<property name="border">8</property>
<property name="flag">wxEXPAND|wxTOP</property>
<property name="proportion">0</property>
<object class="wxBoxSizer" expanded="false">
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bmiddlerSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="false">
<object class="wxBoxSizer" expanded="true">
<property name="minimum_size"></property>
<property name="name">bMiddleSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="false">
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property>
<property name="proportion">1</property>
<object class="wxStaticBoxSizer" expanded="false">
<object class="wxStaticBoxSizer" expanded="true">
<property name="id">wxID_ANY</property>
<property name="label">Drill File Format</property>
<property name="minimum_size"></property>
@ -715,6 +715,71 @@
</object>
</object>
</object>
<object class="sizeritem" expanded="true">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxCheckBox" expanded="true">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer">0</property>
<property name="aui_name"></property>
<property name="aui_position">0</property>
<property name="aui_row">0</property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="checked">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="drag_accept_files">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Generate Map</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_cbGenerateMap</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
<object class="sizeritem" expanded="false">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
@ -1973,7 +2038,7 @@
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
<object class="wxStdDialogButtonSizer" expanded="true">
<property name="Apply">1</property>
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="ContextHelp">0</property>
<property name="Help">0</property>
@ -1984,7 +2049,6 @@
<property name="minimum_size"></property>
<property name="name">m_sdbSizer</property>
<property name="permission">protected</property>
<event name="OnApplyButtonClick">OnGenMapFile</event>
<event name="OnCancelButtonClick">onQuitDlg</event>
<event name="OnOKButtonClick">OnGenDrillFile</event>
</object>

View File

@ -52,6 +52,7 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
wxCheckBox* m_Check_Merge_PTH_NPTH;
wxRadioBox* m_radioBoxOvalHoleMode;
wxRadioButton* m_rbGerberX2;
wxCheckBox* m_cbGenerateMap;
wxRadioBox* m_Choice_Drill_Map;
wxRadioBox* m_Choice_Drill_Offset;
wxRadioBox* m_Choice_Unit;
@ -74,7 +75,6 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
wxButton* m_buttonReport;
wxStdDialogButtonSizer* m_sdbSizer;
wxButton* m_sdbSizerOK;
wxButton* m_sdbSizerApply;
wxButton* m_sdbSizerCancel;
// Virtual event handlers, override them in your derived class
@ -84,7 +84,6 @@ class DIALOG_GENDRILL_BASE : public DIALOG_SHIM
virtual void OnSelDrillUnitsSelected( wxCommandEvent& event ) { event.Skip(); }
virtual void OnSelZerosFmtSelected( wxCommandEvent& event ) { event.Skip(); }
virtual void OnGenReportFile( wxCommandEvent& event ) { event.Skip(); }
virtual void OnGenMapFile( wxCommandEvent& event ) { event.Skip(); }
virtual void onQuitDlg( wxCommandEvent& event ) { event.Skip(); }
virtual void OnGenDrillFile( wxCommandEvent& event ) { event.Skip(); }

View File

@ -345,6 +345,9 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<int>( "gen_drill.zeros_format",
&m_GenDrill.zeros_format, 0, 0, 3 ) );
m_params.emplace_back( new PARAM<bool>( "gen_drill.generate_map",
&m_GenDrill.generate_map, false ) );
m_params.emplace_back( new PARAM<int>( "export_2581.units",
&m_Export2581.units, 0 ) );

View File

@ -252,6 +252,7 @@ public:
int drill_file_type;
int map_file_type;
int zeros_format;
bool generate_map;
};
struct DIALOG_IMPORT_GRAPHICS