Rubber Band: Fix preferences disabling items

The items not applicable to Finer / R3 engine were not being disabled
properly. Change the dialog to use a transformer to disable them on the
preferences value instead of coding it, since the code didn't seem to
work.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
Christopher Snowhill 2025-02-11 01:28:42 -08:00
parent 266da8cc07
commit 7fc6361d6c
7 changed files with 151 additions and 42 deletions

View file

@ -17,6 +17,7 @@
<outlet property="outputPane" destination="57" id="75"/>
<outlet property="playlistView" destination="231" id="244"/>
<outlet property="rubberbandPane" destination="l4Y-NE-ezS" id="XTA-io-tov"/>
<outlet property="updatesView" destination="50" id="99"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
@ -364,8 +365,8 @@
</popUpButtonCell>
<connections>
<binding destination="SuD-jI-ifw" name="content" keyPath="arrangedObjects" id="sCS-i7-Vgf"/>
<binding destination="SuD-jI-ifw" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="sCS-i7-Vgf" id="Gmm-bC-A04"/>
<binding destination="SuD-jI-ifw" name="contentValues" keyPath="arrangedObjects.name" previousBinding="Gmm-bC-A04" id="8qt-aA-iuT"/>
<binding destination="SuD-jI-ifw" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="sCS-i7-Vgf" id="Gmm-bC-A04"/>
<binding destination="52" name="selectedObject" keyPath="values.volumeScaling" previousBinding="8qt-aA-iuT" id="9QJ-Xb-iOP"/>
</connections>
</popUpButton>
@ -392,14 +393,6 @@
</customObject>
<customObject id="l4Y-NE-ezS" customClass="RubberbandPane">
<connections>
<outlet property="detectorButton" destination="0YE-uu-Wcf" id="6Zi-9v-8xG"/>
<outlet property="detectorLabel" destination="a8m-fk-rd6" id="0Ba-14-DH0"/>
<outlet property="phaseButton" destination="AGi-va-Euk" id="ePJ-19-Eta"/>
<outlet property="phaseLabel" destination="ORM-SO-bUh" id="VZb-mx-Ov3"/>
<outlet property="smoothingButton" destination="Nd4-eR-Fuc" id="egf-oG-HA9"/>
<outlet property="smoothingLabel" destination="Cgd-Gz-9BJ" id="FuP-9E-5TH"/>
<outlet property="transientsButton" destination="DXC-dj-SqU" id="qBv-lU-s4I"/>
<outlet property="transientsLabel" destination="I7l-Pq-shw" id="FRi-lP-zVy"/>
<outlet property="view" destination="aAk-E4-RKg" id="sNN-AB-eF6"/>
<outlet property="windowBehavior" destination="qKv-dH-ulp" id="573-jZ-bx1"/>
</connections>
@ -1175,7 +1168,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="1lM-3b-70I" id="GC1-VY-f1a">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="dms-r8-XjB">
<items>
<menuItem title="Item 1" state="on" id="1lM-3b-70I"/>
@ -1187,8 +1180,8 @@
<connections>
<action selector="changeState:" target="l4Y-NE-ezS" id="76u-y7-qMk"/>
<binding destination="Ewm-6m-QFa" name="content" keyPath="arrangedObjects" id="Isc-4V-5Jn"/>
<binding destination="Ewm-6m-QFa" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Isc-4V-5Jn" id="ThL-sW-Drv"/>
<binding destination="Ewm-6m-QFa" name="contentValues" keyPath="arrangedObjects.name" previousBinding="ThL-sW-Drv" id="MZq-Y3-D6P"/>
<binding destination="Ewm-6m-QFa" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Isc-4V-5Jn" id="ThL-sW-Drv"/>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandEngine" previousBinding="MZq-Y3-D6P" id="D4h-nt-d3Q"/>
</connections>
</popUpButton>
@ -1200,13 +1193,20 @@
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="Kbb-Jr-kQr">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="DXC-dj-SqU" userLabel="Rubberband Transients">
<rect key="frame" x="186" y="184" width="164" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="VST-yJ-RYa" id="kQi-sh-T5t">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="gh1-qA-abN">
<items>
<menuItem title="Item 1" state="on" id="VST-yJ-RYa"/>
@ -1217,8 +1217,13 @@
</popUpButtonCell>
<connections>
<binding destination="rD7-3H-4FM" name="content" keyPath="arrangedObjects" id="vf7-6E-9v5"/>
<binding destination="rD7-3H-4FM" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="vf7-6E-9v5" id="M9I-iY-Wej"/>
<binding destination="rD7-3H-4FM" name="contentValues" keyPath="arrangedObjects.name" previousBinding="M9I-iY-Wej" id="O0z-2y-UPl"/>
<binding destination="rD7-3H-4FM" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="vf7-6E-9v5" id="M9I-iY-Wej"/>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="pYS-w5-uyT">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandTransients" previousBinding="O0z-2y-UPl" id="KLB-xJ-rb9"/>
</connections>
</popUpButton>
@ -1230,13 +1235,20 @@
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="Yam-2c-Ktt">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="0YE-uu-Wcf" userLabel="Rubberband Detector">
<rect key="frame" x="186" y="160" width="164" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Gi6-qx-PH1" id="WDV-DN-iwU">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="m0Q-cK-by1">
<items>
<menuItem title="Item 1" state="on" id="Gi6-qx-PH1"/>
@ -1247,8 +1259,13 @@
</popUpButtonCell>
<connections>
<binding destination="0rf-6O-MPh" name="content" keyPath="arrangedObjects" id="1Lg-gE-DdG"/>
<binding destination="0rf-6O-MPh" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="1Lg-gE-DdG" id="37N-3K-rq6"/>
<binding destination="0rf-6O-MPh" name="contentValues" keyPath="arrangedObjects.name" previousBinding="37N-3K-rq6" id="kLx-xv-a24"/>
<binding destination="0rf-6O-MPh" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="1Lg-gE-DdG" id="37N-3K-rq6"/>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="0Qr-w7-JMe">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandDetector" previousBinding="kLx-xv-a24" id="MQw-g6-ogU"/>
</connections>
</popUpButton>
@ -1260,13 +1277,20 @@
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="hqe-Xx-oDX">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AGi-va-Euk" userLabel="Rubberband Phase">
<rect key="frame" x="186" y="136" width="164" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="iEL-9R-pTH" id="Vcd-rh-VAc">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="FTa-ln-M8f">
<items>
<menuItem title="Item 1" state="on" id="iEL-9R-pTH"/>
@ -1277,8 +1301,13 @@
</popUpButtonCell>
<connections>
<binding destination="XkG-oY-ZCw" name="content" keyPath="arrangedObjects" id="15P-mE-WZ7"/>
<binding destination="XkG-oY-ZCw" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="15P-mE-WZ7" id="iRN-4y-psG"/>
<binding destination="XkG-oY-ZCw" name="contentValues" keyPath="arrangedObjects.name" previousBinding="iRN-4y-psG" id="VjJ-5K-hbu"/>
<binding destination="XkG-oY-ZCw" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="15P-mE-WZ7" id="iRN-4y-psG"/>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="olc-Zu-jtV">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandPhase" previousBinding="VjJ-5K-hbu" id="e13-ei-jMs"/>
</connections>
</popUpButton>
@ -1296,7 +1325,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="tqQ-AN-ZlT" id="avs-IS-hfH">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="SA2-M5-pvX">
<items>
<menuItem title="Item 1" state="on" id="tqQ-AN-ZlT"/>
@ -1307,8 +1336,8 @@
</popUpButtonCell>
<connections>
<binding destination="qKv-dH-ulp" name="content" keyPath="arrangedObjects" id="Wph-cL-g56"/>
<binding destination="qKv-dH-ulp" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Wph-cL-g56" id="RHw-Gv-iI0"/>
<binding destination="qKv-dH-ulp" name="contentValues" keyPath="arrangedObjects.name" previousBinding="RHw-Gv-iI0" id="NOc-zw-E5B"/>
<binding destination="qKv-dH-ulp" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="Wph-cL-g56" id="RHw-Gv-iI0"/>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandWindow" previousBinding="NOc-zw-E5B" id="jO4-fL-0ka"/>
</connections>
</popUpButton>
@ -1320,13 +1349,20 @@
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="Shn-JN-4nI">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Nd4-eR-Fuc" userLabel="Rubberband Smoothing">
<rect key="frame" x="186" y="88" width="164" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="PiI-1l-qbj" id="VKp-9U-hvc">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="uMg-iX-U2g">
<items>
<menuItem title="Item 1" state="on" id="PiI-1l-qbj"/>
@ -1337,8 +1373,13 @@
</popUpButtonCell>
<connections>
<binding destination="7qK-HD-YRC" name="content" keyPath="arrangedObjects" id="glT-yT-Xy1"/>
<binding destination="7qK-HD-YRC" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="glT-yT-Xy1" id="R8g-75-OWT"/>
<binding destination="7qK-HD-YRC" name="contentValues" keyPath="arrangedObjects.name" previousBinding="R8g-75-OWT" id="OtE-O8-meo"/>
<binding destination="7qK-HD-YRC" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="glT-yT-Xy1" id="R8g-75-OWT"/>
<binding destination="52" name="enabled" keyPath="values.rubberbandEngine" id="q0n-WG-Xis">
<dictionary key="options">
<string key="NSValueTransformerName">RubberbandEngineTransformer</string>
</dictionary>
</binding>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandSmoothing" previousBinding="OtE-O8-meo" id="jqW-KQ-IiR"/>
</connections>
</popUpButton>
@ -1356,7 +1397,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="aza-qe-fwC" id="5wR-Iv-QLl">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="4WS-kE-k5Y">
<items>
<menuItem title="Item 1" state="on" id="aza-qe-fwC"/>
@ -1367,8 +1408,8 @@
</popUpButtonCell>
<connections>
<binding destination="5Cw-Q7-Y6w" name="content" keyPath="arrangedObjects" id="8PO-vs-kd4"/>
<binding destination="5Cw-Q7-Y6w" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="8PO-vs-kd4" id="Tuw-7B-rA3"/>
<binding destination="5Cw-Q7-Y6w" name="contentValues" keyPath="arrangedObjects.name" previousBinding="Tuw-7B-rA3" id="d3u-gj-AVL"/>
<binding destination="5Cw-Q7-Y6w" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="8PO-vs-kd4" id="Tuw-7B-rA3"/>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandFormant" previousBinding="d3u-gj-AVL" id="jQQ-qt-LAC"/>
</connections>
</popUpButton>
@ -1386,7 +1427,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Dlb-p9-5sC" id="xjb-bC-UbD">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="UIS-a0-dyq">
<items>
<menuItem title="Item 1" state="on" id="Dlb-p9-5sC"/>
@ -1397,8 +1438,8 @@
</popUpButtonCell>
<connections>
<binding destination="mFW-7h-5rd" name="content" keyPath="arrangedObjects" id="yqp-aH-3Vn"/>
<binding destination="mFW-7h-5rd" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="yqp-aH-3Vn" id="X49-3Z-EWj"/>
<binding destination="mFW-7h-5rd" name="contentValues" keyPath="arrangedObjects.name" previousBinding="X49-3Z-EWj" id="ISf-ZT-bQj"/>
<binding destination="mFW-7h-5rd" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="yqp-aH-3Vn" id="X49-3Z-EWj"/>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandPitch" previousBinding="ISf-ZT-bQj" id="O1U-TC-XPY"/>
</connections>
</popUpButton>
@ -1416,7 +1457,7 @@
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="5jm-EX-ibI" id="OwG-Xq-Gsy">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<font key="font" metaFont="message"/>
<menu key="menu" id="Gd8-Cx-gIi">
<items>
<menuItem title="Item 1" state="on" id="5jm-EX-ibI"/>
@ -1427,8 +1468,8 @@
</popUpButtonCell>
<connections>
<binding destination="Dfm-y4-7ki" name="content" keyPath="arrangedObjects" id="bas-JW-4u4"/>
<binding destination="Dfm-y4-7ki" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="bas-JW-4u4" id="K1C-oq-2vZ"/>
<binding destination="Dfm-y4-7ki" name="contentValues" keyPath="arrangedObjects.name" previousBinding="K1C-oq-2vZ" id="8Ja-Tu-lo2"/>
<binding destination="Dfm-y4-7ki" name="contentObjects" keyPath="arrangedObjects.preference" previousBinding="bas-JW-4u4" id="K1C-oq-2vZ"/>
<binding destination="52" name="selectedObject" keyPath="values.rubberbandChannels" previousBinding="8Ja-Tu-lo2" id="Xyj-me-7r1"/>
</connections>
</popUpButton>

