#ifndef _WX_MIMETYPE_H_
#define _WX_MIMETYPE_H_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma interface "mimetypebase.h"
-#endif // __GNUG__
-
// ----------------------------------------------------------------------------
// headers and such
// ----------------------------------------------------------------------------
// the things we really need
#include "wx/string.h"
#include "wx/dynarray.h"
+#include "wx/arrstr.h"
// fwd decls
class WXDLLIMPEXP_BASE wxIconLocation;
*/
+// wxMimeTypeCommands stores the verbs defined for the given MIME type with
+// their values
+class WXDLLIMPEXP_BASE wxMimeTypeCommands
+{
+public:
+ wxMimeTypeCommands() {}
+
+ wxMimeTypeCommands(const wxArrayString& verbs,
+ const wxArrayString& commands)
+ : m_verbs(verbs),
+ m_commands(commands)
+ {
+ }
+
+ // add a new verb with the command or replace the old value
+ void AddOrReplaceVerb(const wxString& verb, const wxString& cmd)
+ {
+ int n = m_verbs.Index(verb, false /* ignore case */);
+ if ( n == wxNOT_FOUND )
+ {
+ m_verbs.Add(verb);
+ m_commands.Add(cmd);
+ }
+ else
+ {
+ m_commands[n] = cmd;
+ }
+ }
+
+ void Add(const wxString& s)
+ {
+ m_verbs.Add(s.BeforeFirst(wxT('=')));
+ m_commands.Add(s.AfterFirst(wxT('=')));
+ }
+
+ // access the commands
+ size_t GetCount() const { return m_verbs.GetCount(); }
+ const wxString& GetVerb(size_t n) const { return m_verbs[n]; }
+ const wxString& GetCmd(size_t n) const { return m_commands[n]; }
+
+ bool HasVerb(const wxString& verb) const
+ { return m_verbs.Index(verb) != wxNOT_FOUND; }
+
+ wxString GetCommandForVerb(const wxString& verb, size_t *idx = NULL) const
+ {
+ wxString s;
+
+ int n = m_verbs.Index(verb);
+ if ( n != wxNOT_FOUND )
+ {
+ s = m_commands[(size_t)n];
+ if ( idx )
+ *idx = n;
+ }
+ else if ( idx )
+ {
+ // different from any valid index
+ *idx = (size_t)-1;
+ }
+
+ return s;
+ }
+
+ // get a "verb=command" string
+ wxString GetVerbCmd(size_t n) const
+ {
+ return m_verbs[n] + wxT('=') + m_commands[n];
+ }
+
+private:
+ wxArrayString m_verbs;
+ wxArrayString m_commands;
+};
+
// ----------------------------------------------------------------------------
// wxFileTypeInfo: static container of information accessed via wxFileType.
//
wxFileTypeInfo() { }
// test if this object can be used
- bool IsValid() const { return !m_mimeType.IsEmpty(); }
+ bool IsValid() const { return !m_mimeType.empty(); }
// setters
// set the icon info
const wxString& GetDescription() const { return m_desc; }
// get the array of all extensions
const wxArrayString& GetExtensions() const { return m_exts; }
- int GetExtensionsCount() const {return m_exts.GetCount(); }
+ size_t GetExtensionsCount() const {return m_exts.GetCount(); }
// get the icon info
const wxString& GetIconFile() const { return m_iconFile; }
int GetIconIndex() const { return m_iconIndex; }
wxFileTypeImpl *m_impl;
};
+//----------------------------------------------------------------------------
+// wxMimeTypesManagerFactory
+//----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxMimeTypesManagerFactory
+{
+public:
+ wxMimeTypesManagerFactory() {}
+ virtual ~wxMimeTypesManagerFactory() {}
+
+ virtual wxMimeTypesManagerImpl *CreateMimeTypesManagerImpl();
+
+ static void SetFactory( wxMimeTypesManagerFactory *factory );
+ static wxMimeTypesManagerFactory *GetFactory();
+
+private:
+ static wxMimeTypesManagerFactory *m_factory;
+};
+
// ----------------------------------------------------------------------------
// wxMimeTypesManager: interface to system MIME database.
//
wxFileType *GetFileTypeFromMimeType(const wxString& mimeType);
// other operations: return true if there were no errors or false if there
- // were some unreckognized entries (the good entries are always read anyhow)
+ // were some unrecognized entries (the good entries are always read anyhow)
//
// FIXME: These ought to be private ??
// ----------------------------------------------------------------------------
// the default mime manager for wxWidgets programs
-WXDLLIMPEXP_DATA_BASE(extern wxMimeTypesManager *) wxTheMimeTypesManager;
+extern WXDLLIMPEXP_DATA_BASE(wxMimeTypesManager *) wxTheMimeTypesManager;
#endif // wxUSE_MIMETYPE