Rearrange code to make adding wxMimeTypesManagerFactory
at runtim possible. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
// the things we really need
|
||||
#include "wx/string.h"
|
||||
#include "wx/dynarray.h"
|
||||
#include "wx/arrstr.h"
|
||||
|
||||
// fwd decls
|
||||
class WXDLLIMPEXP_BASE wxIconLocation;
|
||||
@@ -66,6 +67,80 @@ public:
|
||||
|
||||
*/
|
||||
|
||||
// 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.
|
||||
//
|
||||
@@ -269,6 +344,25 @@ private:
|
||||
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.
|
||||
//
|
||||
|
Reference in New Issue
Block a user