Commit 13ddd1b4 authored by jean-pierre charras's avatar jean-pierre charras
Browse files

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

parent 79139b65
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -496,18 +496,19 @@ public:
    void OnFileHistory( wxCommandEvent& event );
    void Files_io( wxCommandEvent& event );

    /**
    /** Function 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.
     *                            valid if true; Default = false.
     *
     *  @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 );


+13 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ void WinEDA_PcbFrame::OnFileHistory( wxCommandEvent& event )
    {
        DrawPanel->UnManageCursor( 0, wxCURSOR_ARROW );
        ::wxSetWorkingDirectory( ::wxPathOnly( fn ) );
        LoadOnePcbFile( fn, false );
        LoadOnePcbFile( fn );
        ReCreateAuxiliaryToolbar();
        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 aForceFileDialog )
{
+22 −4
Original line number Diff line number Diff line
@@ -154,13 +154,31 @@ Changing extension to .brd." ), GetChars( fn.GetFullPath() ) );
    /* Load file specified in the command line. */
    if( fn.IsOk() )
    {
        frame->LoadOnePcbFile( fn.GetFullPath(), FALSE );

        // update the layer names in the listbox
        frame->ReCreateLayerBox( NULL );
        /* 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

            wxString msg;
            msg.Printf( _( "File <%s> not existing\nThis is normal for a new project" ),
                GetChars( frame->GetScreen()->m_FileName ) );
            wxMessageBox( msg );
        }
    }

    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
     * when starting (i.e. only at this point)