X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04c943b139c676dc63320fcec3ad03d26d382986..bc55104d9ab0b0b835644f17a152b4fbbfa8c7b9:/include/wx/filename.h diff --git a/include/wx/filename.h b/include/wx/filename.h index d652009ce7..ceb0fc820e 100644 --- a/include/wx/filename.h +++ b/include/wx/filename.h @@ -38,6 +38,8 @@ #include "wx/filefn.h" #include "wx/datetime.h" +class WXDLLEXPORT wxFile; + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -96,6 +98,14 @@ public: wxPathFormat format = wxPATH_NATIVE) { Assign(path, name, format); } + // from a volume, directory name, file base name and extension + wxFileName(const wxString& volume, + const wxString& path, + const wxString& name, + const wxString& ext, + wxPathFormat format = wxPATH_NATIVE) + { Assign(volume, path, name, ext, format); } + // from a directory name, file base name and extension wxFileName(const wxString& path, const wxString& name, @@ -129,8 +139,7 @@ public: Assign(_T(""), path, name, ext, format); } - void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE) - { Assign(dir, _T(""), format); } + void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE); // assorted assignment operators @@ -187,11 +196,21 @@ public: return dtMod; } +#ifdef __WXMAC__ + bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ; + bool MacGetTypeAndCreator( wxUint32 *type , wxUint32 *creator ) ; + // gets the 'common' type and creator for a certain extension + static bool MacFindDefaultTypeAndCreator( const wxString& ext , wxUint32 *type , wxUint32 *creator ) ; + // registers application defined extensions and their default type and creator + static void MacRegisterDefaultTypeAndCreator( const wxString& ext , wxUint32 type , wxUint32 creator ) ; + // looks up the appropriate type and creator from the registration and then sets + bool MacSetDefaultTypeAndCreator() ; +#endif // various file/dir operations // retrieve the value of the current working directory - void AssignCwd(); - static wxString GetCwd(); + void AssignCwd(const wxString& volume = wxEmptyString); + static wxString GetCwd(const wxString& volume = wxEmptyString); // change the current working directory bool SetCwd(); @@ -201,8 +220,12 @@ public: void AssignHomeDir(); static wxString GetHomeDir(); - // get a temp file name starting with thespecified prefix - void AssignTempFileName( const wxString &prefix ); + // get a temp file name starting with the specified prefix and open the + // file passed to us using this name for writing (atomically if + // possible) + void AssignTempFileName(const wxString& prefix, wxFile *fileTemp = NULL); + static wxString CreateTempFileName(const wxString& prefix, + wxFile *fileTemp = NULL); // directory creation and removal. // if full is TRUE, will try to make each directory in the path. @@ -219,10 +242,22 @@ public: // variables will be expanded in it // // this may be done using another (than current) value of cwd - bool Normalize(wxPathNormalize flags = wxPATH_NORM_ALL, + bool Normalize(int flags = wxPATH_NORM_ALL, const wxString& cwd = wxEmptyString, wxPathFormat format = wxPATH_NATIVE); + // get a path path relative to the given base directory, i.e. opposite + // of Normalize + // + // pass an empty string to get a path relative to the working directory + // + // returns TRUE if the file name was modified, FALSE if we failed to do + // anything with it (happens when the file is on a different volume, + // for example) + bool MakeRelativeTo(const wxString& pathBase = _T(""), + wxPathFormat format = wxPATH_NATIVE); + + // Comparison // compares with the rules of this platform @@ -234,17 +269,22 @@ public: bool operator==(const wxString& filename) { return *this == wxFileName(filename); } - // Tests - // are the file names of this type cases sensitive? static bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE ); // is this filename absolute? - bool IsAbsolute( wxPathFormat format = wxPATH_NATIVE ); + bool IsAbsolute() const + { return !m_relative; } // is this filename relative? - bool IsRelative( wxPathFormat format = wxPATH_NATIVE ) - { return !IsAbsolute(format); } + bool IsRelative() const + { return m_relative; } + + // forcibly set the flag + void SetAbsolute() + { m_relative = FALSE; } + void SetRelative() + { m_relative = TRUE; } // Information about path format @@ -289,6 +329,8 @@ public: // Construct path only - possibly with the trailing separator wxString GetPath( bool add_separator = FALSE, wxPathFormat format = wxPATH_NATIVE ) const; + // Replace current path with this one + void SetPath( const wxString &path, wxPathFormat format = wxPATH_NATIVE ); // more readable synonym wxString GetPathWithSep(wxPathFormat format = wxPATH_NATIVE ) const @@ -322,10 +364,7 @@ public: wxString *path, wxString *name, wxString *ext, - wxPathFormat format = wxPATH_NATIVE) - { - SplitPath(fullpath, NULL, path, name, ext, format); - } + wxPathFormat format = wxPATH_NATIVE); private: // the drive/volume/device specification (always empty for Unix) @@ -337,6 +376,9 @@ private: // the file name and extension (empty for directories) wxString m_name, m_ext; + + // is the path relative + bool m_relative; }; #endif // _WX_FILENAME_H_