206 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // 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{wxcore}
 | |
|     @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();
 | |
| };
 |