]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filesys.h
wxFileSystem now compiles if wxUSE_HTML (required by wxHTML)
[wxWidgets.git] / include / wx / filesys.h
index 5ff10cb25e2a40c26ee7d057be5e6d4c356352d0..fa3d23d5dbe80ab26008146d8dcd302fe0553c6b 100644 (file)
@@ -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
 /////////////////////////////////////////////////////////////////////////////
 
 #pragma interface
 #endif
 
-#include <wx/stream.h>
-#include <wx/mimetype.h>
-#include <wx/url.h>
+#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__