]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/mimetype.h
winundef.h serves for other compilators too with STL turned on.
[wxWidgets.git] / include / wx / msw / mimetype.h
index 5b069f9d5e8b2d56b4cd84974237d08a7e1c9a4e..80406d9e4344d0ed99a8d23cb730a05b31daa860 100644 (file)
@@ -1,69 +1,98 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        wx/mimetype.h
+// Name:        wx/msw/mimetype.h
 // Purpose:     classes and functions to manage MIME types
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     23.09.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license (part of wxExtra library)
+// Licence:     wxWindows licence (part of wxExtra library)
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _MIMETYPE_IMPL_H
 #define _MIMETYPE_IMPL_H
 
-#ifdef    __GNUG__
-#pragma interface "mimetype.h"
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+    #pragma interface "mimetype.h"
 #endif
 
 #include "wx/defs.h"
 
+#if wxUSE_MIMETYPE
+
 #include "wx/mimetype.h"
 
+// ----------------------------------------------------------------------------
+// wxFileTypeImpl is the MSW version of wxFileType, this is a private class
+// and is never used directly by the application
+// ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFileTypeImpl
+class WXDLLIMPEXP_BASE wxFileTypeImpl
 {
 public:
     // ctor
-    wxFileTypeImpl() { m_info = NULL; }
+    wxFileTypeImpl() { }
 
     // one of these Init() function must be called (ctor can't take any
     // arguments because it's common)
 
         // initialize us with our file type name and extension - in this case
         // we will read all other data from the registry
-    void Init(const wxString& strFileType, const wxString& ext)
-        { m_strFileType = strFileType; m_ext = ext; }
-
-        // initialize us with a wxFileTypeInfo object - it contains all the
-        // data
-    void Init(const wxFileTypeInfo& info)
-        { m_info = &info; }
+    void Init(const wxString& strFileType, const wxString& ext);
 
     // implement accessor functions
     bool GetExtensions(wxArrayString& extensions);
     bool GetMimeType(wxString *mimeType) const;
-    bool GetIcon(wxIcon *icon) const;
+    bool GetMimeTypes(wxArrayString& mimeTypes) const;
+    bool GetIcon(wxIconLocation *iconLoc) const;
     bool GetDescription(wxString *desc) const;
     bool GetOpenCommand(wxString *openCmd,
                         const wxFileType::MessageParameters& params) const;
     bool GetPrintCommand(wxString *printCmd,
                          const wxFileType::MessageParameters& params) const;
 
+    size_t GetAllCommands(wxArrayString * verbs, wxArrayString * commands,
+                          const wxFileType::MessageParameters& params) const;
+
+    bool Unassociate();
+
+    // set an arbitrary command, ask confirmation if it already exists and
+    // overwriteprompt is true
+    bool SetCommand(const wxString& cmd,
+                    const wxString& verb,
+                    bool overwriteprompt = true);
+
+    bool SetDefaultIcon(const wxString& cmd = wxEmptyString, int index = 0);
+
+    // this is called  by Associate
+    bool SetDescription (const wxString& desc);
+
 private:
     // helper function: reads the command corresponding to the specified verb
     // from the registry (returns an empty string if not found)
     wxString GetCommand(const wxChar *verb) const;
 
-    // we use either m_info or read the data from the registry if m_info == NULL
-    const wxFileTypeInfo *m_info;
+    // get the registry path for the given verb
+    wxString GetVerbPath(const wxString& verb) const;
+
+    // check that the registry key for our extension exists, create it if it
+    // doesn't, return false if this failed
+    bool EnsureExtKeyExists();
+
     wxString m_strFileType,         // may be empty
              m_ext;
-};
 
+    // these methods are not publicly accessible (as wxMimeTypesManager
+    // doesn't know about them), and should only be called by Unassociate
 
+    bool RemoveOpenCommand();
+    bool RemoveCommand(const wxString& verb);
+    bool RemoveMimeType();
+    bool RemoveDefaultIcon();
+    bool RemoveDescription();
+};
 
-class WXDLLEXPORT wxMimeTypesManagerImpl
+class WXDLLIMPEXP_BASE wxMimeTypesManagerImpl
 {
 public:
     // nothing to do here, we don't load any data but just go and fetch it from
@@ -72,22 +101,25 @@ public:
 
     // implement containing class functions
     wxFileType *GetFileTypeFromExtension(const wxString& ext);
+    wxFileType *GetOrAllocateFileTypeFromExtension(const wxString& ext);
     wxFileType *GetFileTypeFromMimeType(const wxString& mimeType);
 
     size_t EnumAllFileTypes(wxArrayString& mimetypes);
 
     // this are NOPs under Windows
-    bool ReadMailcap(const wxString& filename, bool fallback = TRUE)
-        { return TRUE; }
-    bool ReadMimeTypes(const wxString& filename)
-        { return TRUE; }
+    bool ReadMailcap(const wxString& WXUNUSED(filename), bool WXUNUSED(fallback) = true)
+        { return true; }
+    bool ReadMimeTypes(const wxString& WXUNUSED(filename))
+        { return true; }
 
-    void AddFallback(const wxFileTypeInfo& ft) { m_fallbacks.Add(ft); }
+    // create a new filetype association
+    wxFileType *Associate(const wxFileTypeInfo& ftInfo);
 
-private:
-    wxArrayFileTypeInfo m_fallbacks;
+    // create a new filetype with the given name and extension
+    wxFileType *CreateFileType(const wxString& filetype, const wxString& ext);
 };
 
+#endif // wxUSE_MIMETYPE
 
 #endif
   //_MIMETYPE_IMPL_H