/////////////////////////////////////////////////////////////////////////////
-// Name: filename.h
-// Purpose: wxFileName - encapsulates ice cream
+// Name: wx/filename.h
+// Purpose: wxFileName - encapsulates a file path
// Author: Robert Roebling
// Modified by:
// Created: 28.12.00
// ridiculously enough, this will replace DirExists with wxDirExists etc
#include "wx/filefn.h"
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+// the various values for the path format: this mainly affects the path
+// separator but also whether or not the path has the drive part (as under
+// Windows)
enum wxPathFormat
{
- wxPATH_NATIVE = 0,
- wxPATH_UNIX,
- wxPATH_MAC,
- wxPATH_DOS,
+ wxPATH_NATIVE = 0,
+ wxPATH_UNIX,
+ wxPATH_MAC,
+ wxPATH_DOS,
- wxPATH_BEOS = wxPATH_UNIX,
- wxPATH_WIN = wxPATH_DOS,
- wxPATH_OS2 = wxPATH_DOS
+ wxPATH_BEOS = wxPATH_UNIX,
+ wxPATH_WIN = wxPATH_DOS,
+ wxPATH_OS2 = wxPATH_DOS
+};
+// the kind of normalization to do with the file name: these values can be
+// or'd together to perform several operations at once
+enum wxPathNormalize
+{
+ wxPATH_NORM_ENV_VARS = 0x0001, // replace env vars with their values
+ wxPATH_NORM_ABSOLUTE = 0x0002, // squeeze all .. and . and prepend cwd
+ wxPATH_NORM_TILDE = 0x0004, // Unix only: replace ~ and ~user
+ wxPATH_NORM_ALL = 0x0007
};
+// ----------------------------------------------------------------------------
+// wxFileName: encapsulates a file path
+// ----------------------------------------------------------------------------
+
class WXDLLEXPORT wxFileName
{
public:
// constructors and assignment
- wxFileName()
+ wxFileName()
{ }
wxFileName( const wxFileName &filepath );
wxFileName( const wxString &path, bool dir_only = FALSE, wxPathFormat format = wxPATH_NATIVE )
{ Assign( path, dir_only, format ); }
void Assign( const wxString &path, bool dir_only = FALSE, wxPathFormat format = wxPATH_NATIVE );
void Assign( const wxFileName &filepath );
-
+
// Only native form
bool FileExists();
static bool FileExists( const wxString &file );
-
+
bool DirExists();
static bool DirExists( const wxString &dir );
-
+
void AssignCwd();
static wxString GetCwd();
-
+
bool SetCwd();
static bool SetCwd( const wxString &cwd );
-
+
void AssignHomeDir();
static wxString GetHomeDir();
-
+
void AssignTempFileName( const wxString &prefix );
-
+
bool Mkdir( int perm = 0777 );
static bool Mkdir( const wxString &dir, int perm = 0777 );
-
+
bool Rmdir();
static bool Rmdir( const wxString &dir );
-
+
// Remove . and .. (under Unix ~ as well)
bool Normalize( const wxString &cwd = wxEmptyString, const wxString &home = wxEmptyString );
-
+
// Comparison
bool SameAs( const wxFileName &filepath, bool upper_case = TRUE );
-
+
// Tests
bool IsCaseSensitive( wxPathFormat format = wxPATH_NATIVE );
bool IsRelative( wxPathFormat format = wxPATH_NATIVE );
bool IsAbsolute( wxPathFormat format = wxPATH_NATIVE );
bool IsWild( 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() { return m_dirs.GetCount(); }
-
+ size_t GetDirCount() const { return m_dirs.GetCount(); }
+
// Other accessors
void SetExt( const wxString &ext ) { m_ext = ext; }
wxString GetExt() const { return m_ext; }
bool HasExt() const { return !m_ext.IsEmpty(); }
-
+
void SetName( const wxString &name ) { m_name = name; }
wxString GetName() const { return m_name; }
bool HasName() const { return !m_name.IsEmpty(); }
-
+
// name and ext
void SetFullName( const wxString name, wxPathFormat format = wxPATH_NATIVE );
wxString GetFullName();
-
+
const wxArrayString &GetDirs() const { return m_dirs; }
-
+
// Construct path only
wxString GetPath( bool add_separator = FALSE, wxPathFormat format = wxPATH_NATIVE ) const;
-
+
// Construct full path with name and ext
wxString GetFullPath( wxPathFormat format = wxPATH_NATIVE ) const;
-
-
+
+
static wxPathFormat GetFormat( wxPathFormat format = wxPATH_NATIVE );
-
+
private:
wxArrayString m_dirs;
wxString m_name;
wxString m_ext;
};
-
-
-#endif // _WX_FFILENAME_H_
+#endif // _WX_FILENAME_H_
/////////////////////////////////////////////////////////////////////////////
-// Name: filename.cpp
-// Purpose: wxFileName - encapsulates candy
+// Name: src/common/filename.cpp
+// Purpose: wxFileName - encapsulates a file path
// Author: Robert Roebling
// Modified by:
// Created: 28.12.2000
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
#ifdef __GNUG__
#pragma implementation "filename.h"
#endif
#include "wx/tokenzr.h"
#include "wx/utils.h"
-//----------------------------------------------------------------------------
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
// wxFileName
-//----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
wxFileName::wxFileName( const wxFileName &filepath )
{
wxString seps;
if (format == wxPATH_DOS)
{
- seps = "/\\";
+ seps = _T("/\\");
}
else
if (format == wxPATH_UNIX)
{
- seps = "/";
+ seps = _T("/");
}
else
{
- seps = ":";
+ seps = _T(":");
}
wxStringTokenizer tn( path, seps, wxTOKEN_RET_EMPTY_ALL );
if (pos == -1)
{
// add dot back
- m_name.Prepend( "." );
+ m_name.Prepend( _T(".") );
return;
}
}
if (has_starting_dot && (format == wxPATH_UNIX))
{
// add dot back
- m_name.Prepend( "." );
+ m_name.Prepend( _T(".") );
return;
}
}
if (pos == -1)
{
// add dot back
- m_name.Prepend( "." );
+ m_name.Prepend( _T(".") );
return;
}
}
if (has_starting_dot && (format == wxPATH_UNIX))
{
// add dot back
- m_name.Prepend( "." );
+ m_name.Prepend( _T(".") );
return;
}
}
{
ret += m_dirs[i];
if (add_separator || (i != m_dirs.GetCount()-1))
- ret += ":";
+ ret += _T(":");
}
}