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  KICAD_T Type() override { return SEARCH_STACK_T; }
46 
47 #if defined(DEBUG)
48  void Show( const wxString& aPrefix ) const;
49 #endif
50 
71  const wxString& aFullFilename, const wxString& aBaseDir );
72 
73  wxString FindValidPath( const wxString& aFileName ) const
74  {
75 #if 1 // might not be needed
76 
77  if( wxFileName::FileExists( aFileName ) )
78  return aFileName;
79  else
80 #endif
81  return wxPathList::FindValidPath( aFileName );
82  }
83 
93  void AddPaths( const wxString& aPaths, int aIndex = -1 );
94 
101  void RemovePaths( const wxString& aPaths );
102 
110  static int Split( wxArrayString* aResult, const wxString& aPathString );
111 
112 #if 1 // this function is so poorly designed it deserves not to exist.
113 
124  const wxString LastVisitedPath( const wxString& aSubPathToSearch = wxEmptyString );
125 #endif
126 
127 };
128 
129 #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
KICAD_T
Enum KICAD_T is the set of class identification values, stored in EDA_ITEM::m_StructType.
Definition: typeinfo.h:78
KICAD_T Type() override
Definition: search_stack.h:45
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:67
wxString FindValidPath(const wxString &aFileName) const
Definition: search_stack.h:73
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...