+void MyApp::DoMIMEDemo(wxCommandEvent& WXUNUSED(event))
+{
+ static wxString s_defaultExt = "xyz";
+
+ wxString ext = wxGetTextFromUser("Enter a file extension: ",
+ "MIME database test",
+ s_defaultExt);
+ if ( !!ext )
+ {
+ s_defaultExt = ext;
+
+ // init MIME database if not done yet
+ if ( !m_mimeDatabase )
+ {
+ m_mimeDatabase = new wxMimeTypesManager;
+
+ static const wxFileTypeInfo fallbacks[] =
+ {
+ wxFileTypeInfo("application/xyz",
+ "XyZ %s",
+ "XyZ -p %s",
+ "The one and only XYZ format file",
+ "xyz", "123", NULL),
+ wxFileTypeInfo("text/html",
+ "lynx %s",
+ "lynx -dump %s | lpr",
+ "HTML document (from fallback)",
+ "htm", "html", NULL),
+
+ // must terminate the table with this!
+ wxFileTypeInfo()
+ };
+
+ m_mimeDatabase->AddFallbacks(fallbacks);
+ }
+
+ wxTextCtrl& textCtrl = * GetTextCtrl();
+
+ wxFileType *filetype = m_mimeDatabase->GetFileTypeFromExtension(ext);
+ if ( !filetype )
+ {
+ textCtrl << "Unknown extension '" << ext << "'\n";
+ }
+ else
+ {
+ wxString type, desc, open;
+ filetype->GetMimeType(&type);
+ filetype->GetDescription(&desc);
+
+ wxString filename = "filename";
+ filename << "." << ext;
+ wxFileType::MessageParameters params(filename, type);
+ filetype->GetOpenCommand(&open, params);
+
+ textCtrl << "MIME information about extension '" << ext << "'\n"
+ << "\tMIME type: " << ( !type ? "unknown"
+ : type.c_str() ) << '\n'
+ << "\tDescription: " << ( !desc ? "" : desc.c_str() )
+ << '\n'
+ << "\tCommand to open: " << ( !open ? "no" : open.c_str() )
+ << '\n';
+
+ delete filetype;
+ }
+ }
+ //else: cancelled by user
+}
+