Finish up work on PlaceFile settings persistence.

We were missing several flags, and using the Plot output directory
instead of saving our own.

Fixes https://gitlab.com/kicad/code/kicad/issues/12715

Fixes https://gitlab.com/kicad/code/kicad/issues/12714
This commit is contained in:
Jeff Young 2022-10-24 22:21:50 +01:00
parent 3cb6a80954
commit d6fca11419
3 changed files with 31 additions and 25 deletions

View File

@ -54,8 +54,7 @@ class DIALOG_GEN_FOOTPRINT_POSITION : public DIALOG_GEN_FOOTPRINT_POSITION_BASE
public:
DIALOG_GEN_FOOTPRINT_POSITION( PCB_EDIT_FRAME * aParent ):
DIALOG_GEN_FOOTPRINT_POSITION_BASE( aParent ),
m_parent( aParent ),
m_plotOpts( aParent->GetPlotSettings() )
m_parent( aParent )
{
m_messagesPanel->SetFileName( Prj().GetProjectPath() + wxT( "report.txt" ) );
m_reporter = &m_messagesPanel->Reporter();
@ -160,7 +159,6 @@ private:
private:
PCB_EDIT_FRAME* m_parent;
PCB_PLOT_PARAMS m_plotOpts;
REPORTER* m_reporter;
};
@ -175,7 +173,7 @@ void DIALOG_GEN_FOOTPRINT_POSITION::initDialog()
m_units = cfg->m_PlaceFile.units == 0 ? EDA_UNITS::INCHES : EDA_UNITS::MILLIMETRES;
// Output directory
m_outputDirectoryName->SetValue( m_plotOpts.GetOutputDirectory() );
m_outputDirectoryName->SetValue( cfg->m_PlaceFile.output_directory );
// Update Options
m_radioBoxUnits->SetSelection( cfg->m_PlaceFile.units );
@ -224,9 +222,16 @@ void DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked( wxCommandEve
void DIALOG_GEN_FOOTPRINT_POSITION::OnGenerate( wxCommandEvent& event )
{
PCBNEW_SETTINGS* cfg = m_parent->GetPcbNewSettings();
m_units = m_radioBoxUnits->GetSelection() == 0 ? EDA_UNITS::INCHES : EDA_UNITS::MILLIMETRES;
PCBNEW_SETTINGS* cfg = m_parent->GetPcbNewSettings();
wxString dirStr = m_outputDirectoryName->GetValue();
// Keep unix directory format convention in cfg files
dirStr.Replace( wxT( "\\" ), wxT( "/" ) );
cfg->m_PlaceFile.output_directory = dirStr;
cfg->m_PlaceFile.units = m_units == EDA_UNITS::INCHES ? 0 : 1;
cfg->m_PlaceFile.file_options = m_radioBoxFilesCount->GetSelection();
cfg->m_PlaceFile.file_format = m_rbFormat->GetSelection();
@ -236,15 +241,6 @@ void DIALOG_GEN_FOOTPRINT_POSITION::OnGenerate( wxCommandEvent& event )
cfg->m_PlaceFile.use_aux_origin = m_useDrillPlaceOrigin->GetValue();
cfg->m_PlaceFile.negate_xcoord = m_negateXcb->GetValue();
// Set output directory and replace backslashes with forward ones
// (Keep unix convention in cfg files)
wxString dirStr;
dirStr = m_outputDirectoryName->GetValue();
dirStr.Replace( wxT( "\\" ), wxT( "/" ) );
m_plotOpts.SetOutputDirectory( dirStr );
m_parent->SetPlotSettings( m_plotOpts );
if( m_rbFormat->GetSelection() == 2 )
CreateGerberFiles();
else
@ -269,7 +265,7 @@ bool DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles()
return m_parent->GetBoard()->ResolveTextVar( token, 0 );
};
wxString path = m_plotOpts.GetOutputDirectory();
wxString path = m_parent->GetPcbNewSettings()->m_PlaceFile.output_directory;
path = ExpandTextVars( path, &textResolver, nullptr, nullptr );
path = ExpandEnvVarSubstitutions( path, nullptr );
@ -377,7 +373,7 @@ bool DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles()
return m_parent->GetBoard()->ResolveTextVar( token, 0 );
};
wxString path = m_plotOpts.GetOutputDirectory();
wxString path = m_parent->GetPcbNewSettings()->m_PlaceFile.output_directory;
path = ExpandTextVars( path, &textResolver, nullptr, nullptr );
path = ExpandEnvVarSubstitutions( path, nullptr );

View File

@ -407,7 +407,10 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<bool>( "netlist.associate_by_ref_sch",
&m_NetlistDialog.associate_by_ref_sch, false ) );
m_params.emplace_back(new PARAM<int>( "place_file.units",
m_params.emplace_back( new PARAM<wxString>( "place_file.output_directory",
&m_PlaceFile.output_directory, wxEmptyString ) );
m_params.emplace_back( new PARAM<int>( "place_file.units",
&m_PlaceFile.units, 1 ) );
m_params.emplace_back( new PARAM<int>( "place_file.file_options",
@ -416,6 +419,12 @@ PCBNEW_SETTINGS::PCBNEW_SETTINGS()
m_params.emplace_back( new PARAM<int>( "place_file.file_format",
&m_PlaceFile.file_format, 0 ) );
m_params.emplace_back( new PARAM<bool>( "place_file.excludeTH",
&m_PlaceFile.exclude_TH, false ) );
m_params.emplace_back( new PARAM<bool>( "place_file.onlySMD",
&m_PlaceFile.only_SMD, false ) );
m_params.emplace_back( new PARAM<bool>( "place_file.include_board_edge",
&m_PlaceFile.include_board_edge, false ) );

View File

@ -232,14 +232,15 @@ public:
struct DIALOG_PLACE_FILE
{
int units;
int file_options;
int file_format;
bool include_board_edge;
bool exclude_TH;
bool only_SMD;
bool use_aux_origin;
bool negate_xcoord;
wxString output_directory;
int units;
int file_options;
int file_format;
bool include_board_edge;
bool exclude_TH;
bool only_SMD;
bool use_aux_origin;
bool negate_xcoord;
};
struct DIALOG_PLOT