Document domain parameter of wxTranslations::GetTranslatedString().
[wxWidgets.git] / src / cocoa / tooltip.mm
1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        src/cocoa/tooltip.mm
3 // Purpose:     Cocoa tooltips
4 // Author:      Ryan Norton
5 // Modified by:
6 // Created:     2004-10-03
7 // Copyright:   (c) Ryan Norton
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10
11 #include "wx/wxprec.h"
12
13 // ===========================================================================
14 // declarations
15 // ===========================================================================
16
17 // ---------------------------------------------------------------------------
18 // headers
19 // ---------------------------------------------------------------------------
20
21 #if wxUSE_TOOLTIPS
22
23 #ifndef WX_PRECOMP
24     #include "wx/window.h"
25 #endif
26
27 #include "wx/tooltip.h"
28
29 #include "wx/cocoa/autorelease.h"
30 #include "wx/cocoa/string.h"
31
32 #import <AppKit/NSView.h>
33
34 //
35 // Private object in AppKit - exists in 10.2 at least -
36 // most likely exists earlier too
37 //
38 @interface NSToolTipManager : NSObject
39 {
40 /*
41     NSWindow *toolTipWindow;
42     NSMutableArray *toolTips;
43     double toolTipDelay;
44     NSDate *timeToolTipRemovedFromScreen;
45     struct __CFRunLoopTimer *toolTipDisplayTimer;
46     NSToolTip *currentDisplayedToolTip;
47     NSToolTip *currentFadingToolTip;
48     float currentFadeValue;
49     NSTimer *fadeTimer;
50     NSWindow *lastToolTipWindow;
51 */
52 }
53
54 + (id)sharedToolTipManager;
55 - (int)_addTrackingRect:(struct _NSRect)fp12 andStartToolTipIfNecessary:(BOOL)fp28 view:(id)fp32 owner:(id)fp32 toolTip:(id)fp36;
56 - (void)_checkToolTipDelay;
57 - (void)_removeToolTip:(id)fp12 stopTimerIfNecessary:(BOOL)fp16;
58 - (void)_removeTrackingRectForToolTip:(id)fp12 stopTimerIfNecessary:(BOOL)fp16;
59 - (int)_setToolTip:(id)fp12 forView:(id)fp16 cell:(id)fp20 rect:(struct _NSRect)fp20 owner:(id)fp36 ownerIsDisplayDelegate:(BOOL)fp43 userData:(void *)fp44;
60 - (void)_stopTimerIfRunningForToolTip:(id)fp12;
61 - (void)abortToolTip;
62 - (void)addTrackingRectForToolTip:(id)fp12;
63 - (void)dealloc;
64 - (void)displayToolTip:(id)fp12;
65 - (void)fadeToolTip:(id)fp12;
66 - (id)init;
67 - (void)mouseEntered:(id)fp12;
68 - (void)mouseEnteredToolTip:(id)fp12 inWindow:(id)fp16 withEvent:(id)fp20;
69 - (void)mouseExited:(id)fp12;
70 - (void)orderOutToolTip;
71 - (void)orderOutToolTipImmediately:(BOOL)fp12;
72 - (void)recomputeToolTipsForView:(id)fp12 remove:(BOOL)fp16 add:(BOOL)fp20;
73 - (void)removeAllToolTipsForView:(id)fp12;
74 - (void)removeToolTipForView:(id)fp12 tag:(int)fp16;
75 - (void)setInitialToolTipDelay:(double)fp40;
76 - (void)setToolTip:(id)fp12 forView:(id)fp16 cell:(id)fp20;
77 - (int)setToolTipForView:(id)fp12 rect:(struct _NSRect)fp16 displayDelegate:(id)fp32 userData:(void *)fp32;
78 - (int)setToolTipForView:(id)fp12 rect:(struct _NSRect)fp16 owner:(id)fp32 userData:(void *)fp32;
79 - (void)setToolTipWithOwner:(id)fp12 forView:(id)fp16 cell:(id)fp20;
80 - (void)startTimer:(float)fp40 userInfo:(id)fp16;
81 - (void)stopTimer;
82 - (id)toolTipForView:(id)fp12 cell:(id)fp16;
83 - (BOOL)viewHasToolTips:(id)fp12;
84
85 @end
86
87 //-----------------------------------------------------------------------------
88 // wxToolTip
89 //-----------------------------------------------------------------------------
90
91 IMPLEMENT_ABSTRACT_CLASS(wxToolTip, wxObject)
92
93 wxToolTip::wxToolTip(const wxString &tip) :
94     m_text(tip), m_window(0)
95 {
96 }
97
98 wxToolTip::~wxToolTip()
99 {
100 }
101
102 void wxToolTip::SetTip(const wxString& tip)
103 {
104     m_text = tip;
105 }
106
107 const wxString& wxToolTip::GetTip() const
108 {
109     return m_text;
110 }
111
112 // the window we're associated with
113 wxWindow *wxToolTip::GetWindow() const
114 {
115     return m_window;
116 }
117
118 // enable or disable the tooltips globally
119 //static
120     void wxToolTip::Enable(bool flag)
121 {
122     //TODO
123     wxFAIL_MSG(wxT("Not implemented"));
124 }
125
126 // set the delay after which the tooltip appears
127 //static
128     void wxToolTip::SetDelay(long milliseconds)
129 {
130     [[NSToolTipManager sharedToolTipManager] setInitialToolTipDelay: ((double)milliseconds) / 1000.0];
131 }
132
133 void wxToolTip::SetWindow(wxWindow* window)
134 {
135     wxAutoNSAutoreleasePool pool;
136
137     m_window = window;
138
139     //set the tooltip - empty string means remove
140     if (m_text.empty())
141         [m_window->GetNSView() setToolTip:nil];
142     else
143         [m_window->GetNSView() setToolTip:wxNSStringWithWxString(m_text)];
144 }
145
146 #endif //wxUSE_TOOLTIPS