X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e181c7a2c32193fc8138cc32ed07984eadd4a21..cbeda384e51acb82e13994cb67ac1714669cae10:/include/wx/osx/cocoa/private.h diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index cccac824e9..82fa07ce17 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -16,55 +16,18 @@ #include "wx/osx/core/private.h" -#ifdef __OBJC__ - - #import - - extern NSRect wxToNSRect( NSView* parent, const wxRect& r ); - extern wxRect wxFromNSRect( NSView* parent, const NSRect& rect ); - extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p ); - extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ); - - // used for many wxControls - - @interface wxNSButton : NSButton - { - wxWidgetImpl* impl; - } - - - (void)setImplementation: (wxWidgetImpl *) theImplementation; - - (wxWidgetImpl*) implementation; - - (BOOL) isFlipped; - - (void) clickedAction: (id) sender; - - @end - - @interface wxNSBox : NSBox - { - wxWidgetImpl* impl; - } - - - (void)setImplementation: (wxWidgetImpl *) theImplementation; - - (wxWidgetImpl*) implementation; - - (BOOL) isFlipped; - - @end +#include "wx/defs.h" - @interface wxNSTextField : NSTextField - { - wxWidgetImpl* impl; - } - - - (void)setImplementation: (wxWidgetImpl *) theImplementation; - - (wxWidgetImpl*) implementation; - - (BOOL) isFlipped; - - @end +#include - NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , - bool adjustForOrigin = true ); +#if wxOSX_USE_ATSU_TEXT + // we need theming and atsu + #include +#endif -#endif // __OBJC__ +#ifdef __OBJC__ + #import +#endif // // shared between Cocoa and Carbon @@ -72,15 +35,17 @@ // bring in themeing types without pulling in the headers +#if wxUSE_GUI typedef SInt16 ThemeBrush; -long UMAGetSystemVersion() ; -CGColorRef wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ; +CGColorRef WXDLLIMPEXP_CORE wxMacCreateCGColorFromHITheme( ThemeBrush brush ) ; OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage( CGContextRef inContext, const CGRect * inBounds, CGImageRef inImage) ; -WX_NSImage wxOSXCreateNSImageFromCGImage( CGImageRef image ); +WX_NSImage WXDLLIMPEXP_CORE wxOSXCreateNSImageFromCGImage( CGImageRef image ); +#endif +long UMAGetSystemVersion() ; WXDLLIMPEXP_BASE void wxMacStringToPascal( const wxString&from , StringPtr to ); WXDLLIMPEXP_BASE wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ); WXDLLIMPEXP_BASE OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ); @@ -133,7 +98,11 @@ public : void SetDefaultButton( bool isDefault ); void PerformClick(); - void SetLabel(const wxString& title, wxFontEncoding encoding); + virtual void SetLabel(const wxString& title, wxFontEncoding encoding); + + void SetCursor( const wxCursor & cursor ); + void CaptureMouse(); + void ReleaseMouse(); wxInt32 GetValue() const; void SetValue( wxInt32 v ); @@ -145,16 +114,53 @@ public : bool ButtonClickDidStateChange() { return true ;} void SetMinimum( wxInt32 v ); void SetMaximum( wxInt32 v ); + wxInt32 GetMinimum() const; + wxInt32 GetMaximum() const; void PulseGauge(); void SetScrollThumb( wxInt32 value, wxInt32 thumbSize ); void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true ); + void InstallEventHandler( WXWidget control = NULL ); + + virtual bool DoHandleMouseEvent(NSEvent *event); + virtual bool DoHandleKeyEvent(NSEvent *event); + virtual bool DoHandleCharEvent(NSEvent *event, NSString *text); + virtual void DoNotifyFocusEvent(bool receivedFocus, wxWidgetImpl* otherWindow); + + void SetFlipped(bool flipped); + virtual bool IsFlipped() const { return m_isFlipped; } + + // cocoa thunk connected calls + + virtual unsigned int draggingEntered(void* sender, WXWidget slf, void* _cmd); + virtual void draggingExited(void* sender, WXWidget slf, void* _cmd); + virtual unsigned int draggingUpdated(void* sender, WXWidget slf, void* _cmd); + virtual bool performDragOperation(void* sender, WXWidget slf, void* _cmd); + virtual void mouseEvent(WX_NSEvent event, WXWidget slf, void* _cmd); + virtual void keyEvent(WX_NSEvent event, WXWidget slf, void* _cmd); + virtual void insertText(NSString* text, WXWidget slf, void* _cmd); + virtual bool performKeyEquivalent(WX_NSEvent event, WXWidget slf, void* _cmd); + virtual bool acceptsFirstResponder(WXWidget slf, void* _cmd); + virtual bool becomeFirstResponder(WXWidget slf, void* _cmd); + virtual bool resignFirstResponder(WXWidget slf, void* _cmd); + virtual void resetCursorRects(WXWidget slf, void* _cmd); + virtual bool isFlipped(WXWidget slf, void* _cmd); + virtual void drawRect(void* rect, WXWidget slf, void* _cmd); + + virtual void controlAction(WXWidget slf, void* _cmd, void* sender); + virtual void controlDoubleAction(WXWidget slf, void* _cmd, void *sender); + protected: WXWidget m_osxView; + NSEvent* m_lastKeyDownEvent; + bool m_isFlipped; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetCocoaImpl) }; +DECLARE_WXCOCOA_OBJC_CLASS( wxNSWindow ); + class wxNonOwnedWindowCocoaImpl : public wxNonOwnedWindowImpl { public : @@ -209,11 +215,85 @@ public : wxNonOwnedWindow* GetWXPeer() { return m_wxPeer; } protected : - WX_NSWindow m_macWindow; + WX_wxNSWindow m_macWindow; void * m_macFullScreenData ; DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowCocoaImpl) }; +#ifdef __OBJC__ + + extern NSRect wxToNSRect( NSView* parent, const wxRect& r ); + extern wxRect wxFromNSRect( NSView* parent, const NSRect& rect ); + extern NSPoint wxToNSPoint( NSView* parent, const wxPoint& p ); + extern wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ); + + NSRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , + bool adjustForOrigin = true ); + + // used for many wxControls + + @interface wxNSButton : NSButton + { + } + + @end + + @interface wxNSBox : NSBox + { + } + + @end + + @interface wxNSTextField : NSTextField + { + } + @end + + @interface wxNSMenu : NSMenu + { + wxMenuImpl* impl; + } + + - (void) setImplementation:(wxMenuImpl*) item; + - (wxMenuImpl*) implementation; + + @end + + @interface wxNSMenuItem : NSMenuItem + { + wxMenuItemImpl* impl; + } + + - (void) setImplementation:(wxMenuItemImpl*) item; + - (wxMenuItemImpl*) implementation; + + - (void)clickedAction:(id)sender; + - (BOOL)validateMenuItem:(NSMenuItem *)menuItem; + + @end + + void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c); + + /* + We need this for ShowModal, as the sheet just disables the parent window and + returns control to the app, whereas we don't want to return from ShowModal + until the sheet has been dismissed. + */ + @interface ModalDialogDelegate : NSObject + { + BOOL sheetFinished; + int resultCode; + } + + - (BOOL)finished; + - (int)code; + - (void)waitForSheetToFinish; + - (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; + @end + + +#endif // __OBJC__ + // NSCursor WX_NSCursor wxMacCocoaCreateStockCursor( int cursor_type );