1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/msdos/mimetype.h 
   3 // Purpose:     classes and functions to manage MIME types 
   4 // Author:      Vadim Zeitlin 
   8 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 
   9 // Licence:     wxWindows licence (part of wxExtra library) 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _MIMETYPE_IMPL_H 
  13 #define _MIMETYPE_IMPL_H 
  16 #include "wx/mimetype.h" 
  19 class wxMimeTypesManagerImpl
 
  22     wxMimeTypesManagerImpl() { } 
  24     // load all data into memory - done when it is needed for the first time 
  25     void Initialize(int mailcapStyles 
= wxMAILCAP_STANDARD
, 
  26                     const wxString
& extraDir 
= wxEmptyString
); 
  28     // and delete the data here 
  31     // implement containing class functions 
  32     wxFileType 
*GetFileTypeFromExtension(const wxString
& ext
); 
  33     wxFileType 
*GetOrAllocateFileTypeFromExtension(const wxString
& ext
) ; 
  34     wxFileType 
*GetFileTypeFromMimeType(const wxString
& mimeType
); 
  36     size_t EnumAllFileTypes(wxArrayString
& mimetypes
); 
  38     void AddFallback(const wxFileTypeInfo
& ft
) { m_fallbacks
.Add(ft
); } 
  40     // create a new filetype association 
  41     wxFileType 
*Associate(const wxFileTypeInfo
& ftInfo
); 
  43     bool Unassociate(wxFileType 
*ft
); 
  45     // create a new filetype with the given name and extension 
  46     wxFileType 
*CreateFileType(const wxString
& filetype
, const wxString
& ext
); 
  49     wxArrayFileTypeInfo m_fallbacks
; 
  55     // initialization functions 
  56     // this is used to construct a list of mimetypes which match; 
  57     // if built with GetFileTypeFromMimetype index 0 has the exact match and 
  58     // index 1 the type / * match 
  59     // if built with GetFileTypeFromExtension, index 0 has the mimetype for 
  60     // the first extension found, index 1 for the second and so on 
  62     void Init(wxMimeTypesManagerImpl 
*manager
, size_t index
) 
  63     { m_manager 
= manager
; m_index
.Add(index
); } 
  65     // initialize us with our file type name 
  66     void SetFileType(const wxString
& strFileType
) 
  67         { m_strFileType 
= strFileType
; } 
  68     void SetExt(const wxString
& ext
) 
  71     // implement accessor functions 
  72     bool GetExtensions(wxArrayString
& extensions
); 
  73     bool GetMimeType(wxString 
*mimeType
) const; 
  74     bool GetMimeTypes(wxArrayString
& mimeTypes
) const; 
  75     bool GetIcon(wxIconLocation 
*iconLoc
) const; 
  76     bool GetDescription(wxString 
*desc
) const; 
  77     bool GetOpenCommand(wxString 
*openCmd
, 
  78                         const wxFileType::MessageParameters
&) const 
  79         { return GetCommand(openCmd
, "open"); } 
  80     bool GetPrintCommand(wxString 
*printCmd
, 
  81                          const wxFileType::MessageParameters
&) const 
  82         { return GetCommand(printCmd
, "print"); } 
  84     size_t GetAllCommands(wxArrayString 
* verbs
, wxArrayString 
* commands
, 
  85                           const wxFileType::MessageParameters
& params
) const; 
  87     // remove the record for this file type 
  88     // probably a mistake to come here, use wxMimeTypesManager.Unassociate (ft) instead 
  89     bool Unassociate(wxFileType 
*ft
) 
  91         return m_manager
->Unassociate(ft
); 
  94     // set an arbitrary command, ask confirmation if it already exists and 
  95     // overwriteprompt is TRUE 
  96     bool SetCommand(const wxString
& cmd
, const wxString
& verb
, bool overwriteprompt 
= TRUE
); 
  97     bool SetDefaultIcon(const wxString
& strIcon 
= wxEmptyString
, int index 
= 0); 
 101     bool GetCommand(wxString 
*command
, const char *verb
) const; 
 103     wxMimeTypesManagerImpl 
*m_manager
; 
 104     wxArrayInt              m_index
; // in the wxMimeTypesManagerImpl arrays 
 105     wxString m_strFileType
, m_ext
; 
 111 /* vi: set cin tw=80 ts=4 sw=4: */