diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h index 3f8c039bf5..3f7516d63b 100644 --- a/include/wx/mimetype.h +++ b/include/wx/mimetype.h @@ -152,8 +152,16 @@ public: }; // ctors - // a normal item + // Ctor specifying just the MIME type (which is mandatory), the other + // fields can be set later if needed. + wxFileTypeInfo(const wxString& mimeType) + : m_mimeType(mimeType) + { + } + + // Ctor allowing to specify the values of all fields at once: + // // wxFileTypeInfo(const wxString& mimeType, // const wxString& openCmd, // const wxString& printCmd, @@ -224,6 +232,16 @@ public: bool IsValid() const { return !m_mimeType.empty(); } // setters + // set the open/print commands + void SetOpenCommand(const wxString& command) { m_openCmd = command; } + void SetPrintCommand(const wxString& command) { m_printCmd = command; } + + // set the description + void SetDescription(const wxString& desc) { m_desc = desc; } + + // add another extension corresponding to this file type + void AddExtension(const wxString& ext) { m_exts.push_back(ext); } + // set the icon info void SetIcon(const wxString& iconFile, int iconIndex = 0) { diff --git a/interface/wx/mimetype.h b/interface/wx/mimetype.h index e8e181ca32..77059fab23 100644 --- a/interface/wx/mimetype.h +++ b/interface/wx/mimetype.h @@ -334,3 +334,83 @@ public: const MessageParameters& params) const; }; +/** + Container of information about wxFileType. + + This class simply stores information associated with the file type. It + doesn't do anything on its own and is used only to allow constructing + wxFileType from it (instead of specifying all the constituent pieces + separately) and also with wxMimeTypesManager::AddFallbacks(). + */ +class wxFileTypeInfo +{ +public: + /** + Default constructor creates an invalid file type info object. + + Such invalid/empty object should be used to terminate the list of file + types passed to wxMimeTypesManager::AddFallbacks(). + */ + wxFileTypeInfo(); + + /** + Constructor specifying just the MIME type name. + + Use the various setter methods below to fully initialize the object. + + @since 2.9.2 + */ + wxFileTypeInfo(const wxString& mimeType); + + /** + Constructor allowing to specify all the fields at once. + + This is a vararg constructor taking an arbitrary number of extensions + after the first four required parameters. The list must be terminated + by @c wxNullPtr, notice that @c NULL can't be used here in portable + code (C++0x @c nullptr can be used as well if your compiler supports + it). + */ + wxFileTypeInfo(const wxString& mimeType, + const wxString& openCmd, + const wxString& printCmd, + const wxString& description, + const wxString& extension, + ...); + + /** + Add another extension associated with this file type. + + @since 2.9.2 + */ + void AddExtension(const wxString& ext); + + /** + Set the file type description. + + @since 2.9.2 + */ + void SetDescription(const wxString& description); + + /** + Set the command to be used for opening files of this type. + + @since 2.9.2 + */ + void SetOpenCommand(const wxString& command); + + /** + Set the command to be used for printing files of this type. + + @since 2.9.2 + */ + void SetPrintCommand(const wxString& command); + + /** + Set the short description for the files of this type. + + This is only used under MSW for some of the registry keys used for the + file type registration. + */ + void SetShortDesc(const wxString& shortDesc); +}; diff --git a/tests/interactive/output.cpp b/tests/interactive/output.cpp index ff462c2176..3d6492cbcd 100644 --- a/tests/interactive/output.cpp +++ b/tests/interactive/output.cpp @@ -228,14 +228,10 @@ void InteractiveOutputTestCase::TestMimeAssociate() #ifdef TEST_MIME wxPuts(wxT("*** Testing creation of filetype association ***\n")); - wxFileTypeInfo ftInfo( - wxT("application/x-xyz"), - wxT("xyzview '%s'"), // open cmd - wxT(""), // print cmd - wxT("XYZ File"), // description - wxT(".xyz"), // extensions - wxNullPtr // end of extensions - ); + wxFileTypeInfo ftInfo("application/x-xyz"); + ftInfo.SetOpenCommand("xyzview '%s'"); + ftInfo.SetDescription("XYZ File"); + ftInfo.AddExtension(".xyz"); ftInfo.SetShortDesc(wxT("XYZFile")); // used under Win32 only wxFileType *ft = wxTheMimeTypesManager->Associate(ftInfo);