/**
@class wxFileSystem
- @wxheader{filesys.h}
This class provides an interface for opening files on different file systems.
It can handle absolute and/or local filenames.
public:
/**
Constructor.
+
+ The initial current path of this object will be empty
+ (i.e. GetPath() == wxEmptyString) which means that e.g. OpenFile()
+ or FindFirst() functions will use current working directory as
+ current path (see also wxGetCwd).
*/
wxFileSystem();
handlers are deleted in wxFileSystem's destructor so that you
don't have to care about it.
*/
- static void AddHandler(wxFileSystemHandler handler);
+ static void AddHandler(wxFileSystemHandler* handler);
/**
Sets the current location. @a location parameter passed to OpenFile() is
If the file is found in any directory, returns @true and the full path
of the file in @a str, otherwise returns @false and doesn't modify @a str.
- @param str
+ @param pStr
Receives the full path of the file, must not be @NULL
@param path
wxPATH_SEP-separated list of directories
@param file
the name of the file to look for
*/
- bool FindFileInPath(wxString str, const wxString& path,
+ bool FindFileInPath(wxString* pStr, const wxString& path,
const wxString& file);
/**
/**
Returns the actual path (set by wxFileSystem::ChangePathTo).
*/
- wxString GetPath();
+ wxString GetPath() const;
/**
This static function returns @true if there is a registered handler which can
/**
@class wxFSFile
- @wxheader{filesys.h}
This class represents a single file opened by wxFileSystem.
- It provides more information than wxWindow's input stream
+ It provides more informations than wxWidgets' input streams
(stream, filename, mime type, anchor).
@note Any pointer returned by a method of wxFSFile is valid only as long as
ten identical pointers.
@library{wxbase}
- @category{vfs}
+ @category{vfs,file}
@see wxFileSystemHandler, wxFileSystem, @ref overview_fs
*/
not be empty in this case).
@param anchor
Anchor. See GetAnchor() for details.
+ @param modif
+ Modification date and time for this file.
*/
- wxFSFile(wxInputStream stream, const wxString& loc,
- const wxString& mimetype,
- const wxString& anchor, wxDateTime modif);
+ wxFSFile(wxInputStream* stream, const wxString& location,
+ const wxString& mimetype, const wxString& anchor,
+ wxDateTime modif);
/**
Detaches the stream from the wxFSFile object. That is, the
You will have to delete the stream yourself.
*/
- void DetachStream();
+ wxInputStream* DetachStream();
/**
Returns anchor (if present). The term of @b anchor can be easily
/**
@class wxFileSystemHandler
- @wxheader{filesys.h}
Classes derived from wxFileSystemHandler are used to access virtual file systems.
Must be overridden in derived handlers.
*/
- virtual bool CanOpen(const wxString& location);
+ virtual bool CanOpen(const wxString& location) = 0;
/**
Works like ::wxFindFirstFile().
virtual wxString FindNext();
/**
- Returns the anchor if present in the location.
- See wxFSFile::GetAnchor for details.
+ Returns the MIME type based on @b extension of @a location.
+ (While wxFSFile::GetMimeType() returns real MIME type - either
+ extension-based or queried from HTTP.)
Example:
@code
- GetAnchor("index.htm#chapter2") == "chapter2"
+ GetMimeTypeFromExt("index.htm") == "text/html"
@endcode
+ */
+ static wxString GetMimeTypeFromExt(const wxString& location);
- @note the anchor is NOT part of the left location.
+ /**
+ Opens the file and returns wxFSFile pointer or @NULL if failed.
+ Must be overridden in derived handlers.
+
+ @param fs
+ Parent FS (the FS from that OpenFile was called).
+ See the ZIP handler for details of how to use it.
+ @param location
+ The absolute location of file.
*/
- wxString GetAnchor(const wxString& location) const;
+ virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location) = 0;
+
+protected:
/**
- Returns the left location string extracted from @e location.
+ Returns the anchor if present in the location.
+ See wxFSFile::GetAnchor for details.
Example:
@code
- GetLeftLocation("file:myzipfile.zip#zip:index.htm") == "file:myzipfile.zip"
+ GetAnchor("index.htm#chapter2") == "chapter2"
@endcode
+
+ @note the anchor is NOT part of the left location.
*/
- wxString GetLeftLocation(const wxString& location) const;
+ static wxString GetAnchor(const wxString& location);
/**
- Returns the MIME type based on @b extension of @a location.
- (While wxFSFile::GetMimeType() returns real MIME type - either
- extension-based or queried from HTTP.)
+ Returns the left location string extracted from @e location.
Example:
@code
- GetMimeTypeFromExt("index.htm") == "text/html"
+ GetLeftLocation("file:myzipfile.zip#zip:index.htm") == "file:myzipfile.zip"
@endcode
*/
- wxString GetMimeTypeFromExt(const wxString& location);
+ static wxString GetLeftLocation(const wxString& location);
/**
Returns the protocol string extracted from @a location.
GetProtocol("file:myzipfile.zip#zip:index.htm") == "zip"
@endcode
*/
- wxString GetProtocol(const wxString& location) const;
+ static wxString GetProtocol(const wxString& location);
/**
Returns the right location string extracted from @a location.
GetRightLocation("file:myzipfile.zip#zip:index.htm") == "index.htm"
@endcode
*/
- wxString GetRightLocation(const wxString& location) const;
-
- /**
- Opens the file and returns wxFSFile pointer or @NULL if failed.
- Must be overridden in derived handlers.
-
- @param fs
- Parent FS (the FS from that OpenFile was called).
- See the ZIP handler for details of how to use it.
- @param location
- The absolute location of file.
- */
- virtual wxFSFile* OpenFile(wxFileSystem& fs,
- const wxString& location);
+ static wxString GetRightLocation(const wxString& location);
};