| 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 2 | %% Name: dirtrav.tex |
| 3 | %% Purpose: wxDirTraverser documentation |
| 4 | %% Author: Vadim Zeitlin |
| 5 | %% Modified by: |
| 6 | %% Created: 14.01.02 (extracted from dir.tex) |
| 7 | %% RCS-ID: $Id$ |
| 8 | %% Copyright: (c) Vadim Zeitlin |
| 9 | %% License: wxWindows license |
| 10 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
| 11 | |
| 12 | \section{\class{wxDirTraverser}}\label{wxdirtraverser} |
| 13 | |
| 14 | wxDirTraverser is an abstract interface which must be implemented by objects |
| 15 | passed to \helpref{Traverse}{wxdirtraverse} function. |
| 16 | |
| 17 | Example of use (this works almost like \helpref{GetAllFiles}{wxdirgetallfiles}): |
| 18 | |
| 19 | \begin{verbatim} |
| 20 | class wxDirTraverserSimple : public wxDirTraverser |
| 21 | { |
| 22 | public: |
| 23 | wxDirTraverserSimple(wxArrayString& files) : m_files(files) { } |
| 24 | |
| 25 | virtual wxDirTraverseResult OnFile(const wxString& filename) |
| 26 | { |
| 27 | m_files.Add(filename); |
| 28 | return wxDIR_CONTINUE; |
| 29 | } |
| 30 | |
| 31 | virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dirname)) |
| 32 | { |
| 33 | return wxDIR_CONTINUE; |
| 34 | } |
| 35 | |
| 36 | private: |
| 37 | wxArrayString& m_files; |
| 38 | }; |
| 39 | |
| 40 | // get the names of all files in the array |
| 41 | wxArrayString files; |
| 42 | wxDirTraverserSimple traverser(files); |
| 43 | |
| 44 | wxDir dir(dirname); |
| 45 | dir.Traverse(traverser); |
| 46 | \end{verbatim} |
| 47 | |
| 48 | \wxheading{Derived from} |
| 49 | |
| 50 | No base class |
| 51 | |
| 52 | \wxheading{Constants} |
| 53 | |
| 54 | The elements of {\tt wxDirTraverseResult} are the possible return values of the |
| 55 | callback functions: |
| 56 | |
| 57 | {\small |
| 58 | \begin{verbatim} |
| 59 | enum wxDirTraverseResult |
| 60 | { |
| 61 | wxDIR_IGNORE = -1, // ignore this directory but continue with others |
| 62 | wxDIR_STOP, // stop traversing |
| 63 | wxDIR_CONTINUE // continue into this directory |
| 64 | }; |
| 65 | \end{verbatim} |
| 66 | } |
| 67 | |
| 68 | \wxheading{Include files} |
| 69 | |
| 70 | <wx/dir.h> |
| 71 | |
| 72 | \latexignore{\rtfignore{\wxheading{Members}}} |
| 73 | |
| 74 | \membersection{wxDirTraverser::OnDir}\label{wxdirtraverserondir} |
| 75 | |
| 76 | \func{virtual wxDirTraverseResult}{OnDir}{\param{const wxString\& }{dirname}} |
| 77 | |
| 78 | This function is called for each directory. It may return {\tt wxSIR\_STOP} |
| 79 | to abort traversing completely, {\tt wxDIR\_IGNORE} to skip this directory but |
| 80 | continue with others or {\tt wxDIR\_CONTINUE} to enumerate all files and |
| 81 | subdirectories in this directory. |
| 82 | |
| 83 | This is a pure virtual function and must be implemented in the derived class. |
| 84 | |
| 85 | \membersection{wxDirTraverser::OnFile}\label{wxdirtraverseronfile} |
| 86 | |
| 87 | \func{virtual wxDirTraverseResult}{OnFile}{\param{const wxString\& }{filename}} |
| 88 | |
| 89 | This function is called for each file. It may return {\tt wxDIR\_STOP} to abort |
| 90 | traversing (for example, if the file being searched is found) or |
| 91 | {\tt wxDIR\_CONTINUE} to proceed. |
| 92 | |
| 93 | This is a pure virtual function and must be implemented in the derived class. |
| 94 | |
| 95 | \membersection{wxOpenErrorTraverser::OnOpenError}\label{wxopenerrortraverseronopenerror} |
| 96 | |
| 97 | \func{virtual wxOpenErrorTraverseResult}{OnOpenError}{\param{const wxString\& }{openerrorname}} |
| 98 | |
| 99 | This function is called for each directory which we failed to open for |
| 100 | enumerating. It may return {\tt wxSIR\_STOP} to abort traversing completely, |
| 101 | {\tt wxDIR\_IGNORE} to skip this directory but continue with others or |
| 102 | {\tt wxDIR\_CONTINUE} to retry opening this directory once again. |
| 103 | |
| 104 | The base class version always returns {\tt wxDIR\_IGNORE}. |
| 105 | |
| 106 | |