added volume support and support for UNC paths under Windows, improved Mac and VMS support

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-11-30 21:55:13 +00:00
parent 2569938d39
commit 04c943b139
2 changed files with 295 additions and 115 deletions

View File

@@ -105,19 +105,30 @@ public:
// the same for delayed initialization
// VZ: wouldn't it be better to call this Create() for consistency with
// all GUI classes? Personally, I like Set() more than Assign() too
void Assign(const wxFileName& filepath);
void Assign(const wxString& fullpath,
wxPathFormat format = wxPATH_NATIVE);
void Assign(const wxString& path,
const wxString& name,
wxPathFormat format = wxPATH_NATIVE);
void Assign(const wxString& path,
void Assign(const wxString& volume,
const wxString& path,
const wxString& name,
const wxString& ext,
wxPathFormat format = wxPATH_NATIVE);
void Assign(const wxString& path,
const wxString& name,
wxPathFormat format = wxPATH_NATIVE);
void Assign(const wxString& path,
const wxString& name,
const wxString& ext,
wxPathFormat format = wxPATH_NATIVE)
{
// empty volume
Assign(_T(""), path, name, ext, format);
}
void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE)
{ Assign(dir, _T(""), format); }
@@ -224,10 +235,22 @@ public:
{ return *this == wxFileName(filename); }
// Tests
// are the file names of this type cases sensitive?
static bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE );
bool IsRelative( wxPathFormat format = wxPATH_NATIVE );
// is this filename absolute?
bool IsAbsolute( wxPathFormat format = wxPATH_NATIVE );
// is this filename relative?
bool IsRelative( wxPathFormat format = wxPATH_NATIVE )
{ return !IsAbsolute(format); }
// Information about path format
// get the string separating the volume from the path for this format
static wxString GetVolumeSeparator(wxPathFormat format = wxPATH_NATIVE);
// get the string of path separators for this format
static wxString GetPathSeparators(wxPathFormat format = wxPATH_NATIVE);
@@ -247,17 +270,21 @@ public:
// Other accessors
void SetExt( const wxString &ext ) { m_ext = ext; }
wxString GetExt() const { return m_ext; }
bool HasExt() const { return !m_ext.IsEmpty(); }
bool HasExt() const { return !m_ext.empty(); }
void SetName( const wxString &name ) { m_name = name; }
wxString GetName() const { return m_name; }
bool HasName() const { return !m_name.IsEmpty(); }
bool HasName() const { return !m_name.empty(); }
void SetVolume( const wxString &volume ) { m_volume = volume; }
wxString GetVolume() const { return m_volume; }
bool HasVolume() const { return !m_volume.empty(); }
// full name is the file name + extension (but without the path)
void SetFullName(const wxString& fullname);
wxString GetFullName() const;
const wxArrayString &GetDirs() const { return m_dirs; }
const wxArrayString& GetDirs() const { return m_dirs; }
// Construct path only - possibly with the trailing separator
wxString GetPath( bool add_separator = FALSE,
@@ -281,15 +308,29 @@ public:
// get the canonical path format for this platform
static wxPathFormat GetFormat( wxPathFormat format = wxPATH_NATIVE );
// split a fullpath into path, (base) name and ext (all of the pointers
// can be NULL)
// split a fullpath into the volume, path, (base) name and extension
// (all of the pointers can be NULL)
static void SplitPath(const wxString& fullpath,
wxString *volume,
wxString *path,
wxString *name,
wxString *ext,
wxPathFormat format = wxPATH_NATIVE);
// compatibility version
static void SplitPath(const wxString& fullpath,
wxString *path,
wxString *name,
wxString *ext,
wxPathFormat format = wxPATH_NATIVE)
{
SplitPath(fullpath, NULL, path, name, ext, format);
}
private:
// the drive/volume/device specification (always empty for Unix)
wxString m_volume;
// the path components of the file
wxArrayString m_dirs;