Clear selection before importing schematic.

Also moves some error messages to use consistent terminology.

Fixes https://gitlab.com/kicad/code/kicad/issues/8421
This commit is contained in:
Jeff Young 2021-06-08 15:52:49 +01:00
parent 9ebabb222c
commit ed0e0a00c0
2 changed files with 22 additions and 30 deletions

View File

@ -415,8 +415,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
}
catch( const IO_ERROR& ioe )
{
msg.Printf( _( "Error loading schematic file \"%s\"" ),
fullFileName);
msg.Printf( _( "Error loading schematic '%s'." ), fullFileName);
DisplayErrorMessage( this, msg, ioe.What() );
failedLoad = true;
@ -436,7 +435,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
CreateScreens();
m_toolManager->RunAction( ACTIONS::zoomFitScreen, true );
msg.Printf( _( "Failed to load \"%s\"" ), fullFileName );
msg.Printf( _( "Failed to load '%s'." ), fullFileName );
SetMsgPanel( wxEmptyString, msg );
return false;
@ -628,7 +627,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
{
m_infoBar->RemoveAllButtons();
m_infoBar->AddCloseButton();
m_infoBar->ShowMessage( _( "Schematic file is read only." ), wxICON_WARNING );
m_infoBar->ShowMessage( _( "Schematic is read only." ), wxICON_WARNING );
}
#ifdef PROFILE
@ -713,7 +712,7 @@ void SCH_EDIT_FRAME::OnImportProject( wxCommandEvent& aEvent )
wxString fileFilters;
wxString allWildcards;
for( auto& loader : loaders )
for( std::pair<const wxString, const SCH_IO_MGR::SCH_FILE_T>& loader : loaders )
{
if( !fileFilters.IsEmpty() )
fileFilters += wxChar( '|' );
@ -751,7 +750,7 @@ void SCH_EDIT_FRAME::OnImportProject( wxCommandEvent& aEvent )
SCH_IO_MGR::SCH_FILE_T pluginType = SCH_IO_MGR::SCH_FILE_T::SCH_FILE_UNKNOWN;
for( auto& loader : loaders )
for( std::pair<const wxString, const SCH_IO_MGR::SCH_FILE_T>& loader : loaders )
{
if( fn.GetExt().CmpNoCase( SCH_IO_MGR::GetFileExtension( loader.second ) ) == 0 )
{
@ -766,6 +765,8 @@ void SCH_EDIT_FRAME::OnImportProject( wxCommandEvent& aEvent )
return;
}
m_toolManager->GetTool<EE_SELECTION_TOOL>()->ClearSelection();
importFile( dlg.GetPath(), pluginType );
}
@ -801,9 +802,11 @@ bool SCH_EDIT_FRAME::SaveProject()
if( newFileName.GetExt().IsEmpty() )
newFileName.SetExt( KiCadSchematicFileExtension );
if( !newFileName.DirExists() && !newFileName.Mkdir() )
if( ( !newFileName.DirExists() && !newFileName.Mkdir() ) || !newFileName.IsDirWritable() )
{
msg.Printf( _( "Cannot create folder \"%s\"." ), newFileName.GetPath() );
msg.Printf( _( "Folder '%s' could not be created.\n\n"
"Make sure you have write permissions and try again." ),
newFileName.GetPath() );
wxMessageDialog dlgBadPath( this, msg, _( "Error" ),
wxOK | wxICON_EXCLAMATION | wxCENTER );
@ -812,18 +815,6 @@ bool SCH_EDIT_FRAME::SaveProject()
return false;
}
if( !newFileName.IsDirWritable() )
{
msg.Printf( _( "You do not have write permissions to folder \"%s\"." ),
newFileName.GetPath() );
wxMessageDialog dlgBadPerms( this, msg, _( "Error" ),
wxOK | wxICON_EXCLAMATION | wxCENTER );
dlgBadPerms.ShowModal();
return false;
}
Schematic().Root().SetFileName( newFileName.GetFullName() );
Schematic().RootScreen()->SetFileName( newFileName.GetFullPath() );
@ -864,12 +855,15 @@ bool SCH_EDIT_FRAME::SaveProject()
}
wxLogTrace( tracePathsAndFiles,
wxT( "Changing schematic file name path from '%s' to '%s'." ),
screen->GetFileName(), tmp.GetFullPath() );
wxT( "Moving schematic from '%s' to '%s'." ),
screen->GetFileName(),
tmp.GetFullPath() );
if( !tmp.DirExists() && !tmp.Mkdir() )
{
msg.Printf( _( "Cannot create folder \"%s\"." ), newFileName.GetPath() );
msg.Printf( _( "Folder '%s' could not be created.\n\n"
"Make sure you have write permissions and try again." ),
newFileName.GetPath() );
wxMessageDialog dlgBadFilePath( this, msg, _( "Error" ),
wxOK | wxICON_EXCLAMATION | wxCENTER );
@ -1109,8 +1103,7 @@ bool SCH_EDIT_FRAME::importFile( const wxString& aFileName, int aFileType )
if( !LockFile( aFileName ) )
{
wxString msg = wxString::Format( _( "Schematic file \"%s\" is already open." ),
aFileName );
wxString msg = wxString::Format( _( "Schematic '%s' is already open." ), aFileName );
DisplayError( this, msg );
return false;
}
@ -1182,11 +1175,10 @@ bool SCH_EDIT_FRAME::importFile( const wxString& aFileName, int aFileType )
CreateScreens();
m_toolManager->RunAction( ACTIONS::zoomFitScreen, true );
wxString msg;
msg.Printf( _( "Error loading schematic \"%s\".\n%s" ), aFileName, ioe.What() );
DisplayError( this, msg );
wxString msg = wxString::Format( _( "Error loading schematic '%s'." ), aFileName );
DisplayErrorMessage( this, msg, ioe.What() );
msg.Printf( _( "Failed to load \"%s\"" ), aFileName );
msg.Printf( _( "Failed to load '%s'." ), aFileName );
SetMsgPanel( wxEmptyString, msg );
return false;

View File

@ -161,7 +161,7 @@ bool SCH_EDIT_FRAME::LoadSheetFromFile( SCH_SHEET* aSheet, SCH_SHEET_PATH* aHier
msg.Printf( _( "Error occurred loading schematic file \"%s\"." ), fullFilename );
DisplayErrorMessage( this, msg, ioe.What() );
msg.Printf( _( "Failed to load schematic \"%s\"" ), fullFilename );
msg.Printf( _( "Failed to load '%s'." ), fullFilename );
SetMsgPanel( wxEmptyString, msg );
return false;