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 virtual void SetLabel(const wxString
& title
, wxFontEncoding encoding
);
103 void SetCursor( const wxCursor
& cursor
);
107 wxInt32
GetValue() const;
108 void SetValue( wxInt32 v
);
109 wxBitmap
GetBitmap() const;
110 void SetBitmap( const wxBitmap
& bitmap
);
111 void SetBitmapPosition( wxDirection dir
);
112 void SetupTabs( const wxNotebook
¬ebook
);
113 void GetBestRect( wxRect
*r
) const;
114 bool IsEnabled() const;
115 void Enable( bool enable
);
116 bool ButtonClickDidStateChange() { return true ;}
117 void SetMinimum( wxInt32 v
);
118 void SetMaximum( wxInt32 v
);
119 wxInt32
GetMinimum() const;
120 wxInt32
GetMaximum() const;
122 void SetScrollThumb( wxInt32 value
, wxInt32 thumbSize
);
124 void SetFont( const wxFont
& font
, const wxColour
& foreground
, long windowStyle
, bool ignoreBlack
= true );
126 void InstallEventHandler( WXWidget control
= NULL
);
128 virtual bool DoHandleMouseEvent(NSEvent
*event
);
129 virtual bool DoHandleKeyEvent(NSEvent
*event
);
130 virtual bool DoHandleCharEvent(NSEvent
*event
, NSString
*text
);
131 virtual void DoNotifyFocusEvent(bool receivedFocus
, wxWidgetImpl
* otherWindow
);
133 void SetFlipped(bool flipped
);
134 virtual bool IsFlipped() const { return m_isFlipped
; }
136 // cocoa thunk connected calls
138 virtual unsigned int draggingEntered(void* sender
, WXWidget slf
, void* _cmd
);
139 virtual void draggingExited(void* sender
, WXWidget slf
, void* _cmd
);
140 virtual unsigned int draggingUpdated(void* sender
, WXWidget slf
, void* _cmd
);
141 virtual bool performDragOperation(void* sender
, WXWidget slf
, void* _cmd
);
142 virtual void mouseEvent(WX_NSEvent event
, WXWidget slf
, void* _cmd
);
143 virtual void keyEvent(WX_NSEvent event
, WXWidget slf
, void* _cmd
);
144 virtual void insertText(NSString
* text
, WXWidget slf
, void* _cmd
);
145 virtual bool performKeyEquivalent(WX_NSEvent event
, WXWidget slf
, void* _cmd
);
146 virtual bool acceptsFirstResponder(WXWidget slf
, void* _cmd
);
147 virtual bool becomeFirstResponder(WXWidget slf
, void* _cmd
);
148 virtual bool resignFirstResponder(WXWidget slf
, void* _cmd
);
149 virtual void resetCursorRects(WXWidget slf
, void* _cmd
);
150 virtual bool isFlipped(WXWidget slf
, void* _cmd
);
151 virtual void drawRect(void* rect
, WXWidget slf
, void* _cmd
);
153 virtual void controlAction(WXWidget slf
, void* _cmd
, void* sender
);
154 virtual void controlDoubleAction(WXWidget slf
, void* _cmd
, void *sender
);
158 NSEvent
* m_lastKeyDownEvent
;
160 // if it the control has an editor, that editor will already send some
161 // events, don't resend them
164 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl
)
167 DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow
);
169 class wxNonOwnedWindowCocoaImpl
: public wxNonOwnedWindowImpl
172 wxNonOwnedWindowCocoaImpl( wxNonOwnedWindow
* nonownedwnd
) ;
173 wxNonOwnedWindowCocoaImpl();
175 virtual ~wxNonOwnedWindowCocoaImpl();
177 virtual void Destroy() ;
178 void Create( wxWindow
* parent
, const wxPoint
& pos
, const wxSize
& size
,
179 long style
, long extraStyle
, const wxString
& name
) ;
181 WXWindow
GetWXWindow() const;
184 bool Show(bool show
);
185 bool ShowWithEffect(bool show
, wxShowEffect effect
, unsigned timeout
);
188 bool SetTransparent(wxByte alpha
);
189 bool SetBackgroundColour(const wxColour
& col
);
190 void SetExtraStyle( long exStyle
);
191 bool SetBackgroundStyle(wxBackgroundStyle style
);
192 bool CanSetTransparent();
194 void MoveWindow(int x
, int y
, int width
, int height
);
195 void GetPosition( int &x
, int &y
) const;
196 void GetSize( int &width
, int &height
) const;
198 void GetContentArea( int &left
, int &top
, int &width
, int &height
) const;
199 bool SetShape(const wxRegion
& region
);
201 virtual void SetTitle( const wxString
& title
, wxFontEncoding encoding
) ;
203 virtual bool IsMaximized() const;
205 virtual bool IsIconized() const;
207 virtual void Iconize( bool iconize
);
209 virtual void Maximize(bool maximize
);
211 virtual bool IsFullScreen() const;
213 virtual bool ShowFullScreen(bool show
, long style
);
215 virtual void RequestUserAttention(int flags
);
217 virtual void ScreenToWindow( int *x
, int *y
);
219 virtual void WindowToScreen( int *x
, int *y
);
221 wxNonOwnedWindow
* GetWXPeer() { return m_wxPeer
; }
223 WX_wxNSWindow m_macWindow
;
224 void * m_macFullScreenData
;
225 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl
)
230 WXDLLIMPEXP_CORE NSRect
wxToNSRect( NSView
* parent
, const wxRect
& r
);
231 WXDLLIMPEXP_CORE wxRect
wxFromNSRect( NSView
* parent
, const NSRect
& rect
);
232 WXDLLIMPEXP_CORE NSPoint
wxToNSPoint( NSView
* parent
, const wxPoint
& p
);
233 WXDLLIMPEXP_CORE wxPoint
wxFromNSPoint( NSView
* parent
, const NSPoint
& p
);
235 NSRect WXDLLIMPEXP_CORE
wxOSXGetFrameForControl( wxWindowMac
* window
, const wxPoint
& pos
, const wxSize
&size
,
236 bool adjustForOrigin
= true );
238 // used for many wxControls
240 @interface wxNSButton
: NSButton
246 @interface wxNSBox
: NSBox
252 @interface wxNSTextFieldEditor
: NSTextView
254 NSEvent
* lastKeyDownEvent
;
259 @interface wxNSTextField
: NSTextField
261 wxNSTextFieldEditor
* fieldEditor
;
264 - (wxNSTextFieldEditor
*) fieldEditor
;
265 - (void) setFieldEditor
:(wxNSTextFieldEditor
*) fieldEditor
;
269 @interface wxNSSecureTextField
: NSSecureTextField
276 @interface wxNSTextView
: NSTextView
282 @interface wxNSMenu
: NSMenu
287 - (void) setImplementation
:(wxMenuImpl
*) item
;
288 - (wxMenuImpl
*) implementation
;
292 @interface wxNSMenuItem
: NSMenuItem
294 wxMenuItemImpl
* impl
;
297 - (void) setImplementation
:(wxMenuItemImpl
*) item
;
298 - (wxMenuItemImpl
*) implementation
;
300 - (void)clickedAction
:(id
)sender
;
301 - (BOOL
)validateMenuItem
:(NSMenuItem
*)menuItem
;
305 void WXDLLIMPEXP_CORE
wxOSXCocoaClassAddWXMethods(Class c
);
308 We need this for ShowModal, as the sheet just disables the parent window and
309 returns control to the app, whereas we don't want to return from ShowModal
310 until the sheet has been dismissed.
312 @interface ModalDialogDelegate
: NSObject
320 - (void)waitForSheetToFinish
;
321 - (void)sheetDidEnd
:(NSWindow
*)sheet returnCode
:(int)returnCode contextInfo
:(void *)contextInfo
;
329 WX_NSCursor
wxMacCocoaCreateStockCursor( int cursor_type
);
330 WX_NSCursor
wxMacCocoaCreateCursorFromCGImage( CGImageRef cgImageRef
, float hotSpotX
, float hotSpotY
);
331 void wxMacCocoaSetCursor( WX_NSCursor cursor
);
332 void wxMacCocoaHideCursor();
333 void wxMacCocoaShowCursor();
335 typedef struct tagClassicCursor
342 const short kwxCursorBullseye
= 0;
343 const short kwxCursorBlank
= 1;
344 const short kwxCursorPencil
= 2;
345 const short kwxCursorMagnifier
= 3;
346 const short kwxCursorNoEntry
= 4;
347 const short kwxCursorPaintBrush
= 5;
348 const short kwxCursorPointRight
= 6;
349 const short kwxCursorPointLeft
= 7;
350 const short kwxCursorQuestionArrow
= 8;
351 const short kwxCursorRightArrow
= 9;
352 const short kwxCursorSizeNS
= 10;
353 const short kwxCursorSize
= 11;
354 const short kwxCursorSizeNESW
= 12;
355 const short kwxCursorSizeNWSE
= 13;
356 const short kwxCursorRoller
= 14;
357 const short kwxCursorLast
= kwxCursorRoller
;
359 // exposing our fallback cursor map
361 extern ClassicCursor gMacCursors
[];
366 // _WX_PRIVATE_COCOA_H_