- widget bulk edit, clear, import

- refactor coding
This commit is contained in:
True Zhuanjia
2026-04-03 22:14:05 +08:00
parent 605f276a71
commit 60e92c458e
18 changed files with 3177 additions and 235 deletions
+4 -6
View File
@@ -39,13 +39,13 @@
2AAA4E842F7666EE001E20DC /* SwiftLocalizationHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E1CDF92C4FE83400547904 /* SwiftLocalizationHelper.swift */; };
2AC1E3832F507D80004F76C0 /* GenericUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AC1E3822F507D80004F76C0 /* GenericUtils.swift */; };
3A4A3A112F0C000100000001 /* OSCProfilesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A4A3A102F0C000100000001 /* OSCProfilesTableViewController.swift */; };
3A4A3A132F0C000100000003 /* LayoutOnScreenControlsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A4A3A122F0C000100000002 /* LayoutOnScreenControlsViewController.swift */; };
840751B32BF49C050096B657 /* CustomTapGestureRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 840751B22BF49C050096B657 /* CustomTapGestureRecognizer.m */; };
84203F232C5F24C00032EEED /* OnScreenWidgetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84203F222C5F24C00032EEED /* OnScreenWidgetView.swift */; };
84351B0E2C29ACCB00A77989 /* LayoutOnScreenControls.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B072C29ACCA00A77989 /* LayoutOnScreenControls.m */; };
84351B0F2C29ACCB00A77989 /* OnScreenButtonState.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B092C29ACCA00A77989 /* OnScreenButtonState.m */; };
84351B102C29ACCB00A77989 /* OSCProfile.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B0A2C29ACCA00A77989 /* OSCProfile.m */; };
84351B112C29ACCB00A77989 /* OSCProfilesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B0B2C29ACCB00A77989 /* OSCProfilesManager.m */; };
84351B2B2C29AD6100A77989 /* LayoutOnScreenControlsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B252C29AD6000A77989 /* LayoutOnScreenControlsViewController.m */; };
84351B2D2C29AD6100A77989 /* ToolBarContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 84351B292C29AD6000A77989 /* ToolBarContainerView.m */; };
84351B5D2C29ADBE00A77989 /* ProfileTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 84351B5B2C29ADBE00A77989 /* ProfileTableViewCell.xib */; };
843667F02D9D7173004A7D7F /* widgetTemplates.bin in Resources */ = {isa = PBXBuildFile; fileRef = 843667EF2D9D7173004A7D7F /* widgetTemplates.bin */; };
@@ -204,6 +204,7 @@
2A7113FC2F5A6C65001D852D /* ThemeManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeManager.swift; sourceTree = "<group>"; };
2AC1E3822F507D80004F76C0 /* GenericUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GenericUtils.swift; sourceTree = "<group>"; };
3A4A3A102F0C000100000001 /* OSCProfilesTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OSCProfilesTableViewController.swift; sourceTree = "<group>"; };
3A4A3A122F0C000100000002 /* LayoutOnScreenControlsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LayoutOnScreenControlsViewController.swift; sourceTree = "<group>"; };
693B3A9A218638CD00982F7B /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
840751B12BF49B5A0096B657 /* CustomTapGestureRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomTapGestureRecognizer.h; sourceTree = "<group>"; };
840751B22BF49C050096B657 /* CustomTapGestureRecognizer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomTapGestureRecognizer.m; sourceTree = "<group>"; };
@@ -216,8 +217,6 @@
84351B0B2C29ACCB00A77989 /* OSCProfilesManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OSCProfilesManager.m; sourceTree = "<group>"; };
84351B0C2C29ACCB00A77989 /* LayoutOnScreenControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutOnScreenControls.h; sourceTree = "<group>"; };
84351B0D2C29ACCB00A77989 /* OSCProfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OSCProfile.h; sourceTree = "<group>"; };
84351B252C29AD6000A77989 /* LayoutOnScreenControlsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LayoutOnScreenControlsViewController.m; sourceTree = "<group>"; };
84351B282C29AD6000A77989 /* LayoutOnScreenControlsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutOnScreenControlsViewController.h; sourceTree = "<group>"; };
84351B292C29AD6000A77989 /* ToolBarContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ToolBarContainerView.m; sourceTree = "<group>"; };
84351B2A2C29AD6000A77989 /* ToolBarContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ToolBarContainerView.h; sourceTree = "<group>"; };
84351B5B2C29ADBE00A77989 /* ProfileTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ProfileTableViewCell.xib; sourceTree = "<group>"; };
@@ -496,8 +495,7 @@
isa = PBXGroup;
children = (
84351B2E2C29AD6600A77989 /* Table */,
84351B282C29AD6000A77989 /* LayoutOnScreenControlsViewController.h */,
84351B252C29AD6000A77989 /* LayoutOnScreenControlsViewController.m */,
3A4A3A122F0C000100000002 /* LayoutOnScreenControlsViewController.swift */,
187F4B232E04633100EECC59 /* WidgetPanelStackView.h */,
187F4B272E04658A00EECC59 /* WidgetPanelStackView.m */,
84351B2A2C29AD6000A77989 /* ToolBarContainerView.h */,
@@ -1214,7 +1212,7 @@
18B317032EE67A3A009B62C2 /* InertialScroller.swift in Sources */,
FB4A23B81A9D3637004D2EF2 /* LoadingFrameViewController.m in Sources */,
FB9AFD3A1A7E05CE00872C98 /* ServerInfoResponse.m in Sources */,
84351B2B2C29AD6100A77989 /* LayoutOnScreenControlsViewController.m in Sources */,
3A4A3A132F0C000100000003 /* LayoutOnScreenControlsViewController.swift in Sources */,
18341A042DEB662C0094E5F2 /* FixedTintImageView.m in Sources */,
18416EA42EBB3DCE00AE0124 /* UITouchUtil.swift in Sources */,
FB89463119F646E200339C8A /* StreamManager.m in Sources */,
+324 -29
View File
@@ -2443,13 +2443,13 @@
<!--Layout On Screen Controls View Controller-->
<scene sceneID="b1i-Hg-s86">
<objects>
<viewController storyboardIdentifier="LayoutOnScreenControlsViewController" id="xSZ-i2-Jts" customClass="LayoutOnScreenControlsViewController" sceneMemberID="viewController">
<viewController storyboardIdentifier="LayoutOnScreenControlsViewController" id="xSZ-i2-Jts" customClass="LayoutOnScreenControlsViewController" customModule="VoidLink" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="O1f-cu-KVo"/>
<viewControllerLayoutGuide type="bottom" id="eaS-aj-VtA"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Acw-S4-f8a">
<rect key="frame" x="0.0" y="0.0" width="1300" height="1194"/>
<rect key="frame" x="0.0" y="0.0" width="1300" height="1500"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fZU-G0-fgM" userLabel="Toolbar Root View" customClass="ToolBarContainerView">
@@ -2626,7 +2626,7 @@
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="z5Q-bW-WQ8" userLabel="widgetPanelStack" customClass="WidgetPanelStackView">
<rect key="frame" x="325" y="156" width="650" height="926"/>
<rect key="frame" x="325" y="156" width="650" height="1135"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Profile:" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iel-xl-xd9">
<rect key="frame" x="0.0" y="0.0" width="650" height="37"/>
@@ -2742,7 +2742,7 @@
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="9ZS-28-txW" userLabel="borderWidthAlphaStack">
<rect key="frame" x="0.0" y="358" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pwa-YK-6Q2" userLabel="widgetAlphaLabel">
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.59999999999999998" translatesAutoresizingMaskIntoConstraints="NO" id="Pwa-YK-6Q2" userLabel="widgetAlphaLabel">
<rect key="frame" x="0.0" y="0.0" width="101" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="101" id="1ru-Nd-cf4"/>
@@ -2778,7 +2778,7 @@
<stackView contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="zfD-bd-GEN" userLabel="stickIndicatorOffsetStack">
<rect key="frame" x="0.0" y="397" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stick Indicator" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tG7-oX-P9b" userLabel="stickIndicatorOffsetLabel">
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stick Indicator" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.29999999999999999" translatesAutoresizingMaskIntoConstraints="NO" id="tG7-oX-P9b" userLabel="stickIndicatorOffsetLabel">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="Am2-6L-a26"/>
@@ -2806,7 +2806,7 @@
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="DiG-XX-r8c">
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="16" translatesAutoresizingMaskIntoConstraints="NO" id="DiG-XX-r8c">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@@ -2825,7 +2825,7 @@
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="2Wo-9z-DtK">
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="16" translatesAutoresizingMaskIntoConstraints="NO" id="2Wo-9z-DtK">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@@ -2965,8 +2965,145 @@
</slider>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="hW2-nl-EK3" userLabel="bulkEditStacks">
<rect key="frame" x="0.0" y="787" width="650" height="204"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSh-xS-xfD">
<rect key="frame" x="0.0" y="0.0" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yF0-Tu-L8X">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="ofw-9E-Plc"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="fjz-Ou-buw">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="Awz-Nl-ofZ"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wxc-0O-tca">
<rect key="frame" x="0.0" y="34" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wTH-1Z-Fgh">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="OyF-eF-9ag"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="s98-EU-FWC">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="EMS-PU-ywQ"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O0O-pZ-URe" userLabel="Bulk Label Alpha Stack">
<rect key="frame" x="0.0" y="68" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kSX-ci-kx5">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="L3D-Ej-6ZS"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999999999999996" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="X0I-ZZ-ZGT">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="a7b-Tm-z5c"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rfr-nL-OCc">
<rect key="frame" x="0.0" y="102" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAF-Vy-ZzK">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="cWO-t5-t5M"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="3YT-BO-4Pr">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="1Qz-2x-yz5"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X7d-dV-lHa">
<rect key="frame" x="0.0" y="136" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1sF-08-aCr">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="ZUf-9R-Smf"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="UW7-u0-8Sb">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="nQk-5N-V2J"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nBA-Ii-jNy">
<rect key="frame" x="0.0" y="170" width="650" height="34"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hKK-ro-C5E">
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="C4Q-cb-ZXx"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="w9M-2J-uIu">
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="34" id="cnY-K5-kcZ"/>
</constraints>
</stackView>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GMQ-EQ-Hum" userLabel="mouseDownButtonStack">
<rect key="frame" x="0.0" y="787" width="650" height="31"/>
<rect key="frame" x="0.0" y="996" width="650" height="31"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Down button" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c1r-Hf-b7t" userLabel="mouseDownButtonLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
@@ -2993,7 +3130,7 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LGW-oJ-5Zf" userLabel="triggerModeStack">
<rect key="frame" x="0.0" y="823" width="650" height="31"/>
<rect key="frame" x="0.0" y="1032" width="650" height="31"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button mode" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qNQ-fB-jhY" userLabel="uiLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
@@ -3029,7 +3166,7 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FEI-wQ-Q3w">
<rect key="frame" x="0.0" y="859" width="650" height="31"/>
<rect key="frame" x="0.0" y="1068" width="650" height="31"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collected widgets " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.20000000000000001" translatesAutoresizingMaskIntoConstraints="NO" id="WLg-7a-5wu" userLabel="uiLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
@@ -3078,29 +3215,166 @@
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K9t-Ky-bWg">
<rect key="frame" x="0.0" y="895" width="650" height="31"/>
<rect key="frame" x="0.0" y="1104" width="650" height="31"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.20000000298023224" translatesAutoresizingMaskIntoConstraints="NO" id="wrg-n4-F5w" userLabel="uiLabel">
<rect key="frame" x="0.0" y="0.0" width="335" height="31"/>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aBW-x7-cFd">
<rect key="frame" x="0.0" y="0.0" width="330" height="31"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Lar-2o-R7c">
<rect key="frame" x="0.0" y="0.0" width="35" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="35" id="Uly-QK-Ss9"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" hasAttributedTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2TR-Kd-ro4">
<rect key="frame" x="35" y="0.0" width="90" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="90" id="QKh-al-ndE"/>
</constraints>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button">
<attributedString key="attributedTitle">
<fragment content="Clear">
<attributes>
<font key="NSFont" size="12" name="Helvetica"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="titleColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Clear">
<attributes>
<font key="NSFont" size="12" name="Helvetica"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1468960597" green="0.58808250149999997" blue="0.66120692569999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="clearFolderButtonTapped:" destination="xSZ-i2-Jts" eventType="touchUpInside" id="yND-M5-3lu"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BlQ-y7-iDS">
<rect key="frame" x="125" y="0.0" width="5" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="5" id="WKZ-kW-aww"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" hasAttributedTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cyH-Fh-vW6">
<rect key="frame" x="130" y="0.0" width="90" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="90" id="UeY-vl-Bq1"/>
</constraints>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button">
<attributedString key="attributedTitle">
<fragment content="Import">
<attributes>
<font key="NSFont" size="11" name="Helvetica"/>
<font key="NSOriginalFont" size="12" name="Helvetica"/>
</attributes>
</fragment>
</attributedString>
<color key="titleColor" red="0.22216352245551219" green="0.88940765545333844" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Import">
<attributes>
<font key="NSFont" size="11" name="Helvetica"/>
<font key="NSOriginalFont" size="12" name="Helvetica"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352245551219" green="0.88940765545333844" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1468960597" green="0.58808250149999997" blue="0.66120692569999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="importFromOtherButtonTapped:" destination="xSZ-i2-Jts" eventType="touchUpInside" id="4qp-jo-KkV"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ocb-R1-UYc">
<rect key="frame" x="220" y="0.0" width="5" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="5" id="xI6-7Y-omo"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" hasAttributedTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aGh-QR-gBW">
<rect key="frame" x="225" y="0.0" width="100" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="90" id="Osk-FF-3gf"/>
</constraints>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Button">
<attributedString key="attributedTitle">
<fragment content="Import">
<attributes>
<font key="NSFont" size="11" name="Helvetica"/>
<font key="NSOriginalFont" size="12" name="Helvetica"/>
</attributes>
</fragment>
</attributedString>
<color key="titleColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</state>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Bulk edit">
<attributes>
<font key="NSFont" size="12" name="Helvetica"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1468960597" green="0.58808250149999997" blue="0.66120692569999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="bulkEditButtonTapped:" destination="xSZ-i2-Jts" eventType="touchUpInside" id="lSc-Nf-vaN"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jcq-LI-15e">
<rect key="frame" x="325" y="0.0" width="5" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="5" id="Jha-La-jBR"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="width" constant="335" id="ffw-BR-Bg6" userLabel="width = 270"/>
<constraint firstAttribute="width" constant="256" id="gr0-vH-hFu"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Bulk move " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.20000000298023224" translatesAutoresizingMaskIntoConstraints="NO" id="Jeb-fE-sCm" userLabel="uiLabel">
<rect key="frame" x="335" y="0.0" width="105" height="31"/>
</stackView>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Batch move " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.20000000298023224" translatesAutoresizingMaskIntoConstraints="NO" id="Jeb-fE-sCm" userLabel="uiLabel">
<rect key="frame" x="330" y="0.0" width="130" height="31"/>
<constraints>
<constraint firstAttribute="width" constant="105" id="45p-45-AdA"/>
<constraint firstAttribute="width" constant="130" id="45p-45-AdA"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" alpha="0.76999998092651367" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="bNW-R2-UuH">
<rect key="frame" x="440" y="0.0" width="210" height="32"/>
<rect key="frame" x="460" y="0.0" width="190" height="32"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="190" id="ymS-OA-pFH"/>
</constraints>
<segments>
<segment title="disabled"/>
<segment title="enabled"/>
@@ -3126,19 +3400,39 @@
</view>
<toolbarItems/>
<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
<size key="freeformSize" width="1300" height="1194"/>
<size key="freeformSize" width="1300" height="1500"/>
<connections>
<outlet property="addButton" destination="fKN-ja-TRi" id="R2n-QF-aSj"/>
<outlet property="autoTapField" destination="yLM-jp-jMl" id="t0v-tj-IZ3"/>
<outlet property="autoTapLabel" destination="And-W9-9NR" id="r5A-4a-XZP"/>
<outlet property="autoTapStack" destination="e4b-0v-36Z" id="PZd-KE-lPb"/>
<outlet property="borderWidthAlphaStack" destination="9ZS-28-txW" id="qxV-2E-g8m"/>
<outlet property="bulkAlphaLabel" destination="yF0-Tu-L8X" id="Z1J-vy-z4i"/>
<outlet property="bulkAlphaSlider" destination="fjz-Ou-buw" id="DI7-fp-Q0e"/>
<outlet property="bulkAlphaStack" destination="KSh-xS-xfD" id="zeb-H1-d8V"/>
<outlet property="bulkBorderAlphaLabel" destination="sAF-Vy-ZzK" id="KJP-Dh-Bld"/>
<outlet property="bulkBorderAlphaSlider" destination="3YT-BO-4Pr" id="12x-dK-bNQ"/>
<outlet property="bulkBorderAlphaStack" destination="rfr-nL-OCc" id="oa3-vi-2fq"/>
<outlet property="bulkBorderWidthLabel" destination="wTH-1Z-Fgh" id="eQA-Xn-PfW"/>
<outlet property="bulkBorderWidthSlider" destination="s98-EU-FWC" id="zUO-jg-zdp"/>
<outlet property="bulkBorderWidthStack" destination="Wxc-0O-tca" id="Z9c-qo-vsE"/>
<outlet property="bulkEditButton" destination="aGh-QR-gBW" id="abq-ig-GXd"/>
<outlet property="bulkHighlightAlphaLabel" destination="1sF-08-aCr" id="Sqr-40-9T0"/>
<outlet property="bulkHighlightAlphaSlider" destination="UW7-u0-8Sb" id="lWa-BB-gwc"/>
<outlet property="bulkHighlightAlphaStack" destination="X7d-dV-lHa" id="D2E-cK-Jce"/>
<outlet property="bulkHighlightSizeLabel" destination="hKK-ro-C5E" id="w8O-pf-h4c"/>
<outlet property="bulkHighlightSizeSlider" destination="w9M-2J-uIu" id="YoZ-T6-qpa"/>
<outlet property="bulkHighlightSizeStack" destination="nBA-Ii-jNy" id="7ra-H7-9mO"/>
<outlet property="bulkLabelAlphaLabel" destination="kSX-ci-kx5" id="GhN-ug-don"/>
<outlet property="bulkLabelAlphaSlider" destination="X0I-ZZ-ZGT" id="5Cv-RU-Pfv"/>
<outlet property="bulkLabelAlphaStack" destination="O0O-pZ-URe" id="x4u-Yh-fJI"/>
<outlet property="bulkMoveSelector" destination="bNW-R2-UuH" id="gM7-Me-Ycg"/>
<outlet property="bulkMoveStack" destination="K9t-Ky-bWg" id="rvL-7o-67b"/>
<outlet property="bulkMoveStack" destination="K9t-Ky-bWg" id="1q0-wM-EuB"/>
<outlet property="buttonModeSelector" destination="cKS-fy-Zpg" id="uIq-60-t7E"/>
<outlet property="buttonModeStack" destination="LGW-oJ-5Zf" id="Jn6-Mu-XYp"/>
<outlet property="chevronImageView" destination="iVZ-Fd-dY7" id="403-Nj-wRx"/>
<outlet property="chevronView" destination="hKp-ds-86I" id="Og9-aT-zNH"/>
<outlet property="clearFolderButton" destination="2TR-Kd-ro4" id="U68-O5-frv"/>
<outlet property="collectedWidgetsSelector" destination="sch-0e-nfa" id="ApS-gt-9Wq"/>
<outlet property="collectedWidgetsStack" destination="FEI-wQ-Q3w" id="o17-RT-wJJ"/>
<outlet property="componentSizeLabel" destination="XMg-F0-m2y" id="pQ6-MN-dcV"/>
@@ -3150,6 +3444,7 @@
<outlet property="decelerationRateStack" destination="KXB-uJ-onx" id="Xn7-gp-Ztt"/>
<outlet property="editButton" destination="R45-lM-YPl" id="DNS-7N-3Kh"/>
<outlet property="exitButton" destination="7bp-Wn-j9n" id="Kku-3T-RSO"/>
<outlet property="importFromOtherButton" destination="cyH-Fh-vW6" id="Jpb-qI-5LQ"/>
<outlet property="loadButton" destination="OId-gk-Wkg" id="adP-54-1ir"/>
<outlet property="minStickOffsetLabel" destination="F1n-T2-jX6" id="WBo-P5-xs2"/>
<outlet property="minStickOffsetSlider" destination="YBB-sq-fpO" id="Lwk-r4-rKh"/>
@@ -3314,22 +3609,22 @@
<image name="tray.full.fill" catalog="system" width="128" height="88"/>
<image name="video.and.waveform" catalog="system" width="128" height="94"/>
<systemColor name="linkColor">
<color red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.0" green="0.47843137254901963" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemBrownColor">
<color red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.67450980392156867" green="0.49803921568627452" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
<systemColor name="systemGray3Color">
<color red="0.78039215689999997" green="0.78039215689999997" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.7803921568627451" green="0.7803921568627451" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
<systemColor name="systemGray5Color">
<color red="0.8980392157" green="0.8980392157" blue="0.91764705879999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.89803921568627454" green="0.89803921568627454" blue="0.91764705882352937" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
<systemColor name="systemTealColor">
<color red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color red="0.0" green="0.76470588235294112" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>
+266 -18
View File
@@ -150,7 +150,7 @@
<!--Layout On Screen Controls View Controller-->
<scene sceneID="0t8-OY-y9y">
<objects>
<viewController storyboardIdentifier="LayoutOnScreenControlsViewController" id="ZYS-Zm-PJs" customClass="LayoutOnScreenControlsViewController" sceneMemberID="viewController">
<viewController storyboardIdentifier="LayoutOnScreenControlsViewController" id="ZYS-Zm-PJs" customClass="LayoutOnScreenControlsViewController" customModule="VoidLink" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="OEV-LT-On1"/>
<viewControllerLayoutGuide type="bottom" id="TWA-bF-hnk"/>
@@ -315,7 +315,7 @@
</constraints>
</view>
<stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="7" translatesAutoresizingMaskIntoConstraints="NO" id="BVp-3O-vZ7" userLabel="widgetPanelStack" customClass="WidgetPanelStackView">
<rect key="frame" x="375" y="132" width="550" height="840"/>
<rect key="frame" x="375" y="132" width="550" height="1002"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Profile:" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f46-Pt-0Pv">
<rect key="frame" x="0.0" y="0.0" width="550" height="28"/>
@@ -443,7 +443,7 @@
<stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="50p-sC-ObU" userLabel="borderWidthAlphaStack">
<rect key="frame" x="0.0" y="415" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qPQ-U2-aSg" userLabel="widgetAlphaLabel">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.29999999999999999" translatesAutoresizingMaskIntoConstraints="NO" id="qPQ-U2-aSg" userLabel="widgetAlphaLabel">
<rect key="frame" x="0.0" y="0.0" width="101" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="101" id="F3F-cO-OPA"/>
@@ -699,8 +699,140 @@
<constraint firstAttribute="height" constant="20" id="Aio-nO-nHA"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gsG-6n-BAb" userLabel="vibrationStyleStack">
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t6L-J9-AMW">
<rect key="frame" x="0.0" y="712" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MgK-KI-3y7">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="7vj-2n-waQ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="mNe-bA-Lgu">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="siC-KY-R1s"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eem-2H-ekN">
<rect key="frame" x="0.0" y="739" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TFq-Un-O3H">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="AkI-ZP-qfD"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="3Yx-vO-052">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="CbF-4C-SeB"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YB4-fc-lM6">
<rect key="frame" x="0.0" y="766" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Dr-3c-z61">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="sSo-xR-0nl"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999998807907104" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="XdO-Zu-fWB">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="3ZR-vO-NU9"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8tb-mS-WEu">
<rect key="frame" x="0.0" y="793" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eRy-My-vvU">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="ZBl-sM-khB"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Ogu-Fz-BTs">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="XCL-5v-ofF"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cJk-PA-Lp0">
<rect key="frame" x="0.0" y="820" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Kd-Cc-aYN">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="kDG-5Z-TXN"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="HMa-bt-1iD">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="FkW-CW-K74"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sxm-3C-Jlo">
<rect key="frame" x="0.0" y="847" width="550" height="20"/>
<subviews>
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hme-2d-8d6">
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="160" id="YJW-yE-OC7"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="OiU-Ae-cEn">
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</slider>
</subviews>
<constraints>
<constraint firstAttribute="height" constant="20" id="zGB-Zd-F1t"/>
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gsG-6n-BAb" userLabel="vibrationStyleStack">
<rect key="frame" x="0.0" y="874" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Vibration style" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u3w-Se-xzH" userLabel="sensitivityFactorLabel">
<rect key="frame" x="0.0" y="0.0" width="130" height="20"/>
@@ -731,7 +863,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lEZ-1a-89J" userLabel="mouseButtonDownStack">
<rect key="frame" x="0.0" y="739" width="550" height="20"/>
<rect key="frame" x="0.0" y="901" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button down" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ozU-7C-qKE" userLabel="uilabel">
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
@@ -761,7 +893,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jE7-IB-GTS" userLabel="slidableStack">
<rect key="frame" x="0.0" y="766" width="550" height="20"/>
<rect key="frame" x="0.0" y="928" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button mode" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o9I-Gt-YRd" userLabel="uilabel">
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
@@ -800,7 +932,7 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="weV-Li-Itz">
<rect key="frame" x="0.0" y="793" width="550" height="20"/>
<rect key="frame" x="0.0" y="955" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collected Widgets " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000000000001" translatesAutoresizingMaskIntoConstraints="NO" id="kek-77-Kmg" userLabel="uilabel">
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
@@ -849,19 +981,111 @@
</constraints>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IWg-XO-cff">
<rect key="frame" x="0.0" y="820" width="550" height="20"/>
<rect key="frame" x="0.0" y="982" width="550" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="275" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000149011612" translatesAutoresizingMaskIntoConstraints="NO" id="QtA-AD-aJw" userLabel="uilabel">
<rect key="frame" x="0.0" y="0.0" width="280" height="20"/>
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MZj-th-E9Z">
<rect key="frame" x="0.0" y="0.0" width="284" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KbX-bp-pYg">
<rect key="frame" x="0.0" y="0.0" width="45" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="x7V-EZ-lpc"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="RqY-mm-5dD">
<rect key="frame" x="45" y="0.0" width="70" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="6yS-M3-f6B"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Clear">
<attributes>
<font key="NSFont" size="12" name="Helvetica"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1161463808" green="0.46497948480000001" blue="0.52279680969999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="clearFolderButtonTapped:" destination="ZYS-Zm-PJs" eventType="touchUpInside" id="K2t-Mf-tpd"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wxw-Q8-aqN">
<rect key="frame" x="115" y="0.0" width="5" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="5" id="rsB-v3-oBC"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="b63-Pp-oPM">
<rect key="frame" x="120" y="0.0" width="70" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="KtY-7k-UAR"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Import">
<attributes>
<font key="NSFont" size="11" name="Helvetica"/>
<font key="NSOriginalFont" size="12" name="Helvetica"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1161463808" green="0.46497948480000001" blue="0.52279680969999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="importFromOtherButtonTapped:" destination="ZYS-Zm-PJs" eventType="touchUpInside" id="UxK-Zm-N0o"/>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kMi-oG-eDT">
<rect key="frame" x="190" y="0.0" width="5" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="5" id="uRp-KS-U4J"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wrY-O9-BeU">
<rect key="frame" x="195" y="0.0" width="89" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="82" id="wK9-li-5RT"/>
</constraints>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="tinted">
<attributedString key="attributedTitle">
<fragment content="Batch edit">
<attributes>
<font key="NSFont" size="12" name="Helvetica"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<color key="baseForegroundColor" red="0.22216352249999999" green="0.88940765550000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="baseBackgroundColor" red="0.1161463808" green="0.46497948480000001" blue="0.52279680969999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</buttonConfiguration>
<connections>
<action selector="bulkEditButtonTapped:" destination="ZYS-Zm-PJs" eventType="touchUpInside" id="Kk7-U3-x0a"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstAttribute="width" constant="280" id="I4n-79-duL"/>
<constraint firstAttribute="width" constant="256" id="vXe-Cm-HVQ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Bulk move " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000149011612" translatesAutoresizingMaskIntoConstraints="NO" id="P9b-Th-Ybc" userLabel="uilabel">
<rect key="frame" x="280" y="0.0" width="117" height="20"/>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Batch move " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000149011612" translatesAutoresizingMaskIntoConstraints="NO" id="P9b-Th-Ybc" userLabel="uilabel">
<rect key="frame" x="284" y="0.0" width="117" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="117" id="RaW-fh-0bt"/>
</constraints>
@@ -870,8 +1094,11 @@
<nil key="highlightedColor"/>
</label>
<segmentedControl opaque="NO" alpha="0.69999998807907104" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="ful-j0-kgc">
<rect key="frame" x="397" y="0.0" width="153" height="21"/>
<rect key="frame" x="401" y="0.0" width="149" height="21"/>
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="149" id="AxS-cq-cMU"/>
</constraints>
<segments>
<segment title="disabled"/>
<segment title="enabled"/>
@@ -904,12 +1131,32 @@
<outlet property="autoTapLabel" destination="IuG-44-1Je" id="YWb-0d-zbB"/>
<outlet property="autoTapStack" destination="tDJ-cy-BYU" id="moT-DJ-jwF"/>
<outlet property="borderWidthAlphaStack" destination="50p-sC-ObU" id="2Xq-p7-31z"/>
<outlet property="bulkAlphaLabel" destination="MgK-KI-3y7" id="CV9-VA-K3K"/>
<outlet property="bulkAlphaSlider" destination="mNe-bA-Lgu" id="hAZ-Kk-yoP"/>
<outlet property="bulkAlphaStack" destination="t6L-J9-AMW" id="dfs-YA-Gbe"/>
<outlet property="bulkBorderAlphaLabel" destination="eRy-My-vvU" id="JVL-ks-pdb"/>
<outlet property="bulkBorderAlphaSlider" destination="Ogu-Fz-BTs" id="gbw-hf-Xl3"/>
<outlet property="bulkBorderAlphaStack" destination="8tb-mS-WEu" id="bUJ-WU-fJW"/>
<outlet property="bulkBorderWidthLabel" destination="TFq-Un-O3H" id="DlD-ma-Ki3"/>
<outlet property="bulkBorderWidthSlider" destination="3Yx-vO-052" id="XiD-tg-hVc"/>
<outlet property="bulkBorderWidthStack" destination="eem-2H-ekN" id="Nat-jo-EOK"/>
<outlet property="bulkEditButton" destination="wrY-O9-BeU" id="7fw-YL-lFT"/>
<outlet property="bulkHighlightAlphaLabel" destination="4Kd-Cc-aYN" id="Ezc-o2-PhK"/>
<outlet property="bulkHighlightAlphaSlider" destination="HMa-bt-1iD" id="Onw-la-6yA"/>
<outlet property="bulkHighlightAlphaStack" destination="cJk-PA-Lp0" id="RMb-qQ-rWO"/>
<outlet property="bulkHighlightSizeLabel" destination="hme-2d-8d6" id="u6u-pg-Owp"/>
<outlet property="bulkHighlightSizeSlider" destination="OiU-Ae-cEn" id="4l7-RD-Lu0"/>
<outlet property="bulkHighlightSizeStack" destination="Sxm-3C-Jlo" id="O00-es-nfj"/>
<outlet property="bulkLabelAlphaLabel" destination="9Dr-3c-z61" id="Jms-OL-Qjj"/>
<outlet property="bulkLabelAlphaSlider" destination="XdO-Zu-fWB" id="QdE-oJ-YlI"/>
<outlet property="bulkLabelAlphaStack" destination="YB4-fc-lM6" id="PaG-vg-jbb"/>
<outlet property="bulkMoveSelector" destination="ful-j0-kgc" id="drA-sU-jM7"/>
<outlet property="bulkMoveStack" destination="IWg-XO-cff" id="ppC-Ov-AfV"/>
<outlet property="buttonModeSelector" destination="ojp-aS-m8w" id="ACc-Sd-Edq"/>
<outlet property="buttonModeStack" destination="jE7-IB-GTS" id="hKb-gp-eem"/>
<outlet property="chevronImageView" destination="76O-3K-aa8" id="yGv-fM-Ohf"/>
<outlet property="chevronView" destination="Zll-IP-PFt" id="MGR-C0-h57"/>
<outlet property="clearFolderButton" destination="RqY-mm-5dD" id="mvP-BY-xDx"/>
<outlet property="collectedWidgetsSelector" destination="Oo7-lI-LXT" id="ufg-er-4aZ"/>
<outlet property="collectedWidgetsStack" destination="weV-Li-Itz" id="SII-3v-ylG"/>
<outlet property="componentSizeLabel" destination="kcX-kR-3gl" id="FTP-ar-6Uh"/>
@@ -919,6 +1166,7 @@
<outlet property="decelerationRateLabel" destination="znE-Lv-uWV" id="2Ud-O4-DD8"/>
<outlet property="decelerationRateSlider" destination="MFc-8O-wdZ" id="8Sh-vO-fqQ"/>
<outlet property="decelerationRateStack" destination="3Bf-uN-nLa" id="WaW-YW-Q7p"/>
<outlet property="importFromOtherButton" destination="b63-Pp-oPM" id="QqI-Mw-KNq"/>
<outlet property="minStickOffsetLabel" destination="Mxv-HT-xeB" id="B9H-LZ-g3A"/>
<outlet property="minStickOffsetSlider" destination="w5M-fB-8rI" id="CVk-p9-IAn"/>
<outlet property="minStickOffsetStack" destination="mZ2-SU-Aj2" id="GsV-Uz-xVV"/>
+1 -1
View File
@@ -120,7 +120,7 @@ import UIKit
@objc public static let touchPadCmds: [String] = ["LSVPAD", "RSVPAD", "LSPAD", "RSPAD", "LSWHEEL", "RSWHEEL", "LTPAD", "RTPAD", "DS4TOUCH", "MOUSEPAD", "ABSMOUSE", "MOUSEWHEEL", "WHEEL", "DISCRETEWHEEL", "DSWHEEL", "DPAD", "TRACKBALL", "WASDPAD", "ARROWPAD"]
@objc public static let mousePadWithButtonActions: [String] = ["MOUSEPAD", "ABSMOUSE"]
@objc public static let mousePad: [String] = ["MOUSEPAD", "ABSMOUSE", "TRACKBALL"]
@objc public static let mousePads: [String] = ["MOUSEPAD", "ABSMOUSE", "TRACKBALL"]
@objc public static let directionPads: [String] = ["DPAD", "WASDPAD", "ARROWPAD"]
@objc public static let stickTouchPads: [String] = ["LSVPAD", "RSVPAD", "LSPAD", "RSPAD"]
@objc public static let nonVectorStickPads: [String] = ["LSPAD", "RSPAD"]
@@ -11,7 +11,8 @@
#import <UIKit/UIKit.h>
#import "OnScreenControls.h"
#import "VoidLink-Swift.h"
@class OnScreenWidgetView;
NS_ASSUME_NONNULL_BEGIN
/**
@@ -22,13 +23,13 @@ NS_ASSUME_NONNULL_BEGIN
@property UIView* _view;
@property NSMutableArray *layoutChanges;
@property CALayer *layerBeingDragged;
@property (nullable) CALayer *layerBeingDragged;
@property (nonatomic, weak) UIViewController *layoutToolVC;
- (id) initWithView:(UIView*)view controllerSup:(ControllerSupport*)controllerSupport
streamConfig:(StreamConfiguration*)streamConfig oscLevel:(int)oscLevel;
- (id) initWithView:(UIView*)view controllerSup:(nullable ControllerSupport*)controllerSupport
streamConfig:(nullable StreamConfiguration*)streamConfig oscLevel:(int)oscLevel;
- (CALayer*) controllerLayerFromName:(NSString*)name;
- (nullable CALayer*) controllerLayerFromName:(NSString*)name;
- (BOOL) isLayer:(CALayer*)layer hoveringOverButton:(UIButton*)button;
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@@ -12,6 +12,7 @@
#import "LayoutOnScreenControls.h"
#import "OnScreenButtonState.h"
#import "OSCProfilesManager.h"
#import "VoidLink-Swift.h"
@interface LayoutOnScreenControls ()
@@ -12,7 +12,6 @@
#import "OSCProfilesManager.h"
#import "OnScreenButtonState.h"
#import "VoidLink-Swift.h"
#import "LayoutOnScreenControlsViewController.h"
#import "OnScreenControls.h"
@implementation OSCProfilesManager
@@ -441,7 +440,7 @@ static CGRect layoutViewBounds;
// save on-screen widget views (keyboard & mouse command) as buttonstate:
_widgetSizeTransition = keepWidgetSize;
for(OnScreenWidgetView* widgetView in OnScreenWidgetViews){
for(OnScreenWidgetView* widgetView in OnScreenWidgetView.mapping.allValues){
CGPoint normalizedPosition = [self normalizeWidgetPosition:widgetView.storedCenter];
OnScreenButtonState *buttonState = [[OnScreenButtonState alloc] initWithButtonName:widgetView.cmdString buttonType:CustomOnScreenWidget andPosition:normalizedPosition];
buttonState.alias = widgetView.widgetLabel;
+30 -7
View File
@@ -447,12 +447,19 @@ import SVGKit
self.hasStickIndicator = CommandManager.nonVectorStickPads.contains(self.touchPadString) && widgetType == WidgetTypeEnum.touchPad
self.hasSensitivityX = CommandManager.touchPadCmds.contains(self.touchPadString) && !CommandManager.verticalTouchPads.contains(self.touchPadString)
self.hasSensitivityY = CommandManager.touchPadCmds.contains(self.touchPadString) && !CommandManager.stickWheels.contains(self.touchPadString)
self.hasSlideThreshold = CommandManager.mousePad.contains(self.touchPadString)
self.hasSlideThreshold = CommandManager.mousePads.contains(self.touchPadString)
if CommandManager.bidirectionalVerticalTouchPads.contains(self.touchPadString){
self.sensitivityYMin = -4.0
self.sensitivityYMax = 4.0
}
if CommandManager.mousePads.contains(self.touchPadString){
self.sensitivityXMin = 0
self.sensitivityXMax = 16.0
self.sensitivityYMin = 0
self.sensitivityYMax = 16.0
}
self.hasYawFactor = self.motionControlButtonString == "GYRO" && (oscProfile.mapGyroTo == MapGyroTo.mapGyroToMouse || oscProfile.yawPitchToRightStick)
self.hasPitchFactor = self.hasYawFactor
@@ -570,9 +577,14 @@ import SVGKit
@objc public func adjustBorder(width: CGFloat){
self.borderWidth = width
// self.layer.borderWidth = borderWidth
self.layer.borderWidth = borderWidth
// if CommandManager.touchPadCmds.contains(self.keyString) && width == 0 {self.layer.borderWidth = 1}
setupView()
if self.shape == "round" {
//setup round buttons
self.layer.cornerRadius = self.frame.width/2
// self.layer.borderWidth = self.borderWidth
label.minimumScaleFactor = 0.15 // Adjust the scale factor for oscButtons
}
}
@objc public func resizeWidgetView(){
@@ -641,7 +653,7 @@ import SVGKit
self.rightIndicator.borderColor = self.buttonDownVisualEffectLayer.borderColor
}
private func tweakAlpha(tweakBorderAlpha:Bool){
private func tweakAlpha(tweakBorderAlpha:Bool, tweakLabelAlpha:Bool = true){
// setup default border from self.backgroundAlpha
let realBackgroundAlpha = abs(self.backgroundAlpha) - 0.18 // offset to be consistent with legacy onScreen controller layer opacity
self.backgroundColor = UIColor(white:self.backgroundAlpha>0 ? 0.1 : 0.9, alpha: realBackgroundAlpha) // offset to be consistent with legacy onScreen controller layer opacity
@@ -652,6 +664,8 @@ import SVGKit
self.layer.borderColor = defaultBorderColor
}
if tweakLabelAlpha {self.tweakLabelAlpha(alpha: backgroundAlpha > 0 ? 0.4 : -0.4)}
if widgetType == WidgetTypeEnum.touchPad {
self.backgroundColor = UIColor.clear // make touchPad transparent
}
@@ -714,8 +728,8 @@ import SVGKit
}
private func getLargeRecSize(widthFactor:CGFloat, heightFactor:CGFloat) -> CGSize {
let isNormalizedSizeFactor = self.widthFactor > 6;
let isNormalizedHeightFactor = self.heightFactor > 6;
let isNormalizedSizeFactor = self.widthFactor > 10;
let isNormalizedHeightFactor = self.heightFactor > 10;
self.getBaselineLenths()
@@ -836,7 +850,7 @@ import SVGKit
self.setSquareWidgetCornerRadius()
self.layer.borderWidth = self.borderWidth
self.tweakAlpha(tweakBorderAlpha: false)
self.tweakAlpha(tweakBorderAlpha: false, tweakLabelAlpha: false)
if self.shape == "default" || self.shape.isEmpty {
if CommandManager.oscButtonMappings.keys.contains(self.buttonString) && !CommandManager.oscRectangleButtonCmds.contains(self.buttonString){ //make oscButtons round
@@ -2975,7 +2989,11 @@ import SVGKit
guard let rootFolder = rootFolder else {return}
offshootRootFolders.insert(rootFolder)
}
offshootRootFolders.remove(currentRootFolder)
for folder in offshootRootFolders {
print("offshootRootFolder \(CACurrentMediaTime()) \(folder.label.text ?? "")")
}
guard !folder.sequenceSet.isEmpty else {return}
for folder in offshootRootFolders {
@@ -3037,6 +3055,7 @@ import SVGKit
parentFolder?.sequenceSet.remove(widget.sequence)
}
widget.parentSequence = -1
widget.sequenceSet.removeAll()
}
@objc static func restoreFoldedStates(){
@@ -3066,6 +3085,10 @@ import SVGKit
isRestoring = false
}
@objc static func getMaxSequence() -> Int16{
return OnScreenWidgetView.mapping.keys.max() ?? -1
}
override func didMoveToSuperview() {
super.didMoveToSuperview()
if superview == nil {
+211 -4
View File
@@ -162,25 +162,25 @@
}
}
},
" Profile: %@ Alias: %@ Command: %@" : {
" Profile: %@ Alias: %@ Cmd: %@ Parent:%@" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : " 当前布局: %@ 别名: %@ 命令: %@"
"value" : " 当前布局: %@ 别名: %@ 命令: %@ 收纳于: %@"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : " 版面配置: %@ 别名: %@ 命令: %@"
"value" : " 版面配置: %@ 别名: %@ 命令: %@ 收納於: %@"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : " 版面配置: %@ 别名: %@ 命令: %@"
"value" : " 版面配置: %@ 别名: %@ 命令: %@ 收納於: %@"
}
}
}
@@ -1829,6 +1829,52 @@
}
}
},
"Batch edit" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "批量修改"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "批次修改"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "批次修改"
}
}
}
},
"Batch updated" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "单控件修改"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "單控件修改"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "單控件修改"
}
}
}
},
"betterPerformanceLink" : {
"extractionState" : "manual",
"localizations" : {
@@ -1933,6 +1979,29 @@
}
}
},
"Border alpha" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "边界透明度"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "邊界透明度"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "邊界透明度"
}
}
}
},
"Border alpha: %.2f" : {
"extractionState" : "manual",
"localizations" : {
@@ -2232,6 +2301,29 @@
}
}
},
"Clear" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "清空"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "清空"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "清空"
}
}
}
},
"Collapse" : {
"extractionState" : "manual",
"localizations" : {
@@ -5210,6 +5302,29 @@
}
}
},
"Highlight alpha" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮透明度"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮透明度"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮透明度"
}
}
}
},
"Highlight alpha: %.2f" : {
"extractionState" : "manual",
"localizations" : {
@@ -5233,6 +5348,29 @@
}
}
},
"Highlight size" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮尺寸"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮尺寸"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "高亮尺寸"
}
}
}
},
"Highlight size: %.2f" : {
"extractionState" : "manual",
"localizations" : {
@@ -5360,6 +5498,29 @@
}
}
},
"Import" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "导入"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "匯入"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "匯入"
}
}
}
},
"Important Tips" : {
"extractionState" : "manual",
"localizations" : {
@@ -5475,6 +5636,29 @@
}
}
},
"Label alpha" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "标签透明度"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "標籤透明度"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "標籤透明度"
}
}
}
},
"Label alpha: %.2f" : {
"extractionState" : "manual",
"localizations" : {
@@ -6881,6 +7065,29 @@
}
}
},
"null" : {
"extractionState" : "manual",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "无"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "無"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "無"
}
}
}
},
"Null" : {
"extractionState" : "manual",
"localizations" : {
@@ -1,145 +1,18 @@
//
// LayoutOnScreenControlsViewController.h
// Moonlight
//
// Created by Long Le on 9/27/22.
// Copyright © 2022 Moonlight Game Streaming Project. All rights reserved.
//
// Modified by True砖家 since 2024.6.24
// Copyright © 2024 True砖家 @ Bilibili. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "LayoutOnScreenControls.h"
#import "ToolBarContainerView.h"
#import "OSCProfilesManager.h"
#import "VoidLink-Swift.h"
NS_ASSUME_NONNULL_BEGIN
/**
This view controller provides the user interface which allows the user to position on screen controller buttons anywhere they'd like on the screen. It also provides the user with the abilities to undo a change, save the on screen controller layout for later retrieval, and load previously saved controller layouts
*/
@interface LayoutOnScreenControlsViewController : UIViewController <OnScreenWidgetGuidelineUpdateDelegate,UITextFieldDelegate, WidgetPickerViewControllerDelegate>
@interface LayoutOnScreenControlsViewController : UIViewController <UITextFieldDelegate>
@property (nonatomic, assign) BOOL quickSwitchEnabled;
@property (weak, nonatomic) IBOutlet ToolBarContainerView *toolbarRootView;
@property (weak, nonatomic) IBOutlet UIStackView *toolbarStackView;
- (void)profileRefresh;
- (void)reloadOnScreenWidgetViews;
- (void)presentProfilesTableViewWithPickProfile:(bool)pickProfile;
@property LayoutOnScreenControls *layoutOSC; // object that contains a view which contains the on screen controller buttons that allows the user to drag and positions each button on the screen using touch
@property (nonatomic) NSMutableSet* onScreenWidgetViews;
@property int OSCSegmentSelected;
@property (nonatomic, assign) bool quickSwitchEnabled;
@property (weak, nonatomic) IBOutlet UIButton *trashCanButton;
@property (weak, nonatomic) IBOutlet UIButton *undoButton;
@property (weak, nonatomic) IBOutlet ToolBarContainerView *toolbarRootView;
@property (weak, nonatomic) IBOutlet UIView *chevronView;
@property (weak, nonatomic) IBOutlet UIImageView *chevronImageView;
@property (weak, nonatomic) IBOutlet UIStackView *toolbarStackView;
@property (strong, nonatomic) OSCProfilesTableViewController *oscProfilesTableViewController;
@property (nonatomic, assign) NSString *currentProfileName;
@property (strong, nonatomic) IBOutlet UILabel *currentProfileLabel;
@property (weak, nonatomic) IBOutlet UILabel *widgetSizeLabel;
@property (weak, nonatomic) IBOutlet UISlider *widgetSizeSlider;
@property (weak, nonatomic) IBOutlet UIStackView *widgetSizeStack;
@property (weak, nonatomic) IBOutlet UILabel *widgetHeightLabel;
@property (weak, nonatomic) IBOutlet UISlider *widgetHeightSlider;
@property (weak, nonatomic) IBOutlet UIStackView *widgetHeightStack;
@property (weak, nonatomic) IBOutlet UILabel *widgetBorderWidthLabel;
@property (weak, nonatomic) IBOutlet UISlider *widgetBorderWidthSlider;
@property (weak, nonatomic) IBOutlet UILabel *widgetAlphaLabel;
@property (weak, nonatomic) IBOutlet UISlider *widgetAlphaSlider;
@property (weak, nonatomic) IBOutlet UIStackView *borderWidthAlphaStack;
@property (weak, nonatomic) IBOutlet UIButton *saveButton;
@property (weak, nonatomic) IBOutlet UIButton *exitButton;
@property (weak, nonatomic) IBOutlet UIButton *loadButton;
@property (weak, nonatomic) IBOutlet UIButton *addButton;
@property (weak, nonatomic) IBOutlet UIButton *editButton;
@property (weak, nonatomic) IBOutlet UILabel *stickIndicatorOffsetLabel;
@property (weak, nonatomic) IBOutlet UISlider *stickIndicatorOffsetSlider;
@property (weak, nonatomic) IBOutlet UIStackView *stickIndicatorOffsetStack;
@property (weak, nonatomic) IBOutlet UILabel *sensitivityXLabel;
@property (weak, nonatomic) IBOutlet UISlider *sensitivityXSlider;
@property (weak, nonatomic) IBOutlet UIStackView *sensitivityXStack;
@property (strong, nonatomic) IBOutlet UILabel *sensitivityYLabel;
@property (strong, nonatomic) IBOutlet UISlider *sensitivityYSlider;
@property (strong, nonatomic) IBOutlet UIStackView *sensitivityYStack;
@property (strong, nonatomic) IBOutlet UILabel *yawFactorLabel;
@property (strong, nonatomic) IBOutlet UISlider *yawFactorSlider;
@property (strong, nonatomic) IBOutlet UIStackView *yawFactorStack;
@property (strong, nonatomic) IBOutlet UILabel *pitchFactorLabel;
@property (strong, nonatomic) IBOutlet UISlider *pitchFactorSlider;
@property (strong, nonatomic) IBOutlet UIStackView *pitchFactorStack;
@property (strong, nonatomic) IBOutlet UILabel *rollFactorLabel;
@property (strong, nonatomic) IBOutlet UISlider *rollFactorSlider;
@property (strong, nonatomic) IBOutlet UIStackView *rollFactorStack;
@property (strong, nonatomic) IBOutlet UIStackView *decelerationRateStack;
@property (strong, nonatomic) IBOutlet UILabel *decelerationRateLabel;
@property (strong, nonatomic) IBOutlet UISlider *decelerationRateSlider;
@property (strong, nonatomic) IBOutlet UISegmentedControl *vibrationStyleSelector;
@property (strong, nonatomic) IBOutlet UIStackView *vibrationStyleStack;
@property (strong, nonatomic) IBOutlet UILabel *tipContentLabel;
@property (strong, nonatomic) IBOutlet UILabel *tipTitleLabel;
@property (strong, nonatomic) IBOutlet UIStackView *mouseDownButtonStack;
@property (strong, nonatomic) IBOutlet UISegmentedControl *mouseButtonDownSelector;
@property (strong, nonatomic) IBOutlet UIStackView *buttonModeStack;
@property (strong, nonatomic) IBOutlet UISegmentedControl *buttonModeSelector;
@property (strong, nonatomic) IBOutlet UIStackView *autoTapStack;
@property (strong, nonatomic) IBOutlet UILabel *autoTapLabel;
// @property (strong, nonatomic) IBOutlet UISlider *autoTapSlider;
@property (strong, nonatomic) IBOutlet UITextField *autoTapField;
@property (strong, nonatomic) IBOutlet UIStackView *slideThresholdStack;
@property (strong, nonatomic) IBOutlet UILabel *slideThresholdLabel;
@property (strong, nonatomic) IBOutlet UISlider *slideThresholdSlider;
@property (strong, nonatomic) IBOutlet UIStackView *minStickOffsetStack;
@property (strong, nonatomic) IBOutlet UILabel *minStickOffsetLabel;
@property (strong, nonatomic) IBOutlet UISlider *minStickOffsetSlider;
@property (strong, nonatomic) IBOutlet UIStackView *componentSizeStack;
@property (strong, nonatomic) IBOutlet UILabel *componentSizeLabel;
@property (strong, nonatomic) IBOutlet UISlider *componentSizeSlider;
@property (strong, nonatomic) IBOutlet UIStackView *walkModeThresholdStack;
@property (strong, nonatomic) IBOutlet UILabel *walkModeThresholdLabel;
@property (strong, nonatomic) IBOutlet UISlider *walkModeThresholdSlider;
@property (weak, nonatomic) IBOutlet UIStackView *collectedWidgetsStack;
@property (weak, nonatomic) IBOutlet UISegmentedControl *collectedWidgetsSelector;
@property (weak, nonatomic) IBOutlet UISegmentedControl *revealModeSelector;
@property (weak, nonatomic) IBOutlet UIStackView *bulkMoveStack;
@property (weak, nonatomic) IBOutlet UISegmentedControl *bulkMoveSelector;
@property (weak, nonatomic) IBOutlet UIStackView *widgetPanelStack;
- (void)presentProfilesTableViewWithLoadingMode:(NSInteger)loadingMode;
@end
NS_ASSUME_NONNULL_END
@@ -22,6 +22,12 @@ enum FileOperation: Int {
case exportOperation = 1
}
@objc enum OSCProfilesTableViewLoadingMode: Int {
case selectProfile
case pickProfile
case pickProfileData
}
@objcMembers
@objc(OSCProfilesTableViewController)
final class OSCProfilesTableViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIDocumentPickerDelegate, UIGestureRecognizerDelegate {
@@ -31,9 +37,10 @@ final class OSCProfilesTableViewController: UIViewController, UITableViewDelegat
var currentFileOperation: FileOperation = .importOperation
var needToUpdateOscLayoutTVC: (() -> Void)?
var loadingMode: OSCProfilesTableViewLoadingMode = .selectProfile
@nonobjc var pickedProfileDataHandler: ((OSCProfile) -> Void)?
weak var currentOSCButtonLayers: NSMutableSet?
var layoutViewBounds: CGRect = .zero
var pickProfileEnabled: Bool = false
private var profilesManager: OSCProfilesManager!
@@ -322,7 +329,8 @@ final class OSCProfilesTableViewController: UIViewController, UITableViewDelegat
cell.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear
if indexPath.row == profilesManager.getIndexOfSelectedProfile() {
if loadingMode != .pickProfileData,
indexPath.row == profilesManager.getIndexOfSelectedProfile() {
cell.accessoryType = UITableViewCell.AccessoryType.checkmark
let checkmarkLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
checkmarkLabel.text = "✓"
@@ -383,6 +391,13 @@ final class OSCProfilesTableViewController: UIViewController, UITableViewDelegat
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if loadingMode == .pickProfileData,
let pickedProfile = profilesManager.getAllProfiles().object(at: indexPath.row) as? OSCProfile {
pickedProfileDataHandler?(pickedProfile)
dismiss(animated: false)
return
}
let selectedIndexPath = IndexPath(row: indexPath.row, section: 0)
let lastSelectedIndexPath = IndexPath(row: profilesManager.getIndexOfSelectedProfile(), section: 0)
@@ -401,7 +416,9 @@ final class OSCProfilesTableViewController: UIViewController, UITableViewDelegat
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if pickProfileEnabled, let touchView = touch.view, touchView.isDescendant(of: tableView) {
if loadingMode != .selectProfile,
let touchView = touch.view,
touchView.isDescendant(of: tableView) {
return true
}
return touch.view == view
@@ -11,11 +11,14 @@
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "CustomOSCViewControl/LayoutOnScreenControlsViewController.h"
#import "MainFrameViewController.h"
#import "CustomEdgeSlideGestureRecognizer.h"
#import "MenuSectionView.h"
@class LayoutOnScreenControlsViewController;
@class MicHandler;
@protocol MicHandlerDelegate;
@interface SettingsViewController : UIViewController <RearNavigationBarMenuDelegate, MenuSectionDelegate, MicHandlerDelegate, UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UINavigationBar *navigationBar;
@@ -15,13 +15,14 @@
#import "MetalViewController.h"
#import "StreamConfiguration.h"
#import "StreamView.h"
#import "LayoutOnScreenControlsViewController.h"
#import "MainFrameViewController.h"
#import "StreamManager.h"
#import <AVKit/AVKit.h>
#import <UIKit/UIKit.h>
@class LayoutOnScreenControlsViewController;
#if TARGET_OS_TV
@import GameController;
@@ -785,8 +785,9 @@
_layoutOnScreenControlsVC.quickSwitchEnabled = true;
_layoutOnScreenControlsVC.toolbarStackView.hidden = true;
_layoutOnScreenControlsVC.toolbarRootView.hidden = true;
OSCProfilesTableViewLoadingMode loadingMode = pickProfile ? OSCProfilesTableViewLoadingModePickProfile : OSCProfilesTableViewLoadingModeSelectProfile;
[self presentViewController:_layoutOnScreenControlsVC animated:NO completion:^{
[self->_layoutOnScreenControlsVC presentProfilesTableViewWithPickProfile:pickProfile];
[self->_layoutOnScreenControlsVC presentProfilesTableViewWithLoadingMode:loadingMode];
}];
}
+4
View File
@@ -5,8 +5,12 @@
#include <Limelight.h>
#import "OnScreenControls.h"
#import "OnScreenButtonState.h"
#import "DataManager.h"
#import "LocalizationHelper.h"
#import "OSCProfile.h"
#import "OSCProfilesManager.h"
#import "LayoutOnScreenControls.h"
#import "ToolBarContainerView.h"
#import "opus.h"
#import "opus_defines.h"
// #import "RelativeTouchHandler.h"
+207 -9
View File
@@ -1,6 +1,48 @@
{
"sourceLanguage" : "en",
"strings" : {
"1sF-08-aCr.text" : {
"comment" : "Class = \"UILabel\"; text = \"Highlight alpha\"; ObjectID = \"1sF-08-aCr\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Highlight alpha"
}
}
}
},
"1th-bc-im2.configuration.title" : {
"comment" : "Class = \"UIButton\"; configuration.title = \"77777\"; ObjectID = \"1th-bc-im2\";",
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "77777"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "uyfhgcghfhjg"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "sdafasd"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "translated",
"value" : "asdfasdfasdf"
}
}
}
},
"2Bp-XZ-cCw.text" : {
"comment" : "Class = \"UILabel\"; text = \"Async Native Touch\"; ObjectID = \"2Bp-XZ-cCw\";",
"extractionState" : "extracted_with_value",
@@ -121,6 +163,18 @@
}
}
},
"2TR-Kd-ro4.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"2TR-Kd-ro4\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
}
}
},
"2w1-Vw-GVy.text" : {
"comment" : "Class = \"UILabel\"; text = \"HDR\"; ObjectID = \"2w1-Vw-GVy\";",
"extractionState" : "extracted_with_value",
@@ -1075,6 +1129,18 @@
}
}
},
"aGh-QR-gBW.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"aGh-QR-gBW\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
}
}
},
"Aiv-r8-9k2.text" : {
"comment" : "Class = \"UILabel\"; text = \"Frame Rate\"; ObjectID = \"Aiv-r8-9k2\";",
"extractionState" : "extracted_with_value",
@@ -1597,6 +1663,18 @@
}
}
},
"BlQ-y7-iDS.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"BlQ-y7-iDS\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"bNW-R2-UuH.segmentTitles[0]" : {
"comment" : "Class = \"UISegmentedControl\"; bNW-R2-UuH.segmentTitles[0] = \"disabled\"; ObjectID = \"bNW-R2-UuH\";",
"extractionState" : "extracted_with_value",
@@ -2227,6 +2305,24 @@
}
}
},
"cyH-Fh-vW6.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"cyH-Fh-vW6\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "导入"
}
}
}
},
"czn-mj-8d1.title" : {
"comment" : "Class = \"UIBarButtonItem\"; title = \"Restore\"; ObjectID = \"czn-mj-8d1\";",
"extractionState" : "extracted_with_value",
@@ -2576,6 +2672,24 @@
}
}
},
"eTT-y7-oTM.configuration.title" : {
"comment" : "Class = \"UIButton\"; configuration.title = \"9999999\"; ObjectID = \"eTT-y7-oTM\";",
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "9999999"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "0000000"
}
}
}
},
"Evh-LH-rdh.text" : {
"comment" : "Class = \"UILabel\"; text = \"Pinch Gesture\"; ObjectID = \"Evh-LH-rdh\";",
"extractionState" : "extracted_with_value",
@@ -3128,6 +3242,18 @@
}
}
},
"hKK-ro-C5E.text" : {
"comment" : "Class = \"UILabel\"; text = \"Highlight size\"; ObjectID = \"hKK-ro-C5E\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Highlight size"
}
}
}
},
"hPX-cJ-dgH.text" : {
"comment" : "Class = \"UILabel\"; text = \"Mute in Background\"; ObjectID = \"hPX-cJ-dgH\";",
"extractionState" : "extracted_with_value",
@@ -3584,32 +3710,44 @@
}
}
},
"Jeb-fE-sCm.text" : {
"comment" : "Class = \"UILabel\"; text = \" Bulk move \"; ObjectID = \"Jeb-fE-sCm\";",
"jcq-LI-15e.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"jcq-LI-15e\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " Bulk move "
"value" : " "
}
}
}
},
"Jeb-fE-sCm.text" : {
"comment" : "Class = \"UILabel\"; text = \" Batch move \"; ObjectID = \"Jeb-fE-sCm\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " Batch move "
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "needs_review",
"value" : " 批量移动"
"value" : " 批量移动"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "needs_review",
"value" : " 批次移動"
"value" : " 批次移動"
}
},
"zh-HK" : {
"stringUnit" : {
"state" : "needs_review",
"value" : " 批次移動"
"value" : " 批次移動"
}
}
}
@@ -3914,6 +4052,30 @@
}
}
},
"kSX-ci-kx5.text" : {
"comment" : "Class = \"UILabel\"; text = \"Label alpha\"; ObjectID = \"kSX-ci-kx5\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Label alpha"
}
}
}
},
"Lar-2o-R7c.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"Lar-2o-R7c\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"LGV-5y-piG.text" : {
"comment" : "Class = \"UILabel\"; text = \"On-Screen Widgets \"; ObjectID = \"LGV-5y-piG\";",
"extractionState" : "extracted_with_value",
@@ -4538,6 +4700,18 @@
}
}
},
"Ocb-R1-UYc.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"Ocb-R1-UYc\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"oPM-G6-u5O.text" : {
"comment" : "Class = \"UILabel\"; text = \"Mouse Pointer Velocity\"; ObjectID = \"oPM-G6-u5O\";",
"extractionState" : "extracted_with_value",
@@ -5248,6 +5422,18 @@
}
}
},
"sAF-Vy-ZzK.text" : {
"comment" : "Class = \"UILabel\"; text = \"Border alpha\"; ObjectID = \"sAF-Vy-ZzK\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Border alpha"
}
}
}
},
"SAQ-04-n4h.text" : {
"comment" : "Class = \"UILabel\"; text = \"Multi-Controller Mode\"; ObjectID = \"SAQ-04-n4h\";",
"extractionState" : "extracted_with_value",
@@ -5968,14 +6154,14 @@
}
}
},
"wrg-n4-F5w.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"wrg-n4-F5w\";",
"wTH-1Z-Fgh.text" : {
"comment" : "Class = \"UILabel\"; text = \"Border width\"; ObjectID = \"wTH-1Z-Fgh\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
"value" : "Border width"
}
}
}
@@ -6184,6 +6370,18 @@
}
}
},
"yF0-Tu-L8X.text" : {
"comment" : "Class = \"UILabel\"; text = \"Alpha\"; ObjectID = \"yF0-Tu-L8X\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Alpha"
}
}
}
},
"YM8-us-6sh.text" : {
"comment" : "Class = \"UILabel\"; text = \"Haptic Engine\"; ObjectID = \"YM8-us-6sh\";",
"extractionState" : "extracted_with_value",
+146 -14
View File
@@ -271,6 +271,18 @@
}
}
},
"4Kd-Cc-aYN.text" : {
"comment" : "Class = \"UILabel\"; text = \"Highlight alpha\"; ObjectID = \"4Kd-Cc-aYN\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Highlight alpha"
}
}
}
},
"4Ul-P6-eUk.text" : {
"comment" : "Class = \"UILabel\"; text = \"Enable PiP\"; ObjectID = \"4Ul-P6-eUk\";",
"extractionState" : "extracted_with_value",
@@ -799,6 +811,18 @@
}
}
},
"9Dr-3c-z61.text" : {
"comment" : "Class = \"UILabel\"; text = \"Label alpha\"; ObjectID = \"9Dr-3c-z61\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Label alpha"
}
}
}
},
"9dX-RB-Fpa.text" : {
"comment" : "Class = \"UILabel\"; text = \"Optimize Game Settings\"; ObjectID = \"9dX-RB-Fpa\";",
"extractionState" : "extracted_with_value",
@@ -1291,6 +1315,18 @@
}
}
},
"b63-Pp-oPM.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"b63-Pp-oPM\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
}
}
},
"bAZ-bm-h3I.text" : {
"comment" : "Class = \"UILabel\"; text = \"Switch Gyro by Controller\"; ObjectID = \"bAZ-bm-h3I\";",
"extractionState" : "extracted_with_value",
@@ -2185,6 +2221,18 @@
}
}
},
"eRy-My-vvU.text" : {
"comment" : "Class = \"UILabel\"; text = \"Border alpha\"; ObjectID = \"eRy-My-vvU\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Border alpha"
}
}
}
},
"F0O-Ht-fW5.text" : {
"comment" : "Class = \"UILabel\"; text = \"Controller → Mouse\"; ObjectID = \"F0O-Ht-fW5\";",
"extractionState" : "extracted_with_value",
@@ -2629,6 +2677,18 @@
}
}
},
"hme-2d-8d6.text" : {
"comment" : "Class = \"UILabel\"; text = \"Highlight size\"; ObjectID = \"hme-2d-8d6\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Highlight size"
}
}
}
},
"hn6-X9-TaI.text" : {
"comment" : "Class = \"UILabel\"; text = \"Mouse Pointer Velocity\"; ObjectID = \"hn6-X9-TaI\";",
"extractionState" : "extracted_with_value",
@@ -2923,6 +2983,18 @@
}
}
},
"KbX-bp-pYg.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"KbX-bp-pYg\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"kcX-kR-3gl.text" : {
"comment" : "Class = \"UILabel\"; text = \"Component size\"; ObjectID = \"kcX-kR-3gl\";",
"extractionState" : "extracted_with_value",
@@ -2965,6 +3037,18 @@
}
}
},
"kMi-oG-eDT.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"kMi-oG-eDT\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"kva-gQ-CZh.text" : {
"comment" : "Class = \"UILabel\"; text = \"Size\"; ObjectID = \"kva-gQ-CZh\";",
"extractionState" : "extracted_with_value",
@@ -3151,6 +3235,18 @@
}
}
},
"MgK-KI-3y7.text" : {
"comment" : "Class = \"UILabel\"; text = \"Alpha\"; ObjectID = \"MgK-KI-3y7\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Alpha"
}
}
}
},
"Mhe-jU-8hh.text" : {
"comment" : "Class = \"UILabel\"; text = \"Designate Soft Keyboard Height\"; ObjectID = \"Mhe-jU-8hh\";",
"extractionState" : "extracted_with_value",
@@ -4118,13 +4214,13 @@
}
},
"P9b-Th-Ybc.text" : {
"comment" : "Class = \"UILabel\"; text = \" Bulk move \"; ObjectID = \"P9b-Th-Ybc\";",
"comment" : "Class = \"UILabel\"; text = \" Batch move \"; ObjectID = \"P9b-Th-Ybc\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " Bulk move "
"value" : " Batch move "
}
},
"zh-Hans" : {
@@ -4825,18 +4921,6 @@
}
}
},
"QtA-AD-aJw.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"QtA-AD-aJw\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"r8X-jt-JfH.text" : {
"comment" : "Class = \"UILabel\"; text = \"Frames to Buffer\"; ObjectID = \"r8X-jt-JfH\";",
"extractionState" : "extracted_with_value",
@@ -4879,6 +4963,18 @@
}
}
},
"RqY-mm-5dD.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"RqY-mm-5dD\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
}
}
},
"S7X-Kt-2jd.text" : {
"comment" : "Class = \"UILabel\"; text = \"Show Local Keyboard Toolbar \"; ObjectID = \"S7X-Kt-2jd\";",
"extractionState" : "extracted_with_value",
@@ -5179,6 +5275,18 @@
}
}
},
"TFq-Un-O3H.text" : {
"comment" : "Class = \"UILabel\"; text = \"Border width\"; ObjectID = \"TFq-Un-O3H\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Border width"
}
}
}
},
"TJx-6E-kgr.segmentTitles[0]" : {
"comment" : "Class = \"UISegmentedControl\"; TJx-6E-kgr.segmentTitles[0] = \"No\"; ObjectID = \"TJx-6E-kgr\";",
"extractionState" : "extracted_with_value",
@@ -5701,6 +5809,30 @@
}
}
},
"wrY-O9-BeU.normalTitle" : {
"comment" : "Class = \"UIButton\"; normalTitle = \"Button\"; ObjectID = \"wrY-O9-BeU\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : "Button"
}
}
}
},
"Wxw-Q8-aqN.text" : {
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"Wxw-Q8-aqN\";",
"extractionState" : "extracted_with_value",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "new",
"value" : " "
}
}
}
},
"WzD-wo-Wum.text" : {
"comment" : "Class = \"UILabel\"; text = \"Single Tap Sensitivity\"; ObjectID = \"WzD-wo-Wum\";",
"extractionState" : "extracted_with_value",