Remove undo logic from InputSource and shift it to the UI view controllers.

General improvement of undo when continuous controls are used.
This commit is contained in:
Zakk 2018-02-19 19:25:41 -05:00
parent 348084e121
commit 08585e0611
18 changed files with 849 additions and 331 deletions

View file

@ -13,6 +13,8 @@
3400A07A1BD4533A003E1828 /* CSInputLibraryWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3400A0781BD4533A003E1828 /* CSInputLibraryWindowController.xib */; };
3400A07E1BD49406003E1828 /* CSInputLibraryItemView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3400A07D1BD49406003E1828 /* CSInputLibraryItemView.xib */; };
3400A0841BD522A5003E1828 /* CSLibraryInputItemViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3400A0831BD522A5003E1828 /* CSLibraryInputItemViewController.m */; };
34027499203B6C4B0099328C /* CSColorWell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34027498203B6C4B0099328C /* CSColorWell.m */; };
340274B5203B98130099328C /* CSUndoObjectController.m in Sources */ = {isa = PBXBuildFile; fileRef = 340274B4203B98130099328C /* CSUndoObjectController.m */; };
340620761F2E2BFE0016D997 /* CAMultiAudioInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 340620751F2E2BFE0016D997 /* CAMultiAudioInput.m */; };
3408235519BC677A00CD1F5F /* CSNotifications.m in Sources */ = {isa = PBXBuildFile; fileRef = 3408235419BC530300CD1F5F /* CSNotifications.m */; };
3409A7701FA0D6CC0073866E /* libiconv.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 3409A76F1FA0D6CC0073866E /* libiconv.tbd */; };
@ -623,6 +625,11 @@
3400A07D1BD49406003E1828 /* CSInputLibraryItemView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = CSInputLibraryItemView.xib; path = Interface/CSInputLibraryItemView.xib; sourceTree = "<group>"; };
3400A0821BD522A5003E1828 /* CSLibraryInputItemViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSLibraryInputItemViewController.h; path = Interface/CSLibraryInputItemViewController.h; sourceTree = "<group>"; };
3400A0831BD522A5003E1828 /* CSLibraryInputItemViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CSLibraryInputItemViewController.m; path = Interface/CSLibraryInputItemViewController.m; sourceTree = "<group>"; };
34027497203B6C4B0099328C /* CSColorWell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CSColorWell.h; path = Interface/CSColorWell.h; sourceTree = "<group>"; };
34027498203B6C4B0099328C /* CSColorWell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CSColorWell.m; path = Interface/CSColorWell.m; sourceTree = "<group>"; };
340274B3203B98130099328C /* CSUndoObjectController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CSUndoObjectController.h; path = Interface/CSUndoObjectController.h; sourceTree = "<group>"; };
340274B4203B98130099328C /* CSUndoObjectController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = CSUndoObjectController.m; path = Interface/CSUndoObjectController.m; sourceTree = "<group>"; };
340274B6203B98A60099328C /* CSUndoObjectControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CSUndoObjectControllerDelegate.h; path = Interface/CSUndoObjectControllerDelegate.h; sourceTree = "<group>"; };
340620741F2E2BFE0016D997 /* CAMultiAudioInput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CAMultiAudioInput.h; path = CAMultiAudio/CAMultiAudioInput.h; sourceTree = "<group>"; };
340620751F2E2BFE0016D997 /* CAMultiAudioInput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CAMultiAudioInput.m; path = CAMultiAudio/CAMultiAudioInput.m; sourceTree = "<group>"; };
3408234619BC50AD00CD1F5F /* CSNotifications.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CSNotifications.h; path = PluginHeaders/CSNotifications.h; sourceTree = "<group>"; };
@ -1718,6 +1725,11 @@
34E91E3F2038ECC000E96684 /* CSSourceLayoutSettingsWindowController.h */,
34E91E402038ECC000E96684 /* CSSourceLayoutSettingsWindowController.m */,
34E91E412038ECC000E96684 /* CSSourceLayoutSettingsWindowController.xib */,
34027497203B6C4B0099328C /* CSColorWell.h */,
34027498203B6C4B0099328C /* CSColorWell.m */,
340274B3203B98130099328C /* CSUndoObjectController.h */,
340274B4203B98130099328C /* CSUndoObjectController.m */,
340274B6203B98A60099328C /* CSUndoObjectControllerDelegate.h */,
);
name = Interface;
sourceTree = "<group>";
@ -2842,6 +2854,7 @@
34ED8CAD1B07371C002C0674 /* MIKMIDIUtilities.m in Sources */,
34ED8C7F1B07371C002C0674 /* MIKMIDIMetaLyricEvent.m in Sources */,
34ED8C711B07371C002C0674 /* MIKMIDIMappingManager.m in Sources */,
34027499203B6C4B0099328C /* CSColorWell.m in Sources */,
3481F30619B48C7C00CC76D8 /* SourceLayout+ScriptingAdditions.m in Sources */,
34EAFB6F1A1A137600E12FBD /* CSMeterCell.m in Sources */,
34A77457201449C30036F8B5 /* CSStreamServiceBase.m in Sources */,
@ -2909,6 +2922,7 @@
34B5FB8E1E7FA2610078FC51 /* CSSequenceItemTransitionViewController.m in Sources */,
3494DF391CCD2DB000E921BF /* TPCircularBuffer+AudioBufferList.c in Sources */,
3473D2A61D56391700842EEE /* CSAudioLevelView.m in Sources */,
340274B5203B98130099328C /* CSUndoObjectController.m in Sources */,
3498D94F1A9472BD00906532 /* CSAudioSwitchControl.m in Sources */,
34B5FB731E7E6E0A0078FC51 /* CSSequenceItemLayoutViewController.m in Sources */,
3470CD2E1D57D2AA006404D9 /* CSStreamOutputWindowController.m in Sources */,

View file

@ -47,6 +47,8 @@
-(void)beforeRemove;
-(void)beforeReplace:(bool)removing;
-(void)afterReplace;
-(void)pauseUndoForKeyPath:(NSString *)keyPath;
-(void)resumeUndoForKeyPath:(NSString *)keyPath;
@end

View file

