X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5526e819eca4465ed5520d49bccfebc6a28045e0..dff873d1aaeaab36167f66bb0c993735d954d733:/include/wx/filesys.h diff --git a/include/wx/filesys.h b/include/wx/filesys.h index 5ff10cb25e..fa3d23d5db 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,9 +14,13 @@ #pragma interface #endif -#include -#include -#include +#include "wx/setup.h" + +#if (wxUSE_HTML || wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS + +#include "wx/stream.h" +#include "wx/mimetype.h" +#include "wx/url.h" class wxFSFile; @@ -89,6 +94,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) @@ -112,10 +123,16 @@ class WXDLLEXPORT wxFileSystemHandler : public wxObject // 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; + static wxMimeTypesManager *m_MimeMng; // MIME manager - // (it's static and thus shared by all instances and derived classes) + // (it's static and thus shared by all instances and derived classes) }; @@ -131,19 +148,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 +158,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 +167,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 +220,8 @@ special characters : */ -#endif // __FILESYS_H__ +#endif + // (wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS + +#endif + // __FILESYS_H__