all: fix Bug #1361233 (a template.pro copy file overwrite silently the current project file when a group info is not found, which is a bug, because this group could be just a new group, not yet used)
This commit is contained in:
parent
09870e9661
commit
858e222ea7
|
@ -203,6 +203,12 @@ void PROJECT::SetElem( ELEM_T aIndex, _ELEM* aElem )
|
||||||
|
|
||||||
static bool copy_pro_file_template( const SEARCH_STACK& aSearchS, const wxString& aDestination )
|
static bool copy_pro_file_template( const SEARCH_STACK& aSearchS, const wxString& aDestination )
|
||||||
{
|
{
|
||||||
|
if( aDestination.IsEmpty() )
|
||||||
|
{
|
||||||
|
DBG( printf( "%s: destination is empty.\n", __func__ );)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
wxString templateFile = wxT( "kicad." ) + ProjectFileExtension;
|
wxString templateFile = wxT( "kicad." ) + ProjectFileExtension;
|
||||||
|
|
||||||
wxString kicad_pro_template = aSearchS.FindValidPath( templateFile );
|
wxString kicad_pro_template = aSearchS.FindValidPath( templateFile );
|
||||||
|
@ -244,36 +250,16 @@ wxConfigBase* PROJECT::configCreate( const SEARCH_STACK& aSList,
|
||||||
|
|
||||||
if( wxFileName( cur_pro_fn ).IsFileReadable() )
|
if( wxFileName( cur_pro_fn ).IsFileReadable() )
|
||||||
{
|
{
|
||||||
|
// Note: currently, aGroupName is not used.
|
||||||
|
// Previoulsy, the version off aGroupName was tested, but it
|
||||||
|
// was useless, and if the version is important,
|
||||||
|
// this is not the right place here, because configCreate does know anything
|
||||||
|
// about info stored in this config file.
|
||||||
cfg = new wxFileConfig( wxEmptyString, wxEmptyString, cur_pro_fn, wxEmptyString );
|
cfg = new wxFileConfig( wxEmptyString, wxEmptyString, cur_pro_fn, wxEmptyString );
|
||||||
|
return cfg;
|
||||||
/* Check the application version against the version saved in the
|
|
||||||
* project file.
|
|
||||||
*
|
|
||||||
* TODO: Push the version test up the stack so that when one of the
|
|
||||||
* KiCad application version changes, the other applications
|
|
||||||
* settings do not get updated. Practically, this can go away.
|
|
||||||
* It isn't used anywhere as far as I know (WLS).
|
|
||||||
*/
|
|
||||||
|
|
||||||
cfg->SetPath( aGroupName );
|
|
||||||
|
|
||||||
int def_version = 0;
|
|
||||||
int version = cfg->Read( wxT( "version" ), def_version );
|
|
||||||
|
|
||||||
if( version > 0 )
|
|
||||||
{
|
|
||||||
cfg->SetPath( wxCONFIG_PATH_SEPARATOR );
|
|
||||||
return cfg;
|
|
||||||
}
|
|
||||||
else // Version incorrect
|
|
||||||
{
|
|
||||||
DBG( printf( "%s: project file version is zero, not using this old project file, going with template.", __func__ );)
|
|
||||||
delete cfg;
|
|
||||||
cfg = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// No suitable pro file was found, either does not exist, or is too old.
|
// No suitable pro file was found, either does not exist, or not readable.
|
||||||
// Use the template kicad.pro file. Find it by using caller's SEARCH_STACK.
|
// Use the template kicad.pro file. Find it by using caller's SEARCH_STACK.
|
||||||
copy_pro_file_template( aSList, cur_pro_fn );
|
copy_pro_file_template( aSList, cur_pro_fn );
|
||||||
|
|
||||||
|
|
|
@ -420,7 +420,7 @@ void KICAD_MANAGER_FRAME::OnOpenFileInTextEditor( wxCommandEvent& event )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
mask = _( "Text file (" ) + mask + wxT( ")|" ) + mask;
|
mask = _( "Text file (" ) + mask + wxT( ")|" ) + mask;
|
||||||
wxString default_dir = wxGetCwd();
|
wxString default_dir = wxFileName( Prj().GetProjectFullName() ).GetPathWithSep();
|
||||||
|
|
||||||
wxFileDialog dlg( this, _( "Load File to Edit" ), default_dir,
|
wxFileDialog dlg( this, _( "Load File to Edit" ), default_dir,
|
||||||
wxEmptyString, mask, wxFD_OPEN );
|
wxEmptyString, mask, wxFD_OPEN );
|
||||||
|
|
Loading…
Reference in New Issue