bool GetExtensions(wxArrayString& extensions);
bool GetMimeType(wxString *mimeType) const
{ *mimeType = m_manager->m_aTypes[m_index]; return TRUE; }
- bool GetIcon(wxIcon *icon) const
+ bool GetIcon(wxIcon * WXUNUSED(icon)) const
{ return FALSE; } // @@ maybe with Gnome/KDE integration...
bool GetDescription(wxString *desc) const
{ *desc = m_manager->m_aDescriptions[m_index]; return TRUE; }
// wxMimeTypesManager
// ----------------------------------------------------------------------------
+bool wxMimeTypesManager::IsOfType(const wxString& mimeType,
+ const wxString& wildcard)
+{
+ wxASSERT_MSG( mimeType.Find('*') == wxNOT_FOUND,
+ "first MIME type can't contain wildcards" );
+
+ // all comparaisons are case insensitive (2nd arg of IsSameAs() is FALSE)
+ if ( wildcard.BeforeFirst('/').IsSameAs(mimeType.BeforeFirst('/'), FALSE) )
+ {
+ wxString strSubtype = wildcard.AfterFirst('/');
+
+ if ( strSubtype == '*' ||
+ strSubtype.IsSameAs(mimeType.AfterFirst('/'), FALSE) )
+ {
+ // matches (either exactly or it's a wildcard)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
wxMimeTypesManager::wxMimeTypesManager()
{
m_impl = new wxMimeTypesManagerImpl;
}
}
+ // although it doesn't seem to be covered by RFCs, some programs
+ // (notably Netscape) create their entries with several comma
+ // separated extensions (RFC mention the spaces only)
+ strExtensions.Replace(",", " ");
+
+ // also deal with the leading dot
+ if ( !strExtensions.IsEmpty() && strExtensions[0] == '.' ) {
+ strExtensions.erase(0, 1);
+ }
+
int index = m_aTypes.Index(strMimeType);
if ( index == wxNOT_FOUND ) {
// add a new entry
// programmer
wxLogDebug
(
- _("Mailcap file %s, line %d: unknown "
- "field '%s' for the MIME type "
- "'%s' ignored."),
+ "Mailcap file %s, line %d: unknown "
+ "field '%s' for the MIME type "
+ "'%s' ignored.",
strFileName.c_str(),
nLine + 1,
curField.c_str(),