X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7dc3cc31af71522b8fc55b7f97bcba7f5ef9eac5..7c11806499166993dffcbb99139d5b248a2c6c82:/include/wx/msw/mimetype.h diff --git a/include/wx/msw/mimetype.h b/include/wx/msw/mimetype.h index 5b069f9d5e..80406d9e43 100644 --- a/include/wx/msw/mimetype.h +++ b/include/wx/msw/mimetype.h @@ -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 -// 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