15#ifndef COCOA_SPINBOX_MM
16#define COCOA_SPINBOX_MM
23- (id)initWithFrame:(NSRect)frame {
24 self = [
super initWithFrame:frame];
27 textfield = [[NSTextField alloc] initWithFrame:NSMakeRect(0.0, 0.0, 40.0, 27.0)];
28 [textfield setAlignment:NSRightTextAlignment];
29 [textfield setTarget:self];
30 [textfield setAction:@selector(getValueFromTextField:)];
31 [
self addSubview:textfield];
33 stepper = [[NSStepper alloc] initWithFrame:NSMakeRect(40.0, 0.0, 19.0, 27.0)];
34 [stepper setTarget:self];
35 [stepper setAction:@selector(getValueFromStepper:)];
36 [stepper setValueWraps:NO];
37 [
self addSubview:stepper];
45 [stepper setMinValue:minValue];
46 [stepper setMaxValue:maxValue];
67-(void) valueDidChange {
74-(void) setFrame:(NSRect)frameRect {
75 if (frameRect.size.height < 22.0) frameRect.size.height = 22.0;
76 [
super setFrame:frameRect];
77 NSRect bounds = [
self bounds];
78 NSRect stepperFrame = NSMakeRect(bounds.origin.x+bounds.size.width-16.0, bounds.origin.y-3.0, 19.0, 27.0);
79 [stepper setFrame:stepperFrame];
81 NSRect textfieldFrame = NSMakeRect(bounds.origin.x, bounds.origin.y, bounds.size.width-16.0, 22.0);
82 [textfield setFrame:textfieldFrame];
87 [[textfield window] makeFirstResponder:textfield];
98-(void) setEnabled:(BOOL)value {
99 [textfield setEnabled:value];
100 [stepper setEnabled:value];
104 return [textfield isEnabled];
108-(void) setIntegerValue:(NSInteger)new_value {
110 [textfield setIntegerValue:new_value];
111 [stepper setIntegerValue:new_value];
116 return [textfield integerValue];
119-(void) setMinValue:(NSInteger)new_min_value {
121 [stepper setMinValue:minValue];
130-(void) setMaxValue:(NSInteger)new_max_value {
132 [stepper setMaxValue:maxValue];
142- (void)setStringValue:(NSString *)aString {
144 if (aString && [aString length] > 0) {
145 value = [aString integerValue];
147 [
self setIntegerValue:value];
151 return [textfield stringValue];
154-(void) getValueFromStepper:(
id)sender {
155 NSInteger new_value = [stepper integerValue];
157 [textfield setIntegerValue:new_value];
158 [
self valueDidChange];
162-(void) getValueFromTextField:(
id)sender {
163 NSInteger new_value = [textfield integerValue];
166 [textfield setIntegerValue:new_value];
167 [stepper setIntegerValue:new_value];
168 [
self valueDidChange];
171#pragma mark Protocol Methods
void(* gwenSpinBoxActionPtr)(NSView *spinbox, void *data)
void makeFirstResponder()
gwenSpinBoxActionPtr c_actionPtr