X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/269e82009d568d66363ede3c093b9c001ca54a2f..c0cd186f82be8ec2db788f26780f319b0e57cbf8:/include/wx/filesys.h diff --git a/include/wx/filesys.h b/include/wx/filesys.h index 1d79fa851c..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 ///////////////////////////////////////////////////////////////////////////// @@ -15,12 +16,19 @@ #include "wx/setup.h" -#if (wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS +#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/mimetype.h" #include "wx/url.h" - +#include "wx/datetime.h" class wxFSFile; class wxFileSystemHandler; @@ -40,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() { @@ -65,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;} }; @@ -93,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) @@ -115,17 +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) - - public: - static void CleanUpStatics(); - // deletes static members (m_MimeMng). It can be called - // as many times as you wish because m_MimeMng is created - // on demand - - private: - static wxMimeTypesManager *m_MimeMng; - // MIME manager - // (it's static and thus shared by all instances and derived classes) }; @@ -141,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 @@ -163,7 +161,7 @@ class WXDLLEXPORT wxFileSystem : public wxObject // 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. @@ -171,6 +169,13 @@ 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. @@ -178,6 +183,19 @@ class WXDLLEXPORT wxFileSystem : public wxObject 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 }; @@ -205,7 +223,7 @@ special characters : */ #endif - // (wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS + // wxUSE_FILESYSTEM #endif // __FILESYS_H__