From 51c90223fce6bcd50152100a5a1905c1e41daf8e Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Wed, 26 May 2010 16:44:55 +0200 Subject: [PATCH 1/5] exposed enabled binding on CPControl and made sure CPControl's bindings are only exposed once --- AppKit/CPControl.j | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index b43925a60..b273c5040 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -133,7 +133,11 @@ var CPControlBlackColor = [CPColor blackColor]; + (void)initialize { - [self exposeBinding:"value"]; + if (self === [CPControl class]) + { + [self exposeBinding:@"value"]; + [self exposeBinding:@"enabled"]; + } } - (id)initWithFrame:(CGRect)aFrame From bc0fa6a62ef8159b5a13c7a2f81483701d6e32bc Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Wed, 26 May 2010 16:45:55 +0200 Subject: [PATCH 2/5] made removeObject on _CPKVCArray work properly --- Foundation/CPArray+KVO.j | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Foundation/CPArray+KVO.j b/Foundation/CPArray+KVO.j index d723b7f7e..fa8e1147b 100644 --- a/Foundation/CPArray+KVO.j +++ b/Foundation/CPArray+KVO.j @@ -211,6 +211,11 @@ [self _setRepresentedObject:target]; } +- (void)removeObject:(id)anObject +{ + [self removeObject:anObject inRange:CPMakeRange(0, [self count])]; +} + - (void)removeLastObject { if(_remove) From 3cd44284c4a84a2ceba63cb4c37485f936f0a8cd Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Wed, 26 May 2010 16:46:44 +0200 Subject: [PATCH 3/5] - added CPValueTransformer to Foundation.j - made CPValueTransformer import Foundation objects directly - gave the build in transformers CPValueTransformer as superclass --- Foundation/CPValueTransformer.j | 20 ++++++++++---------- Foundation/Foundation.j | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Foundation/CPValueTransformer.j b/Foundation/CPValueTransformer.j index 29bfcf6f8..f3440e59c 100644 --- a/Foundation/CPValueTransformer.j +++ b/Foundation/CPValueTransformer.j @@ -23,8 +23,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -@import -@import +@import "CPObject.j" +@import "CPDictionary.j" var transformerMap = [CPDictionary dictionary]; @@ -79,7 +79,7 @@ var transformerMap = [CPDictionary dictionary]; // builtin transformers -@implementation CPNegateBooleanTransformer +@implementation CPNegateBooleanTransformer : CPValueTransformer + (BOOL)allowsReverseTransformation { @@ -103,7 +103,7 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPIsNilTransformer +@implementation CPIsNilTransformer : CPValueTransformer + (BOOL)allowsReverseTransformation { @@ -122,7 +122,7 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPIsNotNilTransformer +@implementation CPIsNotNilTransformer : CPValueTransformer + (BOOL)allowsReverseTransformation { @@ -141,7 +141,7 @@ var transformerMap = [CPDictionary dictionary]; @end -@implementation CPUnarchiveFromDataTransformer +@implementation CPUnarchiveFromDataTransformer : CPValueTransformer + (BOOL)allowsReverseTransformation { @@ -170,7 +170,7 @@ 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]; +[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]; \ No newline at end of file diff --git a/Foundation/Foundation.j b/Foundation/Foundation.j index 4bf1460e4..f2066ed2f 100755 --- a/Foundation/Foundation.j +++ b/Foundation/Foundation.j @@ -56,6 +56,7 @@ @import "CPURLResponse.j" @import "CPUserSessionManager.j" @import "CPValue.j" +@import "CPValueTransformer.j" /*! @mainpage Cappuccino is distributed under the @ref license "GNU LGPL". From 084da71420fe36e9b1ffad67d74d3a515694ce67 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Thu, 27 May 2010 15:22:40 +0200 Subject: [PATCH 4/5] exposed more bindings on CPControl --- AppKit/CPControl.j | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index b273c5040..b1f5474f6 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -136,10 +136,25 @@ var CPControlBlackColor = [CPColor blackColor]; 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 { self = [super initWithFrame:aFrame]; @@ -578,14 +593,6 @@ BRIDGE(ImageScaling, imageScaling, "image-scaling") return [self hasThemeState:CPThemeStateHighlighted]; } -- (id)_replacementKeyPathForBinding:(CPString)binding -{ - if ([binding isEqual:@"value"]) - return @"objectValue"; - - return binding; -} - @end var CPControlValueKey = "CPControlValueKey", From eacd408ce84672705b82ac9684480a35d85ffe84 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Thu, 27 May 2010 15:23:09 +0200 Subject: [PATCH 5/5] Fixed a typo in CPObjectController --- AppKit/CPObjectController.j | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AppKit/CPObjectController.j b/AppKit/CPObjectController.j index ed3a2eb22..c317986a9 100644 --- a/AppKit/CPObjectController.j +++ b/AppKit/CPObjectController.j @@ -525,7 +525,7 @@ var CPObjectControllerObjectClassNameKey = @"CPObjectControllerOb for (var i=0, count=[allValues count]; i