Pcbnew: Better dialog when starting pcbnew in a new project, when the .brd file does not exists

This commit is contained in:
jean-pierre charras 2010-05-30 11:46:37 +02:00
parent 79139b6599
commit 13ddd1b47f
3 changed files with 38 additions and 7 deletions

View File

@ -496,18 +496,19 @@ public:
void OnFileHistory( wxCommandEvent& event ); void OnFileHistory( wxCommandEvent& event );
void Files_io( wxCommandEvent& event ); void Files_io( wxCommandEvent& event );
/** /** Function LoadOnePcbFile
* Load a Kicad board (.brd) file. * Load a Kicad board (.brd) file.
* *
* @param aFileName - File name including path. If empty, a file dialog will * @param aFileName - File name including path. If empty, a file dialog will
* be displayed. * be displayed.
* @param aAppend - Append board file aFileName to the currently loaded file if true. * @param aAppend - Append board file aFileName to the currently loaded file if true.
* Default = false.
* @param aForceFileDialog - Display the file open dialog even if aFullFileName is * @param aForceFileDialog - Display the file open dialog even if aFullFileName is
* valid if true. * valid if true; Default = false.
* *
* @return False if file load fails or is cancelled by the user, otherwise true. * @return False if file load fails or is cancelled by the user, otherwise true.
*/ */
bool LoadOnePcbFile( const wxString& aFileName, bool aAppend, bool LoadOnePcbFile( const wxString& aFileName, bool aAppend = false,
bool aForceFileDialog = false ); bool aForceFileDialog = false );

View File

@ -27,7 +27,7 @@ void WinEDA_PcbFrame::OnFileHistory( wxCommandEvent& event )
{ {
DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW ); DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
::wxSetWorkingDirectory( ::wxPathOnly( fn ) ); ::wxSetWorkingDirectory( ::wxPathOnly( fn ) );
LoadOnePcbFile( fn, false ); LoadOnePcbFile( fn );
ReCreateAuxiliaryToolbar(); ReCreateAuxiliaryToolbar();
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
} }
@ -114,6 +114,18 @@ void WinEDA_PcbFrame::Files_io( wxCommandEvent& event )
} }
/** Function WinEDA_PcbFrame::LoadOnePcbFile
* Load a Kicad board (.brd) file.
*
* @param aFileName - File name including path. If empty, a file dialog will
* be displayed.
* @param aAppend - Append board file aFileName to the currently loaded file if true.
* Default = false.
* @param aForceFileDialog - Display the file open dialog even if aFullFileName is
* valid if true; Default = false.
*
* @return False if file load fails or is cancelled by the user, otherwise true.
*/
bool WinEDA_PcbFrame::LoadOnePcbFile( const wxString& aFileName, bool Append, bool WinEDA_PcbFrame::LoadOnePcbFile( const wxString& aFileName, bool Append,
bool aForceFileDialog ) bool aForceFileDialog )
{ {

View File

@ -154,13 +154,31 @@ Changing extension to .brd." ), GetChars( fn.GetFullPath() ) );
/* Load file specified in the command line. */ /* Load file specified in the command line. */
if( fn.IsOk() ) if( fn.IsOk() )
{ {
frame->LoadOnePcbFile( fn.GetFullPath(), FALSE ); /* Note the first time Pcbnew is called after creating a new project
* the board file may not exists
* So we load settings only
*/
if( fn.FileExists() )
frame->LoadOnePcbFile( fn.GetFullPath() );
else
{ // File does not exists: prepare an empty board
wxSetWorkingDirectory( fn.GetPath() );
frame->GetScreen()->m_FileName = fn.GetFullPath();
frame->GetScreen()->m_FileName.Replace( WIN_STRING_DIR_SEP, UNIX_STRING_DIR_SEP );
frame->SetTitle( frame->GetScreen()->m_FileName );
frame->SetLastProject( frame->GetScreen()->m_FileName );
frame->OnModify(); // Ready to save the new empty board
// update the layer names in the listbox wxString msg;
frame->ReCreateLayerBox( NULL ); msg.Printf( _( "File <%s> not existing\nThis is normal for a new project" ),
GetChars( frame->GetScreen()->m_FileName ) );
wxMessageBox( msg );
}
} }
frame->LoadProjectSettings( fn.GetFullPath() ); frame->LoadProjectSettings( fn.GetFullPath() );
// update the layer names in the listbox
frame->ReCreateLayerBox( NULL );
/* For an obscure reason the focus is lost after loading a board file /* For an obscure reason the focus is lost after loading a board file
* when starting (i.e. only at this point) * when starting (i.e. only at this point)