View file

@ -10,6 +10,7 @@
#import "ColorToValueTransformer.h"
#import "PathToFileTransformer.h"
#import "TimeIntervalToStringTransformer.h"
#import "RubberbandEngineTransformer.h"
@implementation GeneralPreferencesPlugin
@ -25,6 +26,10 @@
NSValueTransformer *timeIntervalToStringTransformer = [[TimeIntervalToStringTransformer alloc] init];
[NSValueTransformer setValueTransformer:timeIntervalToStringTransformer
forName:@"TimeIntervalToStringTransformer"];
NSValueTransformer *rubberbandEngineTransformer = [[RubberbandEngineTransformer alloc] init];
[NSValueTransformer setValueTransformer:rubberbandEngineTransformer
forName:@"RubberbandEngineTransformer"];
}
+ (NSArray *)preferencePanes {

View file

@ -22,6 +22,7 @@
8307D31728606EAF000FF8EB /* growl@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31328606EAF000FF8EB /* growl@2x.png */; };
8307D31828606EAF000FF8EB /* general.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31428606EAF000FF8EB /* general.png */; };
8307D31928606EAF000FF8EB /* growl.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31528606EAF000FF8EB /* growl.png */; };
832650FC2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */; };
833A899F286FF3850022E036 /* TimeIntervalToStringTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */; };
83651DA527322C8700A2C097 /* MIDIFlavorBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83651DA327322C8700A2C097 /* MIDIFlavorBehaviorArrayController.m */; };
8372053718E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8372053618E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m */; };
@ -107,6 +108,8 @@
8307D31328606EAF000FF8EB /* growl@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "growl@2x.png"; path = "Icons/growl@2x.png"; sourceTree = "<group>"; };
8307D31428606EAF000FF8EB /* general.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = general.png; path = Icons/general.png; sourceTree = "<group>"; };
8307D31528606EAF000FF8EB /* growl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = growl.png; path = Icons/growl.png; sourceTree = "<group>"; };
832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RubberbandEngineTransformer.m; sourceTree = "<group>"; };
832650FF2D5B4A2D00CC7D8F /* RubberbandEngineTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RubberbandEngineTransformer.h; sourceTree = "<group>"; };
833A899D286FF3850022E036 /* TimeIntervalToStringTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TimeIntervalToStringTransformer.h; sourceTree = "<group>"; };
833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimeIntervalToStringTransformer.m; sourceTree = "<group>"; };
833F681B1CDBCAA700AFB9F0 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@ -333,6 +336,8 @@
83A3B72B283AE04800CC6593 /* ColorToValueTransformer.m */,
833A899D286FF3850022E036 /* TimeIntervalToStringTransformer.h */,
833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */,
832650FF2D5B4A2D00CC7D8F /* RubberbandEngineTransformer.h */,
832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */,
);
name = Transformers;
sourceTree = "<group>";
@ -509,6 +514,7 @@
8E07AA8A0AAC8EA200A4B32F /* GeneralPreferencesPlugin.m in Sources */,
83EF495F17FBC96A00642E3C /* VolumeBehaviorArrayController.m in Sources */,
17C643380B8A77CC00C53518 /* OutputsArrayController.m in Sources */,
832650FC2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m in Sources */,
8307D30528604D8B000FF8EB /* SandboxPathBehaviorController.m in Sources */,
8307D30B286057B5000FF8EB /* GeneralPane.m in Sources */,
83A3B72C283AE04800CC6593 /* ColorToValueTransformer.m in Sources */,

