added wxDelegateTheme to accompany wxDelegateRenderer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -60,6 +60,7 @@
|
||||
#include "wx/univ/inphand.h"
|
||||
#include "wx/univ/colschem.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMetalRenderer: draw the GUI elements in Metal style
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
@@ -142,87 +143,36 @@ private:
|
||||
// wxMetalTheme
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxMetalTheme : public wxTheme
|
||||
class wxMetalTheme : public wxDelegateTheme
|
||||
{
|
||||
public:
|
||||
wxMetalTheme();
|
||||
virtual ~wxMetalTheme();
|
||||
wxMetalTheme() : wxDelegateTheme(_T("win32")), m_renderer(NULL) {}
|
||||
~wxMetalTheme() { delete m_renderer; }
|
||||
|
||||
virtual wxRenderer *GetRenderer();
|
||||
virtual wxArtProvider *GetArtProvider();
|
||||
virtual wxInputHandler *GetInputHandler(const wxString& control,
|
||||
wxInputConsumer *consumer);
|
||||
virtual wxColourScheme *GetColourScheme();
|
||||
|
||||
private:
|
||||
bool GetOrCreateTheme()
|
||||
protected:
|
||||
virtual wxRenderer *GetRenderer()
|
||||
{
|
||||
if ( !m_win32Theme )
|
||||
m_win32Theme = wxTheme::Create( wxT("win32") );
|
||||
return m_win32Theme != NULL;
|
||||
if ( !m_renderer )
|
||||
{
|
||||
m_renderer = new wxMetalRenderer(m_theme->GetRenderer(),
|
||||
GetColourScheme());
|
||||
}
|
||||
|
||||
return m_renderer;
|
||||
}
|
||||
|
||||
wxTheme *m_win32Theme;
|
||||
wxMetalRenderer *m_renderer;
|
||||
wxRenderer *m_renderer;
|
||||
|
||||
WX_DECLARE_THEME(Metal)
|
||||
};
|
||||
|
||||
WX_IMPLEMENT_THEME(wxMetalTheme, Metal, wxTRANSLATE("Metal theme"));
|
||||
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
||||
WX_IMPLEMENT_THEME(wxMetalTheme, Metal, wxTRANSLATE("Metal theme"));
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMetalTheme
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxMetalTheme::wxMetalTheme()
|
||||
{
|
||||
m_win32Theme = NULL;
|
||||
m_renderer = NULL;
|
||||
}
|
||||
|
||||
wxMetalTheme::~wxMetalTheme()
|
||||
{
|
||||
delete m_win32Theme;
|
||||
delete m_renderer;
|
||||
}
|
||||
|
||||
wxRenderer *wxMetalTheme::GetRenderer()
|
||||
{
|
||||
if ( !GetOrCreateTheme() )
|
||||
return 0;
|
||||
if ( !m_renderer )
|
||||
m_renderer = new wxMetalRenderer(m_win32Theme->GetRenderer(),
|
||||
m_win32Theme->GetColourScheme());
|
||||
|
||||
return m_renderer;
|
||||
}
|
||||
|
||||
wxArtProvider *wxMetalTheme::GetArtProvider()
|
||||
{
|
||||
if ( !GetOrCreateTheme() )
|
||||
return 0;
|
||||
return m_win32Theme->GetArtProvider();
|
||||
}
|
||||
|
||||
wxInputHandler *wxMetalTheme::GetInputHandler(const wxString& control,
|
||||
wxInputConsumer *consumer)
|
||||
{
|
||||
if ( !GetOrCreateTheme() )
|
||||
return 0;
|
||||
return m_win32Theme->GetInputHandler(control, consumer);
|
||||
}
|
||||
|
||||
wxColourScheme *wxMetalTheme::GetColourScheme()
|
||||
{
|
||||
if ( !GetOrCreateTheme() )
|
||||
return 0;
|
||||
return m_win32Theme->GetColourScheme();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMetalRenderer
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user