// 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)
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
#if wxUSE_MIMETYPE
-#ifndef WX_PRECOMP
- #include "wx/module.h"
-#endif
-
#ifndef WX_PRECOMP
#include "wx/string.h"
- #if wxUSE_GUI
- #include "wx/icon.h"
- #endif
#endif //WX_PRECOMP
+#include "wx/module.h"
#include "wx/log.h"
#include "wx/file.h"
+#include "wx/iconloc.h"
#include "wx/intl.h"
#include "wx/dynarray.h"
#include "wx/confbase.h"
// wxFileTypeInfo
// ----------------------------------------------------------------------------
-wxFileTypeInfo::wxFileTypeInfo(const char *mimeType,
- const char *openCmd,
- const char *printCmd,
- const char *desc,
+wxFileTypeInfo::wxFileTypeInfo(const wxChar *mimeType,
+ const wxChar *openCmd,
+ const wxChar *printCmd,
+ const wxChar *desc,
...)
: m_mimeType(mimeType),
m_openCmd(openCmd),
for ( ;; )
{
- const char *ext = va_arg(argptr, const char *);
+ const wxChar *ext = va_arg(argptr, const wxChar *);
if ( !ext )
{
// NULL terminates the list
return m_impl->GetMimeTypes(mimeTypes);
}
-bool wxFileType::GetIcon(wxIcon *icon,
- wxString *iconFile,
- int *iconIndex) const
+bool wxFileType::GetIcon(wxIconLocation *iconLoc) const
{
if ( m_info )
{
- if ( iconFile )
- *iconFile = m_info->GetIconFile();
- if ( iconIndex )
- *iconIndex = m_info->GetIconIndex();
-
-#if wxUSE_GUI
- if ( icon && !m_info->GetIconFile().empty() )
+ if ( iconLoc )
{
- // FIXME: what about the index?
- icon->LoadFile(m_info->GetIconFile());
+ iconLoc->SetFileName(m_info->GetIconFile());
+#ifdef __WXMSW__
+ iconLoc->SetIndex(m_info->GetIconIndex());
+#endif // __WXMSW__
}
-#endif // wxUSE_GUI
return TRUE;
}
-#if defined(__WXMSW__) || defined(__UNIX__)
- return m_impl->GetIcon(icon, iconFile, iconIndex);
-#else
- return m_impl->GetIcon(icon);
-#endif
+ return m_impl->GetIcon(iconLoc);
+}
+
+bool
+wxFileType::GetIcon(wxIconLocation *iconloc,
+ const MessageParameters& params) const
+{
+ if ( !GetIcon(iconloc) )
+ {
+ return false;
+ }
+
+ // we may have "%s" in the icon location string, at least under Windows, so
+ // expand this
+ if ( iconloc )
+ {
+ iconloc->SetFileName(ExpandCommand(iconloc->GetFileName(), params));
+ }
+
+ return true;
}
bool wxFileType::GetDescription(wxString *desc) const
return m_impl->GetOpenCommand(openCmd, params);
}
+wxString wxFileType::GetOpenCommand(const wxString& filename) const
+{
+ wxString cmd;
+ if ( !GetOpenCommand(&cmd, filename) )
+ {
+ // return empty string to indicate an error
+ cmd.clear();
+ }
+
+ return cmd;
+}
+
bool
wxFileType::GetPrintCommand(wxString *printCmd,
const wxFileType::MessageParameters& params) const
// VZ: should we do this?
// chris elliott : only makes sense in MS windows
if ( sTmp.empty() )
- GetOpenCommand(&sTmp, wxFileType::MessageParameters("", ""));
+ GetOpenCommand(&sTmp, wxFileType::MessageParameters(wxT(""), wxT("")));
#endif
wxCHECK_MSG( !sTmp.empty(), FALSE, _T("need the icon file") );
bool wxMimeTypesManager::Unassociate(wxFileType *ft)
{
-#if defined(__UNIX__) && !defined(__WXPM__)
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__) && !defined(__WINE__)
return m_impl->Unassociate(ft);
#else
return ft->Unassociate();
EnsureImpl();
wxFileType *ft = m_impl->GetFileTypeFromMimeType(mimeType);
- if ( ft ) {
+ if ( !ft ) {
// check the fallbacks
//
- // TODO linear search is potentially slow, perhaps we should use a sorted
- // array?
+ // TODO linear search is potentially slow, perhaps we should use a
+ // sorted array?
size_t count = m_fallbacks.GetCount();
for ( size_t n = 0; n < count; n++ ) {
if ( wxMimeTypesManager::IsOfType(mimeType,
void wxMimeTypesManager::Initialize(int mcapStyle,
const wxString& sExtraDir)
{
-#if defined(__UNIX__) && !defined(__WXPM__)
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__) && !defined(__WINE__)
EnsureImpl();
m_impl->Initialize(mcapStyle, sExtraDir);
// and this function clears all the data from the manager
void wxMimeTypesManager::ClearData()
{
-#if defined(__UNIX__) && !defined(__WXPM__)
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__) && !defined(__WINE__)
EnsureImpl();
m_impl->ClearData();
{
delete gs_mimeTypesManager.m_impl;
gs_mimeTypesManager.m_impl = NULL;
+ gs_mimeTypesManager.m_fallbacks.Clear();
}
}