1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/cocoa/slider.mm
4 // Author: Stefan Csomor
7 // RCS-ID: $Id: slider.cpp 54129 2008-06-11 19:30:52Z SC $
8 // Copyright: (c) Stefan Csomor
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
16 #include "wx/slider.h"
17 #include "wx/osx/private.h"
19 @interface wxNSSlider : NSSlider
24 - (void)setImplementation: (wxWidgetImpl *) theImplementation;
25 - (wxWidgetImpl*) implementation;
27 - (void) clickedAction: (id) sender;
31 @implementation wxNSSlider
33 - (id)initWithFrame:(NSRect)frame
35 [super initWithFrame:frame];
37 [self setTarget: self];
38 [self setAction: @selector(clickedAction:)];
42 - (void) clickedAction: (id) sender
46 wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
48 wxpeer->HandleClicked(0);
52 - (void)setImplementation: (wxWidgetImpl *) theImplementation
54 impl = theImplementation;
57 - (wxWidgetImpl*) implementation
69 wxWidgetImplType* wxWidgetImpl::CreateSlider( wxWindowMac* wxpeer,
80 NSView* sv = (wxpeer->GetParent()->GetHandle() );
82 NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
83 wxNSSlider* v = [[wxNSSlider alloc] initWithFrame:r];
86 if ( style & wxSL_AUTOTICKS )
88 tickMarks = (maximum - minimum) + 1; // +1 for the 0 value
90 // keep the number of tickmarks from becoming unwieldly, therefore below it is ok to cast
92 while (tickMarks > 20)
95 [v setNumberOfTickMarks:tickMarks];
96 [v setTickMarkPosition:NSTickMarkBelow];
99 [v setMinValue: minimum];
100 [v setMaxValue: maximum];
101 [v setFloatValue: (double) value];
103 wxWidgetCocoaImpl* c = new wxWidgetCocoaImpl( wxpeer, v );
104 [v setImplementation:c];
108 #endif // wxUSE_SLIDER