Kicad: refinements in project_template.cpp.
Eeschema: schematic libraries in a sub path of standard libraries paths are now better handled.
This commit is contained in:
parent
fc6d73813e
commit
da4055ae88
|
@ -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 )
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue