// for compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#include "wx/module.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+ #pragma hdrstop
#endif
+#if wxUSE_MIMETYPE
+
#ifndef WX_PRECOMP
- #include "wx/defs.h"
+ #include "wx/module.h"
#endif
+// this one is needed for MSVC5
+#include "wx/module.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
// implementation classes:
#if defined(__WXMSW__)
#include "wx/msw/mimetype.h"
-#elif defined (__WXMAC__)
+#elif defined(__WXMAC__)
#include "wx/mac/mimetype.h"
-#elif defined (__WXPM__)
+#elif defined(__WXPM__)
#include "wx/os2/mimetype.h"
#else // Unix
#include "wx/unix/mimetype.h"
va_end(argptr);
}
+
+wxFileTypeInfo::wxFileTypeInfo(const wxArrayString& sArray)
+{
+ m_mimeType = sArray [0u];
+ m_openCmd = sArray [1u];
+ m_printCmd = sArray [2u];
+ m_desc = sArray [3u];
+
+ size_t count = sArray.GetCount();
+ for ( size_t i = 4; i < count; i++ )
+ {
+ m_exts.Add(sArray[i]);
+ }
+}
+
#include "wx/arrimpl.cpp"
WX_DEFINE_OBJARRAY(wxArrayFileTypeInfo);
// behave like this, in particular a common test is 'test -n "$DISPLAY"'
// and appending "< %s" to this command makes the test fail... I don't
// know of the correct solution, try to guess what we have to do.
+
+ // test now carried out on reading file so test should never get here
if ( !hasFilename && !str.IsEmpty()
#ifdef __UNIX__
&& !str.StartsWith(_T("test "))
return TRUE;
}
-#ifdef __WXMSW__
+#if defined(__WXMSW__) || defined(__UNIX__)
return m_impl->GetIcon(icon, iconFile, iconIndex);
#else
return m_impl->GetIcon(icon);
if ( commands )
commands->Clear();
-#ifdef __WXMSW__
+#if defined (__WXMSW__) || defined(__UNIX__)
return m_impl->GetAllCommands(verbs, commands, params);
-#else // !__WXMSW__
+#else // !__WXMSW__ || Unix
// we don't know how to retrieve all commands, so just try the 2 we know
// about
size_t count = 0;
}
return count;
-#endif // __WXMSW__/!__WXMSW__
+#endif // __WXMSW__/| __UNIX__
}
bool wxFileType::Unassociate()
{
-#if defined(__WXMSW__) || defined(__UNIX__)
+#if defined(__WXMSW__)
return m_impl->Unassociate();
+#elif defined(__UNIX__) && !defined(__WXPM__)
+ return m_impl->Unassociate(this);
#else
wxFAIL_MSG( _T("not implemented") ); // TODO
return FALSE;
#endif
}
+bool wxFileType::SetCommand(const wxString& cmd, const wxString& verb,
+bool overwriteprompt)
+{
+#if defined (__WXMSW__) || defined(__UNIX__)
+ return m_impl->SetCommand(cmd, verb, overwriteprompt);
+#else
+ wxFAIL_MSG(_T("not implemented"));
+ return FALSE;
+#endif
+}
+
+bool wxFileType::SetDefaultIcon(const wxString& cmd, int index)
+{
+ wxString sTmp = cmd;
+#ifdef __WXMSW__
+ // VZ: should we do this?
+ // chris elliott : only makes sense in MS windows
+ if ( sTmp.empty() )
+ GetOpenCommand(&sTmp, wxFileType::MessageParameters("", ""));
+#endif
+ wxCHECK_MSG( !sTmp.empty(), FALSE, _T("need the icon file") );
+
+#if defined (__WXMSW__) || defined(__UNIX__)
+ return m_impl->SetDefaultIcon (cmd, index);
+#else
+ wxFAIL_MSG(_T("not implemented"));
+
+ return FALSE;
+#endif
+}
+
+
// ----------------------------------------------------------------------------
// wxMimeTypesManager
// ----------------------------------------------------------------------------
wxMimeTypesManager::~wxMimeTypesManager()
{
- delete m_impl;
+ if ( m_impl )
+ delete m_impl;
+}
+
+bool wxMimeTypesManager::Unassociate(wxFileType *ft)
+{
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__)
+ return m_impl->Unassociate(ft);
+#else
+ return ft->Unassociate();
+#endif
}
+
wxFileType *
wxMimeTypesManager::Associate(const wxFileTypeInfo& ftInfo)
{
EnsureImpl();
-#if defined(__WXMSW__) || defined(__UNIX__)
+#if defined(__WXMSW__) || (defined(__UNIX__) && !defined(__WXPM__))
return m_impl->Associate(ftInfo);
#else // other platforms
wxFAIL_MSG( _T("not implemented") ); // TODO
return countAll;
}
+void wxMimeTypesManager::Initialize(int mcapStyle,
+ const wxString& sExtraDir)
+{
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__)
+ EnsureImpl();
+
+ m_impl->Initialize(mcapStyle, sExtraDir);
+#else
+ (void)mcapStyle;
+ (void)sExtraDir;
+#endif // Unix
+}
+
+// and this function clears all the data from the manager
+void wxMimeTypesManager::ClearData()
+{
+#if defined(__UNIX__) && !defined(__WXPM__) && !defined(__CYGWIN__)
+ EnsureImpl();
+
+ m_impl->ClearData();
+#endif // Unix
+}
+
// ----------------------------------------------------------------------------
// global data and wxMimeTypeCmnModule
// ----------------------------------------------------------------------------
{
delete gs_mimeTypesManager.m_impl;
gs_mimeTypesManager.m_impl = NULL;
+ gs_mimeTypesManager.m_fallbacks.Clear();
}
}
IMPLEMENT_DYNAMIC_CLASS(wxMimeTypeCmnModule, wxModule)
+#endif // wxUSE_MIMETYPE