@interface CVSlider : NSView {
NSSlider *slider;
NSTextField *name;
+ NSString *initialName;
int *value;
void *userData;
CvTrackbarCallback callback;
}
@property(retain) NSSlider *slider;
@property(retain) NSTextField *name;
+@property(retain) NSString *initialName;
@property(assign) int *value;
@property(assign) void *userData;
@property(assign) CvTrackbarCallback callback;
@interface CVWindow : NSWindow {
NSMutableDictionary *sliders;
+ NSMutableArray *slidersKeys;
CvMouseCallback mouseCallback;
void *mouseParam;
BOOL autosize;
@property(assign) int x0;
@property(assign) int y0;
@property(retain) NSMutableDictionary *sliders;
+@property(retain) NSMutableArray *slidersKeys;
@property(readwrite) int status;
- (CVView *)contentView;
- (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags;
@synthesize x0;
@synthesize y0;
@synthesize sliders;
+@synthesize slidersKeys;
@synthesize status;
- (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags {
if(sliders == nil)
sliders = [[NSMutableDictionary alloc] init];
+ if(slidersKeys == nil)
+ slidersKeys = [[NSMutableArray alloc] init];
+
NSString *cvname = [NSString stringWithFormat:@"%s", name];
// Avoid overwriting slider
// Create slider
CVSlider *slider = [[CVSlider alloc] init];
[[slider name] setStringValue:cvname];
+ slider.initialName = [NSString stringWithFormat:@"%s", name];
[[slider slider] setMaxValue:max];
[[slider slider] setMinValue:0];
if(value)
{
[[slider slider] setIntValue:*value];
[slider setValue:value];
+ NSString *temp = [slider initialName];
+ NSString *text = [NSString stringWithFormat:@"%@ %d", temp, *value];
+ [[slider name] setStringValue: text];
}
if(callback)
[slider setCallback:callback];
// Save slider
[sliders setValue:slider forKey:cvname];
+ [slidersKeys addObject:cvname];
[[self contentView] addSubview:slider];
CVWindow *cvwindow = (CVWindow *)[self window];
if ([cvwindow respondsToSelector:@selector(sliders)]) {
- for(NSString *key in [cvwindow sliders]) {
+ for(NSString *key in [cvwindow slidersKeys]) {
CVSlider *slider = [[cvwindow sliders] valueForKey:key];
NSRect r = [slider frame];
r.origin.y = height - r.size.height;
@synthesize slider;
@synthesize name;
+@synthesize initialName;
@synthesize value;
@synthesize userData;
@synthesize callback;
- (void)sliderChanged:(NSNotification *)notification {
(void)notification;
int pos = [slider intValue];
+ NSString *temp = [self initialName];
+ NSString *text = [NSString stringWithFormat:@"%@ %d", temp, *value];
+ [name setStringValue: text];
if(value)
*value = pos;
if(callback)