@ -270,6 +270,11 @@ typedef enum resize_style_t {
-(NSViewController *)configurationViewController;
-(NSString *)undoNameForKeyPath:(NSString *)keyPath usingValue:(id)propertyValue;
@property (strong) NSString *scriptStorage;

View file

@ -847,6 +847,7 @@ static NSArray *_sourceTypes = nil;
[CATransaction commit];
_undoActionMap = @{@"name": @"Set Name",
@"crop_top": @"Crop Top",
@"changeInterval": @"Change Interval",
@ -1534,28 +1535,12 @@ static NSArray *_sourceTypes = nil;
}
[self stopObservingConstraintKeys];
self.layer = nil;
}
-(void)setSettingsTab:(NSString *)settingsTab
{
return;
}
-(NSString *)settingsTab
{
if (self.videoInput)
{
return @"Settings";
}
return @"Source";
}
/*
-(NSString *)description
{
@ -3408,28 +3393,6 @@ static NSArray *_sourceTypes = nil;
}
-(void)setValue:(id)value forKeyPath:(NSString *)keyPath
{
NSString *actionName = _undoActionMap[keyPath];
if (!actionName)
{
if ([keyPath isEqualToString:@"isMaskLayer"])
{
actionName = value ? @"Set As Mask" : @"Unset As Mask";
} else if ([keyPath isEqualToString: @"active"]) {
actionName = value ? @"Set Active" : @"Unset Active";
} else if ([keyPath isEqualToString:@"doChromaKey"]) {
actionName = value ? @"Set Chroma Key" : @"Unset Chroma Key";
} else {
actionName = [NSString stringWithFormat:@"Change %@", keyPath];
}
}
[self registerUndoForProperty:keyPath withAction:actionName];
[super setValue:value forKeyPath:keyPath];
}
-(void) setCrop_bottom:(CGFloat)crop_bottom
{
if (crop_bottom < 0)
@ -3443,19 +3406,61 @@ static NSArray *_sourceTypes = nil;
}
-(void)registerUndoForProperty:(NSString *)propName withAction:(NSString *)action
-(NSString *)undoNameForKeyPath:(NSString *)keyPath usingValue:(id)propertyValue
{
id propertyValue = [self valueForKeyPath:propName];
NSString *actionName = _undoActionMap[keyPath];
if (!actionName)
{
if ([keyPath isEqualToString:@"isMaskLayer"])
{
actionName = propertyValue ? @"Set As Mask" : @"Unset As Mask";
} else if ([keyPath isEqualToString: @"active"]) {
actionName = propertyValue ? @"Set Active" : @"Unset Active";
} else if ([keyPath isEqualToString:@"doChromaKey"]) {
actionName = propertyValue ? @"Set Chroma Key" : @"Unset Chroma Key";
} else {
actionName = [NSString stringWithFormat:@"Change %@", keyPath];
}
}
return actionName;
}
-(void)undoNotification:(NSNotification *)notification
{
NSString *keyPath = notification.name;
id propertyValue = notification.object;
NSString *actionName = _undoActionMap[keyPath];
if (!actionName)
{
if ([keyPath isEqualToString:@"isMaskLayer"])
{
actionName = propertyValue ? @"Set As Mask" : @"Unset As Mask";
} else if ([keyPath isEqualToString: @"active"]) {
actionName = propertyValue ? @"Set Active" : @"Unset Active";
} else if ([keyPath isEqualToString:@"doChromaKey"]) {
actionName = propertyValue ? @"Set Chroma Key" : @"Unset Chroma Key";
} else {
actionName = [NSString stringWithFormat:@"Change %@", keyPath];
}
}
[[self.sourceLayout.undoManager prepareWithInvocationTarget:self.sourceLayout] modifyUUID:self.uuid withBlock:^(NSObject<CSInputSourceProtocol> *input) {
[input setValue:propertyValue forKeyPath:propName];
[input pauseUndoForKeyPath:keyPath];
[input setValue:propertyValue forKeyPath:keyPath];
[input resumeUndoForKeyPath:keyPath];
}];
[self.sourceLayout.undoManager setActionName:action];
[self.sourceLayout.undoManager setActionName:actionName];
}
-(void)setChromaKeyColor:(NSColor *)chromaKeyColor
{

View file

@ -0,0 +1,13 @@
//
// CSColorWell.h
// CocoaSplit
//
// Created by Zakk on 2/19/18.
// Copyright © 2018 Zakk. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface CSColorWell : NSColorWell
@end

View file

@ -0,0 +1,32 @@
//
// CSColorWell.m
// CocoaSplit
//
// Created by Zakk on 2/19/18.
// Copyright © 2018 Zakk. All rights reserved.
//
#import "CSColorWell.h"
@implementation CSColorWell
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
}
-(void)activate:(BOOL)exclusive
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"CSColorWellActivated" object:self];
[super activate:exclusive];
}
-(void)deactivate
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"CSColorWellDeactivated" object:self];
[super deactivate];
}
@end

View file

@ -12,5 +12,9 @@
@interface CSSourceLayoutSettingsWindowController : NSWindowController
@property (strong) SourceLayout *layout;
@property (strong) IBOutlet CSLayerFiltersViewController *filterListViewController;
@property (strong) NSArray *scriptTypes;
@property (strong) NSArray *scriptKeys;
- (IBAction)clearGradient:(id)sender;
@end

View file

@ -23,7 +23,7 @@
{
if (self = [self initWithWindowNibName:@"CSSourceLayoutSettingsWindowController"])
{
}
return self;
@ -33,7 +33,12 @@
self.window.title = [NSString stringWithFormat:@"%@ Settings", self.layout.name];
self.filterListViewController.baseLayer = self.layout.rootLayer;
self.filterListViewController.filterArrayName = @"filters";
self.filterListViewController.filterArrayName = @"backgroundFilters";
}
- (IBAction)clearGradient:(id)sender
{
[self.layout clearGradient];
}
@end

View file

@ -4,6 +4,7 @@
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="13771"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
<capability name="system font weights other than Regular or Bold" minToolsVersion="7.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CSSourceLayoutSettingsWindowController">
@ -23,164 +24,227 @@
<rect key="frame" x="0.0" y="0.0" width="539" height="367"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<tabView controlSize="small" translatesAutoresizingMaskIntoConstraints="NO" id="N51-YC-szU">
<rect key="frame" x="-8" y="-10" width="555" height="380"/>
<tabViewItems>
<tabViewItem label="Background" identifier="" id="WRh-ud-ce9">
<view key="view" id="nsV-QA-jTS">
<rect key="frame" x="10" y="25" width="476" height="245"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MUa-3N-zR5">
<rect key="frame" x="15" y="222" width="37" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Color" id="ONh-1a-Emu">
<font key="font" metaFont="systemBold" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<colorWell fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OEl-3s-HAP">
<rect key="frame" x="58" y="217" width="44" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.backgroundColor" id="Am4-Z0-0WN"/>
</connections>
</colorWell>
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Filters" identifier="" id="7Vh-Jb-bqW">
<view key="view" id="J5B-TU-I4g">
<rect key="frame" x="10" y="25" width="476" height="245"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SaM-NK-OoF">
<rect key="frame" x="17" y="17" width="163" height="222"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</customView>
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Scripts" identifier="" id="4tg-8y-wFh">
<view key="view" id="FFW-fe-bLo">
<rect key="frame" x="10" y="25" width="535" height="342"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R4k-nX-MrW">
<rect key="frame" x="17" y="27" width="108" height="309"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<clipView key="contentView" ambiguous="YES" id="cYn-iD-NhA">
<rect key="frame" x="1" y="0.0" width="106" height="308"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="Qsz-py-OAj" viewBased="YES" id="IgD-7a-S1h">
<rect key="frame" x="0.0" y="0.0" width="106" height="285"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn identifier="" width="103" minWidth="40" maxWidth="1000" id="epp-VC-IuG">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="JZD-Zk-OE2">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="IwF-nX-hfZ">
<rect key="frame" x="1" y="1" width="103" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9R9-Yh-ft0">
<rect key="frame" x="0.0" y="0.0" width="103" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="eUE-go-3G0">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="9R9-Yh-ft0" id="1oo-aP-SBf"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="e2N-ed-s5O">
<rect key="frame" x="1" y="119" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="Uih-zP-evn">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="Qsz-py-OAj">
<rect key="frame" x="0.0" y="0.0" width="106" height="23"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<scrollView fixedFrame="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KwX-8F-jjG">
<rect key="frame" x="133" y="27" width="385" height="309"/>
<autoresizingMask key="autoresizingMask"/>
<clipView key="contentView" ambiguous="YES" id="JzO-1g-gFL">
<rect key="frame" x="1" y="1" width="368" height="307"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView ambiguous="YES" importsGraphics="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" continuousSpellChecking="YES" allowsUndo="YES" usesRuler="YES" allowsNonContiguousLayout="YES" quoteSubstitution="YES" dashSubstitution="YES" spellingCorrection="YES" smartInsertDelete="YES" id="n5g-ii-Lac">
<rect key="frame" x="0.0" y="0.0" width="368" height="307"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<size key="minSize" width="368" height="307"/>
<size key="maxSize" width="463" height="10000000"/>
<color key="insertionPointColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</textView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="v0t-Ar-UBU">
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="lfg-YI-nYT">
<rect key="frame" x="369" y="1" width="15" height="307"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
</view>
</tabViewItem>
</tabViewItems>
</tabView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2fv-pd-xyN">
<rect key="frame" x="18" y="303" width="35" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Color" id="at5-sM-qpE">
<font key="font" metaFont="systemBold" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XQs-Q5-9Tk">
<rect key="frame" x="238" y="329" width="81" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Layout Filters" id="RlR-hz-CUI">
<font key="font" metaFont="systemBold" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="zXB-vs-p2W">
<rect key="frame" x="59" y="298" width="44" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="XNm-EY-9Bj"/>
</constraints>
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.backgroundColor" id="gXX-Dl-28B"/>
</connections>
</colorWell>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0ju-an-7Bp">
<rect key="frame" x="18" y="271" width="117" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Gradient Start Color" id="c9b-96-XmL">
<font key="font" metaFont="systemBold" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yw0-1V-zB6">
<rect key="frame" x="18" y="219" width="115" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Gradient Stop Color" id="VLF-s4-fsm">
<font key="font" metaFont="systemBold" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="53z-GX-FoC">
<rect key="frame" x="135" y="267" width="44" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="2Fh-sX-Owq"/>
</constraints>
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.startColor" id="3aY-xl-Xbx"/>
</connections>
</colorWell>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="xUy-oN-1M2">
<rect key="frame" x="135" y="215" width="44" height="23"/>
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.stopColor" id="QZT-5h-n6i"/>
</connections>
</colorWell>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qx5-FK-lcz">
<rect key="frame" x="18" y="190" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="JBY-A8-HBF">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Pvs-aT-PV9">
<rect key="frame" x="81" y="246" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="icH-8z-mmq">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KEe-6T-NB7">
<rect key="frame" x="81" y="190" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="tbw-WQ-dWP">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Xhp-H2-s8L">
<rect key="frame" x="18" y="246" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="0eF-kY-W83">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mW0-EH-h4N">
<rect key="frame" x="36" y="188" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Xk7-2r-oS3">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.gradientStopX" id="kFY-Wg-VlC"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Igd-at-NN1">
<rect key="frame" x="36" y="244" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="eLL-ME-Khv">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.gradientStartX" id="9LN-rK-Uaw"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZgD-RH-xh3">
<rect key="frame" x="99" y="244" width="39" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="39" id="RFh-lr-gs4"/>
</constraints>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="FfQ-wC-3eN">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.gradientStartY" id="Vee-tn-qme"/>
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UGt-Sv-bUJ">
<rect key="frame" x="15" y="156" width="103" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="93" id="MC0-KP-s8S"/>
</constraints>
<buttonCell key="cell" type="push" title="Clear Gradient" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="dqs-rR-qjG">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="clearGradient:" target="-2" id="jjf-xr-l20"/>
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="09T-yS-Bcl">
<rect key="frame" x="99" y="188" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="sma-Zr-JHc">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="value" keyPath="self.layout.gradientStopY" id="pEE-SG-guc"/>
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Uhd-Rp-49T">
<rect key="frame" x="18" y="329" width="74" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Background" id="rNI-x0-3Qf">
<font key="font" metaFont="systemHeavy" size="11"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="wfY-bj-xEX">
<rect key="frame" x="240" y="20" width="279" height="301"/>
</customView>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="N51-YC-szU" secondAttribute="bottom" id="BBJ-t0-B6u"/>
<constraint firstItem="N51-YC-szU" firstAttribute="centerX" secondItem="se5-gp-TjO" secondAttribute="centerX" id="II3-Q4-vBv"/>
<constraint firstItem="N51-YC-szU" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="aOZ-cy-svG"/>
<constraint firstItem="N51-YC-szU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="-1" id="ecS-gq-hl4"/>
<constraint firstItem="ZgD-RH-xh3" firstAttribute="leading" secondItem="09T-yS-Bcl" secondAttribute="leading" id="1ji-So-dOP"/>
<constraint firstItem="zXB-vs-p2W" firstAttribute="top" secondItem="Uhd-Rp-49T" secondAttribute="bottom" constant="8" symbolic="YES" id="2PE-cv-WNA"/>
<constraint firstAttribute="bottom" secondItem="wfY-bj-xEX" secondAttribute="bottom" constant="20" symbolic="YES" id="2yq-Mw-4gW"/>
<constraint firstItem="wfY-bj-xEX" firstAttribute="leading" secondItem="53z-GX-FoC" secondAttribute="trailing" constant="61" id="48q-dJ-8fj"/>
<constraint firstItem="xUy-oN-1M2" firstAttribute="top" secondItem="53z-GX-FoC" secondAttribute="bottom" constant="29" id="4rR-a3-VnB"/>
<constraint firstItem="2fv-pd-xyN" firstAttribute="leading" secondItem="0ju-an-7Bp" secondAttribute="leading" id="5bh-hA-7cm"/>
<constraint firstItem="2fv-pd-xyN" firstAttribute="top" secondItem="Uhd-Rp-49T" secondAttribute="bottom" constant="12" id="5vg-dZ-6C7"/>
<constraint firstItem="Igd-at-NN1" firstAttribute="baseline" secondItem="ZgD-RH-xh3" secondAttribute="baseline" id="8yS-Px-Y8D"/>
<constraint firstItem="Igd-at-NN1" firstAttribute="leading" secondItem="mW0-EH-h4N" secondAttribute="leading" id="AMa-30-UKL"/>
<constraint firstItem="Uhd-Rp-49T" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="BRO-oN-7mw"/>
<constraint firstItem="zXB-vs-p2W" firstAttribute="top" secondItem="wfY-bj-xEX" secondAttribute="top" id="BYt-NG-x3B"/>
<constraint firstItem="53z-GX-FoC" firstAttribute="leading" secondItem="xUy-oN-1M2" secondAttribute="leading" id="Cji-OP-Kmd"/>
<constraint firstItem="ZgD-RH-xh3" firstAttribute="leading" secondItem="Pvs-aT-PV9" secondAttribute="trailing" constant="8" symbolic="YES" id="DiE-Y7-FIs"/>
<constraint firstItem="Xhp-H2-s8L" firstAttribute="centerY" secondItem="Igd-at-NN1" secondAttribute="centerY" id="DjY-ej-Uxb"/>
<constraint firstItem="0ju-an-7Bp" firstAttribute="centerY" secondItem="53z-GX-FoC" secondAttribute="centerY" id="E4l-Eh-NR2"/>
<constraint firstItem="ZgD-RH-xh3" firstAttribute="trailing" secondItem="09T-yS-Bcl" secondAttribute="trailing" id="K1B-qr-kSr"/>
<constraint firstItem="Igd-at-NN1" firstAttribute="top" secondItem="0ju-an-7Bp" secondAttribute="bottom" constant="8" symbolic="YES" id="K63-AV-12u"/>
<constraint firstItem="53z-GX-FoC" firstAttribute="trailing" secondItem="xUy-oN-1M2" secondAttribute="trailing" id="KSz-iL-37Y"/>
<constraint firstItem="UGt-Sv-bUJ" firstAttribute="centerY" secondItem="wfY-bj-xEX" secondAttribute="centerY" id="Khz-Ki-Jbn"/>
<constraint firstItem="Pvs-aT-PV9" firstAttribute="leading" secondItem="KEe-6T-NB7" secondAttribute="leading" id="LCc-oW-qWM"/>
<constraint firstItem="KEe-6T-NB7" firstAttribute="leading" secondItem="mW0-EH-h4N" secondAttribute="trailing" constant="8" symbolic="YES" id="Mvm-tn-7qR"/>
<constraint firstItem="mW0-EH-h4N" firstAttribute="baseline" secondItem="09T-yS-Bcl" secondAttribute="baseline" id="P2b-Q0-0oH"/>
<constraint firstItem="0ju-an-7Bp" firstAttribute="top" secondItem="zXB-vs-p2W" secondAttribute="bottom" constant="13" id="S15-q1-aE5"/>
<constraint firstItem="Qx5-FK-lcz" firstAttribute="centerY" secondItem="mW0-EH-h4N" secondAttribute="centerY" id="UuH-6V-bB2"/>
<constraint firstItem="yw0-1V-zB6" firstAttribute="centerY" secondItem="xUy-oN-1M2" secondAttribute="centerY" id="V81-Pn-rsN"/>
<constraint firstItem="Xhp-H2-s8L" firstAttribute="leading" secondItem="yw0-1V-zB6" secondAttribute="leading" id="WJ1-cK-2Fa"/>
<constraint firstItem="0ju-an-7Bp" firstAttribute="leading" secondItem="Xhp-H2-s8L" secondAttribute="leading" id="Yvd-dE-rJk"/>
<constraint firstAttribute="trailing" secondItem="wfY-bj-xEX" secondAttribute="trailing" constant="20" symbolic="YES" id="Z7u-P2-CZq"/>
<constraint firstItem="zXB-vs-p2W" firstAttribute="leading" secondItem="2fv-pd-xyN" secondAttribute="trailing" constant="8" symbolic="YES" id="aPR-cy-qnl"/>
<constraint firstItem="Qx5-FK-lcz" firstAttribute="baseline" secondItem="KEe-6T-NB7" secondAttribute="baseline" id="aTl-Lx-cbK"/>
<constraint firstItem="2fv-pd-xyN" firstAttribute="centerY" secondItem="zXB-vs-p2W" secondAttribute="centerY" id="aas-al-5Zx"/>
<constraint firstItem="yw0-1V-zB6" firstAttribute="top" secondItem="Igd-at-NN1" secondAttribute="bottom" constant="11" id="bGT-sT-fiB"/>
<constraint firstItem="Uhd-Rp-49T" firstAttribute="leading" secondItem="2fv-pd-xyN" secondAttribute="leading" id="kf8-8h-UZi"/>
<constraint firstItem="mW0-EH-h4N" firstAttribute="top" secondItem="yw0-1V-zB6" secondAttribute="bottom" constant="12" id="mbU-VR-odF"/>
<constraint firstItem="Uhd-Rp-49T" firstAttribute="centerX" secondItem="Igd-at-NN1" secondAttribute="centerX" id="ne5-sB-Zyx"/>
<constraint firstItem="53z-GX-FoC" firstAttribute="leading" secondItem="0ju-an-7Bp" secondAttribute="trailing" constant="2" id="nkf-NI-IiQ"/>
<constraint firstItem="Igd-at-NN1" firstAttribute="leading" secondItem="Xhp-H2-s8L" secondAttribute="trailing" constant="8" symbolic="YES" id="o1x-Xe-4bS"/>
<constraint firstItem="Uhd-Rp-49T" firstAttribute="baseline" secondItem="XQs-Q5-9Tk" secondAttribute="baseline" id="o2q-Bs-u1f"/>
<constraint firstItem="XQs-Q5-9Tk" firstAttribute="leading" secondItem="wfY-bj-xEX" secondAttribute="leading" id="oEm-xw-aZA"/>
<constraint firstItem="yw0-1V-zB6" firstAttribute="leading" secondItem="Qx5-FK-lcz" secondAttribute="leading" id="rq0-1n-0Qu"/>
<constraint firstItem="Qx5-FK-lcz" firstAttribute="leading" secondItem="UGt-Sv-bUJ" secondAttribute="leading" id="t0K-km-TQA"/>
<constraint firstItem="09T-yS-Bcl" firstAttribute="top" secondItem="xUy-oN-1M2" secondAttribute="bottom" constant="8" symbolic="YES" id="vdL-Et-YDx"/>
<constraint firstItem="Xhp-H2-s8L" firstAttribute="baseline" secondItem="Pvs-aT-PV9" secondAttribute="baseline" id="wsu-QZ-fnm"/>
<constraint firstItem="UGt-Sv-bUJ" firstAttribute="top" secondItem="mW0-EH-h4N" secondAttribute="bottom" constant="8" symbolic="YES" id="ySV-fL-rMQ"/>
<constraint firstItem="Pvs-aT-PV9" firstAttribute="leading" secondItem="Igd-at-NN1" secondAttribute="trailing" constant="8" symbolic="YES" id="zW3-Py-sbU"/>
</constraints>
</view>
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="161.5" y="208.5"/>
<point key="canvasLocation" x="194.5" y="74.5"/>
</window>
<viewController id="q5F-Us-lTS" userLabel="filtersViewController" customClass="CSLayerFiltersViewController">
<connections>
<outlet property="parentView" destination="SaM-NK-OoF" id="TUv-ol-cuA"/>
<outlet property="parentView" destination="wfY-bj-xEX" id="62R-jN-yRv"/>
</connections>
</viewController>
<userDefaultsController representsSharedInstance="YES" id="HoJ-nO-6ch"/>
</objects>
</document>

View file

@ -977,6 +977,23 @@
-(NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
{
if (!window.identifier)
{
return nil;
}
InputPopupControllerViewController *inputController = [_activeConfigControllers objectForKey:window.identifier];
if (!inputController || !inputController.inputSource)
{
return nil;
}
return inputController.inputSource.sourceLayout.undoManager;
}
-(NSPoint)openInputConfigWindow:(NSObject <CSInputSourceProtocol>*)configSrc withCascade:(NSPoint)cascadePoint
{

View file

@ -0,0 +1,23 @@
//
// CSUndoObjectController.h
// CocoaSplit
//
// Created by Zakk on 2/19/18.
//
#import <Cocoa/Cocoa.h>
#import "CSUndoObjectControllerDelegate.h"
@interface CSUndoObjectController : NSObjectController
{
NSNotificationCenter *_undoNotificationCenter;
NSNotificationQueue *_undoNotificationQueue;
NSMutableDictionary *_pausedUndoKeys;
}
@property (weak) id<CSUndoObjectControllerDelegate> undoDelegate;
-(void)pauseUndoForKeyPath:(NSString *)keyPath;
-(void)resumeUndoForKeyPath:(NSString *)keyPath;
@end

View file

@ -0,0 +1,78 @@
//
// CSUndoObjectController.m
// CocoaSplit
//
// Created by Zakk on 2/19/18.
//
#import "CSUndoObjectController.h"
@implementation CSUndoObjectController
-(void)awakeFromNib
{
if (!_undoNotificationCenter)
{
_undoNotificationCenter = [[NSNotificationCenter alloc] init];
_undoNotificationQueue = [[NSNotificationQueue alloc] initWithNotificationCenter:_undoNotificationCenter];
[_undoNotificationCenter addObserver:self selector:@selector(undoNotification:) name:nil object:nil];
}
_pausedUndoKeys = [NSMutableDictionary dictionary];
}
-(void)undoNotification:(NSNotification *)notification
{
NSString *keyPath = notification.name;
id propValue = notification.object;
if (self.undoDelegate)
{
[self.undoDelegate performUndoForKeyPath:keyPath usingValue:propValue];
}
}
-(void)dealloc
{
if (_undoNotificationCenter)
{
[_undoNotificationCenter removeObserver:self];
}
}
-(void)registerUndoForProperty:(NSString *)propName
{
if ([_pausedUndoKeys valueForKey:propName])
{
return;
}
id propertyValue = [self valueForKeyPath:propName];
NSNotification *undoNotification = [NSNotification notificationWithName:propName object:propertyValue];
[_undoNotificationQueue enqueueNotification:undoNotification postingStyle:NSPostWhenIdle coalesceMask:NSNotificationCoalescingOnName forModes:nil];
}
-(void)pauseUndoForKeyPath:(NSString *)keyPath
{
[_pausedUndoKeys setObject:@(YES) forKey:keyPath];
}
-(void)resumeUndoForKeyPath:(NSString *)keyPath
{
[_pausedUndoKeys removeObjectForKey:keyPath];
}
-(void)setValue:(id)value forKeyPath:(NSString *)keyPath
{
[self registerUndoForProperty:keyPath];
[super setValue:value forKeyPath:keyPath];
}
@end

View file

@ -0,0 +1,14 @@
//
// CSUndoObjectControllerDelegate.h
// CocoaSplit
//
// Created by Zakk on 2/19/18.
//
#import <Foundation/Foundation.h>
@protocol CSUndoObjectControllerDelegate <NSObject>
-(void)performUndoForKeyPath:(NSString *)keyPath usingValue:(id)usingValue;
@end

View file

@ -28,11 +28,11 @@
<tabViewItems>
<tabViewItem label="Settings" identifier="2" id="iXD-as-NHa">
<view key="view" id="byO-4p-D9j">
<rect key="frame" x="10" y="29" width="642" height="424"/>
<rect key="frame" x="10" y="25" width="642" height="428"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EBg-Vi-cL7">
<rect key="frame" x="15" y="351" width="53" height="14"/>
<rect key="frame" x="15" y="355" width="53" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Source" id="YYN-k4-jke">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -48,7 +48,7 @@
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Icu-pd-WRg">
<rect key="frame" x="64" y="372" width="243" height="22"/>
<rect key="frame" x="64" y="376" width="243" height="22"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="eyR-QZ-n8r">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -66,7 +66,7 @@
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gJP-2X-7HB">
<rect key="frame" x="15" y="373" width="34" height="18"/>
<rect key="frame" x="15" y="377" width="34" height="18"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Type" id="kpE-OE-l7z">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -74,7 +74,7 @@
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GaR-E0-cDn">
<rect key="frame" x="307" y="393" width="80" height="28"/>
<rect key="frame" x="307" y="397" width="80" height="28"/>
<buttonCell key="cell" type="push" title="Auto Fit" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Dv6-1D-ZwG">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -88,7 +88,7 @@
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bWQ-Fl-ROJ">
<rect key="frame" x="15" y="402" width="35" height="13"/>
<rect key="frame" x="15" y="406" width="35" height="13"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="hR6-Ol-IPm">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -96,7 +96,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="X91-Lt-pl4">
<rect key="frame" x="67" y="398" width="237" height="19"/>
<rect key="frame" x="67" y="402" width="237" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="237" id="2vb-nA-dVb"/>
</constraints>
@ -114,10 +114,10 @@
</connections>
</textField>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="qdF-gh-veZ">
<rect key="frame" x="17" y="1" width="608" height="326"/>
<rect key="frame" x="17" y="1" width="608" height="330"/>
</customView>
<button translatesAutoresizingMaskIntoConstraints="NO" id="Eoh-8E-U5F">
<rect key="frame" x="312" y="375" width="72" height="18"/>
<rect key="frame" x="312" y="379" width="72" height="18"/>
<constraints>
<constraint firstAttribute="width" constant="67" id="nAZ-T1-2BD"/>
</constraints>
@ -134,10 +134,10 @@
</connections>
</button>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="gFW-Ox-2QM">
<rect key="frame" x="17" y="333" width="608" height="5"/>
<rect key="frame" x="17" y="337" width="608" height="5"/>
</box>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ESc-uJ-Gih">
<rect key="frame" x="64" y="345" width="243" height="23"/>
<rect key="frame" x="64" y="349" width="243" height="23"/>
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" id="Uwd-iE-r9j">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -165,7 +165,7 @@
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="uB7-QF-9Sy">
<rect key="frame" x="388" y="401" width="67" height="14"/>
<rect key="frame" x="388" y="405" width="67" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Video Delay" id="aua-f6-BhG">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -173,7 +173,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7CX-iq-haH">
<rect key="frame" x="461" y="398" width="37" height="19"/>
<rect key="frame" x="461" y="402" width="37" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="37" id="TC5-3u-8Ll"/>
</constraints>
@ -187,7 +187,7 @@
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="afT-Ro-9fT">
<rect key="frame" x="312" y="348" width="62" height="20"/>
<rect key="frame" x="312" y="352" width="62" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="57" id="WQ3-Rr-jPg"/>
</constraints>
@ -200,7 +200,7 @@
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2ga-xZ-eXu">
<rect key="frame" x="389" y="348" width="92" height="20"/>
<rect key="frame" x="389" y="352" width="92" height="20"/>
<buttonCell key="cell" type="check" title="Keep Cached" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="l5S-cD-7cc">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -849,11 +849,11 @@
</tabViewItem>
<tabViewItem label="Color" identifier="1" id="59S-Rf-qNa">
<view key="view" id="HLt-kx-4Fu">
<rect key="frame" x="10" y="29" width="642" height="424"/>
<rect key="frame" x="10" y="25" width="642" height="428"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KCb-Ie-p11">
<rect key="frame" x="352" y="338" width="33" height="14"/>
<rect key="frame" x="352" y="342" width="33" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Color" id="RDC-U3-KEX">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -861,7 +861,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zxs-Gn-V6f">
<rect key="frame" x="352" y="306" width="35" height="14"/>
<rect key="frame" x="352" y="310" width="35" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Width" id="uxT-xB-Hku">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -869,7 +869,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TsS-ec-bHi">
<rect key="frame" x="437" y="304" width="39" height="19"/>
<rect key="frame" x="437" y="308" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="C0Z-sd-Ljf">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -880,7 +880,7 @@
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fgr-9T-yER">
<rect key="frame" x="351" y="279" width="80" height="14"/>
<rect key="frame" x="351" y="283" width="80" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Corner Radius" id="MNa-RF-pHf">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -888,7 +888,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0VP-fl-wW5">
<rect key="frame" x="437" y="276" width="39" height="19"/>
<rect key="frame" x="437" y="280" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="KHg-w6-aQM">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -899,15 +899,15 @@
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="m45-gD-fqn">
<rect key="frame" x="16" y="338" width="33" height="14"/>
<rect key="frame" x="16" y="342" width="33" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Color" id="cMD-l0-1zH">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="MYi-0Z-X4u">
<rect key="frame" x="55" y="333" width="44" height="23"/>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="MYi-0Z-X4u" customClass="CSColorWell">
<rect key="frame" x="55" y="337" width="44" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="o6d-UO-ZNk"/>
</constraints>
@ -917,7 +917,7 @@
</connections>
</colorWell>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NTl-Bn-3Hq">
<rect key="frame" x="102" y="330" width="54" height="28"/>
<rect key="frame" x="102" y="334" width="54" height="28"/>
<buttonCell key="cell" type="push" title="Clear" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="9Wg-xZ-gwB">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -931,7 +931,7 @@
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="esu-ec-KLC">
<rect key="frame" x="15" y="197" width="87" height="20"/>
<rect key="frame" x="15" y="201" width="87" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="82" id="4z4-W5-XnX"/>
<constraint firstAttribute="height" constant="14" id="xNS-zW-01t"/>
@ -945,7 +945,7 @@
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dcd-uq-OLK">
<rect key="frame" x="16" y="176" width="52" height="14"/>
<rect key="frame" x="16" y="180" width="52" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Color" id="Iri-BX-RTk">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -953,7 +953,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pN4-wA-CYM">
<rect key="frame" x="16" y="156" width="41" height="14"/>
<rect key="frame" x="16" y="160" width="41" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Thresh" id="H9r-2r-00q">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -961,7 +961,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="U4B-UW-Xah">
<rect key="frame" x="16" y="134" width="45" height="14"/>
<rect key="frame" x="16" y="138" width="45" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Smooth" id="Bqe-qR-voJ">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -969,7 +969,7 @@
</textFieldCell>
</textField>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="stL-RL-RMi">
<rect key="frame" x="90" y="155" width="92" height="15"/>
<rect key="frame" x="90" y="159" width="92" height="15"/>
<constraints>
<constraint firstAttribute="width" constant="92" id="bA5-UU-3XL"/>
</constraints>
@ -979,14 +979,14 @@
</connections>
</slider>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HcR-MK-dxu">
<rect key="frame" x="90" y="133" width="92" height="15"/>
<rect key="frame" x="90" y="137" width="92" height="15"/>
<sliderCell key="cell" controlSize="small" continuous="YES" state="on" alignment="left" maxValue="0.5" doubleValue="0.1333" tickMarkPosition="above" sliderType="linear" id="IBP-T2-QcQ"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.chromaKeySmoothing" id="9dD-oN-De3"/>
</connections>
</slider>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X8j-8T-AQU">
<rect key="frame" x="16" y="231" width="68" height="14"/>
<rect key="frame" x="16" y="235" width="68" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="64" id="ypI-z6-36P"/>
</constraints>
@ -997,7 +997,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Kbe-TF-X8M">
<rect key="frame" x="16" y="306" width="111" height="14"/>
<rect key="frame" x="16" y="310" width="111" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Gradient Start Color" id="tEd-qz-5Mc">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1005,7 +1005,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Zc6-wc-txP">
<rect key="frame" x="16" y="279" width="110" height="14"/>
<rect key="frame" x="16" y="283" width="110" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="106" id="Zo2-lR-BSf"/>
</constraints>
@ -1015,8 +1015,8 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="77W-tr-erc">
<rect key="frame" x="133" y="302" width="44" height="23"/>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="77W-tr-erc" customClass="CSColorWell">
<rect key="frame" x="133" y="306" width="44" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="OkO-ch-BEx"/>
</constraints>
@ -1025,15 +1025,15 @@
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.startColor" id="cZy-re-7JR"/>
</connections>
</colorWell>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="rdP-ik-Nsf">
<rect key="frame" x="133" y="275" width="44" height="23"/>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="rdP-ik-Nsf" customClass="CSColorWell">
<rect key="frame" x="133" y="279" width="44" height="23"/>
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.stopColor" id="WLo-7O-Z6a"/>
</connections>
</colorWell>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zjA-KQ-9Ls">
<rect key="frame" x="183" y="279" width="12" height="14"/>
<rect key="frame" x="183" y="283" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="gV9-MM-HS5">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1041,7 +1041,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ckS-Ul-b4s">
<rect key="frame" x="246" y="306" width="12" height="14"/>
<rect key="frame" x="246" y="310" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="O9l-AO-yWF">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1049,7 +1049,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ddU-82-t9p">
<rect key="frame" x="246" y="279" width="12" height="14"/>
<rect key="frame" x="246" y="283" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Y" id="Y25-fO-jEE">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1057,7 +1057,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Emy-vT-jtt">
<rect key="frame" x="183" y="306" width="12" height="14"/>
<rect key="frame" x="183" y="310" width="12" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="X" id="UUo-Ri-hpX">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1065,7 +1065,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1PP-61-zxM">
<rect key="frame" x="201" y="277" width="39" height="19"/>
<rect key="frame" x="201" y="281" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="ycI-Oy-w4n">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1076,7 +1076,7 @@
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3u9-Ea-h11">
<rect key="frame" x="201" y="304" width="39" height="19"/>
<rect key="frame" x="201" y="308" width="39" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="39" id="4yx-8R-uWK"/>
</constraints>
@ -1090,7 +1090,7 @@
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ROt-DV-yi5">
<rect key="frame" x="264" y="304" width="39" height="19"/>
<rect key="frame" x="264" y="308" width="39" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="39" id="3EE-9U-8q2"/>
</constraints>
@ -1104,7 +1104,7 @@
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nhH-O7-vzz">
<rect key="frame" x="13" y="247" width="103" height="28"/>
<rect key="frame" x="13" y="251" width="103" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="93" id="YoE-1m-FxL"/>
</constraints>
@ -1117,7 +1117,7 @@
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7fd-7O-ySL">
<rect key="frame" x="264" y="277" width="39" height="19"/>
<rect key="frame" x="264" y="281" width="39" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="EU2-l5-gUp">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1128,13 +1128,13 @@
</connections>
</textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="VpK-Yu-JK2">
<rect key="frame" x="23" y="220" width="343" height="5"/>
<rect key="frame" x="23" y="224" width="343" height="5"/>
</box>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="hK6-tR-5MY">
<rect key="frame" x="18" y="123" width="343" height="5"/>
<rect key="frame" x="18" y="127" width="343" height="5"/>
</box>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J3M-ME-Bmd">
<rect key="frame" x="15" y="401" width="46" height="14"/>
<rect key="frame" x="15" y="405" width="46" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Opacity" id="QX9-KE-FXz">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -1142,7 +1142,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sJp-3Q-uzS">
<rect key="frame" x="67" y="399" width="34" height="19"/>
<rect key="frame" x="67" y="403" width="34" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="34" id="eTf-FP-Gav"/>
</constraints>
@ -1157,7 +1157,7 @@
</connections>
</textField>
<slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2QP-bB-2EU">
<rect key="frame" x="109" y="400" width="351" height="15"/>
<rect key="frame" x="109" y="404" width="351" height="15"/>
<constraints>
<constraint firstAttribute="width" constant="351" id="DDS-U7-4Af"/>
</constraints>
@ -1167,7 +1167,7 @@
</connections>
</slider>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4dc-5Y-aL9">
<rect key="frame" x="16" y="369" width="72" height="14"/>
<rect key="frame" x="16" y="373" width="72" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Background" id="bZm-Hi-kB3">
<font key="font" metaFont="smallSystemBold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1175,10 +1175,10 @@
</textFieldCell>
</textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="Oop-b2-bLU">
<rect key="frame" x="18" y="358" width="285" height="5"/>
<rect key="frame" x="18" y="362" width="285" height="5"/>
</box>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7JI-jt-pjh">
<rect key="frame" x="469" y="369" width="40" height="14"/>
<rect key="frame" x="469" y="373" width="40" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="36" id="3xW-fD-Yn5"/>
</constraints>
@ -1189,10 +1189,10 @@
</textFieldCell>
</textField>
<box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="T3m-cL-xLx">
<rect key="frame" x="353" y="358" width="272" height="5"/>
<rect key="frame" x="353" y="362" width="272" height="5"/>
</box>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="R59-1N-Cs3">
<rect key="frame" x="437" y="333" width="39" height="23"/>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="R59-1N-Cs3" customClass="CSColorWell">
<rect key="frame" x="437" y="337" width="39" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="39" id="ybB-d1-yTc"/>
</constraints>
@ -1202,10 +1202,10 @@
</connections>
</colorWell>
<box horizontalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="jDm-Xp-bI3">
<rect key="frame" x="326" y="253" width="5" height="108"/>
<rect key="frame" x="326" y="257" width="5" height="108"/>
</box>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="yRm-Zb-WI7">
<rect key="frame" x="90" y="171" width="44" height="23"/>
<colorWell translatesAutoresizingMaskIntoConstraints="NO" id="yRm-Zb-WI7" customClass="CSColorWell">
<rect key="frame" x="90" y="175" width="44" height="23"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="DoA-AH-Zjs"/>
</constraints>
@ -1321,11 +1321,11 @@
</tabViewItem>
<tabViewItem label="Constraints" identifier="" id="1EV-L3-DIj">
<view key="view" id="sWj-Sx-bFr">
<rect key="frame" x="10" y="29" width="642" height="424"/>
<rect key="frame" x="10" y="25" width="642" height="428"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8eo-ER-zS0">
<rect key="frame" x="175" y="401" width="55" height="14"/>
<rect key="frame" x="175" y="405" width="55" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Left Edge" id="TJW-K8-DiM">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1333,7 +1333,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Cpb-gG-jUw">
<rect key="frame" x="175" y="357" width="54" height="14"/>
<rect key="frame" x="175" y="361" width="54" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Top Edge" id="e4H-RX-aKV">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1341,7 +1341,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A5I-xS-2cD">
<rect key="frame" x="175" y="335" width="74" height="14"/>
<rect key="frame" x="175" y="339" width="74" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Bottom Edge" id="44o-1d-BeA">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1349,7 +1349,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xSx-rK-JJK">
<rect key="frame" x="175" y="313" width="97" height="14"/>
<rect key="frame" x="175" y="317" width="97" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Horizontal Center" id="XJx-Fs-wAh">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1357,7 +1357,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="MWM-Kx-hvK">
<rect key="frame" x="175" y="269" width="35" height="14"/>
<rect key="frame" x="175" y="273" width="35" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="31" id="0xM-Sh-kXv"/>
</constraints>
@ -1368,7 +1368,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="L1W-ad-zmZ">
<rect key="frame" x="175" y="247" width="39" height="14"/>
<rect key="frame" x="175" y="251" width="39" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Height" id="tzT-qU-vhz">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1376,7 +1376,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Isu-kr-8tr">
<rect key="frame" x="175" y="291" width="82" height="14"/>
<rect key="frame" x="175" y="295" width="82" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Vertical Center" id="Fwh-fn-bKw">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1384,7 +1384,7 @@
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iRt-aE-y4n">
<rect key="frame" x="275" y="396" width="99" height="22"/>
<rect key="frame" x="275" y="400" width="99" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="93" id="EiW-nA-pDR"/>
</constraints>
@ -1419,7 +1419,7 @@
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iEf-Uf-lOU">
<rect key="frame" x="175" y="379" width="63" height="14"/>
<rect key="frame" x="175" y="383" width="63" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Right Edge" id="dIH-7F-cwq">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1427,7 +1427,7 @@
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ODC-Mq-Mo3">
<rect key="frame" x="275" y="374" width="99" height="22"/>
<rect key="frame" x="275" y="378" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="53N-9W-BVc" id="nYy-9K-j7e">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1459,7 +1459,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6i9-6X-hAs">
<rect key="frame" x="275" y="352" width="99" height="22"/>
<rect key="frame" x="275" y="356" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="svh-iI-q46" id="ajg-XY-YPY">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1491,7 +1491,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gqD-iN-ItF">
<rect key="frame" x="275" y="330" width="99" height="22"/>
<rect key="frame" x="275" y="334" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="jhj-i8-gsU" id="VYK-dY-7ZH">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1523,7 +1523,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cKI-JG-0ax">
<rect key="frame" x="275" y="308" width="99" height="22"/>
<rect key="frame" x="275" y="312" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Qp7-AR-lyT" id="KEB-Vt-0DS">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1555,7 +1555,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="GdM-od-PLQ">
<rect key="frame" x="275" y="286" width="99" height="22"/>
<rect key="frame" x="275" y="290" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="j7v-5K-h0t" id="0Yf-s7-SJi">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1587,7 +1587,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4l9-TN-LLP">
<rect key="frame" x="275" y="264" width="99" height="22"/>
<rect key="frame" x="275" y="268" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="spa-up-ndu" id="5JG-GE-kAS">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1619,7 +1619,7 @@
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oI9-Ev-mfd">
<rect key="frame" x="275" y="242" width="99" height="22"/>
<rect key="frame" x="275" y="246" width="99" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="la5-6Z-zPq" id="X2R-fy-3Mu">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1651,7 +1651,7 @@
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="p7H-Ha-ziv">
<rect key="frame" x="377" y="401" width="38" height="14"/>
<rect key="frame" x="377" y="405" width="38" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="34" id="R7H-Xa-Jjo"/>
</constraints>
@ -1662,7 +1662,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oS3-Kg-TMv">
<rect key="frame" x="414" y="399" width="32" height="19"/>
<rect key="frame" x="414" y="403" width="32" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="32" id="6eV-O5-vvd"/>
</constraints>
@ -1676,14 +1676,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vwY-Ck-QqI">
<rect key="frame" x="452" y="397" width="15" height="22"/>
<rect key="frame" x="452" y="401" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="w7B-nY-WJT"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.LeftEdge.offset" id="UN7-MP-B33"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="p4p-AA-p3e">
<rect key="frame" x="377" y="379" width="38" height="14"/>
<rect key="frame" x="377" y="383" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="Y5T-Vs-M29">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1691,7 +1691,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Oq2-2D-dy4">
<rect key="frame" x="414" y="377" width="32" height="19"/>
<rect key="frame" x="414" y="381" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Dhc-Oo-EaA">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1702,14 +1702,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Efx-8v-2U2">
<rect key="frame" x="452" y="375" width="15" height="22"/>
<rect key="frame" x="452" y="379" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="cmg-t2-6dL"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.RightEdge.offset" id="CeW-lV-ALZ"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zG6-A9-Wqe">
<rect key="frame" x="377" y="357" width="38" height="14"/>
<rect key="frame" x="377" y="361" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="jb6-Nj-aM7">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1717,7 +1717,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rhZ-SL-FyY">
<rect key="frame" x="414" y="355" width="32" height="19"/>
<rect key="frame" x="414" y="359" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="e58-Dg-WZL">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1728,14 +1728,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wnz-4j-nsL">
<rect key="frame" x="452" y="353" width="15" height="22"/>
<rect key="frame" x="452" y="357" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="mbe-d8-jmB"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.TopEdge.offset" id="82C-47-XLw"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="43x-SV-J3U">
<rect key="frame" x="377" y="335" width="38" height="14"/>
<rect key="frame" x="377" y="339" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="YsS-H1-2xG">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1743,7 +1743,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="58X-G3-kB4">
<rect key="frame" x="414" y="333" width="32" height="19"/>
<rect key="frame" x="414" y="337" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="n3k-4V-0iI">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1754,14 +1754,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="buF-Pp-MRA">
<rect key="frame" x="452" y="331" width="15" height="22"/>
<rect key="frame" x="452" y="335" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="AQK-fe-eI8"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.BottomEdge.offset" id="Br3-sg-6JT"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="V2d-w7-iAP">
<rect key="frame" x="377" y="313" width="38" height="14"/>
<rect key="frame" x="377" y="317" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="Jmh-39-ALp">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1769,7 +1769,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sKY-du-FMD">
<rect key="frame" x="414" y="311" width="32" height="19"/>
<rect key="frame" x="414" y="315" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="odB-N7-rXc">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1780,14 +1780,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3cb-Hf-Mkd">
<rect key="frame" x="452" y="309" width="15" height="22"/>
<rect key="frame" x="452" y="313" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="bYu-eR-x3W"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.HorizontalCenter.offset" id="Xct-yM-N1z"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ICe-SD-zu5">
<rect key="frame" x="377" y="291" width="38" height="14"/>
<rect key="frame" x="377" y="295" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="2bw-WK-zm8">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1795,7 +1795,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="GdQ-mb-4Jp">
<rect key="frame" x="414" y="289" width="32" height="19"/>
<rect key="frame" x="414" y="293" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="7u6-4c-4bv">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1806,14 +1806,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Uok-lY-EJ5">
<rect key="frame" x="452" y="287" width="15" height="22"/>
<rect key="frame" x="452" y="291" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="BMe-Xr-Gal"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.VerticalCenter.offset" id="eT7-Gk-2Vc"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZBo-Sh-X4J">
<rect key="frame" x="377" y="269" width="38" height="14"/>
<rect key="frame" x="377" y="273" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="Kso-UB-ObK">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1821,7 +1821,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZbS-qQ-8Ma">
<rect key="frame" x="414" y="267" width="32" height="19"/>
<rect key="frame" x="414" y="271" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Gjl-xc-kIQ">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1832,14 +1832,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aWd-HU-HmR">
<rect key="frame" x="452" y="265" width="15" height="22"/>
<rect key="frame" x="452" y="269" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="zLq-Mi-9Sl"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.Width.offset" id="KhY-9H-bxa"/>
</connections>
</stepper>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Uww-5C-9es">
<rect key="frame" x="377" y="247" width="38" height="14"/>
<rect key="frame" x="377" y="251" width="38" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offset" id="OX7-v6-g4K">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -1847,7 +1847,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4qI-c7-fnL">
<rect key="frame" x="414" y="245" width="32" height="19"/>
<rect key="frame" x="414" y="249" width="32" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="rfq-BO-zJ6">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -1858,14 +1858,14 @@
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="CN8-Mf-zHJ">
<rect key="frame" x="452" y="243" width="15" height="22"/>
<rect key="frame" x="452" y="247" width="15" height="22"/>
<stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" minValue="-10000" maxValue="10000" id="ivI-cD-v4F"/>
<connections>
<binding destination="Gdf-y2-DdF" name="value" keyPath="selection.constraintMap.Height.offset" id="hZt-TF-iUW"/>
</connections>
</stepper>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v52-Kg-SeB">
<rect key="frame" x="264" y="201" width="120" height="28"/>
<rect key="frame" x="264" y="205" width="120" height="28"/>
<buttonCell key="cell" type="push" title="Reset Constraints" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="RdC-8P-XSy">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -1987,11 +1987,11 @@
</tabViewItem>
<tabViewItem label="Multi" identifier="" id="ImC-Zh-P0H">
<view key="view" id="zPW-WA-ypy">
<rect key="frame" x="10" y="29" width="642" height="424"/>
<rect key="frame" x="10" y="25" width="642" height="428"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="neP-e9-CZ6">
<rect key="frame" x="15" y="401" width="87" height="14"/>
<rect key="frame" x="15" y="405" width="87" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Change Interval" id="hmg-O6-xcb">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
@ -1999,7 +1999,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="TB1-Ve-NXp">
<rect key="frame" x="108" y="399" width="33" height="19"/>
<rect key="frame" x="108" y="403" width="33" height="19"/>
<constraints>
<constraint firstAttribute="width" constant="33" id="0ci-Xf-ItH"/>
</constraints>
@ -2013,7 +2013,7 @@
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RDa-Y4-ZKU">
<rect key="frame" x="147" y="401" width="38" height="14"/>
<rect key="frame" x="147" y="405" width="38" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="34" id="7EI-F9-rlm"/>
</constraints>
@ -2024,7 +2024,7 @@
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="PDP-sr-E5P">
<rect key="frame" x="188" y="396" width="76" height="22"/>
<rect key="frame" x="188" y="400" width="76" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="f4s-Xr-if8"/>
</constraints>
@ -2044,7 +2044,7 @@
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="St3-QW-LLg">
<rect key="frame" x="267" y="401" width="38" height="14"/>
<rect key="frame" x="267" y="405" width="38" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="34" id="MdH-k6-3hH"/>
</constraints>
@ -2055,7 +2055,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="t1a-ea-9eE">
<rect key="frame" x="389" y="401" width="52" height="14"/>
<rect key="frame" x="389" y="405" width="52" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Direction" id="Fbf-FG-srr">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -2070,7 +2070,7 @@
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hhv-Ub-D72">
<rect key="frame" x="447" y="396" width="89" height="22"/>
<rect key="frame" x="447" y="400" width="89" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="83" id="cpn-wJ-E0o"/>
</constraints>
@ -2096,7 +2096,7 @@
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="YLP-hb-gN0">
<rect key="frame" x="108" y="377" width="33" height="19"/>
<rect key="frame" x="108" y="381" width="33" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="uRO-3T-cAI">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -2107,7 +2107,7 @@
</connections>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="dy9-I6-WFu">
<rect key="frame" x="14" y="349" width="117" height="20"/>
<rect key="frame" x="14" y="353" width="117" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="112" id="Bp6-gt-1cR"/>
</constraints>
@ -2120,7 +2120,7 @@
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VqO-eq-H6f">
<rect key="frame" x="15" y="379" width="82" height="14"/>
<rect key="frame" x="15" y="383" width="82" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Effect duration" id="zYS-vn-ats">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -2128,7 +2128,7 @@
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KZU-Tb-igF">
<rect key="frame" x="384" y="393" width="80" height="28"/>
<rect key="frame" x="384" y="397" width="80" height="28"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="klR-8b-ZSW"/>
</constraints>
@ -2146,7 +2146,7 @@
</connections>
</button>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G8u-yY-gqV">
<rect key="frame" x="299" y="396" width="87" height="22"/>
<rect key="frame" x="299" y="400" width="87" height="22"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="LTL-rb-GGr" id="2MC-FB-E4j">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -2166,7 +2166,7 @@
</connections>
</popUpButton>
<button translatesAutoresizingMaskIntoConstraints="NO" id="zyJ-zl-59j">
<rect key="frame" x="148" y="376" width="94" height="20"/>
<rect key="frame" x="148" y="380" width="94" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="89" id="t2x-Ya-Rbi"/>
</constraints>
@ -2179,13 +2179,13 @@
</connections>
</button>
<scrollView autohidesScrollers="YES" horizontalLineScroll="30" horizontalPageScroll="10" verticalLineScroll="30" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SCi-uN-txg">
<rect key="frame" x="17" y="165" width="456" height="167"/>
<rect key="frame" x="17" y="165" width="456" height="171"/>
<clipView key="contentView" id="VU8-cU-Tot">
<rect key="frame" x="1" y="0.0" width="454" height="166"/>
<autoresizingMask key="autoresizingMask"/>
<rect key="frame" x="1" y="0.0" width="454" height="170"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="firstColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="28" headerView="Cja-SV-r3z" id="Wec-Fy-TOT">
<rect key="frame" x="0.0" y="0.0" width="454" height="143"/>
<rect key="frame" x="0.0" y="0.0" width="454" height="147"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -2288,11 +2288,11 @@
</tabViewItem>
<tabViewItem label="Filters" identifier="" id="JmN-mm-bOH">
<view key="view" id="mGg-wf-d04">
<rect key="frame" x="10" y="29" width="642" height="424"/>
<rect key="frame" x="10" y="25" width="642" height="428"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rxd-ut-78O">
<rect key="frame" x="15" y="401" width="68" height="14"/>
<rect key="frame" x="15" y="405" width="68" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="64" id="RhG-eL-SjV"/>
</constraints>
@ -2303,7 +2303,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zej-sk-OK4">
<rect key="frame" x="240" y="401" width="42" height="14"/>
<rect key="frame" x="240" y="405" width="42" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="38" id="XJy-PH-HkE"/>
</constraints>
@ -2314,7 +2314,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SpP-Ed-reh">
<rect key="frame" x="466" y="401" width="31" height="14"/>
<rect key="frame" x="466" y="405" width="31" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="27" id="ndE-lA-OAB"/>
</constraints>
@ -2374,13 +2374,13 @@
</connections>
</button>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="qcs-8I-ngA">
<rect key="frame" x="468" y="64" width="157" height="329"/>
<rect key="frame" x="468" y="64" width="157" height="333"/>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="QEU-cS-PwF">
<rect key="frame" x="242" y="64" width="157" height="329"/>
<rect key="frame" x="242" y="64" width="157" height="333"/>
</customView>
<customView translatesAutoresizingMaskIntoConstraints="NO" id="1iG-l5-r4m">
<rect key="frame" x="17" y="64" width="157" height="329"/>
<rect key="frame" x="17" y="64" width="157" height="333"/>
</customView>
</subviews>
<constraints>
@ -2582,12 +2582,11 @@
</tabViewItem>
</tabViewItems>
<connections>
<binding destination="Gdf-y2-DdF" name="selectedLabel" keyPath="selection.settingsTab" id="hiM-bU-1lm"/>
<outlet property="delegate" destination="-2" id="zHT-jQ-wwc"/>
</connections>
<point key="canvasLocation" x="686" y="99.5"/>
</tabView>
<objectController id="Gdf-y2-DdF" userLabel="InputSourceController">
<objectController id="Gdf-y2-DdF" userLabel="InputSourceController" customClass="CSUndoObjectController">
<connections>
<binding destination="-2" name="contentObject" keyPath="self.inputSource" id="YAR-ch-wCB"/>
</connections>

View file

@ -55,7 +55,7 @@
@property (strong) NSString *name;
@property (strong) CARenderer *renderer;
@property (strong) CALayer *rootLayer;
@property (strong) CAGradientLayer *rootLayer;
@property (strong) SourceCache *sourceCache;
@property (strong) CIFilter *compositeFilter;
@ -78,6 +78,13 @@
@property (weak) CSLayoutRecorder *recorder;
@property (readonly) bool hasSources;
@property (strong) CAMultiAudioEngine *audioEngine;
@property (strong) NSColor *startColor;
@property (strong) NSColor *stopColor;
@property (assign) CGFloat gradientStartX;
@property (assign) CGFloat gradientStartY;
@property (assign) CGFloat gradientStopX;
@property (assign) CGFloat gradientStopY;
-(void)deleteSource:(NSObject<CSInputSourceProtocol> *)delSource;
-(void)addSource:(NSObject<CSInputSourceProtocol> *)newSource;
@ -129,6 +136,8 @@
-(NSString *)addLayoutFilter:(NSString *)filterName;
-(void)deleteLayoutFilter:(NSString *)filteruuid;
-(void)clearGradient;
@end
@ -190,7 +199,7 @@
@property (strong) NSString *name;
@property (strong) CARenderer *renderer;
@property (strong) CALayer *rootLayer;
@property (strong) CAGradientLayer *rootLayer;
@property (strong) SourceCache *sourceCache;
@property (strong) CIFilter *compositeFilter;
@ -216,6 +225,12 @@
@property (strong) NSData *audioData;
@property (strong) CAMultiAudioEngine *audioEngine;
@property (assign) bool ignorePinnedInputs;
@property (strong) NSColor *startColor;
@property (strong) NSColor *stopColor;
@property (assign) CGFloat gradientStartX;
@property (assign) CGFloat gradientStartY;
@property (assign) CGFloat gradientStopX;
@property (assign) CGFloat gradientStopY;
-(CSAudioInputSource *)findSourceForAudioUUID:(NSString *)audioUUID;

View file

@ -48,6 +48,8 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
@synthesize isActive = _isActive;
@synthesize frameRate = _frameRate;
@synthesize layoutTimingSource = _layoutTimingSource;
@synthesize startColor = _startColor;
@synthesize stopColor = _stopColor;
-(instancetype) init
{
@ -169,7 +171,7 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
-(CALayer *)newRootLayer
{
CALayer *newRoot = [CALayer layer];
CAGradientLayer *newRoot = [CAGradientLayer layer];
[CATransaction begin];
newRoot.bounds = CGRectMake(0, 0, _canvas_width, _canvas_height);
newRoot.anchorPoint = CGPointMake(0.0, 0.0);
@ -448,6 +450,16 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
}
[aCoder encodeBool:self.recordingLayout forKey:@"recordingLayout"];
[aCoder encodeFloat:self.gradientStartX forKey:@"gradientStartX"];
[aCoder encodeFloat:self.gradientStartY forKey:@"gradientStartY"];
[aCoder encodeFloat:self.gradientStopX forKey:@"gradientStopX"];
[aCoder encodeFloat:self.gradientStopY forKey:@"gradientStopY"];
[aCoder encodeObject:self.startColor forKey:@"gradientStartColor"];
[aCoder encodeObject:self.stopColor forKey:@"gradientStopColor"];
[aCoder encodeObject:self.backgroundColor forKey:@"backgroundColor"];
//[aCoder encodeObject:self.rootLayer.filters forKey:@"layoutFilters"];
}
@ -483,9 +495,18 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
self.containedLayouts = [[aDecoder decodeObjectForKey:@"containedLayouts"] mutableCopy];
//set live/staging status for each layout
}
self.backgroundColor = [aDecoder decodeObjectForKey:@"backgroundColor"];
self.recordingLayout = [aDecoder decodeBoolForKey:@"recordingLayout"];
self.rootLayer.filters = [aDecoder decodeObjectForKey:@"layoutFilters"];
self.gradientStartX = [aDecoder decodeFloatForKey:@"gradientStartX"];
self.gradientStartY = [aDecoder decodeFloatForKey:@"gradientStartY"];
self.gradientStopX = [aDecoder decodeFloatForKey:@"gradientStopX"];
self.gradientStopY = [aDecoder decodeFloatForKey:@"gradientStopY"];
_startColor = [aDecoder decodeObjectForKey:@"gradientStartColor"];
_stopColor = [aDecoder decodeObjectForKey:@"gradientStopColor"];
[self setupColors];
}
return self;
@ -914,7 +935,7 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
NSObject *mergeObj = [self decodeSaveData:useData];
NSArray *mergeList;
NSArray *filterList = @[];
NSArray *filterList;
if ([mergeObj isKindOfClass:[NSDictionary class]])
{
@ -925,6 +946,10 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
}
if (!filterList)
{
filterList = @[];
}
NSMutableDictionary *uuidMap = [NSMutableDictionary dictionary];
@ -2663,6 +2688,138 @@ JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef ctx);
}
}
-(void)clearGradient
{
_startColor = _stopColor = nil;
[self setupColors];
self.startColor = nil;
self.stopColor = nil;
}
-(void)setGradientStartX:(CGFloat)gradientStartX
{
CGPoint cBounds = self.rootLayer.startPoint;
cBounds.x = gradientStartX;
self.rootLayer.startPoint = cBounds;
}
-(CGFloat)gradientStartX
{
return self.rootLayer.startPoint.x;
}
-(void)setGradientStartY:(CGFloat)gradientStartY
{
CGPoint cBounds = self.rootLayer.startPoint;
cBounds.y = gradientStartY;
self.rootLayer.startPoint = cBounds;
}
-(CGFloat)gradientStartY
{
return self.rootLayer.startPoint.y;
}
-(void)setGradientStopX:(CGFloat)gradientStopX
{
CGPoint cBounds = self.rootLayer.endPoint;
cBounds.x = gradientStopX;
self.rootLayer.endPoint = cBounds;
}
-(CGFloat)gradientStopX
{
return self.rootLayer.endPoint.x;
}
-(void)setGradientStopY:(CGFloat)gradientStopY
{
CGPoint cBounds = self.rootLayer.endPoint;
cBounds.y = gradientStopY;
self.rootLayer.endPoint = cBounds;
}
-(CGFloat)gradientStopY
{
return self.rootLayer.endPoint.y;
}
-(void)setupColors
{
if (!self.startColor && !self.stopColor)
{
self.rootLayer.colors = nil;
return;
}
CGColorRef firstColor;
CGColorRef lastColor;
if (!self.startColor)
{
firstColor = CGColorCreateGenericRGB(0, 0, 0, 1);
} else {
firstColor = [self.startColor CGColor];
CGColorRetain(firstColor);
}
if (!self.stopColor)
{
lastColor = CGColorCreateGenericRGB(0, 0, 0, 1);
} else {
lastColor = [self.stopColor CGColor];
CGColorRetain(lastColor);
}
self.rootLayer.colors = [NSArray arrayWithObjects:CFBridgingRelease(firstColor),CFBridgingRelease(lastColor), nil];
}
-(void)setStartColor:(NSColor *)startColor
{
_startColor = startColor;
[self setupColors];
}
-(NSColor *)startColor
{
return _startColor;
}
-(void)setStopColor:(NSColor *)stopColor
{
_stopColor = stopColor;
[self setupColors];
}
-(NSColor *)stopColor
{
return _stopColor;
}
-(void)dealloc
{

View file

@ -8,10 +8,13 @@
#import <Cocoa/Cocoa.h>
#import <Quartz/Quartz.h>
#import "CSLayerFiltersViewController.h"
#import "CSUndoObjectControllerDelegate.h"
#import "CSUndoObjectController.h"
@class InputSource;
@interface InputPopupControllerViewController : NSViewController <NSWindowDelegate, NSTableViewDelegate, NSTabViewDelegate>
@interface InputPopupControllerViewController : NSViewController <NSWindowDelegate, NSTableViewDelegate, NSTabViewDelegate, CSUndoObjectControllerDelegate>
@property (strong) NSWindow *transitionFilterWindow;
@ -55,12 +58,13 @@
-(IBAction) clearGradient:(NSButton *)sender;
-(IBAction) scriptUndo:(NSButton *)sender;
- (IBAction)backgroundColorChanged:(NSColorWell *)sender;
@property (weak) IBOutlet NSArrayController *multiSourceController;
@property (weak) IBOutlet NSArrayController *currentEffectsController;
@property (weak) IBOutlet NSWindow *cropSelectionWindow;
@property (weak) IBOutlet NSView *sourceConfigView;
@property (strong) IBOutlet NSObjectController *inputobjctrl;
@property (strong) IBOutlet CSUndoObjectController *inputobjctrl;
@property (strong) NSViewController *inputConfigViewController;
@property (strong) NSArray *scriptTypes;
@property (strong) NSArray *scriptKeys;

View file

@ -58,13 +58,74 @@
self.scriptTypes = @[@"After Add", @"Before Delete", @"FrameTick", @"Before Merge", @"After Merge", @"Before Remove", @"Before Replace", @"After Replace"];
self.scriptKeys = @[@"selection.script_afterAdd", @"selection.script_beforeDelete", @"selection.script_frameTick", @"selection.script_beforeMerge", @"selection.script_afterMerge", @"selection.script_beforeRemove", @"selection.script_beforeReplace", @"selection.script_afterReplace"];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(colorWellActivate:) name:@"CSColorWellActivated" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(colorWellDeactivate:) name:@"CSColorWellDeactivated" object:nil];
}
return self;
}
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)awakeFromNib
{
if (self.inputobjctrl)
{
self.inputobjctrl.undoDelegate = self;
}
}
-(void)performUndoForKeyPath:(NSString *)keyPath usingValue:(id)usingValue
{
if (!self.undoManager)
{
return;
}
NSString *propName = [[keyPath componentsSeparatedByString:@"."] lastObject];
[[self.undoManager prepareWithInvocationTarget:self.inputSource.sourceLayout] modifyUUID:self.inputSource.uuid withBlock:^(NSObject<CSInputSourceProtocol> *input) {
[input setValue:usingValue forKey:propName];
}];
NSString *actionName = [self.inputSource undoNameForKeyPath:propName usingValue:usingValue];
if (actionName)
{
[self.undoManager setActionName:actionName];
}
}
-(void)colorWellActivate:(NSNotification *)notification
{
NSColorWell *well = notification.object;
NSDictionary *bindInfo = [well infoForBinding:@"value"];
NSString *keyPath = bindInfo[NSObservedKeyPathKey];
NSString *propName = [[keyPath componentsSeparatedByString:@"."] lastObject];
[self.inputobjctrl setValue:well.color forKeyPath:keyPath];
[self.inputobjctrl pauseUndoForKeyPath:keyPath];
}
-(void)colorWellDeactivate:(NSNotification *)notification
{
NSColorWell *well = notification.object;
NSDictionary *bindInfo = [well infoForBinding:@"value"];
NSString *keyPath = bindInfo[NSObservedKeyPathKey];
NSString *propName = [[keyPath componentsSeparatedByString:@"."] lastObject];
[self.inputobjctrl resumeUndoForKeyPath:keyPath];
[self.inputobjctrl setValue:well.color forKeyPath:keyPath];
}
+(NSSet *)keyPathsForValuesAffectingSelectedVideoType
@ -394,6 +455,12 @@
[self.inputobjctrl discardEditing];
}
- (IBAction)backgroundColorChanged:(NSColorWell *)sender {
NSUInteger mouseButtons = [NSEvent pressedMouseButtons];
NSLog(@"MOUSE BUTTONS %d", mouseButtons);
NSLog(@"COLOR CHANGED");
}
- (IBAction)resetConstraints:(id)sender
{