#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?
// 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
const wxArrayString& GetDirs() const { return m_dirs; }
// flags are combination of wxPATH_GET_XXX flags
- wxString GetPath(int flags = 0, wxPathFormat format = wxPATH_NATIVE) const;
+ wxString GetPath(int flags = wxPATH_GET_VOLUME,
+ wxPathFormat format = wxPATH_NATIVE) const;
// Replace current path with this one
void SetPath( const wxString &path, wxPathFormat format = wxPATH_NATIVE );
{ 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;