X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd83cb56d29385e2a87840eeb3876b976a5afc43..1f1c42109dce7d0760966eb57127a0bb668d50f5:/include/wx/cshelp.h diff --git a/include/wx/cshelp.h b/include/wx/cshelp.h index 836e76e195..99169934b1 100644 --- a/include/wx/cshelp.h +++ b/include/wx/cshelp.h @@ -12,7 +12,7 @@ #ifndef _WX_CSHELPH__ #define _WX_CSHELPH__ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(__APPLE__) #pragma interface "cshelp.h" #endif @@ -20,7 +20,12 @@ #if wxUSE_HELP +#include "wx/help.h" + +#include "wx/hashmap.h" +#if wxUSE_BMPBUTTON #include "wx/bmpbuttn.h" +#endif // ---------------------------------------------------------------------------- // classes used to implement context help UI @@ -55,6 +60,7 @@ private: DECLARE_DYNAMIC_CLASS(wxContextHelp) }; +#if wxUSE_BMPBUTTON /* * wxContextHelpButton * You can add this to your dialogs (especially on non-Windows platforms) @@ -77,13 +83,13 @@ private: DECLARE_EVENT_TABLE() }; -#endif // wxUSE_HELP +#endif // ---------------------------------------------------------------------------- // classes used to implement context help support // ---------------------------------------------------------------------------- -// wxHelpProvider is an ABC used by the program implementing context help to +// wxHelpProvider is an abstract class used by the program implementing context help to // show the help text (or whatever: it may be HTML page or anything else) for // the given window. // @@ -125,6 +131,9 @@ public: // the application, for example) virtual void AddHelp(wxWindowID id, const wxString& text); + // removes the association + virtual void RemoveHelp(wxWindowBase* window); + // virtual dtor for any base class virtual ~wxHelpProvider(); @@ -132,6 +141,9 @@ private: static wxHelpProvider *ms_helpProvider; }; +WX_DECLARE_HASH_MAP( long, wxString, wxIntegerHash, wxIntegerEqual, + wxLongToStringHashMap ); + // wxSimpleHelpProvider is an implementation of wxHelpProvider which supports // only plain text help strings and shows the string associated with the // control (if any) in a tooltip @@ -143,13 +155,43 @@ public: virtual bool ShowHelp(wxWindowBase *window); virtual void AddHelp(wxWindowBase *window, const wxString& text); virtual void AddHelp(wxWindowID id, const wxString& text); + virtual void RemoveHelp(wxWindowBase* window); protected: // we use 2 hashes for storing the help strings associated with windows // and the ids - wxStringHashTable m_hashWindows, - m_hashIds; + wxLongToStringHashMap m_hashWindows, + m_hashIds; +}; + +// wxHelpControllerHelpProvider is an implementation of wxHelpProvider which supports +// both context identifiers and plain text help strings. If the help text is an integer, +// it is passed to wxHelpController::DisplayContextPopup. Otherwise, it shows the string +// in a tooltip as per wxSimpleHelpProvider. +class WXDLLEXPORT wxHelpControllerHelpProvider : public wxSimpleHelpProvider +{ +public: + // Note that it doesn't own the help controller. The help controller + // should be deleted separately. + wxHelpControllerHelpProvider(wxHelpControllerBase* hc = (wxHelpControllerBase*) NULL); + + // implement wxHelpProvider methods + virtual bool ShowHelp(wxWindowBase *window); + + // Other accessors + void SetHelpController(wxHelpControllerBase* hc) { m_helpController = hc; } + wxHelpControllerBase* GetHelpController() const { return m_helpController; } + +protected: + wxHelpControllerBase* m_helpController; + + DECLARE_NO_COPY_CLASS(wxHelpControllerHelpProvider) }; +// Convenience function for turning context id into wxString +WXDLLEXPORT wxString wxContextId(int id); + +#endif // wxUSE_HELP + #endif // _WX_CSHELPH__