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