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
6 // Author: Stefan Csomor
9 // RCS-ID: $Id: private.h 53819 2008-05-29 14:11:45Z SC $
10 // Copyright: (c) Stefan Csomor
11 // Licence: wxWindows licence
12 /////////////////////////////////////////////////////////////////////////////
14 #ifndef _WX_PRIVATE_COCOA_H_
15 #define _WX_PRIVATE_COCOA_H_
17 #include "wx/osx/core/private.h"
21 #include <ApplicationServices/ApplicationServices.h>
23 #if wxOSX_USE_ATSU_TEXT
24 // we need theming and atsu
25 #include <Carbon/Carbon.h>
29 #import <Cocoa/Cocoa.h>
33 // shared between Cocoa and Carbon
36 // bring in themeing types without pulling in the headers
39 typedef SInt16 ThemeBrush
;
40 CGColorRef WXDLLIMPEXP_CORE
wxMacCreateCGColorFromHITheme( ThemeBrush brush
) ;
41 OSStatus WXDLLIMPEXP_CORE
wxMacDrawCGImage(
42 CGContextRef inContext
,
43 const CGRect
* inBounds
,
45 WX_NSImage WXDLLIMPEXP_CORE
wxOSXCreateNSImageFromCGImage( CGImageRef image
);
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
);
60 class WXDLLIMPEXP_CORE wxWidgetCocoaImpl
: public wxWidgetImpl
63 wxWidgetCocoaImpl( wxWindowMac
* peer
, WXWidget w
, bool isRootControl
= false ) ;
69 virtual bool IsVisible() const ;
70 virtual void SetVisibility(bool);
76 virtual void ScrollRect( const wxRect
*rect
, int dx
, int dy
);
78 virtual WXWidget
GetWXWidget() const { return m_osxView
; }
80 virtual void SetBackgroundColour(const wxColour
&);
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
);
88 virtual void SetNeedsDisplay( const wxRect
* where
= NULL
);
89 virtual bool GetNeedsDisplay() const;
91 virtual bool CanFocus() const;
92 // return true if successful
93 virtual bool SetFocus();
94 virtual bool HasFocus() const;
96 void RemoveFromParent();
97 void Embed( wxWidgetImpl
*parent
);
99 void SetDefaultButton( bool isDefault
);
101 void SetLabel(const wxString
& title
, wxFontEncoding encoding
);
103 void SetCursor( const wxCursor
& cursor
);
107 wxInt32
GetValue() const;
108 void SetValue( wxInt32 v
);
109 void SetBitmap( const wxBitmap
& bitmap
);
110 void SetupTabs( const wxNotebook
¬ebook
);
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;
120 void SetScrollThumb( wxInt32 value
, wxInt32 thumbSize
);
122 void SetFont( const wxFont
& font
, const wxColour
& foreground
, long windowStyle
, bool ignoreBlack
= true );
124 void InstallEventHandler( WXWidget control
= NULL
);
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
);
131 void SetFlipped(bool flipped
);
132 bool IsFlipped() const { return m_isFlipped
; }
134 // cocoa thunk connected calls
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
);
150 virtual void controlAction(WXWidget slf
, void* _cmd
, void* sender
);
151 virtual void controlDoubleAction(WXWidget slf
, void* _cmd
, void *sender
);
155 NSEvent
* m_lastKeyDownEvent
;
158 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl
)
161 DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow
);
163 class wxNonOwnedWindowCocoaImpl
: public wxNonOwnedWindowImpl
166 wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow
* nonownedwnd
) ;
167 wxNonOwnedWindowCocoaImpl();
169 virtual ~wxNonOwnedWindowCocoaImpl();
171 virtual void Destroy() ;
172 void Create( wxWindow
* parent
, const wxPoint
& pos
, const wxSize
& size
,
173 long style
, long extraStyle
, const wxString
& name
) ;
175 WXWindow
GetWXWindow() const;
178 bool Show(bool show
);
179 bool ShowWithEffect(bool show
, wxShowEffect effect
, unsigned timeout
);
182 bool SetTransparent(wxByte alpha
);
183 bool SetBackgroundColour(const wxColour
& col
);
184 void SetExtraStyle( long exStyle
);
185 bool SetBackgroundStyle(wxBackgroundStyle style
);
186 bool CanSetTransparent();
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;
192 void GetContentArea( int &left
, int &top
, int &width
, int &height
) const;
193 bool SetShape(const wxRegion
& region
);
195 virtual void SetTitle( const wxString
& title
, wxFontEncoding encoding
) ;
197 virtual bool IsMaximized() const;
199 virtual bool IsIconized() const;
201 virtual void Iconize( bool iconize
);
203 virtual void Maximize(bool maximize
);
205 virtual bool IsFullScreen() const;
207 virtual bool ShowFullScreen(bool show
, long style
);
209 virtual void RequestUserAttention(int flags
);
211 virtual void ScreenToWindow( int *x
, int *y
);
213 virtual void WindowToScreen( int *x
, int *y
);
215 wxNonOwnedWindow
* GetWXPeer() { return m_wxPeer
; }
217 WX_wxNSWindow m_macWindow
;
218 void * m_macFullScreenData
;
219 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl
)
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
);
229 NSRect WXDLLIMPEXP_CORE
wxOSXGetFrameForControl( wxWindowMac
* window
, const wxPoint
& pos
, const wxSize
&size
,
230 bool adjustForOrigin
= true );
232 // used for many wxControls
234 @interface wxNSButton
: NSButton
240 @interface wxNSBox
: NSBox
246 @interface wxNSTextField
: NSTextField
248 wxWidgetCocoaImpl
* impl
;
251 - (void) setImplementation
:(wxWidgetCocoaImpl
*) item
;
252 - (wxWidgetCocoaImpl
*) implementation
;
255 @interface wxNSMenu
: NSMenu
260 - (void) setImplementation
:(wxMenuImpl
*) item
;
261 - (wxMenuImpl
*) implementation
;
265 @interface wxNSMenuItem
: NSMenuItem
267 wxMenuItemImpl
* impl
;
270 - (void) setImplementation
:(wxMenuItemImpl
*) item
;
271 - (wxMenuItemImpl
*) implementation
;
273 - (void)clickedAction
:(id
)sender
;
274 - (BOOL
)validateMenuItem
:(NSMenuItem
*)menuItem
;
278 void WXDLLIMPEXP_CORE
wxOSXCocoaClassAddWXMethods(Class c
);
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.
285 @interface ModalDialogDelegate
: NSObject
293 - (void)waitForSheetToFinish
;
294 - (void)sheetDidEnd
:(NSWindow
*)sheet returnCode
:(int)returnCode contextInfo
:(void *)contextInfo
;
302 WX_NSCursor
wxMacCocoaCreateStockCursor( int cursor_type
);
303 WX_NSCursor
wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef
, float hotSpotX
, float hotSpotY
);
304 void wxMacCocoaSetCursor( WX_NSCursor cursor
);
305 void wxMacCocoaHideCursor();
306 void wxMacCocoaShowCursor();
308 typedef struct tagClassicCursor
315 const short kwxCursorBullseye
= 0;
316 const short kwxCursorBlank
= 1;
317 const short kwxCursorPencil
= 2;
318 const short kwxCursorMagnifier
= 3;
319 const short kwxCursorNoEntry
= 4;
320 const short kwxCursorPaintBrush
= 5;
321 const short kwxCursorPointRight
= 6;
322 const short kwxCursorPointLeft
= 7;
323 const short kwxCursorQuestionArrow
= 8;
324 const short kwxCursorRightArrow
= 9;
325 const short kwxCursorSizeNS
= 10;
326 const short kwxCursorSize
= 11;
327 const short kwxCursorSizeNESW
= 12;
328 const short kwxCursorSizeNWSE
= 13;
329 const short kwxCursorRoller
= 14;
330 const short kwxCursorLast
= kwxCursorRoller
;
332 // exposing our fallback cursor map
334 extern ClassicCursor gMacCursors
[];
339 // _WX_PRIVATE_COCOA_H_