1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/tipwin.h
3 // Purpose:     wxTipWindow is a window like the one typically used for
4 //              showing the tooltips
5 // Author:      Vadim Zeitlin
6 // Modified by:
7 // Created:     10.09.00
8 // RCS-ID:      $Id: tipwin.h 53135 2008-04-12 02:31:04Z VZ $
9 // Copyright:   (c) 2000 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
10 // Licence:     wxWindows licence
11 ///////////////////////////////////////////////////////////////////////////////
12 
13 #ifndef _WX_TIPWIN_H_
14 #define _WX_TIPWIN_H_
15 
16 #if wxUSE_TIPWINDOW
17 
18 #if wxUSE_POPUPWIN
19     #include "wx/popupwin.h"
20 
21     #define wxTipWindowBase wxPopupTransientWindow
22 #else
23     #include "wx/frame.h"
24 
25     #define wxTipWindowBase wxFrame
26 #endif
27 #include "wx/arrstr.h"
28 
29 class WXDLLIMPEXP_FWD_CORE wxTipWindowView;
30 
31 // ----------------------------------------------------------------------------
32 // wxTipWindow
33 // ----------------------------------------------------------------------------
34 
35 class WXDLLEXPORT wxTipWindow : public wxTipWindowBase
36 {
37 public:
38     // the mandatory ctor parameters are: the parent window and the text to
39     // show
40     //
41     // optionally you may also specify the length at which the lines are going
42     // to be broken in rows (100 pixels by default)
43     //
44     // windowPtr and rectBound are just passed to SetTipWindowPtr() and
45     // SetBoundingRect() - see below
46     wxTipWindow(wxWindow *parent,
47                 const wxString& text,
48                 wxCoord maxLength = 100,
49                 wxTipWindow** windowPtr = NULL,
50                 wxRect *rectBound = NULL);
51 
52     virtual ~wxTipWindow();
53 
54     // If windowPtr is not NULL the given address will be NULLed when the
55     // window has closed
SetTipWindowPtr(wxTipWindow ** windowPtr)56     void SetTipWindowPtr(wxTipWindow** windowPtr) { m_windowPtr = windowPtr; }
57 
58     // If rectBound is not NULL, the window will disappear automatically when
59     // the mouse leave the specified rect: note that rectBound should be in the
60     // screen coordinates!
61     void SetBoundingRect(const wxRect& rectBound);
62 
63     // Hide and destroy the window
64     void Close();
65 
66 protected:
67     // called by wxTipWindowView only
68     bool CheckMouseInBounds(const wxPoint& pos);
69 
70     // event handlers
71     void OnMouseClick(wxMouseEvent& event);
72 
73 #if !wxUSE_POPUPWIN
74     void OnActivate(wxActivateEvent& event);
75     void OnKillFocus(wxFocusEvent& event);
76 #else // wxUSE_POPUPWIN
77     virtual void OnDismiss();
78 #endif // wxUSE_POPUPWIN/!wxUSE_POPUPWIN
79 
80 private:
81     wxArrayString m_textLines;
82     wxCoord m_heightLine;
83 
84     wxTipWindowView *m_view;
85 
86     wxTipWindow** m_windowPtr;
87     wxRect m_rectBound;
88 
89     DECLARE_EVENT_TABLE()
90 
91     friend class wxTipWindowView;
92 
93     DECLARE_NO_COPY_CLASS(wxTipWindow)
94 };
95 
96 #endif // wxUSE_TIPWINDOW
97 
98 #endif // _WX_TIPWIN_H_
99