X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c3a404b09026fcb1206141310230a76d80cc12d3..d4cace1ccdeb961a0c85d808541b8b941e71bfbf:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index b4c54a7418..8e8badb6ac 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -1,7 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// // Name: private.h // Purpose: Private declarations: as this header is only included by -// wxWindows itself, it may contain identifiers which don't start +// wxWidgets itself, it may contain identifiers which don't start // with "wx". // Author: Stefan Csomor // Modified by: @@ -155,15 +155,7 @@ bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec) ; // filefn.h WXDLLEXPORT wxString wxMacFSSpec2MacFilename( const FSSpec *spec ) ; -WXDLLEXPORT void wxMacFilename2FSSpec( const char *path , FSSpec *spec ) ; -WXDLLEXPORT void wxMacFilename2FSSpec( const wxChar *path , FSSpec *spec ) ; -# ifndef __DARWIN__ -// Mac file names are POSIX (Unix style) under Darwin, so these are not needed -WXDLLEXPORT wxString wxMacFSSpec2UnixFilename( const FSSpec *spec ) ; -WXDLLEXPORT void wxUnixFilename2FSSpec( const char *path , FSSpec *spec ) ; -WXDLLEXPORT wxString wxMac2UnixFilename( const char *s) ; -WXDLLEXPORT wxString wxUnix2MacFilename( const char *s); -# endif +WXDLLEXPORT void wxMacFilename2FSSpec( const wxString &path , FSSpec *spec ) ; // utils.h WXDLLEXPORT wxString wxMacFindFolder(short vRefNum, @@ -199,8 +191,10 @@ private : WindowRef m_data ; } ; -wxWindow *wxFindControlFromMacControl(ControlRef inControl ) ; -wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ) ; +wxWindow * wxFindControlFromMacControl(ControlRef inControl ) ; +wxTopLevelWindowMac* wxFindWinFromMacWindow( WindowRef inWindow ) ; +wxMenu* wxFindMenuFromMacMenu(MenuRef inMenuRef) ; + extern wxWindow* g_MacLastWindow ; pascal OSStatus wxMacTopLevelMouseEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) ; Rect wxMacGetBoundsForControl( wxWindow* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin = true ) ; @@ -215,6 +209,7 @@ template<> inline EventParamType wxMacGetEventParamType() { return typeQD template<> inline EventParamType wxMacGetEventParamType() { return typeQDRectangle ; } template<> inline EventParamType wxMacGetEventParamType() { return typeBoolean ; } #if TARGET_API_MAC_OSX +template<> inline EventParamType wxMacGetEventParamType() { return typeHICommand ; } template<> inline EventParamType wxMacGetEventParamType() { return typeHIPoint ; } template<> inline EventParamType wxMacGetEventParamType() { return typeHISize ; } template<> inline EventParamType wxMacGetEventParamType() { return typeHIRect ; } @@ -234,9 +229,21 @@ class wxMacCarbonEvent { public : - wxMacCarbonEvent( EventRef event ) + wxMacCarbonEvent( EventRef event , bool release = false ) { m_eventRef = event ; + m_release = release ; + } + wxMacCarbonEvent(UInt32 inClassID,UInt32 inKind,EventTime inWhen = 0 /*now*/,EventAttributes inAttributes=kEventAttributeNone) + { + m_eventRef = NULL ; + verify_noerr( MacCreateEvent( NULL , inClassID, inKind,inWhen,inAttributes,&m_eventRef) ) ; + m_release = true ; + } + ~wxMacCarbonEvent() + { + if ( m_release ) + ReleaseEvent( m_eventRef ) ; } OSStatus GetParameter( EventParamName inName, EventParamType inDesiredType, UInt32 inBufferSize, void * outData) ; @@ -263,26 +270,28 @@ public : return value ; } - - OSStatus SetParameter( EventParamName inName, EventParamType inType, UInt32 inSize, void * inData) ; - template OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , T *data ) + OSStatus SetParameter( EventParamName inName, EventParamType inType, UInt32 inSize, const void * inData) ; + template OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , const T *data ) { return SetParameter( inName, inDesiredType , sizeof( T ) , data ) ; } - template OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , T data ) + template OSStatus SetParameter( EventParamName inName, EventParamType inDesiredType , const T& data ) { return SetParameter( inName, inDesiredType , &data ) ; } - template OSStatus SetParameter( EventParamName inName, T *data ) + template OSStatus SetParameter( EventParamName inName, const T *data ) { return SetParameter( inName, wxMacGetEventParamType() , data ) ; } - template OSStatus SetParameter( EventParamName inName, T data ) + template OSStatus SetParameter( EventParamName inName, const T& data ) { return SetParameter( inName, wxMacGetEventParamType() , &data ) ; } - - EventKind GetKind() + UInt32 GetClass() + { + return ::GetEventClass( m_eventRef ) ; + } + UInt32 GetKind() { return ::GetEventKind( m_eventRef ) ; } @@ -294,8 +303,168 @@ public : { return EventTimeToTicks( GetTime() ) ; } + operator EventRef () { return m_eventRef; } protected : EventRef m_eventRef ; + bool m_release ; +} ; + +class wxMacControl +{ +public : + wxMacControl() + { + m_controlRef = NULL ; + } + + wxMacControl( ControlRef control ) + { + m_controlRef = control ; + } + wxMacControl( WXWidget control ) + { + m_controlRef = (ControlRef) control ; + } + virtual ~wxMacControl() + { + } + + virtual void Dispose() ; + + bool Ok() const { return GetControlRef() != NULL ; } + + virtual ControlRef * GetControlRefAddr() { return &m_controlRef; } + virtual ControlRef GetControlRef() const { return m_controlRef ; } + + virtual void SetReference( SInt32 data ) ; + /* + void operator= (ControlRef c) { m_controlRef = c ; } + operator ControlRef () { return m_controlRef; } + operator ControlRef * () { return &m_controlRef; } + */ + // accessing data and values + + virtual OSStatus SetData( ControlPartCode inPartCode , ResType inTag , Size inSize , const void * inData ) ; + virtual OSStatus GetData( ControlPartCode inPartCode , ResType inTag , Size inBufferSize , void * inOutBuffer , Size * outActualSize ) const ; + virtual OSStatus GetDataSize( ControlPartCode inPartCode , ResType inTag , Size * outActualSize ) const ; + virtual OSStatus SendEvent( EventRef ref , OptionBits inOptions = 0 ) ; + virtual OSStatus SendHICommand( HICommand &command , OptionBits inOptions = 0 ) ; + + virtual OSStatus SendHICommand( UInt32 commandID , OptionBits inOptions = 0 ) ; + + virtual SInt32 GetValue() const ; + virtual SInt32 GetMaximum() const ; + virtual SInt32 GetMinimum() const ; + + virtual void SetValue( SInt32 v ) ; + virtual void SetMinimum( SInt32 v ) ; + virtual void SetMaximum( SInt32 v ) ; + + virtual void SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maximum ) ; + virtual void SetRange( SInt32 minimum , SInt32 maximum ) ; + + virtual OSStatus SetFocus( ControlFocusPart focusPart ) ; + virtual bool HasFocus() const ; + virtual bool NeedsFocusRect() const ; + + // templated helpers + + Size GetDataSize( ControlPartCode inPartCode , ResType inTag ) const + { + Size sz ; + verify_noerr( GetDataSize( inPartCode , inTag , &sz ) ) ; + return sz ; + } + template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T *data ) + { + return SetData( inPartCode , inTag , sizeof( T ) , data ) ; + } + template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T& data ) + { + return SetData( inPartCode , inTag , sizeof( T ) , &data ) ; + } + template OSStatus GetData( ControlPartCode inPartCode , ResType inTag , T *data ) const + { + Size dummy ; + return GetData( inPartCode , inTag , sizeof( T ) , data , &dummy ) ; + } + template T GetData( ControlPartCode inPartCode , ResType inTag ) const + { + T value ; + verify_noerr( GetData( inPartCode , inTag , &value ) ) ; + return value ; + } + + // Flash the control for the specified amount of time + virtual void Flash( ControlPartCode part , UInt32 ticks = 8 ) ; + virtual void VisibilityChanged( bool shown ) ; + virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle ) ; + virtual void SetBackground( const wxBrush &brush ) ; + virtual ControlPartCode HandleKey( SInt16 keyCode, SInt16 charCode, EventModifiers modifiers ) ; + void SetActionProc( ControlActionUPP actionProc ) ; + void SetViewSize( SInt32 viewSize ) ; + SInt32 GetViewSize() const ; + + virtual bool IsVisible() const ; + virtual void SetVisibility( bool visible , bool redraw ) ; + virtual bool IsEnabled() const ; + virtual bool IsActive() const ; + virtual void Enable( bool enable ) ; + + // invalidates this control and all children + virtual void InvalidateWithChildren() ; + virtual void SetDrawingEnabled( bool enable ) ; + virtual bool GetNeedsDisplay() const ; + virtual void SetNeedsDisplay( bool needsDisplay , RgnHandle where = NULL ) ; + + virtual void ScrollRect( const wxRect &rect , int dx , int dy ) ; + + virtual void GetRect( Rect *r ) ; + virtual void SetRect( Rect *r ) ; + virtual void GetRectInWindowCoords( Rect *r ) ; + virtual void GetBestRect( Rect *r ) ; + virtual void SetTitle( const wxString &title ) ; + // converts from Toplevel-Content relative to local + static void Convert( wxPoint *pt , wxMacControl *convert , wxMacControl *to ) ; + + virtual void GetFeatures( UInt32 *features ) ; + virtual OSStatus GetRegion( ControlPartCode partCode , RgnHandle region ) ; + virtual OSStatus SetZOrder( bool above , wxMacControl* other ) ; + // to be moved into a databrowser subclass + + virtual OSStatus SetSelectionFlags( DataBrowserSelectionFlags ) ; + virtual OSStatus AddListViewColumn( DataBrowserListViewColumnDesc *columnDesc, + DataBrowserTableViewColumnIndex position ) ; + virtual OSStatus AutoSizeListViewColumns() ; + virtual OSStatus SetHasScrollBars( bool horiz , bool vert ) ; + virtual OSStatus SetTableViewHiliteStyle( DataBrowserTableViewHiliteStyle hiliteStyle ) ; + virtual OSStatus SetListViewHeaderBtnHeight(UInt16 height) ; + virtual OSStatus SetCallbacks(const DataBrowserCallbacks * callbacks) ; + virtual OSStatus UpdateItems( DataBrowserItemID container, UInt32 numItems, + const DataBrowserItemID* items, + DataBrowserPropertyID preSortProperty, + DataBrowserPropertyID propertyID ) ; + virtual OSStatus AddItems( DataBrowserItemID container, UInt32 numItems, + const DataBrowserItemID* items, + DataBrowserPropertyID preSortProperty ) ; + virtual OSStatus RemoveItems( DataBrowserItemID container, UInt32 numItems, + const DataBrowserItemID* items, + DataBrowserPropertyID preSortProperty ) ; + virtual OSStatus RevealItem( DataBrowserItemID item, + DataBrowserPropertyID propertyID, + DataBrowserRevealOptions options ) ; + virtual bool IsItemSelected( DataBrowserItemID item ) ; + virtual OSStatus SetSelectedItems(UInt32 numItems, + const DataBrowserItemID * items, + DataBrowserSetOption operation ) ; + + // to be moved into a tab control class + + virtual OSStatus SetTabEnabled( SInt16 tabNo , bool enable ) ; +protected : + ControlRef m_controlRef ; + wxFont m_font ; + long m_windowStyle ; } ; #endif // wxUSE_GUI @@ -381,10 +550,17 @@ private: wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) ; wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding) ; +void wxMacWakeUp() ; // toplevel.cpp ControlRef wxMacFindControlUnderMouse( Point location , WindowRef window , ControlPartCode *outPart ) ; +// filefn.cpp + +wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL ) ; +OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef ) ; +wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname ) ; + #endif // _WX_PRIVATE_H_