| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        dir.h
 
- // Purpose:     interface of wxDir and wxDirTraverser
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Possible return values of wxDirTraverser callback functions.
 
- */
 
- enum wxDirTraverseResult
 
- {
 
-     wxDIR_IGNORE = -1,  ///< Ignore this directory but continue with others.
 
-     wxDIR_STOP,         ///< Stop traversing.
 
-     wxDIR_CONTINUE      ///< Continue into this directory.
 
- };
 
- /**
 
-     @class wxDirTraverser
 
-     wxDirTraverser is an abstract interface which must be implemented by
 
-     objects passed to wxDir::Traverse() function.
 
-     Example of use (this works almost like wxDir::GetAllFiles()):
 
-     @code
 
-     class wxDirTraverserSimple : public wxDirTraverser
 
-     {
 
-     public:
 
-         wxDirTraverserSimple(wxArrayString& files) : m_files(files) { }
 
-         virtual wxDirTraverseResult OnFile(const wxString& filename)
 
-         {
 
-             m_files.Add(filename);
 
-             return wxDIR_CONTINUE;
 
-         }
 
-         virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dirname))
 
-         {
 
-             return wxDIR_CONTINUE;
 
-         }
 
-     private:
 
-         wxArrayString& m_files;
 
-     };
 
-     // get the names of all files in the array
 
-     wxArrayString files;
 
-     wxDirTraverserSimple traverser(files);
 
-     wxDir dir(dirname);
 
-     dir.Traverse(traverser);
 
-     @endcode
 
-     @library{wxbase}
 
-     @category{file}
 
- */
 
- class wxDirTraverser
 
- {
 
- public:
 
-     /**
 
-         This function is called for each directory. It may return ::wxDIR_STOP
 
-         to abort traversing completely, ::wxDIR_IGNORE to skip this directory
 
-         but continue with others or ::wxDIR_CONTINUE to enumerate all files and
 
-         subdirectories in this directory.
 
-         This is a pure virtual function and must be implemented in the derived
 
-         class.
 
-     */
 
-     virtual wxDirTraverseResult OnDir(const wxString& dirname) = 0;
 
-     /**
 
-         This function is called for each file. It may return ::wxDIR_STOP to
 
-         abort traversing (for example, if the file being searched is found) or
 
-         ::wxDIR_CONTINUE to proceed.
 
-         This is a pure virtual function and must be implemented in the derived
 
-         class.
 
-     */
 
-     virtual wxDirTraverseResult OnFile(const wxString& filename) = 0;
 
-     /**
 
-         This function is called for each directory which we failed to open for
 
-         enumerating. It may return ::wxDIR_STOP to abort traversing completely,
 
-         ::wxDIR_IGNORE to skip this directory but continue with others or
 
-         ::wxDIR_CONTINUE to retry opening this directory once again.
 
-         The base class version always returns ::wxDIR_IGNORE.
 
-     */
 
-     virtual wxDirTraverseResult OnOpenError(const wxString& openerrorname);
 
- };
 
- /**
 
-     These flags affect the behaviour of GetFirst/GetNext() and Traverse(),
 
-     determining what types are included in the list of items they produce.
 
- */
 
- enum wxDirFlags
 
- {
 
-     wxDIR_FILES     = 0x0001,   ///< Includes files.
 
-     wxDIR_DIRS      = 0x0002,   ///< Includes directories.
 
-     wxDIR_HIDDEN    = 0x0004,   ///< Includes hidden files.
 
-     wxDIR_DOTDOT    = 0x0008,   ///< Includes "." and "..".
 
-     /**
 
-         Don't follow symbolic links during the directory traversal.
 
-         This flag is ignored under systems not supporting symbolic links (i.e.
 
-         non-Unix ones).
 
-         Notice that this flag is @e not included in wxDIR_DEFAULT and so the
 
-         default behaviour of wxDir::Traverse() is to follow symbolic links,
 
-         even if they lead outside of the directory being traversed.
 
-         @since 2.9.5
 
-      */
 
-     wxDIR_NO_FOLLOW = 0x0010,
 
-     /**
 
-         Default directory traversal flags include both files and directories,
 
-         even hidden.
 
-         Notice that by default wxDIR_NO_FOLLOW is @e not included, meaning that
 
-         symbolic links are followed by default. If this is not desired, you
 
-         must pass that flag explicitly.
 
-      */
 
-     wxDIR_DEFAULT   = wxDIR_FILES | wxDIR_DIRS | wxDIR_HIDDEN
 
- };
 
