// Created: 23.09.98
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWindows license (part of wxExtra library)
+// Licence: wxWindows licence (part of wxExtra library)
/////////////////////////////////////////////////////////////////////////////
// known bugs; there may be others!! chris elliott, biol75@york.ac.uk 27 Mar 01
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "mimetype.h"
#endif
#ifndef WX_PRECOMP
#include "wx/string.h"
- #if wxUSE_GUI
- #include "wx/icon.h"
-
- #endif
#endif //WX_PRECOMP
#include "wx/dir.h"
#include "wx/utils.h"
#include "wx/tokenzr.h"
+#include "wx/iconloc.h"
#include "wx/unix/mimetype.h"
void wxMimeTypesManagerImpl::LoadGnomeMimeTypesFromMimeFile(const wxString& filename)
{
wxTextFile textfile(filename);
-#if defined(__WXGTK20__) && wxUSE_UNICODE
- if ( !textfile.Open( wxConvUTF8) )
-#else
if ( !textfile.Open() )
-#endif
return;
- wxLogTrace(TRACE_MIME, wxT("--- Opened Gnome file %s ---"),
- filename.c_str());
+
+ wxLogTrace(TRACE_MIME,
+ wxT("--- Opened Gnome file %s ---"),
+ filename.c_str());
// values for the entry being parsed
wxString curMimeType, curExtList;
// end of the entry
if ( !!curMimeType && !!curExtList )
{
- wxLogTrace(TRACE_MIME, wxT("--- At end of Gnome file finding mimetype %s ---"),
- curMimeType.c_str());
+ wxLogTrace(TRACE_MIME,
+ wxT("--- At end of Gnome file finding mimetype %s ---"),
+ curMimeType.c_str());
AddMimeTypeInfo(curMimeType, curExtList, wxEmptyString);
}
// this is a field=value ling
pc++; // skip leading TAB
- static const int lenField = 4; // strlen("ext:")
- if ( wxStrncmp(pc, wxT("ext:"), lenField) == 0 )
+ static const int lenField = 5; // strlen("ext: ")
+ if ( wxStrncmp(pc, wxT("ext: "), lenField) == 0 )
{
- // skip ' ' which follows and take everything left until the end
- // of line
- curExtList = pc + lenField + 1;
+ // skip it and take everything left until the end of line
+ curExtList = pc + lenField;
}
//else: some other field, we don't care
}
else
{
// this is the start of the new section
- wxLogTrace(TRACE_MIME, wxT("--- In Gnome file finding mimetype %s ---"),
- curMimeType.c_str());
+ wxLogTrace(TRACE_MIME,
+ wxT("--- In Gnome file finding mimetype %s ---"),
+ curMimeType.c_str());
if (! curMimeType.empty())
AddMimeTypeInfo(curMimeType, curExtList, wxEmptyString);
return wxFileType::ExpandCommand(sTmp, params);
}
-bool wxFileTypeImpl::GetIcon(wxIcon *icon,
- wxString *iconFile /*= NULL */,
- int *iconIndex /*= NULL*/) const
+bool wxFileTypeImpl::GetIcon(wxIconLocation *iconLoc) const
{
-#if wxUSE_GUI
wxString sTmp;
size_t i = 0;
while ( (i < m_index.GetCount() ) && sTmp.empty() )
sTmp = m_manager->m_aIcons[m_index[i]];
i ++;
}
- if ( sTmp.empty () ) return FALSE;
-
- wxIcon icn;
-
- if (sTmp.Right(4).MakeUpper() == _T(".XPM"))
- icn = wxIcon(sTmp);
- else
- icn = wxIcon(sTmp, wxBITMAP_TYPE_ANY);
+ if ( sTmp.empty () )
+ return FALSE;
- if ( icn.Ok() )
+ if ( iconLoc )
{
- *icon = icn;
- if (iconFile) *iconFile = sTmp;
- if (iconIndex) *iconIndex = 0;
- return TRUE;
+ iconLoc->SetFileName(sTmp);
}
-#endif // wxUSE_GUI
- return FALSE;
+ return TRUE;
}
m_aEntries.Add(entry ? entry : new wxMimeTypeCommands);
// change nIndex so we can use it below to add the extensions
- nIndex = m_aExtensions.Add(wxEmptyString);
+ m_aExtensions.Add(wxEmptyString);
+ nIndex = m_aExtensions.size() - 1;
m_aDescriptions.Add(strDesc);
}
entryOld->AddOrReplaceVerb(verb, entry->GetCmd(i));
}
}
+
+ // as we don't store it anywhere, it won't be deleted later as
+ // usual -- do it immediately instead
+ delete entry;
}
}
}
else if ( strLHS == wxT("exts") ) {
strExtensions = strRHS;
}
- else {
+ else if ( strLHS == _T("icon") )
+ {
// this one is simply ignored: it usually refers to Netscape
// built in icons which are useless for us anyhow
- if ( strLHS != _T("icon") )
- {
- // This crashes for some reason in wcslen() in libc. RR.
- // wxLogWarning(_("Unknown field in file %s, line %d: '%s'."),
- // strFileName.c_str(), nLine + 1, strLHS.c_str());
- }
+ }
+ else if ( !strLHS.StartsWith(_T("x-")) )
+ {
+ // we suppose that all fields starting with "X-" are
+ // unregistered extensions according to the standard practice,
+ // but it may be worth telling the user about other junk in
+ // his mime.types file
+ wxLogWarning(_("Unknown field in file %s, line %d: '%s'."),
+ strFileName.c_str(), nLine + 1, strLHS.c_str());
}
if ( !entryEnded ) {