| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: interface/wx/richtooltip.h
- // Purpose: wxRichToolTip class documentation
- // Author: Vadim Zeitlin
- // Created: 2011-10-18
- // Copyright: (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- /**
- Support tip kinds for wxRichToolTip.
- This enum describes the kind of the tip shown which combines both the tip
- position and appearance because the two are related (when the tip is
- positioned asymmetrically, a right handed triangle is used but an
- equilateral one when it's in the middle of a side).
- Automatic selects the tip appearance best suited for the current platform
- and the position best suited for the window the tooltip is shown for, i.e.
- chosen in such a way that the tooltip is always fully on screen.
- Other values describe the position of the tooltip itself, not the window it
- relates to. E.g. wxTipKind_Top places the tip on the top of the tooltip and
- so the tooltip itself is located beneath its associated window.
- */
- enum wxTipKind
- {
- /// Don't show any tip, the tooltip will be (roughly) rectangular.
- wxTipKind_None,
- /// Show a right triangle tip in the top left corner of the tooltip.
- wxTipKind_TopLeft,
- /// Show an equilateral triangle tip in the middle of the tooltip top side.
- wxTipKind_Top,
- /// Show a right triangle tip in the top right corner of the tooltip.
- wxTipKind_TopRight,
- /// Show a right triangle tip in the bottom left corner of the tooltip.
- wxTipKind_BottomLeft,
- /// Show an equilateral triangle tip in the middle of the tooltip bottom side.
- wxTipKind_Bottom,
- /// Show a right triangle tip in the bottom right corner of the tooltip.
- wxTipKind_BottomRight,
- /**
- Choose the appropriate tip shape and position automatically.
- This is the default and shouldn't normally need to be changed.
- Notice that currently wxTipKind_Top or wxTipKind_Bottom are used under
- Mac while one of the other four values is selected for the other
- platforms.
- */
- wxTipKind_Auto
- };
- /**
- Allows to show a tool tip with more customizations than wxToolTip.
- Using this class is very simple, to give a standard warning for a password
- text control if the password was entered correctly you could simply do:
- @code
- wxTextCtrl* password = new wxTextCtrl(..., wxTE_PASSWORD);
- ...
- wxRichToolTip tip("Caps Lock is on",
- "You might have made an error in your password\n"
- "entry because Caps Lock is turned on.\n"
- "\n"
- "Press Caps Lock key to turn it off.");
- tip.SetIcon(wxICON_WARNING);
- tip.ShowFor(password);
- @endcode
- Currently this class has generic implementation that can be used with any
- window and implements all the functionality but doesn't exactly match the
- appearance of the native tooltips (even though it makes some efforts to
- use the style most appropriate for the current platform) and a native MSW
- version which can be only used with text controls and doesn't provide as
- much in the way of customization. Because of this, it's inadvisable to
- customize the tooltips unnecessarily as doing this turns off auto-detection
- of the native style in the generic version and may prevent the native MSW
- version from being used at all.
- Notice that this class is not derived from wxWindow and hence doesn't
- represent a window, even if its ShowFor() method does create one internally
- to show the tooltip.
- The images below show some examples of rich tooltips on different
- platforms, with various customizations applied.
- @library{wxadv}
- @category{miscwnd}
- @appearance{richtooltip}
- @since 2.9.3
- */
- class wxRichToolTip
- {
- public:
- /**
- Constructor must specify the tooltip title and main message.
- The main message can contain embedded new lines. Both the title and
- message must be non-empty.
- Additional attributes can be set later.
- */
- wxRichToolTip(const wxString& title, const wxString& message);
- /**
- Set the background colour.
- If two colours are specified, the background is drawn using a gradient
- from top to bottom, otherwise a single solid colour is used.
- By default the colour or colours most appropriate for the current
- platform are used. If a colour is explicitly set, native MSW version
- won't be used as it doesn't support setting the colour.
- */
- void SetBackgroundColour(const wxColour& col,
- const wxColour& colEnd = wxColour());
- /**
- Set the small icon to show.
- The icon can be either one of the standard information/warning/error
- ones, i.e. wxICON_INFORMATION, wxICON_WARNING or wxICON_ERROR
- respectively (the question icon doesn't make sense for a tooltip so
- wxICON_QUESTION can't be used here) or a custom icon. The latter is
- unsupported by the native MSW implementation of this class so the use
- of a standard icon is preferred.
- */
- //@{
- void SetIcon(int icon = wxICON_INFORMATION);
- void SetIcon(const wxIcon& icon);
- //@}
- /**
- Set timeout after which the tooltip should disappear and
- optionally set a delay before the tooltip is shown, in milliseconds.
- By default the tooltip is shown immediately and hidden after a
- system-dependent interval of time elapses. This method can be used to
- change this or also disable hiding the tooltip automatically entirely
- by passing 0 in this parameter (but doing this will prevent the native
- MSW version from being used).
- Notice that the tooltip will always be hidden if the user presses a key
- or clicks a mouse button.
- Parameter @a millisecondsDelay is new since wxWidgets 2.9.5.
- */
- void SetTimeout(unsigned millisecondsTimeout, unsigned millisecondsDelay = 0);
- /**
- Choose the tip kind, possibly none.
- See wxTipKind documentation for the possible choices here.
- By default the tip is positioned automatically, as if wxTipKind_Auto
- was used. Native MSW implementation doesn't support setting the tip
- kind explicitly and won't be used if this method is called with any
- value other than wxTipKind_Auto.
- Notice that using non automatic tooltip kind may result in the tooltip
- being positioned partially off screen and it's the callers
- responsibility to ensure that this doesn't happen in this case.
- */
- void SetTipKind(wxTipKind tipKind);
- /**
- Set the title text font.
- By default it's emphasized using the font style or colour appropriate
- for the current platform. Calling this method prevents the native MSW
- implementation from being used as it doesn't support changing the font.
- */
- void SetTitleFont(const wxFont& font);
- /**
- Show the tooltip for the given window and optionally specify where to
- show the tooltip.
- By default the tooltip tip points to the (middle of the) specified
- window which must be non-@NULL or, if @a rect is non-@NULL, the middle
- of the specified wxRect.
- The coordinates of the @a rect parameter are relative to the given window.
- Currently the native MSW implementation is used only if @a win is a
- wxTextCtrl and @a rect is @NULL. This limitation may be removed in the
- future.
- Parameter @a rect is new since wxWidgets 2.9.5.
- */
- void ShowFor(wxWindow* win, const wxRect* rect = NULL);
- /**
- Destructor.
- Notice that destroying this object does not hide the tooltip if it's
- currently shown, it will be hidden and destroyed when the user
- dismisses it or the timeout expires.
- The destructor is non-virtual as this class is not supposed to be
- derived from.
- */
- ~wxRichToolTip();
- };
|