/////////////////////////////////////////////////////////////////////////////
-// Name: common/mimecmn.cpp
+// Name: src/common/mimecmn.cpp
// Purpose: classes and functions to manage MIME types
// Author: Vadim Zeitlin
// Modified by:
// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
- #pragma implementation "mimetypebase.h"
-#endif
-
// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#if wxUSE_MIMETYPE
+#include "wx/mimetype.h"
+
#ifndef WX_PRECOMP
- #include "wx/string.h"
+ #include "wx/dynarray.h"
+ #include "wx/string.h"
+ #include "wx/intl.h"
+ #include "wx/log.h"
+ #include "wx/module.h"
#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"
-#include "wx/mimetype.h"
-
// other standard headers
#include <ctype.h>
#elif defined(__WXPM__) || defined (__EMX__)
#include "wx/os2/mimetype.h"
#undef __UNIX__
+#elif defined(__DOS__)
+ #include "wx/msdos/mimetype.h"
#else // Unix
#include "wx/unix/mimetype.h"
#endif
for ( ;; )
{
+ // icc gives this warning in its own va_arg() macro, argh
+#ifdef __INTELC__
+ #pragma warning(push)
+ #pragma warning(disable: 1684)
+#endif
+
const wxChar *ext = va_arg(argptr, const wxChar *);
+
+#ifdef __INTELC__
+ #pragma warning(pop)
+#endif
if ( !ext )
{
// NULL terminates the list
}
#include "wx/arrimpl.cpp"
-WX_DEFINE_OBJARRAY(wxArrayFileTypeInfo);
+WX_DEFINE_OBJARRAY(wxArrayFileTypeInfo)
// ============================================================================
// implementation of the wrapper classes
#endif
}
-bool wxFileType::SetCommand(const wxString& cmd, const wxString& verb,
-bool overwriteprompt)
+bool wxFileType::SetCommand(const wxString& cmd,
+ const wxString& verb,
+ bool overwriteprompt)
{
#if defined (__WXMSW__) || defined(__UNIX__)
return m_impl->SetCommand(cmd, verb, overwriteprompt);
#else
+ wxUnusedVar(cmd);
+ wxUnusedVar(verb);
+ wxUnusedVar(overwriteprompt);
wxFAIL_MSG(_T("not implemented"));
return false;
#endif
#if defined (__WXMSW__) || defined(__UNIX__)
return m_impl->SetDefaultIcon (cmd, index);
#else
+ wxUnusedVar(index);
wxFAIL_MSG(_T("not implemented"));
-
return false;
#endif
}
+// ----------------------------------------------------------------------------
+// wxMimeTypesManagerFactory
+// ----------------------------------------------------------------------------
+
+wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::m_factory = NULL;
+
+/* static */
+void wxMimeTypesManagerFactory::Set(wxMimeTypesManagerFactory *factory)
+{
+ delete m_factory;
+
+ m_factory = factory;
+}
+
+/* static */
+wxMimeTypesManagerFactory *wxMimeTypesManagerFactory::Get()
+{
+ if ( !m_factory )
+ m_factory = new wxMimeTypesManagerFactory;
+
+ return m_factory;
+}
+
+wxMimeTypesManagerImpl *wxMimeTypesManagerFactory::CreateMimeTypesManagerImpl()
+{
+ return new wxMimeTypesManagerImpl;
+}
// ----------------------------------------------------------------------------
// wxMimeTypesManager
void wxMimeTypesManager::EnsureImpl()
{
if ( !m_impl )
- m_impl = new wxMimeTypesManagerImpl;
+ m_impl = wxMimeTypesManagerFactory::Get()->CreateMimeTypesManagerImpl();
}
bool wxMimeTypesManager::IsOfType(const wxString& mimeType,
bool wxMimeTypesManager::Unassociate(wxFileType *ft)
{
+ EnsureImpl();
+
#if defined(__UNIX__) && !defined(__CYGWIN__) && !defined(__WINE__)
return m_impl->Unassociate(ft);
#else
#if defined(__WXMSW__) || defined(__UNIX__)
return m_impl->Associate(ftInfo);
#else // other platforms
+ wxUnusedVar(ftInfo);
wxFAIL_MSG( _T("not implemented") ); // TODO
return NULL;
#endif // platforms
{
public:
wxMimeTypeCmnModule() : wxModule() { }
+
virtual bool OnInit() { return true; }
virtual void OnExit()
{
- // this avoids false memory leak allerts:
+ wxMimeTypesManagerFactory::Set(NULL);
+
if ( gs_mimeTypesManager.m_impl != NULL )
{
delete gs_mimeTypesManager.m_impl;