Skip to content

Instantly share code, notes, and snippets.

@wooster
Created December 29, 2012 02:21
Show Gist options
  • Save wooster/4404111 to your computer and use it in GitHub Desktop.
Save wooster/4404111 to your computer and use it in GitHub Desktop.
Patch for CoverStory to optionally color executed lines in the file scroller. This is useful for running through a scenario where you're seeing a bug, then checking which lines executed in your app so you can narrow down the problem space. Normally, you'd have red lines in the scrollbar for each un-executed line. This is fine for looking at test…
Index: CoverStoryDocument.m
===================================================================
--- CoverStoryDocument.m (revision 175)
+++ CoverStoryDocument.m (working copy)
@@ -557,30 +557,31 @@
// run gcov (it writes to current directory, so we cd into our dir first)
// we use xargs to batch up the files into as few of runs of gcov as
// possible. (we could use -P [num_cpus] to do things in parallell)
+ //
+ // GTMScriptRunner deadlocks if stderr is too long. since we want stderr,
+ // redirect it to stdout and ignore the original stdout to workaround
+ // this issue.
+ // See http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=25
NSString *script
- = [NSString stringWithFormat:@"cd \"%@\" && /usr/bin/xargs -0 \"%@\" -l -o \"%@\" < \"%@\"",
+ = [NSString stringWithFormat:@"cd \"%@\" && /usr/bin/xargs -0 \"%@\" -l -o \"%@\" < \"%@\" 2>&1 > /dev/null",
tempDir, gcovPath, folderPath, fileListPath];
- NSString *stdErr = nil;
- NSString *stdOut = [runner run:script standardError:&stdErr];
- if (([stdOut length] == 0) || ([stdErr length] > 0)) {
- // we don't actually care about stdout since it's just the files
- // that did work.
- NSEnumerator *enumerator = [[stdErr componentsSeparatedByString:@"\n"] objectEnumerator];
- NSString *message;
- while ((message = [enumerator nextObject])) {
- NSRange range = [message rangeOfString:@":"];
- NSString *path = nil;
- if (range.length != 0) {
+ NSString *stdErr = [runner run:script];
+ NSEnumerator *enumerator = [[stdErr componentsSeparatedByString:@"\n"] objectEnumerator];
+ NSString *message;
+ while ((message = [enumerator nextObject])) {
+ NSRange range = [message rangeOfString:@":"];
+ NSString *path = nil;
+ if (range.length != 0) {
path = [message substringToIndex:range.location];
message = [message substringFromIndex:NSMaxRange(range)];
- }
- [self addMessageFromThread:message
- path:path
- messageType:kCSMessageTypeError];
}
+ [self addMessageFromThread:message
+ path:path
+ messageType:kCSMessageTypeError];
}
+
// since we batch process, we might have gotten some data even w/ an error
// so we check anyways for data
Index: CoverStoryPreferenceKeys.h
===================================================================
--- CoverStoryPreferenceKeys.h (revision 175)
+++ CoverStoryPreferenceKeys.h (working copy)
@@ -34,6 +34,10 @@
#define kCoverStoryNonFeasibleLineColorKey @"nonFeasibleLineColor" // NSColor
#define kCoverStoryExecutedLineColorKey @"executedLineColor" // NSColor
+// Scrollbar preferences
+#define kCoverStoryMissedLineScrollbarKey @"scrollbarColorsMissingCode"
+#define kCoverStoryExecutedLineScrollbarKey @"scrollbarColorsExecutedCode"
+
#define kCoverStoryFilterStringTypeKey @"filterStringType" // CoverStoryFilterStringType
enum {
Index: CoverStoryValueTransformers.m
===================================================================
--- CoverStoryValueTransformers.m (revision 175)
+++ CoverStoryValueTransformers.m (working copy)
@@ -81,6 +81,10 @@
kCoverStoryNonFeasibleLineColorKey,
[NSArchiver archivedDataWithRootObject:[NSColor blackColor]],
kCoverStoryExecutedLineColorKey,
+ [NSNumber numberWithBool:YES],
+ kCoverStoryMissedLineScrollbarKey,
+ [NSNumber numberWithBool:NO],
+ kCoverStoryExecutedLineScrollbarKey,
nil];
[defaults registerDefaults:lineTransformerDefaults];
Index: CoverStoryApplicationDelegate.m
===================================================================
--- CoverStoryApplicationDelegate.m (revision 175)
+++ CoverStoryApplicationDelegate.m (working copy)
@@ -98,7 +98,9 @@
return ([key isEqualToString:@"nonFeasibleLineColor"] ||
[key isEqualToString:@"unexecutableLineColor"] ||
[key isEqualToString:@"missedLineColor"] ||
- [key isEqualToString:@"executedLineColor"]);
+ [key isEqualToString:@"executedLineColor"] ||
+ [key isEqualToString:kCoverStoryMissedLineScrollbarKey] ||
+ [key isEqualToString:kCoverStoryExecutedLineScrollbarKey]);
}
@end
Index: CoverStoryScroller.m
===================================================================
--- CoverStoryScroller.m (revision 175)
+++ CoverStoryScroller.m (working copy)
@@ -19,15 +19,76 @@
#import "CoverStoryScroller.h"
#import "CoverStoryCoverageData.h"
+#import "CoverStoryPreferenceKeys.h"
+#import "NSUserDefaultsController+KeyValues.h"
#import <Carbon/Carbon.h>
+static NSString *const kPrefsToWatch[] = {
+ kCoverStoryExecutedLineScrollbarKey,
+ kCoverStoryMissedLineScrollbarKey,
+ kCoverStoryMissedLineColorKey,
+ kCoverStoryExecutedLineColorKey
+};
+
@implementation CoverStoryScroller
- (void)dealloc {
[coverageData_ release];
+ NSUserDefaultsController *defaults = [NSUserDefaultsController sharedUserDefaultsController];
+ for (size_t i = 0; i < sizeof(kPrefsToWatch) / sizeof(kPrefsToWatch[0]); ++i) {
+ [defaults removeObserver:self
+ forKeyPath:[NSUserDefaultsController cs_valuesKey:kPrefsToWatch[i]]];
+ }
[super dealloc];
}
+- (id)initWithFrame:(NSRect)frameRect {
+ if ((self = [super initWithFrame:frameRect])) {
+ NSUserDefaultsController *defaults = [NSUserDefaultsController sharedUserDefaultsController];
+ for (size_t i = 0; i < sizeof(kPrefsToWatch) / sizeof(kPrefsToWatch[0]); ++i) {
+ [defaults addObserver:self
+ forKeyPath:[NSUserDefaultsController cs_valuesKey:kPrefsToWatch[i]]
+ options:NSKeyValueObservingOptionNew
+ context:nil];
+ }
+ }
+ return self;
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath
+ ofObject:(id)object
+ change:(NSDictionary *)change
+ context:(void *)context {
+ BOOL handled = NO;
+ NSString *const kColorsToWatch[] = {
+ kCoverStoryExecutedLineScrollbarKey,
+ kCoverStoryMissedLineScrollbarKey,
+ kCoverStoryMissedLineColorKey,
+ kCoverStoryExecutedLineColorKey
+ };
+ for (size_t i = 0; i < sizeof(kPrefsToWatch) / sizeof(kPrefsToWatch[0]); ++i) {
+ if ([keyPath isEqualToString:[NSUserDefaultsController cs_valuesKey:kColorsToWatch[i]]]) {
+ [self setNeedsDisplay];
+ handled = YES;
+ }
+ }
+ if (!handled) {
+ _GTMDevLog(@"Unexpected observance of %@ of %@ (%@)", keyPath, object, change);
+ }
+}
+
+- (NSColor *)colorForKey:(NSString *)key {
+ NSUserDefaultsController *defaults
+ = [NSUserDefaultsController sharedUserDefaultsController];
+ id values = [defaults values];
+ NSData *colorData = [values valueForKey:key];
+ NSColor *color = nil;
+ if (colorData) {
+ color = (NSColor *)[NSUnarchiver unarchiveObjectWithData:colorData];
+ }
+ return color;
+}
+
- (void)drawRect:(NSRect)rect {
NSRect bounds = [self bounds];
@@ -66,10 +127,16 @@
// If we have coverage data, draw the lines to denote lines we didn't hit
// over the track. Note that this looks FAR better than Shark's impl.
+ NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+ BOOL showExecuted = [[ud objectForKey:kCoverStoryExecutedLineScrollbarKey] boolValue];
+ BOOL showMissing = [[ud objectForKey:kCoverStoryMissedLineScrollbarKey] boolValue];
+ NSColor *executedColor = [self colorForKey:kCoverStoryExecutedLineColorKey];
+ NSColor *missingColor = [self colorForKey:kCoverStoryMissedLineColorKey];
+
if (coverageData_) {
NSRect slot = [self rectForPart:NSScrollerKnobSlot];
NSUInteger count = [coverageData_ count];
- [[[NSColor redColor] colorWithAlphaComponent:0.8] set];
+// [[[NSColor redColor] colorWithAlphaComponent:0.8] set];
CGFloat oldLineWidth = [NSBezierPath defaultLineWidth];
// Make our lines thick enough that they "touch" when you have two lines
@@ -78,11 +145,18 @@
for (NSUInteger i = 0; i < count; ++i) {
CoverStoryCoverageLineData *data = [coverageData_ objectAtIndex:i];
NSInteger hitCount = [data hitCount];
- if (hitCount == 0) {
+ if (hitCount == kCoverStoryNonFeasibleMarker || hitCount == kCoverStoryNotExecutedMarker) {
+
+ } else if (hitCount == 0 && showMissing) {
CGFloat y = NSMinY(slot) + NSHeight(slot) * ((CGFloat)i / (CGFloat)count);
-
+ [missingColor set];
[NSBezierPath strokeLineFromPoint:NSMakePoint(NSMinX(slot), y)
toPoint:NSMakePoint(NSMinX(slot) + NSWidth(slot), y)];
+ } else if (hitCount != 0 && showExecuted) {
+ CGFloat y = NSMinY(slot) + NSHeight(slot) * ((CGFloat)i / (CGFloat)count);
+ [executedColor set];
+ [NSBezierPath strokeLineFromPoint:NSMakePoint(NSMinX(slot), y)
+ toPoint:NSMakePoint(NSMinX(slot) + NSWidth(slot), y)];
}
}
[NSBezierPath setDefaultLineWidth:oldLineWidth];
Index: CoverStory.xcodeproj/project.pbxproj
===================================================================
--- CoverStory.xcodeproj/project.pbxproj (revision 175)
+++ CoverStory.xcodeproj/project.pbxproj (working copy)
@@ -313,8 +313,11 @@
19C28FB0FE9D524F11CA2CBB /* Products */,
);
comments = "Copyright 2006-2007 Google Inc.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy\nof the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n";
+ indentWidth = 2;
name = Gcover;
sourceTree = "<group>";
+ tabWidth = 2;
+ usesTabs = 0;
};
2A37F4ABFDCFA73011CA2CEA /* Classes */ = {
isa = PBXGroup;
Index: English.lproj/MainMenu.xib
===================================================================
--- English.lproj/MainMenu.xib (revision 175)
+++ English.lproj/MainMenu.xib (working copy)
@@ -2,34 +2,34 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
- <string key="IBDocument.SystemVersion">11D50b</string>
- <string key="IBDocument.InterfaceBuilderVersion">2177</string>
- <string key="IBDocument.AppKitVersion">1138.32</string>
- <string key="IBDocument.HIToolboxVersion">568.00</string>
+ <string key="IBDocument.SystemVersion">12C60</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+ <string key="IBDocument.AppKitVersion">1187.34</string>
+ <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">2177</string>
+ <string key="NS.object.0">2844</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
- <string>NSTableColumn</string>
- <string>NSScroller</string>
<string>NSArrayController</string>
+ <string>NSBox</string>
+ <string>NSButton</string>
+ <string>NSButtonCell</string>
+ <string>NSColorWell</string>
+ <string>NSCustomObject</string>
+ <string>NSMenu</string>
<string>NSMenuItem</string>
- <string>NSMenu</string>
- <string>NSTextFieldCell</string>
<string>NSScrollView</string>
- <string>NSButton</string>
- <string>NSBox</string>
- <string>NSColorWell</string>
- <string>NSTableView</string>
+ <string>NSScroller</string>
<string>NSTabView</string>
- <string>NSButtonCell</string>
- <string>NSCustomObject</string>
<string>NSTabViewItem</string>
+ <string>NSTableColumn</string>
+ <string>NSTableView</string>
+ <string>NSTextField</string>
+ <string>NSTextFieldCell</string>
+ <string>NSUserDefaultsController</string>
<string>NSView</string>
<string>NSWindowTemplate</string>
- <string>NSTextField</string>
- <string>NSUserDefaultsController</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -604,6 +604,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="670406273"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSIsBordered">YES</bool>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">1</int>
@@ -619,7 +620,7 @@
<reference key="NSNextKeyView" ref="321358157"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="67388393">
- <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int>
<string key="NSContents">Executed:</string>
<object class="NSFont" key="NSSupport" id="840871038">
@@ -647,6 +648,7 @@
</object>
</object>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="988329934">
<reference key="NSNextResponder" ref="357742092"/>
@@ -657,7 +659,7 @@
<reference key="NSNextKeyView" ref="139789889"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="123933493">
- <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int>
<string key="NSContents">Missed:</string>
<reference key="NSSupport" ref="840871038"/>
@@ -665,6 +667,7 @@
<reference key="NSBackgroundColor" ref="322730286"/>
<reference key="NSTextColor" ref="106791893"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSColorWell" id="139789889">
<reference key="NSNextResponder" ref="357742092"/>
@@ -677,6 +680,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="461463351"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSIsBordered">YES</bool>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">1</int>
@@ -692,8 +696,9 @@
<string key="NSFrame">{{254, 14}, {44, 23}}</string>
<reference key="NSSuperview" ref="357742092"/>
<reference key="NSWindow"/>
- <reference key="NSNextKeyView"/>
+ <reference key="NSNextKeyView" ref="434732748"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSIsBordered">YES</bool>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">1</int>
@@ -709,7 +714,7 @@
<reference key="NSNextKeyView" ref="597702624"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="216354336">
- <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int>
<string key="NSContents">Non-Feasible:</string>
<reference key="NSSupport" ref="840871038"/>
@@ -717,6 +722,7 @@
<reference key="NSBackgroundColor" ref="322730286"/>
<reference key="NSTextColor" ref="106791893"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSColorWell" id="237870642">
<reference key="NSNextResponder" ref="357742092"/>
@@ -729,6 +735,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="988329934"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSIsBordered">YES</bool>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">1</int>
@@ -744,7 +751,7 @@
<reference key="NSNextKeyView" ref="237870642"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="305258036">
- <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">71304192</int>
<string key="NSContents">Unexecutable:</string>
<reference key="NSSupport" ref="840871038"/>
@@ -752,6 +759,7 @@
<reference key="NSBackgroundColor" ref="322730286"/>
<reference key="NSTextColor" ref="106791893"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{1, 1}, {316, 78}}</string>
@@ -766,7 +774,7 @@
<reference key="NSNextKeyView" ref="357742092"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Code Line Color</string>
<object class="NSFont" key="NSSupport" id="26">
@@ -794,6 +802,65 @@
<int key="NSTitlePosition">2</int>
<bool key="NSTransparent">NO</bool>
</object>
+ <object class="NSButton" id="616024121">
+ <reference key="NSNextResponder" ref="939474281"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{7, 15}, {316, 18}}</string>
+ <reference key="NSSuperview" ref="939474281"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView"/>
+ <string key="NSReuseIdentifierKey">_NS:9</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="275728394">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">268435456</int>
+ <string key="NSContents">Scrollbar colors missing code</string>
+ <reference key="NSSupport" ref="840871038"/>
+ <string key="NSCellIdentifier">_NS:9</string>
+ <reference key="NSControlView" ref="616024121"/>
+ <int key="NSButtonFlags">1211912448</int>
+ <int key="NSButtonFlags2">2</int>
+ <object class="NSCustomResource" key="NSNormalImage" id="75408556">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSSwitch</string>
+ </object>
+ <object class="NSButtonImageSource" key="NSAlternateImage" id="352824084">
+ <string key="NSImageName">NSSwitch</string>
+ </object>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
+ <object class="NSButton" id="434732748">
+ <reference key="NSNextResponder" ref="939474281"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{7, 35}, {216, 18}}</string>
+ <reference key="NSSuperview" ref="939474281"/>
+ <reference key="NSWindow"/>
+ <reference key="NSNextKeyView" ref="616024121"/>
+ <string key="NSReuseIdentifierKey">_NS:9</string>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="427996002">
+ <int key="NSCellFlags">-2080374784</int>
+ <int key="NSCellFlags2">268435456</int>
+ <string key="NSContents">Scrollbar colors executed code</string>
+ <reference key="NSSupport" ref="840871038"/>
+ <string key="NSCellIdentifier">_NS:9</string>
+ <reference key="NSControlView" ref="434732748"/>
+ <int key="NSButtonFlags">1211912448</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="75408556"/>
+ <reference key="NSAlternateImage" ref="352824084"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ </object>
</array>
<string key="NSFrame">{{10, 33}, {330, 180}}</string>
<reference key="NSSuperview" ref="848249734"/>
@@ -817,25 +884,21 @@
<reference key="NSSuperview" ref="10292052"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="242961588">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Show Unittest Sources by default</string>
<reference key="NSSupport" ref="840871038"/>
<reference key="NSControlView" ref="240725067"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
- <object class="NSCustomResource" key="NSNormalImage" id="933259830">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSSwitch</string>
- </object>
- <object class="NSButtonImageSource" key="NSAlternateImage" id="352824084">
- <string key="NSImageName">NSSwitch</string>
- </object>
+ <reference key="NSNormalImage" ref="75408556"/>
+ <reference key="NSAlternateImage" ref="352824084"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="456868607">
<reference key="NSNextResponder" ref="10292052"/>
@@ -844,20 +907,21 @@
<reference key="NSSuperview" ref="10292052"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="257661089">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Show SDK Sources by default</string>
<reference key="NSSupport" ref="840871038"/>
<reference key="NSControlView" ref="456868607"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="933259830"/>
+ <reference key="NSNormalImage" ref="75408556"/>
<reference key="NSAlternateImage" ref="352824084"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="291113694">
<reference key="NSNextResponder" ref="10292052"/>
@@ -866,20 +930,21 @@
<reference key="NSSuperview" ref="10292052"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="250362087">
- <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Hide common path prefix by default</string>
<reference key="NSSupport" ref="840871038"/>
<reference key="NSControlView" ref="291113694"/>
- <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
- <reference key="NSNormalImage" ref="933259830"/>
+ <reference key="NSNormalImage" ref="75408556"/>
<reference key="NSAlternateImage" ref="352824084"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{10, 33}, {330, 180}}</string>
@@ -908,6 +973,8 @@
<string key="NSFrameSize">{279, 95}</string>
<reference key="NSSuperview" ref="786763745"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -919,7 +986,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -935,7 +1002,7 @@
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="955219">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="840871038"/>
@@ -990,6 +1057,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{280, 1}, {15, 95}}</string>
<reference key="NSSuperview" ref="618059860"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="618059860"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99166670000000001</double>
@@ -999,6 +1067,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {279, 15}}</string>
<reference key="NSSuperview" ref="618059860"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="618059860"/>
<string key="NSAction">_doScroller:</string>
@@ -1013,6 +1082,9 @@
<reference key="NSHScroller" ref="89842502"/>
<reference key="NSContentView" ref="786763745"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="427083777">
<reference key="NSNextResponder" ref="929677970"/>
@@ -1021,12 +1093,12 @@
<reference key="NSSuperview" ref="929677970"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="166489300">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Add</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="427083777"/>
- <int key="NSButtonFlags">-2033958657</int>
+ <int key="NSButtonFlags">-2033958912</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage" id="855922687">
<string key="NSClassName">NSImage</string>
@@ -1037,6 +1109,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="236707297">
<reference key="NSNextResponder" ref="929677970"/>
@@ -1045,12 +1118,12 @@
<reference key="NSSuperview" ref="929677970"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="116587437">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">-</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="236707297"/>
- <int key="NSButtonFlags">-2033958657</int>
+ <int key="NSButtonFlags">-2033958912</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage" id="858289531">
<string key="NSClassName">NSImage</string>
@@ -1061,6 +1134,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="548592949">
<reference key="NSNextResponder" ref="929677970"/>
@@ -1069,7 +1143,7 @@
<reference key="NSSuperview" ref="929677970"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="891999266">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">138543104</int>
<string key="NSContents">Files matching these wildcard patterns are considered Unittest Sources.</string>
<reference key="NSSupport" ref="26"/>
@@ -1077,6 +1151,7 @@
<reference key="NSBackgroundColor" ref="322730286"/>
<reference key="NSTextColor" ref="106791893"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{10, 33}, {330, 180}}</string>
@@ -1105,6 +1180,8 @@
<string key="NSFrameSize">{279, 95}</string>
<reference key="NSSuperview" ref="14041997"/>
<bool key="NSEnabled">YES</bool>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
+ <bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -1116,7 +1193,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
@@ -1127,7 +1204,7 @@
<reference key="NSTextColor" ref="130015957"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="6457716">
- <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="840871038"/>
@@ -1169,6 +1246,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{280, 1}, {15, 95}}</string>
<reference key="NSSuperview" ref="469200709"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="469200709"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99166670000000001</double>
@@ -1178,6 +1256,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {279, 15}}</string>
<reference key="NSSuperview" ref="469200709"/>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="469200709"/>
<string key="NSAction">_doScroller:</string>
@@ -1192,6 +1271,9 @@
<reference key="NSHScroller" ref="639882635"/>
<reference key="NSContentView" ref="14041997"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ <double key="NSMinMagnification">0.25</double>
+ <double key="NSMaxMagnification">4</double>
+ <double key="NSMagnification">1</double>
</object>
<object class="NSButton" id="217890443">
<reference key="NSNextResponder" ref="419362158"/>
@@ -1200,12 +1282,12 @@
<reference key="NSSuperview" ref="419362158"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="560023526">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">Add</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="217890443"/>
- <int key="NSButtonFlags">-2033958657</int>
+ <int key="NSButtonFlags">-2033958912</int>
<int key="NSButtonFlags2">6</int>
<reference key="NSNormalImage" ref="855922687"/>
<string key="NSAlternateContents"/>
@@ -1213,6 +1295,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="299927459">
<reference key="NSNextResponder" ref="419362158"/>
@@ -1221,12 +1304,12 @@
<reference key="NSSuperview" ref="419362158"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="981840768">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134348800</int>
<string key="NSContents">-</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="299927459"/>
- <int key="NSButtonFlags">-2033958657</int>
+ <int key="NSButtonFlags">-2033958912</int>
<int key="NSButtonFlags2">6</int>
<reference key="NSNormalImage" ref="858289531"/>
<string key="NSAlternateContents"/>
@@ -1234,6 +1317,7 @@
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="238543667">
<reference key="NSNextResponder" ref="419362158"/>
@@ -1242,7 +1326,7 @@
<reference key="NSSuperview" ref="419362158"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="433538496">
- <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">138543104</int>
<string key="NSContents">Files matching these wildcard patterns are considered SDK Sources.</string>
<reference key="NSSupport" ref="26"/>
@@ -1250,6 +1334,7 @@
<reference key="NSBackgroundColor" ref="322730286"/>
<reference key="NSTextColor" ref="106791893"/>
</object>
+ <bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{10, 33}, {330, 180}}</string>
@@ -1273,7 +1358,7 @@
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="848249734"/>
</object>
- <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<string key="NSFrameAutosaveName">Preferences</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -1837,6 +1922,38 @@
</object>
<int key="connectionID">563</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: values.scrollbarColorsMissingCode</string>
+ <reference key="source" ref="616024121"/>
+ <reference key="destination" ref="807702675"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="616024121"/>
+ <reference key="NSDestination" ref="807702675"/>
+ <string key="NSLabel">value: values.scrollbarColorsMissingCode</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">values.scrollbarColorsMissingCode</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">572</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: values.scrollbarColorsExecutedCode</string>
+ <reference key="source" ref="434732748"/>
+ <reference key="destination" ref="807702675"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="434732748"/>
+ <reference key="NSDestination" ref="807702675"/>
+ <string key="NSLabel">value: values.scrollbarColorsExecutedCode</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">values.scrollbarColorsExecutedCode</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">575</int>
+ </object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -2289,6 +2406,8 @@
<reference key="object" ref="939474281"/>
<array class="NSMutableArray" key="children">
<reference ref="863469733"/>
+ <reference ref="616024121"/>
+ <reference ref="434732748"/>
</array>
<reference key="parent" ref="988131577"/>
</object>
@@ -2647,6 +2766,32 @@
<reference key="object" ref="116326335"/>
<reference key="parent" ref="175740262"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">566</int>
+ <reference key="object" ref="616024121"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="275728394"/>
+ </array>
+ <reference key="parent" ref="939474281"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">567</int>
+ <reference key="object" ref="275728394"/>
+ <reference key="parent" ref="616024121"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">568</int>
+ <reference key="object" ref="434732748"/>
+ <array class="NSMutableArray" key="children">
+ <reference ref="427996002"/>
+ </array>
+ <reference key="parent" ref="939474281"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">569</int>
+ <reference key="object" ref="427996002"/>
+ <reference key="parent" ref="434732748"/>
+ </object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -2803,6 +2948,10 @@
<string key="561.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="562.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="564.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="566.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="567.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="568.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="569.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="57.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="72.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2816,7 +2965,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
- <int key="maxID">565</int>
+ <int key="maxID">575</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -2903,7 +3052,6 @@
<string key="messageView_">NSTextView</string>
<string key="searchField_">NSSearchField</string>
<string key="sourceFilesController_">CoverStoryArrayController</string>
- <string key="sourceFilesTableView_">NSTableView</string>
<string key="spinner_">NSProgressIndicator</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -2927,10 +3075,6 @@
<string key="name">sourceFilesController_</string>
<string key="candidateClassName">CoverStoryArrayController</string>
</object>
- <object class="IBToOneOutletInfo" key="sourceFilesTableView_">
- <string key="name">sourceFilesTableView_</string>
- <string key="candidateClassName">NSTableView</string>
- </object>
<object class="IBToOneOutletInfo" key="spinner_">
<string key="name">spinner_</string>
<string key="candidateClassName">NSProgressIndicator</string>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment