+ operator const wxString*() const { return &m_str; }
+
+ wxString m_str;
+ };
+
+ // ctors
+
+ // 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,
+ // const wxString& desc,
+ // // the other parameters form a list of extensions for this
+ // // file type and should be terminated with wxNullPtr (not
+ // // just NULL!)
+ // ...);
+ WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
+ 4, (const CtorString&,
+ const CtorString&,
+ const CtorString&,
+ const CtorString&),
+ VarArgInit, VarArgInit)
+#ifdef __WATCOMC__
+ // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
+ WX_VARARG_WATCOM_WORKAROUND_CTOR(
+ wxFileTypeInfo,
+ 4, (const wxString&,
+ const wxString&,
+ const wxString&,
+ const wxString&),
+ (CtorString(f1),
+ CtorString(f2),
+ CtorString(f3),
+ CtorString(f4)));
+ WX_VARARG_WATCOM_WORKAROUND_CTOR(
+ wxFileTypeInfo,
+ 4, (const wxCStrData&,
+ const wxCStrData&,
+ const wxCStrData&,
+ const wxCStrData&),
+ (CtorString(f1),
+ CtorString(f2),
+ CtorString(f3),
+ CtorString(f4)));
+ WX_VARARG_WATCOM_WORKAROUND_CTOR(
+ wxFileTypeInfo,
+ 4, (const char*,
+ const char*,
+ const char*,
+ const char*),
+ (CtorString(f1),
+ CtorString(f2),
+ CtorString(f3),
+ CtorString(f4)));
+ WX_VARARG_WATCOM_WORKAROUND_CTOR(
+ wxFileTypeInfo,
+ 4, (const wchar_t*,
+ const wchar_t*,
+ const wchar_t*,
+ const wchar_t*),
+ (CtorString(f1),
+ CtorString(f2),
+ CtorString(f3),
+ CtorString(f4)));
+#endif
+
+ // the array elements correspond to the parameters of the ctor above in
+ // the same order
+ wxFileTypeInfo(const wxArrayString& sArray);
+
+ // invalid item - use this to terminate the array passed to
+ // wxMimeTypesManager::AddFallbacks
+ wxFileTypeInfo() { }
+
+ // test if this object can be used
+ 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)
+ {
+ m_iconFile = iconFile;
+ m_iconIndex = iconIndex;
+ }
+ // set the short desc
+ void SetShortDesc(const wxString& shortDesc) { m_shortDesc = shortDesc; }
+
+ // accessors
+ // get the MIME type
+ const wxString& GetMimeType() const { return m_mimeType; }
+ // get the open command
+ const wxString& GetOpenCommand() const { return m_openCmd; }
+ // get the print command
+ const wxString& GetPrintCommand() const { return m_printCmd; }
+ // get the short description (only used under Win32 so far)
+ const wxString& GetShortDesc() const { return m_shortDesc; }
+ // get the long, user visible description
+ const wxString& GetDescription() const { return m_desc; }
+ // get the array of all extensions
+ const wxArrayString& GetExtensions() const { return m_exts; }
+ size_t GetExtensionsCount() const {return m_exts.GetCount(); }
+ // get the icon info
+ const wxString& GetIconFile() const { return m_iconFile; }
+ int GetIconIndex() const { return m_iconIndex; }
+
+private:
+ wxString m_mimeType, // the MIME type in "type/subtype" form
+ m_openCmd, // command to use for opening the file (%s allowed)
+ m_printCmd, // command to use for printing the file (%s allowed)
+ m_shortDesc, // a short string used in the registry
+ m_desc; // a free form description of this file type
+
+ // icon stuff
+ wxString m_iconFile; // the file containing the icon
+ int m_iconIndex; // icon index in this file
+
+ wxArrayString m_exts; // the extensions which are mapped on this filetype
+
+
+#if 0 // TODO
+ // the additional (except "open" and "print") command names and values
+ wxArrayString m_commandNames,
+ m_commandValues;
+#endif // 0
+};
+
+WX_DECLARE_USER_EXPORTED_OBJARRAY(wxFileTypeInfo, wxArrayFileTypeInfo,
+ WXDLLIMPEXP_BASE);
+
+// ----------------------------------------------------------------------------
+// wxFileType: gives access to all information about the files of given type.
+//