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 {
108 -(void) setIntegerValue:(NSInteger)new_value {
111 [
stepper setIntegerValue:new_value];
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];
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