X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/110c50944f08b0e52313c57d4f10a5f1d0923227..ed0dd9c1f0e9a79b5110d59b903a5f1fd9ee6c42:/interface/wx/filename.h?ds=sidebyside diff --git a/interface/wx/filename.h b/interface/wx/filename.h index fcec353020..0e78b2d38f 100644 --- a/interface/wx/filename.h +++ b/interface/wx/filename.h @@ -28,6 +28,25 @@ enum wxPathFormat wxPATH_MAX //!< Not a valid value for specifying path format }; +/** + Different conventions for human readable sizes. + + @see wxFileName::GetHumanReadableSize(). + + @since 2.9.1 +*/ +enum wxSizeConvention +{ + /// 1024 bytes = 1KB. + wxSIZE_CONV_TRADITIONAL, + + /// 1024 bytes = 1KiB. + wxSIZE_CONV_IEC, + + /// 1000 bytes = 1KB. + wxSIZE_CONV_SI +}; + /** The kind of normalization to do with the file name: these values can be @@ -42,7 +61,7 @@ enum wxPathNormalize //! and in addition under Windows @c "%var%" is also. wxPATH_NORM_ENV_VARS = 0x0001, - wxPATH_NORM_DOTS = 0x0002, //!< Squeeze all @c ".." and @c "." and prepend the current working directory. + wxPATH_NORM_DOTS = 0x0002, //!< Squeeze all @c ".." and @c ".". wxPATH_NORM_TILDE = 0x0004, //!< Replace @c "~" and @c "~user" (Unix only). wxPATH_NORM_CASE = 0x0008, //!< If the platform is case insensitive, make lowercase the path. wxPATH_NORM_ABSOLUTE = 0x0010, //!< Make the path absolute. @@ -522,30 +541,41 @@ public: */ static wxString GetHomeDir(); + //@{ /** - Returns the size of the file in a human-readable form. - - If the size could not be retrieved the @c failmsg string - is returned. In case of success, the returned string is - a floating-point number with @c precision decimal digits - followed by the size unit (B, kB, MB, GB, TB: respectively - bytes, kilobytes, megabytes, gigabytes, terabytes). - */ - wxString GetHumanReadableSize(const wxString& failmsg = "Not available", - int precision = 1) const; - - /** - Returns the size of the given number of bytes in a human-readable form. - - If @a bytes is ::wxInvalidSize or zero, then @a nullsize is returned. - - In case of success, the returned string is a floating-point number with - @a precision decimal digits followed by the size unit (B, kB, MB, GB, - TB: respectively bytes, kilobytes, megabytes, gigabytes, terabytes). - */ - static wxString GetHumanReadableSize(const wxULongLong& bytes, - const wxString& nullsize = "Not available", - int precision = 1); + Returns the representation of the file size in a human-readable form. + + In the first version, the size of this file is used. In the second one, + the specified size @a bytes is used. + + If the file size could not be retrieved or @a bytes is ::wxInvalidSize + or zero, the @c failmsg string is returned. + + Otherwise the returned string is a floating-point number with @c + precision decimal digits followed by the abbreviation of the unit used. + By default the traditional, although incorrect, convention of using SI + units for multiples of 1024 is used, i.e. returned string will use + suffixes of B, KB, MB, GB, TB for bytes, kilobytes, megabytes, + gigabytes and terabytes respectively. With the IEC convention the names + of the units are changed to B, KiB, MiB, GiB and TiB fofr bytes, + kibibytes, mebibyes, gibibytes and tebibytes. Finally, with SI + convention the same B, KB, MB, GB and TB suffixes are used but in their + correct SI meaning, i.e. as multiples of 1000 and not 1024. + + Support for the different size conventions is new in wxWidgets 2.9.1, + in previous versions only the traditional convention was implemented. + */ + wxString + GetHumanReadableSize(const wxString& failmsg = _("Not available"), + int precision = 1, + wxSizeConvention conv = wxSIZE_CONV_TRADITIONAL) const; + + static wxString + GetHumanReadableSize(const wxULongLong& bytes, + const wxString& nullsize = _("Not available"), + int precision = 1, + wxSizeConvention conv = wxSIZE_CONV_TRADITIONAL); + //@} /** Return the long form of the path (returns identity on non-Windows platforms). @@ -819,6 +849,24 @@ public: static bool IsPathSeparator(wxChar ch, wxPathFormat format = wxPATH_NATIVE); + /** + Returns @true if the volume part of the path is a unique volume name. + + This function will always return @false if the path format is not + wxPATH_DOS. + + Unique volume names are Windows volume identifiers which remain the same + regardless of where the volume is actually mounted. Example of a path + using a volume name could be + @code + \\?\Volume{8089d7d7-d0ac-11db-9dd0-806d6172696f}\Program Files\setup.exe + @endcode + + @since 2.9.1 + */ + static bool IsMSWUniqueVolumeNamePath(const wxString& path, + wxPathFormat format = wxPATH_NATIVE); + /** Returns @true if this filename is not absolute. */ @@ -892,7 +940,7 @@ public: @return Returns @true if the directory was successfully created, @false otherwise. */ - bool Mkdir(int perm = wxS_DIR_DEFAULT, int flags = 0); + bool Mkdir(int perm = wxS_DIR_DEFAULT, int flags = 0) const; /** Creates a directory. @@ -1009,7 +1057,7 @@ public: @return Returns @true if the directory was successfully deleted, @false otherwise. */ - bool Rmdir(int flags = 0); + bool Rmdir(int flags = 0) const; /** Deletes the specified directory from the file system. @@ -1035,7 +1083,7 @@ public: /** Changes the current working directory. */ - bool SetCwd(); + bool SetCwd() const; /** Changes the current working directory. @@ -1074,13 +1122,23 @@ public: */ void SetName(const wxString& name); + /** + Sets the full path. + + The @a path argument includes both the path (and the volume, if + supported by @a format) and the name and extension. + + @see GetPath() + */ + void SetPath(const wxString& path, wxPathFormat format = wxPATH_NATIVE); + /** Sets the file creation and last access/modification times (any of the pointers may be @NULL). */ bool SetTimes(const wxDateTime* dtAccess, const wxDateTime* dtMod, - const wxDateTime* dtCreate); + const wxDateTime* dtCreate) const; /** Sets the volume specifier. @@ -1137,10 +1195,32 @@ public: wxString* path, wxPathFormat format = wxPATH_NATIVE); + + /** + Strip the file extension. + + This function does more than just removing everything after the last + period from the string, for example it will return the string ".vimrc" + unchanged because the part after the period is not an extension but the + file name in this case. You can use wxString::BeforeLast() to really + get just the part before the last period (but notice that that function + returns empty string if period is not present at all unlike this + function which returns the @a fullname unchanged in this case). + + @param fullname + File path including name and, optionally, extension. + + @return + File path without extension + + @since 2.9.0 + */ + static wxString StripExtension(const wxString& fullname); + /** Sets the access and modification times to the current moment. */ - bool Touch(); + bool Touch() const; /** Returns @true if the filenames are different. The string @e filenames