#ifndef _WX_FILENAME_H_
#define _WX_FILENAME_H_
-#if defined(__GNUG__) && !defined(__APPLE__)
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "filename.h"
#endif
wxPATH_NORM_CASE = 0x0008, // if case insensitive => tolower
wxPATH_NORM_ABSOLUTE = 0x0010, // make the path absolute
wxPATH_NORM_LONG = 0x0020, // make the path the long form
- wxPATH_NORM_ALL = 0x003f
+ wxPATH_NORM_SHORTCUT = 0x0040, // resolve the shortcut, if it is a shortcut
+ wxPATH_NORM_ALL = 0x00ff & ~wxPATH_NORM_CASE
};
// what exactly should GetPath() return?
void Assign(const wxString& path,
const wxString& name,
const wxString& ext,
- wxPathFormat format = wxPATH_NATIVE)
- {
- // empty volume
- Assign(wxEmptyString, path, name, ext, format);
- }
+ wxPathFormat format = wxPATH_NATIVE);
void AssignDir(const wxString& dir, wxPathFormat format = wxPATH_NATIVE);
// file tests
// is the filename valid at all?
- bool IsOk() const { return m_dirs.size() != 0 || !m_name.IsEmpty(); }
+ bool IsOk() const
+ {
+ // we're fine if we have the path or the name or if we're a root dir
+ return m_dirs.size() != 0 || !m_name.IsEmpty() || !m_relative;
+ }
// does the file with this name exists?
bool FileExists() const;
{ return Normalize(wxPATH_NORM_DOTS | wxPATH_NORM_ABSOLUTE |
wxPATH_NORM_TILDE, cwd, format); }
+#if defined(__WIN32__) && !defined(__WXWINCE__) && wxUSE_OLE
+ // if the path is a shortcut, return the target and optionally,
+ // the arguments
+ bool GetShortcutTarget(const wxString& shortcutPath,
+ wxString& targetFilename,
+ wxString* arguments = NULL);
+#endif
+
// Comparison
// compares with the rules of the given platforms format
// get the string of path separators for this format
static wxString GetPathSeparators(wxPathFormat format = wxPATH_NATIVE);
+ // get the string of path terminators, i.e. characters which terminate the
+ // path
+ static wxString GetPathTerminators(wxPathFormat format = wxPATH_NATIVE);
+
// get the canonical path separator for this format
static wxChar GetPathSeparator(wxPathFormat format = wxPATH_NATIVE)
{ return GetPathSeparators(format)[0u]; }
static bool IsPathSeparator(wxChar ch, wxPathFormat format = wxPATH_NATIVE);
// Dir accessors
- void AppendDir( const wxString &dir );
- void PrependDir( const wxString &dir );
- void InsertDir( int before, const wxString &dir );
- void RemoveDir( int pos );
size_t GetDirCount() const { return m_dirs.size(); }
+ void AppendDir(const wxString& dir);
+ void PrependDir(const wxString& dir);
+ void InsertDir(size_t before, const wxString& dir);
+ void RemoveDir(size_t pos);
+ void RemoveLastDir() { RemoveDir(GetDirCount() - 1); }
// Other accessors
void SetExt( const wxString &ext ) { m_ext = ext; }
wxString *ext,
wxPathFormat format = wxPATH_NATIVE);
+ // split a path into volume and pure path part
+ static void SplitVolume(const wxString& fullpathWithVolume,
+ wxString *volume,
+ wxString *path,
+ wxPathFormat format = wxPATH_NATIVE);
// deprecated methods, don't use any more
// --------------------------------------
{ return GetPath(wxPATH_GET_SEPARATOR, format); }
private:
+ // check whether this dir is valid for Append/Prepend/InsertDir()
+ static bool IsValidDirComponent(const wxString& dir);
+
// the drive/volume/device specification (always empty for Unix)
wxString m_volume;