]> git.saurik.com Git - wxWidgets.git/blob - include/wx/osx/cocoa/private.h
Landing basic EVT_CHAR support, along with the rest of EVT_TEXT support fix.
[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 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);
130
131 void SetFlipped(bool flipped);
132 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 becomeFirstResponder(WXWidget slf, void* _cmd);
145 virtual bool resignFirstResponder(WXWidget slf, void* _cmd);
146 virtual void resetCursorRects(WXWidget slf, void* _cmd);
147 virtual bool isFlipped(WXWidget slf, void* _cmd);
148 virtual void drawRect(void* rect, WXWidget slf, void* _cmd);
149
150 virtual void controlAction(WXWidget slf, void* _cmd, void* sender);
151 virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender);
152
153 protected:
154 WXWidget m_osxView;
155 NSEvent* m_lastKeyDownEvent;
156 bool m_isFlipped;
157
158 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl)
159 };
160
161 DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow );
162
163 class wxNonOwnedWindowCocoaImpl : public wxNonOwnedWindowImpl
164 {
165 public :
166 wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow* nonownedwnd) ;
167 wxNonOwnedWindowCocoaImpl();
168
169 virtual ~wxNonOwnedWindowCocoaImpl();
170
171 virtual void Destroy() ;
172 void Create( wxWindow* parent, const wxPoint& pos, const wxSize& size,
173 long style, long extraStyle, const wxString& name ) ;
174
175 WXWindow GetWXWindow() const;
176 void Raise();
177 void Lower();
178 bool Show(bool show);
179 bool ShowWithEffect(bool show, wxShowEffect effect, unsigned timeout);
180
181 void Update();
182 bool SetTransparent(wxByte alpha);
183 bool SetBackgroundColour(const wxColour& col );
184 void SetExtraStyle( long exStyle );
185 bool SetBackgroundStyle(wxBackgroundStyle style);
186 bool CanSetTransparent();
187
188 void MoveWindow(int x, int y, int width, int height);
189 void GetPosition( int &x, int &y ) const;
190 void GetSize( int &width, int &height ) const;
191
192 void GetContentArea( int &left , int &top , int &width , int &height ) const;
193 bool SetShape(const wxRegion& region);
194
195 virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ;
196
197 virtual bool IsMaximized() const;
198
199 virtual bool IsIconized() const;
200
201 virtual void Iconize( bool iconize );
202
203 virtual void Maximize(bool maximize);
204
205 virtual bool IsFullScreen() const;
206
207 virtual bool ShowFullScreen(bool show, long style);
208
209 virtual void RequestUserAttention(int flags);
210
211 virtual void ScreenToWindow( int *x, int *y );
212
213 virtual void WindowToScreen( int *x, int *y );
214
215 wxNonOwnedWindow* GetWXPeer() { return m_wxPeer; }
216 protected :
217 WX_wxNSWindow m_macWindow;
218 void * m_macFullScreenData ;
219 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl)
220 };
221
222 #ifdef __OBJC__
223
224 extern NSRect wxToNSRect( NSView* parent, const wxRect& r );
225 extern wxRect wxFromNSRect( NSView* parent, const NSRect& rect );
226 extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p );
227 extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p );
228
229 NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
230 bool adjustForOrigin = true );
231
232 // used for many wxControls
233
234 @interface wxNSButton : NSButton
235 {
236 }
237
238 @end
239
240 @interface wxNSBox : NSBox
241 {
242 }
243
244 @end
245
246 @interface wxNSTextField : NSTextField
247 {
248 wxWidgetCocoaImpl* impl;
249 }
250
251 - (void) setImplementation:(wxWidgetCocoaImpl*) item;
252 - (wxWidgetCocoaImpl*) implementation;
253 @end
254
255 @interface wxNSMenu : NSMenu
256 {
257 wxMenuImpl* impl;
258 }
259
260 - (void) setImplementation:(wxMenuImpl*) item;
261 - (wxMenuImpl*) implementation;
262
263 @end
264
265 @interface wxNSMenuItem : NSMenuItem
266 {
267 wxMenuItemImpl* impl;
268 }
269
270 - (void) setImplementation:(wxMenuItemImpl*) item;
271 - (wxMenuItemImpl*) implementation;
272
273 - (void)clickedAction:(id)sender;
274 - (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
275
276 @end
277
278 void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c);
279
280 #endif // __OBJC__
281
282 // NSCursor
283
284 WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );
285 WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY );
286 void wxMacCocoaSetCursor( WX_NSCursor cursor );
287 void wxMacCocoaHideCursor();
288 void wxMacCocoaShowCursor();
289
290 typedef struct tagClassicCursor
291 {
292 wxUint16 bits[16];
293 wxUint16 mask[16];
294 wxInt16 hotspot[2];
295 }ClassicCursor;
296
297 const short kwxCursorBullseye = 0;
298 const short kwxCursorBlank = 1;
299 const short kwxCursorPencil = 2;
300 const short kwxCursorMagnifier = 3;
301 const short kwxCursorNoEntry = 4;
302 const short kwxCursorPaintBrush = 5;
303 const short kwxCursorPointRight = 6;
304 const short kwxCursorPointLeft = 7;
305 const short kwxCursorQuestionArrow = 8;
306 const short kwxCursorRightArrow = 9;
307 const short kwxCursorSizeNS = 10;
308 const short kwxCursorSize = 11;
309 const short kwxCursorSizeNESW = 12;
310 const short kwxCursorSizeNWSE = 13;
311 const short kwxCursorRoller = 14;
312 const short kwxCursorLast = kwxCursorRoller;
313
314 // exposing our fallback cursor map
315
316 extern ClassicCursor gMacCursors[];
317
318 #endif
319
320 #endif
321 // _WX_PRIVATE_COCOA_H_
322