void DIALOG_EESCHEMA_CONFIG::OnAddOrInsertPath( wxCommandEvent& event ) { PROJECT& prj = Prj(); SEARCH_STACK& search = Prj().SchSearchS(); wxString path = prj.GetRString( PROJECT::SCH_LIB_PATH ); if( !path ) path = search.LastVisitedPath(); bool select = EDA_DirectorySelector( _( "Default Path for Libraries" ), path, wxDD_DEFAULT_STYLE, this, wxDefaultPosition ); if( !select ) return; if( !wxFileName::DirExists( path ) ) // Should not occurs return; // Add or insert path if not already in list if( m_listUserPaths->FindString( path ) == wxNOT_FOUND ) { int ipos = m_listUserPaths->GetCount(); if( event.GetId() == wxID_INSERT_PATH ) { if( ipos ) ipos--; int jj = m_listUserPaths->GetSelection(); if( jj >= 0 ) ipos = jj; } // Ask the user if this is a relative path int diag = wxMessageBox( _( "Use a relative path?" ), _( "Path type" ), wxYES_NO | wxICON_QUESTION, this ); if( diag == wxYES ) { // Make it relative wxFileName fn = path; fn.MakeRelativeTo( wxT(".") ); path = fn.GetPathWithSep() + fn.GetFullName(); } m_listUserPaths->Insert(path, ipos); m_LibPathChanged = true; search.AddPaths( path, ipos+1 ); // Display actual libraries paths: m_DefaultLibraryPathslistBox->Clear(); for( unsigned ii = 0; ii < search.GetCount(); ii++ ) { m_DefaultLibraryPathslistBox->Append( search[ii] ); } } else { DisplayError( this, _("Path already in use") ); } prj.SetRString( PROJECT::SCH_LIB_PATH, path ); }
void DIALOG_CVPCB_CONFIG::OnAddOrInsertPath( wxCommandEvent& event ) { wxString path = wxGetApp().ReturnLastVisitedLibraryPath(); bool select = EDA_DirectorySelector( _( "Default Path for Libraries" ), path, wxDD_DEFAULT_STYLE, this, wxDefaultPosition ); if( !select ) return; if( !wxFileName::DirExists( path ) ) // Should not occurs return; // Add or insert path if not already in list if( m_listUserPaths->FindString( path ) == wxNOT_FOUND ) { int ipos = m_listUserPaths->GetCount(); if( event.GetId() == ID_INSERT_PATH ) { if( ipos ) ipos--; int jj = m_listUserPaths->GetSelection(); if( jj >= 0 ) ipos = jj; } // Ask the user if this is a relative path int diag = wxMessageBox( _( "Use a relative path?" ), _( "Path type" ), wxYES_NO | wxICON_QUESTION, this ); if( diag == wxYES ) { // Make it relative wxFileName fn = path; fn.MakeRelativeTo( wxT( "." ) ); path = fn.GetPathWithSep() + fn.GetFullName(); } m_listUserPaths->Insert( path, ipos ); m_LibPathChanged = true; wxGetApp().InsertLibraryPath( path, ipos + 1 ); // Display actual libraries paths: wxPathList libpaths = wxGetApp().GetLibraryPathList(); m_DefaultLibraryPathslistBox->Clear(); for( unsigned ii = 0; ii < libpaths.GetCount(); ii++ ) { m_DefaultLibraryPathslistBox->Append( libpaths[ii] ); } } else { DisplayError( this, _( "Path already in use" ) ); } wxGetApp().SaveLastVisitedLibraryPath( path ); }