- /**
 
-     @class wxDir
 
-     wxDir is a portable equivalent of Unix open/read/closedir functions which
 
-     allow enumerating of the files in a directory. wxDir allows to enumerate
 
-     files as well as directories.
 
-     wxDir also provides a flexible way to enumerate files recursively using
 
-     Traverse() or a simpler GetAllFiles() function.
 
-     Example of use:
 
-     @code
 
-     wxDir dir(wxGetCwd());
 
-     if ( !dir.IsOpened() )
 
-     {
 
-         // deal with the error here - wxDir would already log an error message
 
-         // explaining the exact reason of the failure
 
-         return;
 
-     }
 
-     puts("Enumerating object files in current directory:");
 
-     wxString filename;
 
-     bool cont = dir.GetFirst(&filename, filespec, flags);
 
-     while ( cont )
 
-     {
 
-         printf("%s\n", filename.c_str());
 
-         cont = dir.GetNext(&filename);
 
-     }
 
-     @endcode
 
-     @library{wxbase}
 
-     @category{file}
 
- */
 
- class wxDir
 
- {
 
- public:
 
-     /**
 
-         Default constructor, use Open() afterwards.
 
-     */
 
-     wxDir();
 
-     /**
 
-         Opens the directory for enumeration, use IsOpened() to test for errors.
 
-     */
 
-     wxDir(const wxString& dir);
 
-     /**
 
-         Destructor cleans up the associated resources by calling Close().
 
-         It is not virtual and so this class is not meant to be used
 
-         polymorphically.
 
-     */
 
-     ~wxDir();
 
-     /**
 
-         Close the directory.
 
-         The object can't be used after closing it, but Open() may be called
 
-         again to reopen it later.
 
-         @since 2.9.5
 
-     */
 
-     void Close();
 
-     /**
 
-         Test for existence of a directory with the given name.
 
-     */
 
-     static bool Exists(const wxString& dir);
 
-     /**
 
-         The function returns the path of the first file matching the given
 
-         @a filespec or an empty string if there are no files matching it.
 
-         The @a flags parameter may or may not include ::wxDIR_FILES, the
 
-         function always behaves as if it were specified. By default, @a flags
 
-         includes ::wxDIR_DIRS and so the function recurses into the
 
-         subdirectories but if this flag is not specified, the function
 
-         restricts the search only to the directory @a dirname itself.
 
-         See ::wxDirFlags for the list of the possible flags.
 
-         @see Traverse()
 
-     */
 
-     static wxString FindFirst(const wxString& dirname,
 
-                               const wxString& filespec,
 
-                               int flags = wxDIR_DEFAULT);
 
-     /**
 
-         The function appends the names of all the files under directory
 
-         @a dirname to the array @a files (note that its old content is
 
-         preserved). Only files matching the @a filespec are taken, with empty
 
-         spec matching all the files.
 
-         The @a flags parameter should always include ::wxDIR_FILES or the array
 
-         would be unchanged and should include ::wxDIR_DIRS flag to recurse into
 
-         subdirectories (both flags are included in the value by default).
 
-         See ::wxDirFlags for the list of the possible flags.
 
-         
 
-         @return Returns the total number of files found while traversing
 
-                 the directory @a dirname (i.e. the number of entries appended
 
-                 to the @a files array).
 
-         @see Traverse()
 
-     */
 
-     static size_t GetAllFiles(const wxString& dirname, wxArrayString* files,
 
-                               const wxString& filespec = wxEmptyString,
 
-                               int flags = wxDIR_DEFAULT);
 
-     /**
 
-         Start enumerating all files matching @a filespec (or all files if it is
 
-         empty) and @e flags, return @true on success.
 
-         See ::wxDirFlags for the list of the possible flags.
 
-     */
 
-     bool GetFirst(wxString* filename,
 
-                   const wxString& filespec = wxEmptyString,
 
-                   int flags = wxDIR_DEFAULT) const;
 
-     /**
 
-         Returns the name of the directory itself.
 
-         The returned string does not have the trailing path separator (slash or
 
-         backslash).
 
-         Notice that in spite of this the last character of the returned string
 
-         can still be the path separator if this directory is the root one.
 
-         Because of this, don't append @c wxFILE_SEP_PATH to the returned value
 
-         if you do need a slash-terminated directory name but use
 
-         GetNameWithSep() instead to avoid having duplicate consecutive slashes.
 
-     */
 
-     wxString GetName() const;
 
-     /**
 
-         Returns the name of the directory with the path separator appended.
 
-         The last character of the returned string is always @c wxFILE_SEP_PATH
 
-         unless the string is empty, indicating that this directory is invalid.
 
-         @see GetName()
 
-         @since 2.9.4
 
-      */
 
-     wxString GetNameWithSep() const;
 
-     /**
 
-         Continue enumerating files which satisfy the criteria specified by the
 
-         last call to GetFirst().
 
-     */
 
-     bool GetNext(wxString* filename) const;
 
-     /**
 
-         Returns the size (in bytes) of all files recursively found in @c dir or
 
-         @c wxInvalidSize in case of error.
 
-         In case it happens that while traversing folders a file's size cannot
 
-         be read, that file is added to the @a filesSkipped array, if not @NULL,
 
-         and then skipped. This usually happens with some special folders which
 
-         are locked by the operating system or by another process. Remember that
 
-         when the size of @a filesSkipped is not zero, then the returned value
 
-         is not 100% accurate and, if the skipped files were big, it could be
 
-         far from real size of the directory.
 
-         @see wxFileName::GetHumanReadableSize(), wxGetDiskSpace()
 
-     */
 
-     static wxULongLong GetTotalSize(const wxString& dir,
 
-                                     wxArrayString* filesSkipped = NULL);
 
-     /**
 
-         Returns @true if the directory contains any files matching the given
 
-         @a filespec. If @a filespec is empty, look for any files at all. In any
 
-         case, even hidden files are taken into account.
 
-     */
 
-     bool HasFiles(const wxString& filespec = wxEmptyString) const;
 
-     /**
 
-         Returns @true if the directory contains any subdirectories (if a non
 
-         empty @a filespec is given, only check for directories matching it).
 
-         The hidden subdirectories are taken into account as well.
 
-     */
 
-     bool HasSubDirs(const wxString& dirspec = wxEmptyString) const;
 
-     /**
 
-         Returns @true if the directory was successfully opened by a previous
 
-         call to Open().
 
-     */
 
-     bool IsOpened() const;
 
-     /**
 
-         Creates a directory.
 
-         
 
-         This is just an alias for wxFileName::Mkdir(); refer to that function
 
-         for more info.
 
-     */
 
-     static bool Make(const wxString &dir, int perm = wxS_DIR_DEFAULT,
 
-                      int flags = 0);
 
-     /**
 
-         Open the directory for enumerating, returns @true on success or @false
 
-         if an error occurred.
 
-     */
 
-     bool Open(const wxString& dir);
 
-     /**
 
-         Removes a directory.
 
-         
 
-         This is just an alias for wxFileName::Rmdir(); refer to that function
 
-         for more info.
 
-     */
 
-     static bool Remove(const wxString &dir, int flags = 0);
 
-     
 
-     /**
 
-         Enumerate all files and directories under the given directory.
 
-         If @a flags contains ::wxDIR_DIRS this enumeration is recursive, i.e.
 
-         all the subdirectories of the given one and the files inside them will
 
-         be traversed. Otherwise only the files in this directory itself are.
 
-         If @a flags doesn't contain ::wxDIR_FILES then only subdirectories are
 
-         examined but not normal files. It doesn't make sense to not specify
 
-         either ::wxDIR_DIRS or ::wxDIR_FILES and usually both of them should be
 
-         specified, as is the case by default.
 
-         For each directory found, @ref wxDirTraverser::OnDir() "sink.OnDir()"
 
-         is called and @ref wxDirTraverser::OnFile() "sink.OnFile()" is called
 
-         for every file. Depending on the return value, the enumeration may
 
-         continue or stop. If entering a subdirectory fails, @ref
 
-         wxDirTraverser::OnOpenError() "sink.OnOpenError()" is called.
 
-         The function returns the total number of files found or @c "(size_t)-1"
 
-         on error.
 
-         See ::wxDirFlags for the full list of the possible flags.
 
-         @see GetAllFiles()
 
-     */
 
-     size_t Traverse(wxDirTraverser& sink,
 
-                     const wxString& filespec = wxEmptyString,
 
-                     int flags = wxDIR_DEFAULT) const;
 
- };
 
 
  |