summaryrefslogtreecommitdiff
path: root/spinbox_darwin.m
diff options
context:
space:
mode:
Diffstat (limited to 'spinbox_darwin.m')
-rw-r--r--spinbox_darwin.m51
1 files changed, 36 insertions, 15 deletions
diff --git a/spinbox_darwin.m b/spinbox_darwin.m
index f9d6fe4..f767a76 100644
--- a/spinbox_darwin.m
+++ b/spinbox_darwin.m
@@ -4,37 +4,58 @@
#include "_cgo_export.h"
#import <Cocoa/Cocoa.h>
+#define togoSpinbox(x) ((goSpinbox *) (x))
+
@interface goSpinbox : NSObject {
@public
void *gospinbox;
+ NSTextField *textfield;
+ NSNumberFormatter *formatter;
+ NSStepper *stepper;
}
@property NSInteger integerValue;
+@property NSInteger minimum;
+@property NSInteger maximum;
@end
@implementation goSpinbox
@synthesize integerValue;
+@synthesize minimum;
+@synthesize maximum;
@end
-id newSpinboxStepper(void)
+id newSpinbox(void *gospinbox)
{
- NSStepper *s;
+ goSpinbox *s;
+
+ s = [goSpinbox new];
+ s->gospinbox = gospinbox;
+ s->textfield = (NSTextField *) newTextField();
+ s->formatter = [NSNumberFormatter new];
+ [s->formatter setAllowsFloats:NO];
+ [s->textfield setFormatter:s->formatter];
+ s->stepper = [[NSStepper alloc] initWithFrame:NSZeroRect];
+ [s->stepper setAutorepeat:YES]; // hold mouse button to step repeatedly
+
+ [s setMinimum:0];
+ [s setMaximum:100];
+
+ [s->textfield bind:@"integerValue" toObject:s withKeyPath:@"integerValue" options:nil];
+ [s->stepper bind:@"integerValue" toObject:s withKeyPath:@"integerValue" options:nil];
+// [s->formatter bind:@"minimum" toObject:s withKeyPath:@"minimum" options:nil];
+ [s->stepper bind:@"minValue" toObject:s withKeyPath:@"minimum" options:nil];
+// [s->formatter bind:@"maximum" toObject:s withkeyPath:@"maximum" options:nil];
+ [s->stepper bind:@"maxValue" toObject:s withKeyPath:@"maximum" options:nil];
- s = [[NSStepper alloc] initWithFrame:NSZeroRect];
- [s setMinValue:0];
- [s setMaxValue:100];
- [s setIncrement:1];
- [s setAutorepeat:YES]; // hold mouse button to step repeatedly
return (id) s;
}
-id spinboxSetup(id textfield, id stepper, void *gospinbox)
+id spinboxTextField(id spinbox)
{
- goSpinbox *g;
+ return (id) (togoSpinbox(spinbox)->textfield);
+}
- g = [goSpinbox new];
- g->gospinbox = gospinbox;
- // TODO set any options?
- [textfield bind:@"integerValue" toObject:g withKeyPath:@"integerValue" options:nil];
- [stepper bind:@"integerValue" toObject:g withKeyPath:@"integerValue" options:nil];
- return (id) g;
+id spinboxStepper(id spinbox)
+{
+ return (id) (togoSpinbox(spinbox)->stepper);
}