X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3d5f724f8ee159b52458384c1eeebca0e9a2bebe..e1ef506e13b7c8e96483b7fc0852dcb46688badd:/include/wx/univ/theme.h diff --git a/include/wx/univ/theme.h b/include/wx/univ/theme.h index abc19d6631..95544b419b 100644 --- a/include/wx/univ/theme.h +++ b/include/wx/univ/theme.h @@ -20,14 +20,14 @@ // wxTheme // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxArtProvider; -class WXDLLEXPORT wxColourScheme; -class WXDLLEXPORT wxInputConsumer; -class WXDLLEXPORT wxInputHandler; -class WXDLLEXPORT wxRenderer; -struct WXDLLEXPORT wxThemeInfo; - -class WXDLLEXPORT wxTheme +class WXDLLIMPEXP_FWD_CORE wxArtProvider; +class WXDLLIMPEXP_FWD_CORE wxColourScheme; +class WXDLLIMPEXP_FWD_CORE wxInputConsumer; +class WXDLLIMPEXP_FWD_CORE wxInputHandler; +class WXDLLIMPEXP_FWD_CORE wxRenderer; +struct WXDLLIMPEXP_FWD_CORE wxThemeInfo; + +class WXDLLIMPEXP_CORE wxTheme { public: // static methods @@ -73,14 +73,42 @@ private: // the current theme static wxTheme *ms_theme; - friend struct WXDLLEXPORT wxThemeInfo; + friend struct wxThemeInfo; +}; + +// ---------------------------------------------------------------------------- +// wxDelegateTheme: it is impossible to inherit from any of standard +// themes as their declarations are in private code, but you can use this +// class to override only some of their functions - all the other ones +// will be left to the original theme +// ---------------------------------------------------------------------------- + +class wxDelegateTheme : public wxTheme +{ +public: + wxDelegateTheme(const wxString& theme); + virtual ~wxDelegateTheme(); + + virtual wxRenderer *GetRenderer(); + virtual wxArtProvider *GetArtProvider(); + virtual wxInputHandler *GetInputHandler(const wxString& control, + wxInputConsumer *consumer); + virtual wxColourScheme *GetColourScheme(); + +protected: + // gets or creates theme and sets m_theme to point to it, + // returns true on success + bool GetOrCreateTheme(); + + wxString m_themeName; + wxTheme *m_theme; }; // ---------------------------------------------------------------------------- // dynamic theme creation helpers // ---------------------------------------------------------------------------- -struct WXDLLEXPORT wxThemeInfo +struct WXDLLIMPEXP_CORE wxThemeInfo { typedef wxTheme *(*Constructor)(); @@ -94,7 +122,7 @@ struct WXDLLEXPORT wxThemeInfo wxThemeInfo *next; // constructor for the struct itself - wxThemeInfo(Constructor ctor, const wxChar *name, const wxChar *desc); + wxThemeInfo(Constructor ctor, const wxString& name, const wxString& desc); }; // ---------------------------------------------------------------------------- @@ -109,7 +137,7 @@ struct WXDLLEXPORT wxThemeInfo WX_USE_THEME_IMPL(themename) #define WX_USE_THEME_IMPL(themename) \ - extern WXDLLEXPORT_DATA(bool) wxThemeUse##themename; \ + extern WXDLLIMPEXP_DATA_CORE(bool) wxThemeUse##themename; \ static struct wxThemeUserFor##themename \ { \ wxThemeUserFor##themename() { wxThemeUse##themename = true; } \ @@ -125,7 +153,7 @@ struct WXDLLEXPORT wxThemeInfo // and this one must be inserted in the source file #define WX_IMPLEMENT_THEME(classname, themename, themedesc) \ - WXDLLEXPORT_DATA(bool) wxThemeUse##themename = true; \ + WXDLLIMPEXP_DATA_CORE(bool) wxThemeUse##themename = true; \ wxTheme *wxCtorFor##themename() { return new classname; } \ wxThemeInfo classname::ms_info##themename(wxCtorFor##themename, \ wxT( #themename ), themedesc)