From d303e6e96ceedb47ddf5a45c3f8cbf3f709c3425 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Tue, 8 Mar 2011 17:39:59 -0500 Subject: [PATCH 01/38] Initial commit before testing. --- AppKit/CPFont.j | 187 +- AppKit/CPTabView.j | 8 + Tests/Manual/FontEnhancements/AppController.j | 32 + Tests/Manual/FontEnhancements/Info.plist | 10 + Tests/Manual/FontEnhancements/Jakefile | 94 + .../FontEnhancements/Resources/MainMenu.xib | 3148 +++++++++++++++++ .../FontEnhancements/Resources/spinner.gif | Bin 0 -> 1849 bytes .../Manual/FontEnhancements/index-debug.html | 103 + Tests/Manual/FontEnhancements/index.html | 77 + Tests/Manual/FontEnhancements/main.j | 18 + Tools/nib2cib/Converter+Mac.j | 22 +- Tools/nib2cib/Converter.j | 62 +- Tools/nib2cib/NSAppKit.j | 2 +- Tools/nib2cib/NSButton.j | 7 +- Tools/nib2cib/NSColor.j | 2 +- Tools/nib2cib/NSCustomResource.j | 4 +- Tools/nib2cib/NSFont.j | 49 +- Tools/nib2cib/NSIBObjectData.j | 2 +- Tools/nib2cib/NSMatrix.j | 1 + Tools/nib2cib/NSNibConnector.j | 8 +- Tools/nib2cib/NSTabView.j | 1 + Tools/nib2cib/NSTableColumn.j | 2 +- Tools/nib2cib/NSTextField.j | 2 +- Tools/nib2cib/NSView.j | 13 +- Tools/nib2cib/main.j | 299 +- 25 files changed, 4054 insertions(+), 99 deletions(-) create mode 100644 Tests/Manual/FontEnhancements/AppController.j create mode 100644 Tests/Manual/FontEnhancements/Info.plist create mode 100644 Tests/Manual/FontEnhancements/Jakefile create mode 100644 Tests/Manual/FontEnhancements/Resources/MainMenu.xib create mode 100644 Tests/Manual/FontEnhancements/Resources/spinner.gif create mode 100644 Tests/Manual/FontEnhancements/index-debug.html create mode 100644 Tests/Manual/FontEnhancements/index.html create mode 100644 Tests/Manual/FontEnhancements/main.j diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index 517ae1b28..f398508dd 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -26,13 +26,15 @@ @import "CPView.j" -var _CPFonts = {}, - _CPFontSystemFontFace = @"Arial, sans-serif", - _CPWrapRegExp = new RegExp("\\s*,\\s*", "g"); +var _CPFonts = {}, + _CPFontSystemFontFace = @"Arial", + _CPFontSystemFontSize = 12, + _CPFontFallbackFaces = [@"Arial", @"sans-serif"], + _CPFontStripRegExp = new RegExp("(^\\s*[\"']?|[\"']?\\s*$)", "g"), + _CPFontStripPropertiesRegExp = new RegExp("^(italic |bold )*\\d+px "); -#define _CPCreateCSSString(aName, aSize, isBold) (isBold ? @"bold " : @"") + ROUND(aSize) + @"px " + ((aName === _CPFontSystemFontFace) ? aName : (@"\"" + aName.replace(_CPWrapRegExp, '", "') + @"\", " + _CPFontSystemFontFace)) -#define _CPCachedFont(aName, aSize, isBold) _CPFonts[_CPCreateCSSString(aName, aSize, isBold)] +#define _CPCachedFont(aName, aSize, isBold, isItalic) _CPFonts[_CPFontCreateCSSString(aName, aSize, isBold, isItalic)] /*! @ingroup appkit @@ -47,78 +49,157 @@ var _CPFonts = {}, float _ascender; float _descender; float _lineHeight; - BOOL _isBold; + BOOL _isBold @accessors(readonly, getter=isBold); + BOOL _isItalic @accessors(readonly, getter=isItalic); CPString _cssString; } + (void)initialize { - var systemFont = [[CPBundle bundleForClass:[CPView class]] objectForInfoDictionaryKey:"CPSystemFontFace"]; + var systemFontFace = [[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPSystemFontFace"]; - if (systemFont) - _CPFontSystemFontFace = systemFont; + if (!systemFontFace) + systemFontFace = [[CPBundle bundleForClass:[CPView class]] objectForInfoDictionaryKey:@"CPSystemFontFace"]; + + if (systemFontFace) + _CPFontSystemFontFace = systemFontFace; + + var systemFontSize = [[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPSystemFontSize"]; + + if (!systemFontSize) + systemFontSize = [[CPBundle bundleForClass:[CPView class]] objectForInfoDictionaryKey:@"CPSystemFontSize"]; + + if (systemFontSize) + _CPFontSystemFontSize = systemFontSize; +} + +/*! + Returns the default system font face, which may consist of several comma-separated family names. +*/ ++ (CPString)systemFontFace +{ + return _CPFontSystemFontFace; +} + +/*! + Sets the default system font face, which may consist of several comma-separated family names. +*/ ++ (CPString)setSystemFontFace:(CPString)aFace +{ + + _CPFontSystemFontFace = aFace; +} + +/*! + Returns the default system font size. +*/ ++ (float)systemFontSize +{ + return _CPFontSystemFontSize; +} + +/*! + Sets the default system font size. +*/ ++ (float)setSystemFontSize:(float)size +{ + if (size > 0) + _CPFontSystemFontSize = size; } /*! Returns a font with the specified name and size. @param aName the name of the font - @param aSize the size of the font (in points) + @param aSize the size of the font (in px) @return the requested font */ + (CPFont)fontWithName:(CPString)aName size:(float)aSize { - return _CPCachedFont(aName, aSize, NO) || [[CPFont alloc] _initWithName:aName size:aSize bold:NO]; + return _CPCachedFont(aName, aSize, NO, NO) || [[CPFont alloc] _initWithName:aName size:aSize bold:NO italic:NO]; +} + +/*! + Returns a font with the specified name, size and style. + @param aName the name of the font + @param aSize the size of the font (in px) + @param italic whether the font should be italicized + @return the requested font +*/ ++ (CPFont)fontWithName:(CPString)aName size:(float)aSize italic:(BOOL)italic +{ + return _CPCachedFont(aName, aSize, NO, NO) || [[CPFont alloc] _initWithName:aName size:aSize bold:NO italic:italic]; } /*! Returns a bold font with the specified name and size. @param aName the name of the font - @param aSize the size of the font (in points) + @param aSize the size of the font (in px) @return the requested bold font */ + (CPFont)boldFontWithName:(CPString)aName size:(float)aSize { - return _CPCachedFont(aName, aSize, YES) || [[CPFont alloc] _initWithName:aName size:aSize bold:YES]; + return _CPCachedFont(aName, aSize, YES, NO) || [[CPFont alloc] _initWithName:aName size:aSize bold:YES italic:NO]; +} + +/*! + Returns a bold font with the specified name, size and style. + @param aName the name of the font + @param aSize the size of the font (in px) + @param italic whether the font should be italicized + @return the requested font +*/ ++ (CPFont)boldFontWithName:(CPString)aName size:(float)aSize italic:(BOOL)italic +{ + return _CPCachedFont(aName, aSize, NO, NO) || [[CPFont alloc] _initWithName:aName size:aSize bold:YES italic:italic]; } /*! Returns the system font scaled to the specified size - @param aSize the size of the font (in points) + @param aSize the size of the font (in px) @return the requested system font */ + (CPFont)systemFontOfSize:(CPSize)aSize { - return _CPCachedFont(_CPFontSystemFontFace, aSize, NO) || [[CPFont alloc] _initWithName:_CPFontSystemFontFace size:aSize bold:NO]; + return _CPCachedFont(_CPFontSystemFontFace, aSize, NO, NO) || [[CPFont alloc] _initWithName:_CPFontSystemFontFace size:aSize bold:NO italic:NO]; } /*! Returns the bold system font scaled to the specified size - @param aSize the size of the font (in points) + @param aSize the size of the font (in px) @return the requested bold system font */ + (CPFont)boldSystemFontOfSize:(CPSize)aSize { - return _CPCachedFont(_CPFontSystemFontFace, aSize, YES) || [[CPFont alloc] _initWithName:_CPFontSystemFontFace size:aSize bold:YES]; + return _CPCachedFont(_CPFontSystemFontFace, aSize, YES, NO) || [[CPFont alloc] _initWithName:_CPFontSystemFontFace size:aSize bold:YES italic:NO]; } /* FIXME Font Descriptor @ignore */ - (id)_initWithName:(CPString)aName size:(float)aSize bold:(BOOL)isBold +{ + return [self _initWithName:aName size:aSize bold:isBold italic:NO]; +} + +- (id)_initWithName:(CPString)aName size:(float)aSize bold:(BOOL)isBold italic:(BOOL)isItalic { self = [super init]; if (self) { - _name = aName; + // Normalize all of the names + var names = _CPFontNormalizedNames(aName); + + _name = names[0]; _size = aSize; _ascender = 0; _descender = 0; _lineHeight = 0; _isBold = isBold; + _isItalic = isItalic; - _cssString = _CPCreateCSSString(_name, _size, _isBold); + _cssString = _CPFontCreateCSSString(names, _size, _isBold, _isItalic); _CPFonts[_cssString] = self; } @@ -139,7 +220,7 @@ var _CPFonts = {}, /*! Returns the bottom y coordinate (in CSS px), offset from the baseline, of the receiver's longest descender. - Thus, if the longest descender extends 2 points below the baseline, descender will return –2. + Thus, if the longest descender extends 2 px below the baseline, descender will return –2. */ - (float)descender { @@ -188,12 +269,17 @@ var _CPFonts = {}, - (BOOL)isEqual:(id)anObject { - return [anObject isKindOfClass:[CPFont class]] && [anObject cssString] === [self cssString]; + return [anObject isKindOfClass:[CPFont class]] && [anObject cssString] === _cssString; } - (CPString)description { - return [CPString stringWithFormat:@"%@ %@ %f pt.", [super description], [self familyName], [self size]]; + return [CPString stringWithFormat:@"%@ %@", [super description], [self cssString]]; +} + +- (id)copy +{ + return [[CPFont alloc] _initWithName:_name size:_size bold:_isBold italic:_isItalic]; } - (void)_getMetrics @@ -207,9 +293,10 @@ var _CPFonts = {}, @end -var CPFontNameKey = @"CPFontNameKey", - CPFontSizeKey = @"CPFontSizeKey", - CPFontIsBoldKey = @"CPFontIsBoldKey"; +var CPFontNameKey = @"CPFontNameKey", + CPFontSizeKey = @"CPFontSizeKey", + CPFontIsBoldKey = @"CPFontIsBoldKey", + CPFontIsItalicKey = @"CPFontIsItalicKey"; @implementation CPFont (CPCoding) @@ -220,9 +307,12 @@ var CPFontNameKey = @"CPFontNameKey", */ - (id)initWithCoder:(CPCoder)aCoder { - return [self _initWithName:[aCoder decodeObjectForKey:CPFontNameKey] - size:[aCoder decodeFloatForKey:CPFontSizeKey] - bold:[aCoder decodeBoolForKey:CPFontIsBoldKey]]; + var fontName = [aCoder decodeObjectForKey:CPFontNameKey], + size = [aCoder decodeFloatForKey:CPFontSizeKey], + isBold = [aCoder decodeBoolForKey:CPFontIsBoldKey], + isItalic = [aCoder decodeBoolForKey:CPFontIsItalicKey]; + + return [self _initWithName:fontName size:size bold:isBold italic:isItalic]; } /*! @@ -231,9 +321,48 @@ var CPFontNameKey = @"CPFontNameKey", */ - (void)encodeWithCoder:(CPCoder)aCoder { - [aCoder encodeObject:_name forKey:CPFontNameKey]; + var name = _cssString.replace(_CPFontStripPropertiesRegExp, ""); + + [aCoder encodeObject:name forKey:CPFontNameKey]; [aCoder encodeFloat:_size forKey:CPFontSizeKey]; [aCoder encodeBool:_isBold forKey:CPFontIsBoldKey]; + [aCoder encodeBool:_isItalic forKey:CPFontIsItalicKey]; } @end + + +var _CPFontCreateCSSString = function(aName, aSize, isBold, isItalic) +{ + // aName might be a string or an array of preprocessed names + var names = typeof(aName) === "string" ? _CPFontNormalizedNames(aName) : aName, + properties = (isItalic ? "italic " : "") + (isBold ? "bold " : "") + aSize + "px ", + fallbackFaces = _CPFontFallbackFaces.slice(0); + + // Remove the standard fallback names from the names passed in + for (var i = 0; i < fallbackFaces.length; ) + { + for (var j = 0; j < names.length; ++j) + { + if (fallbackFaces[i].toLowerCase() === names[j].toLowerCase()) + { + fallbackFaces.splice(i, 1); + continue; + } + } + + ++i; + } + + return properties + '"' + names.concat(fallbackFaces).join("\", \"") + '"'; +}; + +var _CPFontNormalizedNames = function(aName) +{ + var names = aName.split(","); + + for (var i = 0; i < names.length; ++i) + names[i] = names[i].replace(_CPFontStripRegExp, ""); + + return names; +}; diff --git a/AppKit/CPTabView.j b/AppKit/CPTabView.j index 7ed7b2af6..c48defb31 100644 --- a/AppKit/CPTabView.j +++ b/AppKit/CPTabView.j @@ -26,6 +26,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1, CPNumber _selectedIndex; CPTabViewType _type; + CPFont _font; id _delegate; unsigned _delegateSelectors; @@ -415,6 +416,7 @@ var CPTabViewDidSelectTabViewItemSelector = 1, var CPTabViewItemsKey = "CPTabViewItemsKey", CPTabViewSelectedItemKey = "CPTabViewSelectedItemKey", CPTabViewTypeKey = "CPTabViewTypeKey", + CPTabViewFontKey = "CPTabViewFontKey", CPTabViewDelegateKey = "CPTabViewDelegateKey"; @implementation CPTabView (CPCoding) @@ -425,18 +427,23 @@ var CPTabViewItemsKey = "CPTabViewItemsKey", { [self _init]; + _font = [aCoder decodeObjectForKey:CPTabViewFontKey]; + [_tabs setFont:_font]; + _items = [aCoder decodeObjectForKey:CPTabViewItemsKey]; [self _updateItems]; [self _repositionTabs]; var selected = [aCoder decodeObjectForKey:CPTabViewSelectedItemKey]; + if (selected) [self selectTabViewItem:selected]; [self setDelegate:[aCoder decodeObjectForKey:CPTabViewDelegateKey]]; [self setTabViewType:[aCoder decodeIntForKey:CPTabViewTypeKey]]; + } return self; @@ -450,6 +457,7 @@ var CPTabViewItemsKey = "CPTabViewItemsKey", [aCoder encodeObject:[self selectedTabViewItem] forKey:CPTabViewSelectedItemKey]; [aCoder encodeInt:_type forKey:CPTabViewTypeKey]; + [aCoder encodeObject:_font forKey:CPTabViewFontKey]; [aCoder encodeConditionalObject:_delegate forKey:CPTabViewDelegateKey]; } diff --git a/Tests/Manual/FontEnhancements/AppController.j b/Tests/Manual/FontEnhancements/AppController.j new file mode 100644 index 000000000..21fd6492d --- /dev/null +++ b/Tests/Manual/FontEnhancements/AppController.j @@ -0,0 +1,32 @@ +/* + * AppController.j + * FontEnhancements + * + * Created by aparajita on March 8, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; +} + +@end diff --git a/Tests/Manual/FontEnhancements/Info.plist b/Tests/Manual/FontEnhancements/Info.plist new file mode 100644 index 000000000..d4176fb32 --- /dev/null +++ b/Tests/Manual/FontEnhancements/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + FontEnhancements + + diff --git a/Tests/Manual/FontEnhancements/Jakefile b/Tests/Manual/FontEnhancements/Jakefile new file mode 100644 index 000000000..3587748f5 --- /dev/null +++ b/Tests/Manual/FontEnhancements/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * FontEnhancements + * + * Created by aparajita on March 8, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("FontEnhancements", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "FontEnhancements.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("FontEnhancements"); + task.setIdentifier("com.aparajitaworld.FontEnhancements"); + task.setVersion("1.0"); + task.setAuthor("Victory-Heart Productions"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("FontEnhancements"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["FontEnhancements"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "FontEnhancements", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "FontEnhancements", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "FontEnhancements")); + OS.system(["press", "-f", FILE.join("Build", "Release", "FontEnhancements"), FILE.join("Build", "Deployment", "FontEnhancements")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "FontEnhancements")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "FontEnhancements"), FILE.join("Build", "Desktop", "FontEnhancements", "FontEnhancements.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "FontEnhancements", "FontEnhancements.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "FontEnhancements")); + print("----------------------------"); +} diff --git a/Tests/Manual/FontEnhancements/Resources/MainMenu.xib b/Tests/Manual/FontEnhancements/Resources/MainMenu.xib new file mode 100644 index 000000000..e9ae190c4 --- /dev/null +++ b/Tests/Manual/FontEnhancements/Resources/MainMenu.xib @@ -0,0 +1,3148 @@ + + + + 1050 + 9G55 + 677 + 949.43 + 353.00 + + YES + + + + YES + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + UHJlZmVyZW5jZXPigKY + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + T3BlbuKApg + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + U2F2ZSBBc+KApg + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + UHJpbnTigKY + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + RmluZOKApg + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + U2hvdyBTcGVsbGluZ+KApg + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Q3VzdG9taXplIFRvb2xiYXLigKY + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 7 + 2 + {{335, 390}, {480, 360}} + 1946157056 + Window + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 256 + + YES + + + 301 + {{192, 143}, {96, 21}} + + YES + + -2080244224 + 0 + + + Helvetica + 1.200000e+01 + 16 + + + 1.000000e+02 + 0.000000e+00 + 5.000000e+01 + 0.000000e+00 + 0 + 1 + NO + NO + + + + + 301 + {{192, 191}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 1.300000e+01 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + {480, 360} + + + {{0, 0}, {1440, 878}} + {3.40282e+38, 3.40282e+38} + + + AppController + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 451 + + + + takeDoubleValueFrom: + + + + 458 + + + + theWindow + + + + 459 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 452 + + + YES + + + + + + 453 + + + + + 456 + + + YES + + + + + + 457 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 371.IBEditorWindowLastContentRect + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 456.IBPluginDependency + 457.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilderKit + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{143, 285}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{303, 221}, {480, 360}} + {{303, 221}, {480, 360}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{437, 242}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 102}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 459 + + + + YES + + AppController + + theWindow + NSWindow + + + IBUserSource + + + + + + 0 + ../adsfsdf.xcodeproj + 3 + + diff --git a/Tests/Manual/FontEnhancements/Resources/spinner.gif b/Tests/Manual/FontEnhancements/Resources/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..06dbc2bc21dddcf0e09b566d5b211aee89570f52 GIT binary patch literal 1849 zcma*odr(tX9tZHtz31lM+(&Y`A`Ou`NeG&R#DrIfV%?hng21vs6v>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% literal 0 HcmV?d00001 diff --git a/Tests/Manual/FontEnhancements/index-debug.html b/Tests/Manual/FontEnhancements/index-debug.html new file mode 100644 index 000000000..6c54166f5 --- /dev/null +++ b/Tests/Manual/FontEnhancements/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + FontEnhancements + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/FontEnhancements/index.html b/Tests/Manual/FontEnhancements/index.html new file mode 100644 index 000000000..ed9c90214 --- /dev/null +++ b/Tests/Manual/FontEnhancements/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + FontEnhancements + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/FontEnhancements/main.j b/Tests/Manual/FontEnhancements/main.j new file mode 100644 index 000000000..0f1d27072 --- /dev/null +++ b/Tests/Manual/FontEnhancements/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * FontEnhancements + * + * Created by aparajita on March 8, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tools/nib2cib/Converter+Mac.j b/Tools/nib2cib/Converter+Mac.j index ccf3d71c2..d820b8f67 100644 --- a/Tools/nib2cib/Converter+Mac.j +++ b/Tools/nib2cib/Converter+Mac.j @@ -32,7 +32,7 @@ var unarchiver = [[Nib2CibKeyedUnarchiver alloc] initForReadingWithData:data resourcesPath:aResourcesPath], objectData = [unarchiver decodeObjectForKey:@"IB.objectdata"]; - // Perform a bit of post-processing on views since all CP views are flipped. + // Perform a bit of post-processing on fonts and views since all CP views are flipped. // It's better to do this here (instead of say, in NSView::initWithCoder:), // because at this point all the objects an mappings are stabilized. var objects = [unarchiver allObjects], @@ -42,6 +42,26 @@ { var object = objects[count]; + if ([object respondsToSelector:@selector(font)] && + [object respondsToSelector:@selector(setFont:)] && + [object font] != nil) + { + var nibFont = [object font], + cibFont = nil; + + if ([object respondsToSelector:@selector(cibFontForNibFont)]) + cibFont = [object cibFontForNibFont]; + else + cibFont = [NSFont cibFontForNibFont:[object font]]; + + if (![cibFont isEqual:nibFont]) + { + [object setFont:cibFont]; + + CPLog.debug("%s: substituted <%s> for <%fpx %s>", [object className], cibFont ? [cibFont cssString] : "theme default", [nibFont size], [nibFont familyName]); + } + } + if (![object isKindOfClass:[CPView class]]) continue; diff --git a/Tools/nib2cib/Converter.j b/Tools/nib2cib/Converter.j index edf1780de..1e9f3fd6c 100644 --- a/Tools/nib2cib/Converter.j +++ b/Tools/nib2cib/Converter.j @@ -18,35 +18,55 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ +*/ -@import -@import +@import +@import +@import var FILE = require("file"), - OS = require("os"); + OS = require("os"), + SharedConverter = nil; -NibFormatUndetermined = 0, -NibFormatMac = 1, -NibFormatIPhone = 2; +NibFormatUndetermined = 0, +NibFormatMac = 1, +NibFormatIPhone = 2; -ConverterConversionException = @"ConverterConversionException"; +ConverterModeLegacy = 0; +ConverterModeNew = 1; + +ConverterConversionException = @"ConverterConversionException"; @implementation Converter : CPObject { - NibFormat format @accessors; - CPString inputPath @accessors; - CPString outputPath @accessors; - CPString resourcesPath @accessors; + CPString inputPath @accessors(readonly); + CPString outputPath @accessors; + CPString resourcesPath @accessors; + ConverterLayoutMode layoutMode @accessors(readonly); + NibFormat format @accessors(readonly); + CPTheme theme @accessors(readonly); } -- (id)init ++ (Converter)sharedConverter +{ + if (!SharedConverter) + SharedConverter = [[Converter alloc] init]; + + return SharedConverter; +} + +- (id)initWithInputPath:(CPString)aPath format:(NibFormat)nibFormat layoutMode:(ConverterLayoutMode)aLayoutMode theme:(CPTheme)aTheme { self = [super init]; if (self) - [self setFormat:NibFormatUndetermined]; + { + inputPath = aPath; + format = nibFormat; + layoutMode = aLayoutMode; + theme = aTheme; + } return self; } @@ -87,8 +107,9 @@ ConverterConversionException = @"ConverterConversionException"; outputPath = inputPath.substr(0, inputPath.length - FILE.extension(inputPath).length) + ".cib"; FILE.write(outputPath, [convertedData rawString], { charset:"UTF-8" }); + CPLog.info("Conversion successful"); } - catch(anException) + catch (anException) { CPLog.fatal(anException); } @@ -96,17 +117,19 @@ ConverterConversionException = @"ConverterConversionException"; - (CPData)CPCompliantNibDataAtFilePath:(CPString)aFilePath { + CPLog.info("Converting Xib file to plist..."); + // Compile xib or nib to make sure we have a non-new format nib. var temporaryNibFilePath = FILE.join("/tmp", FILE.basename(aFilePath) + ".tmp.nib"); if (OS.popen(["/usr/bin/ibtool", aFilePath, "--compile", temporaryNibFilePath]).wait() === 1) - throw "Could not compile file at " + aFilePath; + throw "Could not compile file: " + aFilePath; // Convert from binary plist to XML plist var temporaryPlistFilePath = FILE.join("/tmp", FILE.basename(aFilePath) + ".tmp.plist"); if (OS.popen(["/usr/bin/plutil", "-convert", "xml1", temporaryNibFilePath, "-o", temporaryPlistFilePath]).wait() === 1) - throw "Could not convert to xml plist for file at " + aFilePath; + throw "Could not convert to xml plist for file: " + aFilePath; if (!FILE.isReadable(temporaryPlistFilePath)) [CPException raise:ConverterConversionException reason:@"Unable to convert nib file."]; @@ -121,8 +144,9 @@ ConverterConversionException = @"ConverterConversionException"; else plistContents = plistContents.replace(/\\s*CF\$UID\s*\<\/key\>/g, "CP$UID"); - plistContents = plistContents.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]<\/string>/g, function(c) { - CPLog.warn("Warning: Converting character 0x"+c.charCodeAt(8).toString(16)+" to base64 representation"); + plistContents = plistContents.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]<\/string>/g, function(c) + { + CPLog.warn("Warning: converting character 0x" + c.charCodeAt(8).toString(16) + " to base64 representation"); return ""+CFData.encodeBase64String(c.charAt(8))+""; }); diff --git a/Tools/nib2cib/NSAppKit.j b/Tools/nib2cib/NSAppKit.j index 1d9b3aa28..1003a954e 100644 --- a/Tools/nib2cib/NSAppKit.j +++ b/Tools/nib2cib/NSAppKit.j @@ -83,7 +83,7 @@ function CP_NSMapClassName(aClassName) if (CPClassFromString(mappedClassName)) { - CPLog.info("Mapping " + aClassName + " to " + mappedClassName); + CPLog.debug("NSAppKit: mapping " + aClassName + " to " + mappedClassName); return mappedClassName; } diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index d2958aab0..542a4b3b8 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -32,6 +32,7 @@ var _CPButtonBezelStyleHeights = {}; + _CPButtonBezelStyleHeights[CPRoundedBezelStyle] = 18; _CPButtonBezelStyleHeights[CPTexturedRoundedBezelStyle] = 20; _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20; @@ -100,18 +101,18 @@ var NSButtonIsBorderedMask = 0x00800000, case CPHelpButtonBezelStyle: case CPCircularBezelStyle: case CPDisclosureBezelStyle: - CPLog.warn("Unsupported bezel style: " + _bezelStyle); + CPLog.warn("NSButton [%s]: unsupported bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); _bezelStyle = CPHUDBezelStyle; break; // error: default: - CPLog.error("Unknown bezel style: " + _bezelStyle); + CPLog.warn("NSButton [%s]: unknown bezel style: %d", _title == null ? "" : '"' + _title + '"', _bezelStyle); _bezelStyle = CPHUDBezelStyle; } if ([cell isBordered]) { - CPLog.info("Adjusting CPButton height from " +_frame.size.height+ " / " + _bounds.size.height+" to " + CPButtonDefaultHeight); + CPLog.debug("NSButton [%s]: adjusting height from %d to %d", _title == null ? "" : '"' + _title + '"', _frame.size.height, CPButtonDefaultHeight); _frame.size.height = CPButtonDefaultHeight; _frame.origin.y += 4.0; _bounds.size.height = CPButtonDefaultHeight; diff --git a/Tools/nib2cib/NSColor.j b/Tools/nib2cib/NSColor.j index fb71f241a..1023d96d0 100644 --- a/Tools/nib2cib/NSColor.j +++ b/Tools/nib2cib/NSColor.j @@ -119,7 +119,7 @@ var NSUnknownColorSpaceModel = -1, } break; default: - CPLog(@"-[%@ %s] unknown color space %d", isa, _cmd, colorSpace); + CPLog.warn(@"-[%@ %s] unknown color space %d", isa, _cmd, colorSpace); result = [CPColor blackColor]; break; } diff --git a/Tools/nib2cib/NSCustomResource.j b/Tools/nib2cib/NSCustomResource.j index 3a108ac0c..46afc017c 100644 --- a/Tools/nib2cib/NSCustomResource.j +++ b/Tools/nib2cib/NSCustomResource.j @@ -41,13 +41,13 @@ var FILE = require("file"); var size = CGSizeMakeZero(); if (![[aCoder resourcesPath] length]) - CPLog.warn("*** WARNING: Resources found in nib, but no resources path specified with -R option."); + CPLog.warn("Resources found in nib, but no resources path specified with -R option."); else { var resourcePath = [aCoder resourcePathForName:_resourceName]; if (!resourcePath) - CPLog.warn("*** WARNING: Resource named " + _resourceName + " not found in supplied resources path."); + CPLog.warn("Resource named " + _resourceName + " not found in the supplied resources path."); else size = imageSize(FILE.join(FILE.cwd(), resourcePath)); diff --git a/Tools/nib2cib/NSFont.j b/Tools/nib2cib/NSFont.j index a08990d11..93433eecf 100644 --- a/Tools/nib2cib/NSFont.j +++ b/Tools/nib2cib/NSFont.j @@ -22,35 +22,56 @@ @import +var OS = require("os"), + fontinfo = require("fontinfo").fontinfo; + +var IBDefaultFontFace = @"Lucida Grande", + IBDefaultFontSize = 13.0; @implementation CPFont (NSCoding) - (id)NS_initWithCoder:(CPCoder)aCoder { - var isBold = NO, - fontName = [aCoder decodeObjectForKey:@"NSName"], - size = [aCoder decodeDoubleForKey:@"NSSize"]; + var name = [aCoder decodeObjectForKey:@"NSName"], + size = [aCoder decodeDoubleForKey:@"NSSize"], + isBold = false, + isItalic = false, + info = fontinfo(name, size); - if (fontName === "LucidaGrande" && size === 13) + if (info) { - CPLog.debug("Removing default IB font: <"+fontName+", "+size+"> for theme default font."); - return nil; + name = info.familyName; + isBold = info.bold; + isItalic = info.italic; } - // FIXME: Is this alwasy true? - if (fontName.indexOf("-Bold") === fontName.length - "-Bold".length) - isBold = YES; - - if (fontName === "LucidaGrande" || fontName === "LucidaGrande-Bold") - fontName = "Arial"; - - return [self _initWithName:fontName size:size bold:isBold]; + return [self _initWithName:name size:size bold:isBold italic:isItalic]; } @end @implementation NSFont : CPFont + ++ (void)initialize { + CPLog.debug("NSFont: default IB font: %s %f", IBDefaultFontFace, IBDefaultFontSize); +} + ++ (id)cibFontForNibFont:(CPFont)aFont +{ + var name = [aFont familyName]; + + if (name === IBDefaultFontFace) + { + var size = [aFont size]; + + if (size === IBDefaultFontSize) + return nil; + else + return [[CPFont alloc] _initWithName:[CPFont systemFontFace] size:size bold:[aFont isBold] italic:[aFont isItalic]]; + } + + return [aFont copy]; } - (id)initWithCoder:(CPCoder)aCoder diff --git a/Tools/nib2cib/NSIBObjectData.j b/Tools/nib2cib/NSIBObjectData.j index 6ac46a872..94c2c7025 100644 --- a/Tools/nib2cib/NSIBObjectData.j +++ b/Tools/nib2cib/NSIBObjectData.j @@ -127,7 +127,7 @@ children.forEach(function(aChild) { - CPLog.info("Promoted " + aChild + " to child of " + parent); + CPLog.debug("NSIBObjectData: promoted " + aChild + " to child of " + parent); _objectsKeys.push(aChild); _objectsValues.push(parent); }); diff --git a/Tools/nib2cib/NSMatrix.j b/Tools/nib2cib/NSMatrix.j index 100c66277..2ec0a0ef5 100644 --- a/Tools/nib2cib/NSMatrix.j +++ b/Tools/nib2cib/NSMatrix.j @@ -45,6 +45,7 @@ var NSMatrixRadioModeMask = 0x40000000, [cellView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; [cellView setTitle:[cell title]]; [cellView setBackgroundColor:[CPColor clearColor]]; // the IB default + [cellView setFont:[cell font]]; [cellView setObjectValue:[cell objectValue]]; [view addSubview:cellView]; diff --git a/Tools/nib2cib/NSNibConnector.j b/Tools/nib2cib/NSNibConnector.j index 67aca8c7f..04bb9c7ee 100644 --- a/Tools/nib2cib/NSNibConnector.j +++ b/Tools/nib2cib/NSNibConnector.j @@ -43,17 +43,17 @@ NIB_CONNECTION_EQUIVALENCY_TABLE = {}; if (sourceUID in NIB_CONNECTION_EQUIVALENCY_TABLE) { - CPLog.trace("Swapped object: "+_source+" for object: "+NIB_CONNECTION_EQUIVALENCY_TABLE[sourceUID]); + CPLog.debug("NSNibConnector: swapped object: " + _source + " for object: " + NIB_CONNECTION_EQUIVALENCY_TABLE[sourceUID]); _source = NIB_CONNECTION_EQUIVALENCY_TABLE[sourceUID]; } if (destinationUID in NIB_CONNECTION_EQUIVALENCY_TABLE) { - CPLog.trace("Swapped object: "+_destination+" for object: "+NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID]); + CPLog.debug("NSNibConnector: swapped object: " + _destination + " for object: " + NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID]); _destination = NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID]; } - CPLog.debug(@"Connection: " + [_source description] + " " + [_destination description] + " " + _label); + CPLog.debug(@"NSNibConnector: connection: " + [_source description] + " " + [_destination description] + " " + _label); } return self; @@ -144,7 +144,7 @@ var NSTramsformers = [CPSet setWithObjects: [_options setObject:NSValue forKey:CPKey]; } - CPLog.debug(@"Binding Connector: " + [_binding description] + " to: " + _destination + " " + [_keyPath description] + " " + [_options description]); + CPLog.debug(@"NSNibConnector: binding connector: " + [_binding description] + " to: " + _destination + " " + [_keyPath description] + " " + [_options description]); } return self; diff --git a/Tools/nib2cib/NSTabView.j b/Tools/nib2cib/NSTabView.j index d47b61cd1..920cee8f9 100644 --- a/Tools/nib2cib/NSTabView.j +++ b/Tools/nib2cib/NSTabView.j @@ -37,6 +37,7 @@ _items = [aCoder decodeObjectForKey:@"NSTabViewItems"]; _selectedIndex = [_items indexOfObject:[aCoder decodeObjectForKey:@"NSSelectedTabViewItem"]]; + _font = [aCoder decodeObjectForKey:@"NSFont"]; //_delegate = [aCoder decodeObjectForKey:@""]; diff --git a/Tools/nib2cib/NSTableColumn.j b/Tools/nib2cib/NSTableColumn.j index 7791446a6..b935d22dc 100644 --- a/Tools/nib2cib/NSTableColumn.j +++ b/Tools/nib2cib/NSTableColumn.j @@ -50,7 +50,7 @@ selectedFont = nil; if (!font) - font = [CPFont systemFontOfSize:12.0]; + font = [CPFont systemFontOfSize:[CPFont systemFontSize]]; var selectedFont = [CPFont boldFontWithName:[font familyName] size:[font size]]; diff --git a/Tools/nib2cib/NSTextField.j b/Tools/nib2cib/NSTextField.j index d4dea04fa..732ddf429 100644 --- a/Tools/nib2cib/NSTextField.j +++ b/Tools/nib2cib/NSTextField.j @@ -72,7 +72,7 @@ [self setFrameSize:CGSizeMake(frame.size.width + 7.0, frame.size.height + 7.0)]; } - CPLog.debug([self stringValue] + " => isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle] + "("+[cell stringValue]+", " + [cell placeholderString] + ")"); + CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]); } return self; diff --git a/Tools/nib2cib/NSView.j b/Tools/nib2cib/NSView.j index da27b7dce..7adaef735 100644 --- a/Tools/nib2cib/NSView.j +++ b/Tools/nib2cib/NSView.j @@ -30,6 +30,17 @@ var NSViewAutoresizingMask = 0x3F, NSViewAutoresizesSubviewsMask = 1 << 8, NSViewHiddenMask = 1 << 31; +NSViewAlignLayoutMinValue = 1000; +NSViewAlignLayoutBaselineLeft = 1000; +NSViewAlignLayoutTopLeft = 2000; +NSViewAlignLayoutTop = 3000; +NSViewAlignLayoutTopRight = 4000; +NSViewAlignLayoutBaselineRight = 5000; +NSViewAlignLayoutBottomRight = 6000; +NSViewAlignLayoutBottom = 7000; +NSViewAlignLayoutBottomLeft = 8000; +NSViewAlignLayoutMaxValue = 8000; + @implementation CPView (NSCoding) - (id)NS_initWithCoder:(CPCoder)aCoder @@ -84,8 +95,6 @@ var NSViewAutoresizingMask = 0x3F, @end @implementation NSView : CPView -{ -} - (id)initWithCoder:(CPCoder)aCoder { diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index 96cdc83c2..c58958533 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -18,11 +18,11 @@ * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ +*/ @import - -@import +@import +@import @import "NSFoundation.j" @import "NSAppKit.j" @@ -30,8 +30,12 @@ @import "Nib2CibKeyedUnarchiver.j" @import "Converter.j" -var FILE = require("file"); -var OS = require("os"); +var FILE = require("file"), + OS = require("os"), + SYS = require("system"), + + DefaultTheme = "Aristo", + BuildTypes = ["Debug", "Release"]; var parser = new (require("narwhal/args").Parser)(); @@ -50,6 +54,19 @@ parser.option("--mac", "format") .def(NibFormatUndetermined) .help("Set format to Mac"); +parser.option("--legacy", "conversionMode") + .set(ConverterModeLegacy) + .def(ConverterModeNew) + .help("Use legacy code that does not preserve view positioning/sizing"); + +parser.option("-t", "--theme-dir", "themeDir") + .set() + .help("A .build directory to use for theme attribute values"); + +parser.option("--config", "configFile") + .set() + .help("A path to an Info.plist file from which the system font and/or size can be retrieved"); + // parser.option("--iphone", "format") // .set(NibFormatIPhone) // .help("Set format to iPhone"); @@ -62,6 +79,10 @@ parser.option("-q", "--quiet", "quiet") .set(true) .help("No output"); +parser.option("--version", "showVersion") + .set(true) + .help("Show the version of nib2cib and quit"); + parser.helpful(); function loadFrameworks(frameworkPaths, aCallback) @@ -83,39 +104,76 @@ function loadFrameworks(frameworkPaths, aCallback) aCallback(); } +function logFormatter(aString, aLevel, aTitle) +{ + return CPLogColorize(aString, aLevel); +} + function main(args) { var options = parser.parse(args, null, null, true); - if (options.args.length < 1 || options.args.length > 2) + if (options.args.length > 2) { parser.printUsage(options); - OS.exit(1); + OS.exit(0); } if (options.quiet) {} else if (options.verbose === 0) - CPLogRegister(CPLogPrint, "warn"); + CPLogRegister(CPLogPrint, "warn", logFormatter); else if (options.verbose === 1) - CPLogRegister(CPLogPrint, "info"); + CPLogRegister(CPLogPrint, "info", logFormatter); else - CPLogRegister(CPLogPrint); + CPLogRegister(CPLogPrint, null, logFormatter); - CPLog.debug("Input: " + options.args[0]); - CPLog.debug("Output: " + (options.args[1] || "")); - CPLog.debug("Format: " + ["Auto","Mac","iPhone"][options.format]); - CPLog.debug("Resources: " + (options.resources || "")); - CPLog.debug("Frameworks: " + options.frameworks); + printVersion(); - var converter = [[Converter alloc] init]; + if (options.showVersion) + OS.exit(0); + + var inputFile = options.args[0]; + + if (!FILE.exists(inputFile)) + fail("No such file: " + FILE.canonical(inputFile)); + + if (options.layoutMode === ConverterModeNew && !haveFontInfo()) + fail("The fontinfo package is not installed, please install it."); + + var configPath = setSystemFontAndSize(options.configFile || "", inputFile), + themeName = "", + themeDir = options.themeDir || ""; + + if (themeDir) + themeName = FILE.basename(themeDir, FILE.extension(themeDir)); + + themeName = themeName || getDefaultThemeName(); + + if (!themeName) + fail("Could not determine the theme name."); + + var theme = loadTheme(themeName, themeDir); + + CPLog.info("\n-------------------------------------------------------------"); + CPLog.info("Input : " + FILE.canonical(inputFile)); + CPLog.info("Output : " + (options.args[1] || "")); + CPLog.info("Format : " + ["Auto", "Mac", "iPhone"][options.format]); + CPLog.info("Resources : " + (options.resources || "")); + CPLog.info("Frameworks : " + options.frameworks); + CPLog.info("Layout Mode : " + (options.layoutMode === ConverterModeLegacy ? "legacy" : "new")); + CPLog.info("Theme : " + themeName); + CPLog.info("Config file : " + (configPath || "")); + CPLog.info("System Font : " + [CPFont systemFontSize] + "px " + [CPFont systemFontFace]); + CPLog.info("-------------------------------------------------------------\n"); + + var converter = [[Converter alloc] initWithInputPath:inputFile + format:options.format + layoutMode:options.layoutMode + theme:theme]; if (options.resources) [converter setResourcesPath:options.resources]; - [converter setFormat:options.format]; - - [converter setInputPath:options.args[0]]; - if (options.args.length > 1) [converter setOutputPath:options.args[1]]; @@ -124,3 +182,204 @@ function main(args) [converter convert]; }); } + +function getDefaultThemeName() +{ + var themeName = nil, + cappBuild = SYS.env["CAPP_BUILD"]; + + if (cappBuild) + { + for (var i = 0; i < BuildTypes.length; ++i) + { + var path = FILE.join(cappBuild, BuildTypes[i], "AppKit", "Info.plist"); + themeName = themeNameFromPropertyList(path); + + if (themeName) + break; + } + } + + return themeName || DefaultTheme; +} + +function themeNameFromPropertyList(path) +{ + if (!FILE.exists(path)) + return nil; + + var themeName = nil, + plist = CFPropertyList.readPropertyListFromFile(path); + + if (plist) + themeName = plist.valueForKey("CPDefaultTheme"); + + return themeName; +} + +function loadTheme(themeName, themeDir) +{ + if (!themeDir) + { + cappBuild = SYS.env["CAPP_BUILD"]; + + if (!cappBuild) + fail("Could not find $CAPP_BUILD, exiting."); + + var baseThemeName = themeName, + pos = themeName.indexOf("-"); + + if (pos > 0) + baseThemeName = themeName.substr(0, pos); + + themeDir = FILE.join(cappBuild, baseThemeName + ".build"); + } + + if (!FILE.isDirectory(themeDir)) + fail("No such theme directory: " + themeDir); + + var themePath = null; + + for (var i = 0; i < BuildTypes.length; ++i) + { + var path = FILE.join(themeDir, BuildTypes[i], "Browser.environment/Resources", themeName + ".keyedtheme"); + + if (FILE.exists(path)) + { + themePath = path; + break; + } + } + + if (!themePath) + fail("Could not find the keyed theme data for: " + themeName); + + themePath = FILE.canonical(themePath); + var plist = FILE.read(themePath); + + if (!plist) + fail("Could not read the keyed theme at: " + themePath); + + // The .keyedtheme file has a header that is data I don't need. Strip it off. + var m = plist.match(/^t;\d+;/); + + if (!m || m.length === 0) + fail("Invalid keyed theme data at: " + themePath); + + plist = plist.substr(m[0].length); + plist = CFPropertyList.propertyListFromString(plist); + + var data = [CPData dataWithPlistObject:plist], + theme = [CPKeyedUnarchiver unarchiveObjectWithData:data]; + + if (!theme) + fail("Could not unarchive the theme at: " + themePath); + + CPLog.debug("Loaded theme: " + themePath); + return theme; +} + +function haveFontInfo() +{ + try + { + var fontinfo = require("fontinfo").fontinfo; + } + catch (e) + { + return false; + } + + return true; +} + +function setSystemFontAndSize(configFile, inputFile) +{ + var configPath = null; + + // First see if the user passed a config file path + if (configFile) + { + var path = FILE.canonical(configFile); + + if (!FILE.exists(path)) + fail("Cannot find the config file: " + path); + + configPath = path; + } + else + { + // See if we can find an Info.plist in the parent directory of the input file, + // if the input file's directory is "Resources". + var path = FILE.canonical(FILE.dirname(inputFile)); + + if (FILE.basename(path) === "Resources") + { + path = FILE.join(FILE.dirname(path), "Info.plist"); + + if (FILE.exists(path)) + configPath = path; + } + } + + if (configPath) + { + var plist = FILE.read(configPath); + + if (!plist) + fail("Could not read the Info.plist at: " + configPath); + + plist = CFPropertyList.propertyListFromString(plist); + + if (!plist) + fail("Could not parse the Info.plist at: " + configPath); + + var systemFontFace = plist.valueForKey("CPSystemFontFace"); + + if (systemFontFace) + [CPFont setSystemFontFace:systemFontFace]; + + var systemFontSize = plist.valueForKey("CPSystemFontSize"); + + if (systemFontSize) + [CPFont setSystemFontSize:parseFloat(systemFontSize, 10)]; + } + + return configPath; +} + +function printVersion() +{ + // SYS.args[0] has the path to the nib2cib binary, from that we can get + // to the lib/nib2cib directory which the Info.plist for nib2cib. + var path = FILE.dirname(FILE.dirname(SYS.args[0])); + + if (FILE.basename(path) === "narwhal") + path = FILE.join(path, "packages", "cappuccino"); + + path = FILE.join(path, "lib", "nib2cib", "Info.plist"); + + if (FILE.exists(path)) + { + var plist = FILE.read(path); + + if (!plist) + return; + + plist = CFPropertyList.propertyListFromString(plist); + + if (!plist) + return; + + var version = plist.valueForKey("CPBundleVersion"); + + if (version) + print("nib2cib v" + version); + } +} + +function fail(message) +{ + CPLog.error(message); + OS.exit(1); +} From 120c06fcb24a946b6e246df7f2bb9436d74d3348 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Wed, 9 Mar 2011 14:33:11 -0500 Subject: [PATCH 02/38] Further CPFont work, don't print nib2cib version all the time. --- AppKit/CPFont.j | 18 ++++++++++++++++-- Tools/nib2cib/main.j | 11 ++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index f398508dd..ca24921bd 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -29,6 +29,8 @@ var _CPFonts = {}, _CPFontSystemFontFace = @"Arial", _CPFontSystemFontSize = 12, + _CPFontDefaultSystemFontFace = @"Arial, sans-serif", + _CPFontDefaultSystemFontSize = 12, _CPFontFallbackFaces = [@"Arial", @"sans-serif"], _CPFontStripRegExp = new RegExp("(^\\s*[\"']?|[\"']?\\s*$)", "g"), _CPFontStripPropertiesRegExp = new RegExp("^(italic |bold )*\\d+px "); @@ -63,7 +65,7 @@ var _CPFonts = {}, systemFontFace = [[CPBundle bundleForClass:[CPView class]] objectForInfoDictionaryKey:@"CPSystemFontFace"]; if (systemFontFace) - _CPFontSystemFontFace = systemFontFace; + [self setSystemFontFace:systemFontFace]; var systemFontSize = [[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPSystemFontSize"]; @@ -87,8 +89,12 @@ var _CPFonts = {}, */ + (CPString)setSystemFontFace:(CPString)aFace { + var names = _CPFontNormalizedNames(aFace); - _CPFontSystemFontFace = aFace; + _CPFontSystemFontFace = names.shift(); + + if (names.length) + _CPFontFallbackFaces = names; } /*! @@ -312,6 +318,14 @@ var CPFontNameKey = @"CPFontNameKey", isBold = [aCoder decodeBoolForKey:CPFontIsBoldKey], isItalic = [aCoder decodeBoolForKey:CPFontIsItalicKey]; + if (fontName === _CPFontDefaultSystemFontFace) + { + fontName = [_CPFontSystemFontFace].concat(_CPFontFallbackFaces).join(","); + + if (size === _CPFontDefaultSystemFontSize) + size = _CPFontSystemFontSize; + } + return [self _initWithName:fontName size:size bold:isBold italic:isItalic]; } diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index c58958533..ca179cb0d 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -127,10 +127,8 @@ function main(args) else CPLogRegister(CPLogPrint, null, logFormatter); - printVersion(); - - if (options.showVersion) - OS.exit(0); + if (!options.quiet && options.verbose > 0) + printVersion(options.showVersion); var inputFile = options.args[0]; @@ -348,7 +346,7 @@ function setSystemFontAndSize(configFile, inputFile) return configPath; } -function printVersion() +function printVersion(exitAfter) { // SYS.args[0] has the path to the nib2cib binary, from that we can get // to the lib/nib2cib directory which the Info.plist for nib2cib. @@ -376,6 +374,9 @@ function printVersion() if (version) print("nib2cib v" + version); } + + if (exitAfter) + OS.exit(0); } function fail(message) From 95cc88733c821d56e92d455c2cf164a331c1860d Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Wed, 9 Mar 2011 16:37:23 -0500 Subject: [PATCH 03/38] Fixed default system font substitution --- AppKit/CPFont.j | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index ca24921bd..c08a50c4d 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -320,7 +320,7 @@ var CPFontNameKey = @"CPFontNameKey", if (fontName === _CPFontDefaultSystemFontFace) { - fontName = [_CPFontSystemFontFace].concat(_CPFontFallbackFaces).join(","); + fontName = _CPFontConcatNameWithFallback(_CPFontSystemFontFace); if (size === _CPFontDefaultSystemFontSize) size = _CPFontSystemFontSize; @@ -346,29 +346,37 @@ var CPFontNameKey = @"CPFontNameKey", @end -var _CPFontCreateCSSString = function(aName, aSize, isBold, isItalic) +var _CPFontConcatNameWithFallback = function(aName) { // aName might be a string or an array of preprocessed names var names = typeof(aName) === "string" ? _CPFontNormalizedNames(aName) : aName, - properties = (isItalic ? "italic " : "") + (isBold ? "bold " : "") + aSize + "px ", fallbackFaces = _CPFontFallbackFaces.slice(0); // Remove the standard fallback names from the names passed in - for (var i = 0; i < fallbackFaces.length; ) + for (var i = 0; i < names.length; ++i) { - for (var j = 0; j < names.length; ++j) + for (var j = 0; j < fallbackFaces.length; ++j) { - if (fallbackFaces[i].toLowerCase() === names[j].toLowerCase()) + if (names[i].toLowerCase() === fallbackFaces[j].toLowerCase()) { - fallbackFaces.splice(i, 1); - continue; + fallbackFaces.splice(j, 1); + break; } } - ++i; + if (names[i].indexOf(" ") > 0) + names[i] = '"' + names[i] + '"'; } - return properties + '"' + names.concat(fallbackFaces).join("\", \"") + '"'; + return names.concat(fallbackFaces).join(", "); +}; + +var _CPFontCreateCSSString = function(aName, aSize, isBold, isItalic) +{ + // aName might be a string or an array of preprocessed names + var properties = (isItalic ? "italic " : "") + (isBold ? "bold " : "") + aSize + "px "; + + return properties + _CPFontConcatNameWithFallback(aName); }; var _CPFontNormalizedNames = function(aName) From a8d07961c017ca2723724ea2f77e0a47bb2b91c3 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 10 Mar 2011 11:28:48 -0500 Subject: [PATCH 04/38] -familyName should always return whatever family names the font was initialized with, in case there are fallbacks for different platforms --- AppKit/CPFont.j | 53 ++++++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index c08a50c4d..9ded9499f 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -27,16 +27,17 @@ var _CPFonts = {}, - _CPFontSystemFontFace = @"Arial", + _CPFontSystemFontFace = @"Arial, sans-serif", _CPFontSystemFontSize = 12, _CPFontDefaultSystemFontFace = @"Arial, sans-serif", _CPFontDefaultSystemFontSize = 12, - _CPFontFallbackFaces = [@"Arial", @"sans-serif"], + _CPFontFallbackFaces = _CPFontDefaultSystemFontFace.split(", "), _CPFontStripRegExp = new RegExp("(^\\s*[\"']?|[\"']?\\s*$)", "g"), _CPFontStripPropertiesRegExp = new RegExp("^(italic |bold )*\\d+px "); -#define _CPCachedFont(aName, aSize, isBold, isItalic) _CPFonts[_CPFontCreateCSSString(aName, aSize, isBold, isItalic)] +#define _CPFontNormalizedNames(aName) _CPFontNormalizedNameArray(aName).join(", ") +#define _CPCachedFont(aName, aSize, isBold, isItalic) _CPFonts[_CPFontCreateCSSString(_CPFontNormalizedNames(aName), aSize, isBold, isItalic)] /*! @ingroup appkit @@ -89,12 +90,7 @@ var _CPFonts = {}, */ + (CPString)setSystemFontFace:(CPString)aFace { - var names = _CPFontNormalizedNames(aFace); - - _CPFontSystemFontFace = names.shift(); - - if (names.length) - _CPFontFallbackFaces = names; + _CPFontSystemFontFace = _CPFontNormalizedNames(aFace); } /*! @@ -194,10 +190,7 @@ var _CPFonts = {}, if (self) { - // Normalize all of the names - var names = _CPFontNormalizedNames(aName); - - _name = names[0]; + _name = _CPFontNormalizedNames(aName); _size = aSize; _ascender = 0; _descender = 0; @@ -205,7 +198,7 @@ var _CPFonts = {}, _isBold = isBold; _isItalic = isItalic; - _cssString = _CPFontCreateCSSString(names, _size, _isBold, _isItalic); + _cssString = _CPFontCreateCSSString(_name, _size, _isBold, _isItalic); _CPFonts[_cssString] = self; } @@ -318,9 +311,9 @@ var CPFontNameKey = @"CPFontNameKey", isBold = [aCoder decodeBoolForKey:CPFontIsBoldKey], isItalic = [aCoder decodeBoolForKey:CPFontIsItalicKey]; - if (fontName === _CPFontDefaultSystemFontFace) + if (fontName === _CPFontDefaultSystemFontFace && _CPFontDefaultSystemFontFace !== _CPFontSystemFontFace) { - fontName = _CPFontConcatNameWithFallback(_CPFontSystemFontFace); + fontName = _CPFontSystemFontFace; if (size === _CPFontDefaultSystemFontSize) size = _CPFontSystemFontSize; @@ -335,9 +328,7 @@ var CPFontNameKey = @"CPFontNameKey", */ - (void)encodeWithCoder:(CPCoder)aCoder { - var name = _cssString.replace(_CPFontStripPropertiesRegExp, ""); - - [aCoder encodeObject:name forKey:CPFontNameKey]; + [aCoder encodeObject:_name forKey:CPFontNameKey]; [aCoder encodeFloat:_size forKey:CPFontSizeKey]; [aCoder encodeBool:_isBold forKey:CPFontIsBoldKey]; [aCoder encodeBool:_isItalic forKey:CPFontIsItalicKey]; @@ -346,13 +337,21 @@ var CPFontNameKey = @"CPFontNameKey", @end -var _CPFontConcatNameWithFallback = function(aName) +// aName must normalized +var _CPFontCreateCSSString = function(aName, aSize, isBold, isItalic) { // aName might be a string or an array of preprocessed names - var names = typeof(aName) === "string" ? _CPFontNormalizedNames(aName) : aName, + var properties = (isItalic ? "italic " : "") + (isBold ? "bold " : "") + aSize + "px "; + + return properties + _CPFontConcatNameWithFallback(aName); +}; + +var _CPFontConcatNameWithFallback = function(aName) +{ + var names = _CPFontNormalizedNameArray(aName), fallbackFaces = _CPFontFallbackFaces.slice(0); - // Remove the standard fallback names from the names passed in + // Remove the fallback names used in the names passed in for (var i = 0; i < names.length; ++i) { for (var j = 0; j < fallbackFaces.length; ++j) @@ -371,15 +370,7 @@ var _CPFontConcatNameWithFallback = function(aName) return names.concat(fallbackFaces).join(", "); }; -var _CPFontCreateCSSString = function(aName, aSize, isBold, isItalic) -{ - // aName might be a string or an array of preprocessed names - var properties = (isItalic ? "italic " : "") + (isBold ? "bold " : "") + aSize + "px "; - - return properties + _CPFontConcatNameWithFallback(aName); -}; - -var _CPFontNormalizedNames = function(aName) +var _CPFontNormalizedNameArray = function(aName) { var names = aName.split(","); From 10bfeaf8f7ea27893f8d17d427384b76a9d572f0 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 10 Mar 2011 12:49:50 -0500 Subject: [PATCH 05/38] Added comment for non-obvious code, fixed option name in nib2cib --- AppKit/CPFont.j | 1 + Tools/nib2cib/main.j | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index 9ded9499f..7cf8d38aa 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -311,6 +311,7 @@ var CPFontNameKey = @"CPFontNameKey", isBold = [aCoder decodeBoolForKey:CPFontIsBoldKey], isItalic = [aCoder decodeBoolForKey:CPFontIsItalicKey]; + // Substitute configured font for legacy font if (fontName === _CPFontDefaultSystemFontFace && _CPFontDefaultSystemFontFace !== _CPFontSystemFontFace) { fontName = _CPFontSystemFontFace; diff --git a/Tools/nib2cib/main.j b/Tools/nib2cib/main.j index ca179cb0d..c997c169d 100644 --- a/Tools/nib2cib/main.j +++ b/Tools/nib2cib/main.j @@ -54,7 +54,7 @@ parser.option("--mac", "format") .def(NibFormatUndetermined) .help("Set format to Mac"); -parser.option("--legacy", "conversionMode") +parser.option("--legacy", "layoutMode") .set(ConverterModeLegacy) .def(ConverterModeNew) .help("Use legacy code that does not preserve view positioning/sizing"); From 627566465e9efcbb80a9100a93c5b258bebd8f9d Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Thu, 10 Mar 2011 18:13:35 -0500 Subject: [PATCH 06/38] Moved legacy font substitution to nib2cib to avoid any side effects, linted NSTableColumn, NSTableColumn now uses cibFontForNibFont, finished test app --- AppKit/CPFont.j | 9 - .../FontEnhancementTest/AppController.j | 125 + .../Info.plist | 4 +- .../Jakefile | 32 +- .../Resources/MainMenu.cib | 1 + .../Resources/MainMenu.xib | 2069 +++++++++++ .../Resources/spinner.gif | Bin .../index-debug.html | 9 +- .../index.html | 9 +- .../main.j | 4 +- Tests/Manual/FontEnhancements/AppController.j | 32 - .../FontEnhancements/Resources/MainMenu.xib | 3148 ----------------- Tools/nib2cib/Converter+Mac.j | 17 +- Tools/nib2cib/NSTableColumn.j | 17 +- 14 files changed, 2252 insertions(+), 3224 deletions(-) create mode 100644 Tests/Manual/FontEnhancementTest/AppController.j rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/Info.plist (76%) rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/Jakefile (61%) create mode 100644 Tests/Manual/FontEnhancementTest/Resources/MainMenu.cib create mode 100644 Tests/Manual/FontEnhancementTest/Resources/MainMenu.xib rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/Resources/spinner.gif (100%) rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/index-debug.html (95%) rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/index.html (93%) rename Tests/Manual/{FontEnhancements => FontEnhancementTest}/main.j (80%) delete mode 100644 Tests/Manual/FontEnhancements/AppController.j delete mode 100644 Tests/Manual/FontEnhancements/Resources/MainMenu.xib diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index 7cf8d38aa..f2ed00772 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -311,15 +311,6 @@ var CPFontNameKey = @"CPFontNameKey", isBold = [aCoder decodeBoolForKey:CPFontIsBoldKey], isItalic = [aCoder decodeBoolForKey:CPFontIsItalicKey]; - // Substitute configured font for legacy font - if (fontName === _CPFontDefaultSystemFontFace && _CPFontDefaultSystemFontFace !== _CPFontSystemFontFace) - { - fontName = _CPFontSystemFontFace; - - if (size === _CPFontDefaultSystemFontSize) - size = _CPFontSystemFontSize; - } - return [self _initWithName:fontName size:size bold:isBold italic:isItalic]; } diff --git a/Tests/Manual/FontEnhancementTest/AppController.j b/Tests/Manual/FontEnhancementTest/AppController.j new file mode 100644 index 000000000..da019ebf5 --- /dev/null +++ b/Tests/Manual/FontEnhancementTest/AppController.j @@ -0,0 +1,125 @@ +/* + * AppController.j + * test + * + * Created by aparajita on March 9, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import + + +var fontLabelField = nil, + defaultFontLabelText = @""; + + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib + CPTextField label1; + CPTextField fontLabel; + CPTableView theTableView; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:NO]; + + fontLabelField = fontLabel; + defaultFontLabelText = [fontLabelField stringValue]; +} + +- (int)numberOfRowsInTableView:(id)aTableView +{ + return 7; +} + +- (id)tableView:(id)tableView objectValueForTableColumn:(CPTableColumn)aColumn row:(int)aRow +{ + return ["one", "two", "three"][parseInt([aColumn identifier], 10)]; +} + +@end + + +@implementation CPView (testApp) + +- (void)doMouseEntered +{ + [fontLabelField setStringValue:@"View font: " + [[self font] cssString]]; +} + +- (void)doMouseExited +{ + [fontLabelField setStringValue:defaultFontLabelText]; +} + +@end + + +@implementation CPControl (testApp) + +- (void)awakeFromCib +{ + [super awakeFromCib]; + + var size = [self frameSize], + lineHeight = [[self font] defaultLineHeightForFont], + inset = [self themeAttribute:@"content-inset"], + minSize = [self themeAttribute:@"min-size"], + height = lineHeight + (inset ? inset.top + inset.bottom : 0); + + if (minSize) + height = MAX(height, minSize.height); + + [self setFrameSize:CGSizeMake(size.width, MAX(size.height, height))]; +} + +- (void)mouseEntered:(CPEvent)anEvent +{ + [self doMouseEntered]; +} + +- (void)mouseExited:(CPEvent)anEvent +{ + [self doMouseExited]; +} + +- (id)themeAttribute:(CPString)aName +{ + try + { + return [self currentValueForThemeAttribute:aName]; + } + catch (e) + { + return nil; + } +} + +@end + + +@implementation CPTabView (testApp) + +- (void)mouseEntered:(CPEvent)anEvent +{ + [_tabs doMouseEntered]; +} + +- (void)mouseExited:(CPEvent)anEvent +{ + [_tabs doMouseExited]; +} + +@end diff --git a/Tests/Manual/FontEnhancements/Info.plist b/Tests/Manual/FontEnhancementTest/Info.plist similarity index 76% rename from Tests/Manual/FontEnhancements/Info.plist rename to Tests/Manual/FontEnhancementTest/Info.plist index d4176fb32..20ad84b95 100644 --- a/Tests/Manual/FontEnhancements/Info.plist +++ b/Tests/Manual/FontEnhancementTest/Info.plist @@ -5,6 +5,8 @@ Main cib file base name MainMenu.cib CPBundleName - FontEnhancements + test + CPSystemFontFace + Lucida Grande diff --git a/Tests/Manual/FontEnhancements/Jakefile b/Tests/Manual/FontEnhancementTest/Jakefile similarity index 61% rename from Tests/Manual/FontEnhancements/Jakefile rename to Tests/Manual/FontEnhancementTest/Jakefile index 3587748f5..cdafe78a4 100644 --- a/Tests/Manual/FontEnhancements/Jakefile +++ b/Tests/Manual/FontEnhancementTest/Jakefile @@ -1,8 +1,8 @@ /* * Jakefile - * FontEnhancements + * test * - * Created by aparajita on March 8, 2011. + * Created by aparajita on March 9, 2011. * Copyright 2011, Victory-Heart Productions All rights reserved. */ @@ -15,17 +15,17 @@ var ENV = require("system").env, configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", OS = require("os"); -app ("FontEnhancements", function(task) +app ("test", function(task) { - task.setBuildIntermediatesPath(FILE.join("Build", "FontEnhancements.build", configuration)); + task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration)); task.setBuildPath(FILE.join("Build", configuration)); - task.setProductName("FontEnhancements"); - task.setIdentifier("com.aparajitaworld.FontEnhancements"); + task.setProductName("test"); + task.setIdentifier("com.aparajitaworld.test"); task.setVersion("1.0"); task.setAuthor("Victory-Heart Productions"); task.setEmail("feedback @nospam@ yourcompany.com"); - task.setSummary("FontEnhancements"); + task.setSummary("test"); task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); task.setResources(new FileList("Resources/**")); task.setIndexFilePath("index.html"); @@ -38,7 +38,7 @@ app ("FontEnhancements", function(task) task.setCompilerFlags("-O"); }); -task ("default", ["FontEnhancements"], function() +task ("default", ["test"], function() { printResults(configuration); }); @@ -59,36 +59,36 @@ task ("release", function() task ("run", ["debug"], function() { - OS.system(["open", FILE.join("Build", "Debug", "FontEnhancements", "index.html")]); + OS.system(["open", FILE.join("Build", "Debug", "test", "index.html")]); }); task ("run-release", ["release"], function() { - OS.system(["open", FILE.join("Build", "Release", "FontEnhancements", "index.html")]); + OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]); }); task ("deploy", ["release"], function() { - FILE.mkdirs(FILE.join("Build", "Deployment", "FontEnhancements")); - OS.system(["press", "-f", FILE.join("Build", "Release", "FontEnhancements"), FILE.join("Build", "Deployment", "FontEnhancements")]); + FILE.mkdirs(FILE.join("Build", "Deployment", "test")); + OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]); printResults("Deployment") }); task ("desktop", ["release"], function() { - FILE.mkdirs(FILE.join("Build", "Desktop", "FontEnhancements")); - require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "FontEnhancements"), FILE.join("Build", "Desktop", "FontEnhancements", "FontEnhancements.app")); + FILE.mkdirs(FILE.join("Build", "Desktop", "test")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app")); printResults("Desktop") }); task ("run-desktop", ["desktop"], function() { - OS.system([FILE.join("Build", "Desktop", "FontEnhancements", "FontEnhancements.app", "Contents", "MacOS", "NativeHost"), "-i"]); + OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]); }); function printResults(configuration) { print("----------------------------"); - print(configuration+" app built at path: "+FILE.join("Build", configuration, "FontEnhancements")); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "test")); print("----------------------------"); } diff --git a/Tests/Manual/FontEnhancementTest/Resources/MainMenu.cib b/Tests/Manual/FontEnhancementTest/Resources/MainMenu.cib new file mode 100644 index 000000000..88b82b023 --- /dev/null +++ b/Tests/Manual/FontEnhancementTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;45E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;61E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;163E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;165E;E;D;K;10;$classnameS;13;CPTabViewItemK;8;$classesA;S;13;CPTabViewItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;2;85E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;166E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;35E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;85E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;167E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;168E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;169E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;171E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;172E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;173E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;174E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;175E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;177E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;16;$aimage-positionD;K;6;CP$UIDd;3;176E;K;6;$afontD;K;6;CP$UIDd;3;183E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;184E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;187E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;176E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;E;D;K;10;$classnameS;18;CPSegmentedControlK;8;$classesA;S;18;CPSegmentedControlS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;188E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;6;$afontD;K;6;CP$UIDd;3;192E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;184E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;29;CPSegmentedControlSegmentsKeyD;K;6;CP$UIDd;3;193E;K;29;CPSegmentedControlSelectedKeyD;K;6;CP$UIDd;3;176E;K;33;CPSegmentedControlSegmentStyleKeyD;K;6;CP$UIDd;3;185E;K;33;CPSegmentedControlTrackingModeKeyD;K;6;CP$UIDd;3;176E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;194E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;195E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;197E;K;6;$afontD;K;6;CP$UIDd;3;198E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;175E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;202E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;203E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;204E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;205E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;207E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;208E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;209E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;72E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;210E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;176E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;211E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;57E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;212E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;213E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;57E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;214E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;215E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;216E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;2;85E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;217E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;64E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;218E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;219E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;219E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;218E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;220E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;221E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;222E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;3;176E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;176E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;174E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;175E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;175E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;175E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;175E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;223E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;1;0E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;174E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;225E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;43E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;226E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;227E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;6;$afontD;K;6;CP$UIDd;3;228E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;229E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;174E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;230E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;231E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;6;$afontD;K;6;CP$UIDd;3;232E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;233E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;174E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;2;84E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;234E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;34E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;235E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;236E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;236E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;235E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;237E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;38E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;238E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;239E;E;D;K;10;$classnameS;13;CPSearchFieldK;8;$classesA;S;13;CPSearchFieldS;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;241E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;243E;K;6;$afontD;K;6;CP$UIDd;3;244E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;175E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;202E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;245E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;174E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;174E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;247E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;248E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;249E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;238E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;250E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;251E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;69E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;49E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;254E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;69E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;49E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;229E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;69E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;185E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;49E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;255E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;256E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;257E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;258E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;259E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;74E;E;D;K;10;$classnameS;9;CPTabViewK;8;$classesA;S;9;CPTabViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;260E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;261E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;262E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;3;263E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;79E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;3;176E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;3;264E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;265E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;266E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;267E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;6;$afontD;K;6;CP$UIDd;3;228E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;268E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;174E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;174E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;269E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;242E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;243E;K;6;$afontD;K;6;CP$UIDd;3;271E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;175E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;202E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;229E;K;27;CPSendsWholeSearchStringKeyD;K;6;CP$UIDd;3;174E;K;33;CPSendsSearchStringImmediatelyKeyD;K;6;CP$UIDd;3;174E;K;19;CPMaximumRecentsKeyD;K;6;CP$UIDd;3;246E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;45E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;272E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;274E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;275E;K;6;$afontD;K;6;CP$UIDd;3;276E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;186E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;163E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;277E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;278E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;207E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;208E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;279E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;72E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;280E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;3;176E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;281E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;65E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;282E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;215E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;65E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;283E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;284E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;285E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;17;CPTabViewItemsKeyD;K;6;CP$UIDd;3;286E;K;24;CPTabViewSelectedItemKeyD;K;6;CP$UIDd;2;36E;K;16;CPTabViewTypeKeyD;K;6;CP$UIDd;3;176E;K;16;CPTabViewFontKeyD;K;6;CP$UIDd;3;287E;K;20;CPTabViewDelegateKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;288E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;61E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;185E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;45E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;254E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;61E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;45E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;251E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;61E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;252E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;45E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;60E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;49E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;289E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;274E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;275E;K;6;$afontD;K;6;CP$UIDd;3;192E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;186E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;83E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;290E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;291E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;292E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;293E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;294E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;173E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;174E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;175E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;295E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;296E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;297E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;298E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;218E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;235E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;63E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;31E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;168E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;168E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;168E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;168E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;175E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;174E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;175E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;3;225E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;300E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;184E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;301E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;302E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;6;$afontD;K;6;CP$UIDd;3;303E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;184E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;29;CPSegmentedControlSegmentsKeyD;K;6;CP$UIDd;3;304E;K;29;CPSegmentedControlSelectedKeyD;K;6;CP$UIDd;3;176E;K;33;CPSegmentedControlSegmentStyleKeyD;K;6;CP$UIDd;3;185E;K;33;CPSegmentedControlTrackingModeKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;305E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;305E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;306E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;307E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;270E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;197E;K;6;$afontD;K;6;CP$UIDd;3;271E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;186E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;175E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;175E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;202E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;184E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;186E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;229E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;308E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;309E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;310E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;271E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;229E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;311E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;312E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;313E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;2;20E;K;26;CPTabViewItemIdentifierKeyD;K;6;CP$UIDd;2;84E;K;21;CPTabViewItemLabelKeyD;K;6;CP$UIDd;3;314E;K;20;CPTabViewItemViewKeyD;K;6;CP$UIDd;2;33E;K;23;CPTabViewItemAuxViewKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;84E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;315E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;291E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;292E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;316E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;317E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;173E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;174E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;175E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;318E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;319E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;310E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;320E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;321E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;322E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;323E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;179E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;16;$aimage-positionD;K;6;CP$UIDd;3;176E;K;6;$afontD;K;6;CP$UIDd;3;192E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;176E;K;11;$aalignmentD;K;6;CP$UIDd;3;184E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;229E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;176E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;E;S;1;0S;1;1S;1;2S;1;3S;1;4S;1;5S;1;7S;12;File's OwnerS;1;8S;1;9S;1;6S;2;10S;2;11S;2;12S;2;13S;2;14S;2;15S;2;16S;2;17S;2;18S;2;19S;2;20S;2;21S;2;22S;2;23S;2;24S;2;25S;2;26S;2;27S;2;28S;2;29S;2;30S;2;31S;2;32S;2;33S;2;34S;2;35S;2;36S;2;37S;2;38S;2;39S;2;40S;2;41S;2;42S;2;43S;2;44S;2;45S;2;46S;2;47S;2;48S;2;49S;2;50S;2;51S;2;52S;2;53S;2;54S;2;55S;2;56S;2;57S;2;58S;2;59S;2;60S;2;61S;2;62S;2;63S;2;64S;2;65S;2;66S;2;67S;2;68S;2;69S;2;70D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;19E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;324E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;325E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;40E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;327E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;19E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;328E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;19E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;329E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;19E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;324E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;E;E;S;13;AppControllerS;7;bold 14d;3;125d;2;10d;22;3.4028234663852886e+38D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;170E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;331E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;176E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;333E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;334E;K;6;$afontD;K;6;CP$UIDd;3;336E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;186E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;15;$acontent-insetD;K;6;CP$UIDd;3;338E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;186E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;176E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;199E;E;d;1;3F;T;d;1;0S;22;{{383, 52}, {168, 24}}S;19;{{0, 0}, {168, 24}}d;2;36S;6;buttonS;17;selected+borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;339E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;340E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;d;1;2d;1;1d;1;4S;20;Trebuchet MS Bold 14S;22;{{26, 330}, {152, 24}}S;19;{{0, 0}, {152, 24}}S;17;segmented-controlS;6;normalD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;341E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;342E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;344E;D;K;6;CP$UIDd;3;345E;D;K;6;CP$UIDd;3;346E;E;E;S;22;{{29, 123}, {209, 32}}S;19;{{0, 0}, {209, 32}}S;9;textfieldS;19;bezeled+placeholderD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;339E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;340E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;0;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;347E;E;S;15;Trebuchet MS 14S;24;{{-100, 220}, {426, 15}}S;19;{{0, 0}, {426, 15}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9906976744186047S;21;{{10, 13}, {237, 39}}S;19;{{0, 0}, {237, 39}}S;21;{{10, 33}, {246, 39}}S;19;{{0, 0}, {246, 39}}S;21;{{10, 33}, {237, 39}}S;7;IB fontD;K;6;$classD;K;6;CP$UIDd;3;299E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;364E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;219E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;365E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;366E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;38E;E;S;20;{{0, 0}, {453, 117}}S;9;tableviewd;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;23E;E;E;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;224E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;348E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;349E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;207E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;350E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;S;20;{{29, 84}, {95, 17}}S;18;{{0, 0}, {95, 17}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;341E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;342E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;15;Default IB fontS;21;{{29, 50}, {221, 26}}S;19;{{0, 0}, {221, 26}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;351E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;352E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;175E;E;S;22;Georgia bold italic 18S;7;DefaultD;K;6;$classD;K;6;CP$UIDd;3;299E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;176E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;367E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;368E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;369E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;206E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;366E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;43E;E;S;19;{{0, 0}, {453, 23}}S;14;tableHeaderRowS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;E;E;S;22;{{29, 210}, {210, 29}}S;19;{{0, 0}, {210, 29}}S;11;searchfieldS;27;bezeled+rounded+placeholderD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;353E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;342E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;10;Verdana 12d;3;254S;23;{{383, 319}, {182, 20}}S;19;{{0, 0}, {182, 20}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;356E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;51E;E;E;S;6;Item 3S;17;_popUpItemAction:d;7;1048576S;6;Item 2S;32;{10000000000000, 10000000000000}S;8;CPWindowS;23;{{256, 60}, {612, 664}}d;1;7S;6;WindowS;22;{{25, 564}, {257, 85}}S;19;{{0, 0}, {257, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;21E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;357E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;340E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;21;{{29, 14}, {578, 17}}S;19;{{0, 0}, {578, 17}}d;2;34S;45;View font: S;22;{{29, 242}, {209, 29}}S;19;{{0, 0}, {209, 29}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;341E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;342E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;23;{{380, 223}, {204, 24}}S;19;{{0, 0}, {204, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;358E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;21;{{439, 1}, {15, 117}}S;19;{{0, 0}, {15, 117}}S;17;disabled+verticalS;27;_verticalScrollerDidScroll:f;18;0.8717948717948718S;21;{{10, 13}, {246, 39}}S;23;{{322, 564}, {266, 85}}S;19;{{0, 0}, {266, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;64E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;36E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;341E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;14;Andale Mono 13S;23;{{380, 260}, {204, 24}}d;3;137d;2;40d;4;1000D;K;6;$classD;K;6;CP$UIDd;3;170E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;360E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;176E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;361E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;334E;K;6;$afontD;K;6;CP$UIDd;3;362E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;186E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;15;$acontent-insetD;K;6;CP$UIDd;3;363E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;186E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;176E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;199E;E;S;23;{{32, 405}, {455, 135}}S;20;{{0, 0}, {455, 135}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;218E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;3;235E;D;K;6;CP$UIDd;3;225E;D;K;6;CP$UIDd;3;300E;E;E;S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;72E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;S;22;{{26, 295}, {182, 24}}S;19;{{0, 0}, {182, 24}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;370E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;371E;D;K;6;CP$UIDd;3;372E;D;K;6;CP$UIDd;3;373E;E;E;S;20;{{0, 0}, {612, 664}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;65E;E;E;S;22;{{29, 159}, {209, 29}}S;23;{{381, 178}, {113, 18}}S;19;{{0, 0}, {113, 18}}S;9;check-boxS;23;{{383, 353}, {182, 18}}S;19;{{0, 0}, {182, 18}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;375E;E;E;S;12;google Cabind;3;131D;K;6;$classD;K;6;CP$UIDd;3;170E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;376E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;332E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;176E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;377E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;271E;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;196E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;334E;K;6;$afontD;K;6;CP$UIDd;3;378E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;186E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;15;$acontent-insetD;K;6;CP$UIDd;3;379E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;199E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;200E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;186E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;176E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;199E;E;S;23;{{381, 146}, {213, 18}}S;19;{{0, 0}, {213, 18}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;380E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;381E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;175E;E;S;25;Times New Roman italic 16S;22;{{383, 89}, {118, 24}}S;19;{{0, 0}, {118, 24}}S;8;delegateS;9;fontLabelS;6;label1S;12;theTableViewS;9;theWindowS;10;dataSourceS;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;383E;E;E;S;12;columnHeaderS;15;Default IB FontS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;335E;K;4;nameD;K;6;CP$UIDd;3;384E;K;6;valuesD;K;6;CP$UIDd;3;386E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;337E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;387E;E;S;12;Trebuchet MSd;2;14S;13;Lucida Granded;2;12D;K;10;$classnameS;14;_CPSegmentItemK;8;$classesA;S;14;_CPSegmentItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;234E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;175E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;388E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;174E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;185E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;384E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;174E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;E;E;S;22;{{439, 112}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewS;7;Georgiad;2;18S;7;VerdanaD;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;354E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;389E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;389E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;390E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;391E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;184E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;393E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;395E;E;D;K;6;$classD;K;6;CP$UIDd;3;354E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;48E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;396E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;389E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;48E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;390E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;391E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;275E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;184E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;392E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;397E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;395E;E;S;5;CabinS;11;Andale Monod;2;13D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;398E;E;E;S;19;Courier New Bold 13D;K;6;$classD;K;6;CP$UIDd;3;335E;K;4;nameD;K;6;CP$UIDd;3;384E;K;6;valuesD;K;6;CP$UIDd;3;399E;E;D;K;6;$classD;K;6;CP$UIDd;3;337E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;387E;E;S;20;{{1, 1}, {453, 117}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;38E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;201E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;400E;E;S;21;{{1, 118}, {453, 17}}S;19;{{0, 0}, {453, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;E;E;S;13;Comic Sans MSD;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;401E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;175E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;3;402E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;174E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;3;185E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;343E;K;21;CPSegmentItemImageKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemLabelKeyD;K;6;CP$UIDd;2;97E;K;20;CPSegmentItemMenuKeyD;K;6;CP$UIDd;1;0E;K;24;CPSegmentItemSelectedKeyD;K;6;CP$UIDd;3;174E;K;23;CPSegmentItemEnabledKeyD;K;6;CP$UIDd;3;175E;K;19;CPSegmentItemTagKeyD;K;6;CP$UIDd;1;0E;K;21;CPSegmentItemWidthKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;3;354E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;78E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;403E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;403E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;78E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;390E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;391E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;181E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;184E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;404E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;185E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;234E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;405E;E;D;K;6;$classD;K;6;CP$UIDd;3;354E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;78E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;406E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;403E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;78E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;390E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;391E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;275E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;184E;K;16;$aimage-positionD;K;6;CP$UIDd;3;184E;K;6;$afontD;K;6;CP$UIDd;3;404E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;184E;K;11;$aalignmentD;K;6;CP$UIDd;3;176E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;176E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;186E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;217E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;1;0E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;184E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;176E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;405E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;407E;E;E;S;14;Courier New 13D;K;6;$classD;K;6;CP$UIDd;3;335E;K;4;nameD;K;6;CP$UIDd;3;384E;K;6;valuesD;K;6;CP$UIDd;3;408E;E;D;K;6;$classD;K;6;CP$UIDd;3;337E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;387E;E;S;15;Times New Romand;2;16D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;382E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;171E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;171E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;S;4;fontD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;192E;K;6;normalD;K;6;CP$UIDd;3;271E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}S;2;IBS;18;{{0, 0}, {89, 20}}D;K;6;$classD;K;6;CP$UIDd;3;201E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;409E;E;S;5;radioD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;410E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;340E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;S;6;googleD;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;394E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;411E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;355E;E;S;19;{{93, 0}, {89, 20}}S;9;Ubuntu 14D;K;6;$classD;K;6;CP$UIDd;3;382E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;293E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;293E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;412E;K;6;normalD;K;6;CP$UIDd;3;412E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;E;E;S;10;Comic SansS;4;boldS;18;{{0, 0}, {89, 18}}D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;341E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;3;394E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;413E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;374E;E;S;19;{{93, 0}, {89, 18}}D;K;6;$classD;K;6;CP$UIDd;3;382E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;316E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;330E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;330E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;316E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;352E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;3;385E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;412E;K;6;normalD;K;6;CP$UIDd;3;414E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;E;E;S;6;UbuntuD;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;416E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;175E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;417E;E;D;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;416E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;359E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;174E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;174E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;355E;D;K;6;CP$UIDd;3;356E;E;E;S;11;Courier NewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;374E;D;K;6;CP$UIDd;3;375E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/FontEnhancementTest/Resources/MainMenu.xib b/Tests/Manual/FontEnhancementTest/Resources/MainMenu.xib new file mode 100644 index 000000000..d380e36ac --- /dev/null +++ b/Tests/Manual/FontEnhancementTest/Resources/MainMenu.xib @@ -0,0 +1,2069 @@ + + + + 1050 + 10J567 + 804 + 1038.35 + 462.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{256, 694}, {612, 664}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{29, 588}, {221, 26}} + + YES + + 68288064 + 272630784 + Georgia bold italic 18 + + Georgia-BoldItalic + 18 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 266 + {{29, 633}, {578, 17}} + + YES + + 68288064 + 272630784 + View font: <roll over a view to see its font> + + LucidaGrande + 13 + 16 + + + + + + + + + 268 + {{29, 563}, {95, 17}} + + YES + + 68288064 + 272630784 + Default IB font + + LucidaGrande + 13 + 1044 + + + + + + + + + 268 + {{383, 584}, {168, 25}} + + YES + + -2080244224 + 134217728 + Trebuchet MS Bold 14 + + TrebuchetMS-Bold + 14 + 16 + + + -2038152961 + 163 + + + 400 + 75 + + + + + 268 + {{383, 547}, {118, 25}} + + YES + + -2080244224 + 134217728 + Default IB font + + + -2038152961 + 163 + + + 400 + 75 + + + + + 268 + + YES + + + 2304 + + YES + + + 256 + {453, 117} + + YES + + + 256 + {453, 17} + + + + + + -2147483392 + {{439, 0}, {16, 17}} + + + + YES + + 0 + 137 + 40 + 1000 + + 75628096 + 2048 + Courier New Bold 13 + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 337772096 + 2048 + Text Cell + + CourierNewPS-BoldMT + 13 + 16 + + + + 6 + System + controlBackgroundColor + + + + + 3 + YES + YES + + + + 1 + 131 + 40 + 1000 + + 75628096 + 2048 + Courier New 13 + + + + + + 337772096 + 2048 + Text Cell + + CourierNewPSMT + 13 + 16 + + + + + + 3 + YES + YES + + + + 2 + 125 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + Default IB Font + + + 6 + System + headerColor + + 3 + MQA + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 17 + -702545920 + + + 0 + 15 + 0 + YES + 0 + + + {{1, 17}, {453, 117}} + + + + + 4 + + + + -2147483392 + {{439, 17}, {15, 117}} + + + _doScroller: + 0.87179487179487181 + + + + -2147483392 + {{-100, -100}, {426, 15}} + + 1 + + _doScroller: + 0.99069767441860468 + + + + 2304 + + YES + + + {{1, 0}, {453, 17}} + + + + + 4 + + + + {{32, 124}, {455, 135}} + + + 530 + + + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 268 + {{32, 512}, {202, 25}} + + YES + + -1804468671 + 272630784 + + + TrebuchetMS + 14 + 16 + + Trebuchet MS 14 + + YES + + 6 + System + textBackgroundColor + + + + 6 + System + textColor + + + + + + + 268 + {{32, 479}, {202, 22}} + + YES + + -1804468671 + 272630784 + + + Default IB font + + YES + + + + + + + 268 + {{32, 428}, {203, 22}} + + YES + + 343014976 + 268436544 + + + Verdana + 12 + 16 + + Verdana 12 + + YES + 1 + + + + 130560 + 0 + search + + _searchFieldSearch: + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + + _searchFieldCancel: + + 138690815 + 0 + + 400 + 75 + + 255 + + + + + 268 + {{32, 396}, {202, 22}} + + YES + + 343014976 + 268436544 + + + Default IB font + + YES + 1 + + + + 130560 + 0 + search + + _searchFieldSearch: + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + + _searchFieldCancel: + + 138690815 + 0 + + 400 + 75 + + 255 + + + + + 268 + {{381, 500}, {213, 18}} + + YES + + -2080244224 + 0 + Times New Roman italic 16 + + TimesNewRomanPS-ItalicMT + 16 + 16 + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{381, 468}, {113, 18}} + + YES + + -2080244224 + 0 + Default IB font + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{380, 413}, {204, 26}} + + YES + + -2076049856 + 2048 + + AndaleMono + 13 + 16 + + + 109199615 + 129 + + + 400 + 75 + + + Andale Mono 13 + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{380, 376}, {204, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + Default IB font + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + {{30, 345}, {182, 24}} + + YES + + -2080244224 + 0 + + ComicSansMS-Bold + 13 + 16 + + + + YES + + Comic Sans + YES + 0 + + + bold + 1 + 0 + + + 13 + 0 + + + 1 + + + + + 268 + {{30, 310}, {152, 24}} + + YES + + 67239424 + 0 + + + + YES + + Default + YES + 0 + + + IB + 1 + 0 + + + font + 0 + + + 1 + + + + + 268 + {{383, 325}, {182, 20}} + + YES + 1 + 2 + + YES + + -2080244224 + 0 + google + + Ubuntu-Regular + 14 + 16 + + + 1 + 1211912703 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67239424 + 0 + Ubuntu 14 + + + 1211912703 + 0 + + 400 + 75 + + + {89, 20} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + + + + + + + 268 + {{383, 293}, {182, 18}} + + YES + 1 + 2 + + YES + + -2080244224 + 0 + Default + + + 1 + 1211912703 + 0 + + + + 200 + 25 + + + 67239424 + 0 + IB font + + + 1211912703 + 0 + + 400 + 75 + + + {89, 18} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + + + + + + 12 + {{25, 15}, {257, 85}} + + + YES + + 1 + + + 256 + {{10, 33}, {237, 39}} + + + google Cabin + + + + + 2 + + + 256 + {{10, 33}, {237, 39}} + + bold 14 + + + + + + + Cabin-Bold + 14 + 16 + + 0 + YES + YES + + YES + + + + + + 12 + {{322, 15}, {266, 85}} + + + YES + + 1 + + + 256 + {{10, 33}, {246, 39}} + + Default + + + + + 2 + + + 256 + {{10, 33}, {246, 39}} + + + IB font + + + + + + + 0 + YES + YES + + YES + + + + + {612, 664} + + + {{0, 0}, {2560, 1418}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + + YES + + + delegate + + + + 451 + + + + theWindow + + + + 459 + + + + label1 + + + + 462 + + + + fontLabel + + + + 465 + + + + theTableView + + + + 491 + + + + dataSource + + + + 514 + + + + delegate + + + + 515 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + + + + + + + + + + + + + + + + + + 450 + + + + + 460 + + + YES + + + + + + 461 + + + + + 463 + + + YES + + + + + + 464 + + + + + 468 + + + YES + + + + + + 469 + + + + + 474 + + + YES + + + + + + 475 + + + + + 476 + + + YES + + + + + + 477 + + + + + 478 + + + YES + + + + + + + + + 479 + + + + + 480 + + + + + 481 + + + YES + + + + + + + + 482 + + + + + 483 + + + YES + + + + + + 484 + + + YES + + + + + + 485 + + + + + 486 + + + + + 492 + + + YES + + + + + + 493 + + + + + 516 + + + YES + + + + + + 517 + + + + + 518 + + + YES + + + + + + 519 + + + + + 520 + + + YES + + + + + + 521 + + + + + 522 + + + YES + + + + + + 523 + + + + + 528 + + + YES + + + + + + 529 + + + + + 530 + + + YES + + + + + + 531 + + + + + 532 + + + YES + + + + + + 533 + + + YES + + + + + + 534 + + + YES + + + + + + + + 535 + + + + + 536 + + + + + 537 + + + + + 538 + + + YES + + + + + + 539 + + + YES + + + + + + 540 + + + YES + + + + + + + + 541 + + + + + 542 + + + + + 543 + + + + + 544 + + + YES + + + + + + 545 + + + + + 546 + + + YES + + + + + + 547 + + + + + 548 + + + YES + + + + + + + + 549 + + + + + 551 + + + + + 552 + + + + + 558 + + + YES + + + + + + + + 560 + + + + + 561 + + + + + 562 + + + + + 563 + + + YES + + + + + + + 564 + + + YES + + + + + + 565 + + + YES + + + + + + 566 + + + + + 567 + + + + + 573 + + + YES + + + + + + + 574 + + + YES + + + + + + 575 + + + YES + + + + + + 576 + + + + + 577 + + + + + + + YES + + YES + -3.IBPluginDependency + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 371.windowTemplate.maxSize + 372.IBPluginDependency + 460.IBPluginDependency + 460.IBViewBoundsToFrameTransform + 461.IBPluginDependency + 463.IBPluginDependency + 463.IBViewBoundsToFrameTransform + 464.IBPluginDependency + 468.IBPluginDependency + 468.IBViewBoundsToFrameTransform + 469.IBPluginDependency + 474.IBPluginDependency + 474.IBViewBoundsToFrameTransform + 475.IBPluginDependency + 476.IBPluginDependency + 476.IBViewBoundsToFrameTransform + 477.IBPluginDependency + 478.IBPluginDependency + 478.IBViewBoundsToFrameTransform + 479.IBPluginDependency + 480.IBPluginDependency + 481.IBPluginDependency + 482.IBPluginDependency + 483.IBPluginDependency + 484.IBPluginDependency + 485.IBPluginDependency + 486.IBPluginDependency + 516.IBPluginDependency + 516.IBViewBoundsToFrameTransform + 517.IBPluginDependency + 518.IBPluginDependency + 518.IBViewBoundsToFrameTransform + 519.IBPluginDependency + 520.IBPluginDependency + 520.IBViewBoundsToFrameTransform + 521.IBPluginDependency + 522.IBPluginDependency + 522.IBViewBoundsToFrameTransform + 523.IBPluginDependency + 528.IBPluginDependency + 529.IBPluginDependency + 530.IBPluginDependency + 531.IBPluginDependency + 532.IBPluginDependency + 533.IBPluginDependency + 534.IBEditorWindowLastContentRect + 534.IBPluginDependency + 535.IBPluginDependency + 536.IBPluginDependency + 537.IBPluginDependency + 538.IBPluginDependency + 539.IBPluginDependency + 540.IBPluginDependency + 541.IBPluginDependency + 542.IBPluginDependency + 543.IBPluginDependency + 544.IBPluginDependency + 544.IBSegmentedControlTracker.RoundRobinState + 544.IBSegmentedControlTracker.WasGrowing + 544.IBViewBoundsToFrameTransform + 545.IBPluginDependency + 546.IBPluginDependency + 546.IBViewBoundsToFrameTransform + 547.IBPluginDependency + 548.IBPluginDependency + 548.IBViewBoundsToFrameTransform + 549.IBPluginDependency + 551.IBPluginDependency + 558.IBPluginDependency + 558.IBViewBoundsToFrameTransform + 561.IBPluginDependency + 562.IBPluginDependency + 563.IBPluginDependency + 563.IBViewBoundsToFrameTransform + 564.IBPluginDependency + 565.IBPluginDependency + 566.IBPluginDependency + 567.IBPluginDependency + 573.IBPluginDependency + 574.IBPluginDependency + 575.IBPluginDependency + 576.IBPluginDependency + 577.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{742, 702}, {612, 664}} + com.apple.InterfaceBuilder.CocoaPlugin + {{742, 702}, {612, 664}} + + {{33, 99}, {480, 360}} + {3.40282e+38, 3.40282e+38} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCjAAAxBvAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBiAAAxD5AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABB6AAAxBeAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAw8uAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAw7kAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAw8gAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAxA6AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAxAaAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABB4AAAw/oAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCAAAAw+IAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{1122, 889}, {204, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + P4AAAL+AAABBkAAAw8mAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABAwAAAw7gAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDv4AAw72AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDwgAAw7sAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABByAAAw3IAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 579 + + + + YES + + AppController + NSObject + + YES + + YES + fontLabel + label1 + theTableView + theWindow + + + YES + id + id + id + NSWindow + + + + YES + + YES + fontLabel + label1 + theTableView + theWindow + + + YES + + fontLabel + id + + + label1 + id + + + theTableView + id + + + theWindow + NSWindow + + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../adsfsdf.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {9, 8} + {7, 2} + {15, 15} + + + + diff --git a/Tests/Manual/FontEnhancements/Resources/spinner.gif b/Tests/Manual/FontEnhancementTest/Resources/spinner.gif similarity index 100% rename from Tests/Manual/FontEnhancements/Resources/spinner.gif rename to Tests/Manual/FontEnhancementTest/Resources/spinner.gif diff --git a/Tests/Manual/FontEnhancements/index-debug.html b/Tests/Manual/FontEnhancementTest/index-debug.html similarity index 95% rename from Tests/Manual/FontEnhancements/index-debug.html rename to Tests/Manual/FontEnhancementTest/index-debug.html index 6c54166f5..4a911ae33 100644 --- a/Tests/Manual/FontEnhancements/index-debug.html +++ b/Tests/Manual/FontEnhancementTest/index-debug.html @@ -4,9 +4,9 @@ @@ -19,8 +19,9 @@ + - FontEnhancements + test