]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/filesys.h
A bugfix in the wxTreeCtrl.GetItem wrapper
[wxWidgets.git] / include / wx / filesys.h
index 15182beef3a7bb2a254f2d9f194d5bdfed8241c7..2753984d3e3842333b0585d2988c13ed52095fbf 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
 /////////////////////////////////////////////////////////////////////////////
 
@@ -93,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)
@@ -116,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)
 };
 
 
@@ -135,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
@@ -156,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.
@@ -165,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
 };
 
 
@@ -198,5 +223,5 @@ special characters :
 #endif
   // (wxUSE_FS_INET || wxUSE_FS_ZIP) && wxUSE_STREAMS
 
-#endif 
+#endif
   // __FILESYS_H__