]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filesys.h
crash in wxAppBase::SetActive fixed
[wxWidgets.git] / include / wx / filesys.h
index d381956e296cfede16675884fde2da9eae4e5cb4..da754cfe8aab5f6ff4faf994fd2c92e333731604 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
 /////////////////////////////////////////////////////////////////////////////
 
 
 #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
@@ -162,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.
@@ -171,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
 };
 
 
@@ -202,7 +223,7 @@ special characters :
 */
 
 #endif
-  // (wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS
+  // wxUSE_FILESYSTEM
 
-#endif 
+#endif
   // __FILESYS_H__