X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5526e819eca4465ed5520d49bccfebc6a28045e0..c7ce8392e0fa752d121000b7732c8f4ac3e3088d:/include/wx/filesys.h diff --git a/include/wx/filesys.h b/include/wx/filesys.h index 5ff10cb25e..da754cfe8a 100644 --- a/include/wx/filesys.h +++ b/include/wx/filesys.h @@ -3,6 +3,7 @@ // Purpose: class for opening files - virtual file system // Author: Vaclav Slavik // Copyright: (c) 1999 Vaclav Slavik +// RCS-ID: $Id$ // Licence: wxWindows Licence ///////////////////////////////////////////////////////////////////////////// @@ -13,10 +14,21 @@ #pragma interface #endif -#include -#include -#include +#include "wx/setup.h" +#if !wxUSE_STREAMS +#error You cannot compile virtual file systems without wxUSE_STREAMS +#endif + +#if wxUSE_HTML && !wxUSE_FILESYSTEM +#error You cannot compile wxHTML without virtual file systems +#endif + +#if wxUSE_FILESYSTEM + +#include "wx/stream.h" +#include "wx/url.h" +#include "wx/datetime.h" class wxFSFile; class wxFileSystemHandler; @@ -36,14 +48,18 @@ class WXDLLEXPORT wxFSFile : public wxObject wxString m_Location; wxString m_MimeType; wxString m_Anchor; + wxDateTime m_Modif; public: - wxFSFile(wxInputStream *stream, const wxString& loc, const wxString& mimetype, const wxString& anchor) + wxFSFile(wxInputStream *stream, const wxString& loc, + const wxString& mimetype, const wxString& anchor, + wxDateTime modif) { m_Stream = stream; m_Location = loc; m_MimeType = mimetype; m_MimeType.MakeLower(); m_Anchor = anchor; + m_Modif = modif; } virtual ~wxFSFile() { @@ -61,6 +77,8 @@ class WXDLLEXPORT wxFSFile : public wxObject // returns the original location (aka filename) of the file const wxString& GetAnchor() const {return m_Anchor;} + + wxDateTime GetModificationTime() const {return m_Modif;} }; @@ -89,6 +107,12 @@ class WXDLLEXPORT wxFileSystemHandler : public wxObject // Returns NULL if opening failed. // The location is always absolute path. + virtual wxString FindFirst(const wxString& spec, int flags = 0); + virtual wxString FindNext(); + // Finds first/next file that matches spec wildcard. flags can be wxDIR for restricting + // the query to directories or wxFILE for files only or 0 for either. + // Returns filename or empty string if no more matching file exists + protected: wxString GetProtocol(const wxString& location) const; // returns protocol ("file", "http", "tar" etc.) The last (most right) @@ -111,11 +135,6 @@ class WXDLLEXPORT wxFileSystemHandler : public wxObject wxString GetMimeTypeFromExt(const wxString& location); // Returns MIME type of the file - w/o need to open it // (default behaviour is that it returns type based on extension) - - private: - static wxMimeTypesManager m_MimeMng; - // MIME manager - // (it's static and thus shared by all instances and derived classes) }; @@ -131,19 +150,8 @@ class WXDLLEXPORT wxFileSystem : public wxObject { DECLARE_DYNAMIC_CLASS(wxFileSystem) - private: - wxString m_Path; - // the path (location) we are currently in - // this is path, not file! - // (so if you opened test/demo.htm, it is - // "test/", not "test/demo.htm") - wxString m_LastName; - // name of last opened file (full path) - static wxList m_Handlers; - // list of FS handlers - public: - wxFileSystem() : wxObject() {m_Path = m_LastName = wxEmptyString; m_Handlers.DeleteContents(TRUE);} + wxFileSystem() : wxObject() {m_Path = m_LastName = wxEmptyString; m_Handlers.DeleteContents(TRUE); m_FindFileHandler = NULL;} void ChangePathTo(const wxString& location, bool is_dir = FALSE); // sets the current location. Every call to OpenFile is @@ -152,8 +160,8 @@ class WXDLLEXPORT wxFileSystem : public wxObject // unless is_dir = TRUE 'location' is *not* the directory but // file contained in this directory // (so ChangePathTo("dir/subdir/xh.htm") sets m_Path to "dir/subdir/") - - wxString GetPath() const {return m_Path;} + + wxString GetPath() const {return m_Path;} wxFSFile* OpenFile(const wxString& location); // opens given file and returns pointer to input stream. @@ -161,10 +169,33 @@ class WXDLLEXPORT wxFileSystem : public wxObject // It first tries to open the file in relative scope // (based on ChangePathTo()'s value) and then as an absolute // path. + + wxString FindFirst(const wxString& spec, int flags = 0); + wxString FindNext(); + // Finds first/next file that matches spec wildcard. flags can be wxDIR for restricting + // the query to directories or wxFILE for files only or 0 for either. + // Returns filename or empty string if no more matching file exists + static void AddHandler(wxFileSystemHandler *handler); // Adds FS handler. // In fact, this class is only front-end to the FS hanlers :-) + + static void CleanUpHandlers(); + // remove all items from the m_Handlers list + + private: + wxString m_Path; + // the path (location) we are currently in + // this is path, not file! + // (so if you opened test/demo.htm, it is + // "test/", not "test/demo.htm") + wxString m_LastName; + // name of last opened file (full path) + static wxList m_Handlers; + // list of FS handlers + wxFileSystemHandler *m_FindFileHandler; + // handler that succeed in FindFirst query }; @@ -191,4 +222,8 @@ special characters : */ -#endif // __FILESYS_H__ +#endif + // wxUSE_FILESYSTEM + +#endif + // __FILESYS_H__