X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eadd3970f2df3e53a73212e62c6e481b22080e51..5b88a837ba75928cd3835a6b97ae2bf5ad983a6e:/interface/wx/filename.h?ds=inline diff --git a/interface/wx/filename.h b/interface/wx/filename.h index a9150f9a27..72bf9273e8 100644 --- a/interface/wx/filename.h +++ b/interface/wx/filename.h @@ -36,7 +36,12 @@ enum wxPathFormat */ enum wxPathNormalize { - wxPATH_NORM_ENV_VARS = 0x0001, //!< Replace environment variables with their values. + //! Replace environment variables with their values. + //! wxFileName understands both Unix and Windows (but only under Windows) environment + //! variables expansion: i.e. @c "$var", @c "$(var)" and @c "${var}" are always understood + //! 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_TILDE = 0x0004, //!< Replace @c "~" and @c "~user" (Unix only). wxPATH_NORM_CASE = 0x0008, //!< If the platform is case insensitive, make lowercase the path. @@ -48,6 +53,24 @@ enum wxPathNormalize wxPATH_NORM_ALL = 0x00ff & ~wxPATH_NORM_CASE }; +/** + Flags for wxFileName::Rmdir(). + */ +enum +{ + /// Delete the specified directory and its subdirectories if they are empty. + wxPATH_RMDIR_FULL = 1, + + /** + Delete the specified directory and all the files and subdirectories in it + recursively. + + This flag is obviously @b dangerous and should be used with care and + after asking the user for confirmation. + */ + wxPATH_RMDIR_RECURSIVE = 2 +}; + /** The return value of wxFileName::GetSize() in case of error. */ @@ -325,7 +348,7 @@ public: @see GetCwd() */ - static void AssignCwd(const wxString& volume = wxEmptyString); + void AssignCwd(const wxString& volume = wxEmptyString); /** Sets this file name object to the given directory name. @@ -379,6 +402,7 @@ public: */ void ClearExt(); + //@{ /** Returns a temporary file name starting with the given @e prefix. If the @a prefix is an absolute path, the temporary file is created in this @@ -403,6 +427,9 @@ public: */ static wxString CreateTempFileName(const wxString& prefix, wxFile* fileTemp = NULL); + static wxString CreateTempFileName(const wxString& prefix, + wxFFile* fileTemp = NULL); + //@} /** Returns @true if the directory with this name exists. @@ -612,7 +639,7 @@ public: not be read (because e.g. the file is locked by another process) the returned value is ::wxInvalidSize. */ - const static wxULongLong GetSize(const wxString& filename); + static wxULongLong GetSize(const wxString& filename); /** Returns the directory used for temporary files. @@ -924,15 +951,80 @@ public: */ void RemoveLastDir(); + /** + If the path contains the value of the environment variable named @a envname + then this function replaces it with the string obtained from + wxString::Format(replacementFmtString, value_of_envname_variable). + + This function is useful to make the path shorter or to make it dependent + from a certain environment variable. + Normalize() with @c wxPATH_NORM_ENV_VARS can perform the opposite of this + function (depending on the value of @a replacementFmtString). + + The name and extension of this filename are not modified. + + Example: + @code + wxFileName fn("/usr/openwin/lib/someFile"); + fn.ReplaceEnvVariable("OPENWINHOME"); + // now fn.GetFullPath() == "$OPENWINHOME/lib/someFile" + @endcode + + @since 2.9.0 + + @return @true if the operation was successful (which doesn't mean + that something was actually replaced, just that ::wxGetEnv + didn't fail). + */ + bool ReplaceEnvVariable(const wxString& envname, + const wxString& replacementFmtString = "$%s", + wxPathFormat format = wxPATH_NATIVE); + + /** + Replaces, if present in the path, the home directory for the given user + (see ::wxGetHomeDir) with a tilde (~). + + Normalize() with @c wxPATH_NORM_TILDE performs the opposite of this + function. + + The name and extension of this filename are not modified. + + @since 2.9.0 + + @return @true if the operation was successful (which doesn't mean + that something was actually replaced, just that ::wxGetHomeDir + didn't fail). + */ + bool ReplaceHomeDir(wxPathFormat format = wxPATH_NATIVE); + + /** Deletes the specified directory from the file system. + + @param flags + Can contain one of wxPATH_RMDIR_FULL or wxPATH_RMDIR_RECURSIVE. By + default contains neither so the directory will not be removed + unless it is empty. + + @return Returns @true if the directory was successfully deleted, @false + otherwise. */ - bool Rmdir(); + bool Rmdir(int flags = 0); /** Deletes the specified directory from the file system. + + @param dir + The directory to delete + @param flags + Can contain one of wxPATH_RMDIR_FULL or wxPATH_RMDIR_RECURSIVE. By + default contains neither so the directory will not be removed + unless it is empty. + + @return Returns @true if the directory was successfully deleted, @false + otherwise. */ - static bool Rmdir(const wxString& dir); + static bool Rmdir(const wxString& dir, int flags = 0); /** Compares the filename using the rules of this platform. @@ -1014,18 +1106,19 @@ public: trailing dot, but empty. If you need to cope with such cases, you should use @a hasExt instead of relying on testing whether @a ext is empty or not. */ - static void SplitPath(const wxString& fullpath, wxString* volume, + static void SplitPath(const wxString& fullpath, + wxString* volume, wxString* path, wxString* name, wxString* ext, - bool hasExt = NULL, + bool* hasExt = NULL, wxPathFormat format = wxPATH_NATIVE); static void SplitPath(const wxString& fullpath, wxString* volume, wxString* path, wxString* name, wxString* ext, - wxPathFormat format = wxPATH_NATIVE); + wxPathFormat format); static void SplitPath(const wxString& fullpath, wxString* path, wxString* name, @@ -1044,6 +1137,28 @@ 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. */ @@ -1083,4 +1198,3 @@ public: */ wxFileName& operator=(const wxString& filename); }; -