KiCad PCB EDA Suite
search_stack.h
Go to the documentation of this file.
1 /*
2  * This program source code file is part of KiCad, a free EDA CAD application.
3  *
4  * Copyright (C) 2014 CERN
5  * Copyright (C) 1992-2014 KiCad Developers, see CHANGELOG.TXT for contributors.
6  * @author Maciej Suminski <maciej.suminski@cern.ch>
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, you may find one here:
20  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21  * or you may search the http://www.gnu.org website for the version 2 license,
22  * or you may write to the Free Software Foundation, Inc.,
23  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24  */
25 
26 #ifndef SEARCH_STACK_H_
27 #define SEARCH_STACK_H_
28 
29 #include <wx/filefn.h>
30 #include <wx/filename.h>
31 #include <project.h>
32 
33 
41 class SEARCH_STACK : public wxPathList, public PROJECT::_ELEM
42 {
43 public:
44 
45 #if defined(DEBUG)
46  void Show( const wxString& aPrefix ) const;
47 #endif
48 
69  const wxString& aFullFilename, const wxString& aBaseDir );
70 
71  wxString FindValidPath( const wxString& aFileName ) const
72  {
73 #if 1 // might not be needed
74 
75  if( wxFileName::FileExists( aFileName ) )
76  return aFileName;
77  else
78 #endif
79  return wxPathList::FindValidPath( aFileName );
80  }
81 
91  void AddPaths( const wxString& aPaths, int aIndex = -1 );
92 
99  void RemovePaths( const wxString& aPaths );
100 
108  static int Split( wxArrayString* aResult, const wxString aPathString );
109 
110 #if 1 // this function is so poorly designed it deserves not to exist.
111 
122  const wxString LastVisitedPath( const wxString& aSubPathToSearch = wxEmptyString );
123 #endif
124 
125 };
126 
127 #endif // SEARCH_STACK_H_
void RemovePaths(const wxString &aPaths)
Function RemovePaths removes the given path(s) from the library path list.
Class SEARCH_STACK looks for files in a number of places.
Definition: search_stack.h:41
static int Split(wxArrayString *aResult, const wxString aPathString)
Function Split separates aPathString into individual paths.
const wxString LastVisitedPath(const wxString &aSubPathToSearch=wxEmptyString)
Function LastVisitedPath is a quirky function inherited from old code that seems to serve particular ...
A PROJECT can hold stuff it knows nothing about, in the form of _ELEM derivatives.
Definition: project.h:62
wxString FindValidPath(const wxString &aFileName) const
Definition: search_stack.h:71
void AddPaths(const wxString &aPaths, int aIndex=-1)
Function AddPaths insert or append path(s)
wxString FilenameWithRelativePathInSearchList(const wxString &aFullFilename, const wxString &aBaseDir)
Function FilenameWithRelativePathInSearchList returns the shortest possible path which can be use lat...