X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..91641d0443ae5ce3cb0d83f43aebc845af031318:/include/wx/filename.h diff --git a/include/wx/filename.h b/include/wx/filename.h index 547d080fc7..801529327d 100644 --- a/include/wx/filename.h +++ b/include/wx/filename.h @@ -12,11 +12,6 @@ #ifndef _WX_FILENAME_H_ #define _WX_FILENAME_H_ -#ifndef WX_PRECOMP - #include "wx/string.h" - #include "wx/arrstr.h" -#endif - /* TODO: @@ -24,15 +19,14 @@ 2. more file operations: a) chmod() b) [acm]time() - get and set - c) file size - d) file permissions with readable accessors for most common bits - such as IsReadable() &c - e) rename()? + c) rename()? 3. SameFileAs() function to compare inodes under Unix */ +#include "wx/arrstr.h" #include "wx/filefn.h" #include "wx/datetime.h" +#include "wx/intl.h" #if wxUSE_FILE class WXDLLIMPEXP_BASE wxFile; @@ -86,6 +80,11 @@ enum wxPATH_MKDIR_FULL = 0x0001 // create directories recursively }; +// error code of wxFileName::GetSize() +extern wxULongLong wxInvalidSize; + + + // ---------------------------------------------------------------------------- // wxFileName: encapsulates a file path // ---------------------------------------------------------------------------- @@ -193,7 +192,28 @@ public: bool DirExists() const; static bool DirExists( const wxString &dir ); - // VZ: also need: IsDirWritable(), IsFileExecutable() &c (TODO) + // checks on most common flags for files/directories; + // more platform-specific features (like e.g. Unix permissions) are not + // available in wxFileName + + bool IsDirWritable() const { return wxIsWritable(GetPath()); } + static bool IsDirWritable(const wxString &path) { return wxDirExists(path) && wxIsWritable(path); } + + bool IsDirReadable() const { return wxIsReadable(GetPath()); } + static bool IsDirReadable(const wxString &path) { return wxDirExists(path) && wxIsReadable(path); } + + // NOTE: IsDirExecutable() is not present because the meaning of "executable" + // directory is very platform-dependent and also not so useful + + bool IsFileWritable() const { return wxIsWritable(GetFullPath()); } + static bool IsFileWritable(const wxString &path) { return wxFileExists(path) && wxIsWritable(path); } + + bool IsFileReadable() const { return wxIsReadable(GetFullPath()); } + static bool IsFileReadable(const wxString &path) { return wxFileExists(path) && wxIsReadable(path); } + + bool IsFileExecutable() const { return wxIsExecutable(GetFullPath()); } + static bool IsFileExecutable(const wxString &path) { return wxFileExists(path) && wxIsExecutable(path); } + // time functions #if wxUSE_DATETIME @@ -439,6 +459,20 @@ public: wxString *path, wxPathFormat format = wxPATH_NATIVE); + // Filesize + + // returns the size of the given filename + wxULongLong GetSize() const; + static wxULongLong GetSize(const wxString &file); + + // returns the size in a human readable form + wxString GetHumanReadableSize(const wxString &nullsize = wxGetTranslation(_T("Not available")), + int precision = 1) const; + static wxString GetHumanReadableSize(const wxULongLong &sz, + const wxString &nullsize = wxGetTranslation(_T("Not available")), + int precision = 1); + + // deprecated methods, don't use any more // -------------------------------------- @@ -447,7 +481,7 @@ public: { return GetPath(withSep ? wxPATH_GET_SEPARATOR : 0, format); } #endif wxString GetPathWithSep(wxPathFormat format = wxPATH_NATIVE ) const - { return GetPath(wxPATH_GET_SEPARATOR, format); } + { return GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR, format); } private: // check whether this dir is valid for Append/Prepend/InsertDir()