From 536b70ac680647cd72b71c21102869f750b73cab Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Sun, 24 Mar 2002 00:23:28 +0000 Subject: [PATCH] added wxTheme::GetArtProvider to wxUniv git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14755 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/univ/renderer.h | 8 ----- include/wx/univ/theme.h | 4 +++ src/common/appcmn.cpp | 4 +++ src/univ/themes/gtk.cpp | 62 ++++++++++++++++++++++++-------------- src/univ/themes/win32.cpp | 61 +++++++++++++++++++++++-------------- 5 files changed, 86 insertions(+), 53 deletions(-) diff --git a/include/wx/univ/renderer.h b/include/wx/univ/renderer.h index d00bc1c066..f1c2f9c5b9 100644 --- a/include/wx/univ/renderer.h +++ b/include/wx/univ/renderer.h @@ -438,12 +438,6 @@ public: const wxPoint& pt, int flags = 0) const = 0; - - // get the standard icon used by wxWin dialogs - this allows the user - // to customize the standard dialogs. The 'which' parameter is one of - // wxICON_XXX values - virtual wxIcon GetStdIcon(int which) const = 0; - // virtual dtor for any base class virtual ~wxRenderer(); @@ -799,8 +793,6 @@ public: const wxPoint& pt, int flags) const { return m_renderer->HitTestFrame(rect, pt, flags); } - virtual wxIcon GetStdIcon(int which) const - { return m_renderer->GetStdIcon(which); } protected: wxRenderer *m_renderer; diff --git a/include/wx/univ/theme.h b/include/wx/univ/theme.h index 97831c741e..ea2cedfce8 100644 --- a/include/wx/univ/theme.h +++ b/include/wx/univ/theme.h @@ -25,6 +25,7 @@ class WXDLLEXPORT wxRenderer; class WXDLLEXPORT wxColourScheme; class WXDLLEXPORT wxInputHandler; +class WXDLLEXPORT wxArtProvider; struct WXDLLEXPORT wxThemeInfo; class WXDLLEXPORT wxTheme @@ -51,6 +52,9 @@ public: // get the renderer implementing all the control-drawing operations in // this theme virtual wxRenderer *GetRenderer() = 0; + + // get the art provider to be used together with this theme + virtual wxArtProvider *GetArtProvider() = 0; // get the input handler of the given type virtual wxInputHandler *GetInputHandler(const wxString& handlerType) = 0; diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index dca1e2af50..eac7451a4b 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -42,6 +42,7 @@ #include "wx/confbase.h" #include "wx/tokenzr.h" #include "wx/utils.h" +#include "wx/artprov.h" #if !defined(__WXMSW__) || defined(__WXMICROWIN__) #include // for SIGTRAP used by wxTrap() @@ -107,6 +108,9 @@ bool wxAppBase::OnInitGui() #ifdef __WXUNIVERSAL__ if ( !wxTheme::Get() && !wxTheme::CreateDefault() ) return FALSE; + wxArtProvider *art = wxTheme::Get()->GetArtProvider(); + if ( art ) + wxArtProvider::PushProvider(art); #endif // __WXUNIVERSAL__ return TRUE; diff --git a/src/univ/themes/gtk.cpp b/src/univ/themes/gtk.cpp index 7761d66acc..0fb2adda78 100644 --- a/src/univ/themes/gtk.cpp +++ b/src/univ/themes/gtk.cpp @@ -48,12 +48,13 @@ #include "wx/notebook.h" #include "wx/spinbutt.h" +#include "wx/toplevel.h" +#include "wx/artprov.h" #include "wx/univ/renderer.h" #include "wx/univ/inphand.h" #include "wx/univ/colschem.h" #include "wx/univ/theme.h" -#include "wx/toplevel.h" class WXDLLEXPORT wxGTKMenuGeometryInfo; @@ -256,8 +257,6 @@ public: virtual wxSize GetFrameIconSize() const; virtual int HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags) const; - virtual wxIcon GetStdIcon(int which) const; - virtual void GetComboBitmaps(wxBitmap *bmpNormal, wxBitmap *bmpFocus, wxBitmap *bmpPressed, @@ -566,6 +565,18 @@ public: virtual wxColour GetBackground(wxWindow *win) const; }; +// ---------------------------------------------------------------------------- +// wxGTKArtProvider +// ---------------------------------------------------------------------------- + +class wxGTKArtProvider : public wxArtProvider +{ +protected: + virtual wxBitmap CreateBitmap(const wxArtID& id, + const wxArtClient& client, + const wxSize& size); +}; + // ---------------------------------------------------------------------------- // wxGTKTheme // ---------------------------------------------------------------------------- @@ -579,6 +590,7 @@ public: virtual ~wxGTKTheme(); virtual wxRenderer *GetRenderer(); + virtual wxArtProvider *GetArtProvider(); virtual wxInputHandler *GetInputHandler(const wxString& control); virtual wxColourScheme *GetColourScheme(); @@ -587,6 +599,8 @@ private: wxInputHandler *GetDefaultInputHandler(); wxGTKRenderer *m_renderer; + + wxGTKArtProvider *m_artProvider; // the names of the already created handlers and the handlers themselves // (these arrays are synchronized) @@ -641,6 +655,16 @@ wxRenderer *wxGTKTheme::GetRenderer() return m_renderer; } +wxArtProvider *wxGTKTheme::GetArtProvider() +{ + if ( !m_artProvider ) + { + m_artProvider = new wxGTKArtProvider; + } + + return m_artProvider; +} + wxColourScheme *wxGTKTheme::GetColourScheme() { if ( !m_scheme ) @@ -4384,27 +4408,19 @@ static char *question_xpm[] = { "$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$." }; - -wxIcon wxGTKRenderer::GetStdIcon(int which) const +wxBitmap wxGTKArtProvider::CreateBitmap(const wxArtID& id, + const wxArtClient& WXUNUSED(client), + const wxSize& WXUNUSED(size)) { - switch(which) - { - case wxICON_INFORMATION: - return wxIcon(info_xpm); - - case wxICON_QUESTION: - return wxIcon(question_xpm); - - case wxICON_EXCLAMATION: - return wxIcon(warning_xpm); - - default: - wxFAIL_MSG(wxT("requested non existent standard icon")); - // still fall through - - case wxICON_HAND: - return wxIcon(error_xpm); - } + if ( id == wxART_INFORMATION ) + return wxBitmap(info_xpm); + if ( id == wxART_ERROR ) + return wxBitmap(error_xpm); + if ( id == wxART_WARNING ) + return wxBitmap(warning_xpm); + if ( id == wxART_QUESTION ) + return wxBitmap(question_xpm); + return wxNullBitmap; } diff --git a/src/univ/themes/win32.cpp b/src/univ/themes/win32.cpp index ca0b2fd4bc..ba02e22faf 100644 --- a/src/univ/themes/win32.cpp +++ b/src/univ/themes/win32.cpp @@ -50,9 +50,10 @@ #include "wx/spinbutt.h" #include "wx/settings.h" #include "wx/menu.h" +#include "wx/artprov.h" +#include "wx/toplevel.h" #include "wx/univ/scrtimer.h" -#include "wx/toplevel.h" #include "wx/univ/renderer.h" #include "wx/univ/inphand.h" #include "wx/univ/colschem.h" @@ -321,8 +322,6 @@ public: virtual wxSize GetFrameIconSize() const; virtual int HitTestFrame(const wxRect& rect, const wxPoint& pt, int flags) const; - virtual wxIcon GetStdIcon(int which) const; - virtual void GetComboBitmaps(wxBitmap *bmpNormal, wxBitmap *bmpFocus, wxBitmap *bmpPressed, @@ -628,6 +627,18 @@ public: virtual wxColour GetBackground(wxWindow *win) const; }; +// ---------------------------------------------------------------------------- +// wxWin32ArtProvider +// ---------------------------------------------------------------------------- + +class wxWin32ArtProvider : public wxArtProvider +{ +protected: + virtual wxBitmap CreateBitmap(const wxArtID& id, + const wxArtClient& client, + const wxSize& size); +}; + // ---------------------------------------------------------------------------- // wxWin32Theme // ---------------------------------------------------------------------------- @@ -641,6 +652,7 @@ public: virtual ~wxWin32Theme(); virtual wxRenderer *GetRenderer(); + virtual wxArtProvider *GetArtProvider(); virtual wxInputHandler *GetInputHandler(const wxString& control); virtual wxColourScheme *GetColourScheme(); @@ -649,6 +661,8 @@ private: wxInputHandler *GetDefaultInputHandler(); wxWin32Renderer *m_renderer; + + wxWin32ArtProvider *m_artProvider; // the names of the already created handlers and the handlers themselves // (these arrays are synchronized) @@ -1187,6 +1201,16 @@ wxRenderer *wxWin32Theme::GetRenderer() return m_renderer; } +wxArtProvider *wxWin32Theme::GetArtProvider() +{ + if ( !m_artProvider ) + { + m_artProvider = new wxWin32ArtProvider; + } + + return m_artProvider; +} + wxInputHandler *wxWin32Theme::GetDefaultInputHandler() { if ( !m_handlerDefault ) @@ -3857,26 +3881,19 @@ static char *warning_xpm[]={ "....ddddddddddddddddddddddddddd.", ".....ddddddddddddddddddddddddd.."}; -wxIcon wxWin32Renderer::GetStdIcon(int which) const +wxBitmap wxWin32ArtProvider::CreateBitmap(const wxArtID& id, + const wxArtClient& WXUNUSED(client), + const wxSize& WXUNUSED(size)) { - switch(which) - { - case wxICON_INFORMATION: - return wxIcon(info_xpm); - - case wxICON_QUESTION: - return wxIcon(question_xpm); - - case wxICON_EXCLAMATION: - return wxIcon(warning_xpm); - - default: - wxFAIL_MSG(wxT("requested non existent standard icon")); - // still fall through - - case wxICON_HAND: - return wxIcon(error_xpm); - } + if ( id == wxART_INFORMATION ) + return wxBitmap(info_xpm); + if ( id == wxART_ERROR ) + return wxBitmap(error_xpm); + if ( id == wxART_WARNING ) + return wxBitmap(warning_xpm); + if ( id == wxART_QUESTION ) + return wxBitmap(question_xpm); + return wxNullBitmap; } -- 2.45.2