diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index 64adcd03d..0d8dc93ae 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -129,7 +129,26 @@ var CPControlBlackColor = [CPColor blackColor]; + (void)initialize { - [self exposeBinding:"value"]; + if (self === [CPControl class]) + { + [self exposeBinding:@"value"]; + [self exposeBinding:@"objectValue"]; + [self exposeBinding:@"stringValue"]; + [self exposeBinding:@"integerValue"]; + [self exposeBinding:@"intValue"]; + [self exposeBinding:@"doubleValue"]; + [self exposeBinding:@"floatValue"]; + + [self exposeBinding:@"enabled"]; + } +} + +- (void)_replacementKeyPathForBinding:(CPString)aBinding +{ + if (aBinding === @"value") + return @"objectValue"; + + return [super _replacementKeyPathForBinding:aBinding]; } - (id)initWithFrame:(CGRect)aFrame @@ -581,22 +600,6 @@ BRIDGE(ImageScaling, imageScaling, "image-scaling") return [self hasThemeState:CPThemeStateHighlighted]; } -/* - Support the CPValueBinding binding. -*/ -- (void)setValue:(id)aValue -{ - [self setObjectValue:aValue]; -} - -- (id)_replacementKeyPathForBinding:(CPString)binding -{ - if ([binding isEqual:@"value"]) - return @"objectValue"; - - return binding; -} - @end var CPControlValueKey = "CPControlValueKey", diff --git a/AppKit/CPObjectController.j b/AppKit/CPObjectController.j index 054a5b345..65815caf2 100644 --- a/AppKit/CPObjectController.j +++ b/AppKit/CPObjectController.j @@ -535,7 +535,7 @@ var CPObjectControllerObjectClassNameKey = @"CPObjectControllerOb for (var i=0, count=[allValues count]; i -@import +@import "CPObject.j" +@import "CPDictionary.j" var transformerMap = [CPDictionary dictionary]; @@ -35,6 +35,17 @@ var transformerMap = [CPDictionary dictionary]; } ++ (void)initialize +{ + if (self !== [CPValueTransformer class]) + return; + + [CPValueTransformer setValueTransformer:[[CPNegateBooleanTransformer alloc] init] forName:CPNegateBooleanTransformerName]; + [CPValueTransformer setValueTransformer:[[CPIsNilTransformer alloc] init] forName:CPIsNilTransformerName]; + [CPValueTransformer setValueTransformer:[[CPIsNotNilTransformer alloc] init] forName:CPIsNotNilTransformerName]; + [CPValueTransformer setValueTransformer:[[CPUnarchiveFromDataTransformer alloc] init] forName:CPUnarchiveFromDataTransformerName]; +} + + (void)setValueTransformer:(CPValueTransformer)transformer forName:(CPString)aName { [transformerMap setObject:transformer forKey:aName]; @@ -79,7 +90,9 @@ var transformerMap = [CPDictionary dictionary]; // builtin transformers -@implementation CPNegateBooleanTransformer : CPObject +@implementation CPNegateBooleanTransformer : CPValueTransformer +{ +} + (BOOL)allowsReverseTransformation { @@ -103,7 +116,9 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPIsNilTransformer : CPObject +@implementation CPIsNilTransformer : CPValueTransformer +{ +} + (BOOL)allowsReverseTransformation { @@ -122,7 +137,9 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPIsNotNilTransformer : CPObject +@implementation CPIsNotNilTransformer : CPValueTransformer +{ +} + (BOOL)allowsReverseTransformation { @@ -141,7 +158,9 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPUnarchiveFromDataTransformer : CPObject +@implementation CPUnarchiveFromDataTransformer : CPValueTransformer +{ +} + (BOOL)allowsReverseTransformation { @@ -169,8 +188,3 @@ CPNegateBooleanTransformerName = @"CPNegateBooleanTransformerName"; CPIsNilTransformerName = @"CPIsNilTransformerName"; CPIsNotNilTransformerName = @"CPIsNotNilTransformerName"; CPUnarchiveFromDataTransformerName = @"CPUnarchiveFromDataTransformerName"; - -[CPValueTransformer setValueTransformer:[CPNegateBooleanTransformer new] forName:CPNegateBooleanTransformerName]; -[CPValueTransformer setValueTransformer:[CPIsNilTransformer new] forName:CPIsNilTransformerName]; -[CPValueTransformer setValueTransformer:[CPIsNotNilTransformer new] forName:CPIsNotNilTransformerName]; -[CPValueTransformer setValueTransformer:[CPUnarchiveFromDataTransformer new] forName:CPUnarchiveFromDataTransformerName]; diff --git a/Foundation/Foundation.j b/Foundation/Foundation.j index 03709afa5..a49654dd4 100755 --- a/Foundation/Foundation.j +++ b/Foundation/Foundation.j @@ -57,6 +57,7 @@ @import "CPURLResponse.j" @import "CPUserSessionManager.j" @import "CPValue.j" +@import "CPValueTransformer.j" /*! @mainpage Cappuccino is distributed under the @ref license "GNU LGPL".