Added layout transition input config

This commit is contained in:
Zakk 2018-04-01 02:20:07 -04:00
parent 33b0672632
commit 6082abd45a
6 changed files with 130 additions and 40 deletions

View file

@ -9,17 +9,19 @@
#import <Cocoa/Cocoa.h>
#import "CSLayoutTransitionViewProtocol.h"
#import "CSSubLayoutTransitionViewController.h"
#import "CSTransitionLayout.h"
@interface CSLayoutLayoutTransitionViewController : NSViewController <CSLayoutTransitionViewProtocol>
@interface CSLayoutLayoutTransitionViewController : NSViewController <CSLayoutTransitionViewProtocol, NSWindowDelegate>
{
NSObject <CSLayoutTransitionViewProtocol> *_subTransitionViewController;
NSPopover *_subPopover;
NSWindow *_configWindow;
NSViewController *_configViewController;
}
@property (strong) CSTransitionBase *transition;
@property (strong) CSTransitionLayout *transition;
@property (strong) NSArray *sourceLayouts;
@ -28,5 +30,6 @@
- (IBAction)configureInTransition:(id)sender;
- (IBAction)configureOutTransition:(id)sender;
-(IBAction)openInputConfigWindow:(id)sender;
@end

View file

@ -37,6 +37,44 @@
// Do view setup here.
}
-(NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window
{
return [[NSUndoManager alloc] init];
}
-(IBAction)openInputConfigWindow:(id)sender
{
NSObject<CSInputSourceProtocol> *configSrc = self.transition.inputSource;
NSString *uuid = configSrc.uuid;
NSViewController *newViewController = [configSrc configurationViewController];
_configWindow = [[NSWindow alloc] init];
NSRect newFrame = [_configWindow frameRectForContentRect:NSMakeRect(0.0f, 0.0f, newViewController.view.frame.size.width, newViewController.view.frame.size.height)];
[_configWindow setFrame:newFrame display:NO];
[_configWindow center];
[_configWindow setReleasedWhenClosed:NO];
[_configWindow.contentView addSubview:newViewController.view];
_configWindow.title = [NSString stringWithFormat:@"Transition Config (%@)", configSrc.name];
_configWindow.delegate = self;
_configWindow.styleMask = NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask;
_configViewController = newViewController;
_configWindow.identifier = uuid;
[_configWindow makeKeyAndOrderFront:nil];
}
/*
- (IBAction)configureInTransition:(NSButton *)sender
{

View file

@ -15,11 +15,11 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY">
<rect key="frame" x="0.0" y="0.0" width="244" height="149"/>
<rect key="frame" x="0.0" y="0.0" width="244" height="177"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES"/>
<subviews>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Nqr-9t-Ou9">
<rect key="frame" x="18" y="85" width="40" height="17"/>
<rect key="frame" x="18" y="111" width="40" height="17"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Layout" id="uqL-i0-tlb">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -27,7 +27,7 @@
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bKy-WN-sQO">
<rect key="frame" x="61" y="83" width="166" height="22"/>
<rect key="frame" x="61" y="109" width="166" 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="Tci-JU-KDM" id="tNZ-Md-AM6">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -47,7 +47,7 @@
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pef-lr-P9X">
<rect key="frame" x="19" y="63" width="77" height="14"/>
<rect key="frame" x="19" y="89" width="77" height="14"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Hold Duration" id="Dzc-yp-Tz8">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -55,7 +55,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Xsi-Bx-JQy">
<rect key="frame" x="102" y="60" width="53" height="19"/>
<rect key="frame" x="102" y="86" width="53" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="krz-LW-yxA">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -66,7 +66,7 @@
</connections>
</textField>
<button translatesAutoresizingMaskIntoConstraints="NO" id="UXv-J0-BWk">
<rect key="frame" x="18" y="37" width="98" height="18"/>
<rect key="frame" x="18" y="63" width="98" height="18"/>
<buttonCell key="cell" type="check" title="Wait for media" bezelStyle="regularSquare" imagePosition="right" controlSize="small" state="on" inset="2" id="iXc-gu-sTh">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
@ -76,9 +76,9 @@
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ysy-qd-ePS">
<rect key="frame" x="18" y="113" width="37" height="14"/>
<rect key="frame" x="18" y="141" width="37" height="14"/>
<constraints>
<constraint firstAttribute="width" constant="33" id="Mr3-Gp-cMJ"/>
<constraint firstAttribute="width" constant="33" id="Tqa-NS-jHd"/>
</constraints>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name" id="7zz-FC-HfU">
<font key="font" metaFont="smallSystem"/>
@ -87,7 +87,7 @@
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="d1C-oR-MtB">
<rect key="frame" x="63" y="110" width="160" height="19"/>
<rect key="frame" x="63" y="138" width="160" height="19"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="yY2-8b-isp">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@ -98,9 +98,9 @@
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LJ1-S6-our">
<rect key="frame" x="18" y="17" width="88" height="20"/>
<rect key="frame" x="18" y="43" width="88" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="14" id="g4t-Hw-s8x"/>
<constraint firstAttribute="height" constant="14" id="EG3-Mg-lhF"/>
</constraints>
<buttonCell key="cell" type="check" title="Delay Action" bezelStyle="regularSquare" imagePosition="right" controlSize="small" state="on" inset="2" id="B66-Di-AaO">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
@ -110,31 +110,44 @@
<binding destination="qIT-yG-aZf" name="value" keyPath="selection.transitionAfterPre" id="zw7-BD-TTZ"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0O5-x5-e1H">
<rect key="frame" x="89" y="14" width="79" height="28"/>
<buttonCell key="cell" type="push" title="Configure" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="dgD-GT-sSP">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="openInputConfigWindow:" target="-2" id="c6J-Ae-kQr"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="2e0-oK-Yf2"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="leading" secondItem="pef-lr-P9X" secondAttribute="trailing" constant="8" symbolic="YES" id="40n-Ym-IZ8"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="leading" secondItem="UXv-J0-BWk" secondAttribute="leading" id="9gR-z7-bah"/>
<constraint firstItem="LJ1-S6-our" firstAttribute="top" secondItem="UXv-J0-BWk" secondAttribute="bottom" constant="6" symbolic="YES" id="IZG-ox-QsT"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="top" secondItem="bKy-WN-sQO" secondAttribute="bottom" constant="7" id="K8m-tp-3Ol"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="21" id="KUU-nh-8ua"/>
<constraint firstAttribute="bottom" secondItem="LJ1-S6-our" secondAttribute="bottom" constant="20" symbolic="YES" id="PQp-JE-Znx"/>
<constraint firstItem="UXv-J0-BWk" firstAttribute="leading" secondItem="LJ1-S6-our" secondAttribute="leading" id="bA7-Fk-0H5"/>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="leading" secondItem="Nqr-9t-Ou9" secondAttribute="leading" id="cVy-27-kJf"/>
<constraint firstItem="bKy-WN-sQO" firstAttribute="leading" secondItem="Nqr-9t-Ou9" secondAttribute="trailing" constant="8" symbolic="YES" id="cdi-8i-1mC"/>
<constraint firstItem="UXv-J0-BWk" firstAttribute="top" secondItem="Xsi-Bx-JQy" secondAttribute="bottom" constant="8" symbolic="YES" id="dpS-oE-Syv"/>
<constraint firstItem="d1C-oR-MtB" firstAttribute="leading" secondItem="Ysy-qd-ePS" secondAttribute="trailing" constant="10" id="fRM-Zs-TVO"/>
<constraint firstItem="d1C-oR-MtB" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="gin-NQ-YBF"/>
<constraint firstAttribute="trailing" secondItem="Xsi-Bx-JQy" secondAttribute="trailing" constant="89" id="hiM-2Y-iVr"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="baseline" secondItem="pef-lr-P9X" secondAttribute="firstBaseline" id="iLf-TM-DML"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="top" secondItem="Nqr-9t-Ou9" secondAttribute="bottom" constant="8" symbolic="YES" id="k4w-vy-0AQ"/>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="baseline" secondItem="d1C-oR-MtB" secondAttribute="baseline" id="ksS-iq-BRT"/>
<constraint firstAttribute="trailing" secondItem="d1C-oR-MtB" secondAttribute="trailing" constant="21" id="nPb-Jb-Xq4"/>
<constraint firstAttribute="trailing" secondItem="bKy-WN-sQO" secondAttribute="trailing" constant="20" symbolic="YES" id="r3i-sN-RwF"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="baseline" secondItem="Xsi-Bx-JQy" secondAttribute="firstBaseline" id="vIN-ea-l0d"/>
<constraint firstItem="bKy-WN-sQO" firstAttribute="baseline" secondItem="Nqr-9t-Ou9" secondAttribute="firstBaseline" id="w3Z-kM-cnh"/>
<constraint firstItem="bKy-WN-sQO" firstAttribute="baseline" secondItem="Nqr-9t-Ou9" secondAttribute="firstBaseline" id="0o7-lh-k60"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="21" id="2xP-GS-yxy"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="baseline" secondItem="Xsi-Bx-JQy" secondAttribute="firstBaseline" id="44t-ic-Y9C"/>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="baseline" secondItem="d1C-oR-MtB" secondAttribute="baseline" id="5KL-Qf-gjD"/>
<constraint firstItem="0O5-x5-e1H" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="94" id="5cv-54-8kw"/>
<constraint firstItem="d1C-oR-MtB" firstAttribute="leading" secondItem="Ysy-qd-ePS" secondAttribute="trailing" constant="10" id="9Hz-iU-3dI"/>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="leading" secondItem="Nqr-9t-Ou9" secondAttribute="leading" id="COi-yg-UeW"/>
<constraint firstItem="d1C-oR-MtB" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="DPN-Un-Es1"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="leading" secondItem="pef-lr-P9X" secondAttribute="trailing" constant="8" symbolic="YES" id="E6v-Ld-OZb"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="baseline" secondItem="pef-lr-P9X" secondAttribute="firstBaseline" id="Fcl-nM-ehC"/>
<constraint firstItem="0O5-x5-e1H" firstAttribute="top" secondItem="LJ1-S6-our" secondAttribute="bottom" constant="8" symbolic="YES" id="G4D-6f-31V"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="top" secondItem="Nqr-9t-Ou9" secondAttribute="bottom" constant="8" symbolic="YES" id="GWL-kU-5SA"/>
<constraint firstItem="bKy-WN-sQO" firstAttribute="top" secondItem="d1C-oR-MtB" secondAttribute="bottom" constant="8" symbolic="YES" id="LPT-sh-1cR"/>
<constraint firstItem="UXv-J0-BWk" firstAttribute="top" secondItem="Xsi-Bx-JQy" secondAttribute="bottom" constant="8" symbolic="YES" id="NWz-bl-7ct"/>
<constraint firstItem="bKy-WN-sQO" firstAttribute="leading" secondItem="Nqr-9t-Ou9" secondAttribute="trailing" constant="8" symbolic="YES" id="PRa-0N-f9d"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="top" secondItem="bKy-WN-sQO" secondAttribute="bottom" constant="7" id="Unw-Ns-5M0"/>
<constraint firstAttribute="trailing" secondItem="bKy-WN-sQO" secondAttribute="trailing" constant="20" symbolic="YES" id="YOW-Dx-aFv"/>
<constraint firstItem="UXv-J0-BWk" firstAttribute="leading" secondItem="LJ1-S6-our" secondAttribute="leading" id="g7k-lO-29W"/>
<constraint firstAttribute="trailing" secondItem="d1C-oR-MtB" secondAttribute="trailing" constant="21" id="gRQ-mj-zMZ"/>
<constraint firstAttribute="trailing" secondItem="0O5-x5-e1H" secondAttribute="trailing" constant="81" id="jE2-SZ-2Pp"/>
<constraint firstItem="pef-lr-P9X" firstAttribute="leading" secondItem="UXv-J0-BWk" secondAttribute="leading" id="kxG-oB-dxZ"/>
<constraint firstItem="Xsi-Bx-JQy" firstAttribute="centerX" secondItem="0O5-x5-e1H" secondAttribute="centerX" id="mf2-uq-bnG"/>
<constraint firstItem="Ysy-qd-ePS" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="rbd-Mx-U7i"/>
<constraint firstItem="LJ1-S6-our" firstAttribute="top" secondItem="UXv-J0-BWk" secondAttribute="bottom" constant="6" symbolic="YES" id="vAk-FI-2wc"/>
</constraints>
<point key="canvasLocation" x="-39" y="106.5"/>
<point key="canvasLocation" x="-39" y="120.5"/>
</customView>
<userDefaultsController representsSharedInstance="YES" id="Bhg-Lt-wLT"/>
<objectController id="qIT-yG-aZf" userLabel="transitionController">

View file

@ -25,7 +25,8 @@
@property (assign) float realHoldDuration;
@property (strong) NSObject<CSInputSourceProtocol> *inputSource;
@property (strong) NSObject<CSInputSourceProtocol> *configuredInputSource;
@property (strong) NSData *inputSourceSavedata;
@property (assign) bool waitForMedia;
@property (assign) bool transitionAfterPre;
-(NSObject<CSInputSourceProtocol> *)getInputSource;

View file

@ -9,7 +9,7 @@
@implementation CSTransitionInput
@synthesize holdDuration = _holdDuration;
@synthesize inputSource = _inputSource;
-(instancetype) init
{
@ -26,6 +26,7 @@
if (newObj)
{
newObj.configuredInputSource = self.configuredInputSource;
newObj.inputSourceSavedata = self.inputSourceSavedata;
newObj.holdDuration = self.holdDuration;
newObj.waitForMedia = self.waitForMedia;
newObj.transitionAfterPre = self.transitionAfterPre;
@ -46,6 +47,7 @@
[aCoder encodeBool:self.transitionAfterPre forKey:@"transitionAfterPre"];
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super initWithCoder:aDecoder])
@ -99,6 +101,26 @@
return ret;
}
-(void)setInputSource:(NSObject<CSInputSourceProtocol> *)inputSource
{
_inputSource = inputSource;
}
-(NSObject<CSInputSourceProtocol> *)inputSource
{
if (!_inputSource)
{
_inputSource = [self restoreInputSource];
if (!_inputSource)
{
_inputSource = [self getInputSource];
}
}
return _inputSource;
}
-(void)setHoldDuration:(NSNumber *)holdDuration
{
_holdDuration = holdDuration;
@ -125,7 +147,7 @@
-(NSString *)preChangeAction:(SourceLayout *)targetLayout
{
self.inputSource = [self getInputSource];
if (!self.inputSource)
{
return nil;
@ -188,9 +210,18 @@
[scriptRet appendString:@"if (postPostScript) { (new Function('self', postPostScript))(self.postTransition);}"];
}
[scriptRet appendString:@"self.inputSource = null;"];
//[scriptRet appendString:@"self.inputSource = null;"];
return scriptRet;
}
-(NSObject<CSInputSourceProtocol> *)restoreInputSource
{
NSObject<CSInputSourceProtocol> *ret = nil;
if (self.inputSourceSavedata)
{
ret = [NSKeyedUnarchiver unarchiveObjectWithData:self.inputSourceSavedata];
}
return ret;
}
@end

View file

@ -89,6 +89,10 @@
return;
}
if (!self.inputSource.sourceLayout)
{
return;
}
NSString *propName = [[keyPath componentsSeparatedByString:@"."] lastObject];