Prevent Pcbnew from opening the same file twice.

This commit is contained in:
Jacobo Aragunde Perez 2013-01-04 18:47:59 +01:00 committed by jean-pierre charras
parent f914cd0dec
commit 3821472ad8
2 changed files with 25 additions and 12 deletions

View File

@ -241,7 +241,14 @@ the changes?" ) ) )
fileName.SetExt( pi->GetFileExtension() ); fileName.SetExt( pi->GetFileExtension() );
if( !aAppend ) if( !aAppend )
{
if( !wxGetApp().LockFile( fileName.GetFullPath() ) )
{
DisplayError( this, _( "This file is already open." ) );
return false;
}
Clear_Pcb( false ); // pass false since we prompted above for a modified board Clear_Pcb( false ); // pass false since we prompted above for a modified board
}
CheckForAutoSaveFile( fileName, fileName.GetExt() ); CheckForAutoSaveFile( fileName, fileName.GetExt() );

View File

@ -117,16 +117,6 @@ bool EDA_APP::OnInit()
InitEDA_Appl( wxT( "Pcbnew" ), APP_PCBNEW_T ); InitEDA_Appl( wxT( "Pcbnew" ), APP_PCBNEW_T );
if( m_Checker && m_Checker->IsAnotherRunning() )
{
if( !IsOK( NULL, _( "Pcbnew is already running, Continue?" ) ) )
return false;
}
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings( reopenLastUsedDirectory );
if( argc > 1 ) if( argc > 1 )
{ {
fn = argv[1]; fn = argv[1];
@ -140,10 +130,26 @@ Changing extension to .%s." ), GetChars( fn.GetFullPath() ),
wxMessageBox( msg ); wxMessageBox( msg );
} }
if( fn.IsOk() && fn.DirExists() ) if( !wxGetApp().LockFile( fn.GetFullPath() ) )
wxSetWorkingDirectory( fn.GetPath() ); {
DisplayError( NULL, _( "This file is already open." ) );
return false;
}
} }
if( m_Checker && m_Checker->IsAnotherRunning() )
{
if( !IsOK( NULL, _( "Pcbnew is already running, Continue?" ) ) )
return false;
}
// read current setup and reopen last directory if no filename to open in command line
bool reopenLastUsedDirectory = argc == 1;
GetSettings( reopenLastUsedDirectory );
if( fn.IsOk() && fn.DirExists() )
wxSetWorkingDirectory( fn.GetPath() );
g_DrawBgColor = BLACK; g_DrawBgColor = BLACK;
/* Must be called before creating the main frame in order to /* Must be called before creating the main frame in order to