| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/richtext/richtextuicustomization.h
- // Purpose: UI customization base class for wxRTC
- // Author: Julian Smart
- // Modified by:
- // Created: 2010-11-14
- // Copyright: (c) Julian Smart
- // Licence: wxWindows Licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_RICHTEXTUICUSTOMIZATION_H_
- #define _WX_RICHTEXTUICUSTOMIZATION_H_
- #if wxUSE_RICHTEXT
- #include "wx/window.h"
- /**
- @class wxRichTextUICustomization
- The base class for functionality to plug in to various rich text control dialogs,
- currently allowing the application to respond to Help button clicks without the
- need to derive new dialog classes.
- The application will typically have calls like this in its initialisation:
- wxRichTextFormattingDialog::GetHelpInfo().SetHelpId(ID_HELP_FORMATTINGDIALOG);
- wxRichTextFormattingDialog::GetHelpInfo().SetUICustomization(& wxGetApp().GetRichTextUICustomization());
- wxRichTextBordersPage::GetHelpInfo().SetHelpId(ID_HELP_BORDERSPAGE);
-
- Only the wxRichTextFormattingDialog class needs to have its customization object and help id set,
- though the application set them for individual pages if it wants.
- **/
- class WXDLLIMPEXP_RICHTEXT wxRichTextUICustomization
- {
- public:
- wxRichTextUICustomization() {}
- virtual ~wxRichTextUICustomization() {}
- /// Show the help given the current active window, and a help topic id.
- virtual bool ShowHelp(wxWindow* win, long id) = 0;
- };
- /**
- @class wxRichTextHelpInfo
- This class is used as a static member of dialogs, to store the help topic for the dialog
- and also the customization object that will allow help to be shown appropriately for the application.
- **/
-
- class WXDLLIMPEXP_RICHTEXT wxRichTextHelpInfo
- {
- public:
- wxRichTextHelpInfo()
- {
- m_helpTopic = -1;
- m_uiCustomization = NULL;
- }
- virtual ~wxRichTextHelpInfo() {}
-
- virtual bool ShowHelp(wxWindow* win)
- {
- if ( !m_uiCustomization || m_helpTopic == -1 )
- return false;
- return m_uiCustomization->ShowHelp(win, m_helpTopic);
- }
- /// Get the help topic identifier.
- long GetHelpId() const { return m_helpTopic; }
- /// Set the help topic identifier.
- void SetHelpId(long id) { m_helpTopic = id; }
- /// Get the UI customization object.
- wxRichTextUICustomization* GetUICustomization() const { return m_uiCustomization; }
- /// Set the UI customization object.
- void SetUICustomization(wxRichTextUICustomization* customization) { m_uiCustomization = customization; }
- /// Is there a valid help topic id?
- bool HasHelpId() const { return m_helpTopic != -1; }
- /// Is there a valid customization object?
- bool HasUICustomization() const { return m_uiCustomization != NULL; }
- protected:
- wxRichTextUICustomization* m_uiCustomization;
- long m_helpTopic;
- };
- /// Add this to the base class of dialogs
- #define DECLARE_BASE_CLASS_HELP_PROVISION() \
- virtual long GetHelpId() const = 0; \
- virtual wxRichTextUICustomization* GetUICustomization() const = 0; \
- virtual bool ShowHelp(wxWindow* win) = 0;
- /// A macro to make it easy to add help topic provision and UI customization
- /// to a class. Optionally, add virtual functions to a base class
- /// using DECLARE_BASE_CLASS_HELP_PROVISION. This means that the formatting dialog
- /// can obtain help topics from its individual pages without needing
- /// to know in advance what page classes are being used, allowing for extension
- /// of the formatting dialog.
- #define DECLARE_HELP_PROVISION() \
- virtual long GetHelpId() const { return sm_helpInfo.GetHelpId(); } \
- virtual void SetHelpId(long id) { sm_helpInfo.SetHelpId(id); } \
- virtual wxRichTextUICustomization* GetUICustomization() const { return sm_helpInfo.GetUICustomization(); } \
- virtual void SetUICustomization(wxRichTextUICustomization* customization) { sm_helpInfo.SetUICustomization(customization); } \
- virtual bool ShowHelp(wxWindow* win) { return sm_helpInfo.ShowHelp(win); } \
- public: \
- static wxRichTextHelpInfo& GetHelpInfo() { return sm_helpInfo; }\
- protected: \
- static wxRichTextHelpInfo sm_helpInfo; \
- public:
- /// Add this to the implementation file for each dialog that needs help provision.
- #define IMPLEMENT_HELP_PROVISION(theClass) \
- wxRichTextHelpInfo theClass::sm_helpInfo;
- #endif
- // wxUSE_RICHTEXT
- #endif
- // _WX_RICHTEXTUICUSTOMIZATION_H_
|