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

Kicad: refinements in project_template.cpp.

Eeschema: schematic libraries in a sub path of standard libraries paths are now better handled.
parent fc6d7381
Loading
Loading
Loading
Loading
+24 −2
Original line number Original line Diff line number Diff line
@@ -314,6 +314,15 @@ void DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick( wxCommandEvent& event )


    wxFileName      fn;
    wxFileName      fn;


    // Build libs paths, to find later a relative path:
    wxArrayString paths;

    for( unsigned ll=0; ll < m_DefaultLibraryPathslistBox->GetCount(); ++ll )
        paths.Add( m_DefaultLibraryPathslistBox->GetString( ll ) );

    for( unsigned ll=0; ll < m_listUserPaths->GetCount(); ++ll )
        paths.Add( m_listUserPaths->GetString( ll ) );

    for( unsigned jj = 0; jj < filenames.GetCount(); jj++ )
    for( unsigned jj = 0; jj < filenames.GetCount(); jj++ )
    {
    {
        fn = filenames[jj];
        fn = filenames[jj];
@@ -321,10 +330,23 @@ void DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick( wxCommandEvent& event )
        if( jj == 0 )
        if( jj == 0 )
            prj.SetRString( PROJECT::SCH_LIB_PATH, fn.GetPath() );
            prj.SetRString( PROJECT::SCH_LIB_PATH, fn.GetPath() );


        // Remove extension:
        // Extension is not stored, so remove extension:
        fn.SetExt( wxEmptyString );
        fn.SetExt( wxEmptyString );


        libfilename = fn.GetName();
        // Try to use relative path:
        for( unsigned ll = 0; ll < paths.GetCount(); ll++ )
        {
            wxFileName relfn = fn;
            relfn.MakeRelativeTo( paths[ll] );

            if( relfn.GetPath()[0] != '.' )
            {
                fn = relfn;
                break;
            }
        }

        libfilename = fn.GetFullPath();


        // Add or insert new library name, if not already in list
        // Add or insert new library name, if not already in list
        if( m_ListLibr->FindString( libfilename, fn.IsCaseSensitive() ) == wxNOT_FOUND )
        if( m_ListLibr->FindString( libfilename, fn.IsCaseSensitive() ) == wxNOT_FOUND )
+16 −1
Original line number Original line Diff line number Diff line
@@ -121,17 +121,32 @@ wxBitmap* PROJECT_TEMPLATE::GetIcon()


bool PROJECT_TEMPLATE::CreateProject( wxFileName& aNewProjectPath )
bool PROJECT_TEMPLATE::CreateProject( wxFileName& aNewProjectPath )
{
{
    // CreateProject copy the files from template to the new project folder
    // and rename files which have the same name as the template .pro file
    bool result = true;
    bool result = true;


    std::vector<wxFileName> srcFiles = GetFileList();
    std::vector<wxFileName> srcFiles = GetFileList();


    // Find the template file name base. this is the name of the .pro templte file
    wxString basename;
    for( size_t i=0; i < srcFiles.size(); i++ )
    {
        if( srcFiles[i].GetExt() == wxT( "pro" ) )
        {
            basename = srcFiles[i].GetName();
            break;
        }
    }

    for( size_t i=0; i < srcFiles.size(); i++ )
    for( size_t i=0; i < srcFiles.size(); i++ )
    {
    {
        // Replace the template path
        // Replace the template path
        wxFileName destination = srcFiles[i];
        wxFileName destination = srcFiles[i];


        // Replace the template filename with the project filename for the new project creation
        // Replace the template filename with the project filename for the new project creation
        destination.SetName( aNewProjectPath.GetName() );
        wxString currname = destination.GetName();
        currname.Replace( basename, aNewProjectPath.GetName() );
        destination.SetName( currname );


        // Replace the template path with the project path for the new project creation
        // Replace the template path with the project path for the new project creation
        // but keep the sub directory name, if exists
        // but keep the sub directory name, if exists