Add non-vararg wxFileTypeInfo ctor and various setters.

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
This commit is contained in:
Vadim Zeitlin
2010-10-01 13:05:42 +00:00
parent 323d36e452
commit df53be12c5
3 changed files with 103 additions and 9 deletions

View File

@@ -152,8 +152,16 @@ public:
}; };
// ctors // 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, // wxFileTypeInfo(const wxString& mimeType,
// const wxString& openCmd, // const wxString& openCmd,
// const wxString& printCmd, // const wxString& printCmd,
@@ -224,6 +232,16 @@ public:
bool IsValid() const { return !m_mimeType.empty(); } bool IsValid() const { return !m_mimeType.empty(); }
// setters // 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 // set the icon info
void SetIcon(const wxString& iconFile, int iconIndex = 0) void SetIcon(const wxString& iconFile, int iconIndex = 0)
{ {

View File

@@ -334,3 +334,83 @@ public:
const MessageParameters& params) const; 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);
};

View File

@@ -228,14 +228,10 @@ void InteractiveOutputTestCase::TestMimeAssociate()
#ifdef TEST_MIME #ifdef TEST_MIME
wxPuts(wxT("*** Testing creation of filetype association ***\n")); wxPuts(wxT("*** Testing creation of filetype association ***\n"));
wxFileTypeInfo ftInfo( wxFileTypeInfo ftInfo("application/x-xyz");
wxT("application/x-xyz"), ftInfo.SetOpenCommand("xyzview '%s'");
wxT("xyzview '%s'"), // open cmd ftInfo.SetDescription("XYZ File");
wxT(""), // print cmd ftInfo.AddExtension(".xyz");
wxT("XYZ File"), // description
wxT(".xyz"), // extensions
wxNullPtr // end of extensions
);
ftInfo.SetShortDesc(wxT("XYZFile")); // used under Win32 only ftInfo.SetShortDesc(wxT("XYZFile")); // used under Win32 only
wxFileType *ft = wxTheMimeTypesManager->Associate(ftInfo); wxFileType *ft = wxTheMimeTypesManager->Associate(ftInfo);