Add non-vararg wxFileTypeInfo ctor and various setters.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Oct 2010 13:05:42 +0000 (13:05 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Oct 2010 13:05:42 +0000 (13:05 +0000)
This allows to create wxFileTypeInfo objects in a more readable even if more
verbose way.

This should also incidentally fix the unit tests compilation with VC6 which
seems to have some existential troubles with the vararg ctor in debug DLL
build (only). Using the non-vararg ctor should hopefully make it happy and let
the unit tests pass with this compiler.

Also document wxFileTypeInfo class which wasn't documented at all.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/mimetype.h
interface/wx/mimetype.h
tests/interactive/output.cpp

index 3f8c039bf586958f1dafed06e4e18dcff249cb9f..3f7516d63b16d43b6ede04ca02ae9bcd845cd972 100644 (file)
@@ -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)
     {
index e8e181ca325d3f58506ac5d58c7b752c558f9129..77059fab23e7406aabaa46c42ab34fb1510d977a 100644 (file)
@@ -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);
+};
index ff462c217676a8ed68dc0a10b50ea92fc001de07..3d6492cbcd6e4e7f7d608652fed6c06fb00340ca 100644 (file)
@@ -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);