]> git.saurik.com Git - wxWidgets.git/blob - include/wx/osx/cocoa/private.h
adding events to single line textcontrols (password is not fully supported)
[wxWidgets.git] / include / wx / osx / cocoa / private.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/osx/cocoa/private.h
3 // Purpose: Private declarations: as this header is only included by
4 // wxWidgets itself, it may contain identifiers which don't start
5 // with "wx".
6 // Author: Stefan Csomor
7 // Modified by:
8 // Created: 1998-01-01
9 // RCS-ID: $Id: private.h 53819 2008-05-29 14:11:45Z SC $
10 // Copyright: (c) Stefan Csomor
11 // Licence: wxWindows licence
12 /////////////////////////////////////////////////////////////////////////////
13
14 #ifndef _WX_PRIVATE_COCOA_H_
15 #define _WX_PRIVATE_COCOA_H_
16
17 #include "wx/osx/core/private.h"
18
19 #include "wx/defs.h"
20
21 #include <ApplicationServices/ApplicationServices.h>
22
23 #if wxOSX_USE_ATSU_TEXT
24 // we need theming and atsu
25 #include <Carbon/Carbon.h>
26 #endif
27
28 #ifdef __OBJC__
29 #import <Cocoa/Cocoa.h>
30 #endif
31
32 //
33 // shared between Cocoa and Carbon
34 //
35
36 // bring in themeing types without pulling in the headers
37
38 #if wxUSE_GUI
39 typedef SInt16 ThemeBrush;
40 CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ;
41 OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage(
42 CGContextRef inContext,
43 const CGRect * inBounds,
44 CGImageRef inImage) ;
45 WX_NSImage WXDLLIMPEXP_CORE wxOSXCreateNSImageFromCGImage( CGImageRef image );
46 #endif
47
48 long UMAGetSystemVersion() ;
49 WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to );
50 WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL );
51 WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef );
52 WXDLLIMPEXP_BASE wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname );
53
54 //
55 //
56 //
57
58 #if wxUSE_GUI
59
60 class WXDLLIMPEXP_CORE wxWidgetCocoaImpl : public wxWidgetImpl
61 {
62 public :
63 wxWidgetCocoaImpl( wxWindowMac* peer , WXWidget w, bool isRootControl = false ) ;
64 wxWidgetCocoaImpl() ;
65 ~wxWidgetCocoaImpl();
66
67 void Init();
68
69 virtual bool IsVisible() const ;
70 virtual void SetVisibility(bool);
71
72 virtual void Raise();
73
74 virtual void Lower();
75
76 virtual void ScrollRect( const wxRect *rect, int dx, int dy );
77
78 virtual WXWidget GetWXWidget() const { return m_osxView; }
79
80 virtual void SetBackgroundColour(const wxColour&);
81
82 virtual void GetContentArea( int &left , int &top , int &width , int &height ) const;
83 virtual void Move(int x, int y, int width, int height);
84 virtual void GetPosition( int &x, int &y ) const;
85 virtual void GetSize( int &width, int &height ) const;
86 virtual void SetControlSize( wxWindowVariant variant );
87
88 virtual void SetNeedsDisplay( const wxRect* where = NULL );
89 virtual bool GetNeedsDisplay() const;
90
91 virtual bool CanFocus() const;
92 // return true if successful
93 virtual bool SetFocus();
94 virtual bool HasFocus() const;
95
96 void RemoveFromParent();
97 void Embed( wxWidgetImpl *parent );
98
99 void SetDefaultButton( bool isDefault );
100 void PerformClick();
101 virtual void SetLabel(const wxString& title, wxFontEncoding encoding);
102
103 void SetCursor( const wxCursor & cursor );
104 void CaptureMouse();
105 void ReleaseMouse();
106
107 wxInt32 GetValue() const;
108 void SetValue( wxInt32 v );
109 void SetBitmap( const wxBitmap& bitmap );
110 void SetupTabs( const wxNotebook &notebook );
111 void GetBestRect( wxRect *r ) const;
112 bool IsEnabled() const;
113 void Enable( bool enable );
114 bool ButtonClickDidStateChange() { return true ;}
115 void SetMinimum( wxInt32 v );
116 void SetMaximum( wxInt32 v );
117 wxInt32 GetMinimum() const;
118 wxInt32 GetMaximum() const;
119 void PulseGauge();
120 void SetScrollThumb( wxInt32 value, wxInt32 thumbSize );
121
122 void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
123
124 void InstallEventHandler( WXWidget control = NULL );
125
126 virtual bool DoHandleMouseEvent(NSEvent *event);
127 virtual bool DoHandleKeyEvent(NSEvent *event);
128 virtual bool DoHandleCharEvent(NSEvent *event, NSString *text);
129 virtual void DoNotifyFocusEvent(bool receivedFocus, wxWidgetImpl* otherWindow);
130
131 void SetFlipped(bool flipped);
132 virtual bool IsFlipped() const { return m_isFlipped; }
133
134 // cocoa thunk connected calls
135
136 virtual unsigned int draggingEntered(void* sender, WXWidget slf, void* _cmd);
137 virtual void draggingExited(void* sender, WXWidget slf, void* _cmd);
138 virtual unsigned int draggingUpdated(void* sender, WXWidget slf, void* _cmd);
139 virtual bool performDragOperation(void* sender, WXWidget slf, void* _cmd);
140 virtual void mouseEvent(WX_NSEvent event, WXWidget slf, void* _cmd);
141 virtual void keyEvent(WX_NSEvent event, WXWidget slf, void* _cmd);
142 virtual void insertText(NSString* text, WXWidget slf, void* _cmd);
143 virtual bool performKeyEquivalent(WX_NSEvent event, WXWidget slf, void* _cmd);
144 virtual bool acceptsFirstResponder(WXWidget slf, void* _cmd);
145 virtual bool becomeFirstResponder(WXWidget slf, void* _cmd);
146 virtual bool resignFirstResponder(WXWidget slf, void* _cmd);
147 virtual void resetCursorRects(WXWidget slf, void* _cmd);
148 virtual bool isFlipped(WXWidget slf, void* _cmd);
149 virtual void drawRect(void* rect, WXWidget slf, void* _cmd);
150
151 virtual void controlAction(WXWidget slf, void* _cmd, void* sender);
152 virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender);
153
154 protected:
155 WXWidget m_osxView;
156 NSEvent* m_lastKeyDownEvent;
157 bool m_isFlipped;
158 // if it the control has an editor, that editor will already send some
159 // events, don't resend them
160 bool m_hasEditor;
161
162 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl)
163 };
164
165 DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow );
166
167 class wxNonOwnedWindowCocoaImpl : public wxNonOwnedWindowImpl
168 {
169 public :
170 wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow* nonownedwnd) ;
171 wxNonOwnedWindowCocoaImpl();
172
173 virtual ~wxNonOwnedWindowCocoaImpl();
174
175 virtual void Destroy() ;
176 void Create( wxWindow* parent, const wxPoint& pos, const wxSize& size,
177 long style, long extraStyle, const wxString& name ) ;
178
179 WXWindow GetWXWindow() const;
180 void Raise();
181 void Lower();
182 bool Show(bool show);
183 bool ShowWithEffect(bool show, wxShowEffect effect, unsigned timeout);
184
185 void Update();
186 bool SetTransparent(wxByte alpha);
187 bool SetBackgroundColour(const wxColour& col );
188 void SetExtraStyle( long exStyle );
189 bool SetBackgroundStyle(wxBackgroundStyle style);
190 bool CanSetTransparent();
191
192 void MoveWindow(int x, int y, int width, int height);
193 void GetPosition( int &x, int &y ) const;
194 void GetSize( int &width, int &height ) const;
195
196 void GetContentArea( int &left , int &top , int &width , int &height ) const;
197 bool SetShape(const wxRegion& region);
198
199 virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ;
200
201 virtual bool IsMaximized() const;
202
203 virtual bool IsIconized() const;
204
205 virtual void Iconize( bool iconize );
206
207 virtual void Maximize(bool maximize);
208
209 virtual bool IsFullScreen() const;
210
211 virtual bool ShowFullScreen(bool show, long style);
212
213 virtual void RequestUserAttention(int flags);
214
215 virtual void ScreenToWindow( int *x, int *y );
216
217 virtual void WindowToScreen( int *x, int *y );
218
219 wxNonOwnedWindow* GetWXPeer() { return m_wxPeer; }
220 protected :
221 WX_wxNSWindow m_macWindow;
222 void * m_macFullScreenData ;
223 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl)
224 };
225
226 #ifdef __OBJC__
227
228 WXDLLIMPEXP_CORE NSRect wxToNSRect( NSView* parent, const wxRect& r );
229 WXDLLIMPEXP_CORE wxRect wxFromNSRect( NSView* parent, const NSRect& rect );
230 WXDLLIMPEXP_CORE NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
231 WXDLLIMPEXP_CORE wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p );
232
233 NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
234 bool adjustForOrigin = true );
235
236 // used for many wxControls
237
238 @interface wxNSButton : NSButton
239 {
240 }
241
242 @end
243
244 @interface wxNSBox : NSBox
245 {
246 }
247
248 @end
249
250 @interface wxNSTextFieldEditor : NSTextView
251 {
252 NSEvent* lastKeyDownEvent;
253 }
254
255 @end
256
257 @interface wxNSTextField : NSTextField
258 {
259 wxNSTextFieldEditor* fieldEditor;
260 }
261
262 - (wxNSTextFieldEditor*) fieldEditor;
263 - (void) setFieldEditor:(wxNSTextFieldEditor*) fieldEditor;
264
265 @end
266
267 @interface wxNSSecureTextField : NSSecureTextField
268 {
269 }
270
271 @end
272
273
274 @interface wxNSTextView : NSTextView
275 {
276 }
277
278 @end
279
280 @interface wxNSMenu : NSMenu
281 {
282 wxMenuImpl* impl;
283 }
284
285 - (void) setImplementation:(wxMenuImpl*) item;
286 - (wxMenuImpl*) implementation;
287
288 @end
289
290 @interface wxNSMenuItem : NSMenuItem
291 {
292 wxMenuItemImpl* impl;
293 }
294
295 - (void) setImplementation:(wxMenuItemImpl*) item;
296 - (wxMenuItemImpl*) implementation;
297
298 - (void)clickedAction:(id)sender;
299 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
300
301 @end
302
303 void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c);
304
305 /*
306 We need this for ShowModal, as the sheet just disables the parent window and
307 returns control to the app, whereas we don't want to return from ShowModal
308 until the sheet has been dismissed.
309 */
310 @interface ModalDialogDelegate : NSObject
311 {
312 BOOL sheetFinished;
313 int resultCode;
314 }
315
316 - (BOOL)finished;
317 - (int)code;
318 - (void)waitForSheetToFinish;
319 - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
320 @end
321
322
323 #endif // __OBJC__
324
325 // NSCursor
326
327 WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );
328 WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY );
329 void wxMacCocoaSetCursor( WX_NSCursor cursor );
330 void wxMacCocoaHideCursor();
331 void wxMacCocoaShowCursor();
332
333 typedef struct tagClassicCursor
334 {
335 wxUint16 bits[16];
336 wxUint16 mask[16];
337 wxInt16 hotspot[2];
338 }ClassicCursor;
339
340 const short kwxCursorBullseye = 0;
341 const short kwxCursorBlank = 1;
342 const short kwxCursorPencil = 2;
343 const short kwxCursorMagnifier = 3;
344 const short kwxCursorNoEntry = 4;
345 const short kwxCursorPaintBrush = 5;
346 const short kwxCursorPointRight = 6;
347 const short kwxCursorPointLeft = 7;
348 const short kwxCursorQuestionArrow = 8;
349 const short kwxCursorRightArrow = 9;
350 const short kwxCursorSizeNS = 10;
351 const short kwxCursorSize = 11;
352 const short kwxCursorSizeNESW = 12;
353 const short kwxCursorSizeNWSE = 13;
354 const short kwxCursorRoller = 14;
355 const short kwxCursorLast = kwxCursorRoller;
356
357 // exposing our fallback cursor map
358
359 extern ClassicCursor gMacCursors[];
360
361 #endif
362
363 #endif
364 // _WX_PRIVATE_COCOA_H_
365