// implementation
// ============================================================================
-wxThemeInfo *wxTheme::ms_allThemes = (wxThemeInfo *)NULL;
-wxTheme *wxTheme::ms_theme = (wxTheme *)NULL;
+wxThemeInfo *wxTheme::ms_allThemes = NULL;
+wxTheme *wxTheme::ms_theme = NULL;
// ----------------------------------------------------------------------------
// "dynamic" theme creation
// ----------------------------------------------------------------------------
wxThemeInfo::wxThemeInfo(Constructor c,
- const wxChar *n,
- const wxChar *d)
+ const wxString& n,
+ const wxString& d)
: name(n), desc(d), ctor(c)
{
// insert us (in the head of) the linked list
info = info->next;
}
- return (wxTheme *)NULL;
+ return NULL;
}
// ----------------------------------------------------------------------------
{
nameDefTheme = p;
}
+#ifdef wxUNIV_DEFAULT_THEME
else // use native theme by default
{
-#ifdef wxUNIV_DEFAULT_THEME
- nameDefTheme = _T(wxSTRINGIZE(wxUNIV_DEFAULT_THEME));
-#endif
+ nameDefTheme = wxSTRINGIZE_T(wxUNIV_DEFAULT_THEME);
}
+#endif // wxUNIV_DEFAULT_THEME
wxTheme *theme = Create(nameDefTheme);
{
}
+
+// ----------------------------------------------------------------------------
+// wxDelegateTheme
+// ----------------------------------------------------------------------------
+
+wxDelegateTheme::wxDelegateTheme(const wxString& theme)
+{
+ m_themeName = theme;
+ m_theme = NULL;
+}
+
+wxDelegateTheme::~wxDelegateTheme()
+{
+ delete m_theme;
+}
+
+bool wxDelegateTheme::GetOrCreateTheme()
+{
+ if ( !m_theme )
+ m_theme = wxTheme::Create(m_themeName);
+ return m_theme != NULL;
+}
+
+wxRenderer *wxDelegateTheme::GetRenderer()
+{
+ if ( !GetOrCreateTheme() )
+ return NULL;
+
+ return m_theme->GetRenderer();
+}
+
+wxArtProvider *wxDelegateTheme::GetArtProvider()
+{
+ if ( !GetOrCreateTheme() )
+ return NULL;
+
+ return m_theme->GetArtProvider();
+}
+
+wxInputHandler *wxDelegateTheme::GetInputHandler(const wxString& control,
+ wxInputConsumer *consumer)
+{
+ if ( !GetOrCreateTheme() )
+ return NULL;
+
+ return m_theme->GetInputHandler(control, consumer);
+}
+
+wxColourScheme *wxDelegateTheme::GetColourScheme()
+{
+ if ( !GetOrCreateTheme() )
+ return NULL;
+
+ return m_theme->GetColourScheme();
+}