]> git.saurik.com Git - wxWidgets.git/blame - include/wx/osx/cocoa/private.h
Make wxDataViewCtrl::GetBestSize() return a height of 80 on OSX as per the other...
[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>
26#endif
27
4849f027 28#ifdef __OBJC__
4849f027 29 #import <Cocoa/Cocoa.h>
4850cc8b 30#endif
4849f027 31
524c47aa
SC
32//
33// shared between Cocoa and Carbon
34//
35
36// bring in themeing types without pulling in the headers
37
935e6c7d 38#if wxUSE_GUI
524c47aa 39typedef SInt16 ThemeBrush;
6da991db 40CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ;
524c47aa
SC
41OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage(
42 CGContextRef inContext,
43 const CGRect * inBounds,
44 CGImageRef inImage) ;
6da991db 45WX_NSImage WXDLLIMPEXP_CORE wxOSXCreateNSImageFromCGImage( CGImageRef image );
935e6c7d 46#endif
524c47aa 47
935e6c7d 48long UMAGetSystemVersion() ;
524c47aa
SC
49WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to );
50WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL );
51WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef );
52WXDLLIMPEXP_BASE wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname );
53
54//
55//
56//
57
4849f027
SC
58#if wxUSE_GUI
59
60class WXDLLIMPEXP_CORE wxWidgetCocoaImpl : public wxWidgetImpl
61{
62public :
63 wxWidgetCocoaImpl( wxWindowMac* peer , WXWidget w, bool isRootControl = false ) ;
64 wxWidgetCocoaImpl() ;
65 ~wxWidgetCocoaImpl();
66
67 void Init();
68
69 virtual bool IsVisible() const ;
524c47aa
SC
70 virtual void SetVisibility(bool);
71
4849f027
SC
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
524c47aa
SC
80 virtual void SetBackgroundColour(const wxColour&);
81
4849f027
SC
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;
524c47aa 86 virtual void SetControlSize( wxWindowVariant variant );
4849f027
SC
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 );
524c47aa
SC
98
99 void SetDefaultButton( bool isDefault );
100 void PerformClick();
101 void SetLabel(const wxString& title, wxFontEncoding encoding);
102
54f11060
SC
103 void SetCursor( const wxCursor & cursor );
104 void CaptureMouse();
105 void ReleaseMouse();
106
524c47aa
SC
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 );
19c7ac3d
SC
117 wxInt32 GetMinimum() const;
118 wxInt32 GetMaximum() const;
524c47aa
SC
119 void PulseGauge();
120 void SetScrollThumb( wxInt32 value, wxInt32 thumbSize );
121
1e181c7a
SC
122 void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
123
c4825ef7 124 void InstallEventHandler( WXWidget control = NULL );
4850cc8b 125
b466e85a 126 virtual bool DoHandleMouseEvent(NSEvent *event);
f0e0116e
KO
127 virtual bool DoHandleKeyEvent(NSEvent *event);
128 virtual bool DoHandleCharEvent(NSEvent *event, NSString *text);
0c530e5a 129 virtual void DoNotifyFocusEvent(bool receivedFocus);
4850cc8b 130
4dd9fdf8 131 void SetFlipped(bool flipped);
96defed0
SC
132 bool IsFlipped() const { return m_isFlipped; }
133
134 // cocoa thunk connected calls
4dd9fdf8
SC
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);
f0e0116e 142 virtual void insertText(NSString* text, WXWidget slf, void* _cmd);
4dd9fdf8
SC
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
e32090ba
SC
150 virtual void controlAction(WXWidget slf, void* _cmd, void* sender);
151 virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender);
4dd9fdf8 152
4849f027
SC
153protected:
154 WXWidget m_osxView;
f0e0116e 155 NSEvent* m_lastKeyDownEvent;
4dd9fdf8
SC
156 bool m_isFlipped;
157
4849f027
SC
158 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl)
159};
160
ffad7b0d
SC
161DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow );
162
4849f027
SC
163class wxNonOwnedWindowCocoaImpl : public wxNonOwnedWindowImpl
164{
165public :
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; }
216protected :
ffad7b0d 217 WX_wxNSWindow m_macWindow;
4849f027
SC
218 void * m_macFullScreenData ;
219 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl)
220};
221
4850cc8b
SC
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
4850cc8b
SC
229 NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
230 bool adjustForOrigin = true );
231
b466e85a
SC
232 // used for many wxControls
233
234 @interface wxNSButton : NSButton
235 {
b466e85a 236 }
4dd9fdf8 237
b466e85a
SC
238 @end
239
240 @interface wxNSBox : NSBox
241 {
b466e85a
SC
242 }
243
b466e85a
SC
244 @end
245
246 @interface wxNSTextField : NSTextField
247 {
f0e0116e 248 wxWidgetCocoaImpl* impl;
b466e85a
SC
249 }
250
f0e0116e
KO
251 - (void) setImplementation:(wxWidgetCocoaImpl*) item;
252 - (wxWidgetCocoaImpl*) implementation;
b466e85a
SC
253 @end
254
ffad7b0d
SC
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
4dd9fdf8 277
485c6263 278 void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c);
b466e85a 279
724999ee
KO
280 /*
281 We need this for ShowModal, as the sheet just disables the parent window and
282 returns control to the app, whereas we don't want to return from ShowModal
283 until the sheet has been dismissed.
284 */
285 @interface ModalDialogDelegate : NSObject
286 {
287 BOOL sheetFinished;
288 int resultCode;
289 }
290
291 - (BOOL)finished;
292 - (int)code;
293 - (void)waitForSheetToFinish;
294 - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo;
295 @end
296
297
4850cc8b
SC
298#endif // __OBJC__
299
4849f027
SC
300// NSCursor
301
302WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );
303WX_NSCursor wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef, float hotSpotX, float hotSpotY );
304void wxMacCocoaSetCursor( WX_NSCursor cursor );
305void wxMacCocoaHideCursor();
306void wxMacCocoaShowCursor();
307
308typedef struct tagClassicCursor
309{
310 wxUint16 bits[16];
311 wxUint16 mask[16];
312 wxInt16 hotspot[2];
313}ClassicCursor;
314
524c47aa
SC
315const short kwxCursorBullseye = 0;
316const short kwxCursorBlank = 1;
317const short kwxCursorPencil = 2;
318const short kwxCursorMagnifier = 3;
319const short kwxCursorNoEntry = 4;
320const short kwxCursorPaintBrush = 5;
321const short kwxCursorPointRight = 6;
322const short kwxCursorPointLeft = 7;
323const short kwxCursorQuestionArrow = 8;
324const short kwxCursorRightArrow = 9;
325const short kwxCursorSizeNS = 10;
326const short kwxCursorSize = 11;
327const short kwxCursorSizeNESW = 12;
328const short kwxCursorSizeNWSE = 13;
329const short kwxCursorRoller = 14;
330const short kwxCursorLast = kwxCursorRoller;
331
332// exposing our fallback cursor map
333
334extern ClassicCursor gMacCursors[];
335
4849f027
SC
336#endif
337
338#endif
339 // _WX_PRIVATE_COCOA_H_
340