aboutsummaryrefslogtreecommitdiff
path: root/UnitTesting
diff options
context:
space:
mode:
authorGravatar dmaclach <dmaclach@google.com>2016-10-07 12:10:23 -0400
committerGravatar Thomas Van Lenten <thomasvl@google.com>2016-10-07 12:21:06 -0400
commit42124b3691197c3c4f52f069775fa0390a8ff942 (patch)
treeebd373d398ea64b45bdc1d196fa0a2c5f57cabfd /UnitTesting
parent57eeab4193210df8ab0c81e9d3f1ee1ad3e24492 (diff)
First cut at pruning things/updating things.
Remove a bunch of code that Google stopped using/maintaining rather than trying to update it it. Some would be hard to update, some actually has system provided replacements; others are patterns that just don't seem as common now. Prune out the code related to macOS <= 10.5, start pruning some of the really old iOS support also. Get the projects mostly limping again with modern Xcodes so tests can be run. If someone ends up on this commit via history for something they still find as useful, feel free to do a pull request to bring the snippet of code back to life and update it for current SDKs.
Diffstat (limited to 'UnitTesting')
-rw-r--r--UnitTesting/GTMAppKit+UnitTesting.h171
-rw-r--r--UnitTesting/GTMAppKit+UnitTesting.m583
-rw-r--r--UnitTesting/GTMAppKitUnitTestingUtilities.h15
-rw-r--r--UnitTesting/GTMAppKitUnitTestingUtilities.m158
-rw-r--r--UnitTesting/GTMCALayer+UnitTesting.h46
-rw-r--r--UnitTesting/GTMCALayer+UnitTesting.m89
-rw-r--r--UnitTesting/GTMDevLogUnitTestingBridge.m44
-rw-r--r--UnitTesting/GTMIPhoneSecurityLibraryTest.m75
-rw-r--r--UnitTesting/GTMIPhoneUnitTestDelegate.m2
-rw-r--r--UnitTesting/GTMIPhoneUnitTestMain.m28
-rw-r--r--UnitTesting/GTMNSObject+BindingUnitTesting.h120
-rw-r--r--UnitTesting/GTMNSObject+BindingUnitTesting.m577
-rw-r--r--UnitTesting/GTMNSObject+UnitTesting.h430
-rw-r--r--UnitTesting/GTMNSObject+UnitTesting.m1047
-rw-r--r--UnitTesting/GTMSenTestCase.h20
-rw-r--r--UnitTesting/GTMSenTestCase.m21
-rw-r--r--UnitTesting/GTMSenTestCaseTest.m22
-rw-r--r--UnitTesting/GTMTestTimerTest.m30
-rw-r--r--UnitTesting/GTMUIKit+UnitTesting.h128
-rw-r--r--UnitTesting/GTMUIKit+UnitTesting.m122
-rw-r--r--UnitTesting/GTMUIKit+UnitTestingTest.m67
-rw-r--r--UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib2376
-rw-r--r--UnitTesting/GTMUIUnitTestingHarness/main.m3
-rw-r--r--UnitTesting/GTMUnitTestDevLog.h59
-rw-r--r--UnitTesting/GTMUnitTestDevLog.m253
-rw-r--r--UnitTesting/GTMUnitTestingBindingTest.m116
-rw-r--r--UnitTesting/GTMUnitTestingTest.h29
-rw-r--r--UnitTesting/GTMUnitTestingTest.m253
-rw-r--r--UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState33
-rw-r--r--UnitTesting/TestData/GTMUIViewUnitTestingTest.pngbin3214 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.10.6.tiffbin20174 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.gtmUTState30
-rw-r--r--UnitTesting/TestData/GTMUnitTestingImage.tiffbin67190 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib86
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib1144
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib20
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nibbin15667 -> 15255 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState2608
-rw-r--r--UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState2204
-rw-r--r--UnitTesting/TestData/GTMUnitTestingView.10.6.tiffbin2818 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingView.tiffbin161670 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiffbin21176 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState1308
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiffbin21622 -> 0 bytes
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState904
-rw-r--r--UnitTesting/TestData/GTMUnitTestingWindow.tiffbin21226 -> 0 bytes
48 files changed, 1556 insertions, 13665 deletions
diff --git a/UnitTesting/GTMAppKit+UnitTesting.h b/UnitTesting/GTMAppKit+UnitTesting.h
deleted file mode 100644
index 7f6bd26..0000000
--- a/UnitTesting/GTMAppKit+UnitTesting.h
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// GTMAppKit+UnitTesting.m
-//
-// Categories for making unit testing of graphics/UI easier.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-#import "GTMNSObject+UnitTesting.h"
-
-// Categories for making unit testing of graphics/UI easier.
-// Allows you to take a state/images of instances of AppKit classes.
-// See GTMNSObject+UnitTesting.h for details.
-
-@interface NSApplication (GTMUnitTestingAdditions)
-@end
-
-@interface NSWindow (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-@interface NSControl (GTMUnitTestingAdditions)
-@end
-
-@interface NSButton (GTMUnitTestingAdditions)
-@end
-
-@interface NSTextField (GTMUnitTestingAdditions)
-@end
-
-@interface NSCell (GTMUnitTestingAdditions)
-@end
-
-@interface NSImage (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-@interface NSMenu (GTMUnitTestingAdditions)
-@end
-
-@interface NSMenuItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSTabView (GTMUnitTestingAdditions)
-@end
-
-@interface NSTabViewItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSToolbar (GTMUnitTestingAdditions)
-@end
-
-@interface NSToolbarItem (GTMUnitTestingAdditions)
-@end
-
-@interface NSMatrix (GTMUnitTestingAdditions)
-@end
-
-@interface NSBox (GTMUnitTestingAdditions)
-@end
-
-@interface NSSegmentedControl (GTMUnitTestingAdditions)
-@end
-
-@interface NSComboBox (GTMUnitTestingAdditions)
-@end
-
-@protocol GTMUnitTestViewDrawer;
-
-// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|.
-// See the description of the -gtm_pathForImageNamed method
-// to understand how |a3| is found and written out.
-// See the description of the GTMUnitTestView for a better idea
-// how the view works.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object that implements the GTMUnitTestViewDrawer protocol
-// that is doing the drawing.
-// a2: The size of the drawing
-// a3: The name of the image file to check against.
-// Do not include the extension
-// a4: contextInfo to pass to drawer
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-
-#define GTMAssertDrawingEqualToImageNamed(a1, a2, a3, a4, description, ...) \
- do { \
- id<GTMUnitTestViewDrawer> a1Drawer = (a1); \
- NSSize a2Size = (a2); \
- NSString* a3String = (a3); \
- void *a4ContextInfo = (a4); \
- NSRect frame = NSMakeRect(0, 0, a2Size.width, a2Size.height); \
- GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \
- GTMAssertObjectImageEqualToImageNamed(view, a3String, STComposeString(description, ##__VA_ARGS__)); \
- } while(0)
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See NSObject+UnitTesting.h for details.
-@interface NSView (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-// Returns whether unitTestEncodeState should recurse into subviews
-//
-// If you have "Full keyboard access" in the
-// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes
-// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the
-// case of NSTextFields we don't want to recurse into their subviews. There may
-// be other cases like this, so instead of specializing unitTestEncodeState: to
-// look for NSTextFields, NSTextFields will just not allow us to recurse into
-// their subviews.
-//
-// Returns:
-// should unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews;
-
-@end
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol
-// This is useful when writing up unit tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@interface GTMUnitTestView : NSView {
- @private
- id<GTMUnitTestViewDrawer> drawer_; // delegate for doing drawing (STRONG)
- void* contextInfo_; // info passed in by user for them to use when drawing
-}
-
-// Create a GTMUnitTestView.
-//
-// Args:
-// rect: the area to draw.
-// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer
-// protocol
-// contextInfo:
-- (id)initWithFrame:(NSRect)frame drawer:(id<GTMUnitTestViewDrawer>)drawer contextInfo:(void*)contextInfo;
-@end
-
-/// \cond Protocols
-
-// Formal protocol for doing unit testing of views. See description of
-// GTMUnitTestView for details.
-@protocol GTMUnitTestViewDrawer <NSObject>
-
-// Draw the view. Equivalent to drawRect on a standard NSView.
-//
-// Args:
-// rect: the area to draw.
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo;
-@end
-
diff --git a/UnitTesting/GTMAppKit+UnitTesting.m b/UnitTesting/GTMAppKit+UnitTesting.m
deleted file mode 100644
index 5b4d6f7..0000000
--- a/UnitTesting/GTMAppKit+UnitTesting.m
+++ /dev/null
@@ -1,583 +0,0 @@
-//
-// GTMAppKit+UnitTesting.m
-//
-// Categories for making unit testing of graphics/UI easier.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDefines.h"
-#import "GTMAppKit+UnitTesting.h"
-#import "GTMGeometryUtils.h"
-#import "GTMMethodCheck.h"
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4
- #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInt:(i) forKey:(key)]
-#else
- #define ENCODE_NSINTEGER(coder, i, key) [(coder) encodeInteger:(i) forKey:(key)]
-#endif
-
-@implementation NSApplication (GTMUnitTestingAdditions)
-GTM_METHOD_CHECK(NSObject, gtm_unitTestEncodeState:);
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- ENCODE_NSINTEGER(inCoder, [[self mainWindow] windowNumber], @"ApplicationMainWindow");
-
- // Descend down into the windows allowing them to store their state
- NSWindow *window = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(window, [self windows]) {
- if ([window isVisible]) {
- // Only record visible windows because invisible windows may be closing on us
- // This appears to happen differently in 64 bit vs 32 bit, and items
- // in the window may hold an extra retain count for a while until the
- // event loop is spun. To avoid all this, we just don't record non
- // visible windows.
- // See rdar://5851458 for details.
- [inCoder encodeObject:window forKey:[NSString stringWithFormat:@"Window %d", i]];
- i = i + 1;
- }
- }
-
- // and encode the menu bar
- NSMenu *mainMenu = [self mainMenu];
- if (mainMenu) {
- [inCoder encodeObject:mainMenu forKey:@"MenuBar"];
- }
-}
-@end
-
-@implementation NSWindow (GTMUnitTestingAdditions)
-
-- (CGImageRef)gtm_unitTestImage {
- return [[[self contentView] superview] gtm_unitTestImage];
-}
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self title] forKey:@"WindowTitle"];
- [inCoder encodeBool:[self isVisible] forKey:@"WindowIsVisible"];
- // Do not record if window is key, because users running unit tests
- // and clicking around to other apps, could change this mid test causing
- // issues.
- // [inCoder encodeBool:[self isKeyWindow] forKey:@"WindowIsKey"];
- [inCoder encodeBool:[self isMainWindow] forKey:@"WindowIsMain"];
- [inCoder encodeObject:[self contentView] forKey:@"WindowContent"];
- if ([self toolbar]) {
- [inCoder encodeObject:[self toolbar] forKey:@"WindowToolbar"];
- }
-}
-
-@end
-
-@implementation NSControl (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self class] forKey:@"ControlType"];
- [inCoder encodeObject:[self objectValue] forKey:@"ControlValue"];
- [inCoder encodeObject:[self selectedCell] forKey:@"ControlSelectedCell"];
- ENCODE_NSINTEGER(inCoder, [self tag], @"ControlTag");
- [inCoder encodeBool:[self isEnabled] forKey:@"ControlIsEnabled"];
-}
-
-@end
-
-@implementation NSButton (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSString *alternateTitle = [self alternateTitle];
- if (alternateTitle) {
- [inCoder encodeObject:alternateTitle forKey:@"ButtonAlternateTitle"];
- }
-}
-
-@end
-
-@implementation NSTextField (GTMUnitTestingAdditions)
-
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return NO;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- id controlCell = [self cell];
- if ([controlCell isKindOfClass:[NSTextFieldCell class]]) {
- NSTextFieldCell *textFieldCell = controlCell;
- [inCoder encodeObject:[textFieldCell placeholderString]
- forKey:@"PlaceHolderString"];
- }
-}
-
-@end
-
-@implementation NSCell (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- BOOL isImageCell = NO;
- if ([self hasValidObjectValue]) {
- id val = [self objectValue];
- [inCoder encodeObject:val forKey:@"CellValue"];
- isImageCell = [val isKindOfClass:[NSImage class]];
- }
- if (!isImageCell) {
- // Image cells have a title that includes addresses that aren't going
- // to be constant, so we don't encode them. All the info we need
- // is going to be in the CellValue encoding.
- [inCoder encodeObject:[self title] forKey:@"CellTitle"];
- }
- ENCODE_NSINTEGER(inCoder, [self state], @"CellState");
- ENCODE_NSINTEGER(inCoder, [self tag], @"CellTag");
-}
-
-@end
-
-@implementation NSImage (GTMUnitTestingAdditions)
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:NSStringFromSize([self size]) forKey:@"ImageSize"];
- [inCoder encodeObject:[self name] forKey:@"ImageName"];
-}
-
-- (CGImageRef)gtm_unitTestImage {
- // Create up a context
- NSSize size = [self size];
- NSRect rect = GTMNSRectOfSize(size);
- CGSize cgSize = GTMNSSizeToCGSize(size);
- CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize,
- NULL);
- NSGraphicsContext *bitmapContext
- = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO];
- _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context");
-
- [NSGraphicsContext saveGraphicsState];
- [NSGraphicsContext setCurrentContext:bitmapContext];
- [self drawInRect:rect fromRect:rect operation:NSCompositeCopy fraction:1.0];
-
- CGImageRef image = CGBitmapContextCreateImage(contextRef);
- CFRelease(contextRef);
- [NSGraphicsContext restoreGraphicsState];
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-@end
-
-@implementation NSMenu (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- // Hack here to work around
- // rdar://5881796 Application menu item title wrong when accessed programatically
- // which causes us to have different results on x86_64 vs x386.
- // Hack is braced intentionally. We don't record the title of the
- // "application" menu or it's menu title because they are wrong on 32 bit.
- // They appear to work right on 64bit.
- {
- NSMenu *mainMenu = [NSApp mainMenu];
- NSMenu *appleMenu = [[mainMenu itemAtIndex:0] submenu];
- if (![self isEqual:appleMenu]) {
- [inCoder encodeObject:[self title] forKey:@"MenuTitle"];
- }
- }
- // Descend down into the menuitems allowing them to store their state
- NSMenuItem *menuItem = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(menuItem, [self itemArray]) {
- [inCoder encodeObject:menuItem
- forKey:[NSString stringWithFormat:@"MenuItem %d", i]];
- ++i;
- }
-}
-
-@end
-
-@implementation NSMenuItem (GTMUnitTestingAdditions)
-
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- // Hack here to work around
- // rdar://5881796 Application menu item title wrong when accessed programatically
- // which causes us to have different results on x86_64 vs x386.
- // See comment above.
- {
- NSMenu *mainMenu = [NSApp mainMenu];
- NSMenuItem *appleMenuItem = [mainMenu itemAtIndex:0];
- if (![self isEqual:appleMenuItem]) {
- [inCoder encodeObject:[self title] forKey:@"MenuItemTitle"];
- }
- }
- [inCoder encodeObject:[self keyEquivalent] forKey:@"MenuItemKeyEquivalent"];
- [inCoder encodeBool:[self isSeparatorItem] forKey:@"MenuItemIsSeparator"];
- ENCODE_NSINTEGER(inCoder, [self state], @"MenuItemState");
- [inCoder encodeBool:[self isEnabled] forKey:@"MenuItemIsEnabled"];
- [inCoder encodeBool:[self isAlternate] forKey:@"MenuItemIsAlternate"];
- [inCoder encodeObject:[self toolTip] forKey:@"MenuItemTooltip"];
- ENCODE_NSINTEGER(inCoder, [self tag], @"MenuItemTag");
- ENCODE_NSINTEGER(inCoder, [self indentationLevel], @"MenuItemIndentationLevel");
-
- // Do our submenu if neccessary
- if ([self hasSubmenu]) {
- [inCoder encodeObject:[self submenu] forKey:@"MenuItemSubmenu"];
- }
-}
-
-@end
-
-@implementation NSTabView (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSTabViewItem *tab = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(tab, [self tabViewItems]) {
- NSString *key = [NSString stringWithFormat:@"TabItem %d", i];
- [inCoder encodeObject:tab forKey:key];
- i = i + 1;
- }
-}
-
-@end
-
-@implementation NSTabViewItem (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self label] forKey:@"TabLabel"];
- [inCoder encodeObject:[self view] forKey:@"TabView"];
-}
-
-@end
-
-@implementation NSToolbar (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- NSToolbarItem *item = nil;
- NSUInteger i = 0;
- GTM_FOREACH_OBJECT(item, [self items]) {
- NSString *key
- = [NSString stringWithFormat:@"ToolbarItem %lu", (unsigned long)i];
- [inCoder encodeObject:item forKey:key];
- i = i + 1;
- }
-}
-
-@end
-
-@implementation NSToolbarItem (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeObject:[self label] forKey:@"Label"];
- [inCoder encodeObject:[self paletteLabel] forKey:@"PaletteLabel"];
- [inCoder encodeObject:[self toolTip] forKey:@"ToolTip"];
- NSView *view = [self view];
- if (view) {
- [inCoder encodeObject:view forKey:@"View"];
- }
-}
-
-@end
-
-@implementation NSMatrix (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- ENCODE_NSINTEGER(inCoder, [self mode], @"MatrixMode");
- ENCODE_NSINTEGER(inCoder, [self numberOfRows], @"MatrixRowCount");
- ENCODE_NSINTEGER(inCoder, [self numberOfColumns], @"MatrixColumnCount");
- [inCoder encodeBool:[self allowsEmptySelection]
- forKey:@"MatrixAllowEmptySelection"];
- [inCoder encodeBool:[self isSelectionByRect] forKey:@"MatrixSelectionByRect"];
- [inCoder encodeBool:[self autosizesCells] forKey:@"MatrixAutosizesCells"];
- [inCoder encodeSize:[self intercellSpacing] forKey:@"MatrixIntercellSpacing"];
-
- [inCoder encodeObject:[self prototype] forKey:@"MatrixCellPrototype"];
-
- // Dump the list of cells
- NSCell *cell;
- long i = 0;
- GTM_FOREACH_OBJECT(cell, [self cells]) {
- [inCoder encodeObject:cell
- forKey:[NSString stringWithFormat:@"MatrixCell %ld", i]];
- ++i;
- }
-}
-
-@end
-
-@implementation NSBox (GTMUnitTestingAdditions)
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- [inCoder encodeObject:[self title] forKey:@"BoxTitle"];
- ENCODE_NSINTEGER(inCoder, [self titlePosition], @"BoxTitlePosition");
- ENCODE_NSINTEGER(inCoder, [self boxType], @"BoxType");
- ENCODE_NSINTEGER(inCoder, [self borderType], @"BoxBorderType");
- // 10.5+ [inCoder encodeBool:[self isTransparent] forKey:@"BoxIsTransparent"];
-}
-
-@end
-
-@implementation NSSegmentedControl (GTMUnitTestingAdditions)
-
-// Encodes the state of an NSSegmentedControl and all its segments.
-//
-// Arguments:
-// inCoder - the coder to encode state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- NSInteger segmentCount = [self segmentCount];
- ENCODE_NSINTEGER(inCoder, segmentCount, @"SegmentCount");
-
- for (NSInteger i = 0; i < segmentCount; ++i) {
- NSString *key = [NSString stringWithFormat:@"Segment %ld", (long)i];
- [inCoder encodeObject:[self labelForSegment:i] forKey:key];
- }
-}
-
-@end
-
-@implementation NSComboBox (GTMUnitTestingAdditions)
-
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- // Subclass of NSTextView, don't want subviews for the same reason.
- return NO;
-}
-
-// Encodes the state of an NSSegmentedControl and all its segments.
-//
-// Arguments:
-// inCoder - the coder to encode state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
-
- NSInteger aCount = [self numberOfItems];
- ENCODE_NSINTEGER(inCoder, aCount, @"ComboBoxNumberOfItems");
- aCount = [self numberOfVisibleItems];
- ENCODE_NSINTEGER(inCoder, aCount, @"ComboBoxNumberOfVisibleItems");
-
- // Include the objectValues if it doesn't use a data source.
- if (![self usesDataSource]) {
- NSArray *objectValues = [self objectValues];
- for (NSUInteger i = 0; i < [objectValues count]; ++i) {
- id value = [objectValues objectAtIndex:i];
- if ([value isKindOfClass:[NSString class]]) {
- NSString *key = [NSString stringWithFormat:@"ComboBoxObjectValue %lu",
- (unsigned long)i];
- [inCoder encodeObject:value forKey:key];
- }
- }
- }
-}
-
-@end
-
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit
-// tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, NSMakeSize(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@implementation GTMUnitTestView
-
-- (id)initWithFrame:(NSRect)frame
- drawer:(id<GTMUnitTestViewDrawer>)drawer
- contextInfo:(void*)contextInfo {
- self = [super initWithFrame:frame];
- if (self != nil) {
- drawer_ = [drawer retain];
- contextInfo_ = contextInfo;
- }
- return self;
-}
-
-- (void)dealloc {
- [drawer_ release];
- [super dealloc];
-}
-
-
-- (void)drawRect:(NSRect)rect {
- [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_];
-}
-
-
-@end
-
-@implementation NSView (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- // Create up a context
- NSRect bounds = [self bounds];
- CGSize cgSize = GTMNSSizeToCGSize(bounds.size);
- CGContextRef contextRef = GTMCreateUnitTestBitmapContextOfSizeWithData(cgSize,
- NULL);
- NSGraphicsContext *bitmapContext
- = [NSGraphicsContext graphicsContextWithGraphicsPort:contextRef flipped:NO];
- _GTMDevAssert(bitmapContext, @"Couldn't create ns bitmap context");
-
- // Save our state and turn off font smoothing and antialias.
- CGContextSaveGState(contextRef);
- CGContextSetShouldSmoothFonts(contextRef, false);
- CGContextSetShouldAntialias(contextRef, false);
- [self displayRectIgnoringOpacity:bounds inContext:bitmapContext];
-
- CGImageRef image = CGBitmapContextCreateImage(contextRef);
- CFRelease(contextRef);
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-// of a particular view.
-// If you have "Full keyboard access" in the
-// Keyboard & Mouse > Keyboard Shortcuts preferences pane set to "Text boxes
-// and Lists only" that Apple adds a set of subviews to NSTextFields. So in the
-// case of NSTextFields we don't want to recurse into their subviews. There may
-// be other cases like this, so instead of specializing gtm_unitTestEncodeState: to
-// look for NSTextFields, NSTextFields will just not allow us to recurse into
-// their subviews.
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return YES;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"];
- [inCoder encodeObject:[self toolTip] forKey:@"ViewToolTip"];
- NSArray *supportedAttrs = [self accessibilityAttributeNames];
- if ([supportedAttrs containsObject:NSAccessibilityHelpAttribute]) {
- NSString *help
- = [self accessibilityAttributeValue:NSAccessibilityHelpAttribute];
- [inCoder encodeObject:help forKey:@"ViewAccessibilityHelp"];
- }
- if ([supportedAttrs containsObject:NSAccessibilityDescriptionAttribute]) {
- NSString *description
- = [self accessibilityAttributeValue:NSAccessibilityDescriptionAttribute];
- [inCoder encodeObject:description forKey:@"ViewAccessibilityDescription"];
- }
- NSMenu *menu = [self menu];
- if (menu) {
- [inCoder encodeObject:menu forKey:@"ViewMenu"];
- }
- if ([self gtm_shouldEncodeStateForSubviews]) {
- NSView *subview = nil;
- int i = 0;
- GTM_FOREACH_OBJECT(subview, [self subviews]) {
- [inCoder encodeObject:subview forKey:[NSString stringWithFormat:@"ViewSubView %d", i]];
- i = i + 1;
- }
- }
-}
-
-@end
-
diff --git a/UnitTesting/GTMAppKitUnitTestingUtilities.h b/UnitTesting/GTMAppKitUnitTestingUtilities.h
index 1edccd7..b3852ba 100644
--- a/UnitTesting/GTMAppKitUnitTestingUtilities.h
+++ b/UnitTesting/GTMAppKitUnitTestingUtilities.h
@@ -23,21 +23,6 @@
// Collection of utilities for unit testing
@interface GTMAppKitUnitTestingUtilities : NSObject
-// Sets up the user interface so that we can run consistent UI unittests on
-// it. This includes setting scroll bar types, setting selection colors
-// setting color spaces etc so that everything is consistent across machines.
-// This should be called in main, before NSApplicationMain is called.
-+ (void)setUpForUIUnitTests;
-
-// Syntactic sugar combining that checks to see if we are running unittests
-// and then calls setUpForUIUnitTests wrapped up in a NSAutoreleasePool so that
-// your main can look like this:
-// int main(int argc, const char *argv[]) {
-// [UnitTestingUtilities setUpForUIUnitTestsIfBeingTested];
-// return NSApplicationMain(argc, argv);
-// }
-+ (void)setUpForUIUnitTestsIfBeingTested;
-
// Check if the screen saver is running. Some unit tests don't work when
// the screen saver is active.
+ (BOOL)isScreenSaverActive;
diff --git a/UnitTesting/GTMAppKitUnitTestingUtilities.m b/UnitTesting/GTMAppKitUnitTestingUtilities.m
index 71c4d76..d90d608 100644
--- a/UnitTesting/GTMAppKitUnitTestingUtilities.m
+++ b/UnitTesting/GTMAppKitUnitTestingUtilities.m
@@ -17,68 +17,12 @@
//
#import "GTMAppKitUnitTestingUtilities.h"
-#import <AppKit/AppKit.h>
-#include <signal.h>
-#include <unistd.h>
#import "GTMDefines.h"
-// The Users profile before we change it on them
-static CMProfileRef gGTMCurrentColorProfile = NULL;
-
-// Compares two color profiles
-static BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b);
-// Stores the user's color profile away, and changes over to generic.
-static void GTMSetColorProfileToGenericRGB();
-// Restores the users profile.
-static void GTMRestoreColorProfile(void);
-// Signal handler to try and restore users profile.
-static void GTMHandleCrashSignal(int signalNumber);
-
static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode);
@implementation GTMAppKitUnitTestingUtilities
-// Sets up the user interface so that we can run consistent UI unittests on it.
-+ (void)setUpForUIUnitTests {
- // Give some names to undocumented defaults values
- const NSInteger MediumFontSmoothing = 2;
- const NSInteger BlueTintedAppearance = 1;
-
- // This sets up some basic values that we want as our defaults for doing pixel
- // based user interface tests. These defaults only apply to the unit test app,
- // except or the color profile which will be set system wide, and then
- // restored when the tests complete.
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- // Scroll arrows together bottom
- [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"];
- // Smallest font size to CG should perform antialiasing on
- [defaults setInteger:4 forKey:@"AppleAntiAliasingThreshold"];
- // Type of smoothing
- [defaults setInteger:MediumFontSmoothing forKey:@"AppleFontSmoothing"];
- // Blue aqua
- [defaults setInteger:BlueTintedAppearance forKey:@"AppleAquaColorVariant"];
- // Standard highlight colors
- [defaults setObject:@"0.709800 0.835300 1.000000"
- forKey:@"AppleHighlightColor"];
- [defaults setObject:@"0.500000 0.500000 0.500000"
- forKey:@"AppleOtherHighlightColor"];
- // Use english plz
- [defaults setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
- // How fast should we draw sheets. This speeds up the sheet tests considerably
- [defaults setFloat:.001f forKey:@"NSWindowResizeTime"];
- // Switch over the screen profile to "generic rgb". This installs an
- // atexit handler to return our profile back when we are done.
- GTMSetColorProfileToGenericRGB();
-}
-
-+ (void)setUpForUIUnitTestsIfBeingTested {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- if ([GTMFoundationUnitTestingUtilities areWeBeingUnitTested]) {
- [self setUpForUIUnitTests];
- }
- [pool drain];
-}
-
+ (BOOL)isScreenSaverActive {
BOOL answer = NO;
ProcessSerialNumber psn;
@@ -150,108 +94,6 @@ CantWorkWithScreenSaver:
@end
-BOOL GTMAreCMProfilesEqual(CMProfileRef a, CMProfileRef b) {
- BOOL equal = YES;
- if (a != b) {
- CMProfileMD5 aMD5;
- CMProfileMD5 bMD5;
- CMError aMD5Err = CMGetProfileMD5(a, aMD5);
- CMError bMD5Err = CMGetProfileMD5(b, bMD5);
- equal = (!aMD5Err &&
- !bMD5Err &&
- !memcmp(aMD5, bMD5, sizeof(CMProfileMD5))) ? YES : NO;
- }
- return equal;
-}
-
-void GTMRestoreColorProfile(void) {
- if (gGTMCurrentColorProfile) {
- CGDirectDisplayID displayID = CGMainDisplayID();
- CMError error = CMSetProfileByAVID((UInt32)displayID,
- gGTMCurrentColorProfile);
- CMCloseProfile(gGTMCurrentColorProfile);
- if (error) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to restore previous color profile! "
- @"You may need to open System Preferences : Displays : Color "
- @"and manually restore your color settings. (Error: %ld)",
- (long)error);
- // COV_NF_END
- } else {
- _GTMDevLog(@"Color profile restored");
- }
- gGTMCurrentColorProfile = NULL;
- }
-}
-
-void GTMHandleCrashSignal(int signalNumber) {
- // Going down in flames, might as well try to restore the color profile
- // anyways.
- GTMRestoreColorProfile();
- // Go ahead and exit with the signal value relayed just incase.
- _exit(signalNumber + 128);
-}
-
-void GTMSetColorProfileToGenericRGB(void) {
- NSColorSpace *genericSpace = [NSColorSpace genericRGBColorSpace];
- CMProfileRef genericProfile = (CMProfileRef)[genericSpace colorSyncProfile];
- CMProfileRef previousProfile;
- CGDirectDisplayID displayID = CGMainDisplayID();
- CMError error = CMGetProfileByAVID((UInt32)displayID, &previousProfile);
- if (error) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to get current color profile. "
- "I will not be able to restore your current profile, thus I'm "
- "not changing it. Many unit tests may fail as a result. (Error: %li)",
- (long)error);
- return;
- // COV_NF_END
- }
- if (GTMAreCMProfilesEqual(genericProfile, previousProfile)) {
- CMCloseProfile(previousProfile);
- return;
- }
- CFStringRef previousProfileName;
- CFStringRef genericProfileName;
- CMCopyProfileDescriptionString(previousProfile, &previousProfileName);
- CMCopyProfileDescriptionString(genericProfile, &genericProfileName);
-
- _GTMDevLog(@"Temporarily changing your system color profile from \"%@\" to \"%@\".",
- previousProfileName, genericProfileName);
- _GTMDevLog(@"This allows the pixel-based unit-tests to have consistent color "
- "values across all machines.");
- _GTMDevLog(@"The colors on your screen will change for the duration of the testing.");
-
-
- if ((error = CMSetProfileByAVID((UInt32)displayID, genericProfile))) {
- // COV_NF_START
- // No way to force this case in a unittest.
- _GTMDevLog(@"Failed to set color profile to \"%@\"! Many unit tests will fail as "
- "a result. (Error: %li)", genericProfileName, (long)error);
- // COV_NF_END
- } else {
- gGTMCurrentColorProfile = previousProfile;
- atexit(GTMRestoreColorProfile);
- // WebKit DRT and Chrome TestShell both use this trick. If the test is
- // already crashing, might as well try restoring the color profile, and if
- // it fails, it is no worse than crashing without having tried.
- signal(SIGILL, GTMHandleCrashSignal);
- signal(SIGTRAP, GTMHandleCrashSignal);
- signal(SIGEMT, GTMHandleCrashSignal);
- signal(SIGFPE, GTMHandleCrashSignal);
- signal(SIGBUS, GTMHandleCrashSignal);
- signal(SIGSEGV, GTMHandleCrashSignal);
- signal(SIGSYS, GTMHandleCrashSignal);
- signal(SIGPIPE, GTMHandleCrashSignal);
- signal(SIGXCPU, GTMHandleCrashSignal);
- signal(SIGXFSZ, GTMHandleCrashSignal);
- }
- CFRelease(previousProfileName);
- CFRelease(genericProfileName);
-}
-
// Returns a virtual key code for a given charCode. Handles all of the
// NS*FunctionKeys as well.
static CGKeyCode GTMKeyCodeForCharCode(CGCharCode charCode) {
diff --git a/UnitTesting/GTMCALayer+UnitTesting.h b/UnitTesting/GTMCALayer+UnitTesting.h
deleted file mode 100644
index b757ba9..0000000
--- a/UnitTesting/GTMCALayer+UnitTesting.h
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// GTMCALayer+UnitTesting.h
-//
-// Code for making unit testing of graphics/UI easier. Generally you
-// will only want to look at the macros:
-// GTMAssertDrawingEqualToFile
-// GTMAssertViewRepEqualToFile
-// and the protocol GTMUnitTestCALayerDrawer. When using these routines
-// make sure you are using device colors and not calibrated/generic colors
-// or else your test graphics WILL NOT match across devices/graphics cards.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <QuartzCore/QuartzCore.h>
-#import "GTMNSObject+UnitTesting.h"
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See GTMNSObject+UnitTesting.h for details.
-@interface CALayer (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-// Returns whether gtm_unitTestEncodeState should recurse into sublayers
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up sublayer state.
-- (BOOL)gtm_shouldEncodeStateForSublayers;
-@end
-
-@interface NSObject (GTMCALayerUnitTestingDelegateMethods)
-// Delegate method that allows a delegate for a layer to
-// decide whether we should recurse
-- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer;
-@end
diff --git a/UnitTesting/GTMCALayer+UnitTesting.m b/UnitTesting/GTMCALayer+UnitTesting.m
deleted file mode 100644
index 52367e5..0000000
--- a/UnitTesting/GTMCALayer+UnitTesting.m
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// GTMCALayer+UnitTesting.m
-//
-// Category for making unit testing of graphics/UI easier.
-// Allows you to save a view out to a image file, and compare a view
-// with a previously stored representation to make sure it hasn't changed.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMCALayer+UnitTesting.h"
-
-@implementation CALayer (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// NB this means that all colors should be from "NSDevice" color space
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- CGRect bounds = [self bounds];
- CGSize size = CGSizeMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds));
- CGContextRef context = GTMCreateUnitTestBitmapContextOfSizeWithData(size,
- NULL);
- _GTMDevAssert(context, @"Couldn't create context");
-
- // iPhone renders are flipped
- CGAffineTransform transform = CGAffineTransformMakeTranslation(0, size.height);
- transform = CGAffineTransformScale(transform, 1.0, -1.0);
- CGContextConcatCTM(context, transform);
-
- [self renderInContext:context];
- CGImageRef image = CGBitmapContextCreateImage(context);
- CFRelease(context);
- return (CGImageRef)GTMCFAutorelease(image);
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"LayerIsHidden"];
- [inCoder encodeBool:[self isDoubleSided] forKey:@"LayerIsDoublesided"];
- [inCoder encodeBool:[self isOpaque] forKey:@"LayerIsOpaque"];
- [inCoder encodeFloat:[self opacity] forKey:@"LayerOpacity"];
- // TODO: There is a ton more we can add here. What are we interested in?
- if ([self gtm_shouldEncodeStateForSublayers]) {
- int i = 0;
- for (CALayer *subLayer in [self sublayers]) {
- [inCoder encodeObject:subLayer
- forKey:[NSString stringWithFormat:@"CALayerSubLayer %d", i]];
- i = i + 1;
- }
- }
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into sublayers
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up sublayer state.
-- (BOOL)gtm_shouldEncodeStateForSublayers {
- BOOL value = YES;
- if([self.delegate respondsToSelector:@selector(gtm_shouldEncodeStateForSublayersOfLayer:)]) {
- value = [self.delegate gtm_shouldEncodeStateForSublayersOfLayer:self];
- }
- return value;
-}
-
-@end
diff --git a/UnitTesting/GTMDevLogUnitTestingBridge.m b/UnitTesting/GTMDevLogUnitTestingBridge.m
deleted file mode 100644
index c57893b..0000000
--- a/UnitTesting/GTMDevLogUnitTestingBridge.m
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// GTMDevLogUnitTestingBridge.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#include "GTMUnitTestDevLog.h"
-
-//
-// NOTE: Odds are this file should not be included in your project. It is
-// only needed for some enhanced unit testing.
-//
-// By adding:
-// #define _GTMDevLog _GTMUnitTestDevLog
-// to your prefix header (like the GTM Framework does), this function then
-// works to forward logging messages to the GTMUnitTestDevLog class to
-// allow logging validation during unittest, otherwise the messages go to
-// NSLog like normal.
-//
-// See GTMUnitTestDevLog.h for more information on checking logs in unittests.
-//
-void _GTMUnitTestDevLog(NSString *format, ...) {
- Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog");
- va_list argList;
- va_start(argList, format);
- if (devLogClass) {
- [devLogClass log:format args:argList];
- } else {
- NSLogv(format, argList); // COV_NF_LINE the class is in all our unittest setups
- }
- va_end(argList);
-}
diff --git a/UnitTesting/GTMIPhoneSecurityLibraryTest.m b/UnitTesting/GTMIPhoneSecurityLibraryTest.m
deleted file mode 100644
index f6fd37a..0000000
--- a/UnitTesting/GTMIPhoneSecurityLibraryTest.m
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// GTMIPhoneSecurityLibraryTest.m
-//
-// Copyright 2012 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-
-// Tests that using the keychain library within unit tests works correctly.
-@interface GTMIPhoneSecurityLibraryTest : GTMTestCase
-@end
-
-@implementation GTMIPhoneSecurityLibraryTest
-
-static NSString * const kAccount = @"GTMTestingSecurityAccount";
-static NSString * const kService = @"GTMTestingSecurityService";
-static NSString * const kPassword = @"GTMTestingSecurityPassword";
-
-- (NSMutableDictionary *)keychainQueryItem {
- return [NSMutableDictionary dictionaryWithObjectsAndKeys:
- (id)kSecClassGenericPassword, (id)kSecClass,
- kAccount, (id)kSecAttrAccount,
- kService, (id)kSecAttrService,
- nil];
-}
-
-- (void)assertCorrectPassword {
- NSMutableDictionary *keychainQueryItem = [self keychainQueryItem];
- [keychainQueryItem setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
- [keychainQueryItem setObject:(id)kSecMatchLimitOne forKey:(id)kSecMatchLimit];
-
- CFDataRef result = NULL;
- OSStatus status = SecItemCopyMatching((CFDictionaryRef)keychainQueryItem,
- (CFTypeRef *)&result);
- STAssertEquals(status,
- (OSStatus)noErr,
- @"Error retrieving password from keychain");
- STAssertNotNULL(result, @"No password found");
- NSString *password =
- [[[NSString alloc] initWithData:(NSData *)result
- encoding:NSUTF8StringEncoding] autorelease];
- STAssertEqualStrings(kPassword, password, @"Unexpected password found");
- CFRelease(result);
-}
-
-- (void)testSecurityCalls {
- NSMutableDictionary *passwordItem = [self keychainQueryItem];
- NSData *passwordData = [kPassword dataUsingEncoding:NSUTF8StringEncoding];
- [passwordItem setObject:passwordData forKey:(id)kSecValueData];
-
- OSStatus result = SecItemAdd((CFDictionaryRef)passwordItem, NULL);
- STAssertTrue(result == noErr || result == errSecDuplicateItem,
- @"Unexpected result code: %lu",
- (unsigned long)result);
- [self assertCorrectPassword];
-
- // Test that accessing the keychain will continue to work after a delay.
- NSDate *sleepUntil = [NSDate dateWithTimeIntervalSinceNow:30];
- [[NSRunLoop mainRunLoop] runUntilDate:sleepUntil];
- [self assertCorrectPassword];
-}
-
-@end
diff --git a/UnitTesting/GTMIPhoneUnitTestDelegate.m b/UnitTesting/GTMIPhoneUnitTestDelegate.m
index affcc3e..a112a99 100644
--- a/UnitTesting/GTMIPhoneUnitTestDelegate.m
+++ b/UnitTesting/GTMIPhoneUnitTestDelegate.m
@@ -179,7 +179,7 @@ static int ClassSort(const void *a, const void *b) {
fputs([fixtureStartString UTF8String], stderr);
fflush(stderr);
NSInvocation *invocation;
- GTM_FOREACH_OBJECT(invocation, invocations) {
+ for (invocation in invocations) {
GTMTestCase *testCase
= [[currClass alloc] initWithInvocation:invocation];
BOOL failed = NO;
diff --git a/UnitTesting/GTMIPhoneUnitTestMain.m b/UnitTesting/GTMIPhoneUnitTestMain.m
index 6bfc711..0a504b7 100644
--- a/UnitTesting/GTMIPhoneUnitTestMain.m
+++ b/UnitTesting/GTMIPhoneUnitTestMain.m
@@ -22,6 +22,30 @@
#endif
#import <UIKit/UIKit.h>
+#if GTM_ENABLE_TCCSERVICE_ACCESS
+
+// Enable access to AddressBook, Calendar and Photos
+// https://groups.google.com/forum/#!topic/kif-framework/xayP4VVBPyg
+
+__asm(".section __TEXT,__entitlements");
+__asm(".ascii \""
+ "<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\n"
+ "<!DOCTYPE plist PUBLIC \\\"-//Apple//DTD PLIST 1.0//EN\\\" "
+ "\\\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\\\">"
+ "<plist version=\\\"1.0\\\">"
+ "<dict>"
+ "<key>com.apple.private.tcc.allow</key>"
+ "<array>"
+ "<string>kTCCServiceAddressBook</string>"
+ "<string>kTCCServiceCalendar</string>"
+ "<string>kTCCServicePhotos</string>"
+ "</array>"
+ "</dict>"
+ "</plist>"
+ "\"");
+
+#endif // GTM_ENABLE_TCCSERVICE_ACCESS
+
// Creates an application that runs all tests from classes extending
// SenTestCase, outputs results and test run time, and terminates right
// afterwards.
@@ -32,8 +56,8 @@ int main(int argc, char *argv[]) {
#else
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
#endif
-#if GTM_IPHONE_USE_SENTEST
- // Is using SenTest, just create a dummy app that can be used as the
+#if GTM_IPHONE_USE_SENTEST || GTM_USING_XCTEST
+ // Is using SenTest or XCTest, just create a dummy app that can be used as the
// TEST_HOST.
retVal = UIApplicationMain(argc, argv, nil, nil);
#else
diff --git a/UnitTesting/GTMNSObject+BindingUnitTesting.h b/UnitTesting/GTMNSObject+BindingUnitTesting.h
deleted file mode 100644
index feac5b3..0000000
--- a/UnitTesting/GTMNSObject+BindingUnitTesting.h
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// GTMNSObject+BindingUnitTesting.h
-//
-// Utilities for doing advanced unittesting with object bindings.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#include <Foundation/Foundation.h>
-
-// Utility functions for GTMTestExposedBindings Macro. Don't use it directly
-// but use the macro below instead
-BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object,
- NSArray **errors);
-
-// Tests the setters and getters for exposed bindings
-// For objects that expose bindings, this tests them for you, saving you from
-// having to write a whole pile of set/get test code if you add binding support.
-// You will need to implement valueClassForBinding: for your bindings,
-// and you may possibly want to implement unitTestExposedBindingsToIgnore
-// and unitTestExposedBindingsTestValues. See descriptions of those
-// methods below for details.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked.
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMTestExposedBindings(a1, description, ...) \
-do { \
- NSObject *a1Object = (a1); \
- NSArray *errors = nil; \
- BOOL isGood = GTMDoExposedBindingsFunctionCorrectly(a1Object, &errors); \
- if (!isGood) { \
- NSString *failString; \
- GTM_FOREACH_OBJECT(failString, errors) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
- } \
-} while(0)
-
-// Utility class for setting up Binding Tests. Basically a pair of a value to
-// set a binding to, followed by the expected return value.
-// See description of gtm_unitTestExposedBindingsTestValues: below
-// for example of usage.
-@interface GTMBindingUnitTestData : NSObject {
- @private
- id valueToSet_;
- id expectedValue_;
-}
-
-+ (id)testWithIdentityValue:(id)value;
-+ (id)testWithValue:(id)value expecting:(id)expecting;
-- (id)initWithValue:(id)value expecting:(id)expecting;
-- (id)valueToSet;
-- (id)expectedValue;
-@end
-
-@interface NSObject (GTMBindingUnitTestingAdditions)
-// Allows you to ignore certain bindings when running GTMTestExposedBindings
-// If you have bindings you want to ignore, add them to the array returned
-// by this method. The standard way to implement this would be:
-// - (NSMutableArray*)unitTestExposedBindingsToIgnore {
-// NSMutableArray *array = [super unitTestExposedBindingsToIgnore];
-// [array addObject:@"bindingToIgnore1"];
-// ...
-// return array;
-// }
-// The NSObject implementation by default will ignore NSFontBoldBinding,
-// NSFontFamilyNameBinding, NSFontItalicBinding, NSFontNameBinding and
-// NSFontSizeBinding if your exposed bindings contains NSFontBinding because
-// the NSFont*Bindings are NOT KVC/KVO compliant.
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore;
-
-// Allows you to set up test values for your different bindings.
-// if you have certain values you want to test against your bindings, add
-// them to the array returned by this method. The array is an array of
-// GTMBindingUnitTestData.
-// The standard way to implement this would be:
-// - (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
-// NSMutableArray *dict = [super unitTestExposedBindingsTestValues:binding];
-// if ([binding isEqualToString:@"myBinding"]) {
-// MySpecialBindingValueSet *value
-// = [[[MySpecialBindingValueSet alloc] init] autorelease];
-// [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
-// ...
-// else if ([binding isEqualToString:@"myBinding2"]) {
-// ...
-// }
-// return array;
-// }
-// The NSObject implementation handles many of the default bindings, and
-// gives you a reasonable set of test values to start.
-// See the implementation for the current list of bindings, and values that we
-// set for those bindings.
-- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding;
-
-// A special version of isEqualTo to test whether two binding values are equal
-// by default it calls directly to isEqualTo: but can be overridden for special
-// cases (like NSImages) where the standard isEqualTo: isn't sufficient.
-- (BOOL)gtm_unitTestIsEqualTo:(id)value;
-@end
diff --git a/UnitTesting/GTMNSObject+BindingUnitTesting.m b/UnitTesting/GTMNSObject+BindingUnitTesting.m
deleted file mode 100644
index 4b43f58..0000000
--- a/UnitTesting/GTMNSObject+BindingUnitTesting.m
+++ /dev/null
@@ -1,577 +0,0 @@
-//
-// GTMNSObject+BindingUnitTesting.m
-//
-// An informal protocol for doing advanced binding unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-#import "GTMDefines.h"
-#import "GTMNSObject+BindingUnitTesting.h"
-#import "GTMSystemVersion.h"
-
-BOOL GTMDoExposedBindingsFunctionCorrectly(NSObject *object,
- NSArray **errors) {
- NSMutableArray *errorArray = [NSMutableArray array];
- if (errors) {
- *errors = nil;
- }
- NSArray *bindings = [object exposedBindings];
- if ([bindings count]) {
- NSArray *bindingsToIgnore = [object gtm_unitTestExposedBindingsToIgnore];
- NSString *bindingKey;
- GTM_FOREACH_OBJECT(bindingKey, bindings) {
- if (![bindingsToIgnore containsObject:bindingKey]) {
- Class theClass = [object valueClassForBinding:bindingKey];
- if (!theClass) {
- NSString *error
- = [NSString stringWithFormat:@"%@ should have valueClassForBinding '%@'",
- object, bindingKey];
- [errorArray addObject:error];
- continue;
- }
- @try {
- @try {
- [object valueForKey:bindingKey];
- }
- @catch (NSException *e) {
- _GTMDevLog(@"%@ is not key value coding compliant for key %@",
- object, bindingKey);
- continue;
- } // COV_NF_LINE - compiler bug
- NSArray *testValues
- = [object gtm_unitTestExposedBindingsTestValues:bindingKey];
- GTMBindingUnitTestData *testData;
- GTM_FOREACH_OBJECT(testData, testValues) {
- id valueToSet = [testData valueToSet];
- [object setValue:valueToSet forKey:bindingKey];
- id valueReceived = [object valueForKey:bindingKey];
- id desiredValue = [testData expectedValue];
- if (![desiredValue gtm_unitTestIsEqualTo:valueReceived]) {
- NSString *error
- = [NSString stringWithFormat:@"%@ unequal to expected %@ for binding '%@'",
- valueReceived, desiredValue, bindingKey];
- [errorArray addObject:error];
- continue;
- }
- }
- }
- @catch(NSException *e) {
- NSString *error
- = [NSString stringWithFormat:@"%@:%@-> Binding %@",
- [e name], [e reason], bindingKey];
- [errorArray addObject:error];
- } // COV_NF_LINE - compiler bug
- }
- }
- } else {
- NSString *error =
- [NSString stringWithFormat:@"%@ does not have any exposed bindings",
- object];
- [errorArray addObject:error];
- }
- if (errors) {
- *errors = errorArray;
- }
- return [errorArray count] == 0;
-}
-
-@implementation GTMBindingUnitTestData
-+ (id)testWithIdentityValue:(id)value {
- return [self testWithValue:value expecting:value];
-}
-
-+ (id)testWithValue:(id)value expecting:(id)expecting {
- return [[[self alloc] initWithValue:value expecting:expecting] autorelease];
-}
-
-- (id)initWithValue:(id)value expecting:(id)expecting {
- if ((self = [super init])) {
- valueToSet_ = [value retain];
- expectedValue_ = [expecting retain];
- }
- return self;
-}
-
-- (BOOL)isEqual:(id)object {
- BOOL isEqual = [object isMemberOfClass:[self class]];
- if (isEqual) {
- id objValue = [object valueToSet];
- id objExpect = [object expectedValue];
- isEqual = (((valueToSet_ == objValue) || ([valueToSet_ isEqual:objValue]))
- && ((expectedValue_ == objExpect) || ([expectedValue_ isEqual:objExpect])));
- }
- return isEqual;
-}
-
-- (NSUInteger)hash {
- return [valueToSet_ hash] + [expectedValue_ hash];
-}
-
-- (void)dealloc {
- [valueToSet_ release];
- [expectedValue_ release];
- [super dealloc];
-}
-
-- (id)valueToSet {
- return valueToSet_;
-}
-
-- (id)expectedValue {
- return expectedValue_;
-}
-@end
-
-@implementation NSObject (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [NSMutableArray arrayWithObject:NSValueBinding];
- if ([[self exposedBindings] containsObject:NSFontBinding]) {
- NSString *fontBindings[] = { NSFontBoldBinding, NSFontFamilyNameBinding,
- NSFontItalicBinding, NSFontNameBinding, NSFontSizeBinding };
- for (size_t i = 0; i < sizeof(fontBindings) / sizeof(NSString*); ++i) {
- [array addObject:fontBindings[i]];
- }
- }
- return array;
-}
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
-
- NSMutableArray *array = [NSMutableArray array];
- id value = [self valueForKey:binding];
-
- // Always test identity if possible
- if (value) {
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- }
-
- // Now some default test values for a variety of bindings to make
- // sure that we cover all the bases and save other people writing lots of
- // duplicate test code.
-
- // If anybody can think of more to add, please go nuts.
- if ([binding isEqualToString:NSAlignmentBinding]) {
- value = [NSNumber numberWithInt:NSLeftTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSRightTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSCenterTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSJustifiedTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:NSNaturalTextAlignment];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- NSNumber *valueToSet = [NSNumber numberWithInt:500];
- [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet
- expecting:value]];
- valueToSet = [NSNumber numberWithInt:-1];
- [array addObject:[GTMBindingUnitTestData testWithValue:valueToSet
- expecting:value]];
- } else if ([binding isEqualToString:NSAlternateImageBinding] ||
- [binding isEqualToString:NSImageBinding] ||
- [binding isEqualToString:NSMixedStateImageBinding] ||
- [binding isEqualToString:NSOffStateImageBinding] ||
- [binding isEqualToString:NSOnStateImageBinding]) {
- // This handles all image bindings
- value = [NSImage imageNamed:@"NSApplicationIcon"];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSAnimateBinding] ||
- [binding isEqualToString:NSDocumentEditedBinding] ||
- [binding isEqualToString:NSEditableBinding] ||
- [binding isEqualToString:NSEnabledBinding] ||
- [binding isEqualToString:NSHiddenBinding] ||
- [binding isEqualToString:NSVisibleBinding] ||
- [binding isEqualToString:NSIsIndeterminateBinding] ||
- // NSTranparentBinding 10.5 only
- [binding isEqualToString:@"transparent"]) {
- // This handles all bool value bindings
- value = [NSNumber numberWithBool:YES];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithBool:NO];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSAlternateTitleBinding] ||
- [binding isEqualToString:NSHeaderTitleBinding] ||
- [binding isEqualToString:NSLabelBinding] ||
- [binding isEqualToString:NSTitleBinding] ||
- [binding isEqualToString:NSToolTipBinding]) {
- // This handles all string value bindings
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"happy"]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@""]];
-
- // Test some non-ascii roman text
- char a_not_alpha[] = { 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 };
- value = [NSString stringWithUTF8String:a_not_alpha];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some korean
- char hangugo[] = { 0xED, 0x95, 0x9C, 0xEA, 0xB5,
- 0xAD, 0xEC, 0x96, 0xB4, 0x00 };
- value = [NSString stringWithUTF8String:hangugo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some japanese
- char nihongo[] = { 0xE6, 0x97, 0xA5, 0xE6, 0x9C,
- 0xAC, 0xE8, 0xAA, 0x9E, 0x00 };
- value = [NSString stringWithUTF8String:nihongo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some arabic
- char arabic[] = { 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 };
- value = [NSString stringWithUTF8String:arabic];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRepresentedFilenameBinding]) {
- // This handles all path bindings
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/happy"]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:@"/"]];
-
- // Test some non-ascii roman text
- char a_not_alpha[] = { '/', 'A', 0xE2, 0x89, 0xA2, 0xCE, 0x91, '.', 0x00 };
- value = [NSString stringWithUTF8String:a_not_alpha];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some korean
- char hangugo[] = { '/', 0xED, 0x95, 0x9C, 0xEA, 0xB5,
- 0xAD, 0xEC, 0x96, 0xB4, 0x00 };
- value = [NSString stringWithUTF8String:hangugo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some japanese
- char nihongo[] = { '/', 0xE6, 0x97, 0xA5, 0xE6, 0x9C,
- 0xAC, 0xE8, 0xAA, 0x9E, 0x00 };
- value = [NSString stringWithUTF8String:nihongo];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- // Test some arabic
- char arabic[] = { '/', 0xd9, 0x83, 0xd8, 0xa7, 0xd9, 0x83, 0xd8, 0xa7, 0x00 };
- value = [NSString stringWithUTF8String:arabic];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSMaximumRecentsBinding]) {
- value = [NSNumber numberWithInt:0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:-1];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:INT16_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithInt:INT16_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRowHeightBinding]) {
- NSNumber *valueOne = [NSNumber numberWithInt:1];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:valueOne]];
- value = [NSNumber numberWithInt:0];
- id value2 = [NSNumber numberWithInt:INT16_MIN];
- // Row height no longer accepts <= 0 values on SnowLeopard
- // which is a good thing.
- if ([GTMSystemVersion isSnowLeopardOrGreater]) {
- [array addObject:[GTMBindingUnitTestData testWithValue:value
- expecting:valueOne]];
-
- [array addObject:[GTMBindingUnitTestData testWithValue:value2
- expecting:valueOne]];
- } else {
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value2]];
- }
- value = [NSNumber numberWithInt:INT16_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSMaxValueBinding] ||
- [binding isEqualToString:NSMaxWidthBinding] ||
- [binding isEqualToString:NSMinValueBinding] ||
- [binding isEqualToString:NSMinWidthBinding] ||
- [binding isEqualToString:NSContentWidthBinding] ||
- [binding isEqualToString:NSContentHeightBinding] ||
- [binding isEqualToString:NSWidthBinding] ||
- [binding isEqualToString:NSAnimationDelayBinding]) {
- // NSAnimationDelay is deprecated on SnowLeopard. We continue to test it
- // to make sure it doesn't get broken.
-
- // This handles all float value bindings
- value = [NSNumber numberWithFloat:0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_MAX];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_MIN];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:FLT_EPSILON];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSNumber numberWithFloat:-FLT_EPSILON];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSTextColorBinding]) {
- // This handles all color value bindings
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:1.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedWhite:1.0 alpha:0.5];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithCalibratedRed:0.5 green:0.5 blue:0.5 alpha:0.5];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSColor colorWithDeviceCyan:0.25 magenta:0.25 yellow:0.25
- black:0.25 alpha:0.25];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSFontBinding]) {
- // This handles all font value bindings
- value = [NSFont boldSystemFontOfSize:[NSFont systemFontSize]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSFont toolTipsFontOfSize:[NSFont smallSystemFontSize]];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- value = [NSFont labelFontOfSize:144.0];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSRecentSearchesBinding] ||
- [binding isEqualToString:NSSortDescriptorsBinding]) {
- // This handles all array value bindings
- value = [NSArray array];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else if ([binding isEqualToString:NSTargetBinding]) {
- value = [NSNull null];
- [array addObject:[GTMBindingUnitTestData testWithIdentityValue:value]];
- } else {
- _GTMDevLog(@"Skipped Binding: %@ for %@", binding, self); // COV_NF_LINE
- }
- return array;
-}
-
-- (BOOL)gtm_unitTestIsEqualTo:(id)value {
- return [self isEqualTo:value];
-}
-
-@end
-
-#pragma mark -
-#pragma mark All the special AppKit Bindings issues below
-
-@interface NSImage (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSImage (GTMBindingUnitTestingAdditions)
-- (BOOL)gtm_unitTestIsEqualTo:(id)value {
- // NSImage just does pointer equality in the default isEqualTo implementation
- // we need something a little more heavy duty that actually compares the
- // images internally.
- return [[self TIFFRepresentation] isEqualTo:[value TIFFRepresentation]];
-}
-@end
-
-@interface NSScroller (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSScroller (GTMBindingUnitTestingAdditions)
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 5 && bugFix <= 5) {
- // rdar://5849154 - NSScroller exposes binding with no value
- // class for NSValueBinding
- [array addObject:NSValueBinding];
- }
- if (major <= 10 && minor <= 6) {
- // Broken on SnowLeopard and below
- // rdar://5849236 - NSScroller exposes binding for NSFontBinding
- [array addObject:NSFontBinding];
- }
- return array;
-}
-@end
-
-@interface NSTextField (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTextField (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternValue%d", i]];
- }
- return array;
-}
-
-- (NSMutableArray *)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsTestValues:binding];
- if ([binding isEqualToString:NSAlignmentBinding]) {
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5851487 - If NSAlignmentBinding for a NSTextField is set to -1
- // and then got it returns 7
- NSNumber *textAlignment = [NSNumber numberWithInt:NSNaturalTextAlignment];
- GTMBindingUnitTestData *dataToRemove =
- [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1]
- expecting:textAlignment];
- [array removeObject:dataToRemove];
- GTMBindingUnitTestData *dataToAdd =
- [GTMBindingUnitTestData testWithValue:[NSNumber numberWithInt:-1]
- expecting:[NSNumber numberWithInt:7]];
- [array addObject:dataToAdd];
- }
- }
- return array;
-}
-@end
-
-@interface NSSearchField (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSSearchField (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5851491 - Setting NSAlignmentBinding of search field to
- // NSCenterTextAlignment broken
- // Broken on 10.6 and below.
- [array addObject:NSAlignmentBinding];
- }
- // Not KVC Compliant
- [array addObject:NSPredicateBinding];
- return array;
-}
-
-@end
-
-@interface NSWindow (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSWindow (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSContentWidthBinding];
- [array addObject:NSContentHeightBinding];
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]];
- }
- return array;
-}
-
-@end
-
-@interface NSBox (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSBox (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- for (int i = 0; i < 10; i++) {
- [array addObject:[NSString stringWithFormat:@"displayPatternTitle%d", i]];
- }
- return array;
-}
-
-@end
-
-@interface NSTableView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTableView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://6288332 - NSTableView does not respond to NSFontBinding
- // Broken on 10.5 and SnowLeopard
- [array addObject:NSFontBinding];
- }
- // Not KVC Compliant
- [array addObject:NSContentBinding];
- [array addObject:NSDoubleClickTargetBinding];
- [array addObject:NSDoubleClickArgumentBinding];
- [array addObject:NSSelectionIndexesBinding];
- return array;
-}
-
-@end
-
-@interface NSTextView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTextView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- //rdar://5849335 - NSTextView only partially KVC compliant for key
- // NSAttributedStringBinding
- [array addObject:NSAttributedStringBinding];
- }
- // Not KVC Compliant
- [array addObject:NSDataBinding];
- [array addObject:NSValueURLBinding];
- [array addObject:NSValuePathBinding];
- return array;
-}
-
-@end
-
-@interface NSTabView (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSTabView (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- if (major <= 10 && minor <= 6) {
- // rdar://5849248 - NSTabView exposes binding with no value class
- // for NSSelectedIdentifierBinding
- [array addObject:NSSelectedIdentifierBinding];
- }
- // Not KVC Compliant
- [array addObject:NSSelectedIndexBinding];
- [array addObject:NSSelectedLabelBinding];
- return array;
-}
-
-@end
-
-@interface NSButton (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSButton (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSArgumentBinding];
- return array;
-}
-
-@end
-
-@interface NSProgressIndicator (GTMBindingUnitTestingAdditions)
-@end
-
-@implementation NSProgressIndicator (GTMBindingUnitTestingAdditions)
-
-- (NSMutableArray*)gtm_unitTestExposedBindingsToIgnore {
- NSMutableArray *array = [super gtm_unitTestExposedBindingsToIgnore];
- // Not KVC Compliant
- [array addObject:NSAnimateBinding];
- return array;
-}
-
-@end
diff --git a/UnitTesting/GTMNSObject+UnitTesting.h b/UnitTesting/GTMNSObject+UnitTesting.h
deleted file mode 100644
index e98828a..0000000
--- a/UnitTesting/GTMNSObject+UnitTesting.h
+++ /dev/null
@@ -1,430 +0,0 @@
-//
-// GTMNSObject+UnitTesting.h
-//
-// Utilities for doing advanced unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMDefines.h"
-#import <Foundation/Foundation.h>
-
-#if GTM_MACOS_SDK
-#import <ApplicationServices/ApplicationServices.h>
-#elif GTM_IPHONE_SDK
-#import <CoreGraphics/CoreGraphics.h>
-#endif
-
-#import "GTMSenTestCase.h"
-
-// NOTE: for "arch" in the file names on iOS, it is not CPU (armv6, armv7), but
-// instead is "iPhone" or "iPad" for the device form factor.
-
-// Utility functions for GTMAssert* Macros. Don't use them directly
-// but use the macros below instead
-BOOL GTMIsObjectImageEqualToImageNamed(id object,
- NSString *filename,
- NSString **error);
-BOOL GTMIsObjectStateEqualToStateNamed(id object,
- NSString *filename,
- NSString **error);
-
-// Fails when image of |a1| does not equal image in image file named |a2|
-//
-// Generates a failure when the unittest image of |a1| is not equal to the
-// image stored in the image file named |a2|, or |a2| does not exist in the
-// executable code's bundle.
-// If |a2| does not exist in the executable code's bundle, we save a image
-// representation of |a1| in the save directory with name |a2|. This can then
-// be included in the bundle as the master to test against.
-// If |a2| != |a1|, we save a image representation of |a1| in the save
-// directory named |a2|_Failed and a file named |a2|_Failed_Diff showing the
-// diff in red so that we can see what has changed.
-// See pathForImageNamed to see how name is searched for.
-// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is
-// the desktop by default.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked. Must implement the -createUnitTestImage method.
-// a2: The name of the image file to check against.
-// Do not include the extension
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ...) \
-do { \
- id a1Object = (a1); \
- NSString* a2String = (a2); \
- NSString *failString = nil; \
- BOOL isGood = GTMIsObjectImageEqualToImageNamed(a1Object, a2String, &failString); \
- if (!isGood) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
-} while(0)
-
-// Fails when state of |a1| does not equal state in file |a2|
-//
-// Generates a failure when the unittest state of |a1| is not equal to the
-// state stored in the state file named |a2|, or |a2| does not exist in the
-// executable code's bundle.
-// If |a2| does not exist in the executable code's bundle, we save a state
-// representation of |a1| in the save directiry with name |a2|. This can then
-// be included in the bundle as the master to test against.
-// If |a2| != |a1|, we save a state representation of |a1| in the save
-// directory with name |a2|_Failed so that we can compare the two files to see
-// what has changed.
-// The save directory is specified by +gtm_setUnitTestSaveToDirectory, and is
-// the desktop by default.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object to be checked. Must implement the -createUnitTestImage method.
-// a2: The name of the state file to check against.
-// Do not include the extension
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-#define GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ...) \
-do { \
- id a1Object = (a1); \
- NSString* a2String = (a2); \
- NSString *failString = nil; \
- BOOL isGood = GTMIsObjectStateEqualToStateNamed(a1Object, a2String, &failString); \
- if (!isGood) { \
- if (description != nil) { \
- STFail(@"%@: %@", failString, STComposeString(description, ##__VA_ARGS__)); \
- } else { \
- STFail(@"%@", failString); \
- } \
- } \
-} while(0);
-
-// test both GTMAssertObjectImageEqualToImageNamed and GTMAssertObjectStateEqualToStateNamed
-//
-// Combines the above two macros into a single ubermacro for comparing
-// both state and image. When only the best will do...
-#define GTMAssertObjectEqualToStateAndImageNamed(a1, a2, description, ...) \
-do { \
- GTMAssertObjectImageEqualToImageNamed(a1, a2, description, ##__VA_ARGS__); \
- GTMAssertObjectStateEqualToStateNamed(a1, a2, description, ##__VA_ARGS__); \
-} while (0)
-
-// Create a CGBitmapContextRef appropriate for using in creating a unit test
-// image. If data is non-NULL, returns the buffer that the bitmap is
-// using for it's underlying storage. You must free this buffer using
-// free. If data is NULL, uses it's own internal storage.
-// Defined as a C function instead of an obj-c method because you have to
-// release the CGContextRef that is returned.
-//
-// Returns:
-// an CGContextRef of the object. Caller must release
-
-CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size,
- unsigned char **data);
-
-// GTMUnitTestingImaging protocol is for objects which need to save their
-// image for using with the unit testing categories
-@protocol GTMUnitTestingImaging
-// Create a CGImageRef containing a representation suitable for use in
-// comparing against a master image.
-//
-// Returns:
-// an CGImageRef of the object.
-- (CGImageRef)gtm_unitTestImage;
-@end
-
-// GTMUnitTestingEncoding protocol is for objects which need to save their
-// "state" for using with the unit testing categories
-@protocol GTMUnitTestingEncoding
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-@end
-
-// Category for saving and comparing object state and image for unit tests
-//
-// The GTMUnitTestAdditions category gives object the ability to store their
-// state for use in unittesting in two different manners.
-// 1) Objects can elect to save their "image" that we can compare at
-// runtime to an image file to make sure that the representation hasn't
-// changed. All views and Windows can save their image. In the case of Windows,
-// they are "bluescreened" so that any transparent areas can be compared between
-// machines.
-// 2) Objects can elect to save their "state". State is the attributes that we
-// want to verify when running unit tests. Applications, Windows, Views,
-// Controls and Cells currently return a variety of state information. If you
-// want to customize the state information that a particular object returns, you
-// can do it via the GTMUnitTestingEncodedObjectNotification. Items that have
-// delegates (Applications/Windows) can also have their delegates return state
-// information if appropriate via the unitTestEncoderDidEncode:inCoder: delegate
-// method.
-// To compare state/image in your unit tests, you can use the three macros above
-// GTMAssertObjectStateEqualToStateNamed, GTMAssertObjectImageEqualToImageNamed and
-// GTMAssertObjectEqualToStateAndImageNamed.
-@interface NSObject (GTMUnitTestingAdditions) <GTMUnitTestingEncoding>
-// Allows you to control where the unit test utilities save any files
-// (image or state) that they create on your behalf. By default they
-// will save to the desktop.
-+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path;
-+ (NSString *)gtm_getUnitTestSaveToDirectory;
-
-// Checks to see that system settings are valid for doing an image comparison.
-// Most of these are set by our unit test app. See the unit test app main.m
-// for details.
-//
-// Returns:
-// YES if we can do image comparisons for this object type.
-- (BOOL)gtm_areSystemSettingsValidForDoingImage;
-
-// Return the type of image to work with. Only valid types on the iPhone
-// are kUTTypeJPEG and kUTTypePNG. MacOS supports several more.
-- (CFStringRef)gtm_imageUTI;
-
-// Return the extension to be used for saving unittest images
-//
-// Returns
-// An extension (e.g. "png")
-- (NSString*)gtm_imageExtension;
-
-// Return image data in the format expected for gtm_imageExtension
-// So for a "png" extension I would expect "png" data
-//
-// Returns
-// NSData for image
-- (NSData*)gtm_imageDataForImage:(CGImageRef)image;
-
-// Save the unitTestImage to a image file with name
-// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-// in the save folder (desktop by default)
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageNamed:(NSString*)name;
-
-// Save unitTestImage of |self| to an image file at path |path|.
-// All non-drawn areas will be transparent.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageAt:(NSString*)path;
-
-// Compares unitTestImage of |self| to the image located at |path|
-//
-// Args:
-// path: the path to the image file you want to compare against.
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-// If diff is non-nil, it will contain a diff of the images. Must
-// be released by caller.
-//
-- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff;
-
-// Find the path for a image by name in your bundle.
-// Searches for the following:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the image file you would like to find.
-//
-// Returns:
-// the path if the image exists in your bundle
-// or nil if no image to be found
-//
-- (NSString *)gtm_pathForImageNamed:(NSString*)name;
-
-// Generates a CGImageRef from the image at |path|
-// Args:
-// path: The path to the image.
-//
-// Returns:
-// An autoreleased CGImageRef own, or nil if no image at path
-- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path;
-
-// Generates a path for a image in the save directory, which is desktop
-// by default.
-// Path will be:
-// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-//
-// Args:
-// name: The name for the image file you would like to generate a path for.
-//
-// Returns:
-// the path
-//
-- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name;
-
-// Gives us a representation of unitTestImage of |self|.
-//
-// Returns:
-// a representation if successful
-// nil if failed
-//
-- (NSData *)gtm_imageRepresentation;
-
-// Return the extension to be used for saving unittest states
-//
-// Returns
-// An extension (e.g. "gtmUTState")
-- (NSString*)gtm_stateExtension;
-
-// Save the encoded unit test state to a state file with name
-// |name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-// in the save folder (desktop by default)
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateNamed:(NSString*)name;
-
-// Save encoded unit test state of |self| to a state file at path |path|.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateAt:(NSString*)path;
-
-// Compares encoded unit test state of |self| to the state file located at |path|
-//
-// Args:
-// path: the path to the state file you want to compare against.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-//
-- (BOOL)gtm_compareWithStateAt:(NSString*)path;
-
-
-// Find the path for a state by name in your bundle.
-// Searches for:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the state file you would like to find.
-//
-// Returns:
-// the path if the state exists in your bundle
-// or nil if no state to be found
-//
-- (NSString *)gtm_pathForStateNamed:(NSString*)name;
-
-// Generates a path for a state in the save directory, which is desktop
-// by default.
-// Path will be:
-// SaveDir/|name|.arch.OSVersionMajor.OSVersionMinor.OSVersionBugfix.extension
-//
-// Args:
-// name: The name for the state file you would like to generate a path for.
-//
-// Returns:
-// the path
-//
-- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name;
-
-// Gives us the encoded unit test state for |self|
-//
-// Returns:
-// the encoded state if successful
-// nil if failed
-//
-- (NSDictionary *)gtm_stateRepresentation;
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-@end
-
-// Informal protocol for delegates that wanst to be able to add state info
-// when state info is collected for their "owned" objects
-@interface NSObject (GTMUnitTestingEncodingAdditions)
-// Delegate function for unit test objects that have delegates. Delegates have
-// the option of encoding more data into the coder to store their state for
-// unittest usage.
-- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder;
-@end
-
-// Whenever an object is encoded by the unit test encoder, it send out a
-// notification so that objects who want to add data to the encoded objects unit
-// test state can do so. The Coder will be in the userInfo dictionary for the
-// notification under the GTMUnitTestingEncoderKey key.
-GTM_EXTERN NSString *const GTMUnitTestingEncodedObjectNotification;
-
-// Key for finding the encoder in the userInfo dictionary for
-// GTMUnitTestingEncodedObjectNotification notifications.
-GTM_EXTERN NSString *const GTMUnitTestingEncoderKey;
diff --git a/UnitTesting/GTMNSObject+UnitTesting.m b/UnitTesting/GTMNSObject+UnitTesting.m
deleted file mode 100644
index 5b60a6d..0000000
--- a/UnitTesting/GTMNSObject+UnitTesting.m
+++ /dev/null
@@ -1,1047 +0,0 @@
-//
-// GTMNSObject+UnitTesting.m
-//
-// An informal protocol for doing advanced unittesting with objects.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMNSObject+UnitTesting.h"
-#import "GTMSystemVersion.h"
-
-#if GTM_IPHONE_SDK
-#import <UIKit/UIKit.h>
-#else
-#import <AppKit/AppKit.h>
-#endif
-
-NSString *const GTMUnitTestingEncodedObjectNotification
- = @"GTMUnitTestingEncodedObjectNotification";
-NSString *const GTMUnitTestingEncoderKey = @"GTMUnitTestingEncoderKey";
-
-#if GTM_IPHONE_SDK
-// No UTIs on iPhone. Only two we need.
-const CFStringRef kUTTypePNG = CFSTR("public.png");
-const CFStringRef kUTTypeJPEG = CFSTR("public.jpeg");
-#endif
-
-// This class exists so that we can locate our bundle using [NSBundle
-// bundleForClass:]. We don't use [NSBundle mainBundle] because when we are
-// being run as a unit test, we aren't the mainBundle
-@interface GTMUnitTestingAdditionsBundleFinder : NSObject {
- // Nothing here
-}
-// or here
-@end
-
-@implementation GTMUnitTestingAdditionsBundleFinder
-// Nothing here. We're just interested in the name for finding our bundle.
-@end
-
-#if GTM_IPHONE_SDK
-static NSString *iOS_Idiom(void) {
- UIUserInterfaceIdiom idiom;
-#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2
- idiom = [[UIDevice currentDevice] userInterfaceIdiom];
-#else
- idiom = UI_USER_INTERFACE_IDIOM();
-#endif
- if (idiom == UIUserInterfaceIdiomPad) {
- return @"iPad";
- }
- _GTMDevAssert((idiom == UIUserInterfaceIdiomPhone),
- @"unknown idiom %zd", idiom);
- return @"iPhone";
-}
-#endif // GTM_IPHONE_SDK
-
-BOOL GTMIsObjectImageEqualToImageNamed(id object,
- NSString* filename,
- NSString **error) {
- NSString *failString = nil;
- if (error) {
- *error = nil;
- }
- BOOL isGood = [object respondsToSelector:@selector(gtm_unitTestImage)];
- if (isGood) {
- if ([object gtm_areSystemSettingsValidForDoingImage]) {
- NSString *aPath = [object gtm_pathForImageNamed:filename];
- CGImageRef diff = nil;
- isGood = aPath != nil;
- if (isGood) {
- isGood = [object gtm_compareWithImageAt:aPath diffImage:&diff];
- }
- if (!isGood) {
- if (aPath) {
- filename = [filename stringByAppendingString:@"_Failed"];
- }
- BOOL aSaved = [object gtm_saveToImageNamed:filename];
- NSString *fileNameWithExtension
- = [NSString stringWithFormat:@"%@.%@",
- filename, [object gtm_imageExtension]];
- NSString *fullSavePath = [object gtm_saveToPathForImageNamed:filename];
- if (NO == aSaved) {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @"bundle. Tried to save as %@ and failed.",
- fileNameWithExtension, fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file %@. Tried to save as %@ and failed.",
- aPath, fullSavePath];
- }
- } else {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @" bundle. Saved to %@", fileNameWithExtension,
- fullSavePath];
- } else {
- NSString *diffPath = [filename stringByAppendingString:@"_Diff"];
- diffPath = [object gtm_saveToPathForImageNamed:diffPath];
- NSData *data = nil;
- if (diff) {
- data = [object gtm_imageDataForImage:diff];
- }
- if ([data writeToFile:diffPath atomically:YES]) {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file\n%@\nSaved image to\n%@\n"
- @"Saved diff to\n%@\n",
- aPath, fullSavePath, diffPath];
- } else {
- failString = [NSString stringWithFormat:@"Object image different "
- @"than file\n%@\nSaved image to\n%@\nUnable to save "
- @"diff. Most likely the image and diff are "
- @"different sizes.",
- aPath, fullSavePath];
- }
- }
- }
- }
- CGImageRelease(diff);
- } else {
- failString = @"systemSettings not valid for taking image"; // COV_NF_LINE
- }
- } else {
- if (object == nil) {
- failString = @"Testing a nil image.";
- } else {
- failString = @"Object does not conform to GTMUnitTestingImaging protocol";
- }
- }
- if (error) {
- *error = failString;
- }
- return isGood;
-}
-
-BOOL GTMIsObjectStateEqualToStateNamed(id object,
- NSString* filename,
- NSString **error) {
- NSString *failString = nil;
- if (error) {
- *error = nil;
- }
- BOOL isGood = [object conformsToProtocol:@protocol(GTMUnitTestingEncoding)];
- if (isGood) {
- NSString *aPath = [object gtm_pathForStateNamed:filename];
- isGood = aPath != nil;
- if (isGood) {
- isGood = [object gtm_compareWithStateAt:aPath];
- }
- if (!isGood) {
- if (aPath) {
- filename = [filename stringByAppendingString:@"_Failed"];
- }
- BOOL aSaved = [object gtm_saveToStateNamed:filename];
- NSString *fileNameWithExtension = [NSString stringWithFormat:@"%@.%@",
- filename, [object gtm_stateExtension]];
- NSString *fullSavePath = [object gtm_saveToPathForStateNamed:filename];
- if (NO == aSaved) {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @"bundle. Tried to save as %@ and failed.",
- fileNameWithExtension, fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object state different "
- @"than file %@. Tried to save as %@ and failed.",
- aPath, fullSavePath];
- }
- } else {
- if (!aPath) {
- failString = [NSString stringWithFormat:@"File %@ did not exist in "
- @ "bundle. Saved to %@", fileNameWithExtension,
- fullSavePath];
- } else {
- failString = [NSString stringWithFormat:@"Object state different "
- @"than file %@. Saved to %@", aPath, fullSavePath];
- }
- }
- }
- } else {
- failString = @"Object does not conform to GTMUnitTestingEncoding protocol";
- }
- if (error) {
- *error = failString;
- }
- return isGood;
-}
-
-CGContextRef GTMCreateUnitTestBitmapContextOfSizeWithData(CGSize size,
- unsigned char **data) {
- CGContextRef context = NULL;
- size_t height = size.height;
- size_t width = size.width;
- size_t bytesPerRow = width * 4;
- size_t bitsPerComponent = 8;
- CGColorSpaceRef cs = NULL;
-#if GTM_IPHONE_SDK
- cs = CGColorSpaceCreateDeviceRGB();
-#else
- cs = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
-#endif
- _GTMDevAssert(cs, @"Couldn't create colorspace");
- CGBitmapInfo info
- = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault;
- if (data) {
- *data = (unsigned char*)calloc(bytesPerRow, height);
- _GTMDevAssert(*data, @"Couldn't create bitmap");
- }
- context = CGBitmapContextCreate(data ? *data : NULL, width, height,
- bitsPerComponent, bytesPerRow, cs, info);
- _GTMDevAssert(context, @"Couldn't create an context");
- if (!data) {
- CGContextClearRect(context, CGRectMake(0, 0, size.width, size.height));
- }
- CGContextSetRenderingIntent(context, kCGRenderingIntentRelativeColorimetric);
- CGContextSetInterpolationQuality(context, kCGInterpolationNone);
- CGContextSetShouldAntialias(context, NO);
- CGContextSetAllowsAntialiasing(context, NO);
- CGContextSetShouldSmoothFonts(context, NO);
- CGColorSpaceRelease(cs);
- return context;
-}
-
-@interface NSObject (GTMUnitTestingAdditionsPrivate)
-/// Find the path for a file named name.extension in your bundle.
-// Searches for the following:
-// "name.extension",
-// "name.arch.extension",
-// "name.arch.OSVersionMajor.extension"
-// "name.arch.OSVersionMajor.OSVersionMinor.extension"
-// "name.arch.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension"
-// "name.arch.OSVersionMajor.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.arch.extension"
-// "name.OSVersionMajor.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersion.bugfix.extension"
-// Do not include the ".extension" extension on your name.
-//
-// Args:
-// name: The name for the file you would like to find.
-// extension: the extension for the file you would like to find
-//
-// Returns:
-// the path if the file exists in your bundle
-// or nil if no file is found
-//
-- (NSString *)gtm_pathForFileNamed:(NSString*)name
- extension:(NSString*)extension;
-- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name
- extension:(NSString*)extension;
-- (CGImageRef)gtm_unitTestImage;
-// Returns nil if there is no override
-- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory;
-@end
-
-// This is a keyed coder for storing unit test state data. It is used only by
-// the GTMUnitTestingAdditions category. Most of the work is done in
-// encodeObject:forKey:.
-@interface GTMUnitTestingKeyedCoder : NSCoder {
- NSMutableDictionary *dictionary_; // storage for data (STRONG)
-}
-
-// get the data stored in coder.
-//
-// Returns:
-// NSDictionary with currently stored data.
-- (NSDictionary*)dictionary;
-@end
-
-// Small utility function for checking to see if a is b +/- 1.
-GTM_INLINE BOOL almostEqual(unsigned char a, unsigned char b) {
- unsigned char diff = a > b ? a - b : b - a;
- BOOL notEqual = diff < 2;
- return notEqual;
-}
-
-@implementation GTMUnitTestingKeyedCoder
-
-// Set up storage for coder. Stores type and version.
-// Version 1
-//
-// Returns:
-// self
-- (id)init {
- self = [super init];
- if (self != nil) {
- dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:2];
- [dictionary_ setObject:@"GTMUnitTestingArchive" forKey:@"$GTMArchive"];
-
- // Version number can be changed here.
- [dictionary_ setObject:[NSNumber numberWithInt:1] forKey:@"$GTMVersion"];
- }
- return self;
-}
-
-// Standard dealloc
-- (void)dealloc {
- [dictionary_ release];
- [super dealloc];
-}
-
-// Utility function for checking for a key value. We don't want duplicate keys
-// in any of our dictionaries as we may be writing over data stored by previous
-// objects.
-//
-// Arguments:
-// key - key to check for in dictionary
-- (void)checkForKey:(NSString*)key {
- _GTMDevAssert(![dictionary_ objectForKey:key],
- @"Key already exists for %@", key);
-}
-
-// Key routine for the encoder. We store objects in our dictionary based on
-// their key. As we encode objects we send out notifications to let other
-// classes doing tests add their specific data to the base types. If we can't
-// encode the object (it doesn't support gtm_unitTestEncodeState) and we don't
-// get any info back from the notifier, we attempt to store it's description.
-//
-// Arguments:
-// objv - object to be encoded
-// key - key to encode it with
-//
-- (void)encodeObject:(id)objv forKey:(NSString *)key {
- // Sanity checks
- if (!objv) return;
- [self checkForKey:key];
-
- // Set up a new dictionary for the current object
- NSMutableDictionary *curDictionary = dictionary_;
- dictionary_ = [[NSMutableDictionary alloc] initWithCapacity:0];
-
- // If objv responds to gtm_unitTestEncodeState get it to record
- // its data.
- if ([objv respondsToSelector:@selector(gtm_unitTestEncodeState:)]) {
- [objv gtm_unitTestEncodeState:self];
- }
-
- // We then send out a notification to let other folks
- // add data for this object
- NSDictionary *notificationDict
- = [NSDictionary dictionaryWithObject:self forKey:GTMUnitTestingEncoderKey];
- NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
- [nc postNotificationName:GTMUnitTestingEncodedObjectNotification
- object:objv
- userInfo:notificationDict];
-
- // If we got anything from the object, or from the notification, store it in
- // our dictionary. Otherwise store the description.
- if ([dictionary_ count] > 0) {
- [curDictionary setObject:dictionary_ forKey:key];
- } else {
- NSString *description = [objv description];
- // If description has a pointer value in it, we don't want to store it
- // as the pointer value can change from run to run
- if (description && [description rangeOfString:@"0x"].length == 0) {
- [curDictionary setObject:description forKey:key];
- } else {
- _GTMDevAssert(NO, @"Unable to encode forKey: %@", key); // COV_NF_LINE
- }
- }
- [dictionary_ release];
- dictionary_ = curDictionary;
-}
-
-// Basic encoding methods for POD types.
-//
-// Arguments:
-// *v - value to encode
-// key - key to encode it in
-
-- (void)encodeBool:(BOOL)boolv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithBool:boolv] forKey:key];
-}
-
-- (void)encodeInt:(int)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithInt:intv] forKey:key];
-}
-
-- (void)encodeInt32:(int32_t)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithLong:intv] forKey:key];
-}
-
-- (void)encodeInt64:(int64_t)intv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithLongLong:intv] forKey:key];
-}
-
-- (void)encodeFloat:(float)realv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithFloat:realv] forKey:key];
-}
-
-- (void)encodeDouble:(double)realv forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSNumber numberWithDouble:realv] forKey:key];
-}
-
-- (void)encodeBytes:(const uint8_t *)bytesp
- length:(NSUInteger)lenv
- forKey:(NSString *)key {
- [self checkForKey:key];
- [dictionary_ setObject:[NSData dataWithBytes:bytesp
- length:lenv]
- forKey:key];
-}
-
-// Get our storage back as an NSDictionary
-//
-// Returns:
-// NSDictionary containing our encoded info
--(NSDictionary*)dictionary {
- return [[dictionary_ retain] autorelease];
-}
-
-@end
-
-static NSString *gGTMUnitTestSaveToDirectory = nil;
-
-@implementation NSObject (GTMUnitTestingAdditions)
-
-+ (void)gtm_setUnitTestSaveToDirectory:(NSString*)path {
- @synchronized([self class]) {
- [gGTMUnitTestSaveToDirectory autorelease];
- gGTMUnitTestSaveToDirectory = [path copy];
- }
-}
-
-+ (NSString *)gtm_getUnitTestSaveToDirectory {
- NSString *result = nil;
- @synchronized([self class]) {
- if (!gGTMUnitTestSaveToDirectory) {
-#if GTM_IPHONE_SDK
- // About the only thing safe for the sandbox is the documents directory.
- NSArray *documentsDirs
- = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
- NSUserDomainMask, YES);
- gGTMUnitTestSaveToDirectory = [documentsDirs objectAtIndex:0];
-#else
- NSArray *desktopDirs
- = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory,
- NSUserDomainMask,
- YES);
- gGTMUnitTestSaveToDirectory = [desktopDirs objectAtIndex:0];
-#endif
- // Did we get overridden?
- NSString *override = [self gtm_getOverrideDefaultUnitTestSaveToDirectory];
- if (override) {
- gGTMUnitTestSaveToDirectory = override;
- }
- [gGTMUnitTestSaveToDirectory retain];
- }
- result = gGTMUnitTestSaveToDirectory;
- }
-
- return result;
-}
-
-// Return nil if there is no override
-- (NSString *)gtm_getOverrideDefaultUnitTestSaveToDirectory {
- NSString *result = nil;
-
- // If we have an environment variable that ends in "BUILD_NUMBER" odds are
- // we're on an automated build system, so use the build products dir as an
- // override instead of writing on the desktop.
- NSDictionary *env = [[NSProcessInfo processInfo] environment];
- NSString *key;
- GTM_FOREACH_KEY(key, env) {
- if ([key hasSuffix:@"BUILD_NUMBER"]) {
- break;
- }
- }
- if (key) {
- result = [env objectForKey:@"BUILT_PRODUCTS_DIR"];
- }
-
- if (result && [result length] == 0) {
- result = nil;
- }
- return result;
-}
-
-/// Find the path for a file named name.extension in your bundle.
-// Searches for the following:
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.arch.extension"
-// "name.CompilerSDK.arch.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.CompilerSDK.OSVersionMajor.OSVersionMinor.extension"
-// "name.CompilerSDK.OSVersionMajor.extension"
-// "name.CompilerSDK.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.arch.extension"
-// "name.OSVersionMajor.arch.extension"
-// "name.arch.extension"
-// "name.OSVersionMajor.OSVersionMinor.OSVersionBugFix.extension"
-// "name.OSVersionMajor.OSVersionMinor.extension"
-// "name.OSVersionMajor.extension"
-// "name.extension"
-// Do not include the ".extension" extension on your name.
-//
-// Args:
-// name: The name for the file you would like to find.
-// extension: the extension for the file you would like to find
-//
-// Returns:
-// the path if the file exists in your bundle
-// or nil if no file is found
-//
-- (NSString *)gtm_pathForFileNamed:(NSString*)name
- extension:(NSString*)extension {
- NSString *thePath = nil;
- Class bundleClass = [GTMUnitTestingAdditionsBundleFinder class];
- NSBundle *myBundle = [NSBundle bundleForClass:bundleClass];
- _GTMDevAssert(myBundle,
- @"Couldn't find bundle for class: %@ searching for file:%@.%@",
- NSStringFromClass(bundleClass), name, extension);
- // System Version
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
- NSString *systemVersions[4];
- systemVersions[0] = [NSString stringWithFormat:@".%d.%d.%d",
- (int)major, (int)minor, (int)bugFix];
- systemVersions[1]
- = [NSString stringWithFormat:@".%d.%d", (int)major, (int)minor];
- systemVersions[2] = [NSString stringWithFormat:@".%d", (int)major];
- systemVersions[3] = @"";
- // Architecture
- NSString *architecture[2];
-#if GTM_IPHONE_SDK
- architecture[0]
- = [NSString stringWithFormat:@".%@", iOS_Idiom()];
-#else
- architecture[0]
- = [NSString stringWithFormat:@".%@",
- [GTMSystemVersion runtimeArchitecture]];
-#endif
- architecture[1] = @"";
- // Compiler SDK
- // Some times Apple changes how things work based on the SDK built against.
- NSString *sdks[2];
-#if GTM_MACOS_SDK
-# if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
- sdks[0] = @".10_7_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
- sdks[0] = @".10_6_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
- sdks[0] = @".10_5_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
- sdks[0] = @".10_4_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
- sdks[0] = @".10_3_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
- sdks[0] = @".10_2_SDK";
-# elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
- sdks[0] = @".10_1_SDK";
-# else
- sdks[0] = @".10_0_SDK";
-# endif
-#else // !GTM_MACOS_SDK
-# if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0
- sdks[0] = @".5_0_SDK";
-# elif __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_3
- sdks[0] = @".4_3_SDK";
-# else
- sdks[0] = @"";
-# endif
-#endif // GTM_MACOS_SDK
- sdks[1] = @"";
-
- // Note that we are searching for the most exact match first.
- for (size_t i = 0;
- !thePath && i < sizeof(sdks) / sizeof(*sdks);
- ++i) {
- for (size_t j = 0;
- !thePath && j < sizeof(architecture) / sizeof(*architecture);
- j++) {
- for (size_t k = 0;
- !thePath && k < sizeof(systemVersions) / sizeof(*systemVersions);
- k++) {
- NSString *fullName = [NSString stringWithFormat:@"%@%@%@%@",
- name, sdks[i], systemVersions[k], architecture[j]];
- thePath = [myBundle pathForResource:fullName ofType:extension];
- }
- }
- }
-
- return thePath;
-}
-
-- (NSString *)gtm_saveToPathForFileNamed:(NSString*)name
- extension:(NSString*)extension {
-#if GTM_IPHONE_SDK
- NSString *systemArchitecture = iOS_Idiom();
-#else
- NSString *systemArchitecture = [GTMSystemVersion runtimeArchitecture];
-#endif
-
- SInt32 major, minor, bugFix;
- [GTMSystemVersion getMajor:&major minor:&minor bugFix:&bugFix];
-
- // We don't include the CompilerSDK in here because it is not something that
- // that is commonly needed.
- NSString *fullName = [NSString stringWithFormat:@"%@.%d.%d.%d.%@",
- name, (int)major, (int)minor, (int)bugFix, systemArchitecture];
-
- NSString *basePath = [[self class] gtm_getUnitTestSaveToDirectory];
- return [[basePath stringByAppendingPathComponent:fullName]
- stringByAppendingPathExtension:extension];
-}
-
-#pragma mark UnitTestImage
-
-// Checks to see that system settings are valid for doing an image comparison.
-// To be overridden by subclasses.
-// Returns:
-// YES if we can do image comparisons for this object type.
-- (BOOL)gtm_areSystemSettingsValidForDoingImage {
- return YES;
-}
-
-- (CFStringRef)gtm_imageUTI {
-#if GTM_IPHONE_SDK
- return kUTTypePNG;
-#else
- // Currently can't use PNG on Leopard. (10.5.2)
- // Radar:5844618 PNG importer/exporter in ImageIO is lossy
- return kUTTypeTIFF;
-#endif
-}
-
-// Return the extension to be used for saving unittest images
-//
-// Returns
-// An extension (e.g. "png")
-- (NSString*)gtm_imageExtension {
- CFStringRef uti = [self gtm_imageUTI];
-#if GTM_IPHONE_SDK
- if (CFEqual(uti, kUTTypePNG)) {
- return @"png";
- } else if (CFEqual(uti, kUTTypeJPEG)) {
- return @"jpg";
- } else {
- _GTMDevAssert(NO, @"Illegal UTI for iPhone");
- }
- return nil;
-#else
- CFStringRef extension
- = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
- _GTMDevAssert(extension, @"No extension for uti: %@", uti);
-
- return GTMCFAutorelease(extension);
-#endif
-}
-
-// Return image data in the format expected for gtm_imageExtension
-// So for a "png" extension I would expect "png" data
-//
-// Returns
-// NSData for image
-- (NSData*)gtm_imageDataForImage:(CGImageRef)image {
- NSData *data = nil;
-#if GTM_IPHONE_SDK
- // iPhone support
- UIImage *uiImage = [UIImage imageWithCGImage:image];
- CFStringRef uti = [self gtm_imageUTI];
- if (CFEqual(uti, kUTTypePNG)) {
- data = UIImagePNGRepresentation(uiImage);
- } else if (CFEqual(uti, kUTTypeJPEG)) {
- data = UIImageJPEGRepresentation(uiImage, 1.0f);
- } else {
- _GTMDevAssert(NO, @"Illegal UTI for iPhone");
- }
-#else
- data = [NSMutableData data];
- CGImageDestinationRef dest
- = CGImageDestinationCreateWithData((CFMutableDataRef)data,
- [self gtm_imageUTI],
- 1,
- NULL);
- // LZW Compression for TIFF
- NSDictionary *tiffDict
- = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber gtm_numberWithUnsignedInteger:NSTIFFCompressionLZW],
- (const NSString*)kCGImagePropertyTIFFCompression,
- nil];
- NSDictionary *destProps
- = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithFloat:1.0f],
- (const NSString*)kCGImageDestinationLossyCompressionQuality,
- tiffDict,
- (const NSString*)kCGImagePropertyTIFFDictionary,
- nil];
- CGImageDestinationAddImage(dest, image, (CFDictionaryRef)destProps);
- CGImageDestinationFinalize(dest);
- CFRelease(dest);
-#endif
- return data;
-
-}
-
-// Save the unitTestImage to an image file with name |name| at
-// ~/Desktop/|name|.extension.
-//
-// Note: When running under Pulse automation output is redirected to the
-// Pulse base directory.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageNamed:(NSString*)name {
- NSString *newPath = [self gtm_saveToPathForImageNamed:name];
- return [self gtm_saveToImageAt:newPath];
-}
-
-// Save unitTestImage of |self| to an image file at path |path|.
-//
-// Args:
-// name: The name for the image file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToImageAt:(NSString*)path {
- if (!path) return NO;
- NSData *data = [self gtm_imageRepresentation];
- return [data writeToFile:path atomically:YES];
-}
-
-// Generates a CGImageRef from the image at |path|
-// Args:
-// path: The path to the image.
-//
-// Returns:
-// A CGImageRef that you own, or nil if no image at path
-- (CGImageRef)gtm_imageWithContentsOfFile:(NSString*)path {
- CGImageRef imageRef = nil;
-#if GTM_IPHONE_SDK
- UIImage *image = [UIImage imageWithContentsOfFile:path];
- if (image) {
- imageRef = CGImageRetain(image.CGImage);
- }
-#else
- CFURLRef url = CFURLCreateWithFileSystemPath(NULL, (CFStringRef)path,
- kCFURLPOSIXPathStyle, NO);
- if (url) {
- CGImageSourceRef imageSource = CGImageSourceCreateWithURL(url, NULL);
- CFRelease(url);
- if (imageSource) {
- imageRef = CGImageSourceCreateImageAtIndex(imageSource, 0, NULL);
- CFRelease(imageSource);
- }
- }
-#endif
- return (CGImageRef)GTMCFAutorelease(imageRef);
-}
-
-/// Compares unitTestImage of |self| to the image located at |path|
-//
-// Args:
-// path: the path to the image file you want to compare against.
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-// If diff is non-nil, it will contain an auto-released diff of the images.
-//
-- (BOOL)gtm_compareWithImageAt:(NSString*)path diffImage:(CGImageRef*)diff {
- BOOL answer = NO;
- if (diff) {
- *diff = nil;
- }
- CGImageRef fileRep = [self gtm_imageWithContentsOfFile:path];
- _GTMDevAssert(fileRep, @"Unable to create imagerep from %@", path);
-
- CGImageRef imageRep = [self gtm_unitTestImage];
- _GTMDevAssert(imageRep, @"Unable to create imagerep for %@", self);
-
- size_t fileHeight = CGImageGetHeight(fileRep);
- size_t fileWidth = CGImageGetWidth(fileRep);
- size_t imageHeight = CGImageGetHeight(imageRep);
- size_t imageWidth = CGImageGetWidth(imageRep);
- if (fileHeight == imageHeight && fileWidth == imageWidth) {
- // if all the sizes are equal, run through the bytes and compare
- // them for equality.
- // Do an initial fast check, if this fails and the caller wants a
- // diff, we'll do the slow path and create the diff. The diff path
- // could be optimized, but probably not necessary at this point.
- answer = YES;
-
- CGSize imageSize = CGSizeMake(fileWidth, fileHeight);
- CGRect imageRect = CGRectMake(0, 0, fileWidth, fileHeight);
- unsigned char *fileData;
- unsigned char *imageData;
- CGContextRef fileContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &fileData);
- _GTMDevAssert(fileContext, @"Unable to create filecontext");
- CGContextDrawImage(fileContext, imageRect, fileRep);
- CGContextRef imageContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &imageData);
- _GTMDevAssert(imageContext, @"Unable to create imageContext");
- CGContextDrawImage(imageContext, imageRect, imageRep);
-
- size_t fileBytesPerRow = CGBitmapContextGetBytesPerRow(fileContext);
- size_t imageBytesPerRow = CGBitmapContextGetBytesPerRow(imageContext);
- size_t row, col;
-
- _GTMDevAssert(imageWidth * 4 <= imageBytesPerRow,
- @"We expect image data to be 32bit RGBA");
-
- for (row = 0; row < fileHeight && answer; row++) {
- answer = memcmp(fileData + fileBytesPerRow * row,
- imageData + imageBytesPerRow * row,
- imageWidth * 4) == 0;
- }
- if (!answer && diff) {
- answer = YES;
- unsigned char *diffData;
- CGContextRef diffContext
- = GTMCreateUnitTestBitmapContextOfSizeWithData(imageSize, &diffData);
- _GTMDevAssert(diffContext, @"Can't make diff context");
- size_t diffRowBytes = CGBitmapContextGetBytesPerRow(diffContext);
- for (row = 0; row < imageHeight; row++) {
- uint32_t *imageRow = (uint32_t*)(imageData + imageBytesPerRow * row);
- uint32_t *fileRow = (uint32_t*)(fileData + fileBytesPerRow * row);
- uint32_t* diffRow = (uint32_t*)(diffData + diffRowBytes * row);
- for (col = 0; col < imageWidth; col++) {
- uint32_t imageColor = imageRow[col];
- uint32_t fileColor = fileRow[col];
-
- unsigned char imageAlpha = imageColor & 0xF;
- unsigned char imageBlue = imageColor >> 8 & 0xF;
- unsigned char imageGreen = imageColor >> 16 & 0xF;
- unsigned char imageRed = imageColor >> 24 & 0xF;
- unsigned char fileAlpha = fileColor & 0xF;
- unsigned char fileBlue = fileColor >> 8 & 0xF;
- unsigned char fileGreen = fileColor >> 16 & 0xF;
- unsigned char fileRed = fileColor >> 24 & 0xF;
-
- // Check to see if color is almost right.
- // No matter how hard I've tried, I've still gotten occasionally
- // screwed over by colorspaces not mapping correctly, and small
- // sampling errors coming in. This appears to work for most cases.
- // Almost equal is defined to check within 1% on all components.
- BOOL equal = almostEqual(imageRed, fileRed) &&
- almostEqual(imageGreen, fileGreen) &&
- almostEqual(imageBlue, fileBlue) &&
- almostEqual(imageAlpha, fileAlpha);
- answer &= equal;
- if (diff) {
- uint32_t newColor;
- if (equal) {
- newColor = (((uint32_t)imageRed) << 24) +
- (((uint32_t)imageGreen) << 16) +
- (((uint32_t)imageBlue) << 8) +
- (((uint32_t)imageAlpha) / 2);
- } else {
- newColor = 0xFF0000FF;
- }
- diffRow[col] = newColor;
- }
- }
- }
- *diff = CGBitmapContextCreateImage(diffContext);
- free(diffData);
- CFRelease(diffContext);
- }
- free(fileData);
- CFRelease(fileContext);
- free(imageData);
- CFRelease(imageContext);
- }
- return answer;
-}
-
-// Find the path for an image by name in your bundle.
-// Do not include the extension on your name.
-//
-// Args:
-// name: The name for the image file you would like to find.
-//
-// Returns:
-// the path if the image exists in your bundle
-// or nil if no image to be found
-//
-- (NSString *)gtm_pathForImageNamed:(NSString*)name {
- return [self gtm_pathForFileNamed:name
- extension:[self gtm_imageExtension]];
-}
-
-- (NSString *)gtm_saveToPathForImageNamed:(NSString*)name {
- return [self gtm_saveToPathForFileNamed:name
- extension:[self gtm_imageExtension]];
-}
-
-// Gives us a representation of unitTestImage of |self|.
-//
-// Returns:
-// a representation of image if successful
-// nil if failed
-//
-- (NSData *)gtm_imageRepresentation {
- CGImageRef imageRep = [self gtm_unitTestImage];
- NSData *data = [self gtm_imageDataForImage:imageRep];
- _GTMDevAssert(data, @"unable to create %@ from %@",
- [self gtm_imageExtension], self);
- return data;
-}
-
-#pragma mark UnitTestState
-
-// Return the extension to be used for saving unittest states
-//
-// Returns
-// An extension (e.g. "gtmUTState")
-- (NSString*)gtm_stateExtension {
- return @"gtmUTState";
-}
-
-// Save the encoded unit test state to a state file with name |name| at
-// ~/Desktop/|name|.extension.
-//
-// Note: When running under Pulse automation output is redirected to the
-// Pulse base directory.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateNamed:(NSString*)name {
- NSString *newPath = [self gtm_saveToPathForStateNamed:name];
- return [self gtm_saveToStateAt:newPath];
-}
-
-// Save encoded unit test state of |self| to a state file at path |path|.
-//
-// Args:
-// name: The name for the state file you would like saved.
-//
-// Returns:
-// YES if the file was successfully saved.
-//
-- (BOOL)gtm_saveToStateAt:(NSString*)path {
- if (!path) return NO;
- NSDictionary *dictionary = [self gtm_stateRepresentation];
- return [dictionary writeToFile:path atomically:YES];
-}
-
-// Compares encoded unit test state of |self| to the state file located at
-// |path|
-//
-// Args:
-// path: the path to the state file you want to compare against.
-//
-// Returns:
-// YES if they are equal, NO is they are not
-//
-- (BOOL)gtm_compareWithStateAt:(NSString*)path {
- NSDictionary *masterDict = [NSDictionary dictionaryWithContentsOfFile:path];
- _GTMDevAssert(masterDict, @"Unable to create dictionary from %@", path);
- NSDictionary *selfDict = [self gtm_stateRepresentation];
- return [selfDict isEqual: masterDict];
-}
-
-// Find the path for a state by name in your bundle.
-// Do not include the extension.
-//
-// Args:
-// name: The name for the state file you would like to find.
-//
-// Returns:
-// the path if the state exists in your bundle
-// or nil if no state to be found
-//
-- (NSString *)gtm_pathForStateNamed:(NSString*)name {
- return [self gtm_pathForFileNamed:name extension:[self gtm_stateExtension]];
-}
-
-- (NSString *)gtm_saveToPathForStateNamed:(NSString*)name {
- return [self gtm_saveToPathForFileNamed:name
- extension:[self gtm_stateExtension]];
-}
-
-// Gives us the encoded unit test state |self|
-//
-// Returns:
-// the encoded state if successful
-// nil if failed
-//
-- (NSDictionary *)gtm_stateRepresentation {
- NSDictionary *dictionary = nil;
- if ([self conformsToProtocol:@protocol(GTMUnitTestingEncoding)]) {
- id<GTMUnitTestingEncoding> encoder = (id<GTMUnitTestingEncoding>)self;
- GTMUnitTestingKeyedCoder *archiver;
- archiver = [[[GTMUnitTestingKeyedCoder alloc] init] autorelease];
- [encoder gtm_unitTestEncodeState:archiver];
- dictionary = [archiver dictionary];
- }
- return dictionary;
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state. Encode data in the coder in the same
-// manner that you would encode data in any other Keyed NSCoder subclass.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- // All impls of gtm_unitTestEncodeState
- // should be calling [super gtm_unitTestEncodeState] as their first action.
- _GTMDevAssert([inCoder isKindOfClass:[GTMUnitTestingKeyedCoder class]],
- @"Coder must be of kind GTMUnitTestingKeyedCoder");
-
- // If the object has a delegate, give it a chance to respond
- if ([self respondsToSelector:@selector(delegate)]) {
- id delegate = [self performSelector:@selector(delegate)];
- if (delegate &&
- [delegate respondsToSelector:@selector(gtm_unitTestEncoderWillEncode:inCoder:)]) {
- [delegate gtm_unitTestEncoderWillEncode:self inCoder:inCoder];
- }
- }
-}
-
-@end
diff --git a/UnitTesting/GTMSenTestCase.h b/UnitTesting/GTMSenTestCase.h
index a96cb20..6b7198b 100644
--- a/UnitTesting/GTMSenTestCase.h
+++ b/UnitTesting/GTMSenTestCase.h
@@ -90,7 +90,7 @@
#define _XCExceptionFormatString @"throwing \"%@\""
#define _XCUnknownExceptionString @"throwing an unknown exception"
-#if defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
+#if (defined(__IPHONE_8_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0) || (GTM_MACOS_SDK == 1)
// They changed the call to _XCTRegisterFailure in iOS 8. Once we no longer need to support
// the iOS 7 SDK, we can remove this.
#define _GTMXCRegisterFailure(expression, format...) _XCTRegisterFailure(self, expression, format)
@@ -111,7 +111,7 @@
@try { \
__typeof__(a1) _a1value = (a1); \
if (_a1value != noErr) { \
- _failure = [NSString stringWithFormat:@"%ld != noErr", (long)_a1value]; \
+ _failure = [NSString stringWithFormat:@"%d != noErr", (int)_a1value]; \
} \
} \
@catch (NSException *_exception) { \
@@ -142,7 +142,7 @@
__typeof__(a1) _a1value = (a1); \
__typeof__(a2) _a2value = (a2); \
if (_a1value != _a2value) { \
- _failure = [NSString stringWithFormat:@"(%ld) != (%ld)", (long)_a1value, (long)_a2value]; \
+ _failure = [NSString stringWithFormat:@"(%d) != (%d)", (int)_a1value, (int)_a2value]; \
} \
} \
@catch (NSException *_exception) { \
@@ -152,7 +152,7 @@
_failure = @": " _XCUnknownExceptionString; \
} \
if (_failure) { \
- NSString *_expression = [NSString stringWithFormat:@"((%@) != (@%)) failed %@", @#a1, @#a2, _failure]; \
+ NSString *_expression = [NSString stringWithFormat:@"((%@) != (%@)) failed %@", @#a1, @#a2, _failure]; \
_GTMXCRegisterFailure(_expression, format); \
} \
})
@@ -734,12 +734,12 @@ do { \
// SENTE_BEGIN
/*" Generates a failure when !{ [a1 isEqualTo:a2] } is false
- (or one is nil and the other is not).
- _{a1 The object on the left.}
- _{a2 The object on the right.}
- _{description A format string as in the printf() function. Can be nil or
- an empty string but must be present.}
- _{... A variable number of arguments to the format string. Can be absent.}
+ (or one is nil and the other is not).
+ _{a1 The object on the left.}
+ _{a2 The object on the right.}
+ _{description A format string as in the printf() function. Can be nil or
+ an empty string but must be present.}
+ _{... A variable number of arguments to the format string. Can be absent.}
"*/
#define STAssertEqualObjects(a1, a2, description, ...) \
do { \
diff --git a/UnitTesting/GTMSenTestCase.m b/UnitTesting/GTMSenTestCase.m
index b7a59a3..5236c51 100644
--- a/UnitTesting/GTMSenTestCase.m
+++ b/UnitTesting/GTMSenTestCase.m
@@ -19,12 +19,7 @@
#import "GTMSenTestCase.h"
#import <unistd.h>
-#if GTM_IPHONE_SIMULATOR
#import <objc/message.h>
-#endif
-
-#import "GTMObjC2Runtime.h"
-#import "GTMUnitTestDevLog.h"
#if GTM_IPHONE_SDK
#import <UIKit/UIKit.h>
@@ -401,22 +396,6 @@ static NSInteger MethodSort(id a, id b, void *context) {
@implementation GTMTestCase
-- (void)invokeTest {
- NSAutoreleasePool *localPool = [[NSAutoreleasePool alloc] init];
- Class devLogClass = NSClassFromString(@"GTMUnitTestDevLog");
- if (devLogClass) {
- [devLogClass performSelector:@selector(enableTracking)];
- [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
-
- }
- [super invokeTest];
- if (devLogClass) {
- [devLogClass performSelector:@selector(verifyNoMoreLogsExpected)];
- [devLogClass performSelector:@selector(disableTracking)];
- }
- [localPool drain];
-}
-
+ (BOOL)isAbstractTestCase {
NSString *name = NSStringFromClass(self);
return [name rangeOfString:@"AbstractTest"].location != NSNotFound;
diff --git a/UnitTesting/GTMSenTestCaseTest.m b/UnitTesting/GTMSenTestCaseTest.m
index 9d9a594..33055ad 100644
--- a/UnitTesting/GTMSenTestCaseTest.m
+++ b/UnitTesting/GTMSenTestCaseTest.m
@@ -16,6 +16,15 @@
// the License.
//
+#import "GTMDefines.h"
+
+// This test currently executes under XCTest and under the GTM SenTest replacement.
+#if !GTM_USING_XCTEST
+#define XCTAssertFalse STAssertFalse
+#define XCTAssertEqual STAssertEquals
+#define XCTAssertTrue STAssertTrue
+#endif // !GTM_USING_XCTEST
+
#import "GTMSenTestCase.h"
// These make use of the fact that methods are run in alphebetical order
@@ -39,8 +48,8 @@ static int gZzCheckCalls_ = 0;
@implementation GTMTestingAbstractTest
- (void)testAbstractUnitTest {
- STAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]],
- @"test should not run on the abstract class");
+ XCTAssertFalse([self isMemberOfClass:[GTMTestingAbstractTest class]],
+ @"test should not run on the abstract class");
++gAbstractCalls_;
}
@@ -51,11 +60,12 @@ static int gZzCheckCalls_ = 0;
- (void)testZZCheck {
++gZzCheckCalls_;
if ([self isMemberOfClass:[GTMTestingTestOne class]]) {
- STAssertEquals(gAbstractCalls_, 1,
+ XCTAssertEqual(gAbstractCalls_, 1,
@"wrong number of abstract calls at this point");
} else {
- STAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]], nil);
- STAssertEquals(gAbstractCalls_, 2,
+ XCTAssertTrue([self isMemberOfClass:[GTMTestingTestTwo class]],
+ @"Not member of class");
+ XCTAssertEqual(gAbstractCalls_, 2,
@"wrong number of abstract calls at this point");
}
}
@@ -66,7 +76,7 @@ static int gZzCheckCalls_ = 0;
- (void)testZZZCheck {
// Test defined at this leaf, it should always run, check on the other methods.
- STAssertEquals(gZzCheckCalls_, 2, @"the parent class method wasn't called");
+ XCTAssertEqual(gZzCheckCalls_, 2, @"the parent class method wasn't called");
}
@end
diff --git a/UnitTesting/GTMTestTimerTest.m b/UnitTesting/GTMTestTimerTest.m
index 86f9d22..27758ff 100644
--- a/UnitTesting/GTMTestTimerTest.m
+++ b/UnitTesting/GTMTestTimerTest.m
@@ -6,9 +6,9 @@
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
-//
+//
// http://www.apache.org/licenses/LICENSE-2.0
-//
+//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -25,32 +25,32 @@
@implementation GTMTestTimerTest
- (void)testTimer {
GTMTestTimer *timer = GTMTestTimerCreate();
- STAssertNotNULL(timer, nil);
+ XCTAssertNotNULL(timer);
GTMTestTimerRetain(timer);
GTMTestTimerRelease(timer);
- STAssertEqualsWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0, nil);
+ XCTAssertEqualWithAccuracy(GTMTestTimerGetSeconds(timer), 0.0, 0.0);
GTMTestTimerStart(timer);
- STAssertTrue(GTMTestTimerIsRunning(timer), nil);
+ XCTAssertTrue(GTMTestTimerIsRunning(timer));
NSRunLoop *loop = [NSRunLoop currentRunLoop];
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
GTMTestTimerStop(timer);
-
- // We use greater than (and an almost absurd less than) because
+
+ // We use greater than (and an almost absurd less than) because
// these tests are very dependant on machine load, and we don't want
// automated tests reporting false negatives.
- STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1, nil);
- STAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0,nil);
- STAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0, nil);
-
+ XCTAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.1);
+ XCTAssertGreaterThan(GTMTestTimerGetMilliseconds(timer), 100.0);
+ XCTAssertGreaterThan(GTMTestTimerGetMicroseconds(timer), 100000.0);
+
// Check to make sure we're not WAY off the mark (by a factor of 10)
- STAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0, nil);
-
+ XCTAssertLessThan(GTMTestTimerGetMicroseconds(timer), 1000000.0);
+
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
GTMTestTimerStart(timer);
[loop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
- STAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2, nil);
+ XCTAssertGreaterThan(GTMTestTimerGetSeconds(timer), 0.2);
GTMTestTimerStop(timer);
- STAssertEquals(GTMTestTimerGetIterations(timer), (NSUInteger)2, nil);
+ XCTAssertEqual(GTMTestTimerGetIterations(timer), (NSUInteger)2);
GTMTestTimerRelease(timer);
}
@end
diff --git a/UnitTesting/GTMUIKit+UnitTesting.h b/UnitTesting/GTMUIKit+UnitTesting.h
deleted file mode 100644
index a9052f2..0000000
--- a/UnitTesting/GTMUIKit+UnitTesting.h
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// GTMUIKit+UnitTesting.h
-//
-// Code for making unit testing of graphics/UI easier. Generally you
-// will only want to look at the macros:
-// GTMAssertDrawingEqualToFile
-// GTMAssertViewRepEqualToFile
-// and the protocol GTMUnitTestViewDrawer. When using these routines
-// make sure you are using device colors and not calibrated/generic colors
-// or else your test graphics WILL NOT match across devices/graphics cards.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <UIKit/UIKit.h>
-#import "GTMNSObject+UnitTesting.h"
-
-@protocol GTMUnitTestViewDrawer;
-
-// Fails when the |a1|'s drawing in an area |a2| does not equal the image file named |a3|.
-// See the description of the GTMAssertViewRepEqualToFile macro
-// to understand how |a3| is found and written out.
-// See the description of the GTMUnitTestView for a better idea
-// how the view works.
-// Implemented as a macro to match the rest of the SenTest macros.
-//
-// Args:
-// a1: The object that implements the GTMUnitTestViewDrawer protocol
-// that is doing the drawing.
-// a2: The size of the drawing
-// a3: The name of the image file to check against.
-// Do not include the extension
-// a4: contextInfo to pass to drawer
-// description: A format string as in the printf() function.
-// Can be nil or an empty string but must be present.
-// ...: A variable number of arguments to the format string. Can be absent.
-//
-
-#define GTMAssertDrawingEqualToFile(a1, a2, a3, a4, description, ...) \
- do { \
- id<GTMUnitTestViewDrawer> a1Drawer = (a1); \
- CGSize a2Size = (a2); \
- NSString* a3String = (a3); \
- void *a4ContextInfo = (a4); \
- CGRect frame = CGRectMake(0, 0, a2Size.width, a2Size.height); \
- GTMUnitTestView *view = [[[GTMUnitTestView alloc] initWithFrame:frame drawer:a1Drawer contextInfo:a4ContextInfo] autorelease]; \
- GTMAssertObjectImageEqualToImageNamed(view, a3String, @"%@", STComposeString(description, ##__VA_ARGS__)); \
- } while(0)
-
-// Category for making unit testing of graphics/UI easier.
-
-// Allows you to take a state of a view. Supports both image and state.
-// See GTMNSObject+UnitTesting.h for details.
-@interface UIView (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-
-// Encodes the state of an object in a manner suitable for comparing against a master state file
-// This enables us to determine whether the object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder;
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews;
-@end
-
-// Category to help UIImage testing. UIImage can be tested using
-// GTMAssertObjectImageEqualToImageNamed macro, which automatically creates
-// result images and diff images in case test fails.
-@interface UIImage (GTMUnitTestingAdditions) <GTMUnitTestingImaging>
-@end
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol
-// This is useful when writing up unit tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@interface GTMUnitTestView : UIView {
- @private
- id<GTMUnitTestViewDrawer> drawer_; // delegate for doing drawing (STRONG)
- void* contextInfo_; // info passed in by user for them to use when drawing
-}
-
-// Create a GTMUnitTestView.
-//
-// Args:
-// rect: the area to draw.
-// drawer: the object that will do the drawing via the GTMUnitTestViewDrawer
-// protocol
-// contextInfo:
-- (id)initWithFrame:(CGRect)frame drawer:(id<GTMUnitTestViewDrawer>)drawer contextInfo:(void*)contextInfo;
-
-@end
-
-/// \cond Protocols
-
-// Formal protocol for doing unit testing of views. See description of
-// GTMUnitTestView for details.
-@protocol GTMUnitTestViewDrawer <NSObject>
-
-// Draw the view. Equivalent to drawRect on a standard UIView.
-//
-// Args:
-// rect: the area to draw.
-- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo;
-
-@end
diff --git a/UnitTesting/GTMUIKit+UnitTesting.m b/UnitTesting/GTMUIKit+UnitTesting.m
deleted file mode 100644
index 7d3f200..0000000
--- a/UnitTesting/GTMUIKit+UnitTesting.m
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// GTMUIKit+UnitTesting.m
-//
-// Category for making unit testing of graphics/UI easier.
-// Allows you to save a view out to a image file, and compare a view
-// with a previously stored representation to make sure it hasn't changed.
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMUIKit+UnitTesting.h"
-#import "GTMCALayer+UnitTesting.h"
-#import "GTMDefines.h"
-
-#if !GTM_IPHONE_SDK
-#error This file is for iPhone use only
-#endif // GTM_IPHONE_SDK
-
-// A view that allows you to delegate out drawing using the formal
-// GTMUnitTestViewDelegate protocol above. This is useful when writing up unit
-// tests for visual elements.
-// Your test will often end up looking like this:
-// - (void)testFoo {
-// GTMAssertDrawingEqualToFile(self, CGSizeMake(200, 200), @"Foo", nil, nil);
-// }
-// and your testSuite will also implement the unitTestViewDrawRect method to do
-// it's actual drawing. The above creates a view of size 200x200 that draws
-// it's content using |self|'s unitTestViewDrawRect method and compares it to
-// the contents of the file Foo.tif to make sure it's valid
-@implementation GTMUnitTestView
-
-- (id)initWithFrame:(CGRect)frame
- drawer:(id<GTMUnitTestViewDrawer>)drawer
- contextInfo:(void*)contextInfo{
- self = [super initWithFrame:frame];
- if (self != nil) {
- drawer_ = [drawer retain];
- contextInfo_ = contextInfo;
- }
- return self;
-}
-
-- (void)dealloc {
- [drawer_ release];
- [super dealloc];
-}
-
-- (void)drawRect:(CGRect)rect {
- [drawer_ gtm_unitTestViewDrawRect:rect contextInfo:contextInfo_];
-}
-
-@end
-
-@implementation UIView (GTMUnitTestingAdditions)
-
-// Returns an image containing a representation of the object
-// suitable for use in comparing against a master image.
-// NB this means that all colors should be from "NSDevice" color space
-// Does all of it's drawing with smoothfonts and antialiasing off
-// to avoid issues with font smoothing settings and antialias differences
-// between ppc and x86.
-//
-// Returns:
-// an image of the object
-- (CGImageRef)gtm_unitTestImage {
- CALayer* layer = [self layer];
- return [layer gtm_unitTestImage];
-}
-
-// Encodes the state of an object in a manner suitable for comparing
-// against a master state file so we can determine whether the
-// object is in a suitable state.
-//
-// Arguments:
-// inCoder - the coder to encode our state into
-- (void)gtm_unitTestEncodeState:(NSCoder*)inCoder {
- [super gtm_unitTestEncodeState:inCoder];
- [inCoder encodeBool:[self isHidden] forKey:@"ViewIsHidden"];
- CALayer* layer = [self layer];
- if (layer) {
- [layer gtm_unitTestEncodeState:inCoder];
- }
- if ([self gtm_shouldEncodeStateForSubviews]) {
- int i = 0;
- for (UIView *subview in [self subviews]) {
- [inCoder encodeObject:subview
- forKey:[NSString stringWithFormat:@"ViewSubView %d", i]];
- i++;
- }
- }
-}
-
-// Returns whether gtm_unitTestEncodeState should recurse into subviews
-//
-// Returns:
-// should gtm_unitTestEncodeState pick up subview state.
-- (BOOL)gtm_shouldEncodeStateForSubviews {
- return YES;
-}
-
-- (BOOL)gtm_shouldEncodeStateForSublayersOfLayer:(CALayer*)layer {
- return NO;
-}
-@end
-
-@implementation UIImage (GTMUnitTestingAdditions)
-- (CGImageRef)gtm_unitTestImage {
- return [self CGImage];
-}
-@end
diff --git a/UnitTesting/GTMUIKit+UnitTestingTest.m b/UnitTesting/GTMUIKit+UnitTestingTest.m
deleted file mode 100644
index 4b0387c..0000000
--- a/UnitTesting/GTMUIKit+UnitTestingTest.m
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// GTMUIKit+UnitTestingTest.m
-//
-// Copyright 2006-2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <CoreGraphics/CoreGraphics.h>
-#import "GTMUIKit+UnitTesting.h"
-#import "GTMSenTestCase.h"
-
-@interface GTMUIView_UnitTestingTest : GTMTestCase <GTMUnitTestViewDrawer>
-@end
-
-@implementation GTMUIView_UnitTestingTest
-
-- (void)testDrawing {
- GTMAssertDrawingEqualToFile(self,
- CGSizeMake(200,200),
- @"GTMUIViewUnitTestingTest",
- [UIApplication sharedApplication],
- nil);
-}
-
-- (void)testState {
- UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease];
- UIView *subview = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)] autorelease];
- [view addSubview:subview];
- GTMAssertObjectStateEqualToStateNamed(view, @"GTMUIViewUnitTestingTest", nil);
-}
-
-- (void)testUIImage {
- NSString* name = @"GTMUIViewUnitTestingTest";
- NSBundle *bundle = [NSBundle bundleForClass:[self class]];
- NSString *imagePath = [bundle pathForResource:name ofType:@"png"];
- STAssertNotNil(imagePath, nil);
- UIImage* image = [UIImage imageWithContentsOfFile:imagePath];
- GTMAssertObjectImageEqualToImageNamed(image, name, nil);
-}
-
-- (void)gtm_unitTestViewDrawRect:(CGRect)rect contextInfo:(void*)contextInfo {
- UIApplication *app = [UIApplication sharedApplication];
- STAssertEqualObjects(app,
- contextInfo,
- @"Should be a UIApplication");
- CGPoint center = CGPointMake(CGRectGetMidX(rect),
- CGRectGetMidY(rect));
- rect = CGRectMake(center.x - 50, center.y - 50, 100, 100);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextAddEllipseInRect(context, rect);
- CGContextSetLineWidth(context, 5);
- [[UIColor redColor] set];
- CGContextStrokePath(context);
-}
-
-@end
diff --git a/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib b/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
index 2a5aa22..346c749 100644
--- a/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
+++ b/UnitTesting/GTMUIUnitTestingHarness/English.lproj/MainMenu.xib
@@ -1,2065 +1,311 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
- <data>
- <int key="IBDocument.SystemTarget">0</int>
- <string key="IBDocument.SystemVersion">9G55</string>
- <string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.43</string>
- <string key="IBDocument.HIToolboxVersion">353.00</string>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="377"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1021">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomObject" id="1014">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1050">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSMenu" id="649796088">
- <string key="NSTitle">AMainMenu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="694149608">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="35465992">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="513340101">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">NewApplication</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238522557">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="304266470">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="609285721">
- <reference key="NSMenu" ref="110575045"/>
- <string type="base64-UTF8" key="NSTitle">UHJlZmVyZW5jZXPigKY</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="481834944">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1046388886">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="752062318">
- <string key="NSTitle">Services</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="646227648">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="755159360">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide NewApplication</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="342932134">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="908899353">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1056857174">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="632727374">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit NewApplication</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- <string key="NSName">_NSAppleMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="379814623">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">File</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="720053764">
- <string key="NSTitle">File</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="705341025">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">New</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="722745758">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">T3BlbuKApg</string>
- <string key="NSKeyEquiv">o</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1025936716">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Recent</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1065607017">
- <string key="NSTitle">Open Recent</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="759406840">
- <reference key="NSMenu" ref="1065607017"/>
- <string key="NSTitle">Clear Menu</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- <string key="NSName">_NSRecentDocumentsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="425164168">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="776162233">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Close</string>
- <string key="NSKeyEquiv">w</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1023925487">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save</string>
- <string key="NSKeyEquiv">s</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="117038363">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">U2F2ZSBBc+KApg</string>
- <string key="NSKeyEquiv">S</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="579971712">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Revert to Saved</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1010469920">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="294629803">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Page Setup...</string>
- <string key="NSKeyEquiv">P</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSToolTip"/>
- </object>
- <object class="NSMenuItem" id="49223823">
- <reference key="NSMenu" ref="720053764"/>
- <string type="base64-UTF8" key="NSTitle">UHJpbnTigKY</string>
- <string key="NSKeyEquiv">p</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="952259628">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Edit</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="789758025">
- <string key="NSTitle">Edit</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1058277027">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Undo</string>
- <string key="NSKeyEquiv">z</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="790794224">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Redo</string>
- <string key="NSKeyEquiv">Z</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1040322652">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="296257095">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Cut</string>
- <string key="NSKeyEquiv">x</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="860595796">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Copy</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="29853731">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="437104165">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Delete</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="583158037">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Select All</string>
- <string key="NSKeyEquiv">a</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="212016141">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="892235320">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Find</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="963351320">
- <string key="NSTitle">Find</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="447796847">
- <reference key="NSMenu" ref="963351320"/>
- <string type="base64-UTF8" key="NSTitle">RmluZOKApg</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="326711663">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Next</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="270902937">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Previous</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="159080638">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Use Selection for Find</string>
- <string key="NSKeyEquiv">e</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">7</int>
- </object>
- <object class="NSMenuItem" id="88285865">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Jump to Selection</string>
- <string key="NSKeyEquiv">j</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="972420730">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Spelling and Grammar</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="769623530">
- <string key="NSTitle">Spelling and Grammar</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="679648819">
- <reference key="NSMenu" ref="769623530"/>
- <string type="base64-UTF8" key="NSTitle">U2hvdyBTcGVsbGluZ+KApg</string>
- <string key="NSKeyEquiv">:</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="96193923">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling</string>
- <string key="NSKeyEquiv">;</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="948374510">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling While Typing</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="967646866">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Grammar With Spelling</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="507821607">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="698887838">
- <string key="NSTitle">Substitutions</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="605118523">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Copy/Paste</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="197661976">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Quotes</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="708854459">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Links</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <int key="NSTag">3</int>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="676164635">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Speech</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="785027613">
- <string key="NSTitle">Speech</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="731782645">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Start Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="680220178">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Stop Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="626404410">
- <reference key="NSMenu" ref="649796088"/>
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IFRpdGxlA</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="502084290">
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IFRpdGxlA</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="83534624">
- <reference key="NSMenu" ref="502084290"/>
- <string type="base64-UTF8" key="NSTitle">wqxNZW51IEl0ZW0</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="1028416764">
- <reference key="NSMenu" ref="502084290"/>
- <string key="NSTitle">Show Colors</string>
- <string key="NSKeyEquiv">C</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="586577488">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="466310130">
- <string key="NSTitle">View</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="102151532">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Show Toolbar</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- <object class="NSMenuItem" id="237841660">
- <reference key="NSMenu" ref="466310130"/>
- <string type="base64-UTF8" key="NSTitle">Q3VzdG9taXplIFRvb2xiYXLigKY</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="391199113">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Help</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="374024848">
- <string key="NSTitle">Help</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238773614">
- <reference key="NSMenu" ref="374024848"/>
- <string key="NSTitle">NewApplication Help</string>
- <string key="NSKeyEquiv">?</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="513340101"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <string key="NSName">_NSMainMenu</string>
- </object>
- <object class="NSCustomObject" id="728136523">
- <string key="NSClassName">GTMUILocalizer</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">print:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="49223823"/>
- </object>
- <int key="connectionID">86</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runPageLayout:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="294629803"/>
- </object>
- <int key="connectionID">87</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">clearRecentDocuments:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="759406840"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontStandardAboutPanel:</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="238522557"/>
- </object>
- <int key="connectionID">142</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performClose:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="776162233"/>
- </object>
- <int key="connectionID">193</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleContinuousSpellChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="948374510"/>
- </object>
- <int key="connectionID">222</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">undo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1058277027"/>
- </object>
- <int key="connectionID">223</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copy:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="860595796"/>
- </object>
- <int key="connectionID">224</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">checkSpelling:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="96193923"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">paste:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="29853731"/>
- </object>
- <int key="connectionID">226</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">stopSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="680220178"/>
- </object>
- <int key="connectionID">227</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="296257095"/>
- </object>
- <int key="connectionID">228</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showGuessPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="679648819"/>
- </object>
- <int key="connectionID">230</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">redo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="790794224"/>
- </object>
- <int key="connectionID">231</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">selectAll:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="583158037"/>
- </object>
- <int key="connectionID">232</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">startSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="731782645"/>
- </object>
- <int key="connectionID">233</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">delete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="437104165"/>
- </object>
- <int key="connectionID">235</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="447796847"/>
- </object>
- <int key="connectionID">241</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">centerSelectionInVisibleArea:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="88285865"/>
- </object>
- <int key="connectionID">245</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleGrammarChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="967646866"/>
- </object>
- <int key="connectionID">347</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleSmartInsertDelete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="605118523"/>
- </object>
- <int key="connectionID">355</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticQuoteSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="197661976"/>
- </object>
- <int key="connectionID">356</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticLinkDetection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="708854459"/>
- </object>
- <int key="connectionID">357</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHelp:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="238773614"/>
- </object>
- <int key="connectionID">360</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontColorPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1028416764"/>
- </object>
- <int key="connectionID">361</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1023925487"/>
- </object>
- <int key="connectionID">362</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocumentAs:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="117038363"/>
- </object>
- <int key="connectionID">363</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">revertDocumentToSaved:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="579971712"/>
- </object>
- <int key="connectionID">364</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runToolbarCustomizationPalette:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="237841660"/>
- </object>
- <int key="connectionID">365</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleToolbarShown:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="102151532"/>
- </object>
- <int key="connectionID">366</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="755159360"/>
- </object>
- <int key="connectionID">367</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="342932134"/>
- </object>
- <int key="connectionID">368</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="632727374"/>
- </object>
- <int key="connectionID">369</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="908899353"/>
- </object>
- <int key="connectionID">370</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="705341025"/>
- </object>
- <int key="connectionID">373</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="722745758"/>
- </object>
- <int key="connectionID">374</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">owner_</string>
- <reference key="source" ref="728136523"/>
- <reference key="destination" ref="1021"/>
- </object>
- <int key="connectionID">376</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <object class="NSArray" key="object" id="1049">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1048"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1021"/>
- <reference key="parent" ref="1049"/>
- <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1014"/>
- <reference key="parent" ref="1049"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1050"/>
- <reference key="parent" ref="1049"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="649796088"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="694149608"/>
- <reference ref="391199113"/>
- <reference ref="952259628"/>
- <reference ref="379814623"/>
- <reference ref="586577488"/>
- <reference ref="626404410"/>
- </object>
- <reference key="parent" ref="1049"/>
- <string key="objectName">MainMenu</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="694149608"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="110575045"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">103</int>
- <reference key="object" ref="391199113"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="374024848"/>
- </object>
- <reference key="parent" ref="649796088"/>
- <string key="objectName">1</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">217</int>
- <reference key="object" ref="952259628"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="789758025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">83</int>
- <reference key="object" ref="379814623"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720053764"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">81</int>
- <reference key="object" ref="720053764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023925487"/>
- <reference ref="117038363"/>
- <reference ref="49223823"/>
- <reference ref="722745758"/>
- <reference ref="705341025"/>
- <reference ref="1025936716"/>
- <reference ref="294629803"/>
- <reference ref="776162233"/>
- <reference ref="425164168"/>
- <reference ref="579971712"/>
- <reference ref="1010469920"/>
- </object>
- <reference key="parent" ref="379814623"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="1023925487"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">3</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">80</int>
- <reference key="object" ref="117038363"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">8</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="49223823"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">6</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="722745758"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="705341025"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">9</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="1025936716"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1065607017"/>
- </object>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="294629803"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">5</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="776162233"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">1</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="425164168"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">7</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="579971712"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">10</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="1010469920"/>
- <reference key="parent" ref="720053764"/>
- <string key="objectName">2</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="1065607017"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="759406840"/>
- </object>
- <reference key="parent" ref="1025936716"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="759406840"/>
- <reference key="parent" ref="1065607017"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">205</int>
- <reference key="object" ref="789758025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="437104165"/>
- <reference ref="583158037"/>
- <reference ref="1058277027"/>
- <reference ref="212016141"/>
- <reference ref="296257095"/>
- <reference ref="29853731"/>
- <reference ref="860595796"/>
- <reference ref="1040322652"/>
- <reference ref="790794224"/>
- <reference ref="892235320"/>
- <reference ref="972420730"/>
- <reference ref="676164635"/>
- <reference ref="507821607"/>
- </object>
- <reference key="parent" ref="952259628"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="437104165"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">198</int>
- <reference key="object" ref="583158037"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="1058277027"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">214</int>
- <reference key="object" ref="212016141"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">199</int>
- <reference key="object" ref="296257095"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">203</int>
- <reference key="object" ref="29853731"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="860595796"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">206</int>
- <reference key="object" ref="1040322652"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="790794224"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">218</int>
- <reference key="object" ref="892235320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="963351320"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="972420730"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769623530"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">200</int>
- <reference key="object" ref="769623530"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="948374510"/>
- <reference ref="96193923"/>
- <reference ref="679648819"/>
- <reference ref="967646866"/>
- </object>
- <reference key="parent" ref="972420730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">219</int>
- <reference key="object" ref="948374510"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">201</int>
- <reference key="object" ref="96193923"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">204</int>
- <reference key="object" ref="679648819"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">220</int>
- <reference key="object" ref="963351320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="270902937"/>
- <reference ref="88285865"/>
- <reference ref="159080638"/>
- <reference ref="326711663"/>
- <reference ref="447796847"/>
- </object>
- <reference key="parent" ref="892235320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="270902937"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="88285865"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">221</int>
- <reference key="object" ref="159080638"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">208</int>
- <reference key="object" ref="326711663"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="447796847"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">106</int>
- <reference key="object" ref="374024848"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238773614"/>
- </object>
- <reference key="parent" ref="391199113"/>
- <string key="objectName">2</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">111</int>
- <reference key="object" ref="238773614"/>
- <reference key="parent" ref="374024848"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="110575045"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238522557"/>
- <reference ref="755159360"/>
- <reference ref="908899353"/>
- <reference ref="632727374"/>
- <reference ref="646227648"/>
- <reference ref="609285721"/>
- <reference ref="481834944"/>
- <reference ref="304266470"/>
- <reference ref="1046388886"/>
- <reference ref="1056857174"/>
- <reference ref="342932134"/>
- </object>
- <reference key="parent" ref="694149608"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="238522557"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="755159360"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="908899353"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="632727374"/>
- <reference key="parent" ref="110575045"/>
- <string key="objectName">1111</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="646227648"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="609285721"/>
- <reference key="parent" ref="110575045"/>
- <string key="objectName">121</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="481834944"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">236</int>
- <reference key="object" ref="304266470"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1046388886"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="752062318"/>
- </object>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="1056857174"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="342932134"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="752062318"/>
- <reference key="parent" ref="1046388886"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">295</int>
- <reference key="object" ref="586577488"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="466310130"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">296</int>
- <reference key="object" ref="466310130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="102151532"/>
- <reference ref="237841660"/>
- </object>
- <reference key="parent" ref="586577488"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">297</int>
- <reference key="object" ref="102151532"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">298</int>
- <reference key="object" ref="237841660"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">299</int>
- <reference key="object" ref="626404410"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="502084290"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">300</int>
- <reference key="object" ref="502084290"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1028416764"/>
- <reference ref="83534624"/>
- </object>
- <reference key="parent" ref="626404410"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">345</int>
- <reference key="object" ref="1028416764"/>
- <reference key="parent" ref="502084290"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="676164635"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="785027613"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="785027613"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="680220178"/>
- <reference ref="731782645"/>
- </object>
- <reference key="parent" ref="676164635"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">195</int>
- <reference key="object" ref="680220178"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">196</int>
- <reference key="object" ref="731782645"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="967646866"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">348</int>
- <reference key="object" ref="507821607"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="698887838"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">349</int>
- <reference key="object" ref="698887838"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="605118523"/>
- <reference ref="197661976"/>
- <reference ref="708854459"/>
- </object>
- <reference key="parent" ref="507821607"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">350</int>
- <reference key="object" ref="605118523"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">351</int>
- <reference key="object" ref="197661976"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">354</int>
- <reference key="object" ref="708854459"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">375</int>
- <reference key="object" ref="728136523"/>
- <reference key="parent" ref="1049"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">377</int>
- <reference key="object" ref="83534624"/>
- <reference key="parent" ref="502084290"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>103.IBPluginDependency</string>
- <string>103.ImportedFromIB2</string>
- <string>106.IBEditorWindowLastContentRect</string>
- <string>106.IBPluginDependency</string>
- <string>106.ImportedFromIB2</string>
- <string>106.editorWindowContentRectSynchronizationRect</string>
- <string>111.IBPluginDependency</string>
- <string>111.ImportedFromIB2</string>
- <string>112.IBPluginDependency</string>
- <string>112.ImportedFromIB2</string>
- <string>124.IBPluginDependency</string>
- <string>124.ImportedFromIB2</string>
- <string>125.IBPluginDependency</string>
- <string>125.ImportedFromIB2</string>
- <string>125.editorWindowContentRectSynchronizationRect</string>
- <string>126.IBPluginDependency</string>
- <string>126.ImportedFromIB2</string>
- <string>129.IBPluginDependency</string>
- <string>129.ImportedFromIB2</string>
- <string>130.IBPluginDependency</string>
- <string>130.ImportedFromIB2</string>
- <string>130.editorWindowContentRectSynchronizationRect</string>
- <string>131.IBPluginDependency</string>
- <string>131.ImportedFromIB2</string>
- <string>134.IBPluginDependency</string>
- <string>134.ImportedFromIB2</string>
- <string>136.IBPluginDependency</string>
- <string>136.ImportedFromIB2</string>
- <string>143.IBPluginDependency</string>
- <string>143.ImportedFromIB2</string>
- <string>144.IBPluginDependency</string>
- <string>144.ImportedFromIB2</string>
- <string>145.IBPluginDependency</string>
- <string>145.ImportedFromIB2</string>
- <string>149.IBPluginDependency</string>
- <string>149.ImportedFromIB2</string>
- <string>150.IBPluginDependency</string>
- <string>150.ImportedFromIB2</string>
- <string>195.IBPluginDependency</string>
- <string>195.ImportedFromIB2</string>
- <string>196.IBPluginDependency</string>
- <string>196.ImportedFromIB2</string>
- <string>197.IBPluginDependency</string>
- <string>197.ImportedFromIB2</string>
- <string>198.IBPluginDependency</string>
- <string>198.ImportedFromIB2</string>
- <string>199.IBPluginDependency</string>
- <string>199.ImportedFromIB2</string>
- <string>200.IBPluginDependency</string>
- <string>200.ImportedFromIB2</string>
- <string>200.editorWindowContentRectSynchronizationRect</string>
- <string>201.IBPluginDependency</string>
- <string>201.ImportedFromIB2</string>
- <string>202.IBPluginDependency</string>
- <string>202.ImportedFromIB2</string>
- <string>203.IBPluginDependency</string>
- <string>203.ImportedFromIB2</string>
- <string>204.IBPluginDependency</string>
- <string>204.ImportedFromIB2</string>
- <string>205.IBEditorWindowLastContentRect</string>
- <string>205.IBPluginDependency</string>
- <string>205.ImportedFromIB2</string>
- <string>205.editorWindowContentRectSynchronizationRect</string>
- <string>206.IBPluginDependency</string>
- <string>206.ImportedFromIB2</string>
- <string>207.IBPluginDependency</string>
- <string>207.ImportedFromIB2</string>
- <string>208.IBPluginDependency</string>
- <string>208.ImportedFromIB2</string>
- <string>209.IBPluginDependency</string>
- <string>209.ImportedFromIB2</string>
- <string>210.IBPluginDependency</string>
- <string>210.ImportedFromIB2</string>
- <string>211.IBPluginDependency</string>
- <string>211.ImportedFromIB2</string>
- <string>212.IBPluginDependency</string>
- <string>212.ImportedFromIB2</string>
- <string>212.editorWindowContentRectSynchronizationRect</string>
- <string>213.IBPluginDependency</string>
- <string>213.ImportedFromIB2</string>
- <string>214.IBPluginDependency</string>
- <string>214.ImportedFromIB2</string>
- <string>215.IBPluginDependency</string>
- <string>215.ImportedFromIB2</string>
- <string>216.IBPluginDependency</string>
- <string>216.ImportedFromIB2</string>
- <string>217.IBPluginDependency</string>
- <string>217.ImportedFromIB2</string>
- <string>218.IBPluginDependency</string>
- <string>218.ImportedFromIB2</string>
- <string>219.IBPluginDependency</string>
- <string>219.ImportedFromIB2</string>
- <string>220.IBPluginDependency</string>
- <string>220.ImportedFromIB2</string>
- <string>220.editorWindowContentRectSynchronizationRect</string>
- <string>221.IBPluginDependency</string>
- <string>221.ImportedFromIB2</string>
- <string>236.IBPluginDependency</string>
- <string>236.ImportedFromIB2</string>
- <string>29.IBEditorWindowLastContentRect</string>
- <string>29.IBPluginDependency</string>
- <string>29.ImportedFromIB2</string>
- <string>29.WindowOrigin</string>
- <string>29.editorWindowContentRectSynchronizationRect</string>
- <string>295.IBPluginDependency</string>
- <string>296.IBEditorWindowLastContentRect</string>
- <string>296.IBPluginDependency</string>
- <string>296.editorWindowContentRectSynchronizationRect</string>
- <string>297.IBPluginDependency</string>
- <string>298.IBPluginDependency</string>
- <string>299.IBPluginDependency</string>
- <string>300.IBEditorWindowLastContentRect</string>
- <string>300.IBPluginDependency</string>
- <string>300.editorWindowContentRectSynchronizationRect</string>
- <string>345.IBPluginDependency</string>
- <string>346.IBPluginDependency</string>
- <string>346.ImportedFromIB2</string>
- <string>348.IBPluginDependency</string>
- <string>348.ImportedFromIB2</string>
- <string>349.IBPluginDependency</string>
- <string>349.ImportedFromIB2</string>
- <string>349.editorWindowContentRectSynchronizationRect</string>
- <string>350.IBPluginDependency</string>
- <string>350.ImportedFromIB2</string>
- <string>351.IBPluginDependency</string>
- <string>351.ImportedFromIB2</string>
- <string>354.IBPluginDependency</string>
- <string>354.ImportedFromIB2</string>
- <string>375.IBPluginDependency</string>
- <string>377.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>56.ImportedFromIB2</string>
- <string>57.IBEditorWindowLastContentRect</string>
- <string>57.IBPluginDependency</string>
- <string>57.ImportedFromIB2</string>
- <string>57.editorWindowContentRectSynchronizationRect</string>
- <string>58.IBPluginDependency</string>
- <string>58.ImportedFromIB2</string>
- <string>72.IBPluginDependency</string>
- <string>72.ImportedFromIB2</string>
- <string>73.IBPluginDependency</string>
- <string>73.ImportedFromIB2</string>
- <string>74.IBPluginDependency</string>
- <string>74.ImportedFromIB2</string>
- <string>75.IBPluginDependency</string>
- <string>75.ImportedFromIB2</string>
- <string>77.IBPluginDependency</string>
- <string>77.ImportedFromIB2</string>
- <string>78.IBPluginDependency</string>
- <string>78.ImportedFromIB2</string>
- <string>79.IBPluginDependency</string>
- <string>79.ImportedFromIB2</string>
- <string>80.IBPluginDependency</string>
- <string>80.ImportedFromIB2</string>
- <string>81.IBEditorWindowLastContentRect</string>
- <string>81.IBPluginDependency</string>
- <string>81.ImportedFromIB2</string>
- <string>81.editorWindowContentRectSynchronizationRect</string>
- <string>82.IBPluginDependency</string>
- <string>82.ImportedFromIB2</string>
- <string>83.IBPluginDependency</string>
- <string>83.ImportedFromIB2</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilderKit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1" id="9"/>
- <string>{{417, 1069}, {216, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{596, 852}, {216, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{522, 812}, {146, 23}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{436, 809}, {64, 6}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {275, 83}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{186, 593}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{187, 434}, {243, 243}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {167, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {241, 103}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{2560, 1536}, {442, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{74, 862}</string>
- <string>{{6, 978}, {478, 20}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{296, 1049}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{475, 832}, {234, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{2790, 1493}, {176, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{231, 634}, {176, 43}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{608, 612}, {215, 63}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{12, 909}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{23, 794}, {245, 183}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{144, 633}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>{{145, 474}, {199, 203}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">388</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">GTMLargeTypeWindow</string>
- <string key="superclassName">NSPanel</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">copy:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMLargeTypeWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">GTMUILocalizer</string>
- <string key="superclassName">NSObject</string>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>otherObjectToLocalize_</string>
- <string>owner_</string>
- <string>yetAnotherObjectToLocalize_</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMUILocalizer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="271775925">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMAppKit+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenuItem</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMCarbonEvent.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">AppKit/GTMDelegatingTableColumn.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMHTTPServer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSAppleEventDescriptor+Foundation.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Foundation/GTMNSObject+KeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMCALayer+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+BindingUnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">UnitTesting/GTMNSObject+UnitTesting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <reference key="sourceIdentifier" ref="271775925"/>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.LastKnownRelativeProjectPath">../../../GTM.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- </data>
-</archive>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+ <dependencies>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+ </dependencies>
+ <objects>
+ <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"/>
+ <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+ <customObject id="-3" userLabel="Application"/>
+ <menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
+ <items>
+ <menuItem title="NewApplication" id="56">
+ <menu key="submenu" title="NewApplication" systemMenu="apple" id="57">
+ <items>
+ <menuItem title="About NewApplication" id="58">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="236">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121"/>
+ <menuItem isSeparatorItem="YES" id="143">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Services" id="131">
+ <menu key="submenu" title="Services" systemMenu="services" id="130"/>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="144">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Hide NewApplication" keyEquivalent="h" id="134">
+ <connections>
+ <action selector="hide:" target="-1" id="367"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Hide Others" keyEquivalent="h" id="145">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="hideOtherApplications:" target="-1" id="368"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Show All" id="150">
+ <connections>
+ <action selector="unhideAllApplications:" target="-1" id="370"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="149">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Quit NewApplication" id="136" userLabel="1111">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="terminate:" target="-1" id="369"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="File" id="83">
+ <menu key="submenu" title="File" id="81">
+ <items>
+ <menuItem title="New" keyEquivalent="n" id="82" userLabel="9">
+ <connections>
+ <action selector="newDocument:" target="-1" id="373"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open…" keyEquivalent="o" id="72">
+ <connections>
+ <action selector="openDocument:" target="-1" id="374"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Open Recent" id="124">
+ <menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="125">
+ <items>
+ <menuItem title="Clear Menu" id="126">
+ <connections>
+ <action selector="clearRecentDocuments:" target="-1" id="127"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="79" userLabel="7">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Close" keyEquivalent="w" id="73" userLabel="1">
+ <connections>
+ <action selector="performClose:" target="-1" id="193"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save" keyEquivalent="s" id="75" userLabel="3">
+ <connections>
+ <action selector="saveDocument:" target="-1" id="362"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Save As…" keyEquivalent="S" id="80" userLabel="8">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="saveDocumentAs:" target="-1" id="363"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Revert to Saved" id="112" userLabel="10">
+ <modifierMask key="keyEquivalentModifierMask"/>
+ <connections>
+ <action selector="revertDocumentToSaved:" target="-1" id="364"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="74" userLabel="2">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Page Setup..." keyEquivalent="P" id="77" userLabel="5">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="runPageLayout:" target="-1" id="87"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Print…" keyEquivalent="p" id="78" userLabel="6">
+ <connections>
+ <action selector="print:" target="-1" id="86"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Edit" id="217">
+ <menu key="submenu" title="Edit" id="205">
+ <items>
+ <menuItem title="Undo" keyEquivalent="z" id="207">
+ <connections>
+ <action selector="undo:" target="-1" id="223"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Redo" keyEquivalent="Z" id="215">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="redo:" target="-1" id="231"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="206">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Cut" keyEquivalent="x" id="199">
+ <connections>
+ <action selector="cut:" target="-1" id="228"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Copy" keyEquivalent="c" id="197">
+ <connections>
+ <action selector="copy:" target="-1" id="224"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Paste" keyEquivalent="v" id="203">
+ <connections>
+ <action selector="paste:" target="-1" id="226"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Delete" id="202">
+ <connections>
+ <action selector="delete:" target="-1" id="235"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Select All" keyEquivalent="a" id="198">
+ <connections>
+ <action selector="selectAll:" target="-1" id="232"/>
+ </connections>
+ </menuItem>
+ <menuItem isSeparatorItem="YES" id="214">
+ <modifierMask key="keyEquivalentModifierMask" command="YES"/>
+ </menuItem>
+ <menuItem title="Find" id="218">
+ <menu key="submenu" title="Find" id="220">
+ <items>
+ <menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
+ <connections>
+ <action selector="performFindPanelAction:" target="-1" id="241"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Find Next" tag="2" keyEquivalent="g" id="208"/>
+ <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ </menuItem>
+ <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221"/>
+ <menuItem title="Jump to Selection" keyEquivalent="j" id="210">
+ <connections>
+ <action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Spelling and Grammar" id="216">
+ <menu key="submenu" title="Spelling and Grammar" id="200">
+ <items>
+ <menuItem title="Show Spelling…" keyEquivalent=":" id="204">
+ <connections>
+ <action selector="showGuessPanel:" target="-1" id="230"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Spelling" keyEquivalent=";" id="201">
+ <connections>
+ <action selector="checkSpelling:" target="-1" id="225"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Spelling While Typing" id="219">
+ <connections>
+ <action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Check Grammar With Spelling" id="346">
+ <connections>
+ <action selector="toggleGrammarChecking:" target="-1" id="347"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Substitutions" id="348">
+ <menu key="submenu" title="Substitutions" id="349">
+ <items>
+ <menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
+ <connections>
+ <action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
+ <connections>
+ <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Speech" id="211">
+ <menu key="submenu" title="Speech" id="212">
+ <items>
+ <menuItem title="Start Speaking" id="196">
+ <connections>
+ <action selector="startSpeaking:" target="-1" id="233"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Stop Speaking" id="195">
+ <connections>
+ <action selector="stopSpeaking:" target="-1" id="227"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="¬Menu Title" id="299">
+ <menu key="submenu" title="¬Menu Title" id="300">
+ <items>
+ <menuItem title="¬Menu Item" keyEquivalent="t" id="377"/>
+ <menuItem title="Show Colors" keyEquivalent="C" id="345">
+ <modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
+ <connections>
+ <action selector="orderFrontColorPanel:" target="-1" id="361"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="View" id="295">
+ <menu key="submenu" title="View" id="296">
+ <items>
+ <menuItem title="Show Toolbar" keyEquivalent="t" id="297">
+ <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
+ <connections>
+ <action selector="toggleToolbarShown:" target="-1" id="366"/>
+ </connections>
+ </menuItem>
+ <menuItem title="Customize Toolbar…" id="298">
+ <connections>
+ <action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ <menuItem title="Help" id="103" userLabel="1">
+ <menu key="submenu" title="Help" id="106" userLabel="2">
+ <items>
+ <menuItem title="NewApplication Help" keyEquivalent="?" id="111">
+ <connections>
+ <action selector="showHelp:" target="-1" id="360"/>
+ </connections>
+ </menuItem>
+ </items>
+ </menu>
+ </menuItem>
+ </items>
+ </menu>
+ <customObject id="375" customClass="GTMUILocalizer">
+ <connections>
+ <outlet property="owner_" destination="-2" id="376"/>
+ </connections>
+ </customObject>
+ </objects>
+</document>
diff --git a/UnitTesting/GTMUIUnitTestingHarness/main.m b/UnitTesting/GTMUIUnitTestingHarness/main.m
index 7438499..ceff0c9 100644
--- a/UnitTesting/GTMUIUnitTestingHarness/main.m
+++ b/UnitTesting/GTMUIUnitTestingHarness/main.m
@@ -19,14 +19,11 @@
#import <Cocoa/Cocoa.h>
-#import "GTMAppKitUnitTestingUtilities.h"
#import "GTMFoundationUnitTestingUtilities.h"
int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [GTMAppKitUnitTestingUtilities setUpForUIUnitTestsIfBeingTested];
-
// Give ourselves a max of 10 minutes for the tests. Sometimes (in automated
// builds) the unittesting bundle fails to load which causes the app to keep
// running forever. This will force it to exit after a certain amount of time
diff --git a/UnitTesting/GTMUnitTestDevLog.h b/UnitTesting/GTMUnitTestDevLog.h
index 2be231e..35d5e0d 100644
--- a/UnitTesting/GTMUnitTestDevLog.h
+++ b/UnitTesting/GTMUnitTestDevLog.h
@@ -16,69 +16,16 @@
// the License.
//
-#import "GTMDefines.h"
#import <Foundation/Foundation.h>
+#import "GTMDefines.h"
-// GTMUnitTestDevLog tracks what messages are logged to verify that you only
-// log what you expect to log during the running of unittests. This allows you
-// to log with impunity from your actual core implementations and still be able
-// to find unexpected logs in your output when running unittests.
-// In your unittests you tell GTMUnitTestDevLog what messages you expect your
-// test to spit out, and it will cause any that don't match to appear as errors
-// in your unittest run output. You can match on exact strings or standard
-// regexps.
-// Set GTM_SHOW_UNITTEST_DEVLOGS in the environment to show the logs that that
-// are expected and encountered. Otherwise they aren't display to keep the
-// unit test results easier to read.
+// GTMUnitTestDevLog modifies assertion logs so they don't get trapped by
+// build systems.
@interface GTMUnitTestDevLog : NSObject
-// Log a message
-+ (void)log:(NSString*)format, ... NS_FORMAT_FUNCTION(1, 2);
-+ (void)log:(NSString*)format args:(va_list)args NS_FORMAT_FUNCTION(1, 0);
// Turn tracking on/off
+ (void)enableTracking;
+ (void)disableTracking;
-+ (BOOL)isTrackingEnabled;
-
-// Note that you are expecting a string that has an exact match. No need to
-// escape any pattern characters.
-+ (void)expectString:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);
-
-// Note that you are expecting a pattern. Pattern characters that you want
-// exact matches on must be escaped. See [GTMRegex escapedPatternForString].
-// Patterns match across newlines (kGTMRegexOptionSupressNewlineSupport) making
-// it easier to match output from the descriptions of NS collection types such
-// as NSArray and NSDictionary.
-+ (void)expectPattern:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2);
-
-// Note that you are expecting exactly 'n' strings
-+ (void)expect:(NSUInteger)n
- casesOfString:(NSString *)format, ... NS_FORMAT_FUNCTION(2, 3);
-// Note that you are expecting exactly 'n' patterns
-+ (void)expect:(NSUInteger)n
- casesOfPattern:(NSString*)format, ... NS_FORMAT_FUNCTION(2, 3);
-+ (void)expect:(NSUInteger)n
- casesOfPattern:(NSString*)format
- args:(va_list)args NS_FORMAT_FUNCTION(2, 0);
-
-// Call when you want to verify that you have matched all the logs you expect
-// to match. If your unittests inherit from GTMTestcase (like they should) you
-// will get this called for free.
-+ (void)verifyNoMoreLogsExpected;
-
-// Resets the expected logs so that you don't have anything expected.
-// In general should not be needed, unless you have a variable logging case
-// of some sort.
-+ (void)resetExpectedLogs;
@end
-
-// Does the same as GTMUnitTestDevLog, but the logs are only expected in debug.
-// ie-the expect requests don't count in release builds.
-@interface GTMUnitTestDevLogDebug : GTMUnitTestDevLog
-@end
-
-// The name of the exception that is raised when GTMUnitTestDevLog
-// finds a problem.
-GTM_EXTERN NSString *const GTMLogFailureException;
diff --git a/UnitTesting/GTMUnitTestDevLog.m b/UnitTesting/GTMUnitTestDevLog.m
index 7a12bb0..ae4050f 100644
--- a/UnitTesting/GTMUnitTestDevLog.m
+++ b/UnitTesting/GTMUnitTestDevLog.m
@@ -18,52 +18,12 @@
#import "GTMUnitTestDevLog.h"
-
-#import "GTMRegex.h"
-#import "GTMSenTestCase.h"
-
-#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
-// Some versions of GCC (4.2 and below AFAIK) aren't great about supporting
-// -Wmissing-format-attribute
-// when the function is anything more complex than foo(NSString *fmt, ...).
-// You see the error inside the function when you turn ... into va_args and
-// attempt to call another function (like vsprintf for example).
-// So we just shut off the warning for this file. We reenable it at the end.
-#pragma GCC diagnostic ignored "-Wmissing-format-attribute"
-#endif // !__clang__
-
-#if !GTM_IPHONE_SDK
-// Add support for grabbing messages from Carbon.
-#import <CoreServices/CoreServices.h>
-static void GTMDevLogDebugAssert(OSType componentSignature,
- UInt32 options,
- const char *assertionString,
- const char *exceptionLabelString,
- const char *errorString,
- const char *fileName,
- long lineNumber,
- void *value,
- ConstStr255Param outputMsg) {
- NSString *outLog = [[[NSString alloc] initWithBytes:&(outputMsg[1])
- length:StrLength(outputMsg)
- encoding:NSMacOSRomanStringEncoding]
- autorelease];
- _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
-}
-static inline void GTMInstallDebugAssertOutputHandler(void) {
- InstallDebugAssertOutputHandler(GTMDevLogDebugAssert);
-}
-static inline void GTMUninstallDebugAssertOutputHandler(void) {
- InstallDebugAssertOutputHandler(NULL);
-}
-#else // GTM_IPHONE_SDK
-static inline void GTMInstallDebugAssertOutputHandler(void) {};
-static inline void GTMUninstallDebugAssertOutputHandler(void) {};
-#endif // GTM_IPHONE_SDK
-
-NSString *const GTMLogFailureException = @"GTMLogFailureException";
-
@interface GTMUnttestDevLogAssertionHandler : NSAssertionHandler
+- (void)handleFailure:(NSString *)functionName
+ file:(NSString *)fileName
+ lineNumber:(NSInteger)line
+ description:(NSString *)format
+ arguments:(va_list)argList NS_FORMAT_FUNCTION(4,0);
@end
@implementation GTMUnttestDevLogAssertionHandler
@@ -72,24 +32,18 @@ NSString *const GTMLogFailureException = @"GTMLogFailureException";
file:(NSString *)fileName
lineNumber:(NSInteger)line
description:(NSString *)format, ... {
+ NSString *call = [NSString stringWithFormat:@"[%@ %@]",
+ NSStringFromClass([object class]),
+ NSStringFromSelector(selector)];
+
va_list argList;
va_start(argList, format);
- NSString *descStr
- = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
+ [self handleFailure:call
+ file:fileName
+ lineNumber:line
+ description:format
+ arguments:argList];
va_end(argList);
-
- // You need a format that will be useful in logs, but won't trip up Xcode or
- // any other build systems parsing of the output.
- NSString *outLog
- = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
- NSStringFromSelector(selector),
- descStr,
- fileName, (long)line];
- // To avoid unused variable warning when _GTMDevLog is stripped.
- (void)outLog;
- _GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
- [NSException raise:NSInternalInconsistencyException
- format:@"NSAssert raised"];
}
- (void)handleFailureInFunction:(NSString *)functionName
@@ -98,45 +52,38 @@ NSString *const GTMLogFailureException = @"GTMLogFailureException";
description:(NSString *)format, ... {
va_list argList;
va_start(argList, format);
- NSString *descStr
- = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
+ [self handleFailure:functionName
+ file:fileName
+ lineNumber:line
+ description:format
+ arguments:argList];
va_end(argList);
+}
+
+- (void)handleFailure:(NSString *)failure
+ file:(NSString *)fileName
+ lineNumber:(NSInteger)line
+ description:(NSString *)format
+ arguments:(va_list)argList {
+ NSString *descStr
+ = [[[NSString alloc] initWithFormat:format arguments:argList] autorelease];
// You need a format that will be useful in logs, but won't trip up Xcode or
// any other build systems parsing of the output.
NSString *outLog
- = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
- functionName,
- descStr,
- fileName, (long)line];
+ = [NSString stringWithFormat:@"RecordedNSAssert in %@ - %@ (%@:%ld)",
+ failure, descStr, fileName, (long)line];
// To avoid unused variable warning when _GTMDevLog is stripped.
(void)outLog;
_GTMDevLog(@"%@", outLog); // Don't want any percents in outLog honored
[NSException raise:NSInternalInconsistencyException
format:@"NSAssert raised"];
}
-
@end
@implementation GTMUnitTestDevLog
-// If unittests are ever being run on separate threads, this may need to be
-// made a thread local variable.
-static BOOL gTrackingEnabled = NO;
-
-+ (NSMutableArray *)patterns {
- static NSMutableArray *patterns = nil;
- if (!patterns) {
- patterns = [[NSMutableArray array] retain];
- }
- return patterns;
-}
-
-+ (BOOL)isTrackingEnabled {
- return gTrackingEnabled;
-}
+ (void)enableTracking {
- GTMInstallDebugAssertOutputHandler();
NSMutableDictionary *threadDictionary
= [[NSThread currentThread] threadDictionary];
@@ -148,154 +95,14 @@ static BOOL gTrackingEnabled = NO;
GTMUnttestDevLogAssertionHandler *handler =
[[[GTMUnttestDevLogAssertionHandler alloc] init] autorelease];
[threadDictionary setObject:handler forKey:@"NSAssertionHandler"];
-
- gTrackingEnabled = YES;
}
+ (void)disableTracking {
- GTMUninstallDebugAssertOutputHandler();
// Clear our assertion handler back out.
NSMutableDictionary *threadDictionary
= [[NSThread currentThread] threadDictionary];
[threadDictionary removeObjectForKey:@"NSAssertionHandler"];
-
- gTrackingEnabled = NO;
}
-+ (void)log:(NSString*)format, ... {
- va_list argList;
- va_start(argList, format);
- [self log:format args:argList];
- va_end(argList);
-}
-
-+ (void)log:(NSString*)format args:(va_list)args {
- if ([self isTrackingEnabled]) {
- NSString *logString = [[[NSString alloc] initWithFormat:format
- arguments:args] autorelease];
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- BOOL logError = [patterns count] == 0 ? YES : NO;
- GTMRegex *regex = nil;
- if (!logError) {
- regex = [[[patterns objectAtIndex:0] retain] autorelease];
- logError = [regex matchesString:logString] ? NO : YES;
- [patterns removeObjectAtIndex:0];
- }
- if (logError) {
-
- if (regex) {
- [NSException raise:GTMLogFailureException
- format:@"Unexpected log: %@\nExpected: %@",
- logString, regex];
- } else {
- [NSException raise:GTMLogFailureException
- format:@"Unexpected log: %@", logString];
- }
- } else {
- static BOOL envChecked = NO;
- static BOOL showExpectedLogs = YES;
- if (!envChecked) {
- showExpectedLogs = getenv("GTM_SHOW_UNITTEST_DEVLOGS") ? YES : NO;
- }
- if (showExpectedLogs) {
- NSLog(@"Expected Log: %@", logString);
- }
- }
- }
- } else {
- NSLogv(format, args);
- }
-}
-
-+ (void)expectString:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- NSString *string = [[[NSString alloc] initWithFormat:format
- arguments:argList] autorelease];
- va_end(argList);
- NSString *pattern = [GTMRegex escapedPatternForString:string];
- [self expect:1 casesOfPattern:@"%@", pattern];
-
-}
-
-+ (void)expectPattern:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- [self expect:1 casesOfPattern:format args:argList];
- va_end(argList);
-}
-
-+ (void)expect:(NSUInteger)n casesOfString:(NSString *)format, ... {
- va_list argList;
- va_start(argList, format);
- NSString *string = [[[NSString alloc] initWithFormat:format
- arguments:argList] autorelease];
- va_end(argList);
- NSString *pattern = [GTMRegex escapedPatternForString:string];
- [self expect:n casesOfPattern:@"%@", pattern];
-}
-
-+ (void)expect:(NSUInteger)n casesOfPattern:(NSString*)format, ... {
- va_list argList;
- va_start(argList, format);
- [self expect:n casesOfPattern:format args:argList];
- va_end(argList);
-}
-
-+ (void)expect:(NSUInteger)n
-casesOfPattern:(NSString*)format
- args:(va_list)args {
- NSString *pattern = [[[NSString alloc] initWithFormat:format
- arguments:args] autorelease];
- GTMRegex *regex = [GTMRegex regexWithPattern:pattern
- options:kGTMRegexOptionSupressNewlineSupport];
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- for (NSUInteger i = 0; i < n; ++i) {
- [patterns addObject:regex];
- }
- }
-}
-
-+ (void)verifyNoMoreLogsExpected {
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- if ([patterns count] > 0) {
- NSMutableArray *patternsCopy = [[patterns copy] autorelease];
- [self resetExpectedLogs];
- [NSException raise:GTMLogFailureException
- format:@"Logs still expected %@", patternsCopy];
- }
- }
-}
-
-+ (void)resetExpectedLogs {
- @synchronized(self) {
- NSMutableArray *patterns = [self patterns];
- [patterns removeAllObjects];
- }
-}
@end
-
-
-@implementation GTMUnitTestDevLogDebug
-
-+ (void)expect:(NSUInteger)n
-casesOfPattern:(NSString*)format
- args:(va_list)args {
-#if DEBUG
- // In debug, let the base work happen
- [super expect:n casesOfPattern:format args:args];
-#else
- // nothing when not in debug
-#endif
-}
-
-@end
-
-#if !defined(__clang__) && (__GNUC__*10+__GNUC_MINOR__ >= 42)
-// See comment at top of file.
-#pragma GCC diagnostic error "-Wmissing-format-attribute"
-#endif // !__clang__
diff --git a/UnitTesting/GTMUnitTestingBindingTest.m b/UnitTesting/GTMUnitTestingBindingTest.m
deleted file mode 100644
index 26ae5df..0000000
--- a/UnitTesting/GTMUnitTestingBindingTest.m
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// GTMUnitTestingBindingTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestingTest.h"
-#import "GTMNSObject+BindingUnitTesting.h"
-
-@interface GTMUnitTestingBindingTest : GTMTestCase {
- int expectedFailureCount_;
-}
-@end
-
-@interface GTMUnitTestingBindingBadClass : NSObject
-@end
-
-@implementation GTMUnitTestingBindingTest
-
-// Iterates through all of our subviews testing the exposed bindings
-- (void)doSubviewBindingTest:(NSView*)view {
- NSArray *subviews = [view subviews];
- NSView *subview;
- GTM_FOREACH_OBJECT(subview, subviews) {
- GTMTestExposedBindings(subview, @"testing %@", subview);
- [self doSubviewBindingTest:subview];
- }
-}
-
-- (void)testBindings {
- // Get our window to work with and test it's bindings
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:@"GTMUnitTestingTest"];
- NSWindow *window = [testWindowController window];
- GTMTestExposedBindings(window, @"Window failed binding test");
- [self doSubviewBindingTest:[window contentView]];
- [window close];
- [testWindowController release];
-
- // Run a test against something with no bindings.
- // We're expecting a failure here.
- expectedFailureCount_ = 1;
- GTMTestExposedBindings(@"foo", @"testing no bindings");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bindings");
-
- // Run test against some with bad bindings.
- // We're expecting failures here.
- expectedFailureCount_ = 4;
- GTMUnitTestingBindingBadClass *bad = [[[GTMUnitTestingBindingBadClass alloc] init] autorelease];
- GTMTestExposedBindings(bad, @"testing bad bindings");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing bad bindings");
-}
-
-- (void)failWithException:(NSException *)anException {
- if (expectedFailureCount_ > 0) {
- expectedFailureCount_ -= 1;
- } else {
- [super failWithException:anException]; // COV_NF_LINE - not expecting exception
- }
-}
-
-@end
-
-// Forces several error cases in our binding tests to test them
-@implementation GTMUnitTestingBindingBadClass
-
-NSString *const kGTMKeyWithNoClass = @"keyWithNoClass";
-NSString *const kGTMKeyWithNoValue = @"keyWithNoValue";
-NSString *const kGTMKeyWeCantSet = @"keyWeCantSet";
-NSString *const kGTMKeyThatIsntEqual = @"keyThatIsntEqual";
-
-- (NSArray *)exposedBindings {
- return [NSArray arrayWithObjects:kGTMKeyWithNoClass,
- kGTMKeyWithNoValue,
- kGTMKeyWeCantSet,
- kGTMKeyThatIsntEqual,
- nil];
-}
-
-- (NSArray*)gtm_unitTestExposedBindingsTestValues:(NSString*)binding {
- GTMBindingUnitTestData *data
- = [GTMBindingUnitTestData testWithIdentityValue:kGTMKeyThatIsntEqual];
- return [NSArray arrayWithObject:data];
-}
-
-- (Class)valueClassForBinding:(NSString*)binding {
- return [binding isEqualTo:kGTMKeyWithNoClass] ? nil : [NSString class];
-}
-
-- (id)valueForKey:(NSString*)binding {
- if ([binding isEqualTo:kGTMKeyWithNoValue]) {
- [NSException raise:NSUndefinedKeyException format:@""];
- }
- return @"foo";
-}
-
-- (void)setValue:(id)value forKey:(NSString*)binding {
- if ([binding isEqualTo:kGTMKeyWeCantSet]) {
- [NSException raise:NSUndefinedKeyException format:@""];
- }
-}
-@end
-
diff --git a/UnitTesting/GTMUnitTestingTest.h b/UnitTesting/GTMUnitTestingTest.h
deleted file mode 100644
index ea9521b..0000000
--- a/UnitTesting/GTMUnitTestingTest.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// GTMUnitTestingTest.h
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import <AppKit/AppKit.h>
-
-// GTMUnitTestingTestController controller so that initWithWindowNibName can
-// find the appropriate bundle to load our nib from. See [GTMUnitTestingTest
-// -testUnitTestingFramework] for more info
-@interface GTMUnitTestingTestController : NSWindowController {
- IBOutlet NSTextField *field_;
-}
-
-- (NSTextField *)textField;
-@end
diff --git a/UnitTesting/GTMUnitTestingTest.m b/UnitTesting/GTMUnitTestingTest.m
deleted file mode 100644
index 0f87d28..0000000
--- a/UnitTesting/GTMUnitTestingTest.m
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// GTMUnitTestingTest.m
-//
-// Copyright 2008 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License"); you may not
-// use this file except in compliance with the License. You may obtain a copy
-// of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-//
-
-#import "GTMSenTestCase.h"
-#import "GTMUnitTestingTest.h"
-#import "GTMAppKit+UnitTesting.h"
-
-NSString *const kGTMWindowNibName = @"GTMUnitTestingTest";
-NSString *const kGTMWindowSaveFileName = @"GTMUnitTestingWindow";
-
-@interface GTMUnitTestingTest : GTMTestCase {
- int expectedFailureCount_;
-}
-@end
-
-// GTMUnitTestingTest support classes
-@interface GTMUnitTestingView : NSObject <GTMUnitTestViewDrawer> {
- BOOL goodContext_;
-}
-- (BOOL)hadGoodContext;
-@end
-
-@interface GTMUnitTestingDelegate : NSObject <NSImageDelegate> {
- BOOL didEncode_;
-}
-- (BOOL)didEncode;
-@end
-
-@interface GTMUnitTestingProxyTest : NSProxy
-- (id)init;
-@end
-
-@implementation GTMUnitTestingTest
-
-// Brings up the window defined in the nib and takes a snapshot of it.
-// We use the "empty" GTMUnitTestingTestController controller so that
-// initWithWindowNibName can find the appropriate bundle to load our nib from.
-// For some reason when running unit tests, with all the injecting going on
-// the nib loader can get confused as to where it should load a nib from.
-// Having a NSWindowController subclass in the same bundle as the nib seems
-// to help the nib loader find the nib, and any custom classes that are attached
-// to it.
-- (void)testUnitTestingFramework {
- // set up our delegates so we can test delegate handling
- GTMUnitTestingDelegate *appDelegate = [[GTMUnitTestingDelegate alloc] init];
- [NSApp setDelegate:appDelegate];
-
- // Get our window
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName];
- NSWindow *window = [testWindowController window];
- // Test the app state. This will cover windows and menus
- GTMAssertObjectStateEqualToStateNamed(NSApp,
- @"GTMUnitTestingTestApp",
- @"Testing the app state");
-
- // Test the window image and state
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
-
- // Verify that all of our delegate encoders got called
- STAssertTrue([appDelegate didEncode], @"app delegate didn't get called?");
-
- // Clean up
- [NSApp setDelegate:nil];
- [appDelegate release];
- [testWindowController release];
-}
-
-- (void)testViewUnitTesting {
- GTMUnitTestingView *unitTestingView = [[GTMUnitTestingView alloc] init];
- GTMAssertDrawingEqualToImageNamed(unitTestingView,
- NSMakeSize(200,200),
- @"GTMUnitTestingView",
- NSApp,
- @"Testing view drawing");
- STAssertTrue([unitTestingView hadGoodContext], @"bad context?");
- [unitTestingView release];
-}
-
-- (void)testImageUnitTesting {
- NSImage *image = [NSImage imageNamed:@"NSApplicationIcon"];
- GTMUnitTestingDelegate *imgDelegate = [[GTMUnitTestingDelegate alloc] init];
- [image setDelegate:imgDelegate];
- GTMAssertObjectEqualToStateAndImageNamed(image,
- @"GTMUnitTestingImage",
- @"Testing NSImage image and state");
- STAssertTrue([imgDelegate didEncode], @"imgDelegate didn't get called?");
- [image setDelegate:nil];
- [imgDelegate release];
-}
-
-- (void)testFailures {
- NSString *const bogusTestName = @"GTMUnitTestTestingFailTest";
- NSString *tempDir = NSTemporaryDirectory();
- STAssertNotNil(tempDir, @"No Temp Dir?");
- NSString *originalPath = [NSObject gtm_getUnitTestSaveToDirectory];
- STAssertNotNil(originalPath, @"No save dir?");
- [NSObject gtm_setUnitTestSaveToDirectory:tempDir];
- STAssertEqualObjects(tempDir, [NSObject gtm_getUnitTestSaveToDirectory],
- @"Save to dir not set?");
- NSString *statePath = [self gtm_saveToPathForStateNamed:bogusTestName];
- STAssertNotNil(statePath, @"no state path?");
- NSString *imagePath = [self gtm_saveToPathForImageNamed:bogusTestName];
- STAssertNotNil(imagePath, @"no image path?");
- GTMUnitTestingTestController *testWindowController
- = [[GTMUnitTestingTestController alloc] initWithWindowNibName:kGTMWindowNibName];
- NSWindow *window = [testWindowController window];
-
- // Test against a golden master filename that doesn't exist
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- bogusTestName,
- @"Creating image and state files");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures creating files");
-
- // Change our image and state and verify failures
- [[testWindowController textField] setStringValue:@"Foo"];
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
-
- // Now change the size of our image and verify failures
- NSRect oldFrame = [window frame];
- NSRect newFrame = oldFrame;
- newFrame.size.width += 1;
- [window setFrame:newFrame display:YES];
- expectedFailureCount_ = 1;
- GTMAssertObjectImageEqualToImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the changed window size");
- [window setFrame:oldFrame display:YES];
-
- // Set our unit test save dir to a bogus directory and
- // run the tests again.
- [NSObject gtm_setUnitTestSaveToDirectory:@"/zim/blatz/foo/bob/bar"];
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- kGTMWindowSaveFileName,
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
- expectedFailureCount_ = 2;
- GTMAssertObjectEqualToStateAndImageNamed(window,
- @"GTMUnitTestingWindowDoesntExist",
- @"Testing the window image and state");
- STAssertEquals(expectedFailureCount_, 0,
- @"Didn't get expected failures testing files");
-
- // Reset our unit test save dir
- [NSObject gtm_setUnitTestSaveToDirectory:nil];
-
- // Test against something that doesn't have an image
- expectedFailureCount_ = 1;
- GTMAssertObjectImageEqualToImageNamed(@"a string",
- @"GTMStringsDontHaveImages",
- @"Testing that strings should fail");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing files");
-
- // Test against something that doesn't implement our support
- expectedFailureCount_ = 1;
- GTMUnitTestingProxyTest *proxy = [[GTMUnitTestingProxyTest alloc] init];
- GTMAssertObjectStateEqualToStateNamed(proxy,
- @"NSProxiesDontDoState",
- @"Testing that NSProxy should fail");
- STAssertEquals(expectedFailureCount_, 0, @"Didn't get expected failures testing proxy");
- [proxy release];
-
- [window close];
-}
-
-- (void)failWithException:(NSException *)anException {
- if (expectedFailureCount_ > 0) {
- expectedFailureCount_ -= 1;
- } else {
- [super failWithException:anException]; // COV_NF_LINE - not expecting exception
- }
-}
-
-
-@end
-
-@implementation GTMUnitTestingTestController
-- (NSTextField *)textField {
- return field_;
-}
-
-@end
-
-@implementation GTMUnitTestingDelegate
-
-- (void)gtm_unitTestEncoderWillEncode:(id)sender inCoder:(NSCoder*)inCoder {
- // Test various encodings
- [inCoder encodeBool:YES forKey:@"BoolTest"];
- [inCoder encodeInt:1 forKey:@"IntTest"];
- [inCoder encodeInt32:1 forKey:@"Int32Test"];
- [inCoder encodeInt64:1 forKey:@"Int64Test"];
- [inCoder encodeFloat:1.0f forKey:@"FloatTest"];
- [inCoder encodeDouble:1.0 forKey:@"DoubleTest"];
- [inCoder encodeBytes:(const uint8_t*)"BytesTest" length:9 forKey:@"BytesTest"];
- didEncode_ = YES;
-}
-
-- (BOOL)didEncode {
- return didEncode_;
-}
-@end
-
-@implementation GTMUnitTestingView
-
-- (void)gtm_unitTestViewDrawRect:(NSRect)rect contextInfo:(void*)contextInfo {
- [[NSColor redColor] set];
- NSRectFill(rect);
- goodContext_ = [(id)contextInfo isEqualTo:NSApp];
-}
-
-- (BOOL)hadGoodContext {
- return goodContext_;
-}
-@end
-
-// GTMUnitTestingProxyTest is for testing the case where we don't conform to
-// the GTMUnitTestingEncoding protocol.
-@implementation GTMUnitTestingProxyTest
-- (id)init {
- return self;
-}
-
-- (BOOL)conformsToProtocol:(Protocol *)protocol {
- return NO;
-}
-
-@end
diff --git a/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState b/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState
deleted file mode 100644
index 87ae9e5..0000000
--- a/UnitTesting/TestData/GTMUIViewUnitTestingTest.gtmUTState
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>LayerIsDoublesided</key>
- <true/>
- <key>LayerIsHidden</key>
- <false/>
- <key>LayerIsOpaque</key>
- <true/>
- <key>LayerOpacity</key>
- <real>1</real>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>LayerIsDoublesided</key>
- <true/>
- <key>LayerIsHidden</key>
- <false/>
- <key>LayerIsOpaque</key>
- <true/>
- <key>LayerOpacity</key>
- <real>1</real>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUIViewUnitTestingTest.png b/UnitTesting/TestData/GTMUIViewUnitTestingTest.png
deleted file mode 100644
index 03fd9f0..0000000
--- a/UnitTesting/TestData/GTMUIViewUnitTestingTest.png
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff
deleted file mode 100644
index ec06a53..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState b/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState
deleted file mode 100644
index 969ddf6..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.gtmUTState
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>ImageName</key>
- <string>NSApplicationIcon</string>
- <key>ImageSize</key>
- <string>{128, 128}</string>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingImage.tiff b/UnitTesting/TestData/GTMUnitTestingImage.tiff
deleted file mode 100644
index 4d08297..0000000
--- a/UnitTesting/TestData/GTMUnitTestingImage.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib
deleted file mode 100644
index cc51f67..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/classes.nib
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBClasses</key>
- <array>
- <dict>
- <key>CLASS</key>
- <string>NSView</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSApplication</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSTextField</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSControl</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSMenu</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSControl</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSView</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSObject</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSCell</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSObject</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>NSWindow</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>SUPERCLASS</key>
- <string>NSResponder</string>
- </dict>
- <dict>
- <key>CLASS</key>
- <string>GTMUnitTestingTestController</string>
- <key>LANGUAGE</key>
- <string>ObjC</string>
- <key>OUTLETS</key>
- <dict>
- <key>field_</key>
- <string>NSTextField</string>
- </dict>
- <key>SUPERCLASS</key>
- <string>NSWindowController</string>
- </dict>
- </array>
- <key>IBVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib
new file mode 100644
index 0000000..b2aa6ee
--- /dev/null
+++ b/UnitTesting/TestData/GTMUnitTestingTest.nib/designable.nib
@@ -0,0 +1,1144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">15G1004</string>
+ <string key="IBDocument.InterfaceBuilderVersion">11201</string>
+ <string key="IBDocument.AppKitVersion">1404.47</string>
+ <string key="IBDocument.HIToolboxVersion">807.20</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">11201</string>
+ </object>
+ <array key="IBDocument.IntegratedClassDependencies">
+ <string>NSBox</string>
+ <string>NSButton</string>
+ <string>NSButtonCell</string>
+ <string>NSColorWell</string>
+ <string>NSCustomObject</string>
+ <string>NSProgressIndicator</string>
+ <string>NSScrollView</string>
+ <string>NSScroller</string>
+ <string>NSSearchField</string>
+ <string>NSSearchFieldCell</string>
+ <string>NSSlider</string>
+ <string>NSSliderCell</string>
+ <string>NSTabView</string>
+ <string>NSTabViewItem</string>
+ <string>NSTableColumn</string>
+ <string>NSTableHeaderView</string>
+ <string>NSTableView</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSTextView</string>
+ <string>NSView</string>
+ <string>NSWindowTemplate</string>
+ </array>
+ <array key="IBDocument.PluginDependencies">
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </array>
+ <dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
+ <array class="NSMutableArray" key="IBDocument.RootObjects" id="948991554">
+ <object class="NSCustomObject" id="774623032">
+ <string key="NSClassName">GTMUnitTestingTestController</string>
+ </object>
+ <object class="NSCustomObject" id="121913320">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="575648047">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="392237883">
+ <int key="NSWindowStyleMask">3</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 192}, {393, 318}}</string>
+ <int key="NSWTFlags">536871936</int>
+ <string key="NSWindowTitle">Window</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <nil key="NSUserInterfaceItemIdentifier"/>
+ <object class="NSView" key="NSWindowView" id="640013893">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSScrollView" id="85174318">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSClipView" id="410309725">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">2322</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTableView" id="497150328">
+ <reference key="NSNextResponder" ref="410309725"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{223, 32}</string>
+ <reference key="NSSuperview" ref="410309725"/>
+ <reference key="NSNextKeyView" ref="975309690"/>
+ <bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="218180457">
+ <reference key="NSNextResponder" ref="700173326"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{223, 23}</string>
+ <reference key="NSSuperview" ref="700173326"/>
+ <reference key="NSNextKeyView" ref="837150896"/>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ <object class="_NSCornerView" key="NSCornerView" id="837150896">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 0}, {16, 23}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="410309725"/>
+ </object>
+ <array class="NSMutableArray" key="NSTableColumns">
+ <object class="NSTableColumn" id="867115630">
+ <double key="NSWidth">101</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="26">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor" id="907423441">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="1031637411">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <object class="NSColor" key="NSColor" id="637251812">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="1026765034">
+ <int key="NSCellFlags">337641536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">Text Cell</string>
+ <object class="NSFont" key="NSSupport" id="719066366">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="497150328"/>
+ <object class="NSColor" key="NSBackgroundColor" id="421034111">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="450059627">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="183411164">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ <object class="NSTableColumn" id="328836390">
+ <double key="NSWidth">116</double>
+ <double key="NSMinWidth">40</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75497536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="907423441"/>
+ <reference key="NSTextColor" ref="1031637411"/>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="114565872">
+ <int key="NSCellFlags">337641536</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="497150328"/>
+ <reference key="NSBackgroundColor" ref="421034111"/>
+ <reference key="NSTextColor" ref="183411164"/>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="497150328"/>
+ </object>
+ </array>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">2</double>
+ <reference key="NSBackgroundColor" ref="421034111"/>
+ <object class="NSColor" key="NSGridColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">17</double>
+ <int key="NSTvFlags">-700448768</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewDraggingDestinationStyle">0</int>
+ <int key="NSTableViewGroupRowStyle">1</int>
+ </object>
+ </array>
+ <string key="NSFrame">{{1, 23}, {223, 32}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="497150328"/>
+ <reference key="NSDocView" ref="497150328"/>
+ <reference key="NSBGColor" ref="421034111"/>
+ <int key="NScvFlags">4</int>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <object class="NSScroller" id="975309690">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 23}, {15, 32}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="745203310"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="85174318"/>
+ <reference key="NSTarget" ref="85174318"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">37</double>
+ <double key="NSPercent">0.1947367936372757</double>
+ </object>
+ <object class="NSScroller" id="745203310">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{1, 55}, {223, 15}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="826932166"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="85174318"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="85174318"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.57142859697341919</double>
+ </object>
+ <object class="NSClipView" id="700173326">
+ <reference key="NSNextResponder" ref="85174318"/>
+ <int key="NSvFlags">2338</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <reference ref="218180457"/>
+ </array>
+ <string key="NSFrame">{{1, 0}, {223, 23}}</string>
+ <reference key="NSSuperview" ref="85174318"/>
+ <reference key="NSNextKeyView" ref="218180457"/>
+ <reference key="NSDocView" ref="218180457"/>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <reference ref="837150896"/>
+ </array>
+ <string key="NSFrame">{{20, 227}, {240, 71}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="700173326"/>
+ <int key="NSsFlags">133170</int>
+ <reference key="NSVScroller" ref="975309690"/>
+ <reference key="NSHScroller" ref="745203310"/>
+ <reference key="NSContentView" ref="410309725"/>
+ <reference key="NSHeaderClipView" ref="700173326"/>
+ <reference key="NSCornerView" ref="837150896"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
+ </object>
+ <object class="NSBox" id="1010937789">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{266, 0}, {5, 318}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="321194065"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Box</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <object class="NSColor" key="NSBackgroundColor" id="938122495">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="103793517">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">labelColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <int key="NSBorderType">3</int>
+ <int key="NSBoxType">2</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ <object class="NSTextField" id="321194065">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{280, 281}, {38, 17}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="437142657"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="765978048">
+ <int key="NSCellFlags">68157504</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">HaHa</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="321194065"/>
+ <object class="NSColor" key="NSBackgroundColor" id="434344295">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <reference key="NSColor" ref="450059627"/>
+ </object>
+ <reference key="NSTextColor" ref="183411164"/>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSSearchField" id="437142657">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{277, 251}, {96, 22}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="426312658"/>
+ <bool key="NSViewIsLayerTreeHost">YES</bool>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSearchFieldCell" key="NSCell" id="581737406">
+ <int key="NSCellFlags">342884416</int>
+ <int key="NSCellFlags2">268436480</int>
+ <string key="NSContents">Still Haven't Found What I'm Searching For</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="437142657"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <int key="NSTextBezelStyle">1</int>
+ <reference key="NSBackgroundColor" ref="938122495"/>
+ <reference key="NSTextColor" ref="183411164"/>
+ <object class="NSButtonCell" key="NSSearchButtonCell">
+ <int key="NSCellFlags">0</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">search</string>
+ <reference key="NSControlView" ref="437142657"/>
+ <string key="NSAction">_searchFieldSearch:</string>
+ <reference key="NSTarget" ref="581737406"/>
+ <int key="NSButtonFlags">138690560</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <object class="NSButtonCell" key="NSCancelButtonCell">
+ <int key="NSCellFlags">0</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">clear</string>
+ <array class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
+ <dictionary class="NSMutableDictionary">
+ <string key="AXDescription">cancel</string>
+ <integer value="1" key="NSAccessibilityEncodedAttributesValueType"/>
+ </dictionary>
+ </array>
+ <reference key="NSControlView" ref="437142657"/>
+ <string key="NSAction">_searchFieldCancel:</string>
+ <reference key="NSTarget" ref="581737406"/>
+ <int key="NSButtonFlags">138690560</int>
+ <int key="NSButtonFlags2">0</int>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ </object>
+ <int key="NSMaximumRecents">255</int>
+ <bytes key="NSSearchFieldFlags">BgAAAA</bytes>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSTextField" id="426312658">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{277, 219}, {96, 22}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="582902776"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="403080839">
+ <int key="NSCellFlags">-1804599231</int>
+ <int key="NSCellFlags2">272630784</int>
+ <string key="NSContents">Once upon a time</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="426312658"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="938122495"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">textColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <int key="NSTextFieldAlignmentRectInsetsVersion">2</int>
+ </object>
+ <object class="NSButton" id="582902776">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{275, 195}, {96, 18}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="938586919"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="540877530">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">CheckMate!</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="582902776"/>
+ <int key="NSButtonFlags">1211912448</int>
+ <int key="NSButtonFlags2">130</int>
+ <object class="NSCustomResource" key="NSNormalImage">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSSwitch</string>
+ </object>
+ <object class="NSButtonImageSource" key="NSAlternateImage">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSSlider" id="938586919">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{276, 159}, {96, 21}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="672462228"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSSliderCell" key="NSCell" id="630356720">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">Helvetica</string>
+ <double key="NSSize">12</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="938586919"/>
+ <double key="NSMaxValue">100</double>
+ <double key="NSMinValue">0.0</double>
+ <double key="NSValue">50</double>
+ <double key="NSAltIncValue">0.0</double>
+ <int key="NSNumberOfTickMarks">0</int>
+ <int key="NSTickMarkPosition">1</int>
+ <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+ <bool key="NSVertical">NO</bool>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="728377240">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{275, 115}, {96, 32}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="146897443"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="808585577">
+ <int key="NSCellFlags">67108864</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Cancel</string>
+ <reference key="NSSupport" ref="719066366"/>
+ <reference key="NSControlView" ref="728377240"/>
+ <int key="NSButtonFlags">-2038284288</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSColorWell" id="469359029">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <set class="NSMutableSet" key="NSDragTypes">
+ <string>NSColor pasteboard type</string>
+ </set>
+ <string key="NSFrame">{{279, 62}, {87, 23}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSIsBordered">YES</bool>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC4wNTgxMzA0OTkgMC4wNTU1NDE4OTkgMQA</bytes>
+ </object>
+ </object>
+ <object class="NSProgressIndicator" id="146897443">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">1292</int>
+ <string key="NSFrame">{{280, 91}, {85, 12}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="469359029"/>
+ <int key="NSpiFlags">16648</int>
+ <double key="NSMinValue">16</double>
+ <double key="NSMaxValue">100</double>
+ </object>
+ <object class="NSScrollView" id="826932166">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">256</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSClipView" id="954815377">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">2322</int>
+ <array class="NSMutableArray" key="NSSubviews">
+ <object class="NSTextView" id="1039988695">
+ <reference key="NSNextResponder" ref="954815377"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{223, 54}</string>
+ <reference key="NSSuperview" ref="954815377"/>
+ <reference key="NSNextKeyView" ref="767227615"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="35629099">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes">Lorem ipsum dolor</characters>
+ </object>
+ <dictionary key="NSAttributes">
+ <object class="NSFont" key="NSFont">
+ <bool key="IBIsSystemFont">YES</bool>
+ <double key="NSSize">10</double>
+ <int key="NSfFlags">2843</int>
+ </object>
+ <object class="NSParagraphStyle" key="NSParagraphStyle">
+ <int key="NSAlignment">3</int>
+ <array key="NSTabStops">
+ <object class="NSTextTab">
+ <double key="NSLocation">0.0</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">56</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">112</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">168</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">224</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">280</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">336</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">392</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">448</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">504</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">560</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">616</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">672</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">728</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">784</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">840</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">896</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">952</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1008</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1064</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1120</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1176</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1232</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1288</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1344</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1400</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1456</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1512</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1568</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1624</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1680</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">1736</double>
+ </object>
+ </array>
+ </object>
+ </dictionary>
+ <nil key="NSDelegate"/>
+ </object>
+ <array class="NSMutableArray" key="NSTextContainers">
+ <reference ref="35629099"/>
+ </array>
+ <int key="NSLMFlags">38</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="1039988695"/>
+ <double key="NSWidth">223</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">67120103</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <reference key="NSBackgroundColor" ref="103793517"/>
+ <dictionary key="NSSelectedAttributes">
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextBackgroundColor</string>
+ <reference key="NSColor" ref="450059627"/>
+ </object>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextColor</string>
+ <reference key="NSColor" ref="637251812"/>
+ </object>
+ </dictionary>
+ <reference key="NSInsertionColor" ref="183411164"/>
+ <dictionary key="NSLinkAttributes">
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ <integer value="1" key="NSUnderline"/>
+ </dictionary>
+ <nil key="NSDefaultParagraphStyle"/>
+ <nil key="NSTextFinder"/>
+ <int key="NSPreferredTextFinderStyle">1</int>
+ </object>
+ <int key="NSTVFlags">70</int>
+ <string key="NSMaxSize">{463, 10000000}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </array>
+ <string key="NSFrame">{{1, 1}, {223, 54}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="1039988695"/>
+ <reference key="NSDocView" ref="1039988695"/>
+ <reference key="NSBGColor" ref="103793517"/>
+ <object class="NSCursor" key="NSCursor">
+ <string key="NSHotSpot">{4, -5}</string>
+ <int key="NSCursorType">1</int>
+ </object>
+ <int key="NScvFlags">4</int>
+ <bool key="NSAutomaticallyAdjustsContentInsets">YES</bool>
+ </object>
+ <object class="NSScroller" id="767227615">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{224, 1}, {15, 54}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="1010937789"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="826932166"/>
+ <reference key="NSTarget" ref="826932166"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.73888885974884033</double>
+ </object>
+ <object class="NSScroller" id="666418199">
+ <reference key="NSNextResponder" ref="826932166"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="826932166"/>
+ <reference key="NSNextKeyView" ref="954815377"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <string key="NSControlAction">_doScroller:</string>
+ <reference key="NSControlTarget" ref="826932166"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="826932166"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </array>
+ <string key="NSFrame">{{20, 163}, {240, 56}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="666418199"/>
+ <int key="NSsFlags">133138</int>
+ <reference key="NSVScroller" ref="767227615"/>
+ <reference key="NSHScroller" ref="666418199"/>
+ <reference key="NSContentView" ref="954815377"/>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
+ </object>
+ <object class="NSTabView" id="672462228">
+ <reference key="NSNextResponder" ref="640013893"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{13, 25}, {254, 124}}</string>
+ <reference key="NSSuperview" ref="640013893"/>
+ <reference key="NSNextKeyView" ref="940943414"/>
+ <array class="NSMutableArray" key="NSTabViewItems">
+ <object class="NSTabViewItem" id="229928186">
+ <string key="NSIdentifier">1</string>
+ <object class="NSView" key="NSView" id="940943414">
+ <reference key="NSNextResponder" ref="672462228"/>
+ <int key="NSvFlags">274</int>
+ <string key="NSFrame">{{10, 33}, {234, 78}}</string>
+ <reference key="NSSuperview" ref="672462228"/>
+ </object>
+ <string key="NSLabel">Tab</string>
+ <reference key="NSColor" ref="434344295"/>
+ <reference key="NSTabView" ref="672462228"/>
+ </object>
+ <object class="NSTabViewItem" id="984817245">
+ <string key="NSIdentifier">2</string>
+ <object class="NSView" key="NSView" id="50036484">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{10, 33}, {234, 78}}</string>
+ </object>
+ <string key="NSLabel">View</string>
+ <reference key="NSColor" ref="434344295"/>
+ <reference key="NSTabView" ref="672462228"/>
+ </object>
+ </array>
+ <reference key="NSSelectedTabViewItem" ref="229928186"/>
+ <reference key="NSFont" ref="719066366"/>
+ <int key="NSTvFlags">0</int>
+ <bool key="NSAllowTruncatedLabels">YES</bool>
+ <bool key="NSDrawsBackground">YES</bool>
+ <array class="NSMutableArray" key="NSSubviews">
+ <reference ref="940943414"/>
+ </array>
+ </object>
+ </array>
+ <string key="NSFrameSize">{393, 318}</string>
+ <reference key="NSNextKeyView" ref="85174318"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1577}}</string>
+ <bool key="NSWindowIsRestorable">YES</bool>
+ </object>
+ </array>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <array key="connectionRecords">
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">field_</string>
+ <reference key="source" ref="774623032"/>
+ <reference key="destination" ref="426312658"/>
+ </object>
+ <int key="connectionID">45</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="774623032"/>
+ <reference key="destination" ref="392237883"/>
+ </object>
+ <int key="connectionID">29</int>
+ </object>
+ </array>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <array key="orderedObjects">
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <array key="object" id="0"/>
+ <reference key="children" ref="948991554"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="774623032"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="121913320"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="575648047"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="392237883"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="640013893"/>
+ </array>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Window (Window)</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="640013893"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="728377240"/>
+ <reference ref="85174318"/>
+ <reference ref="321194065"/>
+ <reference ref="437142657"/>
+ <reference ref="426312658"/>
+ <reference ref="582902776"/>
+ <reference ref="826932166"/>
+ <reference ref="1010937789"/>
+ <reference ref="938586919"/>
+ <reference ref="146897443"/>
+ <reference ref="469359029"/>
+ <reference ref="672462228"/>
+ </array>
+ <reference key="parent" ref="392237883"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="728377240"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="808585577"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="85174318"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="497150328"/>
+ <reference ref="745203310"/>
+ <reference ref="218180457"/>
+ <reference ref="975309690"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="497150328"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="867115630"/>
+ <reference ref="328836390"/>
+ </array>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="867115630"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1026765034"/>
+ </array>
+ <reference key="parent" ref="497150328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">15</int>
+ <reference key="object" ref="1026765034"/>
+ <reference key="parent" ref="867115630"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">13</int>
+ <reference key="object" ref="328836390"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="114565872"/>
+ </array>
+ <reference key="parent" ref="497150328"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">14</int>
+ <reference key="object" ref="114565872"/>
+ <reference key="parent" ref="328836390"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">16</int>
+ <reference key="object" ref="321194065"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="765978048"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">18</int>
+ <reference key="object" ref="437142657"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="581737406"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">20</int>
+ <reference key="object" ref="426312658"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="403080839"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">22</int>
+ <reference key="object" ref="582902776"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="540877530"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="826932166"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="1039988695"/>
+ <reference ref="666418199"/>
+ <reference ref="767227615"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">27</int>
+ <reference key="object" ref="1039988695"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">28</int>
+ <reference key="object" ref="1010937789"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">66</int>
+ <reference key="object" ref="938586919"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="630356720"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">68</int>
+ <reference key="object" ref="146897443"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">69</int>
+ <reference key="object" ref="469359029"/>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">70</int>
+ <reference key="object" ref="672462228"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="229928186"/>
+ <reference ref="984817245"/>
+ </array>
+ <reference key="parent" ref="640013893"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">71</int>
+ <reference key="object" ref="229928186"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="940943414"/>
+ </array>
+ <reference key="parent" ref="672462228"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">74</int>
+ <reference key="object" ref="940943414"/>
+ <reference key="parent" ref="229928186"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">72</int>
+ <reference key="object" ref="984817245"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="50036484"/>
+ </array>
+ <reference key="parent" ref="672462228"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">73</int>
+ <reference key="object" ref="50036484"/>
+ <reference key="parent" ref="984817245"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">77</int>
+ <reference key="object" ref="808585577"/>
+ <reference key="parent" ref="728377240"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">78</int>
+ <reference key="object" ref="765978048"/>
+ <reference key="parent" ref="321194065"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">79</int>
+ <reference key="object" ref="581737406"/>
+ <reference key="parent" ref="437142657"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">80</int>
+ <reference key="object" ref="403080839"/>
+ <reference key="parent" ref="426312658"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">81</int>
+ <reference key="object" ref="540877530"/>
+ <reference key="parent" ref="582902776"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">82</int>
+ <reference key="object" ref="630356720"/>
+ <reference key="parent" ref="938586919"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">83</int>
+ <reference key="object" ref="745203310"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">84</int>
+ <reference key="object" ref="218180457"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">85</int>
+ <reference key="object" ref="975309690"/>
+ <reference key="parent" ref="85174318"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">86</int>
+ <reference key="object" ref="666418199"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">87</int>
+ <reference key="object" ref="767227615"/>
+ <reference key="parent" ref="826932166"/>
+ </object>
+ </array>
+ </object>
+ <dictionary class="NSMutableDictionary" key="flattenedProperties">
+ <string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES" key="1.NSWindowTemplate.visibleAtLaunch"/>
+ <string key="10.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="12.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="13.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="14.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="15.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="16.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="18.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="20.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="22.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="5.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="66.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="68.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="69.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="70.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="71.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="73.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="74.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="77.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="78.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="79.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="80.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="81.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="82.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="83.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="84.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="85.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="86.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="87.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </dictionary>
+ <dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
+ <nil key="activeLocalization"/>
+ <dictionary class="NSMutableDictionary" key="localizations"/>
+ <nil key="sourceID"/>
+ <int key="maxID">87</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes"/>
+ <int key="IBDocument.localizationMode">0</int>
+ <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
+ <integer value="1050" key="NS.object.0"/>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
+ <integer value="4600" key="NS.object.0"/>
+ </object>
+ <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
+ <int key="IBDocument.defaultPropertyAccessControl">3</int>
+ <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
+ <string key="NS.key.0">NSSwitch</string>
+ <string key="NS.object.0">{15, 15}</string>
+ </object>
+ </data>
+</archive>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib
deleted file mode 100644
index 3fb1618..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/info.nib
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>IBFramework Version</key>
- <string>644</string>
- <key>IBLastKnownRelativeProjectPath</key>
- <string>../GTM.xcodeproj</string>
- <key>IBOldestOS</key>
- <integer>5</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>2</integer>
- </array>
- <key>IBSystem Version</key>
- <string>9C31</string>
- <key>targetFramework</key>
- <string>IBCocoaFramework</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib b/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
index d3104e2..8a771e8 100644
--- a/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
+++ b/UnitTesting/TestData/GTMUnitTestingTest.nib/keyedobjects.nib
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState b/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState
deleted file mode 100644
index 2f2ef56..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTestApp.10.6.gtmUTState
+++ /dev/null
@@ -1,2608 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>ApplicationMainWindow</key>
- <integer>0</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
- <key>MenuBar</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>About NewApplication</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Quit NewApplication</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>,</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Preferences…</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide NewApplication</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide Others</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show All</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>n</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>New</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>o</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open…</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>P</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Page Setup...</string>
- <key>MenuItemTooltip</key>
- <string></string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>p</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Print…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Clear Menu</string>
- </dict>
- <key>MenuTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <true/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close All</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>s</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>S</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save As…</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Revert to Saved</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Undo</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>Z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Redo</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>:</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>;</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 13</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 14</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Special Characters…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>x</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>c</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>v</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Delete</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>a</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Select All</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>f</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Find…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>g</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Find Next</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>G</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Find Previous</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>e</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>7</integer>
- <key>MenuItemTitle</key>
- <string>Use Selection for Find</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>j</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Jump to Selection</string>
- </dict>
- <key>MenuTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Item</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>C</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Toolbar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Customize Toolbar…</string>
- </dict>
- <key>MenuTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>?</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>NewApplication Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>AMainMenu</string>
- </dict>
- <key>Window 0</key>
- <dict>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <true/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState b/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState
deleted file mode 100644
index db045bf..0000000
--- a/UnitTesting/TestData/GTMUnitTestingTestApp.gtmUTState
+++ /dev/null
@@ -1,2204 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>ApplicationMainWindow</key>
- <integer>0</integer>
- <key>BoolTest</key>
- <true/>
- <key>BytesTest</key>
- <data>
- Qnl0ZXNUZXN0
- </data>
- <key>DoubleTest</key>
- <real>1</real>
- <key>FloatTest</key>
- <real>1</real>
- <key>Int32Test</key>
- <integer>1</integer>
- <key>Int64Test</key>
- <integer>1</integer>
- <key>IntTest</key>
- <integer>1</integer>
- <key>MenuBar</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>About NewApplication</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Quit NewApplication</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>,</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Preferences…</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Services</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide NewApplication</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>h</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Hide Others</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show All</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>n</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>New</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>o</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open…</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>P</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Page Setup...</string>
- <key>MenuItemTooltip</key>
- <string></string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>p</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Print…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Clear Menu</string>
- </dict>
- <key>MenuTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Open Recent</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <true/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>w</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Close All</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>s</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>S</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Save As…</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Revert to Saved</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>File</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Undo</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>Z</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Redo</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>:</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>;</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 13</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 14</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Special Characters…</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>x</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>c</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>v</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Delete</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>a</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Select All</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>f</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Find…</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>g</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Find Next</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>G</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>3</integer>
- <key>MenuItemTitle</key>
- <string>Find Previous</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>e</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>7</integer>
- <key>MenuItemTitle</key>
- <string>Use Selection for Find</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>j</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Jump to Selection</string>
- </dict>
- <key>MenuTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Find</string>
- </dict>
- <key>MenuTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Edit</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Item</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>C</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>¬Menu Title</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>t</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Toolbar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Customize Toolbar…</string>
- </dict>
- <key>MenuTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>View</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string>?</string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>NewApplication Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Help</string>
- </dict>
- <key>MenuTitle</key>
- <string>AMainMenu</string>
- </dict>
- <key>Window 0</key>
- <dict>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
- </dict>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff
deleted file mode 100644
index 3b7545b..0000000
--- a/UnitTesting/TestData/GTMUnitTestingView.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingView.tiff b/UnitTesting/TestData/GTMUnitTestingView.tiff
deleted file mode 100644
index 228df73..0000000
--- a/UnitTesting/TestData/GTMUnitTestingView.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.7.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff
deleted file mode 100644
index 9179576..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.5.8.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState b/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState
deleted file mode 100644
index 02ec00d..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.gtmUTState
+++ /dev/null
@@ -1,1308 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Correct Spelling Automatically</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Quotes</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Dashes</string>
- </dict>
- <key>MenuItem 10</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuItem 11</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Data Detectors</string>
- </dict>
- <key>MenuItem 12</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Text Replacement</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Add Links</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Replace Text</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Substitutions</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Dashes</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Upper Case</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Make Lower Case</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Capitalize</string>
- </dict>
- <key>MenuTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Transformations</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 9</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paragraph</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Selection</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string> Default</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string> Left to Right</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string> Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <true/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff
deleted file mode 100644
index 6a88f84..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.10.6.tiff
+++ /dev/null
Binary files differ
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState b/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState
deleted file mode 100644
index 8cba4c4..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.gtmUTState
+++ /dev/null
@@ -1,904 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>$GTMArchive</key>
- <string>GTMUnitTestingArchive</string>
- <key>$GTMVersion</key>
- <integer>1</integer>
- <key>WindowContent</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTableView</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>BoxBorderType</key>
- <integer>3</integer>
- <key>BoxTitle</key>
- <string>Box</string>
- <key>BoxTitlePosition</key>
- <integer>0</integer>
- <key>BoxType</key>
- <integer>2</integer>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 10</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewMenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Cut</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Copy</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Paste</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Fonts</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>2</integer>
- <key>MenuItemTitle</key>
- <string>Bold</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Italic</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Underline</string>
- </dict>
- <key>MenuItem 4</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Outline</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Styles…</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <false/>
- <key>MenuItemIsSeparator</key>
- <true/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string></string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Colors</string>
- </dict>
- <key>MenuTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Font</string>
- </dict>
- <key>MenuItem 5</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Show Spelling and Grammar</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Document Now</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Spelling While Typing</string>
- </dict>
- <key>MenuItem 3</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Check Grammar With Spelling</string>
- </dict>
- <key>MenuTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Spelling and Grammar</string>
- </dict>
- <key>MenuItem 6</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Copy/Paste</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Quotes</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Smart Links</string>
- </dict>
- <key>MenuTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Substitutions</string>
- </dict>
- <key>MenuItem 7</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Start Speaking</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Stop Speaking</string>
- </dict>
- <key>MenuTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Speech</string>
- </dict>
- <key>MenuItem 8</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemSubmenu</key>
- <dict>
- <key>MenuItem 0</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>-1</integer>
- <key>MenuItemTitle</key>
- <string>Default</string>
- </dict>
- <key>MenuItem 1</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Left to Right</string>
- </dict>
- <key>MenuItem 2</key>
- <dict>
- <key>MenuItemIndentationLevel</key>
- <integer>0</integer>
- <key>MenuItemIsAlternate</key>
- <false/>
- <key>MenuItemIsEnabled</key>
- <true/>
- <key>MenuItemIsSeparator</key>
- <false/>
- <key>MenuItemKeyEquivalent</key>
- <string></string>
- <key>MenuItemState</key>
- <integer>0</integer>
- <key>MenuItemTag</key>
- <integer>1</integer>
- <key>MenuItemTitle</key>
- <string>Right to Left</string>
- </dict>
- <key>MenuTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuItemTag</key>
- <integer>0</integer>
- <key>MenuItemTitle</key>
- <string>Writing Direction</string>
- </dict>
- <key>MenuTitle</key>
- <string>Menu</string>
- </dict>
- </dict>
- </dict>
- <key>ViewSubView 1</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <false/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSScroller</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 11</key>
- <dict>
- <key>TabItem 0</key>
- <dict>
- <key>TabLabel</key>
- <string>Tab</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>TabItem 1</key>
- <dict>
- <key>TabLabel</key>
- <string>View</string>
- <key>TabView</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewIsHidden</key>
- <false/>
- <key>ViewSubView 0</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>ViewSubView 2</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>HaHa</string>
- <key>CellValue</key>
- <string>HaHa</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>HaHa</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 3</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>CellValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSearchField</string>
- <key>ControlValue</key>
- <string>Still Haven't Found What I'm Searching For</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 4</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Once upon a time</string>
- <key>CellValue</key>
- <string>Once upon a time</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSTextField</string>
- <key>ControlValue</key>
- <string>Once upon a time</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 5</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>CheckMate!</string>
- <key>CellValue</key>
- <string>1</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>1</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 6</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>1</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string></string>
- <key>CellValue</key>
- <string>50</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSSlider</string>
- <key>ControlValue</key>
- <string>50</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 7</key>
- <dict>
- <key>ButtonAlternateTitle</key>
- <string></string>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlSelectedCell</key>
- <dict>
- <key>CellState</key>
- <integer>0</integer>
- <key>CellTag</key>
- <integer>0</integer>
- <key>CellTitle</key>
- <string>Cancel</string>
- <key>CellValue</key>
- <string>0</string>
- </dict>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSButton</string>
- <key>ControlValue</key>
- <string>0</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 8</key>
- <dict>
- <key>ControlIsEnabled</key>
- <true/>
- <key>ControlTag</key>
- <integer>0</integer>
- <key>ControlType</key>
- <string>NSColorWell</string>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- <key>ViewSubView 9</key>
- <dict>
- <key>ViewIsHidden</key>
- <false/>
- </dict>
- </dict>
- <key>WindowIsMain</key>
- <false/>
- <key>WindowIsVisible</key>
- <true/>
- <key>WindowTitle</key>
- <string>Window</string>
-</dict>
-</plist>
diff --git a/UnitTesting/TestData/GTMUnitTestingWindow.tiff b/UnitTesting/TestData/GTMUnitTestingWindow.tiff
deleted file mode 100644
index 63f5649..0000000
--- a/UnitTesting/TestData/GTMUnitTestingWindow.tiff
+++ /dev/null
Binary files differ