From 6d4c54a7680f240153033f44e233c20b53ec6043 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Fri, 4 Jun 2004 07:21:50 +0000 Subject: [PATCH] introduction of m_peer git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/mac/carbon/gauge.h | 22 +++------- include/wx/mac/carbon/private.h | 69 +++++++++++++++++++++++++++----- include/wx/mac/carbon/textctrl.h | 6 ++- include/wx/mac/carbon/window.h | 10 +++-- 4 files changed, 77 insertions(+), 30 deletions(-) diff --git a/include/wx/mac/carbon/gauge.h b/include/wx/mac/carbon/gauge.h index 4eb5db3a69..0bc8540fc8 100644 --- a/include/wx/mac/carbon/gauge.h +++ b/include/wx/mac/carbon/gauge.h @@ -23,9 +23,8 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxGaugeNameStr; // Group box class WXDLLEXPORT wxGauge: public wxGaugeBase { - DECLARE_DYNAMIC_CLASS(wxGauge) public: - inline wxGauge() { m_rangeMax = 0; m_gaugePos = 0; } + inline wxGauge() { } inline wxGauge(wxWindow *parent, wxWindowID id, int range, @@ -46,21 +45,12 @@ class WXDLLEXPORT wxGauge: public wxGaugeBase const wxValidator& validator = wxDefaultValidator, const wxString& name = wxGaugeNameStr); - void SetShadowWidth(int w); - void SetBezelFace(int w); - void SetRange(int r); - void SetValue(int pos); - - int GetShadowWidth() const ; - int GetBezelFace() const ; - int GetRange() const ; - int GetValue() const ; - - virtual void Command(wxCommandEvent& WXUNUSED(event)) {} ; - + // set gauge range/value + virtual void SetRange(int range); + virtual void SetValue(int pos); + virtual int GetValue() const ; protected: - int m_rangeMax; - int m_gaugePos; + DECLARE_DYNAMIC_CLASS_NO_COPY(wxGauge) }; #endif diff --git a/include/wx/mac/carbon/private.h b/include/wx/mac/carbon/private.h index d10d4f5643..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,21 +278,20 @@ 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 ) ; } @@ -299,13 +311,20 @@ 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 ; @@ -315,6 +334,8 @@ public : 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 ) ; @@ -324,11 +345,11 @@ public : verify_noerr( GetDataSize( inPartCode , inTag , &sz ) ) ; return sz ; } - template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , T *data ) + template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T *data ) { return SetData( inPartCode , inTag , sizeof( T ) , data ) ; } - template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , T data ) + template OSStatus SetData( ControlPartCode inPartCode , ResType inTag , const T& data ) { return SetData( inPartCode , inTag , sizeof( T ) , &data ) ; } @@ -343,6 +364,36 @@ public : 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 : diff --git a/include/wx/mac/carbon/textctrl.h b/include/wx/mac/carbon/textctrl.h index a8e14fc864..7bf124a98a 100644 --- a/include/wx/mac/carbon/textctrl.h +++ b/include/wx/mac/carbon/textctrl.h @@ -173,14 +173,16 @@ protected: // common part of all ctors void Init(); - virtual wxSize DoGetBestSize() const; + virtual wxSize DoGetBestSize() const; bool m_editable ; // flag is set to true when the user edits the controls contents bool m_dirty; - // one of the following objects is used for representation, the other one is NULL + WXWidget m_scrollView ; + WXWidget m_textView ; + void* m_macTXN ; unsigned long m_maxLength ; // need to make this public because of the current implementation via callbacks diff --git a/include/wx/mac/carbon/window.h b/include/wx/mac/carbon/window.h index c2c0326e58..4dd02468ef 100644 --- a/include/wx/mac/carbon/window.h +++ b/include/wx/mac/carbon/window.h @@ -26,6 +26,10 @@ class WXDLLEXPORT wxButton; class WXDLLEXPORT wxScrollBar; class WXDLLEXPORT wxTopLevelWindowMac; +// internal implementation classes + +class wxMacControl ; + // --------------------------------------------------------------------------- // constants // --------------------------------------------------------------------------- @@ -126,7 +130,7 @@ public: // simple accessors // ---------------- - virtual WXWidget GetHandle() const { return m_macControl ; } + virtual WXWidget GetHandle() const ; #if WXWIN_COMPATIBILITY_2_4 bool GetTransparentBackground() const { return m_backgroundTransparent; } @@ -237,8 +241,8 @@ protected: wxList m_subControls; // number of calls to Freeze() minus number of calls to Thaw() unsigned int m_frozenness; - // the true native ControlRef / = HIViewRef on OSX - WXWidget m_macControl ; + // the peer object, allowing for cleaner API support + wxMacControl* m_peer ; // true if is is not a native control but a wxWindow control bool m_macIsUserPane ; wxBrush m_macBackgroundBrush ;