// Created: 06.08.00
// RCS-ID: $Id$
// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
-// Licence: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ===========================================================================
// headers
// ---------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "theme.h"
#endif
#include "wx/log.h"
#endif // WX_PRECOMP
+#include "wx/artprov.h"
+
#include "wx/univ/renderer.h"
#include "wx/univ/inphand.h"
#include "wx/univ/theme.h"
wxThemeInfo *info = ms_allThemes;
while ( info )
{
- if ( name == info->name )
+ if ( name.CmpNoCase(info->name) == 0 )
{
return info->ctor();
}
if ( ms_theme )
{
// we already have a theme
- return TRUE;
+ return true;
}
wxString nameDefTheme;
}
else // use native theme by default
{
- #if defined(__WXMSW__)
- nameDefTheme = _T("win32");
- #elif defined(__WXGTK__)
+ #if defined(__WXGTK__)
nameDefTheme = _T("gtk");
+ #elif defined(__WXX11__)
+ nameDefTheme = _T("win32");
+ #else
+ nameDefTheme = _T("win32");
#endif
}
- ms_theme = Create(nameDefTheme);
+ wxTheme *theme = Create(nameDefTheme);
// fallback to the first one in the list
- if ( !ms_theme && ms_allThemes )
+ if ( !theme && ms_allThemes )
{
- ms_theme = ms_allThemes->ctor();
+ theme = ms_allThemes->ctor();
}
// abort if still nothing
- if ( !ms_theme )
+ if ( !theme )
{
wxLogError(_("Failed to initialize GUI: no built-in themes found."));
- return FALSE;
+ return false;
}
- return TRUE;
+ // Set the theme as current.
+ wxTheme::Set(theme);
+
+ return true;
}
/* static */ wxTheme *wxTheme::Set(wxTheme *theme)
{
wxTheme *themeOld = ms_theme;
ms_theme = theme;
+
+ if ( ms_theme )
+ {
+ // automatically start using the art provider of the new theme if it
+ // has one
+ wxArtProvider *art = ms_theme->GetArtProvider();
+ if ( art )
+ wxArtProvider::PushProvider(art);
+ }
+
return themeOld;
}