#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; }
const wxFileType::MessageParameters& params) const;
// set an arbitrary command, ask confirmation if it already exists and
- // overwriteprompt is TRUE
+ // overwriteprompt is true
bool SetCommand(const wxString& cmd, const wxString& verb,
- bool overwriteprompt = TRUE);
+ bool overwriteprompt = true);
bool SetDefaultIcon(const wxString& cmd = wxEmptyString, int index = 0);
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.
//
// check if the given MIME type is the same as the other one: the
// second argument may contain wildcards ('*'), but not the first. If
// the types are equal or if the mimeType matches wildcard the function
- // returns TRUE, otherwise it returns FALSE
+ // returns true, otherwise it returns false
static bool IsOfType(const wxString& mimeType, const wxString& wildcard);
// ctor
// get file type from MIME type (in format <category>/<format>)
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)
+ // other operations: return true if there were no errors or false if there
+ // were some unrecognized entries (the good entries are always read anyhow)
//
// FIXME: These ought to be private ??
// read in additional file (the standard ones are read automatically)
// in mailcap format (see mimetype.cpp for description)
//
- // 'fallback' parameter may be set to TRUE to avoid overriding the
+ // 'fallback' parameter may be set to true to avoid overriding the
// settings from other, previously parsed, files by this one: normally,
// the files read most recently would override the older files, but with
- // fallback == TRUE this won't happen
+ // fallback == true this won't happen
- bool ReadMailcap(const wxString& filename, bool fallback = FALSE);
+ bool ReadMailcap(const wxString& filename, bool fallback = false);
// read in additional file in mime.types format
bool ReadMimeTypes(const wxString& filename);
// these functions can be used to provide default values for some of the
// MIME types inside the program itself (you may also use
- // ReadMailcap(filenameWithDefaultTypes, TRUE /* use as fallback */) to
+ // ReadMailcap(filenameWithDefaultTypes, true /* use as fallback */) to
// achieve the same goal, but this requires having this info in a file).
//
// The filetypes array should be terminated by either NULL entry or an
// ----------------------------------------------------------------------------
// the default mime manager for wxWidgets programs
-WXDLLIMPEXP_DATA_BASE(extern wxMimeTypesManager *) wxTheMimeTypesManager;
+extern WXDLLIMPEXP_DATA_BASE(wxMimeTypesManager *) wxTheMimeTypesManager;
#endif // wxUSE_MIMETYPE