X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a290fa5a7deebe9d96c0c0089d18e27d4bd9b624..451a00f7d745ea4fec6c3aa1f838c591c1e31a0f:/src/univ/theme.cpp diff --git a/src/univ/theme.cpp b/src/univ/theme.cpp index ba0749f97d..8997f255a8 100644 --- a/src/univ/theme.cpp +++ b/src/univ/theme.cpp @@ -17,10 +17,6 @@ // headers // --------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "theme.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -51,8 +47,8 @@ wxTheme *wxTheme::ms_theme = (wxTheme *)NULL; // ---------------------------------------------------------------------------- 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 @@ -97,16 +93,12 @@ wxThemeInfo::wxThemeInfo(Constructor c, { nameDefTheme = p; } +#ifdef wxUNIV_DEFAULT_THEME else // use native theme by default { - #if defined(__WXGTK__) - nameDefTheme = _T("gtk"); - #elif defined(__WXX11__) - nameDefTheme = _T("win32"); - #else - nameDefTheme = _T("win32"); - #endif + nameDefTheme = wxSTRINGIZE_T(wxUNIV_DEFAULT_THEME); } +#endif // wxUNIV_DEFAULT_THEME wxTheme *theme = Create(nameDefTheme); @@ -141,7 +133,7 @@ wxThemeInfo::wxThemeInfo(Constructor c, // has one wxArtProvider *art = ms_theme->GetArtProvider(); if ( art ) - wxArtProvider::PushProvider(art); + wxArtProvider::Push(art); } return themeOld; @@ -155,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(); +}