]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filename.h
another update from Martin Srebotnjak <miles@filmsi.net>
[wxWidgets.git] / include / wx / filename.h
index 3d549d2b361e8f350389440e0b0359d9d625eddd..9711cd6fa820875c25359361b4a75f3f07becc12 100644 (file)
@@ -72,7 +72,8 @@ enum wxPathNormalize
     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?
@@ -148,11 +149,7 @@ public:
     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);
 
@@ -176,7 +173,11 @@ public:
     // 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;
@@ -283,6 +284,14 @@ public:
         { 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
@@ -325,6 +334,10 @@ public:
     // 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]; }
@@ -333,11 +346,12 @@ public:
     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; }
@@ -398,6 +412,11 @@ public:
                           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
     // --------------------------------------
@@ -410,6 +429,9 @@ public:
         { 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;