View file

@ -0,0 +1,19 @@
//
// RubberbandEngineTransformer.h
// Preferences
//
// Created by Christopher Snowhill on 2/11/25.
//
#ifndef RubberbandEngineTransformer_h
#define RubberbandEngineTransformer_h
NS_ASSUME_NONNULL_BEGIN
@interface RubberbandEngineTransformer : NSValueTransformer
@end
NS_ASSUME_NONNULL_END
#endif /* EngineTransformer_h */

View file

@ -0,0 +1,53 @@
//
// EngineTransformer.m
// Preferences
//
// Created by Christopher Snowhill on 2/11/25.
//
#import <Foundation/Foundation.h>
#import "RubberbandEngineTransformer.h"
@implementation RubberbandEngineTransformer
+ (Class)transformedValueClass {
return [NSNumber class];
}
+ (BOOL)allowsReverseTransformation {
return NO;
}
- (id)transformedValue:(id)value {
if(value == nil) return @(YES);
if([value isKindOfClass:[NSString class]]) {
NSString *stringValue = value;
if([stringValue isEqualToString:@"finer"]) {
return @(NO);
}
}
return @(YES);
}
@end

View file

@ -18,15 +18,7 @@
@end
@interface RubberbandPane : GeneralPreferencePane {
IBOutlet NSTextField *transientsLabel;
IBOutlet NSPopUpButton *transientsButton;
IBOutlet NSTextField *detectorLabel;
IBOutlet NSPopUpButton *detectorButton;
IBOutlet NSTextField *phaseLabel;
IBOutlet NSPopUpButton *phaseButton;
IBOutlet RubberbandWindowArrayController *windowBehavior;
IBOutlet NSTextField *smoothingLabel;
IBOutlet NSPopUpButton *smoothingButton;
}
- (IBAction)changeState:(id)sender;

View file

@ -29,13 +29,6 @@
NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults];
BOOL engineR3 = [[defaults stringForKey:@"rubberbandEngine"] isEqualToString:@"finer"];
[transientsLabel setEnabled:!engineR3];
[transientsButton setEnabled:!engineR3];
[phaseLabel setEnabled:!engineR3];
[phaseButton setEnabled:!engineR3];
[smoothingLabel setEnabled:!engineR3];
[smoothingButton setEnabled:!engineR3];
[windowBehavior reinitWithEngine:engineR3];
if(engineR3) {