Commit 297a54fa authored by Dick Hollenbeck's avatar Dick Hollenbeck

Make project templates work with KICAD_PTEMPLATES env var.

parent 3e4a79d0
...@@ -114,7 +114,7 @@ void TEMPLATE_WIDGET::OnMouse( wxMouseEvent& event ) ...@@ -114,7 +114,7 @@ void TEMPLATE_WIDGET::OnMouse( wxMouseEvent& event )
void DIALOG_TEMPLATE_SELECTOR::onNotebookResize(wxSizeEvent& event) void DIALOG_TEMPLATE_SELECTOR::onNotebookResize(wxSizeEvent& event)
{ {
for ( size_t i=0; i < m_notebook->GetPageCount(); i++ ) for( size_t i=0; i < m_notebook->GetPageCount(); i++ )
{ {
m_panels[i]->SetSize( m_notebook->GetSize().GetWidth() - 6, 140 ); m_panels[i]->SetSize( m_notebook->GetSize().GetWidth() - 6, 140 );
m_panels[i]->m_SizerBase->FitInside( m_panels[i] ); m_panels[i]->m_SizerBase->FitInside( m_panels[i] );
...@@ -190,24 +190,29 @@ void DIALOG_TEMPLATE_SELECTOR::AddPage( const wxString& aTitle, wxFileName& aPat ...@@ -190,24 +190,29 @@ void DIALOG_TEMPLATE_SELECTOR::AddPage( const wxString& aTitle, wxFileName& aPat
m_panels.push_back( p ); m_panels.push_back( p );
// Get a list of files under the template path to include as choices... // Get a list of files under the template path to include as choices...
wxArrayString files; wxArrayString files;
wxDir dir, sub; wxDir dir;
if ( dir.Open( aPath.GetPath() ) ) wxString path = aPath.GetFullPath(); // caller ensures this ends with file separator.
if( dir.Open( path ) )
{ {
wxString filename; wxDir sub_dir;
bool cont = dir.GetFirst( &filename, wxEmptyString, wxDIR_FILES | wxDIR_DIRS ); wxString sub_name;
bool cont = dir.GetFirst( &sub_name, wxEmptyString, wxDIR_DIRS );
while( cont ) while( cont )
{ {
if( sub.Open( aPath.GetPathWithSep() + filename ) ) wxString sub_full = path + sub_name;
if( sub_dir.Open( sub_full ) )
{ {
files.Add( filename ); files.Add( sub_name );
PROJECT_TEMPLATE* pt = new PROJECT_TEMPLATE( aPath.GetPathWithSep() + filename );
PROJECT_TEMPLATE* pt = new PROJECT_TEMPLATE( sub_full );
AddTemplate( m_notebook->GetPageCount() - 1, pt ); AddTemplate( m_notebook->GetPageCount() - 1, pt );
} }
cont = dir.GetNext( &filename ); cont = dir.GetNext( &sub_name );
} }
} }
} }
...@@ -78,11 +78,12 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxString aPrjFullFileName, boo ...@@ -78,11 +78,12 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxString aPrjFullFileName, boo
{ {
wxString kicadEnv; wxString kicadEnv;
wxGetEnv( wxT( "KICAD"), &kicadEnv ); wxGetEnv( wxT( "KICAD"), &kicadEnv );
templatePath = kicadEnv + SEP() + wxT("template")+SEP();
templatePath = kicadEnv + SEP() + wxT("template") + SEP();
} }
else else
{ {
wxFileName templatePath = wxPathOnly(wxStandardPaths::Get().GetExecutablePath()) + templatePath = wxPathOnly(wxStandardPaths::Get().GetExecutablePath()) +
SEP() + wxT( ".." ) + SEP() + wxT( "share" ) + SEP() + wxT( "template" ) + SEP(); SEP() + wxT( ".." ) + SEP() + wxT( "share" ) + SEP() + wxT( "template" ) + SEP();
} }
...@@ -97,13 +98,18 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxString aPrjFullFileName, boo ...@@ -97,13 +98,18 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxString aPrjFullFileName, boo
// Check to see if a custom template location is available and setup a new selection tab // Check to see if a custom template location is available and setup a new selection tab
// if there is // if there is
wxString envStr; wxString envStr;
wxGetEnv( wxT("KICAD_PTEMPLATES"), &envStr ); wxGetEnv( wxT( "KICAD_PTEMPLATES" ), &envStr );
wxFileName envPath = envStr;
if( envStr != wxEmptyString ) if( envStr )
{ {
wxChar sep = SEP();
if( !envStr.EndsWith( &sep ) )
envStr += sep;
wxFileName envPath = envStr; wxFileName envPath = envStr;
ps->AddPage( _("Portable Templates"), envPath );
ps->AddPage( _( "Portable Templates" ), envPath );
} }
// Show the project template selector dialog // Show the project template selector dialog
...@@ -236,7 +242,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event ) ...@@ -236,7 +242,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
if( !m_ProjectFileName.FileExists() && !filename.IsSameAs( nameless_prj ) ) if( !m_ProjectFileName.FileExists() && !filename.IsSameAs( nameless_prj ) )
{ {
wxString msg; wxString msg;
msg.Printf( _( "KiCad project file <%s> not found" ), msg.Printf( _( "KiCad project file <%s> not found" ),
GetChars( m_ProjectFileName.GetFullPath() ) ); GetChars( m_ProjectFileName.GetFullPath() ) );
DisplayError( this, msg ); DisplayError( this, msg );
...@@ -256,6 +262,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event ) ...@@ -256,6 +262,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
SetTitle( title ); SetTitle( title );
UpdateFileHistory( m_ProjectFileName.GetFullPath() ); UpdateFileHistory( m_ProjectFileName.GetFullPath() );
m_LeftWin->ReCreateTreePrj(); m_LeftWin->ReCreateTreePrj();
#ifdef KICAD_USE_FILES_WATCHER #ifdef KICAD_USE_FILES_WATCHER
// Rebuild the list of watched paths. // Rebuild the list of watched paths.
// however this is possible only when the main loop event handler is running, // however this is possible only when the main loop event handler is running,
...@@ -263,6 +270,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event ) ...@@ -263,6 +270,7 @@ void KICAD_MANAGER_FRAME::OnLoadProject( wxCommandEvent& event )
wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED, ID_INIT_WATCHED_PATHS ); wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED, ID_INIT_WATCHED_PATHS );
wxPostEvent( this, cmd); wxPostEvent( this, cmd);
#endif #endif
wxString msg; wxString msg;
msg.Format( _( "Working dir: <%s>\nProject: <%s>\n" ), msg.Format( _( "Working dir: <%s>\nProject: <%s>\n" ),
GetChars( m_ProjectFileName.GetPath() ), GetChars( m_ProjectFileName.GetPath() ),
......
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
wxStandardPaths::GetExecutableDir()/../share/template/ wxStandardPaths::GetExecutableDir()/../share/template/
wxStandardPaths::GetUserDataDir()/templates/ wxStandardPaths::GetUserDataDir()/templates/
wxGetEnv(wxT("KICAD_TEMPLATES")) wxGetEnv(wxT("KICAD_PTEMPLATES"))
wxGetEnv(wxT("KICAD"))/template/ wxGetEnv(wxT("KICAD"))/template/
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment