From 53974a084bc914ea8666918b43803574515c9aef Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Wed, 20 Jan 2010 04:31:03 +0000 Subject: [Author: dmaclach] Fix for http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=40. Sets up GTMUILocalizer to localize some bindings. Handles: NSMultipleValuesPlaceholderBindingOption NSNoSelectionPlaceholderBindingOption NSNotApplicablePlaceholderBindingOption NSNullPlaceholderBindingOption NSDisplayNameBindingOption, NSDisplayPatternBindingOption, R=thomasvl DELTA=1475 (815 added, 596 deleted, 64 changed) --- AppKit/GTMUILocalizer.h | 1 + AppKit/GTMUILocalizer.m | 51 + AppKit/GTMUILocalizerTest.h | 4 + AppKit/GTMUILocalizerTest.m | 43 + AppKit/GTMUILocalizerTestWindow.xib | 299 +++++- AppKit/GTMUILocalizerTestWindow_10_4.xib | 1004 +++++++------------- .../TestData/GTMUILocalizerWindow1State.gtmUTState | 62 ++ .../GTMUILocalizerWindow1State_10_4.gtmUTState | 62 ++ .../Resources/English.lproj/Localizable.strings | 8 + 9 files changed, 877 insertions(+), 657 deletions(-) (limited to 'AppKit') diff --git a/AppKit/GTMUILocalizer.h b/AppKit/GTMUILocalizer.h index e3521e9..c07d7a1 100644 --- a/AppKit/GTMUILocalizer.h +++ b/AppKit/GTMUILocalizer.h @@ -77,6 +77,7 @@ - (void)localizeView:(NSView *)view recursively:(BOOL)recursive; - (void)localizeMenu:(NSMenu *)menu recursively:(BOOL)recursive; - (void)localizeCell:(NSCell *)cell recursively:(BOOL)recursive; +- (void)localizeBindings:(id)object; // NOTE: NSToolbar localization support is limited to only working on the // default items in the toolbar. We cannot localize items that are on of the diff --git a/AppKit/GTMUILocalizer.m b/AppKit/GTMUILocalizer.m index eb3c8c4..d87f1b4 100644 --- a/AppKit/GTMUILocalizer.m +++ b/AppKit/GTMUILocalizer.m @@ -100,6 +100,7 @@ } else if ([object isKindOfClass:[NSCell class]]) { [self localizeCell:(NSCell *)object recursively:recursive]; } + [self localizeBindings:object]; } } @@ -317,4 +318,54 @@ } } +- (void)localizeBindings:(id)object { + NSArray *exposedBindings = [object exposedBindings]; + if (exposedBindings) { + NSString *optionsToLocalize[] = { + NSDisplayNameBindingOption, + NSDisplayPatternBindingOption, + NSMultipleValuesPlaceholderBindingOption, + NSNoSelectionPlaceholderBindingOption, + NSNotApplicablePlaceholderBindingOption, + NSNullPlaceholderBindingOption, + }; + Class stringClass = [NSString class]; + NSString *exposedBinding; + GTM_FOREACH_OBJECT(exposedBinding, exposedBindings) { + NSDictionary *bindingInfo = [object infoForBinding:exposedBinding]; + if (bindingInfo) { + id observedObject = [bindingInfo objectForKey:NSObservedObjectKey]; + NSString *path = [bindingInfo objectForKey:NSObservedKeyPathKey]; + NSDictionary *options = [bindingInfo objectForKey:NSOptionsKey]; + if (observedObject && path && options) { + NSMutableDictionary *newOptions + = [NSMutableDictionary dictionaryWithDictionary:options]; + BOOL valueChanged = NO; + for (size_t i = 0; + i < sizeof(optionsToLocalize) / sizeof(optionsToLocalize[0]); + ++i) { + NSString *key = optionsToLocalize[i]; + NSString *value = [newOptions objectForKey:key]; + if ([value isKindOfClass:stringClass]) { + NSString *localizedValue = [self localizedStringForString:value]; + if (localizedValue) { + valueChanged = YES; + [newOptions setObject:localizedValue forKey:key]; + } + } + } + if (valueChanged) { + // Only unbind and rebind if there is a change. + [object unbind:exposedBinding]; + [object bind:exposedBinding + toObject:observedObject + withKeyPath:path + options:newOptions]; + } + } + } + } + } +} + @end diff --git a/AppKit/GTMUILocalizerTest.h b/AppKit/GTMUILocalizerTest.h index d2019bb..d1c1774 100644 --- a/AppKit/GTMUILocalizerTest.h +++ b/AppKit/GTMUILocalizerTest.h @@ -23,10 +23,14 @@ IBOutlet NSWindow *otherWindow_; IBOutlet NSWindow *anotherWindow_; IBOutlet NSMenu *otherMenu_; + IBOutlet NSTextField *bindingsTextField_; + IBOutlet NSSearchField *bindingsSearchField_; } - (NSWindow *)otherWindow; - (NSWindow *)anotherWindow; - (NSMenu *)otherMenu; +- (NSTextField *)bindingsTextField; +- (NSSearchField *)bindingsSearchField; @end #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/AppKit/GTMUILocalizerTest.m b/AppKit/GTMUILocalizerTest.m index 8c93b49..fc5153c 100644 --- a/AppKit/GTMUILocalizerTest.m +++ b/AppKit/GTMUILocalizerTest.m @@ -26,6 +26,27 @@ @end @implementation GTMUILocalizerTest +// Utility method to verify that all the options for |binding| on |object| have +// been localized. +- (void)verifyBinding:(NSString *)binding forObject:(id)object { + NSDictionary *bindingInfo + = [object infoForBinding:binding]; + STAssertNotNil(bindingInfo, + @"Can't get binding info for %@ from %@.\nExposed bindings: %@", + binding, object, [object exposedBindings]); + NSDictionary *bindingOptions = [bindingInfo objectForKey:NSOptionsKey]; + STAssertNotNil(bindingOptions, nil); + NSString *key = nil; + GTM_FOREACH_KEY(key, bindingOptions) { + id value = [bindingOptions objectForKey:key]; + if ([value isKindOfClass:[NSString class]]) { + STAssertFalse([value hasPrefix:@"^"], + @"Binding option %@ not localized. Has value %@.", + key, value); + } + } +} + - (void)testWindowLocalization { GTMUILocalizerTestWindowController *controller = [[GTMUILocalizerTestWindowController alloc] init]; @@ -57,6 +78,20 @@ [localizer localizeObject:menu recursively:YES]; GTMAssertObjectStateEqualToStateNamed(menu, @"GTMUILocalizerMenuState", nil); + + // Test binding localization. + NSTextField *textField = [controller bindingsTextField]; + STAssertNotNil(textField, nil); + [localizer localizeObject:textField recursively:NO]; + NSString *displayPatternValue1Binding + = [NSString stringWithFormat:@"%@1", NSDisplayPatternValueBinding]; + + [self verifyBinding:displayPatternValue1Binding forObject:textField]; + NSSearchField *searchField = [controller bindingsSearchField]; + STAssertNotNil(searchField, nil); + [localizer localizeObject:searchField recursively:NO]; + [self verifyBinding:NSPredicateBinding forObject:searchField]; + [localizer release]; [controller release]; } @@ -102,6 +137,14 @@ - (NSMenu *)otherMenu { return otherMenu_; } + +- (NSTextField *)bindingsTextField { + return bindingsTextField_; +} + +- (NSSearchField *)bindingsSearchField { + return bindingsSearchField_; +} @end #if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 diff --git a/AppKit/GTMUILocalizerTestWindow.xib b/AppKit/GTMUILocalizerTestWindow.xib index b59d0fe..319a8ca 100644 --- a/AppKit/GTMUILocalizerTestWindow.xib +++ b/AppKit/GTMUILocalizerTestWindow.xib @@ -2,15 +2,15 @@ 1050 - 9L30 - 677 + 9L31a + 680 949.54 353.00 YES - + YES @@ -239,7 +239,7 @@ 6 System controlTextColor - + 3 MAA @@ -572,6 +572,133 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + 36 + + YES + + + 256 + + YES + + + 268 + {{18, 44}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + + + + 268 + {{18, 14}, {96, 22}} + + YES + + 343014976 + 268436480 + + + + YES + 1 + + + + 130560 + 0 + search + _searchFieldSearch: + + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + _searchFieldCancel: + + + 138690815 + 0 + + 400 + 75 + + 255 + + + + {{1, 1}, {132, 76}} + + + + {{13, 80}, {134, 92}} + + {0, 0} + + 67239424 + 0 + Bindings Tests + + LucidaGrande + 1.100000e+01 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + {480, 270} @@ -690,17 +817,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 67239424 0 ^Box - - LucidaGrande - 1.100000e+01 - 3100 - - - 6 - System - textBackgroundColor - - + + 3 MCAwLjgwMDAwMDAxAA @@ -1053,6 +1171,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{0, 0}, {2560, 1578}} {3.40282e+38, 3.40282e+38} + + + YES + foo + + YES + @@ -1097,6 +1222,86 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 53 + + + displayPatternValue1: values.foo + + + + + + displayPatternValue1: values.foo + displayPatternValue1 + values.foo + + YES + + YES + NSDisplayPattern + NSMultipleValuesPlaceholder + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + + + YES + ^DisplayPattern + ^MultipleValuesPlaceholder + ^NoSelectionPlaceholder + ^NotApplicablePlaceholder + ^NullPlaceholder + + + 2 + + + 161 + + + + predicate: values.foo + + + + + + predicate: values.foo + predicate + values.foo + + YES + + YES + NSDisplayName + NSPredicateFormat + + + YES + ^DisplayName + keyPath contains $value + + + 2 + + + 163 + + + + bindingsTextField_ + + + + 167 + + + + bindingsSearchField_ + + + + 168 + @@ -1151,6 +1356,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + @@ -1575,6 +1781,49 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 101 + + + + + 165 + + + YES + + + + + + + 99 + + + YES + + + + + + 100 + + + + + 151 + + + YES + + + + + + 152 + + + @@ -1591,11 +1840,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 1.WindowOrigin 1.editorWindowContentRectSynchronizationRect 10.IBPluginDependency + 100.IBPluginDependency 11.IBPluginDependency 12.IBPluginDependency 13.IBPluginDependency 14.IBPluginDependency 15.IBPluginDependency + 151.IBPluginDependency + 152.IBPluginDependency 16.IBPluginDependency 2.IBPluginDependency 22.IBEditorWindowLastContentRect @@ -1652,15 +1904,16 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 9.IBPluginDependency 96.IBPluginDependency 97.IBPluginDependency + 99.IBPluginDependency YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{174, 530}, {480, 270}} + {{126, 451}, {480, 270}} com.apple.InterfaceBuilder.CocoaPlugin - {{174, 530}, {480, 270}} + {{126, 451}, {480, 270}} {196, 240} {{357, 418}, {480, 270}} @@ -1672,6 +1925,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin {{960, 479}, {480, 270}} com.apple.InterfaceBuilder.CocoaPlugin {{960, 479}, {480, 270}} @@ -1721,7 +1977,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{106, 631}, {616, 169}} + {{-6, 737}, {616, 0}} + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1748,7 +2005,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 98 + 168 @@ -1784,12 +2041,16 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES anotherWindow_ + bindingsSearchField_ + bindingsTextField_ otherMenu_ otherWindow_ YES NSWindow + NSSearchField + NSTextField NSMenu NSWindow diff --git a/AppKit/GTMUILocalizerTestWindow_10_4.xib b/AppKit/GTMUILocalizerTestWindow_10_4.xib index 7332396..d0339d3 100644 --- a/AppKit/GTMUILocalizerTestWindow_10_4.xib +++ b/AppKit/GTMUILocalizerTestWindow_10_4.xib @@ -1,20 +1,16 @@ - + 1050 - 10A432 - 732 - 1038 - 437.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 732 - + 9L31a + 680 + 949.54 + 353.00 YES - - + + YES @@ -22,7 +18,7 @@ YES - + YES @@ -48,7 +44,7 @@ Window NSWindow - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -66,7 +62,7 @@ ^Button1 LucidaGrande - 13 + 1.300000e+01 1044 @@ -119,7 +115,7 @@ controlColor 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2OQA @@ -164,7 +160,7 @@ 6 System controlTextColor - + 3 MAA @@ -312,8 +308,8 @@ 0 ^Radio 1 - 1 + 1211912703 128 @@ -339,7 +335,7 @@ YES YES - + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA @@ -365,7 +361,7 @@ AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -451,7 +447,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA YES YES - + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA @@ -477,7 +473,7 @@ AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA @@ -497,12 +493,139 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + 36 + + YES + + + 256 + + YES + + + 268 + {{18, 44}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + + + + 268 + {{18, 14}, {96, 22}} + + YES + + 343014976 + 268436480 + + + + YES + 1 + + + + 130560 + 0 + search + _searchFieldSearch: + + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + _searchFieldCancel: + + + 138690815 + 0 + + 400 + 75 + + 255 + + + + {{1, 1}, {132, 76}} + + + + {{17, 82}, {134, 92}} + + {0, 0} + + 67239424 + 0 + Bindings Tests + + LucidaGrande + 1.100000e+01 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 0 + 2 + NO + {480, 270} {{0, 0}, {1680, 1028}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 15 @@ -512,7 +635,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA ^WindowTest NSWindow - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -520,7 +643,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{0, 0}, {2560, 1578}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} ^MenuTest @@ -547,7 +670,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA ^WindowTest NSWindow - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -615,17 +738,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 67239424 0 ^Box - - LucidaGrande - 11 - 3100 - - - 6 - System - textBackgroundColor - - + + 3 MCAwLjgwMDAwMDAxAA @@ -683,8 +797,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 0 ^Radio 1 - 1 + 1211912703 128 @@ -708,7 +822,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES YES - + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA @@ -734,7 +848,7 @@ AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -817,7 +931,7 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA YES YES - + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA @@ -843,7 +957,7 @@ AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA @@ -896,8 +1010,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA _doScroller: - 1 - 0.9636363 + 1.000000e+00 + 9.636363e-01 @@ -907,7 +1021,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 1 _doScroller: - 0.50602409999999998 + 5.060241e-01 {{219, 101}, {144, 145}} @@ -976,7 +1090,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{0, 0}, {2560, 1578}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} + + + + YES + foo + + YES @@ -1022,32 +1143,149 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 53 + + + bindingsSearchField_ + + + + 102 + + + + bindingsTextField_ + + + + 103 + + + + displayPatternValue1: values.foo + + + + + + displayPatternValue1: values.foo + displayPatternValue1 + values.foo + + YES + + YES + NSDisplayPattern + NSMultipleValuesPlaceholder + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + + + YES + ^DisplayPattern + ^MultipleValuesPlaceholder + ^NoSelectionPlaceholder + ^NotApplicablePlaceholder + ^NullPlaceholder + + + 2 + + + 111 + + + + predicate: values.foo + + + + + + predicate: values.foo + predicate + values.foo + + YES + + YES + NSDisplayName + NSPredicateFormat + + + YES + ^DisplayName + keyPath contains $value + + + 2 + + + 114 + + + + displayPatternValue1: values + + + + + + displayPatternValue1: values + displayPatternValue1 + values + + YES + + YES + NSDisplayPattern + NSMultipleValuesPlaceholder + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + + + YES + ^DisplayPattern + ^MultipleValuesPlaceholder + ^NoSelectionPlaceholder + ^NotApplicablePlaceholder + ^NullPlaceholder + + + 2 + + + 119 + YES 0 - + + YES + -2 - - File's Owner + + RmlsZSdzIE93bmVyA -1 - + First Responder -3 - + Application @@ -1057,7 +1295,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + 2 @@ -1073,6 +1311,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + @@ -1177,7 +1416,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + 23 @@ -1191,7 +1430,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + 25 @@ -1201,7 +1440,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 30 - + 35 @@ -1302,7 +1541,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + 52 @@ -1477,11 +1716,54 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 97 + + + YES + + + + + + + 98 + + + YES + + + + + + 99 + + + YES + + + + + + 100 + + + + + 101 + + + + + 104 + + + YES - + YES -1.IBPluginDependency -2.IBPluginDependency @@ -1493,6 +1775,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 1.WindowOrigin 1.editorWindowContentRectSynchronizationRect 10.IBPluginDependency + 100.IBPluginDependency + 101.IBPluginDependency 11.IBPluginDependency 12.IBPluginDependency 13.IBPluginDependency @@ -1550,6 +1834,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 7.IBPluginDependency 8.IBPluginDependency 9.IBPluginDependency + 98.IBPluginDependency + 99.IBPluginDependency YES @@ -1559,7 +1845,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{174, 586}, {480, 270}} com.apple.InterfaceBuilder.CocoaPlugin {{174, 586}, {480, 270}} - + {196, 240} {{357, 418}, {480, 270}} com.apple.InterfaceBuilder.CocoaPlugin @@ -1570,10 +1856,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{648, 479}, {480, 270}} com.apple.InterfaceBuilder.CocoaPlugin - {{648, 479}, {480, 270}} - + com.apple.InterfaceBuilder.CocoaPlugin + {{324, 479}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin + {{324, 479}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin {{126, 673}, {161, 23}} com.apple.InterfaceBuilder.CocoaPlugin @@ -1595,10 +1883,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{648, 285}, {480, 270}} + {{324, 285}, {480, 270}} + com.apple.InterfaceBuilder.CocoaPlugin + {{324, 285}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{648, 285}, {480, 270}} - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1624,7 +1914,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + + YES + YES @@ -1632,13 +1924,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - + + YES + YES - 96 + 119 @@ -1648,7 +1942,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSObject YES - + YES otherObjectToLocalize_ owner_ @@ -1671,15 +1965,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSWindowController YES - + YES anotherWindow_ + bindingsSearchField_ + bindingsTextField_ otherMenu_ otherWindow_ YES NSWindow + NSSearchField + NSTextField NSMenu NSWindow @@ -1808,578 +2106,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - YES - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSMatrix - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSMatrix.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSMenuItemCell - NSButtonCell - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItemCell.h - - - - NSObject - - IBFrameworkSource - AddressBook.framework/Headers/ABActions.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSObject - - IBFrameworkSource - PrintCore.framework/Headers/PDEPluginInterface.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CIImageProvider.h - - - - NSPopUpButton - NSButton - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButton.h - - - - NSPopUpButtonCell - NSMenuItemCell - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButtonCell.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSSplitView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSSplitView.h - - - - NSTabView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h - - - - NSTabViewItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabViewItem.h - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h - - - - NSWindowController - NSResponder - - showWindow: - id - - - IBFrameworkSource - AppKit.framework/Headers/NSWindowController.h - - - 0 - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES ../GTM.xcodeproj 3 diff --git a/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState index 9d2736d..ae95f53 100644 --- a/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState +++ b/AppKit/TestData/GTMUILocalizerWindow1State.gtmUTState @@ -332,6 +332,68 @@ ViewIsHidden + ViewSubView 9 + + BoxBorderType + 1 + BoxTitle + Bindings Tests + BoxTitlePosition + 2 + BoxType + 0 + ViewIsHidden + + ViewSubView 0 + + ViewIsHidden + + ViewSubView 0 + + ControlIsEnabled + + ControlSelectedCell + + CellState + 1 + CellTag + 0 + CellTitle + DisplayPattern + CellValue + DisplayPattern + + ControlTag + 0 + ControlType + NSTextField + ControlValue + DisplayPattern + ViewIsHidden + + + ViewSubView 1 + + ControlIsEnabled + + ControlSelectedCell + + CellState + 0 + CellTag + 0 + CellTitle + + + ControlTag + 0 + ControlType + NSSearchField + ViewIsHidden + + + + WindowIsMain diff --git a/AppKit/TestData/GTMUILocalizerWindow1State_10_4.gtmUTState b/AppKit/TestData/GTMUILocalizerWindow1State_10_4.gtmUTState index 015cb93..84dde80 100644 --- a/AppKit/TestData/GTMUILocalizerWindow1State_10_4.gtmUTState +++ b/AppKit/TestData/GTMUILocalizerWindow1State_10_4.gtmUTState @@ -332,6 +332,68 @@ ViewIsHidden + ViewSubView 9 + + BoxBorderType + 1 + BoxTitle + Bindings Tests + BoxTitlePosition + 2 + BoxType + 0 + ViewIsHidden + + ViewSubView 0 + + ViewIsHidden + + ViewSubView 0 + + ControlIsEnabled + + ControlSelectedCell + + CellState + 1 + CellTag + 0 + CellTitle + DisplayPattern + CellValue + DisplayPattern + + ControlTag + 0 + ControlType + NSTextField + ControlValue + DisplayPattern + ViewIsHidden + + + ViewSubView 1 + + ControlIsEnabled + + ControlSelectedCell + + CellState + 0 + CellTag + 0 + CellTitle + + + ControlTag + 0 + ControlType + NSSearchField + ViewIsHidden + + + + WindowIsMain diff --git a/AppKit/TestData/Resources/English.lproj/Localizable.strings b/AppKit/TestData/Resources/English.lproj/Localizable.strings index 006528e..d70d574 100644 --- a/AppKit/TestData/Resources/English.lproj/Localizable.strings +++ b/AppKit/TestData/Resources/English.lproj/Localizable.strings @@ -37,3 +37,11 @@ "Radio 1" = "Localized Radio 1"; "Radio 2" = "Localized Radio 2"; "Box" = "Localized Box"; + +// Binding localization strings. +"MultipleValuesPlaceholder" = "MultipleValuesPlaceholder"; +"NoSelectionPlaceholder" = "NoSelectionPlaceholder"; +"NotApplicablePlaceholder" = "NotApplicablePlaceholder"; +"NullPlaceholder" = "NullPlaceholder"; +"DisplayName" = "DisplayName"; +"DisplayPattern" = "DisplayPattern"; -- cgit v1.2.3