mirror of
https://github.com/TomHarte/CLK.git
synced 2025-08-15 14:27:29 +00:00
Progresses very slightly to being able to show up to four activity indicator names.
Blinking to come.
This commit is contained in:
@@ -115,6 +115,7 @@
|
|||||||
4B07835B1FC11D42001D12BB /* Configurable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0783591FC11D10001D12BB /* Configurable.cpp */; };
|
4B07835B1FC11D42001D12BB /* Configurable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0783591FC11D10001D12BB /* Configurable.cpp */; };
|
||||||
4B08A2751EE35D56008B7065 /* Z80InterruptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B08A2741EE35D56008B7065 /* Z80InterruptTests.swift */; };
|
4B08A2751EE35D56008B7065 /* Z80InterruptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B08A2741EE35D56008B7065 /* Z80InterruptTests.swift */; };
|
||||||
4B08A2781EE39306008B7065 /* TestMachine.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B08A2771EE39306008B7065 /* TestMachine.mm */; };
|
4B08A2781EE39306008B7065 /* TestMachine.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B08A2771EE39306008B7065 /* TestMachine.mm */; };
|
||||||
|
4B08A56920D72BEF0016CE5A /* Activity.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B08A56720D72BEF0016CE5A /* Activity.xib */; };
|
||||||
4B0CCC451C62D0B3001CAC5F /* CRT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0CCC421C62D0B3001CAC5F /* CRT.cpp */; };
|
4B0CCC451C62D0B3001CAC5F /* CRT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0CCC421C62D0B3001CAC5F /* CRT.cpp */; };
|
||||||
4B0E04EA1FC9E5DA00F43484 /* CAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0E04E81FC9E5DA00F43484 /* CAS.cpp */; };
|
4B0E04EA1FC9E5DA00F43484 /* CAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0E04E81FC9E5DA00F43484 /* CAS.cpp */; };
|
||||||
4B0E04EB1FC9E78800F43484 /* CAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0E04E81FC9E5DA00F43484 /* CAS.cpp */; };
|
4B0E04EB1FC9E78800F43484 /* CAS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0E04E81FC9E5DA00F43484 /* CAS.cpp */; };
|
||||||
@@ -705,6 +706,7 @@
|
|||||||
4B08A2761EE39306008B7065 /* TestMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMachine.h; sourceTree = "<group>"; };
|
4B08A2761EE39306008B7065 /* TestMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestMachine.h; sourceTree = "<group>"; };
|
||||||
4B08A2771EE39306008B7065 /* TestMachine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestMachine.mm; sourceTree = "<group>"; };
|
4B08A2771EE39306008B7065 /* TestMachine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestMachine.mm; sourceTree = "<group>"; };
|
||||||
4B08A2791EE3957B008B7065 /* TestMachine+ForSubclassEyesOnly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TestMachine+ForSubclassEyesOnly.h"; sourceTree = "<group>"; };
|
4B08A2791EE3957B008B7065 /* TestMachine+ForSubclassEyesOnly.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TestMachine+ForSubclassEyesOnly.h"; sourceTree = "<group>"; };
|
||||||
|
4B08A56820D72BEF0016CE5A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = "Clock Signal/Base.lproj/Activity.xib"; sourceTree = SOURCE_ROOT; };
|
||||||
4B0B6E121C9DBD5D00FFB60D /* CRTConstants.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CRTConstants.hpp; sourceTree = "<group>"; };
|
4B0B6E121C9DBD5D00FFB60D /* CRTConstants.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = CRTConstants.hpp; sourceTree = "<group>"; };
|
||||||
4B0CCC421C62D0B3001CAC5F /* CRT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CRT.cpp; sourceTree = "<group>"; };
|
4B0CCC421C62D0B3001CAC5F /* CRT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CRT.cpp; sourceTree = "<group>"; };
|
||||||
4B0CCC431C62D0B3001CAC5F /* CRT.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CRT.hpp; sourceTree = "<group>"; };
|
4B0CCC431C62D0B3001CAC5F /* CRT.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CRT.hpp; sourceTree = "<group>"; };
|
||||||
@@ -1988,6 +1990,7 @@
|
|||||||
4B55CE5E1C3B7D960093A61B /* MachineDocument.swift */,
|
4B55CE5E1C3B7D960093A61B /* MachineDocument.swift */,
|
||||||
4B8FE2211DA19FB20090D3CE /* MachinePanel.swift */,
|
4B8FE2211DA19FB20090D3CE /* MachinePanel.swift */,
|
||||||
4B95FA9C1F11893B0008E395 /* ZX8081OptionsPanel.swift */,
|
4B95FA9C1F11893B0008E395 /* ZX8081OptionsPanel.swift */,
|
||||||
|
4B08A56720D72BEF0016CE5A /* Activity.xib */,
|
||||||
4BC5FC2E20CDDDEE00410AA0 /* AppleIIOptions.xib */,
|
4BC5FC2E20CDDDEE00410AA0 /* AppleIIOptions.xib */,
|
||||||
4B8FE2131DA19D5F0090D3CE /* Atari2600Options.xib */,
|
4B8FE2131DA19D5F0090D3CE /* Atari2600Options.xib */,
|
||||||
4B8FE2151DA19D5F0090D3CE /* MachineDocument.xib */,
|
4B8FE2151DA19D5F0090D3CE /* MachineDocument.xib */,
|
||||||
@@ -3284,6 +3287,7 @@
|
|||||||
4BA141BD2072E8A500A31EC9 /* MachinePicker.xib in Resources */,
|
4BA141BD2072E8A500A31EC9 /* MachinePicker.xib in Resources */,
|
||||||
4B1EDB451E39A0AC009D6819 /* chip.png in Resources */,
|
4B1EDB451E39A0AC009D6819 /* chip.png in Resources */,
|
||||||
4B2A332D1DB86821002876E3 /* OricOptions.xib in Resources */,
|
4B2A332D1DB86821002876E3 /* OricOptions.xib in Resources */,
|
||||||
|
4B08A56920D72BEF0016CE5A /* Activity.xib in Resources */,
|
||||||
4BD61664206B2AC800236112 /* QuickLoadOptions.xib in Resources */,
|
4BD61664206B2AC800236112 /* QuickLoadOptions.xib in Resources */,
|
||||||
4B8FE21B1DA19D5F0090D3CE /* Atari2600Options.xib in Resources */,
|
4B8FE21B1DA19D5F0090D3CE /* Atari2600Options.xib in Resources */,
|
||||||
4B8FE21C1DA19D5F0090D3CE /* MachineDocument.xib in Resources */,
|
4B8FE21C1DA19D5F0090D3CE /* MachineDocument.xib in Resources */,
|
||||||
@@ -3984,6 +3988,14 @@
|
|||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
|
4B08A56720D72BEF0016CE5A /* Activity.xib */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
4B08A56820D72BEF0016CE5A /* Base */,
|
||||||
|
);
|
||||||
|
name = Activity.xib;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4B1497961EE4B97F00CE2596 /* ZX8081Options.xib */ = {
|
4B1497961EE4B97F00CE2596 /* ZX8081Options.xib */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
|
117
OSBindings/Mac/Clock Signal/Base.lproj/Activity.xib
Normal file
117
OSBindings/Mac/Clock Signal/Base.lproj/Activity.xib
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14113" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="macosx"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14113"/>
|
||||||
|
<capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<objects>
|
||||||
|
<customObject id="-2" userLabel="File's Owner" customClass="MachineDocument" customModule="Clock_Signal" customModuleProvider="target">
|
||||||
|
<connections>
|
||||||
|
<outlet property="activityPanel" destination="ZW7-Bw-4RP" id="GRG-Q6-RQU"/>
|
||||||
|
</connections>
|
||||||
|
</customObject>
|
||||||
|
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||||
|
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||||
|
<window title="Activity" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" hidesOnDeactivate="YES" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="ZW7-Bw-4RP" customClass="NSPanel">
|
||||||
|
<windowStyleMask key="styleMask" titled="YES" closable="YES" utility="YES" nonactivatingPanel="YES" HUD="YES"/>
|
||||||
|
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||||
|
<rect key="contentRect" x="83" y="102" width="200" height="131"/>
|
||||||
|
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="900"/>
|
||||||
|
<view key="contentView" id="tpZ-0B-QQu">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="200" height="131"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ySY-ir-hzb" userLabel="First indicator">
|
||||||
|
<rect key="frame" x="20" y="95" width="17" height="16"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="ySY-ir-hzb" secondAttribute="height" multiplier="1:1" id="UX0-hT-7Td"/>
|
||||||
|
</constraints>
|
||||||
|
<levelIndicatorCell key="cell" alignment="left" doubleValue="1" maxValue="1" warningValue="2" criticalValue="2" levelIndicatorStyle="continuousCapacity" id="DhQ-Di-tRT"/>
|
||||||
|
</levelIndicator>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Tah-UQ-vdf">
|
||||||
|
<rect key="frame" x="44" y="94" width="59" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Activity 1" id="a5P-Ci-RzC">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ncQ-wN-C61" userLabel="Second indicator">
|
||||||
|
<rect key="frame" x="20" y="70" width="17" height="16"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="ncQ-wN-C61" secondAttribute="height" multiplier="1:1" id="176-v3-mVW"/>
|
||||||
|
</constraints>
|
||||||
|
<levelIndicatorCell key="cell" alignment="left" doubleValue="1" maxValue="1" warningValue="2" criticalValue="2" levelIndicatorStyle="continuousCapacity" id="jlb-bk-FPd"/>
|
||||||
|
</levelIndicator>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="14O-Lq-Npx">
|
||||||
|
<rect key="frame" x="44" y="69" width="61" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Activity 2" id="NE1-CO-pGI">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0rV-Th-Zwt" userLabel="Third indicator">
|
||||||
|
<rect key="frame" x="20" y="45" width="17" height="16"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="0rV-Th-Zwt" secondAttribute="height" multiplier="1:1" id="Ai8-b3-Nn5"/>
|
||||||
|
</constraints>
|
||||||
|
<levelIndicatorCell key="cell" alignment="left" doubleValue="1" maxValue="1" warningValue="2" criticalValue="2" levelIndicatorStyle="continuousCapacity" id="CJy-Jn-eCL"/>
|
||||||
|
</levelIndicator>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Acy-tT-OFH">
|
||||||
|
<rect key="frame" x="44" y="44" width="61" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Activity 3" id="FSR-y6-7WE">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
<levelIndicator verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bvH-EJ-TYb" userLabel="Fourth indicator">
|
||||||
|
<rect key="frame" x="20" y="20" width="17" height="16"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="width" secondItem="bvH-EJ-TYb" secondAttribute="height" multiplier="1:1" id="cKc-q1-2Q4"/>
|
||||||
|
</constraints>
|
||||||
|
<levelIndicatorCell key="cell" alignment="left" doubleValue="1" maxValue="1" warningValue="2" criticalValue="2" levelIndicatorStyle="continuousCapacity" id="eoN-hl-30l"/>
|
||||||
|
</levelIndicator>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="R0g-Oa-VB5">
|
||||||
|
<rect key="frame" x="44" y="19" width="62" height="17"/>
|
||||||
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Activity 4" id="aGr-cd-jC0">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="14O-Lq-Npx" firstAttribute="centerY" secondItem="ncQ-wN-C61" secondAttribute="centerY" id="0Ht-U2-sPg"/>
|
||||||
|
<constraint firstItem="bvH-EJ-TYb" firstAttribute="top" secondItem="0rV-Th-Zwt" secondAttribute="bottom" constant="9" id="0xw-qA-6vP"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="14O-Lq-Npx" secondAttribute="trailing" constant="20" id="5eo-XI-a3W"/>
|
||||||
|
<constraint firstItem="Tah-UQ-vdf" firstAttribute="centerY" secondItem="ySY-ir-hzb" secondAttribute="centerY" id="6Hn-ts-mTi"/>
|
||||||
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="0rV-Th-Zwt" secondAttribute="bottom" constant="20" id="CNH-SV-KNi"/>
|
||||||
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="bvH-EJ-TYb" secondAttribute="bottom" constant="20" id="DYI-qH-t52"/>
|
||||||
|
<constraint firstItem="R0g-Oa-VB5" firstAttribute="leading" secondItem="bvH-EJ-TYb" secondAttribute="trailing" constant="10" id="Dgy-JI-nA1"/>
|
||||||
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ncQ-wN-C61" secondAttribute="bottom" constant="20" id="ENa-Xb-FBv"/>
|
||||||
|
<constraint firstItem="R0g-Oa-VB5" firstAttribute="centerY" secondItem="bvH-EJ-TYb" secondAttribute="centerY" id="Gfq-mB-Y1z"/>
|
||||||
|
<constraint firstItem="Acy-tT-OFH" firstAttribute="centerY" secondItem="0rV-Th-Zwt" secondAttribute="centerY" id="ImF-rK-oOr"/>
|
||||||
|
<constraint firstItem="Acy-tT-OFH" firstAttribute="leading" secondItem="0rV-Th-Zwt" secondAttribute="trailing" constant="10" id="JSU-pZ-l9Q"/>
|
||||||
|
<constraint firstItem="ySY-ir-hzb" firstAttribute="leading" secondItem="tpZ-0B-QQu" secondAttribute="leading" constant="20" id="KMh-EO-rxE"/>
|
||||||
|
<constraint firstItem="0rV-Th-Zwt" firstAttribute="top" secondItem="ncQ-wN-C61" secondAttribute="bottom" constant="9" id="Q2g-yM-nlJ"/>
|
||||||
|
<constraint firstItem="ncQ-wN-C61" firstAttribute="leading" secondItem="tpZ-0B-QQu" secondAttribute="leading" constant="20" id="QUI-Hc-Bcl"/>
|
||||||
|
<constraint firstItem="0rV-Th-Zwt" firstAttribute="leading" secondItem="tpZ-0B-QQu" secondAttribute="leading" constant="20" id="bKh-4L-mqj"/>
|
||||||
|
<constraint firstItem="bvH-EJ-TYb" firstAttribute="leading" secondItem="tpZ-0B-QQu" secondAttribute="leading" constant="20" id="cPA-Ls-fLj"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Tah-UQ-vdf" secondAttribute="trailing" constant="20" id="igX-7U-TeE"/>
|
||||||
|
<constraint firstItem="14O-Lq-Npx" firstAttribute="leading" secondItem="ncQ-wN-C61" secondAttribute="trailing" constant="10" id="jjP-qH-Pqg"/>
|
||||||
|
<constraint firstItem="Tah-UQ-vdf" firstAttribute="leading" secondItem="ySY-ir-hzb" secondAttribute="trailing" constant="10" id="lux-Nz-K7E"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Acy-tT-OFH" secondAttribute="trailing" constant="20" id="mEe-VT-dNr"/>
|
||||||
|
<constraint firstItem="ncQ-wN-C61" firstAttribute="top" secondItem="ySY-ir-hzb" secondAttribute="bottom" constant="9" id="mSc-jj-amw"/>
|
||||||
|
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="R0g-Oa-VB5" secondAttribute="trailing" constant="20" id="sR8-Ph-suC"/>
|
||||||
|
<constraint firstItem="ySY-ir-hzb" firstAttribute="top" secondItem="tpZ-0B-QQu" secondAttribute="top" constant="20" id="wbj-48-DYq"/>
|
||||||
|
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ySY-ir-hzb" secondAttribute="bottom" constant="20" id="yxz-Hb-Pol"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<point key="canvasLocation" x="84" y="115"/>
|
||||||
|
</window>
|
||||||
|
</objects>
|
||||||
|
</document>
|
@@ -146,10 +146,16 @@
|
|||||||
<modifierMask key="keyEquivalentModifierMask"/>
|
<modifierMask key="keyEquivalentModifierMask"/>
|
||||||
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
<menu key="submenu" title="View" id="HyV-fh-RgO">
|
||||||
<items>
|
<items>
|
||||||
<menuItem title="Show Options" keyEquivalent="o" id="WCd-6R-baV">
|
<menuItem title="Show Activity" keyEquivalent="a" id="WCd-6R-baV">
|
||||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
<connections>
|
<connections>
|
||||||
<action selector="showOptions:" target="-1" id="ge3-Qg-kb5"/>
|
<action selector="showActivity:" target="-1" id="oeF-uJ-cOS"/>
|
||||||
|
</connections>
|
||||||
|
</menuItem>
|
||||||
|
<menuItem title="Show Options" keyEquivalent="o" id="GtG-CV-Uro">
|
||||||
|
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="showOptions:" target="-1" id="M6T-DE-Duo"/>
|
||||||
</connections>
|
</connections>
|
||||||
</menuItem>
|
</menuItem>
|
||||||
</items>
|
</items>
|
||||||
|
@@ -40,6 +40,11 @@ class MachineDocument:
|
|||||||
optionsPanel?.setIsVisible(true)
|
optionsPanel?.setIsVisible(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBOutlet var activityPanel: NSPanel!
|
||||||
|
@IBAction func showActivity(_ sender: AnyObject!) {
|
||||||
|
activityPanel.setIsVisible(true)
|
||||||
|
}
|
||||||
|
|
||||||
fileprivate var audioQueue: CSAudioQueue! = nil
|
fileprivate var audioQueue: CSAudioQueue! = nil
|
||||||
fileprivate var bestEffortUpdater: CSBestEffortUpdater?
|
fileprivate var bestEffortUpdater: CSBestEffortUpdater?
|
||||||
|
|
||||||
@@ -119,6 +124,9 @@ class MachineDocument:
|
|||||||
}
|
}
|
||||||
|
|
||||||
override func close() {
|
override func close() {
|
||||||
|
activityPanel?.setIsVisible(false)
|
||||||
|
activityPanel = nil
|
||||||
|
|
||||||
optionsPanel?.setIsVisible(false)
|
optionsPanel?.setIsVisible(false)
|
||||||
optionsPanel = nil
|
optionsPanel = nil
|
||||||
|
|
||||||
@@ -286,6 +294,9 @@ class MachineDocument:
|
|||||||
menuItem.state = machine.inputMode == .joystick ? .on : .off
|
menuItem.state = machine.inputMode == .joystick ? .on : .off
|
||||||
return true
|
return true
|
||||||
|
|
||||||
|
case #selector(self.showActivity(_:)):
|
||||||
|
return self.activityPanel != nil
|
||||||
|
|
||||||
default: break
|
default: break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -293,40 +304,42 @@ class MachineDocument:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Activity display.
|
// MARK: Activity display.
|
||||||
|
fileprivate var activityLevelIndicators: [String: NSLevelIndicator] = [:]
|
||||||
func setupActivityDisplay() {
|
func setupActivityDisplay() {
|
||||||
return
|
var leds = machine.leds
|
||||||
|
if leds.count > 0 {
|
||||||
|
Bundle.main.loadNibNamed(NSNib.Name(rawValue: "Activity"), owner: self, topLevelObjects: nil)
|
||||||
|
showActivity(nil)
|
||||||
|
|
||||||
if machine.leds.count > 0 {
|
// Inspect the activity panel for indicators.
|
||||||
let panel = NSPanel()
|
var activityIndicators: [NSLevelIndicator] = []
|
||||||
panel.title = "Activity"
|
var textFields: [NSTextField] = []
|
||||||
panel.styleMask = .hudWindow
|
if let contentView = self.activityPanel.contentView {
|
||||||
panel.setIsVisible(true)
|
for view in contentView.subviews {
|
||||||
|
if let levelIndicator = view as? NSLevelIndicator {
|
||||||
|
activityIndicators.append(levelIndicator)
|
||||||
|
}
|
||||||
|
|
||||||
for name in machine.leds {
|
if let textField = view as? NSTextField {
|
||||||
let button = NSButton()
|
textFields.append(textField)
|
||||||
button.title = name
|
}
|
||||||
button.setButtonType(.radio)
|
}
|
||||||
button.translatesAutoresizingMaskIntoConstraints = false
|
}
|
||||||
button.isEnabled = false
|
|
||||||
// button.color
|
|
||||||
panel.contentView?.addSubview(button)
|
|
||||||
|
|
||||||
let views = ["button": button]
|
// If there are fewer level indicators than LEDs, trim that list.
|
||||||
let horizontalConstraints =
|
if activityIndicators.count < leds.count {
|
||||||
NSLayoutConstraint.constraints(
|
leds.removeSubrange(activityIndicators.count ..< leds.count)
|
||||||
withVisualFormat: "H:|-[button]-|",
|
}
|
||||||
options: NSLayoutConstraint.FormatOptions(rawValue: 0),
|
|
||||||
metrics: nil,
|
|
||||||
views: views)
|
|
||||||
let verticalConstraints =
|
|
||||||
NSLayoutConstraint.constraints(
|
|
||||||
withVisualFormat: "V:|-[button]-|",
|
|
||||||
options: NSLayoutConstraint.FormatOptions(rawValue: 0),
|
|
||||||
metrics: nil,
|
|
||||||
views: views)
|
|
||||||
|
|
||||||
panel.contentView?.addConstraints(horizontalConstraints)
|
// Remove unused views.
|
||||||
panel.contentView?.addConstraints(verticalConstraints)
|
for c in leds.count ..< activityIndicators.count {
|
||||||
|
textFields[c].removeFromSuperview()
|
||||||
|
activityIndicators[c].removeFromSuperview()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply labels.
|
||||||
|
for c in 0 ..< leds.count {
|
||||||
|
textFields[c].stringValue = leds[c]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user