X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/41b531690d50277f68fab7aede2f483fca00bc17..477160b73f9f8d9ed0d0d5dc1227651f303fcaf1:/include/wx/mac/carbon/private.h diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index acbf5273fd..111d868f19 100644 --- a/include/wx/mac/carbon/private.h +++ b/include/wx/mac/carbon/private.h @@ -217,6 +217,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 ; } @@ -236,9 +237,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) ; @@ -265,25 +278,27 @@ 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 ) ; } - + UInt32 GetClass() + { + return ::GetEventClass( m_eventRef ) ; + } UInt32 GetKind() { return ::GetEventKind( m_eventRef ) ; @@ -296,8 +311,93 @@ 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 ; + } + + bool Ok() const { return m_controlRef != NULL ; } + + OSStatus SetData( ControlPartCode inPartCode , ResType inTag , Size inSize , const void * inData ) ; + OSStatus GetData( ControlPartCode inPartCode , ResType inTag , Size inBufferSize , void * inOutBuffer , Size * outActualSize ) ; + OSStatus GetDataSize( ControlPartCode inPartCode , ResType inTag , Size * outActualSize ) ; + Size GetDataSize( ControlPartCode inPartCode , ResType inTag ) + { + 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 ) + { + Size dummy ; + return GetData( inPartCode , inTag , sizeof( T ) , data , &dummy ) ; + } + template T GetData( ControlPartCode inPartCode , ResType inTag ) + { + T value ; + verify_noerr( GetData( inPartCode , inTag , &value ) ) ; + return value ; + } + + OSStatus SendEvent( EventRef ref , OptionBits inOptions = 0 ) ; + OSStatus SendHICommand( HICommand &command , OptionBits inOptions = 0 ) ; + OSStatus SendHICommand( UInt32 commandID , OptionBits inOptions = 0 ) ; + + // Flash the control for the specified amount of time + void Flash( ControlPartCode part , UInt32 ticks = 8 ) ; + + SInt32 GetValue() { return ::GetControl32BitValue( m_controlRef ) ; } + SInt32 GetMaximum() { return ::GetControl32BitMaximum( m_controlRef ) ; } + SInt32 GetMinimum() { return ::GetControl32BitMinimum( m_controlRef ) ; } + + void SetValue( SInt32 v ) { ::SetControl32BitValue( m_controlRef , v ) ; } + void SetMinimum( SInt32 v ) { ::SetControl32BitMinimum( m_controlRef , v ) ; } + void SetMaximum( SInt32 v ) { ::SetControl32BitMaximum( m_controlRef , v ) ; } + + void SetValueAndRange( SInt32 value , SInt32 minimum , SInt32 maximum ) + { + ::SetControl32BitMinimum( m_controlRef , minimum ) ; + ::SetControl32BitMaximum( m_controlRef , maximum ) ; + ::SetControl32BitValue( m_controlRef , value ) ; + } + + void SetRange( SInt32 minimum , SInt32 maximum ) + { + ::SetControl32BitMinimum( m_controlRef , minimum ) ; + ::SetControl32BitMaximum( m_controlRef , maximum ) ; + } + + void operator= (ControlRef c) { m_controlRef = c ; } + operator ControlRef () { return m_controlRef; } + operator ControlRef * () { return &m_controlRef; } +protected : + ControlRef m_controlRef ; } ; #endif // wxUSE_GUI