added wxTheme::GetArtProvider to wxUniv

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14755 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík 2002-03-24 00:23:28 +00:00
parent c2edb18a7d
commit 536b70ac68
5 changed files with 86 additions and 53 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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 <signal.h> // 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;

View File

@ -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;
}

View File

@ -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;
}