X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7dc3cc31af71522b8fc55b7f97bcba7f5ef9eac5..bfb9ee966d5d1f29e49f38e340812ade4b3cc956:/include/wx/msw/mimetype.h diff --git a/include/wx/msw/mimetype.h b/include/wx/msw/mimetype.h index 5b069f9d5e..7de0730b2f 100644 --- a/include/wx/msw/mimetype.h +++ b/include/wx/msw/mimetype.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/mimetype.h +// Name: wx/msw/mimetype.h // Purpose: classes and functions to manage MIME types // Author: Vadim Zeitlin // Modified by: @@ -13,55 +13,82 @@ #define _MIMETYPE_IMPL_H #ifdef __GNUG__ -#pragma interface "mimetype.h" + #pragma interface "mimetype.h" #endif #include "wx/defs.h" #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 { 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(wxIcon *icon, wxString *sCommand = NULL, int *iIndex = NULL) 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 { @@ -72,20 +99,22 @@ 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) + bool ReadMailcap(const wxString& WXUNUSED(filename), bool WXUNUSED(fallback) = TRUE) { return TRUE; } - bool ReadMimeTypes(const wxString& filename) + 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); };