wxWidgetImplType* wxWidgetImpl::CreateSlider( wxWindowMac* wxpeer, wxWindowMac* parent, wxWindowID WXUNUSED(id), wxInt32 value, wxInt32 minimum, wxInt32 maximum, const wxPoint& pos, const wxSize& size, long style, long WXUNUSED(extraStyle)) { Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size ); int tickMarks = 0; if ( style & wxSL_AUTOTICKS ) tickMarks = (maximum - minimum) + 1; // +1 for the 0 value // keep the number of tickmarks from becoming unwieldly, therefore below it is ok to cast // it to a UInt16 while (tickMarks > 20) tickMarks /= 5; wxMacControl* peer = new wxMacSliderCarbonControl( wxpeer ); OSStatus err = CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, value, minimum, maximum, kControlSliderPointsDownOrRight, (UInt16) tickMarks, true /* liveTracking */, GetwxMacLiveScrollbarActionProc(), peer->GetControlRefAddr() ); verify_noerr( err ); return peer; }
bool wxSpinButton::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { m_macIsUserPane = false ; if ( !wxSpinButtonBase::Create(parent, id, pos, size, style, wxDefaultValidator, name) ) return false; m_min = 0; m_max = 100; if (!parent) return false; Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; m_peer = new wxMacControl(this) ; verify_noerr ( CreateLittleArrowsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , 0 , m_min , m_max , 1 , m_peer->GetControlRefAddr() ) ); m_peer->SetActionProc( GetwxMacLiveScrollbarActionProc() ) ; MacPostControlCreate(pos,size) ; return true; }
wxWidgetImplType* wxWidgetImpl::CreateScrollBar( wxWindowMac* wxpeer, wxWindowMac* parent, wxWindowID WXUNUSED(id), const wxPoint& pos, const wxSize& size, long WXUNUSED(style), long WXUNUSED(extraStyle)) { Rect bounds = wxMacGetBoundsForControl( wxpeer, pos, size ); wxMacControl* peer = new wxOSXScrollBarCarbonImpl( wxpeer ); OSStatus err = CreateScrollBarControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, 0, 0, 100, 1, true /* liveTracking */, GetwxMacLiveScrollbarActionProc(), peer->GetControlRefAddr() ); verify_noerr( err ); return peer; }
// Scrollbar bool wxScrollBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { m_macIsUserPane = FALSE ; if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return FALSE; Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; m_peer = new wxMacControl(this) ; verify_noerr ( CreateScrollBarControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , 0 , 0 , 100 , 1 , true /* liveTracking */ , GetwxMacLiveScrollbarActionProc() , m_peer->GetControlRefAddr() ) ); MacPostControlCreate(pos,size) ; return TRUE; }
wxWidgetImplType* wxWidgetImpl::CreateSpinButton( wxWindowMac* wxpeer, wxWindowMac* parent, wxWindowID WXUNUSED(id), wxInt32 value, wxInt32 minimum, wxInt32 maximum, const wxPoint& pos, const wxSize& size, long WXUNUSED(style), long WXUNUSED(extraStyle)) { Rect bounds = wxMacGetBoundsForControl( wxpeer , pos , size ); wxMacControl* peer = new wxMacControl( wxpeer ); OSStatus err = CreateLittleArrowsControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, value, minimum, maximum, 1, peer->GetControlRefAddr() ); verify_noerr( err ); peer->SetActionProc( GetwxMacLiveScrollbarActionProc() ); return peer ; }
bool wxSlider::Create(wxWindow *parent, wxWindowID id, int value, int minValue, int maxValue, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { m_macIsUserPane = false; m_macMinimumStatic = NULL; m_macMaximumStatic = NULL; m_macValueStatic = NULL; m_lineSize = 1; m_tickFreq = 0; m_rangeMax = maxValue; m_rangeMin = minValue; m_pageSize = (int)((maxValue - minValue) / 10); // our styles are redundant: wxSL_LEFT/RIGHT imply wxSL_VERTICAL and // wxSL_TOP/BOTTOM imply wxSL_HORIZONTAL, but for backwards compatibility // reasons we can't really change it, instead try to infer the orientation // from the flags given to us here switch ( style & (wxSL_LEFT | wxSL_RIGHT | wxSL_TOP | wxSL_BOTTOM) ) { case wxSL_LEFT: case wxSL_RIGHT: style |= wxSL_VERTICAL; break; case wxSL_TOP: case wxSL_BOTTOM: style |= wxSL_HORIZONTAL; break; case 0: default: // no specific direction, do we have at least the orientation? if ( !(style & (wxSL_HORIZONTAL | wxSL_VERTICAL)) ) // no: choose default style |= wxSL_BOTTOM | wxSL_HORIZONTAL; break; } wxASSERT_MSG( !(style & wxSL_VERTICAL) || !(style & wxSL_HORIZONTAL), wxT("incompatible slider direction and orientation") ); if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; Rect bounds = wxMacGetBoundsForControl( this , pos , size ); // NB: (RN) Ticks here are sometimes off in the GUI if there // are not as many tick marks as there are values // int tickMarks = 0; if ( style & wxSL_AUTOTICKS ) tickMarks = (maxValue - minValue) + 1; // +1 for the 0 value // keep the number of tickmarks from becoming unwieldly, therefore below it is ok to cast // it to a UInt16 while (tickMarks > 20) tickMarks /= 5; m_peer = new wxMacControl( this ); OSStatus err = CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, value, minValue, maxValue, kControlSliderPointsDownOrRight, (UInt16) tickMarks, true /* liveTracking */, GetwxMacLiveScrollbarActionProc(), m_peer->GetControlRefAddr() ); verify_noerr( err ); if (style & wxSL_VERTICAL) // Forces SetSize to use the proper width SetSizeHints(10, -1, 10, -1); else // Forces SetSize to use the proper height SetSizeHints(-1, 10, -1, 10); // NB: SetSizeHints is overloaded by wxSlider and will substitute 10 with the // proper dimensions, it also means other people cannot bugger the slider with // other values if (style & wxSL_LABELS) { m_macMinimumStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); m_macMaximumStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); m_macValueStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); } SetRange(minValue, maxValue); SetValue(value); MacPostControlCreate(pos, size); return true; }
bool wxSlider::Create(wxWindow *parent, wxWindowID id, int value, int minValue, int maxValue, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) { m_macIsUserPane = false ; if ( !wxControl::Create(parent, id, pos, size, style, validator, name) ) return false; m_macMinimumStatic = NULL ; m_macMaximumStatic = NULL ; m_macValueStatic = NULL ; m_lineSize = 1; m_tickFreq = 0; m_rangeMax = maxValue; m_rangeMin = minValue; m_pageSize = (int)((maxValue-minValue)/10); Rect bounds = wxMacGetBoundsForControl( this , pos , size ) ; // // NB: (RN) Ticks here are sometimes off in the GUI if there // is not as many ticks as there are values // UInt16 tickMarks = 0 ; if ( style & wxSL_AUTOTICKS ) tickMarks = (maxValue - minValue) + 1; //+1 for the 0 value while (tickMarks > 20) tickMarks /= 5; //keep the number of tickmarks from becoming unwieldly m_peer = new wxMacControl(this) ; verify_noerr ( CreateSliderControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()) , &bounds , value , minValue , maxValue , kControlSliderPointsDownOrRight , tickMarks , true /* liveTracking */ , GetwxMacLiveScrollbarActionProc() , m_peer->GetControlRefAddr() ) ); if(style & wxSL_VERTICAL) { SetSizeHints(10, -1, 10, -1); // Forces SetSize to use the proper width } else { SetSizeHints(-1, 10, -1, 10); // Forces SetSize to use the proper height } // NB! SetSizeHints is overloaded by wxSlider and will substitute 10 with the // proper dimensions, it also means other people cannot bugger the slider with // other values if(style & wxSL_LABELS) { m_macMinimumStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); m_macMaximumStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); m_macValueStatic = new wxStaticText( parent, wxID_ANY, wxEmptyString ); SetRange(minValue, maxValue); SetValue(value); } MacPostControlCreate(pos,size) ; return true; }