add SetNativeTheme() (slightly modified patch 1884553)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-02-27 17:46:14 +00:00
parent 28dd9a9d03
commit c50c6fb23b
5 changed files with 43 additions and 1 deletions

View File

@@ -279,7 +279,8 @@ All (GUI):
- Made wxSizer::Fit() set the client size of the target window - Made wxSizer::Fit() set the client size of the target window
- Add support for wxDatePickerCtrl in wxGenericValidator (Herry Ayen Yang) - Add support for wxDatePickerCtrl in wxGenericValidator (Herry Ayen Yang)
- Added wxWindow::HasFocus(). - Added wxWindow::HasFocus().
- Added wxGLCanvas::IsDisplaySupported() - Added wxGLCanvas::IsDisplaySupported().
- Added wxApp::SetNativeTheme() (Stefan H.).
wxGTK: wxGTK:

View File

@@ -734,6 +734,19 @@ know what you're doing if you call it.
\helpref{wxApp::GetInstance}{wxappgetinstance} \helpref{wxApp::GetInstance}{wxappgetinstance}
\membersection{wxApp::SetNativeTheme}\label{wxappsetnativetheme}
\func{bool}{SetNativeTheme}{\param{const}{wxString\&}{theme}}
Allows runtime switching of the UI environment theme. Currently implemented for wxGTK2-only.
Return \true if theme was successfully changed.
\wxheading{Parameters}
\docparam{theme}{The name of the new theme or an absolute path to a gtkrc-theme-file}
\membersection{wxApp::SetTopWindow}\label{wxappsettopwindow} \membersection{wxApp::SetTopWindow}\label{wxappsettopwindow}
\func{void}{SetTopWindow}{\param{wxWindow* }{window}} \func{void}{SetTopWindow}{\param{wxWindow* }{window}}

View File

@@ -509,6 +509,9 @@ public:
// if it's unknown // if it's unknown
virtual wxLayoutDirection GetLayoutDirection() const; virtual wxLayoutDirection GetLayoutDirection() const;
// Change the theme used by the application, return true on success.
virtual bool SetNativeTheme(const wxString& WXUNUSED(theme)) { return false; }
// command line parsing (GUI-specific) // command line parsing (GUI-specific)
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------

View File

@@ -36,6 +36,7 @@ public:
* (palette/visual/colorcube). under wxMSW, OnInitGui() does nothing by * (palette/visual/colorcube). under wxMSW, OnInitGui() does nothing by
* default. when overriding this method, the code in it is likely to be * default. when overriding this method, the code in it is likely to be
* platform dependent, otherwise use OnInit(). */ * platform dependent, otherwise use OnInit(). */
virtual bool SetNativeTheme(const wxString& theme);
virtual bool OnInitGui(); virtual bool OnInitGui();
// override base class (pure) virtuals // override base class (pure) virtuals

View File

@@ -251,6 +251,30 @@ wxApp::~wxApp()
{ {
} }
bool wxApp::SetNativeTheme(const wxString& theme)
{
wxString path;
path = gtk_rc_get_theme_dir();
path += "/";
path += theme.utf8_str();
path += "/gtk-2.0/gtkrc";
if ( wxFileExists(path.utf8_str()) )
gtk_rc_add_default_file(path.utf8_str());
else if ( wxFileExists(theme.utf8_str()) )
gtk_rc_add_default_file(theme.utf8_str());
else
{
wxLogWarning("Theme \"%s\" not available.", theme);
return false;
}
gtk_rc_reparse_all_for_settings(gtk_settings_get_default(), TRUE);
return true;
}
bool wxApp::OnInitGui() bool wxApp::OnInitGui()
{ {
if ( !wxAppBase::OnInitGui() ) if ( !wxAppBase::OnInitGui() )