X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/affebd0a6e2254b69c823397f80a85a7e8c06fc3..fb8d7eb7a880f1f2e32d8830f9c5e12b2536e05f:/src/univ/theme.cpp?ds=inline diff --git a/src/univ/theme.cpp b/src/univ/theme.cpp index 4f89ceb076..9aef4355b9 100644 --- a/src/univ/theme.cpp +++ b/src/univ/theme.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: univ/theme.cpp +// Name: src/univ/theme.cpp // Purpose: implementation of wxTheme // Author: Vadim Zeitlin // Modified by: @@ -39,16 +39,16 @@ // 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 @@ -70,7 +70,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, info = info->next; } - return (wxTheme *)NULL; + return NULL; } // ---------------------------------------------------------------------------- @@ -88,7 +88,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, wxString nameDefTheme; // use the environment variable first - const wxChar *p = wxGetenv(_T("WXTHEME")); + const wxChar *p = wxGetenv(wxT("WXTHEME")); if ( p ) { nameDefTheme = p; @@ -147,3 +147,58 @@ wxTheme::~wxTheme() { } + +// ---------------------------------------------------------------------------- +// 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(); +}