Allow board saves without modifying project files

Without the project files, certain settings will not be saved by this
python call.  This defaults to false (current behavior) but setting the
`aSkipSettings` to true will revert to v5 behavior

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

(cherry picked from commit 8418fe12d8)
This commit is contained in:
Seth Hillbrand 2022-06-24 15:27:40 -07:00
parent 70b69af313
commit b72675ba92
2 changed files with 14 additions and 9 deletions

View File

@ -238,7 +238,7 @@ BOARD* CreateEmptyBoard()
}
bool SaveBoard( wxString& aFileName, BOARD* aBoard, IO_MGR::PCB_FILE_T aFormat )
bool SaveBoard( wxString& aFileName, BOARD* aBoard, IO_MGR::PCB_FILE_T aFormat, bool aSkipSettings )
{
aBoard->BuildConnectivity();
aBoard->SynchronizeNetsAndNetClasses();
@ -256,20 +256,23 @@ bool SaveBoard( wxString& aFileName, BOARD* aBoard, IO_MGR::PCB_FILE_T aFormat )
return false;
}
wxFileName pro = aFileName;
pro.SetExt( ProjectFileExtension );
pro.MakeAbsolute();
wxString projectPath = pro.GetFullPath();
if( !aSkipSettings )
{
wxFileName pro = aFileName;
pro.SetExt( ProjectFileExtension );
pro.MakeAbsolute();
wxString projectPath = pro.GetFullPath();
GetSettingsManager()->SaveProjectAs( pro.GetFullPath(), aBoard->GetProject() );
GetSettingsManager()->SaveProjectAs( pro.GetFullPath(), aBoard->GetProject() );
}
return true;
}
bool SaveBoard( wxString& aFileName, BOARD* aBoard )
bool SaveBoard( wxString& aFileName, BOARD* aBoard, bool aSkipSettings )
{
return SaveBoard( aFileName, aBoard, IO_MGR::KICAD_SEXP );
return SaveBoard( aFileName, aBoard, IO_MGR::KICAD_SEXP, aSkipSettings );
}

View File

@ -67,9 +67,11 @@ BOARD* CreateEmptyBoard();
* Boards can only be saved in KiCad native format.
* @param aFileName is the full path to save a copy to.
* @param aBoard is a pointer to a loaded BOARD to save.
* @param aSkipSettings if true, only save the board file. This will lose settings changes
* that are saved in the project file
* @return true if the save was completed.
*/
bool SaveBoard( wxString& aFileName, BOARD* aBoard );
bool SaveBoard( wxString& aFileName, BOARD* aBoard, bool aSkipSettings = false );
/**
* Get the nicknames of all of the footprint libraries configured in