mirror of
https://github.com/ksherlock/ample.git
synced 2026-10-25 13:02:57 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d058aa6588 | ||
|
|
3889b42c14 | ||
|
|
34fcc3b3ed | ||
|
|
c10f2153ff | ||
|
|
23afbd8952 | ||
|
|
5fbc00e375 | ||
|
|
5dd04cd3b7 | ||
|
|
27bfc1cd8b | ||
|
|
800087096d | ||
|
|
669e9a16f4 | ||
|
|
7c766ba76e | ||
|
|
c307ab0403 | ||
|
|
7d1e1bf6bd | ||
|
|
9da9f6bd63 | ||
|
|
4144a6ad03 | ||
|
|
76ac6f777a | ||
|
|
6b43c42682 | ||
|
|
67f2c60286 | ||
|
|
cae68c7f5a | ||
|
|
681c70d515 | ||
|
|
7abb2f68a0 | ||
|
|
4c003007f5 | ||
|
|
a5a6222c9f | ||
|
|
058da073ee | ||
|
|
5e0d31a772 | ||
|
|
e958ffe65a | ||
|
|
2b0e6d4d9d | ||
|
|
33d6c651d0 | ||
|
|
0381037356 | ||
|
|
c4c2defc01 | ||
|
|
46fe931103 | ||
|
|
141877f8cb | ||
|
|
e9d348ec71 | ||
|
|
37b085e45f | ||
|
|
7af810d14f | ||
|
|
884f8b190a | ||
|
|
7b55c37128 | ||
|
|
c0534f0107 | ||
|
|
69f56830ca | ||
|
|
b8697d326c | ||
|
|
ef2bbeb9c3 | ||
|
|
3d5a2951bb | ||
|
|
789d61d9f1 | ||
|
|
5ffc85f9fc | ||
|
|
7b67522156 | ||
|
|
f14b291e60 | ||
|
|
576931cd71 | ||
|
|
9ed83bf316 | ||
|
|
751083ea26 | ||
|
|
1b7faf3ac4 | ||
|
|
bfbac2cc20 | ||
|
|
3bf2f63bf6 |
No files matched your search
@@ -1,6 +1,9 @@
|
||||
dist
|
||||
embedded/mame64
|
||||
embedded/SDL2.framework
|
||||
embedded/Sparkle.framework
|
||||
embedded/Sparkle-*
|
||||
embedded/SDL2-*
|
||||
build
|
||||
embedded/mame-data.tgz
|
||||
__pycache__
|
||||
+143
-76
@@ -62,6 +62,14 @@
|
||||
B6152B5725F4549F00605E6E /* Slot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5525F4549F00605E6E /* Slot.m */; };
|
||||
B6152B5A25F5B57E00605E6E /* Media.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5925F5B57E00605E6E /* Media.m */; };
|
||||
B6152B5B25F5B57E00605E6E /* Media.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5925F5B57E00605E6E /* Media.m */; };
|
||||
B615A99F26640940001FBF99 /* SlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* SlotView.xib */; };
|
||||
B615A9A026640A70001FBF99 /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* SlotViewController.m */; };
|
||||
B63005332666D6940014C381 /* BookmarkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B63005322666D6940014C381 /* BookmarkManager.m */; };
|
||||
B63005342666D6940014C381 /* BookmarkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B63005322666D6940014C381 /* BookmarkManager.m */; };
|
||||
B635C09A26784A1200B23BFD /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09926784A1200B23BFD /* Sparkle.framework */; };
|
||||
B635C09B26784A1200B23BFD /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09926784A1200B23BFD /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B635C09D26784A4800B23BFD /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09C26784A4800B23BFD /* Sparkle.framework */; };
|
||||
B635C09F26784D4700B23BFD /* AmpleLite.m in Sources */ = {isa = PBXBuildFile; fileRef = B635C09E26784D4700B23BFD /* AmpleLite.m */; };
|
||||
B6374AC4260EBBCF0045CA16 /* pty_shell.c in Sources */ = {isa = PBXBuildFile; fileRef = B6374AB6260EBB970045CA16 /* pty_shell.c */; };
|
||||
B6374AC5260EBC5A0045CA16 /* pty_shell in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6374ABD260EBBC90045CA16 /* pty_shell */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
B6374AD1260ECB400045CA16 /* macclas2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6374AC9260ECB3F0045CA16 /* macclas2.plist */; };
|
||||
@@ -121,7 +129,6 @@
|
||||
B64AF1F7250ED5E400A09B9B /* TableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F5250ED5E400A09B9B /* TableCellView.m */; };
|
||||
B64AF1FA250EF6A500A09B9B /* Transformers.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F9250EF6A500A09B9B /* Transformers.m */; };
|
||||
B64AF1FB250EF6A500A09B9B /* Transformers.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F9250EF6A500A09B9B /* Transformers.m */; };
|
||||
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
|
||||
B65085B925B616AC00354EC9 /* maclc2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B625B616AC00354EC9 /* maclc2.plist */; };
|
||||
B65085BA25B616AC00354EC9 /* maclc2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B625B616AC00354EC9 /* maclc2.plist */; };
|
||||
B65085BB25B616AC00354EC9 /* maclc3.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B725B616AC00354EC9 /* maclc3.plist */; };
|
||||
@@ -198,7 +205,6 @@
|
||||
B6E08076252574690075F4E1 /* vmnet_helper in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6841BD0251EC913006A5C39 /* vmnet_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
B6E4B5B024FDE2670094A35C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA258724E99BEB005FB8FF /* main.m */; };
|
||||
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */; };
|
||||
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
|
||||
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64979C124EF6703008ABD20 /* MediaViewController.m */; };
|
||||
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */ = {isa = PBXBuildFile; fileRef = B60A6E1324EE0AE2004B7EEF /* FlippedView.m */; };
|
||||
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA257F24E99BE9005FB8FF /* AppDelegate.m */; };
|
||||
@@ -257,8 +263,12 @@
|
||||
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F224F5F36F005CB652 /* apple2jp.plist */; };
|
||||
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0324F5F371005CB652 /* apple2.plist */; };
|
||||
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0024F5F371005CB652 /* prav8m.plist */; };
|
||||
B6E9A18025088B1B005E7525 /* NewSlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */; };
|
||||
B6E9A18325088B36005E7525 /* NewSlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* NewSlotView.xib */; };
|
||||
B6E9A18025088B1B005E7525 /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* SlotViewController.m */; };
|
||||
B6E9A18325088B36005E7525 /* SlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* SlotView.xib */; };
|
||||
B6F7B538266FDA5B00624C6B /* MachineView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6F7B536266FDA5B00624C6B /* MachineView.xib */; };
|
||||
B6F7B539266FDA5B00624C6B /* MachineView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6F7B536266FDA5B00624C6B /* MachineView.xib */; };
|
||||
B6F7B53C267017A200624C6B /* NewMachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F7B53B267017A200624C6B /* NewMachineViewController.m */; };
|
||||
B6F7B53D267017A200624C6B /* NewMachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F7B53B267017A200624C6B /* NewMachineViewController.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
@@ -278,6 +288,7 @@
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */,
|
||||
B635C09B26784A1200B23BFD /* Sparkle.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -321,10 +332,8 @@
|
||||
B6004DEF24FB05D600D38596 /* LogWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = LogWindow.xib; path = Base.lproj/LogWindow.xib; sourceTree = "<group>"; };
|
||||
B608E17D2502FE0C00D53465 /* TransparentScroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TransparentScroller.h; sourceTree = "<group>"; };
|
||||
B608E17E2502FE0C00D53465 /* TransparentScroller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TransparentScroller.m; sourceTree = "<group>"; };
|
||||
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2gs.plist; sourceTree = "<group>"; };
|
||||
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlippedView.h; sourceTree = "<group>"; };
|
||||
B60A6E1324EE0AE2004B7EEF /* FlippedView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlippedView.m; sourceTree = "<group>"; };
|
||||
B61099E424F5F230005CB652 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SlotView.xib; sourceTree = "<group>"; };
|
||||
B61099E624F5F230005CB652 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MediaView.xib; sourceTree = "<group>"; };
|
||||
B61099EA24F5F36E005CB652 /* apple2e.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2e.plist; sourceTree = "<group>"; };
|
||||
B61099EB24F5F36E005CB652 /* hkc8800a.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = hkc8800a.plist; sourceTree = "<group>"; };
|
||||
@@ -371,10 +380,17 @@
|
||||
B6109A1424F5F376005CB652 /* apple2cp.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2cp.plist; sourceTree = "<group>"; };
|
||||
B6109A1524F5F376005CB652 /* apple2p.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2p.plist; sourceTree = "<group>"; };
|
||||
B6109A1624F5F376005CB652 /* agat7.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = agat7.plist; sourceTree = "<group>"; };
|
||||
B611BA392679489F008597B5 /* pty_shell.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = pty_shell.entitlements; sourceTree = "<group>"; };
|
||||
B611BA3A267948B5008597B5 /* vmnet_helper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vmnet_helper.entitlements; sourceTree = "<group>"; };
|
||||
B6152B5425F4549F00605E6E /* Slot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Slot.h; sourceTree = "<group>"; };
|
||||
B6152B5525F4549F00605E6E /* Slot.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Slot.m; sourceTree = "<group>"; };
|
||||
B6152B5825F5B4F100605E6E /* Media.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Media.h; sourceTree = "<group>"; };
|
||||
B6152B5925F5B57E00605E6E /* Media.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Media.m; sourceTree = "<group>"; };
|
||||
B63005312666D6940014C381 /* BookmarkManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookmarkManager.h; sourceTree = "<group>"; };
|
||||
B63005322666D6940014C381 /* BookmarkManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BookmarkManager.m; sourceTree = "<group>"; };
|
||||
B635C09926784A1200B23BFD /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = embedded/Sparkle.framework; sourceTree = "<group>"; };
|
||||
B635C09C26784A4800B23BFD /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = embedded/Sparkle.framework; sourceTree = "<group>"; };
|
||||
B635C09E26784D4700B23BFD /* AmpleLite.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AmpleLite.m; sourceTree = "<group>"; };
|
||||
B6374AB6260EBB970045CA16 /* pty_shell.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pty_shell.c; sourceTree = "<group>"; };
|
||||
B6374ABD260EBBC90045CA16 /* pty_shell */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pty_shell; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B6374AC9260ECB3F0045CA16 /* macclas2.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = macclas2.plist; sourceTree = "<group>"; };
|
||||
@@ -419,8 +435,6 @@
|
||||
B65085B625B616AC00354EC9 /* maclc2.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maclc2.plist; sourceTree = "<group>"; };
|
||||
B65085B725B616AC00354EC9 /* maclc3.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maclc3.plist; sourceTree = "<group>"; };
|
||||
B65085B825B616AC00354EC9 /* maciici.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maciici.plist; sourceTree = "<group>"; };
|
||||
B65593AF24ECB61800722E0C /* SlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotViewController.h; sourceTree = "<group>"; };
|
||||
B65593B024ECB61800722E0C /* SlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlotViewController.m; sourceTree = "<group>"; };
|
||||
B65D718525E70BD5008C5F87 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
|
||||
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreferencesWindowController.h; sourceTree = "<group>"; };
|
||||
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindowController.m; sourceTree = "<group>"; };
|
||||
@@ -432,7 +446,6 @@
|
||||
B6665C1B265C639900254939 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Autocomplete.xib; sourceTree = "<group>"; };
|
||||
B66D0FE62611386B000902F1 /* SoftwareList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoftwareList.m; sourceTree = "<group>"; };
|
||||
B66D0FE926113AA8000902F1 /* SoftwareList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SoftwareList.h; sourceTree = "<group>"; };
|
||||
B67BD48424EE249D0073E334 /* apple1.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple1.plist; sourceTree = "<group>"; };
|
||||
B6841BCA251EC88E006A5C39 /* vmnet_helper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vmnet_helper.c; sourceTree = "<group>"; };
|
||||
B6841BD0251EC913006A5C39 /* vmnet_helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = vmnet_helper; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B6841BDD251ECC29006A5C39 /* vmnet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vmnet.framework; path = System/Library/Frameworks/vmnet.framework; sourceTree = SDKROOT; };
|
||||
@@ -475,9 +488,12 @@
|
||||
B6DE32422605482500418375 /* mac512k.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = mac512k.plist; sourceTree = "<group>"; };
|
||||
B6DE32432605482500418375 /* macse.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = macse.plist; sourceTree = "<group>"; };
|
||||
B6E4B5FA24FDE2670094A35C /* Ample Lite.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Ample Lite.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewSlotViewController.h; sourceTree = "<group>"; };
|
||||
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewSlotViewController.m; sourceTree = "<group>"; };
|
||||
B6E9A18225088B36005E7525 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/NewSlotView.xib; sourceTree = "<group>"; };
|
||||
B6E9A17E25088B1B005E7525 /* SlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotViewController.h; sourceTree = "<group>"; };
|
||||
B6E9A17F25088B1B005E7525 /* SlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlotViewController.m; sourceTree = "<group>"; };
|
||||
B6E9A18225088B36005E7525 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SlotView.xib; sourceTree = "<group>"; };
|
||||
B6F7B537266FDA5B00624C6B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MachineView.xib; sourceTree = "<group>"; };
|
||||
B6F7B53A267017A200624C6B /* NewMachineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMachineViewController.h; sourceTree = "<group>"; };
|
||||
B6F7B53B267017A200624C6B /* NewMachineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMachineViewController.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -501,6 +517,8 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B65D718625E70BD5008C5F87 /* WebKit.framework in Frameworks */,
|
||||
B635C09D26784A4800B23BFD /* Sparkle.framework in Frameworks */,
|
||||
B635C09A26784A1200B23BFD /* Sparkle.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -518,6 +536,7 @@
|
||||
B6374AB2260EBB970045CA16 /* pty_shell */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B611BA392679489F008597B5 /* pty_shell.entitlements */,
|
||||
B6374AB6260EBB970045CA16 /* pty_shell.c */,
|
||||
);
|
||||
path = pty_shell;
|
||||
@@ -526,8 +545,6 @@
|
||||
B649798C24EEC165008ABD20 /* Recovered References */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B67BD48424EE249D0073E334 /* apple1.plist */,
|
||||
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */,
|
||||
);
|
||||
name = "Recovered References";
|
||||
sourceTree = "<group>";
|
||||
@@ -618,6 +635,7 @@
|
||||
B66236B624FDA686006CABD7 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B635C09926784A1200B23BFD /* Sparkle.framework */,
|
||||
B65D718525E70BD5008C5F87 /* WebKit.framework */,
|
||||
B6841BDD251ECC29006A5C39 /* vmnet.framework */,
|
||||
);
|
||||
@@ -629,6 +647,7 @@
|
||||
children = (
|
||||
B63C1B8D25004C6D00511A71 /* mame-data.tgz */,
|
||||
B66236B824FDA698006CABD7 /* mame64 */,
|
||||
B635C09C26784A4800B23BFD /* Sparkle.framework */,
|
||||
B66236B224FDA522006CABD7 /* SDL2.framework */,
|
||||
);
|
||||
name = "Embedded Content";
|
||||
@@ -637,6 +656,7 @@
|
||||
B6841BD1251EC913006A5C39 /* vmnet_helper */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B611BA3A267948B5008597B5 /* vmnet_helper.entitlements */,
|
||||
B6841BCA251EC88E006A5C39 /* vmnet_helper.c */,
|
||||
);
|
||||
path = vmnet_helper;
|
||||
@@ -674,6 +694,7 @@
|
||||
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
|
||||
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
|
||||
B63C1B8924FF4B7100511A71 /* Ample.h */,
|
||||
B635C09E26784D4700B23BFD /* AmpleLite.m */,
|
||||
B63C1B8A24FF4BF700511A71 /* Ample.m */,
|
||||
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
|
||||
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
|
||||
@@ -681,12 +702,10 @@
|
||||
B6152B5525F4549F00605E6E /* Slot.m */,
|
||||
B6152B5825F5B4F100605E6E /* Media.h */,
|
||||
B6152B5925F5B57E00605E6E /* Media.m */,
|
||||
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */,
|
||||
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */,
|
||||
B6E9A17E25088B1B005E7525 /* SlotViewController.h */,
|
||||
B6E9A17F25088B1B005E7525 /* SlotViewController.m */,
|
||||
B6A1A1932528EB1700DB0FD7 /* Menu.m */,
|
||||
B6A1A1962528EB4600DB0FD7 /* Menu.h */,
|
||||
B65593B024ECB61800722E0C /* SlotViewController.m */,
|
||||
B65593AF24ECB61800722E0C /* SlotViewController.h */,
|
||||
B64979C024EF6703008ABD20 /* MediaViewController.h */,
|
||||
B64979C124EF6703008ABD20 /* MediaViewController.m */,
|
||||
B64E15A724EA1D5300E8AD3D /* MachineViewController.h */,
|
||||
@@ -697,6 +716,10 @@
|
||||
B608E17E2502FE0C00D53465 /* TransparentScroller.m */,
|
||||
B66D0FE62611386B000902F1 /* SoftwareList.m */,
|
||||
B66D0FE926113AA8000902F1 /* SoftwareList.h */,
|
||||
B63005312666D6940014C381 /* BookmarkManager.h */,
|
||||
B63005322666D6940014C381 /* BookmarkManager.m */,
|
||||
B6F7B53A267017A200624C6B /* NewMachineViewController.h */,
|
||||
B6F7B53B267017A200624C6B /* NewMachineViewController.m */,
|
||||
B6BA563A251685DA00B0C47D /* Window Controllers */,
|
||||
B6B9EA652506A5550080E70D /* EjectButton.h */,
|
||||
B6B9EA642506A5550080E70D /* EjectButton.m */,
|
||||
@@ -737,7 +760,8 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6665C1A265C639900254939 /* Autocomplete.xib */,
|
||||
B6E9A18125088B36005E7525 /* NewSlotView.xib */,
|
||||
B6E9A18125088B36005E7525 /* SlotView.xib */,
|
||||
B6F7B536266FDA5B00624C6B /* MachineView.xib */,
|
||||
B63C1B9325008A2700511A71 /* DownloadWindow.xib */,
|
||||
B66236BF24FDB7A6006CABD7 /* Credits.rtf */,
|
||||
B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */,
|
||||
@@ -745,7 +769,6 @@
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */,
|
||||
B61099E524F5F230005CB652 /* MediaView.xib */,
|
||||
B6D6DE3724FAC8B500661A5F /* Preferences.xib */,
|
||||
B61099E324F5F230005CB652 /* SlotView.xib */,
|
||||
B64AF1EC250EC35B00A09B9B /* DiskImages.xib */,
|
||||
B63C1F0925B143C50016A611 /* CheatSheet.xib */,
|
||||
);
|
||||
@@ -818,6 +841,7 @@
|
||||
B66236B124FDA443006CABD7 /* Embed Frameworks */,
|
||||
B6152B5C25F6F4F800605E6E /* ShellScript */,
|
||||
B66236BB24FDA71D006CABD7 /* CopyFiles */,
|
||||
B611BA3D26796483008597B5 /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -892,6 +916,29 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B6DDECD62505A86E0093587A /* eject-16x16.png in Resources */,
|
||||
B6DDECCC2505A86E0093587A /* eject-16x16@2x.png in Resources */,
|
||||
B6DDECCE2505A86E0093587A /* eject-16x16@3x.png in Resources */,
|
||||
B6DDECD02505A86E0093587A /* eject-hover-16x16.png in Resources */,
|
||||
B6DDECD22505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
|
||||
B6DDECD42505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
|
||||
B6DE323826044C1100418375 /* caution.png in Resources */,
|
||||
B6DE323626044C1100418375 /* caution@2x.png in Resources */,
|
||||
B6DE323B26044DB800418375 /* caution@3x.png in Resources */,
|
||||
B6DDECC025057A550093587A /* drag-handle-4x10.png in Resources */,
|
||||
B6DDECC225057A550093587A /* drag-handle-4x10@2x.png in Resources */,
|
||||
B6DDECC425057A550093587A /* drag-handle-4x10@3x.png in Resources */,
|
||||
B6BA258224E99BEB005FB8FF /* Assets.xcassets in Resources */,
|
||||
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */,
|
||||
B6004DF124FB05D600D38596 /* LogWindow.xib in Resources */,
|
||||
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */,
|
||||
B6665C1C265C639A00254939 /* Autocomplete.xib in Resources */,
|
||||
B64AF1EE250EC35B00A09B9B /* DiskImages.xib in Resources */,
|
||||
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
B61099E824F5F231005CB652 /* MediaView.xib in Resources */,
|
||||
B6E9A18325088B36005E7525 /* SlotView.xib in Resources */,
|
||||
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
|
||||
B63C1F0B25B143C50016A611 /* CheatSheet.xib in Resources */,
|
||||
B6109A3324F5F377005CB652 /* apple2eeuk.plist in Resources */,
|
||||
B6374ADB260ECB400045CA16 /* maciix.plist in Resources */,
|
||||
B6109A2424F5F377005CB652 /* las128ex.plist in Resources */,
|
||||
@@ -901,24 +948,19 @@
|
||||
B6374AD9260ECB400045CA16 /* maciicx.plist in Resources */,
|
||||
B6109A3F24F5F377005CB652 /* agat9.plist in Resources */,
|
||||
B63C1B9D250192D800511A71 /* cece.plist in Resources */,
|
||||
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */,
|
||||
B6109A3124F5F377005CB652 /* apple1.plist in Resources */,
|
||||
B6374AD3260ECB400045CA16 /* macii.plist in Resources */,
|
||||
B6109A3524F5F377005CB652 /* ace100.plist in Resources */,
|
||||
B65085BB25B616AC00354EC9 /* maclc3.plist in Resources */,
|
||||
B6109A3424F5F377005CB652 /* am64.plist in Resources */,
|
||||
B6DDECCC2505A86E0093587A /* eject-16x16@2x.png in Resources */,
|
||||
B6DE32462605482500418375 /* macclasc.plist in Resources */,
|
||||
B6004DF124FB05D600D38596 /* LogWindow.xib in Resources */,
|
||||
B6DE32502605482500418375 /* macse.plist in Resources */,
|
||||
B6BA258224E99BEB005FB8FF /* Assets.xcassets in Resources */,
|
||||
B6109A1724F5F377005CB652 /* apple2e.plist in Resources */,
|
||||
B6109A3C24F5F377005CB652 /* am100.plist in Resources */,
|
||||
B6DDECD02505A86E0093587A /* eject-hover-16x16.png in Resources */,
|
||||
B6109A2524F5F377005CB652 /* laser2c.plist in Resources */,
|
||||
B6109A3D24F5F377005CB652 /* laser128.plist in Resources */,
|
||||
B6109A2824F5F377005CB652 /* apple2ep.plist in Resources */,
|
||||
B6DDECC225057A550093587A /* drag-handle-4x10@2x.png in Resources */,
|
||||
B6F7B538266FDA5B00624C6B /* MachineView.xib in Resources */,
|
||||
B6109A1924F5F377005CB652 /* apple2ees.plist in Resources */,
|
||||
B6DE32482605482500418375 /* mac512ke.plist in Resources */,
|
||||
B6109A3924F5F377005CB652 /* prav8c.plist in Resources */,
|
||||
@@ -930,65 +972,48 @@
|
||||
B6109A2E24F5F377005CB652 /* apple2eefr.plist in Resources */,
|
||||
B6109A2C24F5F377005CB652 /* spectred.plist in Resources */,
|
||||
B6109A4124F5F377005CB652 /* apple2cp.plist in Resources */,
|
||||
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */,
|
||||
B6109A3A24F5F377005CB652 /* prav82.plist in Resources */,
|
||||
B6DD1FE825B407E7004A3242 /* maclc.plist in Resources */,
|
||||
B6109A2024F5F377005CB652 /* apple2euk.plist in Resources */,
|
||||
B6DE324C2605482500418375 /* macplus.plist in Resources */,
|
||||
B6DE323826044C1100418375 /* caution.png in Resources */,
|
||||
B6109A2F24F5F377005CB652 /* uniap2ti.plist in Resources */,
|
||||
B6DDECD42505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
|
||||
B6DDECD62505A86E0093587A /* eject-16x16.png in Resources */,
|
||||
B6109A1E24F5F377005CB652 /* apple2c.plist in Resources */,
|
||||
B6109A1A24F5F377005CB652 /* microeng.plist in Resources */,
|
||||
B6374AD5260ECB400045CA16 /* maciisi.plist in Resources */,
|
||||
B6109A3E24F5F377005CB652 /* albert.plist in Resources */,
|
||||
B6665C1C265C639A00254939 /* Autocomplete.xib in Resources */,
|
||||
B66236C124FDB7A6006CABD7 /* Credits.rtf in Resources */,
|
||||
B6109A4224F5F377005CB652 /* apple2p.plist in Resources */,
|
||||
B65085B925B616AC00354EC9 /* maclc2.plist in Resources */,
|
||||
B6109A1824F5F377005CB652 /* hkc8800a.plist in Resources */,
|
||||
B6109A2324F5F377005CB652 /* apple2gsr0.plist in Resources */,
|
||||
B63C1BA1250192D800511A71 /* cecg.plist in Resources */,
|
||||
B6DE323626044C1100418375 /* caution@2x.png in Resources */,
|
||||
B63C1BA3250192D800511A71 /* cec2000.plist in Resources */,
|
||||
B6109A2624F5F377005CB652 /* mprof3.plist in Resources */,
|
||||
B63C1B9F250192D800511A71 /* ceci.plist in Resources */,
|
||||
B6109A3224F5F377005CB652 /* basis108.plist in Resources */,
|
||||
B6DE323B26044DB800418375 /* caution@3x.png in Resources */,
|
||||
B6109A4324F5F377005CB652 /* agat7.plist in Resources */,
|
||||
B6DE324E2605482500418375 /* mac512k.plist in Resources */,
|
||||
B6DDECC425057A550093587A /* drag-handle-4x10@3x.png in Resources */,
|
||||
B6109A2B24F5F377005CB652 /* elppa.plist in Resources */,
|
||||
B63C1B8E25004C6D00511A71 /* mame-data.tgz in Resources */,
|
||||
B6DDECCE2505A86E0093587A /* eject-16x16@3x.png in Resources */,
|
||||
B64AF1EE250EC35B00A09B9B /* DiskImages.xib in Resources */,
|
||||
B6109A3B24F5F377005CB652 /* apple2gsr1.plist in Resources */,
|
||||
B65085BD25B616AC00354EC9 /* maciici.plist in Resources */,
|
||||
B6374AE3260ECDDD0045CA16 /* maciihmu.plist in Resources */,
|
||||
B6374ADF260ECB400045CA16 /* macse30.plist in Resources */,
|
||||
B63C1F1225B147E10016A611 /* CheatSheet.html in Resources */,
|
||||
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
B6D6DE3B24FACF4F00661A5F /* Defaults.plist in Resources */,
|
||||
B6109A2224F5F377005CB652 /* models.plist in Resources */,
|
||||
B6109A4024F5F377005CB652 /* craft2p.plist in Resources */,
|
||||
B6109A1B24F5F377005CB652 /* uniap2pt.plist in Resources */,
|
||||
B6109A3724F5F377005CB652 /* las128e2.plist in Resources */,
|
||||
B61099E824F5F231005CB652 /* MediaView.xib in Resources */,
|
||||
B6374AE5260ECDDD0045CA16 /* mac2fdhd.plist in Resources */,
|
||||
B63C1B90250088DD00511A71 /* roms.plist in Resources */,
|
||||
B6109A2724F5F377005CB652 /* uniap2en.plist in Resources */,
|
||||
B6109A2A24F5F377005CB652 /* apple3.plist in Resources */,
|
||||
B6109A2124F5F377005CB652 /* apple2ee.plist in Resources */,
|
||||
B63C1BA5250192D800511A71 /* cecm.plist in Resources */,
|
||||
B6E9A18325088B36005E7525 /* NewSlotView.xib in Resources */,
|
||||
B6DDECC025057A550093587A /* drag-handle-4x10.png in Resources */,
|
||||
B6DDECD22505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
|
||||
B6109A3624F5F377005CB652 /* dodo.plist in Resources */,
|
||||
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
|
||||
B6109A2924F5F377005CB652 /* apple2gs.plist in Resources */,
|
||||
B6109A1F24F5F377005CB652 /* apple2jp.plist in Resources */,
|
||||
B63C1F0B25B143C50016A611 /* CheatSheet.xib in Resources */,
|
||||
B6374AD7260ECB400045CA16 /* maciivi.plist in Resources */,
|
||||
B6374AD1260ECB400045CA16 /* macclas2.plist in Resources */,
|
||||
B6DE324A2605482500418375 /* macsefd.plist in Resources */,
|
||||
@@ -1001,7 +1026,18 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B6DDECD72505A86E0093587A /* eject-16x16.png in Resources */,
|
||||
B6DDECCD2505A86E0093587A /* eject-16x16@2x.png in Resources */,
|
||||
B6DDECCF2505A86E0093587A /* eject-16x16@3x.png in Resources */,
|
||||
B6DDECD12505A86E0093587A /* eject-hover-16x16.png in Resources */,
|
||||
B6DDECD32505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
|
||||
B6DDECD52505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
|
||||
B6DE323926044C1100418375 /* caution.png in Resources */,
|
||||
B6DE323726044C1100418375 /* caution@2x.png in Resources */,
|
||||
B6DE323C26044DB800418375 /* caution@3x.png in Resources */,
|
||||
B6DDECC125057A550093587A /* drag-handle-4x10.png in Resources */,
|
||||
B6DDECC325057A550093587A /* drag-handle-4x10@2x.png in Resources */,
|
||||
B6DDECC525057A550093587A /* drag-handle-4x10@3x.png in Resources */,
|
||||
B6374AE6260ECDDD0045CA16 /* mac2fdhd.plist in Resources */,
|
||||
B6374ADC260ECB400045CA16 /* maciix.plist in Resources */,
|
||||
B6E4B5BC24FDE2670094A35C /* apple2eeuk.plist in Resources */,
|
||||
@@ -1013,7 +1049,6 @@
|
||||
B6E4B5BF24FDE2670094A35C /* agat9.plist in Resources */,
|
||||
B6E4B5C024FDE2670094A35C /* LaunchWindow.xib in Resources */,
|
||||
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */,
|
||||
B6DE323726044C1100418375 /* caution@2x.png in Resources */,
|
||||
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */,
|
||||
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */,
|
||||
B6374AD6260ECB400045CA16 /* maciisi.plist in Resources */,
|
||||
@@ -1028,20 +1063,18 @@
|
||||
B6E4B5C724FDE2670094A35C /* am100.plist in Resources */,
|
||||
B6E4B5C824FDE2670094A35C /* laser2c.plist in Resources */,
|
||||
B6374ADA260ECB400045CA16 /* maciicx.plist in Resources */,
|
||||
B6DDECC125057A550093587A /* drag-handle-4x10.png in Resources */,
|
||||
B615A99F26640940001FBF99 /* SlotView.xib in Resources */,
|
||||
B63C1F0C25B143C50016A611 /* CheatSheet.xib in Resources */,
|
||||
B6374AE0260ECB400045CA16 /* macse30.plist in Resources */,
|
||||
B6E4B5C924FDE2670094A35C /* laser128.plist in Resources */,
|
||||
B646D10C263A5DF30014C586 /* ace1000.plist in Resources */,
|
||||
B6E4B5CA24FDE2670094A35C /* apple2ep.plist in Resources */,
|
||||
B6DDECCD2505A86E0093587A /* eject-16x16@2x.png in Resources */,
|
||||
B6E4B5CB24FDE2670094A35C /* apple2ees.plist in Resources */,
|
||||
B6E4B5CC24FDE2670094A35C /* prav8c.plist in Resources */,
|
||||
B6E4B5CD24FDE2670094A35C /* ivelultr.plist in Resources */,
|
||||
B6E4B5CE24FDE2670094A35C /* maxxi.plist in Resources */,
|
||||
B6DE324B2605482500418375 /* macsefd.plist in Resources */,
|
||||
B6E4B5CF24FDE2670094A35C /* apple2eefr.plist in Resources */,
|
||||
B6DE323926044C1100418375 /* caution.png in Resources */,
|
||||
B6374AD8260ECB400045CA16 /* maciivi.plist in Resources */,
|
||||
B6E4B5D124FDE2670094A35C /* spectred.plist in Resources */,
|
||||
B63C1B9725008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
@@ -1056,28 +1089,24 @@
|
||||
B6E4B5D924FDE2670094A35C /* albert.plist in Resources */,
|
||||
B6E4B5DA24FDE2670094A35C /* Credits.rtf in Resources */,
|
||||
B6E4B5DB24FDE2670094A35C /* apple2p.plist in Resources */,
|
||||
B6DDECD12505A86E0093587A /* eject-hover-16x16.png in Resources */,
|
||||
B65085BE25B616AC00354EC9 /* maciici.plist in Resources */,
|
||||
B6DE32512605482500418375 /* macse.plist in Resources */,
|
||||
B65085BC25B616AC00354EC9 /* maclc3.plist in Resources */,
|
||||
B6DE32492605482500418375 /* mac512ke.plist in Resources */,
|
||||
B6DE32452605482500418375 /* mac128k.plist in Resources */,
|
||||
B63C1BA4250192D800511A71 /* cec2000.plist in Resources */,
|
||||
B6DDECD32505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
|
||||
B6E4B5DC24FDE2670094A35C /* hkc8800a.plist in Resources */,
|
||||
B6374AE4260ECDDD0045CA16 /* maciihmu.plist in Resources */,
|
||||
B6DDECC525057A550093587A /* drag-handle-4x10@3x.png in Resources */,
|
||||
B6E4B5DD24FDE2670094A35C /* apple2gsr0.plist in Resources */,
|
||||
B6DE323C26044DB800418375 /* caution@3x.png in Resources */,
|
||||
B6E4B5DE24FDE2670094A35C /* mprof3.plist in Resources */,
|
||||
B6E4B5DF24FDE2670094A35C /* basis108.plist in Resources */,
|
||||
B6DDECD52505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
|
||||
B6DD1FE925B407E7004A3242 /* maclc.plist in Resources */,
|
||||
B6E4B5E024FDE2670094A35C /* agat7.plist in Resources */,
|
||||
B6E4B5E124FDE2670094A35C /* elppa.plist in Resources */,
|
||||
B6E4B5E224FDE2670094A35C /* apple2gsr1.plist in Resources */,
|
||||
B6E4B5E324FDE2670094A35C /* Defaults.plist in Resources */,
|
||||
B6E4B5E424FDE2670094A35C /* models.plist in Resources */,
|
||||
B6F7B539266FDA5B00624C6B /* MachineView.xib in Resources */,
|
||||
B63C1BA9250192E600511A71 /* zijini.plist in Resources */,
|
||||
B6E4B5E524FDE2670094A35C /* craft2p.plist in Resources */,
|
||||
B6E4B5E624FDE2670094A35C /* uniap2pt.plist in Resources */,
|
||||
@@ -1093,11 +1122,9 @@
|
||||
B6DE324D2605482500418375 /* macplus.plist in Resources */,
|
||||
B6E4B5ED24FDE2670094A35C /* Preferences.xib in Resources */,
|
||||
B6374ADE260ECB400045CA16 /* maciivx.plist in Resources */,
|
||||
B6DDECD72505A86E0093587A /* eject-16x16.png in Resources */,
|
||||
B6E4B5EF24FDE2670094A35C /* apple2gs.plist in Resources */,
|
||||
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */,
|
||||
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */,
|
||||
B6DDECC325057A550093587A /* drag-handle-4x10@2x.png in Resources */,
|
||||
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -1105,6 +1132,26 @@
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
B611BA3D26796483008597B5 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"$(TARGET_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)/mame64",
|
||||
);
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(TARGET_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)/mame-link",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n#cd \"$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH\"\n#if [ ! -e mame-link] ; then ln -s mame64 mame-link ; fi\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
B6152B5C25F6F4F800605E6E /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -1120,7 +1167,7 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\ncd \"embedded\"\necho perl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\nperl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\n";
|
||||
shellScript = "# set the mame rpath and entitlements.\n\ncd \"embedded\"\necho perl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\nperl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\n\necho /usr/bin/codesign --sign - --deep --force --options=runtime --entitlements mame64.entitlements --timestamp mame64\n/usr/bin/codesign --sign - --deep --force --options=runtime --entitlements mame64.entitlements --timestamp mame64\n\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
@@ -1147,7 +1194,7 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B608E17F2502FE0C00D53465 /* TransparentScroller.m in Sources */,
|
||||
B6E9A18025088B1B005E7525 /* NewSlotViewController.m in Sources */,
|
||||
B6E9A18025088B1B005E7525 /* SlotViewController.m in Sources */,
|
||||
B6A1A1942528EB1700DB0FD7 /* Menu.m in Sources */,
|
||||
B6BA258824E99BEB005FB8FF /* main.m in Sources */,
|
||||
B63C1B8B24FF4BF700511A71 /* Ample.m in Sources */,
|
||||
@@ -1156,14 +1203,15 @@
|
||||
B6152B5625F4549F00605E6E /* Slot.m in Sources */,
|
||||
B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */,
|
||||
B6665C14265A0E3E00254939 /* AutocompleteControl.m in Sources */,
|
||||
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */,
|
||||
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */,
|
||||
B60A6E1424EE0AE2004B7EEF /* FlippedView.m in Sources */,
|
||||
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */,
|
||||
B6004DF024FB05D600D38596 /* LogWindowController.m in Sources */,
|
||||
B63005332666D6940014C381 /* BookmarkManager.m in Sources */,
|
||||
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */,
|
||||
B63C1F0F25B1447C0016A611 /* CheatSheetWindowController.m in Sources */,
|
||||
B64AF1F2250ECB2E00A09B9B /* DiskImagesWindowController.m in Sources */,
|
||||
B6F7B53C267017A200624C6B /* NewMachineViewController.m in Sources */,
|
||||
B64AF1F6250ED5E400A09B9B /* TableCellView.m in Sources */,
|
||||
B66D0FE72611386C000902F1 /* SoftwareList.m in Sources */,
|
||||
B63C1B9425008A2700511A71 /* DownloadWindowController.m in Sources */,
|
||||
@@ -1186,12 +1234,15 @@
|
||||
B6152B5B25F5B57E00605E6E /* Media.m in Sources */,
|
||||
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */,
|
||||
B6152B5725F4549F00605E6E /* Slot.m in Sources */,
|
||||
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */,
|
||||
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */,
|
||||
B64AF1F7250ED5E400A09B9B /* TableCellView.m in Sources */,
|
||||
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */,
|
||||
B63005342666D6940014C381 /* BookmarkManager.m in Sources */,
|
||||
B615A9A026640A70001FBF99 /* SlotViewController.m in Sources */,
|
||||
B6665C15265A0E3E00254939 /* AutocompleteControl.m in Sources */,
|
||||
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */,
|
||||
B6F7B53D267017A200624C6B /* NewMachineViewController.m in Sources */,
|
||||
B635C09F26784D4700B23BFD /* AmpleLite.m in Sources */,
|
||||
B66D0FE82611386C000902F1 /* SoftwareList.m in Sources */,
|
||||
B6E4B5B624FDE2670094A35C /* LogWindowController.m in Sources */,
|
||||
B6E4B5B724FDE2670094A35C /* PreferencesWindowController.m in Sources */,
|
||||
@@ -1202,14 +1253,6 @@
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
B61099E324F5F230005CB652 /* SlotView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B61099E424F5F230005CB652 /* Base */,
|
||||
);
|
||||
name = SlotView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B61099E524F5F230005CB652 /* MediaView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@@ -1274,12 +1317,20 @@
|
||||
name = LaunchWindow.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6E9A18125088B36005E7525 /* NewSlotView.xib */ = {
|
||||
B6E9A18125088B36005E7525 /* SlotView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B6E9A18225088B36005E7525 /* Base */,
|
||||
);
|
||||
name = NewSlotView.xib;
|
||||
name = SlotView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6F7B536266FDA5B00624C6B /* MachineView.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B6F7B537266FDA5B00624C6B /* Base */,
|
||||
);
|
||||
name = MachineView.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
@@ -1289,7 +1340,9 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = pty_shell/pty_shell.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INSTALL_PATH = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1299,7 +1352,9 @@
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = NO;
|
||||
CODE_SIGN_ENTITLEMENTS = pty_shell/pty_shell.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INSTALL_PATH = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1308,7 +1363,9 @@
|
||||
B6841BD5251EC913006A5C39 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = vmnet_helper/vmnet_helper.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INSTALL_PATH = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1317,7 +1374,9 @@
|
||||
B6841BD6251EC913006A5C39 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_ENTITLEMENTS = vmnet_helper/vmnet_helper.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INSTALL_PATH = "";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1373,7 +1432,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
@@ -1425,7 +1484,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.14;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = macosx;
|
||||
@@ -1439,14 +1498,18 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 14;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
CURRENT_PROJECT_VERSION = 16;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/embedded",
|
||||
);
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 0.232;
|
||||
MARKETING_VERSION = 0.233;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ksherlock.ample;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1459,14 +1522,18 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 14;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
CURRENT_PROJECT_VERSION = 16;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/embedded",
|
||||
);
|
||||
INFOPLIST_FILE = Ample/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/../Frameworks",
|
||||
);
|
||||
MARKETING_VERSION = 0.232;
|
||||
MARKETING_VERSION = 0.233;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ksherlock.ample;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<false/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>com.apple.security.files.user-selected.read-only</key>
|
||||
<true/>
|
||||
</dict>
|
||||
|
||||
@@ -40,4 +40,13 @@ extern NSString *kDownloadExtension;
|
||||
extern NSString *kDefaultDownloadURL;
|
||||
extern NSString *kDefaultDownloadExtension;
|
||||
|
||||
|
||||
@protocol Bookmark <NSObject>
|
||||
-(BOOL)loadBookmark: (NSDictionary *)bookmark;
|
||||
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark;
|
||||
|
||||
-(void)willLoadBookmark: (NSDictionary *)bookmark;
|
||||
-(void)didLoadBookmark: (NSDictionary *)bookmark;
|
||||
@end
|
||||
|
||||
#endif /* Ample_h */
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// AmpleLite.m
|
||||
// Ample Lite
|
||||
//
|
||||
// Created by Kelvin Sherlock on 6/14/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class NSMenuItem;
|
||||
|
||||
@interface SUUpdater : NSObject
|
||||
@end
|
||||
|
||||
@implementation SUUpdater
|
||||
|
||||
- (IBAction)checkForUpdates:(id)sender {
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
||||
return NO;
|
||||
}
|
||||
|
||||
@end
|
||||
+13
-3
@@ -13,6 +13,7 @@
|
||||
#import "DiskImagesWindowController.h"
|
||||
#import "CheatSheetWindowController.h"
|
||||
#import "Transformers.h"
|
||||
#import "BookmarkManager.h"
|
||||
|
||||
#import "LogWindowController.h"
|
||||
|
||||
@@ -40,6 +41,10 @@
|
||||
|
||||
RegisterTransformers();
|
||||
|
||||
BookmarkManager *bm = [BookmarkManager sharedManager];
|
||||
[bm loadBookmarks];
|
||||
[bm updateMenu];
|
||||
|
||||
path = [bundle pathForResource: @"Defaults" ofType: @"plist"];
|
||||
dict = [NSDictionary dictionaryWithContentsOfFile: path];
|
||||
|
||||
@@ -96,10 +101,15 @@
|
||||
@"xfz",
|
||||
path
|
||||
];
|
||||
[task setExecutableURL: [NSURL fileURLWithPath: @"/usr/bin/tar"]];
|
||||
if (@available(macOS 10.13, *)) {
|
||||
[task setExecutableURL: [NSURL fileURLWithPath: @"/usr/bin/tar"]];
|
||||
[task setCurrentDirectoryURL: sd];
|
||||
} else {
|
||||
[task setLaunchPath: @"/usr/bin/tar"];
|
||||
[task setCurrentDirectoryPath: SupportDirectoryPath()];
|
||||
}
|
||||
[task setArguments: argv];
|
||||
[task setCurrentDirectoryURL: sd];
|
||||
|
||||
|
||||
|
||||
dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC));
|
||||
[task setTerminationHandler: ^(NSTask *task){
|
||||
|
||||
+76
-13
@@ -32,6 +32,10 @@ Todo --
|
||||
@property (weak) AutocompleteControl *parent;
|
||||
|
||||
-(void)reset;
|
||||
-(void)reset: (id<AutocompleteItem>)value;
|
||||
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items;
|
||||
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items value: (id<AutocompleteItem>)value;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -96,27 +100,37 @@ Todo --
|
||||
}
|
||||
|
||||
-(void)setStringValue:(NSString *)stringValue {
|
||||
[super setStringValue: stringValue];
|
||||
if (_value && [[_value menuTitle] isEqualToString: stringValue] == NO)
|
||||
[super setStringValue: stringValue ? stringValue : @""];
|
||||
if (_value && [[_value menuTitle] isEqualToString: stringValue] == NO) {
|
||||
// post change notification?
|
||||
_value = nil;
|
||||
[_menuView reset];
|
||||
}
|
||||
|
||||
[self fixTextColor: _editing];
|
||||
// todo -- search for a matching item, update text color.
|
||||
}
|
||||
|
||||
// todo -- _menuView has second copy of value, need to update that.
|
||||
-(void)setObjectValue:(id)objectValue {
|
||||
if (_value == objectValue) return;
|
||||
if (![objectValue conformsToProtocol: @protocol(AutocompleteItem)]) {
|
||||
_value = nil;
|
||||
[_menuView reset];
|
||||
[super setStringValue: @""];
|
||||
[self fixTextColor: _editing];
|
||||
return;
|
||||
}
|
||||
_value = objectValue;
|
||||
if (!_value) [super setStringValue: @""]; //
|
||||
else {
|
||||
[super setStringValue: [_value menuTitle]];
|
||||
NSArray *array = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
|
||||
[_menuView setItems: array];
|
||||
[_menuView reset: _value];
|
||||
// TODO -- menu view currently uses text search.
|
||||
//NSArray *array = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
|
||||
//[_menuView setItems: array value: _value];
|
||||
}
|
||||
[self fixTextColor: NO];
|
||||
}
|
||||
|
||||
-(BOOL)valid {
|
||||
@@ -377,6 +391,23 @@ Todo --
|
||||
return YES;
|
||||
}
|
||||
|
||||
if (commandSelector == @selector(scrollPageDown:)) {
|
||||
if ([_panel isVisible]) {
|
||||
[_menuView scrollPageDown: textView];
|
||||
} else {
|
||||
[self updateSuggestions];
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
if (commandSelector == @selector(scrollPageUp:)) {
|
||||
if ([_panel isVisible]) {
|
||||
[_menuView scrollPageUp: textView];
|
||||
} else {
|
||||
[self updateSuggestions];
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
//NSLog(@"%@", NSStringFromSelector(commandSelector));
|
||||
return NO;
|
||||
}
|
||||
@@ -411,8 +442,11 @@ Todo --
|
||||
|
||||
-(void)_init {
|
||||
_backgroundColor = [NSColor windowBackgroundColor];
|
||||
_selectedColor = [NSColor selectedContentBackgroundColor];
|
||||
|
||||
if (@available(macOS 10.14, *)) {
|
||||
_selectedColor = [NSColor selectedContentBackgroundColor];
|
||||
} else {
|
||||
_selectedColor = [NSColor selectedTextBackgroundColor];
|
||||
}
|
||||
NSTrackingAreaOptions options = NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveInActiveApp;
|
||||
_trackingArea = [[NSTrackingArea alloc] initWithRect: NSZeroRect
|
||||
options: options
|
||||
@@ -465,14 +499,24 @@ static CGFloat HeightForItems(NSUInteger count) {
|
||||
_items = nil;
|
||||
}
|
||||
|
||||
-(void)setItems:(NSArray *)items {
|
||||
if (_items == items) return;
|
||||
-(void)reset: (id<AutocompleteItem>)value {
|
||||
[self invalidateRow: _index];
|
||||
_index = -1;
|
||||
_items = nil;
|
||||
_value = value;
|
||||
}
|
||||
|
||||
-(void)setItems:(NSArray *)items value: (id<AutocompleteItem> )value {
|
||||
if (_items == items && _value == value) return;
|
||||
_items = [items copy];
|
||||
_index = -1;
|
||||
_count = [items count];
|
||||
|
||||
_value = value;
|
||||
|
||||
if (!_items) return;
|
||||
if (!_items) {
|
||||
_value = nil;
|
||||
return;
|
||||
}
|
||||
|
||||
// also check enabled status....
|
||||
if (_value) {
|
||||
@@ -499,8 +543,6 @@ static CGFloat HeightForItems(NSUInteger count) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
NSInteger displayCount = MIN(_count, MAX_DISPLAY_ITEMS);
|
||||
CGFloat newHeight = HeightForItems(displayCount) + 8 ; // 4px top/bottom
|
||||
NSWindow *window = [self window];
|
||||
@@ -536,6 +578,14 @@ static CGFloat HeightForItems(NSUInteger count) {
|
||||
//NSLog(@"%@", NSStringFromRect(wFrame));
|
||||
}
|
||||
|
||||
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items {
|
||||
|
||||
if (_items == items) return;
|
||||
[self setItems: items value: _value];
|
||||
}
|
||||
|
||||
|
||||
|
||||
-(id<AutocompleteItem>)itemAtPoint: (NSPoint)point indexPtr: (NSInteger *)indexPtr {
|
||||
|
||||
NSInteger index = floor(point.y / MENU_HEIGHT);
|
||||
@@ -633,6 +683,18 @@ enum {
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
}
|
||||
|
||||
-(void)scrollPageUp:(id)sender {
|
||||
if (_count == 0 || _index <= 0) return;
|
||||
|
||||
|
||||
}
|
||||
|
||||
-(void)scrollPageDown:(id)sender {
|
||||
if (_count == 0 || _index == _count - 1) return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
-(void)insertNewline:(id)sender {
|
||||
if (_value) {
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
@@ -800,7 +862,8 @@ static void DrawString(NSString *str, NSDictionary *attr, CGRect rect) {
|
||||
|
||||
|
||||
-(void)drawRect:(NSRect)dirtyRect {
|
||||
[[NSColor windowBackgroundColor] set];
|
||||
//[[NSColor windowBackgroundColor] set];
|
||||
[[NSColor clearColor] set];
|
||||
NSRectFill(dirtyRect);
|
||||
[self drawKnob];
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="OYW-cj-FD5" customClass="ACPanel">
|
||||
<windowStyleMask key="styleMask" titled="YES" utility="YES" nonactivatingPanel="YES" fullSizeContentView="YES"/>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="OYW-cj-FD5" customClass="ACPanel">
|
||||
<windowStyleMask key="styleMask" utility="YES" nonactivatingPanel="YES" fullSizeContentView="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="272" y="172" width="300" height="400"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<plugIn identifier="com.apple.WebKit2IBPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="CheatSheetWindowController">
|
||||
<connections>
|
||||
<outlet property="_webView" destination="Yc9-xA-jWX" id="rsd-1e-HPk"/>
|
||||
<outlet property="webView" destination="Yc9-xA-jWX" id="EE3-gk-f71"/>
|
||||
<outlet property="window" destination="QvC-M9-y7g" id="U2v-sN-OzH"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
@@ -23,19 +19,6 @@
|
||||
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="640" height="640"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<wkWebView hidden="YES" wantsLayer="YES" fixedFrame="YES" allowsLinkPreview="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yc9-xA-jWX">
|
||||
<rect key="frame" x="0.0" y="0.0" width="640" height="640"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<wkWebViewConfiguration key="configuration">
|
||||
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
|
||||
<wkPreferences key="preferences" javaScriptCanOpenWindowsAutomatically="NO"/>
|
||||
</wkWebViewConfiguration>
|
||||
<connections>
|
||||
<outlet property="navigationDelegate" destination="-2" id="1WW-1B-FdZ"/>
|
||||
</connections>
|
||||
</wkWebView>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="u4H-aq-RE2"/>
|
||||
|
||||
@@ -33,6 +33,15 @@ Please note that MAME is a registered trademark of Gregory Ember, and permission
|
||||
\cf0 \cb1 \kerning1\expnd0\expndtw0 SDL 2.0 is distributed under the {\field{\*\fldinst{HYPERLINK "https://libsdl.org/license.php"}}{\fldrslt zlib license}}. This license allows you to use SDL freely in any software.\
|
||||
\
|
||||
\pard\pardeftab720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://sparkle-project.org/"}}{\fldrslt
|
||||
\f0\b\fs36 \cf0 \cb3 \expnd0\expndtw0\kerning0
|
||||
Sparkle}}\
|
||||
\pard\pardeftab720\partightenfactor0
|
||||
\cf0 \
|
||||
Sparkle is open source software available under the permissive MIT license, and is developed on GitHub by the Sparkle Project with the help of dozens of valued contributors.\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
|
||||
\cf0 \
|
||||
\pard\pardeftab720\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://usdawatercolors.nal.usda.gov/pom/catalog.xhtml?id=POM00001916"}}{\fldrslt
|
||||
\f0\b\fs36 \cf0 \cb3 \expnd0\expndtw0\kerning0
|
||||
Icon}}
|
||||
@@ -42,6 +51,6 @@ Icon}}
|
||||
|
||||
\f1\b0\fs28 \cf0 \
|
||||
\pard\pardeftab720\qj\partightenfactor0
|
||||
\cf4 \cb3 R.C. Steadman, 6-1-\'9221.\
|
||||
\cf4 R.C. Steadman, 6-1-\'9221.\
|
||||
\
|
||||
U.S. Department of Agriculture Pomological Watercolor Collection. Rare and Special Collections, National Agricultural Library, Beltsville, MD 20705}
|
||||
@@ -27,15 +27,15 @@
|
||||
<scrollView focusRingType="none" fixedFrame="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" findBarPosition="belowContent" translatesAutoresizingMaskIntoConstraints="NO" id="ivr-XT-BPS">
|
||||
<rect key="frame" x="-1" y="-1" width="302" height="402"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" ambiguous="YES" copiesOnScroll="NO" id="1jn-uc-06s">
|
||||
<clipView key="contentView" ambiguous="YES" drawsBackground="NO" copiesOnScroll="NO" id="1jn-uc-06s">
|
||||
<rect key="frame" x="0.0" y="0.0" width="302" height="402"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" id="J5l-1d-030">
|
||||
<tableView focusRingType="none" verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" id="J5l-1d-030">
|
||||
<rect key="frame" x="0.0" y="0.0" width="302" height="402"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="282" minWidth="40" maxWidth="1000" id="1rF-M3-pYV">
|
||||
|
||||
@@ -8,8 +8,11 @@
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="DownloadWindowController">
|
||||
<connections>
|
||||
<outlet property="allFilterButton" destination="Kgj-LP-FsF" id="yub-s9-RVW"/>
|
||||
<outlet property="arrayController" destination="jhO-4z-Qwt" id="GHu-xb-4zU"/>
|
||||
<outlet property="downloadField" destination="sJz-So-jbA" id="WjK-48-FcE"/>
|
||||
<outlet property="formatButton" destination="2Rg-eX-DUq" id="oYo-MG-Sc6"/>
|
||||
<outlet property="missingFilterButton" destination="6c7-tU-3F3" id="89Y-wQ-9pB"/>
|
||||
<outlet property="tableView" destination="FLX-Wt-y53" id="a4O-pk-EAt"/>
|
||||
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
|
||||
</connections>
|
||||
@@ -18,45 +21,29 @@
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="ROMs" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="DownloadManagerWindow" animationBehavior="default" id="F0z-JX-Cv5">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="400" height="575"/>
|
||||
<rect key="contentRect" x="196" y="240" width="454" height="575"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<value key="minSize" type="size" width="300" height="300"/>
|
||||
<value key="minSize" type="size" width="454" height="300"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="575"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="454" height="575"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rg5-Qf-4Mw">
|
||||
<rect key="frame" x="324" y="19" width="56" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="i6Z-OM-lqE">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent">.</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<connections>
|
||||
<binding destination="-2" name="enabled" keyPath="self.active" id="mBP-8S-yGB"/>
|
||||
</connections>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancelAll:" target="-2" id="ycl-eJ-ByB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="51" horizontalPageScroll="10" verticalLineScroll="51" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CMD-nT-mEa">
|
||||
<rect key="frame" x="0.0" y="130" width="402" height="446"/>
|
||||
<rect key="frame" x="0.0" y="130" width="456" height="446"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" ambiguous="YES" drawsBackground="NO" id="Igp-aH-flp">
|
||||
<rect key="frame" x="1" y="1" width="400" height="444"/>
|
||||
<rect key="frame" x="1" y="1" width="454" height="444"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="49" rowSizeStyle="automatic" viewBased="YES" id="FLX-Wt-y53">
|
||||
<rect key="frame" x="0.0" y="0.0" width="400" height="444"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="454" height="444"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableViewGridLines key="gridStyleMask" dashed="YES"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="397" minWidth="40" maxWidth="1000" id="5jP-bY-fhI">
|
||||
<tableColumn width="451" minWidth="40" maxWidth="1000" id="5jP-bY-fhI">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -69,63 +56,67 @@
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="Cell" focusRingType="none" id="aBv-F5-XWo">
|
||||
<rect key="frame" x="1" y="1" width="397" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pWm-hb-BXB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="397" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="p71-gJ-vFV">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="pWm-hb-BXB" id="NNG-rj-AAQ"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="DownloadCell" focusRingType="none" id="onK-6l-2iV" customClass="DownloadTableCellView">
|
||||
<rect key="frame" x="1" y="20" width="397" height="49"/>
|
||||
<tableCellView focusRingType="none" id="onK-6l-2iV">
|
||||
<rect key="frame" x="1" y="1" width="451" height="49"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A44-us-TEl">
|
||||
<rect key="frame" x="25" y="28" width="371" height="17"/>
|
||||
<rect key="frame" x="25" y="28" width="425" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="NSU-6I-nsG">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="onK-6l-2iV" name="value" keyPath="objectValue.name" id="t1L-kM-AW6">
|
||||
<dictionary key="options">
|
||||
<string key="NSMultipleValuesPlaceholder">multiple</string>
|
||||
<string key="NSNoSelectionPlaceholder">no selection</string>
|
||||
<string key="NSNotApplicablePlaceholder">n/a</string>
|
||||
<string key="NSNullPlaceholder">null</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<binding destination="onK-6l-2iV" name="textColor" keyPath="objectValue.titleColor" id="0Qx-rz-DEZ"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<progressIndicator wantsLayer="YES" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="jBN-UJ-tWi">
|
||||
<rect key="frame" x="3" y="29" width="16" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<connections>
|
||||
<binding destination="onK-6l-2iV" name="animate" keyPath="objectValue.task" id="d22-JL-3Z7">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNotNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hfu-hP-QAH">
|
||||
<rect key="frame" x="25" y="3" width="371" height="17"/>
|
||||
<rect key="frame" x="25" y="3" width="425" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="1cQ-Zh-q0o">
|
||||
<font key="font" metaFont="system" size="10"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="onK-6l-2iV" name="textColor" keyPath="objectValue.descriptionColor" id="KVi-3N-Swm"/>
|
||||
<binding destination="onK-6l-2iV" name="value" keyPath="objectValue.statusDescription" id="yV1-5r-YDh"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="activity" destination="jBN-UJ-tWi" id="ZwD-yU-Vne"/>
|
||||
<outlet property="statusTextField" destination="hfu-hP-QAH" id="8Hv-BB-kYA"/>
|
||||
<outlet property="textField" destination="A44-us-TEl" id="Ta5-nd-ed1"/>
|
||||
<outlet property="textField" destination="A44-us-TEl" id="ude-er-Gm4"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
<connections>
|
||||
<binding destination="jhO-4z-Qwt" name="value" keyPath="arrangedObjects.selection" id="KQP-Xo-Fbf"/>
|
||||
</connections>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="Ghf-k9-bRK"/>
|
||||
<outlet property="delegate" destination="-2" id="rpR-0W-4Nu"/>
|
||||
<binding destination="jhO-4z-Qwt" name="content" keyPath="arrangedObjects" id="2av-gV-V4K"/>
|
||||
<outlet property="menu" destination="RJM-21-hjO" id="xpL-0n-1jm"/>
|
||||
</connections>
|
||||
</tableView>
|
||||
@@ -142,7 +133,7 @@
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sJz-So-jbA">
|
||||
<rect key="frame" x="51" y="101" width="329" height="21"/>
|
||||
<rect key="frame" x="51" y="101" width="383" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="HKe-di-YSs">
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -154,9 +145,9 @@
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fhd-vr-Q2G">
|
||||
<rect key="frame" x="192" y="18" width="124" height="23"/>
|
||||
<rect key="frame" x="208" y="13" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Download Missing" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="AKx-eg-iLS">
|
||||
<buttonCell key="cell" type="push" title="Download Missing" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="AKx-eg-iLS">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -188,13 +179,13 @@
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="AuM-pD-Gul">
|
||||
<rect key="frame" x="12" y="52" width="368" height="5"/>
|
||||
<rect key="frame" x="12" y="52" width="422" height="5"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
</box>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" imageHugsTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dpY-qZ-2Nk">
|
||||
<rect key="frame" x="90" y="13" width="100" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="ROMs" bezelStyle="rounded" image="NSFolder" imagePosition="leading" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="E0t-sX-rgE">
|
||||
<rect key="frame" x="93" y="13" width="115" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="ROMs" bezelStyle="rounded" image="NSFolder" imagePosition="left" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="E0t-sX-rgE">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
@@ -204,7 +195,7 @@
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lnv-mh-zAr">
|
||||
<rect key="frame" x="6" y="13" width="87" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="mYS-h7-GUa">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
@@ -237,12 +228,66 @@
|
||||
</binding>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rg5-Qf-4Mw">
|
||||
<rect key="frame" x="358" y="13" width="82" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="i6Z-OM-lqE">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent">.</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<connections>
|
||||
<binding destination="-2" name="enabled" keyPath="self.active" id="mBP-8S-yGB"/>
|
||||
</connections>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancelAll:" target="-2" id="ycl-eJ-ByB"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<toolbar key="toolbar" implicitIdentifier="B60021E6-BFBC-44E6-97DC-120AA9FD3269" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="kpz-W4-xgh">
|
||||
<allowedToolbarItems>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="tbY-ts-Irb"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="3Kc-zG-IdN"/>
|
||||
<toolbarItem implicitItemIdentifier="BD743A15-0B61-48FF-9EED-FD8D57EF8459" label="All" paletteLabel="All" tag="1" sizingBehavior="auto" id="Jj0-n8-I5a">
|
||||
<nil key="toolTip"/>
|
||||
<button key="view" verticalHuggingPriority="750" tag="1" id="Kgj-LP-FsF">
|
||||
<rect key="frame" x="0.0" y="14" width="74" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="recessed" title="All" bezelStyle="recessed" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="9s7-S1-hW1">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="systemBold" size="12"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="filterButton:" target="-2" id="gTc-Ul-FYR"/>
|
||||
</connections>
|
||||
</button>
|
||||
</toolbarItem>
|
||||
<toolbarItem implicitItemIdentifier="5B013840-E582-4568-8448-DDD7EE1E5AE2" label="Missing" paletteLabel="Missing" tag="2" sizingBehavior="auto" id="GV4-aX-5Ox">
|
||||
<nil key="toolTip"/>
|
||||
<button key="view" verticalHuggingPriority="750" tag="2" id="6c7-tU-3F3">
|
||||
<rect key="frame" x="0.0" y="14" width="74" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="recessed" title="Missing" bezelStyle="recessed" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ui2-dz-IZj">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="systemBold" size="12"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="filterButton:" target="-2" id="R6W-hU-oqL"/>
|
||||
</connections>
|
||||
</button>
|
||||
</toolbarItem>
|
||||
</allowedToolbarItems>
|
||||
<defaultToolbarItems>
|
||||
<toolbarItem reference="Jj0-n8-I5a"/>
|
||||
<toolbarItem reference="GV4-aX-5Ox"/>
|
||||
</defaultToolbarItems>
|
||||
</toolbar>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="32" y="119.5"/>
|
||||
<point key="canvasLocation" x="59" y="119.5"/>
|
||||
</window>
|
||||
<menu id="RJM-21-hjO">
|
||||
<items>
|
||||
@@ -270,6 +315,7 @@
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-348" y="164"/>
|
||||
</menu>
|
||||
<arrayController objectClassName="DownloadItem" editable="NO" preservesSelection="NO" selectsInsertedObjects="NO" avoidsEmptySelection="NO" clearsFilterPredicateOnInsertion="NO" automaticallyRearrangesObjects="YES" id="jhO-4z-Qwt" customClass="DownloadItemArrayController"/>
|
||||
<userDefaultsController representsSharedInstance="YES" id="721-9N-Bma"/>
|
||||
</objects>
|
||||
<resources>
|
||||
|
||||
@@ -8,8 +8,10 @@
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="LaunchWindowController">
|
||||
<connections>
|
||||
<outlet property="addBookmarkWindow" destination="yIt-hP-HBq" id="Qhx-WV-cg4"/>
|
||||
<outlet property="bookmarkTextField" destination="fAl-Vn-x1w" id="GNr-j6-BiQ"/>
|
||||
<outlet property="machineView" destination="oVt-eD-aaj" id="Q9V-Kr-6GN"/>
|
||||
<outlet property="machineViewController" destination="RgH-d9-xl8" id="DIa-h0-6y2"/>
|
||||
<outlet property="machineViewController" destination="FSD-3v-Wni" id="tXv-zJ-QO3"/>
|
||||
<outlet property="mediaController" destination="t7c-zy-czN" id="a7d-HC-TWx"/>
|
||||
<outlet property="mediaView" destination="J9O-xI-P5J" id="PmZ-VC-4SN"/>
|
||||
<outlet property="slotController" destination="lyS-mc-3Tf" id="LXo-Ii-fDX"/>
|
||||
@@ -22,51 +24,19 @@
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Ample" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="LaunchWindow" animationBehavior="default" id="Vze-YF-m6e">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="335" y="390" width="718" height="795"/>
|
||||
<rect key="contentRect" x="335" y="390" width="1000" height="640"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="Ssv-Jw-EE0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="795"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1000" height="640"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oVt-eD-aaj">
|
||||
<rect key="frame" x="0.0" y="615" width="718" height="180"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nKp-px-nHg">
|
||||
<rect key="frame" x="588.5" y="58" width="111" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Launch" bezelStyle="texturedRounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="launchAction:" target="-2" id="a4d-zv-1CU"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nNO-3T-OAy">
|
||||
<rect key="frame" x="470.5" y="58" width="109" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Reset Slots" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uii-5h-2R2">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent">r</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="resetSlots:" target="lyS-mc-3Tf" id="1qi-N0-Q8B"/>
|
||||
</connections>
|
||||
</button>
|
||||
<customView id="P9d-sS-qEb" customClass="FlippedView">
|
||||
<rect key="frame" x="20" y="92" width="316" height="363"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="302" y="105" width="316" height="363"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<tabView initialItem="zUN-Qs-haG" id="l8R-bg-6Zm">
|
||||
<rect key="frame" x="13" y="453" width="692" height="160"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="295" y="466" width="692" height="160"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<tabViewItems>
|
||||
<tabViewItem label="Video" identifier="" id="zUN-Qs-haG">
|
||||
@@ -123,7 +93,7 @@ DQ
|
||||
</connections>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hM8-FM-Agh">
|
||||
<rect key="frame" x="382" y="87" width="172" height="25"/>
|
||||
<rect key="frame" x="382" y="87" width="174" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Dsm-bi-Txy" id="mBS-h4-BWC">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
@@ -239,7 +209,7 @@ DQ
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PGK-yK-2ZK">
|
||||
<rect key="frame" x="15" y="91" width="43" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Speed" id="D9w-Mz-PXs">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -247,7 +217,7 @@ DQ
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FE4-gG-fPb">
|
||||
<rect key="frame" x="62" y="86" width="107" height="25"/>
|
||||
<rect key="frame" x="62" y="86" width="109" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="100%" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" tag="1" imageScaling="proportionallyDown" inset="2" selectedItem="yoI-Ra-evu" id="M40-f0-awc">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
@@ -300,7 +270,7 @@ DQ
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Yf-ZJ-8kx">
|
||||
<rect key="frame" x="132" y="59" width="523" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.wav" drawsBackground="YES" id="Xqc-zw-28b">
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.wav" drawsBackground="YES" usesSingleLineMode="YES" id="Xqc-zw-28b">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -317,7 +287,7 @@ DQ
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ne8-5I-D1H">
|
||||
<rect key="frame" x="132" y="28" width="523" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.vgm" drawsBackground="YES" id="xGs-Mi-wzj">
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.vgm" drawsBackground="YES" usesSingleLineMode="YES" id="xGs-Mi-wzj">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -342,7 +312,7 @@ DQ
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Xht-PS-Hw8">
|
||||
<rect key="frame" x="132" y="90" width="523" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.avi" drawsBackground="YES" id="iY4-FF-x2e">
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.avi" drawsBackground="YES" usesSingleLineMode="YES" id="iY4-FF-x2e">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -370,26 +340,69 @@ DQ
|
||||
</subviews>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="Paths" identifier="" id="PVN-Iw-nYG">
|
||||
<view key="view" id="5qP-bQ-Id6">
|
||||
<rect key="frame" x="10" y="33" width="672" height="114"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VDW-FX-9az">
|
||||
<rect key="frame" x="132" y="90" width="523" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/directory/" drawsBackground="YES" usesSingleLineMode="YES" id="ykl-aj-n1L">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="-2" name="enabled" keyPath="self.mameShareDirectory" id="bPv-hU-XgK"/>
|
||||
<binding destination="-2" name="value" keyPath="self.mameShareDirectoryPath" id="ddj-BN-tsY">
|
||||
<dictionary key="options">
|
||||
<string key="NSNullPlaceholder">/path/to/directory/</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1fA-nr-wns">
|
||||
<rect key="frame" x="15" y="91" width="117" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Share Directory" bezelStyle="regularSquare" imagePosition="left" inset="2" id="xmA-1v-wU7">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="-2" name="value" keyPath="self.mameShareDirectory" id="x3D-ho-u4v"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
</tabViewItems>
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine" id="odt-eJ-VrX">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</tabView>
|
||||
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J9O-xI-P5J" customClass="FlippedView">
|
||||
<rect key="frame" x="382" y="92" width="316" height="331"/>
|
||||
<rect key="frame" x="664" y="107" width="316" height="331"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" horizontalScrollElasticity="none" id="2ue-XT-byh">
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="eSY-AU-tvi">
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textView focusRingType="none" editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="c0R-8x-RL2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="718" height="51"/>
|
||||
<size key="maxSize" width="718" height="10000000"/>
|
||||
<size key="minSize" width="1001" height="69"/>
|
||||
<size key="maxSize" width="1001" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
<binding destination="-2" name="value" keyPath="self.commandLine" id="deQ-gK-fgu">
|
||||
@@ -411,8 +424,8 @@ DQ
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" id="pNl-g4-ZLh" customClass="AutocompleteControl">
|
||||
<rect key="frame" x="382" y="431" width="316" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="664" y="446" width="316" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" placeholderString="Software List" usesSingleLineMode="YES" bezelStyle="round" id="sMi-a3-XEn">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
@@ -420,15 +433,199 @@ DQ
|
||||
</searchFieldCell>
|
||||
<connections>
|
||||
<action selector="softwareChanged:" target="-2" id="879-da-UEc"/>
|
||||
<binding destination="-2" name="hidden" keyPath="machine" id="RdE-9k-oFd">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</searchField>
|
||||
<customView id="oVt-eD-aaj" customClass="FlippedView">
|
||||
<rect key="frame" x="0.0" y="69" width="294" height="571"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</customView>
|
||||
<box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="UwI-q9-hEm">
|
||||
<rect key="frame" x="0.0" y="67" width="1000" height="5"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
</box>
|
||||
<box horizontalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="xjH-Gv-MHt">
|
||||
<rect key="frame" x="291" y="69" width="5" height="571"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
|
||||
</box>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nKp-px-nHg">
|
||||
<rect key="frame" x="869.5" y="76" width="111" height="23"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="roundTextured" title="Launch" bezelStyle="texturedRounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="launchAction:" target="-2" id="a4d-zv-1CU"/>
|
||||
<binding destination="-2" name="hidden" keyPath="machine" id="8Ks-FY-Tmk">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="769" y="120.5"/>
|
||||
<toolbar key="toolbar" implicitIdentifier="ACA8EE70-5505-4CFD-9F78-7A480D93260B" autosavesConfiguration="NO" allowsUserCustomization="NO" prefersToBeShown="NO" displayMode="iconAndLabel" sizeMode="regular" id="b3J-Bx-3nk">
|
||||
<allowedToolbarItems>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarShowColorsItem" id="uHd-dY-alN"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarShowFontsItem" id="WEM-Gw-Utx"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarPrintItem" id="RCG-fn-6Ue"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="BRc-Qf-FCk"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="Dtt-KT-5NO"/>
|
||||
</allowedToolbarItems>
|
||||
<defaultToolbarItems/>
|
||||
</toolbar>
|
||||
<connections>
|
||||
<outlet property="menu" destination="Aa5-Sk-gZX" id="Sj0-0o-oZb"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="590" y="40"/>
|
||||
</window>
|
||||
<viewController title="Media View" nibName="MediaView" id="t7c-zy-czN" customClass="MediaViewController"/>
|
||||
<viewController title="Slot View" nibName="NewSlotView" id="lyS-mc-3Tf" customClass="NewSlotViewController"/>
|
||||
<customObject id="RgH-d9-xl8" customClass="MachineViewController"/>
|
||||
<viewController title="Slot View" nibName="SlotView" id="lyS-mc-3Tf" customClass="SlotViewController"/>
|
||||
<window title="Add Bookmark" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="yIt-hP-HBq">
|
||||
<windowStyleMask key="styleMask" titled="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="196" y="240" width="462" height="116"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" wantsLayer="YES" id="WVd-g4-Tbl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="462" height="116"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gho-Xy-rn4">
|
||||
<rect key="frame" x="358" y="13" width="90" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxo-rD-aMe">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="bookmarkSave:" target="-2" id="wLF-LE-5RO"/>
|
||||
<binding destination="-2" name="enabled" keyPath="bookmarkName" id="U5R-gU-1bE">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">StringNotEmptyTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3sv-Kd-Ep5">
|
||||
<rect key="frame" x="268" y="13" width="90" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jaa-RY-PAg">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="bookmarkCancel:" target="-2" id="uWM-vs-hz7"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1fO-x7-Gft">
|
||||
<rect key="frame" x="18" y="80" width="103" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Add Bookmark…" id="AZS-JR-SNt">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fAl-Vn-x1w">
|
||||
<rect key="frame" x="20" y="49" width="422" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="bookmark name" drawsBackground="YES" id="Enq-2z-cle">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="-2" name="value" keyPath="bookmarkName" id="84v-el-4Uk">
|
||||
<dictionary key="options">
|
||||
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
|
||||
<string key="NSNullPlaceholder">bookmark name</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="130" y="70"/>
|
||||
</window>
|
||||
<viewController nibName="MachineView" id="FSD-3v-Wni" customClass="NewMachineViewController"/>
|
||||
<menu id="Aa5-Sk-gZX">
|
||||
<items>
|
||||
<menuItem title="Launch" image="NSAppleMenuImage" id="OSH-7C-D6z">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="launchAction:" target="-2" id="ZY2-He-VyK"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="Iti-F9-p35"/>
|
||||
<menuItem title="List Media…" id="M5h-4W-0nV">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="listMedia:" target="-2" id="IO7-MG-zud"/>
|
||||
<binding destination="-2" name="hidden" keyPath="optionKey" id="LhL-2l-iss">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="List Slots…" id="cNj-Sb-KkE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="listSlots:" target="-2" id="3nb-mV-eUK"/>
|
||||
<binding destination="-2" name="hidden" keyPath="optionKey" id="dwp-Kn-LfC">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSNegateBoolean</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="yZx-W2-lZg"/>
|
||||
<menuItem title="Reset All" id="PQ0-yO-SKz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="resetAll:" target="-2" id="hF5-fl-bMr"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Reset Machine" id="1by-3B-LSd">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="resetMachine:" target="-2" id="7au-OM-Q88"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Reset Slots" id="ccx-xm-qeo">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="resetSlots:" target="lyS-mc-3Tf" id="39K-rS-u9D"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Reset Media" id="Opr-7k-fO1">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="resetMedia:" target="-2" id="n5j-1R-NJl"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="wqC-IG-63F"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-121" y="-2"/>
|
||||
</menu>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAppleMenuImage" width="11" height="14"/>
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NewMachineViewController">
|
||||
<connections>
|
||||
<outlet property="outlineView" destination="9V6-He-b8A" id="XeC-DJ-oXY"/>
|
||||
<outlet property="view" destination="t3T-qF-D0e" id="Svb-w7-hs9"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="t3T-qF-D0e">
|
||||
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" id="DyG-qq-uBF">
|
||||
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" autosaveName="machine-view" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autosaveExpandedItems="YES" outlineTableColumn="e67-js-boV" id="9V6-He-b8A">
|
||||
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="271" minWidth="16" maxWidth="1000" id="e67-js-boV">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="jZU-xV-PI4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="HeaderCell" id="2iF-4F-HfC">
|
||||
<rect key="frame" x="1" y="1" width="271" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9tU-X8-FZn">
|
||||
<rect key="frame" x="0.0" y="0.0" width="271" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="HEADER CELL" id="EUi-TS-vlq">
|
||||
<font key="font" metaFont="systemBold"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="2iF-4F-HfC" name="value" keyPath="objectValue.description" id="He3-9c-g9A"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="9tU-X8-FZn" id="p2B-eV-6bS"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="DataCell" id="7b4-T1-d29">
|
||||
<rect key="frame" x="1" y="20" width="271" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FkS-zP-pRB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="271" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="g6t-E7-0lM">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="7b4-T1-d29" name="value" keyPath="objectValue.description" id="kp8-ww-1aE"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="textField" destination="FkS-zP-pRB" id="JkE-pr-7px"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action selector="clickAction:" target="-2" id="O3p-cV-gwk"/>
|
||||
<outlet property="dataSource" destination="-2" id="nW2-qs-3w6"/>
|
||||
<outlet property="delegate" destination="-2" id="4Wc-Pe-v81"/>
|
||||
</connections>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
<nil key="backgroundColor"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="kig-a5-Ay0">
|
||||
<rect key="frame" x="-100" y="-100" width="238" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="lLp-pv-Fbj" customClass="TransparentScroller">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<point key="canvasLocation" x="-91" y="132"/>
|
||||
</scrollView>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -19,6 +19,12 @@
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
|
||||
<customObject id="sJn-ug-xF3" customClass="BookmarkManager">
|
||||
<connections>
|
||||
<outlet property="menu" destination="ha0-nx-PIl" id="vTa-TU-DS1"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="3aq-Tx-mno" customClass="SUUpdater"/>
|
||||
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
|
||||
<items>
|
||||
<menuItem title="Ample" id="1Xt-HY-uBw">
|
||||
@@ -31,6 +37,12 @@
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check for Updates…" id="CPy-r4-rzr">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="checkForUpdates:" target="3aq-Tx-mno" id="qJG-Nv-0Lu"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
|
||||
<connections>
|
||||
@@ -389,6 +401,34 @@
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Bookmarks" id="vHO-2e-qJc">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Bookmarks" id="ha0-nx-PIl">
|
||||
<items>
|
||||
<menuItem title="Add Bookmark…" keyEquivalent="d" id="1JF-xV-zmG">
|
||||
<connections>
|
||||
<action selector="addBookmark:" target="-1" id="cqp-ko-BfQ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Manage Bookmarks…" id="isI-q6-b1V">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Set Default" id="vbR-vS-lqO">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="defaultSave:" target="-1" id="FP9-EX-OKP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="gWR-Yl-mg6"/>
|
||||
<menuItem title="Default" id="mXC-Lp-gem">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="defaultLoad:" target="-1" id="ErS-k6-azP"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="aUF-d1-5bR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="25" horizontalPageScroll="10" verticalLineScroll="25" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="nVT-kT-bWl">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
|
||||
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" ambiguous="YES" copiesOnScroll="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IBD-wb-pch">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
|
||||
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" ambiguous="YES" drawsBackground="NO" copiesOnScroll="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IBD-wb-pch">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" outlineTableColumn="pBj-py-R6a" id="sIz-DD-PZQ">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="2" height="3"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
@@ -52,6 +52,9 @@
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<binding destination="33q-UT-ur5" name="value" keyPath="objectValue.title" id="JQR-UW-ifh"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
@@ -70,6 +73,8 @@
|
||||
</pathCell>
|
||||
<connections>
|
||||
<action selector="pathAction:" target="-2" id="4oX-bW-ANp"/>
|
||||
<binding destination="yGq-lc-RCM" name="enabled" keyPath="objectValue.valid" id="f8P-gt-vmK"/>
|
||||
<binding destination="yGq-lc-RCM" name="value" keyPath="objectValue.url" id="Ony-ph-VVo"/>
|
||||
</connections>
|
||||
</pathControl>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="6g1-NT-J1w">
|
||||
@@ -86,6 +91,7 @@
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="ejectAction:" target="-2" id="XAl-eQ-nUj"/>
|
||||
<binding destination="yGq-lc-RCM" name="enabled" keyPath="objectValue.occupied" id="4a4-L7-ztC"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
@@ -95,6 +101,51 @@
|
||||
<outlet property="pathControl" destination="f7R-TO-fmF" id="oH7-N3-JC7"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="BBItemView" id="2Nq-Xz-tkV" customClass="TablePathView">
|
||||
<rect key="frame" x="1" y="46" width="296" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="47E-Ef-Ott">
|
||||
<rect key="frame" x="0.0" y="1" width="20" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="left" image="drag-handle-4x10" id="vwE-Ev-NBf"/>
|
||||
</imageView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zxn-1E-o34" customClass="EjectButton">
|
||||
<rect key="frame" x="277" y="3" width="16" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="eject-16x16" imagePosition="only" alignment="center" alternateImage="eject-hover-16x16" imageScaling="proportionallyDown" inset="2" id="Os7-NH-tnx">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="ejectAction:" target="-2" id="uy2-92-9La"/>
|
||||
<binding destination="2Nq-Xz-tkV" name="enabled" keyPath="objectValue.occupied" id="SNi-sQ-J2W"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pNE-yJ-EK8">
|
||||
<rect key="frame" x="20" y="0.0" width="244" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="socket.address:port or /path/to/file" drawsBackground="YES" id="h2U-ig-Cms">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<connections>
|
||||
<action selector="textAction:" target="-2" id="lmX-t8-mEc"/>
|
||||
<binding destination="2Nq-Xz-tkV" name="enabled" keyPath="objectValue.valid" id="ZTM-E3-Y9P"/>
|
||||
<binding destination="2Nq-Xz-tkV" name="value" keyPath="objectValue.string" id="2dZ-JJ-asM">
|
||||
<dictionary key="options">
|
||||
<string key="NSNullPlaceholder">socket.address:port or /path/to/file</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="dragHandle" destination="47E-Ef-Ott" id="bnY-rz-24V"/>
|
||||
<outlet property="ejectButton" destination="zxn-1E-o34" id="eC6-Mf-tN6"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
|
||||
@@ -1,236 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NewSlotViewController">
|
||||
<connections>
|
||||
<outlet property="_popover" destination="QIT-2T-wdy" id="WUB-OS-kem"/>
|
||||
<outlet property="childOutlineView" destination="uM0-Gk-crn" id="aL5-uC-O28"/>
|
||||
<outlet property="outlineView" destination="Xj3-Qf-yek" id="AWE-Rg-XUM"/>
|
||||
<outlet property="view" destination="D45-lv-6Fv" id="av3-OE-ph2"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="D45-lv-6Fv">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" copiesOnScroll="NO" id="8x1-xN-a7c">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="2" autoresizesOutlineColumn="YES" outlineTableColumn="u7T-p8-F2Z" id="Xj3-Qf-yek">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn editable="NO" width="296" minWidth="40" maxWidth="1000" id="u7T-p8-F2Z">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="FM7-eO-FE4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MenuCell" id="1RI-9K-5qj" customClass="SlotTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="296" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qIF-d4-kOf">
|
||||
<rect key="frame" x="0.0" y="5" width="90" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="RAM:" id="tIz-xZ-ZJH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zQ8-o3-yBB">
|
||||
<rect key="frame" x="82" y="0.0" width="199" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="tGi-yg-GFr" id="gt4-HK-pd1">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" autoenablesItems="NO" id="KWV-nn-eiB">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="tGi-yg-GFr"/>
|
||||
<menuItem title="Item 2" id="XJr-Gb-4D4"/>
|
||||
<menuItem title="Item 3" id="JeB-Fb-DeQ"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="9MH-mu-u5V"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xCe-sY-sGe">
|
||||
<rect key="frame" x="282" y="8" width="14" height="10"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSListViewTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="0qU-ID-kJ8">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="hamburger:" target="-2" id="5Xa-j7-Aod"/>
|
||||
<binding destination="1RI-9K-5qj" name="hidden" keyPath="objectValue.selectedItem.children" id="rY2-0l-0N8">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="hamburgerButton" destination="xCe-sY-sGe" id="5Da-If-Bt4"/>
|
||||
<outlet property="menuButton" destination="zQ8-o3-yBB" id="zZf-nm-tCI"/>
|
||||
<outlet property="textField" destination="qIF-d4-kOf" id="zIF-4n-v1e"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="OV9-yE-OFp"/>
|
||||
<outlet property="delegate" destination="-2" id="kXs-TN-3VL"/>
|
||||
</connections>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="rYF-ld-adB">
|
||||
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="4pL-Dn-e75" customClass="TransparentScroller">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="backgroundColor">
|
||||
<color key="value" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</scroller>
|
||||
<point key="canvasLocation" x="-100" y="154"/>
|
||||
</scrollView>
|
||||
<viewController id="ziL-Zf-s1k" userLabel="Popover View Controller">
|
||||
<connections>
|
||||
<outlet property="view" destination="uew-UQ-Q25" id="qjB-ya-gFf"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<popover behavior="t" id="QIT-2T-wdy">
|
||||
<connections>
|
||||
<outlet property="contentViewController" destination="ziL-Zf-s1k" id="rj8-2U-9t0"/>
|
||||
</connections>
|
||||
</popover>
|
||||
<customView id="uew-UQ-Q25">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<button id="2jh-iq-DV6">
|
||||
<rect key="frame" x="232" y="382" width="14" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSStopProgressFreestandingTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Wp7-Km-kYI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="performClose:" target="QIT-2T-wdy" id="Q04-24-ZOK"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="5gB-oE-Gza">
|
||||
<rect key="frame" x="0.0" y="20" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="X5e-Ka-JLr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autoresizesOutlineColumn="YES" outlineTableColumn="o1K-z1-KVi" id="uM0-Gk-crn">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="230" minWidth="40" maxWidth="1000" id="o1K-z1-KVi">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="A12-NQ-gW3">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MenuCell" id="Mgb-8H-DmI" customClass="SlotTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="230" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ThL-Yz-7Kd">
|
||||
<rect key="frame" x="1" y="0.0" width="229" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="djR-rV-wzX" id="SkW-fW-gwL">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" autoenablesItems="NO" id="7Ib-TL-f6U">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="djR-rV-wzX"/>
|
||||
<menuItem title="Item 2" id="qbC-4D-6t6"/>
|
||||
<menuItem title="Item 3" id="qPv-x5-zpj"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="ytA-nD-fIS"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="menuButton" destination="ThL-Yz-7Kd" id="3Oc-hx-qKl"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="HXP-pH-3Lc"/>
|
||||
<outlet property="delegate" destination="-2" id="nwb-IL-MsP"/>
|
||||
</connections>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Keh-oo-CPO">
|
||||
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="wtc-gL-alh" customClass="TransparentScroller">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<point key="canvasLocation" x="-451" y="61"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSListViewTemplate" width="14" height="10"/>
|
||||
<image name="NSStopProgressFreestandingTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
+218
-614
@@ -8,625 +8,229 @@
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="SlotViewController">
|
||||
<connections>
|
||||
<outlet property="aux_menu" destination="3kq-qn-7YR" id="wic-Ry-yAf"/>
|
||||
<outlet property="exp_menu" destination="San-wP-1ez" id="X7u-dM-xrI"/>
|
||||
<outlet property="game_menu" destination="K8G-bZ-6mZ" id="IeQ-ZT-5F6"/>
|
||||
<outlet property="modem_menu" destination="KHf-kC-BpZ" id="Qab-mA-anC"/>
|
||||
<outlet property="printer_menu" destination="sTp-en-8Wd" id="zeu-LF-6mV"/>
|
||||
<outlet property="ram_menu" destination="Yks-M5-vi0" id="h5y-Un-jYJ"/>
|
||||
<outlet property="rs232_menu" destination="6ln-U2-0Pi" id="7CT-OE-idV"/>
|
||||
<outlet property="sl0_menu" destination="Jw1-t7-YyU" id="BB5-6y-zyf"/>
|
||||
<outlet property="sl1_menu" destination="bta-RS-JT4" id="cpI-db-kzX"/>
|
||||
<outlet property="sl2_menu" destination="cDU-b1-x5a" id="WtL-Fo-Q1B"/>
|
||||
<outlet property="sl3_menu" destination="aSh-cs-0Nn" id="24o-66-LjH"/>
|
||||
<outlet property="sl4_menu" destination="kU5-cR-hPZ" id="STc-6r-nxH"/>
|
||||
<outlet property="sl5_menu" destination="8z4-8f-kLU" id="cLl-Ee-LUD"/>
|
||||
<outlet property="sl6_menu" destination="GLb-F4-PWe" id="ubk-pt-e1Q"/>
|
||||
<outlet property="sl7_menu" destination="IV2-3M-qfw" id="s5k-4G-w4r"/>
|
||||
<outlet property="view" destination="OM3-7F-wiN" id="yre-ts-aHj"/>
|
||||
<outlet property="_popover" destination="QIT-2T-wdy" id="WUB-OS-kem"/>
|
||||
<outlet property="childOutlineView" destination="uM0-Gk-crn" id="aL5-uC-O28"/>
|
||||
<outlet property="outlineView" destination="Xj3-Qf-yek" id="AWE-Rg-XUM"/>
|
||||
<outlet property="view" destination="D45-lv-6Fv" id="av3-OE-ph2"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<gridView autoresizesSubviews="NO" misplaced="YES" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="OM3-7F-wiN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="306" height="459"/>
|
||||
<rows>
|
||||
<gridRow yPlacement="center" height="25" id="tHD-ui-hIL">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.ram" id="ze9-jx-lv0">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="Ccd-U2-Gx5">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl0" id="YsR-kI-yrh">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="JGU-aq-3uw">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl1" id="1io-aZ-v2G">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="gVW-Ya-phU">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl2" id="AgS-hm-ePr">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="3fP-qp-zmi">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl3" id="98U-4P-iRh">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="86u-5p-UT6">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl4" id="hsy-pm-Qjk">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="Wdg-xb-xQx">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl5" id="0QC-RB-278">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="ein-Fe-vBw">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl6" id="731-3P-DUy">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="qjB-2w-AWE">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.sl7" id="sew-Ds-4I9">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="EEX-dh-jwn">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.exp" id="EOZ-lS-QHF">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="OaZ-ZQ-gKK">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.aux" id="OlF-v7-JZx">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="wQi-Oz-7Ye">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.rs232" id="AeP-bn-blv">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="gr2-eY-995">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.gameio" id="x3I-Bd-9di">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="1xN-lm-s4l">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.printer" id="T9a-lH-z5K">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
<gridRow yPlacement="center" height="25" id="M2s-qn-SIT">
|
||||
<connections>
|
||||
<binding destination="-2" name="hidden" keyPath="machine.modem" id="PSe-R3-S3e">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</gridRow>
|
||||
</rows>
|
||||
<columns>
|
||||
<gridColumn xPlacement="fill" width="100" id="zpB-Rf-dWg"/>
|
||||
<gridColumn xPlacement="fill" width="200" id="6Vn-yh-FoQ"/>
|
||||
</columns>
|
||||
<gridCells>
|
||||
<gridCell row="tHD-ui-hIL" column="zpB-Rf-dWg" id="deJ-sv-Hb7">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nHa-QG-HjJ">
|
||||
<rect key="frame" x="-2" y="439" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="RAM:" id="CvY-8m-Ni9">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="tHD-ui-hIL" column="6Vn-yh-FoQ" id="dak-Ha-01u">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="16" translatesAutoresizingMaskIntoConstraints="NO" id="Yks-M5-vi0">
|
||||
<rect key="frame" x="104" y="433" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="92u-m2-3yN" id="XFo-KF-ueS">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="k8O-sG-Qld">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="92u-m2-3yN">
|
||||
<attributedString key="attributedTitle"/>
|
||||
</menuItem>
|
||||
<menuItem title="Item 2" id="dPG-tR-M4A"/>
|
||||
<menuItem title="Item 3" id="q2n-oZ-46s"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="D45-lv-6Fv">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="8x1-xN-a7c">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="2" autoresizesOutlineColumn="YES" outlineTableColumn="u7T-p8-F2Z" id="Xj3-Qf-yek">
|
||||
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn editable="NO" width="296" minWidth="40" maxWidth="1000" id="u7T-p8-F2Z">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="FM7-eO-FE4">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MenuCell" id="1RI-9K-5qj" customClass="SlotTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="296" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qIF-d4-kOf">
|
||||
<rect key="frame" x="0.0" y="5" width="90" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="RAM:" id="tIz-xZ-ZJH">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zQ8-o3-yBB">
|
||||
<rect key="frame" x="82" y="0.0" width="199" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="tGi-yg-GFr" id="gt4-HK-pd1">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" autoenablesItems="NO" id="KWV-nn-eiB">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="tGi-yg-GFr"/>
|
||||
<menuItem title="Item 2" id="XJr-Gb-4D4"/>
|
||||
<menuItem title="Item 3" id="JeB-Fb-DeQ"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="9MH-mu-u5V"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xCe-sY-sGe">
|
||||
<rect key="frame" x="282" y="8" width="14" height="10"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSListViewTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="0qU-ID-kJ8">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="hamburger:" target="-2" id="5Xa-j7-Aod"/>
|
||||
<binding destination="1RI-9K-5qj" name="hidden" keyPath="objectValue.selectedItem.children" id="rY2-0l-0N8">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">NSIsNil</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="hamburgerButton" destination="xCe-sY-sGe" id="5Da-If-Bt4"/>
|
||||
<outlet property="menuButton" destination="zQ8-o3-yBB" id="zZf-nm-tCI"/>
|
||||
<outlet property="textField" destination="qIF-d4-kOf" id="zIF-4n-v1e"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action selector="memoryMenuChanged:" target="-2" id="m1Q-Xj-z22"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.ram" id="UCD-j5-7Bh"/>
|
||||
<outlet property="dataSource" destination="-2" id="OV9-yE-OFp"/>
|
||||
<outlet property="delegate" destination="-2" id="kXs-TN-3VL"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="Ccd-U2-Gx5" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="QI6-Cz-URX">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v8c-Rp-Mnt">
|
||||
<rect key="frame" x="-2" y="408" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 0:" id="EF7-NX-RMW">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="Ccd-U2-Gx5" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="0KQ-Qt-8KP">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jw1-t7-YyU">
|
||||
<rect key="frame" x="104" y="402" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="8Iv-mH-mEI" id="47g-IO-4Xt">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="nrR-Tr-UaW">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="8Iv-mH-mEI"/>
|
||||
<menuItem title="Item 2" id="Prr-6W-NWp"/>
|
||||
<menuItem title="Item 3" id="xz3-bi-5IM"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="wPZ-cY-9Ir"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl0" id="2aW-3q-Mvt"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="JGU-aq-3uw" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="Y1R-Ob-g2b">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0gP-wH-DVr">
|
||||
<rect key="frame" x="-2" y="377" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 1:" id="bfg-tf-E34">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="JGU-aq-3uw" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="v8q-Rj-E4q">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="bta-RS-JT4">
|
||||
<rect key="frame" x="104" y="371" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="dXO-at-nGw" id="kNn-6b-ysf">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="4ah-BI-RD5">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="dXO-at-nGw"/>
|
||||
<menuItem title="Item 2" id="UZY-8b-qmE"/>
|
||||
<menuItem title="Item 3" id="zxA-OM-BIY"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="hl3-N2-89k"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl1" id="wQI-oy-SYz"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="gVW-Ya-phU" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="tpv-Yc-qii">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EHZ-ol-QVz">
|
||||
<rect key="frame" x="-2" y="346" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 2:" id="FlL-pN-rn7">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="gVW-Ya-phU" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="OzN-rM-Pgi">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="cDU-b1-x5a">
|
||||
<rect key="frame" x="104" y="340" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vCY-qF-aB3" id="jvL-SH-nvG">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="Hp6-Gt-pVV">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="vCY-qF-aB3"/>
|
||||
<menuItem title="Item 2" id="pbR-nc-itb"/>
|
||||
<menuItem title="Item 3" id="L8Z-vH-OCa"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="T5w-C4-Ohq"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl2" id="uXQ-0A-98q"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="3fP-qp-zmi" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="LbW-TT-AQ7">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zGs-8d-L0S">
|
||||
<rect key="frame" x="-2" y="315" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 3:" id="KZK-h8-8cw">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="3fP-qp-zmi" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="h8H-TB-p2z">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="3" translatesAutoresizingMaskIntoConstraints="NO" id="aSh-cs-0Nn">
|
||||
<rect key="frame" x="104" y="309" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="2yS-4z-8OR" id="HaE-TD-5Wx">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="zka-z5-hPa">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="2yS-4z-8OR"/>
|
||||
<menuItem title="Item 2" id="q4H-Fz-zVr"/>
|
||||
<menuItem title="Item 3" id="HtQ-6y-S25"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="5uS-La-5cM"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl3" id="YgU-fX-fPC"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="86u-5p-UT6" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="hJR-nJ-yYi">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zsX-jd-6ba">
|
||||
<rect key="frame" x="-2" y="284" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 4:" id="WXv-RF-e7f">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="86u-5p-UT6" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="dHu-cL-FyO">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="kU5-cR-hPZ">
|
||||
<rect key="frame" x="104" y="278" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="NaS-CV-XQm" id="rOP-eY-UKe">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="Iwv-z3-oJb">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="NaS-CV-XQm"/>
|
||||
<menuItem title="Item 2" id="ovb-SG-Eg4"/>
|
||||
<menuItem title="Item 3" id="GVh-L4-3Cp"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="I35-wl-YdH"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl4" id="yfx-hj-6Ly"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="Wdg-xb-xQx" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="dsM-t5-8ng">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ANg-c1-hGf">
|
||||
<rect key="frame" x="-2" y="253" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 5:" id="EhN-EV-65V">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="Wdg-xb-xQx" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="ffm-pA-jjo">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="5" translatesAutoresizingMaskIntoConstraints="NO" id="8z4-8f-kLU">
|
||||
<rect key="frame" x="104" y="247" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="gH7-4J-xsg" id="cmc-Gf-Slp">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="Cma-00-qCY">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="gH7-4J-xsg"/>
|
||||
<menuItem title="Item 2" id="meM-WH-GgP"/>
|
||||
<menuItem title="Item 3" id="ILg-Ld-9Ri"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="jSe-j9-QUW"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl5" id="Uo1-Rg-wko"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="ein-Fe-vBw" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="PSw-Jx-eS2">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Cr1-RK-Z7V">
|
||||
<rect key="frame" x="-2" y="222" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 6:" id="uzy-th-5Yc">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="ein-Fe-vBw" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="FsV-vO-KAs">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="6" translatesAutoresizingMaskIntoConstraints="NO" id="GLb-F4-PWe">
|
||||
<rect key="frame" x="104" y="216" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="VaX-M9-Op0" id="CjU-rC-HUT">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="3xq-Hn-icN">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="VaX-M9-Op0"/>
|
||||
<menuItem title="Item 2" id="Fhy-5D-e6z"/>
|
||||
<menuItem title="Item 3" id="9jw-LA-666"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="yZO-kH-P6Q"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl6" id="0ze-xJ-DNX"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="qjB-2w-AWE" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="1WE-Mm-0O3">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3Ia-XB-C6D">
|
||||
<rect key="frame" x="-2" y="191" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 7:" id="32J-6e-nRV">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="qjB-2w-AWE" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="Yvr-uR-Hr5">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="7" translatesAutoresizingMaskIntoConstraints="NO" id="IV2-3M-qfw">
|
||||
<rect key="frame" x="104" y="185" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="8nb-Bq-4R4" id="nKb-Ar-bCb">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="R2a-Mg-LsY">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="8nb-Bq-4R4"/>
|
||||
<menuItem title="Item 2" id="rFT-bC-KE9"/>
|
||||
<menuItem title="Item 3" id="4jB-gp-lYT"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="llh-ab-ayK"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.sl7" id="hT6-pS-WmL"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="EEX-dh-jwn" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="iRl-IX-FSD">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Avf-lX-f2Q">
|
||||
<rect key="frame" x="-2" y="160" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Expansion:" id="PEU-OV-910">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="EEX-dh-jwn" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="Ehv-aA-Llc">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="San-wP-1ez">
|
||||
<rect key="frame" x="104" y="154" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="jtv-Qx-oVD" id="42u-b4-3kx">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="1hM-MS-UEz">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="jtv-Qx-oVD"/>
|
||||
<menuItem title="Item 2" id="UeB-A1-nyv"/>
|
||||
<menuItem title="Item 3" id="GyZ-dv-MS4"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="fi5-WL-lQa"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.exp" id="C88-Gb-QTE"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="OaZ-ZQ-gKK" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="wRB-Wh-7kG">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EMz-7i-H38">
|
||||
<rect key="frame" x="-2" y="129" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Auxiliary:" id="SoV-Qy-h2g">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="OaZ-ZQ-gKK" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="bx6-Rc-x2V">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="9" translatesAutoresizingMaskIntoConstraints="NO" id="3kq-qn-7YR">
|
||||
<rect key="frame" x="104" y="123" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vWX-Cb-ldP" id="NqP-Uq-Knv">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="7Ef-KS-ulj">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="vWX-Cb-ldP"/>
|
||||
<menuItem title="Item 2" id="Yg1-xZ-vXq"/>
|
||||
<menuItem title="Item 3" id="BwC-w9-hBy"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="uvt-uD-Adn"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.aux" id="KA7-7x-qeJ"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="wQi-Oz-7Ye" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="KoQ-xV-fQu">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JAG-sJ-u2B">
|
||||
<rect key="frame" x="-2" y="98" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="RS 232:" id="iG2-rY-VDv">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="wQi-Oz-7Ye" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="zWk-jd-i0V">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="10" translatesAutoresizingMaskIntoConstraints="NO" id="6ln-U2-0Pi">
|
||||
<rect key="frame" x="104" y="92" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="uu3-rr-iD8" id="daT-eX-4Vu">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="fMw-mh-Qfi">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="uu3-rr-iD8"/>
|
||||
<menuItem title="Item 2" id="f1r-MS-itp"/>
|
||||
<menuItem title="Item 3" id="WhP-Di-CHP"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="gmZ-pW-35n"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.rs232" id="LxA-8b-jb4"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="gr2-eY-995" column="zpB-Rf-dWg" id="xIE-bJ-mzr">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Svb-pu-WPf">
|
||||
<rect key="frame" x="-2" y="67" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Game I/O:" id="2Gc-mV-zCZ">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="gr2-eY-995" column="6Vn-yh-FoQ" id="nhy-Gp-GLL">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="11" translatesAutoresizingMaskIntoConstraints="NO" id="K8G-bZ-6mZ">
|
||||
<rect key="frame" x="104" y="61" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="GOm-Tf-6qc" id="Mig-Nu-gZB">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="faU-zS-LgN">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="GOm-Tf-6qc"/>
|
||||
<menuItem title="Item 2" id="XgG-U0-2G7"/>
|
||||
<menuItem title="Item 3" id="4Ea-aE-sB1"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="o53-71-xuf"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.gameio" id="tJw-AS-RUz"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="1xN-lm-s4l" column="zpB-Rf-dWg" id="vPV-KN-NNp">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="31K-iE-RCe">
|
||||
<rect key="frame" x="-2" y="36" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Printer:" id="QZI-H7-i8m">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="1xN-lm-s4l" column="6Vn-yh-FoQ" id="KRc-Z8-drK">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="12" translatesAutoresizingMaskIntoConstraints="NO" id="sTp-en-8Wd">
|
||||
<rect key="frame" x="104" y="30" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="TU9-ed-ofw" id="1OL-aw-xNL">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="MSP-Iu-ix3">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="TU9-ed-ofw"/>
|
||||
<menuItem title="Item 2" id="7wI-Tn-rE0"/>
|
||||
<menuItem title="Item 3" id="bQc-pc-ccM"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="Fxc-YB-SF9"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.printer" id="3l1-Hn-v47"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
<gridCell row="M2s-qn-SIT" column="zpB-Rf-dWg" id="8R2-aA-mLq">
|
||||
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MH0-Nk-5Py">
|
||||
<rect key="frame" x="-2" y="5" width="104" height="16"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" title="Modem:" id="HQq-VN-Ju9">
|
||||
<font key="font" usesAppearanceFont="YES"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</gridCell>
|
||||
<gridCell row="M2s-qn-SIT" column="6Vn-yh-FoQ" id="idI-pW-e7v">
|
||||
<popUpButton key="contentView" verticalHuggingPriority="750" tag="13" translatesAutoresizingMaskIntoConstraints="NO" id="KHf-kC-BpZ">
|
||||
<rect key="frame" x="104" y="-1" width="205" height="25"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="CxO-3g-va1" id="jDr-6p-C7y">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="lxi-Z0-ya6">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="CxO-3g-va1"/>
|
||||
<menuItem title="Item 2" id="OpR-vy-iL5"/>
|
||||
<menuItem title="Item 3" id="xvH-9B-ge5"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="pHW-GG-2VQ"/>
|
||||
<binding destination="-2" name="content" keyPath="machine.modem" id="hFa-pj-NnN"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</gridCell>
|
||||
</gridCells>
|
||||
<point key="canvasLocation" x="268" y="71"/>
|
||||
</gridView>
|
||||
<userDefaultsController representsSharedInstance="YES" id="ZGN-Cx-9po"/>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="rYF-ld-adB">
|
||||
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="4pL-Dn-e75" customClass="TransparentScroller">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="color" keyPath="backgroundColor">
|
||||
<color key="value" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</scroller>
|
||||
<point key="canvasLocation" x="-100" y="154"/>
|
||||
</scrollView>
|
||||
<viewController id="ziL-Zf-s1k" userLabel="Popover View Controller">
|
||||
<connections>
|
||||
<outlet property="view" destination="uew-UQ-Q25" id="qjB-ya-gFf"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<popover behavior="t" id="QIT-2T-wdy">
|
||||
<connections>
|
||||
<outlet property="contentViewController" destination="ziL-Zf-s1k" id="rj8-2U-9t0"/>
|
||||
</connections>
|
||||
</popover>
|
||||
<customView id="uew-UQ-Q25">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<subviews>
|
||||
<button id="2jh-iq-DV6">
|
||||
<rect key="frame" x="232" y="382" width="14" height="14"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSStopProgressFreestandingTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Wp7-Km-kYI">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="performClose:" target="QIT-2T-wdy" id="Q04-24-ZOK"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="5gB-oE-Gza">
|
||||
<rect key="frame" x="0.0" y="20" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="X5e-Ka-JLr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autoresizesOutlineColumn="YES" outlineTableColumn="o1K-z1-KVi" id="uM0-Gk-crn">
|
||||
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
<tableColumns>
|
||||
<tableColumn width="230" minWidth="40" maxWidth="1000" id="o1K-z1-KVi">
|
||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableHeaderCell>
|
||||
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="A12-NQ-gW3">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
|
||||
<prototypeCellViews>
|
||||
<tableCellView identifier="MenuCell" id="Mgb-8H-DmI" customClass="SlotTableCellView">
|
||||
<rect key="frame" x="1" y="1" width="230" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ThL-Yz-7Kd">
|
||||
<rect key="frame" x="1" y="0.0" width="229" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="djR-rV-wzX" id="SkW-fW-gwL">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" autoenablesItems="NO" id="7Ib-TL-f6U">
|
||||
<items>
|
||||
<menuItem title="Item 1" state="on" id="djR-rV-wzX"/>
|
||||
<menuItem title="Item 2" id="qbC-4D-6t6"/>
|
||||
<menuItem title="Item 3" id="qPv-x5-zpj"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="menuChanged:" target="-2" id="ytA-nD-fIS"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="menuButton" destination="ThL-Yz-7Kd" id="3Oc-hx-qKl"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
</prototypeCellViews>
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-2" id="HXP-pH-3Lc"/>
|
||||
<outlet property="delegate" destination="-2" id="nwb-IL-MsP"/>
|
||||
</connections>
|
||||
</outlineView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Keh-oo-CPO">
|
||||
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="wtc-gL-alh" customClass="TransparentScroller">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
<point key="canvasLocation" x="-451" y="61"/>
|
||||
</customView>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSListViewTemplate" width="14" height="10"/>
|
||||
<image name="NSStopProgressFreestandingTemplate" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// BookmarkManager.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 6/1/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class NSMenu;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface BookmarkManager : NSObject
|
||||
|
||||
@property (weak) IBOutlet NSMenu *menu;
|
||||
|
||||
+(instancetype)sharedManager;
|
||||
|
||||
-(void)loadBookmarks;
|
||||
-(void)updateMenu;
|
||||
|
||||
-(BOOL)validateName: (NSString *)name;
|
||||
|
||||
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name;
|
||||
-(NSDictionary *)loadBookmarkFromURL: (NSURL *)url;
|
||||
|
||||
-(BOOL)saveDefault: (NSDictionary *)bookmark;
|
||||
-(NSDictionary *)loadDefault;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,214 @@
|
||||
//
|
||||
// BookmarkManager.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 6/1/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "BookmarkManager.h"
|
||||
#import "Ample.h"
|
||||
|
||||
@interface BookmarkManager () {
|
||||
NSArray<NSURL *> *_urls;
|
||||
NSURL *_bookmarkDirectory;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation BookmarkManager
|
||||
|
||||
static BookmarkManager *singleton = nil;
|
||||
|
||||
-(void)awakeFromNib {
|
||||
if (!singleton) singleton = self;
|
||||
}
|
||||
|
||||
+(instancetype)sharedManager {
|
||||
if (!singleton) singleton = [BookmarkManager new];
|
||||
return singleton;
|
||||
}
|
||||
|
||||
-(instancetype)init {
|
||||
if (singleton) return singleton;
|
||||
return [super init];
|
||||
}
|
||||
|
||||
-(NSURL *)bookmarkDirectory {
|
||||
|
||||
if (_bookmarkDirectory) return _bookmarkDirectory;
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
|
||||
NSURL *url = SupportDirectory();
|
||||
url = [url URLByAppendingPathComponent: @"Bookmarks"];
|
||||
NSError *error = nil;
|
||||
[fm createDirectoryAtURL: url withIntermediateDirectories: YES attributes: nil error: &error];
|
||||
if (error) NSLog(@"%@", error);
|
||||
_bookmarkDirectory = url;
|
||||
return url;
|
||||
}
|
||||
|
||||
/* disallow leading .
|
||||
* disallow : or / characters.
|
||||
*/
|
||||
-(BOOL)validateName: (NSString *)name {
|
||||
|
||||
enum { kMaxLength = 128 };
|
||||
unichar buffer[kMaxLength];
|
||||
NSUInteger length = [name length];
|
||||
if (length == 0 || length > kMaxLength) return NO;
|
||||
[name getCharacters: buffer range: NSMakeRange(0, length)];
|
||||
if (buffer[0] == '.') return NO;
|
||||
for (unsigned i = 0; i < length; ++i) {
|
||||
unichar c = buffer[i];
|
||||
if (c == ':' || c == '/') return NO;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
-(NSDictionary *)loadDefault {
|
||||
NSURL *url = [self bookmarkDirectory];
|
||||
url = [url URLByAppendingPathComponent: @".Default"];
|
||||
|
||||
NSDictionary *d;
|
||||
|
||||
if (@available(macOS 10.13, *)) {
|
||||
NSError *error = nil;
|
||||
d = [NSDictionary dictionaryWithContentsOfURL: url error: &error];
|
||||
if (!d) NSLog(@"Error loading %@: %@", url, error);
|
||||
} else {
|
||||
d = [NSDictionary dictionaryWithContentsOfURL: url];
|
||||
if (!d) NSLog(@"Error loading %@", url);
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
/* save as .Default */
|
||||
-(BOOL)saveDefault: (NSDictionary *)bookmark {
|
||||
|
||||
NSURL *url = [self bookmarkDirectory];
|
||||
url = [url URLByAppendingPathComponent: @".Default"];
|
||||
|
||||
NSError *error = nil;
|
||||
BOOL ok = NO;
|
||||
if (@available(macOS 10.13, *)) {
|
||||
ok = [bookmark writeToURL: url error: &error];
|
||||
if (!ok) NSLog(@"%@", error);
|
||||
} else {
|
||||
ok = [bookmark writeToURL: url atomically: YES];
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name {
|
||||
|
||||
NSError *error;
|
||||
NSData *data = [NSPropertyListSerialization dataWithPropertyList: bookmark
|
||||
format: NSPropertyListXMLFormat_v1_0
|
||||
options: 0
|
||||
error: &error];
|
||||
|
||||
|
||||
|
||||
NSURL *base = [self bookmarkDirectory];
|
||||
|
||||
NSURL *url = [base URLByAppendingPathComponent: name];
|
||||
|
||||
BOOL ok = [data writeToURL: url options: NSDataWritingWithoutOverwriting error: &error];
|
||||
|
||||
if (!ok) {
|
||||
for (unsigned i = 1 ; i < 100; ++i) {
|
||||
NSString *tmp = [name stringByAppendingFormat: @"(%d)", i];
|
||||
[base URLByAppendingPathComponent: tmp];
|
||||
|
||||
ok = [data writeToURL: url options: NSDataWritingWithoutOverwriting error: &error];
|
||||
if (ok) {
|
||||
name = tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!ok) return NO;
|
||||
|
||||
if (!_menu) return YES; // ?
|
||||
|
||||
NSUInteger ix = [_urls indexOfObjectPassingTest: ^BOOL(NSURL *object, NSUInteger index, BOOL *stop){
|
||||
NSString *path = [object lastPathComponent];
|
||||
return [name caseInsensitiveCompare: path] == NSOrderedAscending;
|
||||
}];
|
||||
|
||||
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle: name action: @selector(bookmarkMenu:) keyEquivalent: @""];
|
||||
[item setRepresentedObject: url];
|
||||
|
||||
if (ix == NSNotFound) {
|
||||
_urls = [_urls arrayByAddingObject: url];
|
||||
[_menu addItem: item];
|
||||
} else {
|
||||
|
||||
NSInteger n = [_menu numberOfItems];
|
||||
[_menu insertItem: item atIndex: n - [_urls count] + ix];
|
||||
NSMutableArray *tmp = [_urls mutableCopy];
|
||||
|
||||
[tmp insertObject: url atIndex: ix];
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(NSDictionary *)loadBookmarkFromURL: (NSURL *)url {
|
||||
|
||||
NSDictionary *d;
|
||||
|
||||
if (@available(macOS 10.13, *)) {
|
||||
NSError *error = nil;
|
||||
d = [NSDictionary dictionaryWithContentsOfURL: url error: &error];
|
||||
if (!d) NSLog(@"Error loading %@: %@", url, error);
|
||||
} else {
|
||||
d = [NSDictionary dictionaryWithContentsOfURL: url];
|
||||
if (!d) NSLog(@"Error loading %@", url);
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
|
||||
-(void)loadBookmarks {
|
||||
|
||||
NSURL *url = [self bookmarkDirectory];
|
||||
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
|
||||
NSError *error = nil;
|
||||
|
||||
NSArray *files = [fm contentsOfDirectoryAtURL: url
|
||||
includingPropertiesForKeys: nil
|
||||
options: NSDirectoryEnumerationSkipsHiddenFiles
|
||||
error: &error];
|
||||
|
||||
// bleh, has to create 2 new NSStrings for every comparison
|
||||
files = [files sortedArrayUsingComparator: ^(NSURL *a, NSURL *b){
|
||||
NSString *aa = [a lastPathComponent];
|
||||
NSString *bb = [b lastPathComponent];
|
||||
return [aa caseInsensitiveCompare: bb];
|
||||
}];
|
||||
|
||||
|
||||
_urls = files;
|
||||
}
|
||||
|
||||
-(void)updateMenu {
|
||||
|
||||
NSArray *menus = [_menu itemArray];
|
||||
for (NSMenuItem *item in [menus reverseObjectEnumerator]) {
|
||||
if ([item tag] == 0xdeadbeef) [_menu removeItem: item];
|
||||
}
|
||||
for (NSURL *url in _urls) {
|
||||
NSString *title = [url lastPathComponent]; // [[url lastPathComponent] stringByDeletingPathExtension];
|
||||
|
||||
NSMenuItem *item = [_menu addItemWithTitle: title action: @selector(bookmarkMenu:) keyEquivalent: @""];
|
||||
[item setRepresentedObject: url];
|
||||
[item setTag: 0xdeadbeef];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -27,6 +27,20 @@
|
||||
- (void)windowDidLoad {
|
||||
[super windowDidLoad];
|
||||
|
||||
if (!_webView) {
|
||||
WKWebView *webView;
|
||||
NSWindow *window = [self window];
|
||||
CGRect frame = [[window contentView] frame];
|
||||
|
||||
|
||||
webView = [WKWebView new];
|
||||
[webView setFrame: frame];
|
||||
[webView setNavigationDelegate: self];
|
||||
[[window contentView]addSubview: webView];
|
||||
_webView = webView;
|
||||
}
|
||||
|
||||
|
||||
[_webView setHidden: YES];
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSURL *url = [bundle URLForResource: @"CheatSheet" withExtension: @"html"];
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>MameComponentsDate</key>
|
||||
<date>2021-05-27T16:00:00Z</date>
|
||||
<date>2021-07-01T16:00:00Z</date>
|
||||
<key>UseCustomMame</key>
|
||||
<false/>
|
||||
<key>AutoCloseLogWindow</key>
|
||||
|
||||
@@ -67,8 +67,11 @@
|
||||
[window setRestorable: YES];
|
||||
[window setRestorationClass: [self class]];
|
||||
|
||||
|
||||
[_tableView registerForDraggedTypes: @[NSPasteboardTypeFileURL]];
|
||||
if (@available(macOS 10.13, *)) {
|
||||
[_tableView registerForDraggedTypes: @[NSPasteboardTypeFileURL]];
|
||||
} else {
|
||||
[_tableView registerForDraggedTypes: @[ (NSString *)kUTTypeFileURL ]];
|
||||
}
|
||||
[_tableView setDraggingSourceOperationMask: NSDragOperationCopy forLocal: NO]; // enable drag/drop to othr apps.
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
@@ -95,6 +98,11 @@
|
||||
[nc addObserver: self selector: @selector(willTerminate:) name: NSApplicationWillTerminateNotification object: nil];
|
||||
}
|
||||
|
||||
-(void)timerCallback: (NSTimer *)timer {
|
||||
_timer = nil;
|
||||
[self saveFile];
|
||||
}
|
||||
|
||||
-(void)diskImageAdded: (NSNotification *)notification {
|
||||
|
||||
NSURL *url = [notification object];
|
||||
@@ -105,11 +113,15 @@
|
||||
-(void)markDirty {
|
||||
_dirty = YES;
|
||||
if (_timer) [_timer invalidate];
|
||||
_timer = [NSTimer scheduledTimerWithTimeInterval: 5 * 60 target: self selector: @selector(timerCallback:) userInfo: nil repeats: NO];
|
||||
#if 0
|
||||
// 10.12+
|
||||
_timer = [NSTimer scheduledTimerWithTimeInterval: 5 * 60 repeats: NO block: ^(NSTimer *t) {
|
||||
|
||||
self->_timer = nil;
|
||||
[self saveFile];
|
||||
}];
|
||||
#endif
|
||||
}
|
||||
|
||||
-(void)saveFile {
|
||||
@@ -199,11 +211,10 @@
|
||||
|
||||
-(NSMutableDictionary *)clickedItem {
|
||||
|
||||
NSArray *array = [_arrayController arrangedObjects];
|
||||
NSInteger row = [_tableView clickedRow];
|
||||
if (row < 0) return nil;
|
||||
|
||||
NSTableCellView *v = [_tableView viewAtColumn: 0 row: row makeIfNecessary: NO];
|
||||
return [v objectValue];
|
||||
if (row < 0 || row >= [array count]) return nil;
|
||||
return [array objectAtIndex: row];
|
||||
}
|
||||
#pragma mark - IBActions
|
||||
|
||||
@@ -241,19 +252,6 @@
|
||||
|
||||
@implementation DiskImagesWindowController (TableView)
|
||||
|
||||
#if 0
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||
return 5; //[_data count];
|
||||
}
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
|
||||
NSTableCellView *v = [tableView makeViewWithIdentifier: @"PathCell" owner: self];
|
||||
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
-(id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
|
||||
|
||||
@@ -306,11 +304,16 @@
|
||||
for (NSPasteboardItem *item in [pb pasteboardItems]) {
|
||||
|
||||
// need to convert from a string to a url back to a file in case it's a file id url?
|
||||
NSString *s = [item stringForType: NSPasteboardTypeFileURL];
|
||||
NSString *s;
|
||||
if (@available(macOS 10.13, *)) {
|
||||
s = [item stringForType: NSPasteboardTypeFileURL];
|
||||
} else {
|
||||
// El Capitan still has kUTTypeFileURL aka public.file-url but doesn't have NSPasteboardTypeFileURL
|
||||
s = [item stringForType: (NSString *)kUTTypeFileURL];
|
||||
}
|
||||
if (!s) continue;
|
||||
NSURL *url = [NSURL URLWithString: s];
|
||||
if (!url) continue;
|
||||
|
||||
ok |= [self addFile: url];
|
||||
}
|
||||
return ok;
|
||||
|
||||
@@ -26,17 +26,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface DownloadWindowController (URL) <NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate>
|
||||
@end
|
||||
|
||||
@interface DownloadWindowController (Table) <NSTableViewDelegate, NSTableViewDataSource>
|
||||
@end
|
||||
|
||||
@interface DownloadWindowController (Menu) <NSMenuDelegate, NSMenuItemValidation>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface DownloadTableCellView : NSTableCellView
|
||||
@property (weak) IBOutlet NSTextField *statusTextField;
|
||||
@property (weak) IBOutlet NSProgressIndicator *activity;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -90,6 +90,9 @@ enum {
|
||||
@property NSUInteger status;
|
||||
@property NSUInteger index;
|
||||
|
||||
@property (readonly) NSColor *titleColor;
|
||||
@property (readonly) NSColor *descriptionColor;
|
||||
|
||||
|
||||
-(void)cancelDownload;
|
||||
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task;
|
||||
@@ -98,6 +101,21 @@ enum {
|
||||
@end
|
||||
|
||||
|
||||
@interface DownloadItemArrayController : NSArrayController
|
||||
|
||||
@property(readonly, copy) NSArray<NSString *> *automaticRearrangementKeyPaths;
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadItemArrayController
|
||||
|
||||
-(NSArray<NSString *> *)automaticRearrangementKeyPaths {
|
||||
return @[@"localURL"]; // , @"error", @"task", @"statusDescription"];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface DownloadWindowController ()
|
||||
@property (weak) IBOutlet NSTableView *tableView;
|
||||
@@ -105,6 +123,14 @@ enum {
|
||||
@property (weak) IBOutlet NSTextField *downloadField;
|
||||
@property NSString *downloadExtension;
|
||||
|
||||
/* filter buttons */
|
||||
@property (weak) IBOutlet NSButton *allFilterButton;
|
||||
@property (weak) IBOutlet NSButton *missingFilterButton;
|
||||
|
||||
@property (strong) IBOutlet NSArrayController *arrayController;
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadWindowController {
|
||||
@@ -117,6 +143,8 @@ enum {
|
||||
NSURLSession *_session;
|
||||
NSMutableDictionary *_taskIndex;
|
||||
NSUserDefaults *_defaults;
|
||||
|
||||
NSArray<NSButton *> *_filterButtons;
|
||||
}
|
||||
|
||||
+(instancetype)sharedInstance {
|
||||
@@ -166,6 +194,12 @@ enum {
|
||||
[window setRestorationClass: [self class]];
|
||||
#endif
|
||||
|
||||
_filterButtons = @[
|
||||
_allFilterButton,
|
||||
_missingFilterButton
|
||||
];
|
||||
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
|
||||
NSError *error = nil;
|
||||
@@ -217,6 +251,7 @@ enum {
|
||||
}
|
||||
_items = tmp;
|
||||
[self refreshROMs: nil];
|
||||
[_arrayController setContent: _items];
|
||||
|
||||
//[_tableView reloadData];
|
||||
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
@@ -299,8 +334,10 @@ enum {
|
||||
-(DownloadItem *)clickedItem {
|
||||
NSInteger row = [_tableView clickedRow];
|
||||
if (row < 0 || row >= [_items count]) return nil;
|
||||
return [_items objectAtIndex: row];
|
||||
return [[_arrayController arrangedObjects] objectAtIndex: row];
|
||||
//return [_items objectAtIndex: row];
|
||||
}
|
||||
#if 0
|
||||
-(void)redrawRow: (NSUInteger)row {
|
||||
|
||||
//NSRect r = [_tableView rectOfRow: row];
|
||||
@@ -311,7 +348,7 @@ enum {
|
||||
|
||||
[_tableView reloadDataForRowIndexes: rIx columnIndexes: cIx];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
-(void)initializeExtensionMenu {
|
||||
|
||||
@@ -349,9 +386,6 @@ enum {
|
||||
[_taskIndex removeAllObjects];
|
||||
[self setCurrentCount: 0];
|
||||
[self setActive: NO];
|
||||
|
||||
[_tableView reloadData];
|
||||
//[_tableView setNeedsDisplay: YES]; // doesn't work...
|
||||
}
|
||||
|
||||
- (IBAction)downloadMissing:(id)sender {
|
||||
@@ -368,7 +402,6 @@ enum {
|
||||
|
||||
if (delta) {
|
||||
[self setActive: YES];
|
||||
[_tableView reloadData];
|
||||
}
|
||||
}
|
||||
- (IBAction)showRomFolder:(id)sender {
|
||||
@@ -399,11 +432,10 @@ enum {
|
||||
[item setLocalURL: [NSURL fileURLWithPath: path]];
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
[item setStatus: ItemMissing];
|
||||
[item setLocalURL: nil];
|
||||
}
|
||||
// only needed if items aren't bound.
|
||||
[_tableView reloadData];
|
||||
}
|
||||
|
||||
- (IBAction)showInFinder:(id)sender {
|
||||
@@ -422,14 +454,12 @@ enum {
|
||||
|
||||
[self downloadItem: item];
|
||||
[self setActive: YES];
|
||||
[self redrawRow: [item index]];
|
||||
}
|
||||
- (IBAction)cancel:(id)sender {
|
||||
DownloadItem *item = [self clickedItem];
|
||||
if (!item) return;
|
||||
|
||||
[item cancelDownload];
|
||||
[self redrawRow: [item index]];
|
||||
}
|
||||
|
||||
// binding screws up with placeholder.
|
||||
@@ -449,6 +479,35 @@ enum {
|
||||
[_defaults setValue: _downloadExtension forKey: kDownloadExtension];
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)filterButton:(id)sender {
|
||||
|
||||
NSPredicate *p = nil;
|
||||
NSUInteger tag = [sender tag];
|
||||
[sender setState: NSControlStateValueOn];
|
||||
|
||||
|
||||
for (NSButton *b in _filterButtons) {
|
||||
if (b != sender) [b setState: NSControlStateValueOff];
|
||||
}
|
||||
switch (tag) {
|
||||
case 1: // all
|
||||
default:
|
||||
[_arrayController setFilterPredicate: nil];
|
||||
break;
|
||||
case 2: // missing.
|
||||
p = [NSPredicate predicateWithBlock: ^BOOL(DownloadItem *item, NSDictionary *bindings){
|
||||
NSURL *localURL = [item localURL];
|
||||
return localURL == nil;
|
||||
}];
|
||||
|
||||
[_arrayController setFilterPredicate: p];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#pragma mark - NSURLSessionDelegate
|
||||
|
||||
static NSInteger TaskStatusCode(NSURLSessionTask *task) {
|
||||
@@ -495,9 +554,6 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
|
||||
|
||||
if (item) {
|
||||
[item completeWithError: error];
|
||||
NSUInteger row = [item index];
|
||||
|
||||
[self redrawRow: row];
|
||||
}
|
||||
});
|
||||
|
||||
@@ -521,106 +577,57 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
|
||||
|
||||
[fm moveItemAtURL: location toURL: dest error: &error];
|
||||
|
||||
DownloadItem *item = [_taskIndex objectForKey: task];
|
||||
[item setLocalURL: dest];
|
||||
|
||||
/*
|
||||
dispatch_async(dispatch_get_main_queue(), ^(void){
|
||||
|
||||
|
||||
NSMutableDictionary *taskIndex = self->_taskIndex;
|
||||
DownloadItem *item = [taskIndex objectForKey: task];
|
||||
[item setLocalURL: dest];
|
||||
}
|
||||
*/
|
||||
});
|
||||
|
||||
NSLog(@"%@", src);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadWindowController (Table)
|
||||
|
||||
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
|
||||
return [_items count];
|
||||
}
|
||||
|
||||
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
|
||||
return [_items objectAtIndex: row];
|
||||
}
|
||||
|
||||
|
||||
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
|
||||
DownloadItem *item = [_items objectAtIndex: row];
|
||||
DownloadTableCellView *v = [tableView makeViewWithIdentifier: @"DownloadCell" owner: self];
|
||||
|
||||
NSTextField *tf;
|
||||
NSColor *redColor = [NSColor systemRedColor];
|
||||
|
||||
tf = [v textField];
|
||||
[[v textField] setObjectValue: [item name]];
|
||||
|
||||
if ([item localURL]) {
|
||||
[tf setTextColor: nil];
|
||||
} else {
|
||||
[tf setTextColor: redColor];
|
||||
}
|
||||
|
||||
tf = [v statusTextField];
|
||||
[tf setObjectValue: [item statusDescription]];
|
||||
if ([item error]) {
|
||||
[tf setTextColor: redColor];
|
||||
} else {
|
||||
[tf setTextColor: nil];
|
||||
//if ([tableView isRowSelected: row]){
|
||||
//[tf setTextColor: [NSColor whiteColor]];
|
||||
//}
|
||||
}
|
||||
|
||||
if ([item task]) {
|
||||
[[v activity] startAnimation: nil];
|
||||
} else {
|
||||
[[v activity] stopAnimation: nil];
|
||||
}
|
||||
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation DownloadTableCellView
|
||||
|
||||
@end
|
||||
|
||||
@implementation DownloadItem
|
||||
|
||||
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task {
|
||||
_task = task;
|
||||
_error = nil;
|
||||
if (task) _status = ItemDownloading;
|
||||
[self setTask: task];
|
||||
[self setError: nil];
|
||||
if (task) [self setStatus: ItemDownloading];
|
||||
}
|
||||
|
||||
-(void)cancelDownload {
|
||||
if (!_task) return;
|
||||
|
||||
[_task cancel];
|
||||
_task = nil;
|
||||
_status = ItemCanceled;
|
||||
[self setTask: nil];
|
||||
[self setStatus: ItemCanceled];
|
||||
}
|
||||
|
||||
-(void)completeWithError: (NSError *)error {
|
||||
_task = nil;
|
||||
[self setTask: nil];
|
||||
if (error) {
|
||||
_error = error;
|
||||
_status = ItemError;
|
||||
[self setError: error];
|
||||
[self setStatus: ItemError];
|
||||
} else {
|
||||
// what if there was an error moving it?
|
||||
_error = nil;
|
||||
_status = ItemDownloaded;
|
||||
[self setError: nil];
|
||||
[self setStatus: ItemDownloaded];
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
// in practice, error and status set concurrently.
|
||||
+(NSSet *)keyPathsForValuesAffectingStatus {
|
||||
static NSSet *set = nil;
|
||||
if (!set) set = [NSSet setWithObjects: @"error", nil];
|
||||
return set;
|
||||
}
|
||||
#endif
|
||||
|
||||
-(NSString *)statusDescription {
|
||||
|
||||
static NSString *Names[] = {
|
||||
@@ -637,6 +644,19 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
|
||||
return Names[_status];
|
||||
}
|
||||
|
||||
+(NSSet *)keyPathsForValuesAffectingTitleColor {
|
||||
return [NSSet setWithObject: @"localURL"];
|
||||
}
|
||||
-(NSColor *)titleColor {
|
||||
return _localURL ? nil : [NSColor systemRedColor];
|
||||
}
|
||||
+(NSSet *)keyPathsForValuesAffectingDescriptionColor {
|
||||
return [NSSet setWithObject: @"error"];
|
||||
}
|
||||
-(NSColor *)descriptionColor {
|
||||
return _error ? [NSColor systemRedColor] : nil;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -655,7 +675,7 @@ enum {
|
||||
|
||||
NSInteger row = [_tableView clickedRow];
|
||||
if (row < 0) return NO;
|
||||
DownloadItem *item = [_items objectAtIndex: row];
|
||||
DownloadItem *item = [[_arrayController arrangedObjects] objectAtIndex: row]; //[_items objectAtIndex: row];
|
||||
|
||||
NSUInteger status = [item status];
|
||||
switch([menuItem tag]) {
|
||||
|
||||
+5
-1
@@ -50,7 +50,7 @@
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2020 Kelvin Sherlock. All rights reserved.</string>
|
||||
<string>Copyright © 2020-2021 Kelvin Sherlock. All rights reserved.</string>
|
||||
<key>NSMainNibFile</key>
|
||||
<string>MainMenu</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
@@ -59,5 +59,9 @@
|
||||
<true/>
|
||||
<key>NSSupportsSuddenTermination</key>
|
||||
<true/>
|
||||
<key>SUFeedURL</key>
|
||||
<string>https://ample.ksherlock.com/updates/appcast.xml</string>
|
||||
<key>SUPublicEDKey</key>
|
||||
<string>MgYKY5J1nIJ9+C3IabG24ri2M0CuoMqP78fva2GI5BY=</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface LaunchWindowController : NSWindowController <NSBrowserDelegate>
|
||||
@interface LaunchWindowController : NSWindowController <NSBrowserDelegate, NSMenuDelegate>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
+502
-45
@@ -9,12 +9,13 @@
|
||||
#import "Ample.h"
|
||||
#import "LaunchWindowController.h"
|
||||
#import "MediaViewController.h"
|
||||
#import "NewSlotViewController.h"
|
||||
#import "MachineViewController.h"
|
||||
#import "SlotViewController.h"
|
||||
#import "NewMachineViewController.h"
|
||||
#import "LogWindowController.h"
|
||||
|
||||
#import "AutocompleteControl.h"
|
||||
#import "SoftwareList.h"
|
||||
#import "BookmarkManager.h"
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <wctype.h>
|
||||
@@ -23,10 +24,14 @@ static NSString *kMyContext = @"kMyContext";
|
||||
static NSString *kContextMachine = @"kContextMachine";
|
||||
|
||||
|
||||
@interface LaunchWindowController ()
|
||||
@interface LaunchWindowController () {
|
||||
BOOL _loadingBookmark;
|
||||
NSString *_machine;
|
||||
NSDictionary *_machineDescription;
|
||||
}
|
||||
@property (strong) IBOutlet MediaViewController *mediaController;
|
||||
@property (strong) IBOutlet NewSlotViewController *slotController;
|
||||
@property (strong) IBOutlet MachineViewController *machineViewController;
|
||||
@property (strong) IBOutlet SlotViewController *slotController;
|
||||
@property (strong) IBOutlet NewMachineViewController *machineViewController;
|
||||
|
||||
@property (weak) IBOutlet NSView *machineView;
|
||||
@property (weak) IBOutlet NSView *slotView;
|
||||
@@ -36,24 +41,29 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
@property NSString *commandLine;
|
||||
@property NSArray *args;
|
||||
|
||||
@property NSString *mameMachine;
|
||||
@property NSString *machine;
|
||||
//@property NSString *machineName;
|
||||
|
||||
@property BOOL mameDebug;
|
||||
@property BOOL mameSquarePixels;
|
||||
@property BOOL mameMouse;
|
||||
@property BOOL mameSamples;
|
||||
@property BOOL mameBGFX;
|
||||
|
||||
@property BOOL mameAVI;
|
||||
@property BOOL mameWAV;
|
||||
@property BOOL mameVGM;
|
||||
@property BOOL mameBitBanger;
|
||||
@property BOOL mameShareDirectory;
|
||||
|
||||
@property NSString *mameAVIPath;
|
||||
@property NSString *mameWAVPath;
|
||||
@property NSString *mameVGMPath;
|
||||
@property NSString *mameShareDirectory;
|
||||
@property NSString *mameShareDirectoryPath;
|
||||
@property NSString *mameBitBangerPath;
|
||||
|
||||
@property NSInteger mameSpeed;
|
||||
|
||||
@property BOOL mameBGFX;
|
||||
@property NSInteger mameBackend;
|
||||
@property NSInteger mameEffects;
|
||||
|
||||
@@ -63,6 +73,15 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
@property (weak) IBOutlet AutocompleteControl *softwareListControl;
|
||||
@property SoftwareSet *softwareSet;
|
||||
@property Software *software;
|
||||
|
||||
|
||||
|
||||
@property (strong) IBOutlet NSWindow *addBookmarkWindow;
|
||||
@property (strong) NSString *bookmarkName;
|
||||
@property (weak) IBOutlet NSTextField *bookmarkTextField;
|
||||
|
||||
@property BOOL optionKey;
|
||||
|
||||
@end
|
||||
|
||||
@interface LaunchWindowController (SoftwareList)
|
||||
@@ -71,39 +90,137 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface LaunchWindowController (Bookmark)
|
||||
|
||||
-(IBAction)addBookmark:(id)sender;
|
||||
|
||||
-(IBAction)defaultLoad:(id)sender;
|
||||
|
||||
@end
|
||||
|
||||
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
|
||||
static NSString *BackendStrings[] = {
|
||||
@"",
|
||||
@"metal",
|
||||
@"opengl",
|
||||
};
|
||||
|
||||
static NSString *EffectsStrings[] = {
|
||||
@"-",
|
||||
@"unfiltered",
|
||||
@"hlsl",
|
||||
@"crt-geom",
|
||||
@"crt-geom-deluxe",
|
||||
@"lcd-grid",
|
||||
};
|
||||
|
||||
|
||||
static int BackEndIndex(NSString *str) {
|
||||
if (!str) return -1;
|
||||
for (int i = 1; i < SIZEOF(BackendStrings); ++i) {
|
||||
if ([str isEqualToString: BackendStrings[i]]) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int EffectsIndex(NSString *str) {
|
||||
if (!str) return -1;
|
||||
for (int i = 1; i < SIZEOF(EffectsStrings); ++i) {
|
||||
if ([str isEqualToString: EffectsStrings[i]]) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@implementation LaunchWindowController
|
||||
|
||||
-(NSString *)windowNibName {
|
||||
return @"LaunchWindow";
|
||||
}
|
||||
|
||||
-(void)windowWillLoad {
|
||||
-(void)reset {
|
||||
// handled elsewhere.
|
||||
//[self setMachine: nil];
|
||||
|
||||
[self setMameSpeed: 1];
|
||||
[self setMameBGFX: YES];
|
||||
[self setMameMouse: NO];
|
||||
[self setMameSamples: YES];
|
||||
[self setMameSamples: NO];
|
||||
[self setMameSquarePixels: NO];
|
||||
[self setMameDebug: NO];
|
||||
[self setMameWindowMode: 1]; // default = 1x window.
|
||||
|
||||
[self setMameBackend: 0];
|
||||
[self setMameEffects: 0];
|
||||
|
||||
[self setMameBitBangerPath: nil];
|
||||
[self setMameShareDirectoryPath: nil];
|
||||
[self setMameAVIPath: nil];
|
||||
[self setMameWAVPath: nil];
|
||||
[self setMameVGMPath: nil];
|
||||
|
||||
[self setMameAVI: NO];
|
||||
[self setMameWAV: NO];
|
||||
[self setMameVGM: NO];
|
||||
[self setMameBitBanger: NO];
|
||||
[self setMameShareDirectory: NO];
|
||||
|
||||
#if 0
|
||||
[self setSoftware: nil];
|
||||
//_softwareSet = nil;
|
||||
[_softwareListControl setObjectValue: nil];
|
||||
#endif
|
||||
}
|
||||
|
||||
-(void)resetSoftware {
|
||||
[self setSoftware: nil];
|
||||
//_softwareSet = nil;
|
||||
[_softwareListControl setObjectValue: nil];
|
||||
}
|
||||
|
||||
-(void)windowWillLoad {
|
||||
|
||||
// if this calls [self window], it will recurse. that is bad.
|
||||
//[self defaultLoad: nil];
|
||||
[self reset];
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void AddSubview(NSView *parent, NSView *child) {
|
||||
|
||||
[child setFrame: [parent bounds]];
|
||||
[parent addSubview: child];
|
||||
}
|
||||
|
||||
- (void)windowDidLoad {
|
||||
[super windowDidLoad];
|
||||
|
||||
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
|
||||
AddSubview(_slotView, [_slotController view]);
|
||||
AddSubview(_mediaView, [_mediaController view]);
|
||||
AddSubview(_machineView, [_machineViewController view]);
|
||||
|
||||
|
||||
// can't be done until above views are set up.
|
||||
[self defaultLoad: nil];
|
||||
|
||||
[_slotView addSubview: [_slotController view]];
|
||||
[_mediaView addSubview: [_mediaController view]];
|
||||
[_machineView addSubview: [_machineViewController view]];
|
||||
|
||||
|
||||
NSArray *keys = @[
|
||||
@"mameMachine", @"mameSquarePixels", @"mameWindowMode",
|
||||
//@"mameMachine", // - handled
|
||||
@"mameSquarePixels", @"mameWindowMode",
|
||||
@"mameMouse", @"mameSamples",
|
||||
@"mameDebug",
|
||||
@"mameSpeed",
|
||||
@"mameAVI", @"mameAVIPath",
|
||||
@"mameWAV", @"mameWAVPath",
|
||||
@"mameVGM", @"mameVGMPath",
|
||||
@"mameShareDirectory",
|
||||
@"mameShareDirectory", @"mameShareDirectoryPath",
|
||||
@"mameBitBanger", @"mameBitBangerPath",
|
||||
@"mameBGFX", @"mameBackend", @"mameEffects",
|
||||
@"software",
|
||||
];
|
||||
@@ -131,12 +248,14 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
|
||||
|
||||
if (context == (__bridge void *)kMyContext) {
|
||||
if (_loadingBookmark) return;
|
||||
[self buildCommandLine];
|
||||
} else if (context == (__bridge void *)kContextMachine) {
|
||||
if (_loadingBookmark) return;
|
||||
|
||||
NSString *machine = [_machineViewController machine];
|
||||
[self setMameMachine: machine];
|
||||
[self setMachine: machine];
|
||||
[_slotController setMachine: machine];
|
||||
[self updateSoftwareList];
|
||||
[self buildCommandLine];
|
||||
} else {
|
||||
[super observeValueForKeyPath: keyPath ofObject: object change: change context: context];
|
||||
@@ -145,6 +264,35 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
|
||||
|
||||
|
||||
-(NSString *)machine {
|
||||
return _machine;
|
||||
}
|
||||
|
||||
-(void)setMachine:(NSString *)machine {
|
||||
if (_machine == machine) return;
|
||||
_machine = machine;
|
||||
_machineDescription = MameMachine(machine);
|
||||
|
||||
#if 0
|
||||
[self setMachineName: [_machineDescription objectForKey: @"description"]];
|
||||
#else
|
||||
NSString *title = _machineDescription
|
||||
? [NSString stringWithFormat: @"Ample – %@", [_machineDescription objectForKey: @"description"]]
|
||||
: @"Ample";
|
||||
|
||||
[[self window] setTitle: title];
|
||||
#endif
|
||||
|
||||
// enable/disable the right-click menu
|
||||
NSWindow *window = [self window];
|
||||
NSView *view = [window contentView];
|
||||
if (_machine) [view setMenu: [window menu]];
|
||||
else [view setMenu: nil];
|
||||
|
||||
|
||||
// software list.
|
||||
[self updateSoftwareList];
|
||||
}
|
||||
|
||||
static NSString * JoinArguments(NSArray *argv, NSString *argv0) {
|
||||
|
||||
@@ -286,7 +434,7 @@ static NSString *ShellQuote(NSString *s) {
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
if (!_mameMachine) {
|
||||
if (!_machine) {
|
||||
[self setCommandLine: @""];
|
||||
return;
|
||||
}
|
||||
@@ -294,14 +442,11 @@ static NSString *ShellQuote(NSString *s) {
|
||||
NSMutableArray *argv = [NSMutableArray new];
|
||||
|
||||
//[argv addObject: @"mame"];
|
||||
[argv addObject: _mameMachine];
|
||||
[argv addObject: _machine];
|
||||
|
||||
if (_software) {
|
||||
// todo -- need to include source as well.
|
||||
NSString *name = [_software name];
|
||||
if (![_softwareSet nameIsUnique: name])
|
||||
name = [_software fullName];
|
||||
[argv addObject: name];
|
||||
NSString *name = [_softwareSet nameForSoftware: _software];
|
||||
if (name) [argv addObject: name];
|
||||
}
|
||||
|
||||
// -confirm_quit?
|
||||
@@ -364,25 +509,12 @@ static NSString *ShellQuote(NSString *s) {
|
||||
|
||||
if (_mameBGFX) {
|
||||
if (_mameBackend) {
|
||||
static NSString *Names[] = {
|
||||
@"-",
|
||||
@"metal",
|
||||
@"opengl",
|
||||
};
|
||||
[argv addObject: @"-bgfx_backend"];
|
||||
[argv addObject: Names[_mameBackend]];
|
||||
[argv addObject: BackendStrings[_mameBackend]];
|
||||
}
|
||||
if (_mameEffects) {
|
||||
static NSString *Names[] = {
|
||||
@"-",
|
||||
@"unfiltered",
|
||||
@"hlsl",
|
||||
@"crt-geom",
|
||||
@"crt-geom-deluxe",
|
||||
@"lcd-grid",
|
||||
};
|
||||
[argv addObject: @"-bgfx_screen_chains"];
|
||||
[argv addObject: Names[_mameEffects]];
|
||||
[argv addObject: EffectsStrings[_mameEffects]];
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -432,11 +564,15 @@ static NSString *ShellQuote(NSString *s) {
|
||||
}
|
||||
}
|
||||
|
||||
if (_mameShareDirectory && [_mameShareDirectory length]) {
|
||||
if (_mameShareDirectory && [_mameShareDirectoryPath length]) {
|
||||
[argv addObject: @"-share_directory"];
|
||||
[argv addObject: _mameShareDirectory];
|
||||
[argv addObject: _mameShareDirectoryPath];
|
||||
}
|
||||
|
||||
if (_mameBitBanger && [_mameBitBangerPath length]) {
|
||||
[argv addObject: @"-bitbanger"];
|
||||
[argv addObject: _mameBitBangerPath];
|
||||
}
|
||||
|
||||
[self setCommandLine: JoinArguments(argv, nil)];
|
||||
[self setArgs: argv];
|
||||
@@ -448,24 +584,86 @@ static NSString *ShellQuote(NSString *s) {
|
||||
if (cmd == @selector(exportShellScript:)) {
|
||||
return [_args count] ? YES : NO;
|
||||
}
|
||||
return [super validateMenuItem: menuItem];
|
||||
if (cmd == @selector(addBookmark:)) {
|
||||
return _machine ? YES : NO;
|
||||
}
|
||||
|
||||
return YES;
|
||||
//return [super validateMenuItem: menuItem]; // not implemented?
|
||||
}
|
||||
|
||||
# pragma mark - IBActions
|
||||
|
||||
- (IBAction)launchAction:(id)sender {
|
||||
|
||||
[[self window] makeFirstResponder: nil]; // in case text is being edited...
|
||||
if (![_args count]) return;
|
||||
|
||||
[LogWindowController controllerForArgs: _args];
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)listMedia:(id)sender {
|
||||
|
||||
[[self window] makeFirstResponder: nil]; // in case text is being edited...
|
||||
if (!_machine) return;
|
||||
|
||||
NSMutableArray *argv = [NSMutableArray new];
|
||||
|
||||
[argv addObject: _machine];
|
||||
[argv addObject: @"-listmedia"];
|
||||
|
||||
|
||||
NSArray *tmp;
|
||||
tmp = [_slotController args];
|
||||
if ([tmp count]) {
|
||||
[argv addObjectsFromArray: tmp];
|
||||
}
|
||||
|
||||
#if 0
|
||||
tmp = [_mediaController args];
|
||||
if ([tmp count]) {
|
||||
[argv addObjectsFromArray: tmp];
|
||||
}
|
||||
#endif
|
||||
|
||||
[LogWindowController controllerForArgs: argv close: NO];
|
||||
}
|
||||
|
||||
- (IBAction)listSlots:(id)sender {
|
||||
|
||||
[[self window] makeFirstResponder: nil]; // in case text is being edited...
|
||||
if (!_machine) return;
|
||||
|
||||
NSMutableArray *argv = [NSMutableArray new];
|
||||
|
||||
[argv addObject: _machine];
|
||||
[argv addObject: @"-listslots"];
|
||||
|
||||
|
||||
NSArray *tmp;
|
||||
tmp = [_slotController args];
|
||||
if ([tmp count]) {
|
||||
[argv addObjectsFromArray: tmp];
|
||||
}
|
||||
|
||||
#if 0
|
||||
tmp = [_mediaController args];
|
||||
if ([tmp count]) {
|
||||
[argv addObjectsFromArray: tmp];
|
||||
}
|
||||
#endif
|
||||
|
||||
[LogWindowController controllerForArgs: argv close: NO];
|
||||
}
|
||||
|
||||
|
||||
-(IBAction)exportShellScript: (id)sender {
|
||||
|
||||
NSSavePanel *p = [NSSavePanel savePanel];
|
||||
|
||||
NSString *defaultName = [_mameMachine stringByAppendingString: @".sh"];
|
||||
NSString *defaultName = [_machine stringByAppendingString: @".sh"];
|
||||
|
||||
[p setTitle: @"Export Shell Script"];
|
||||
[p setExtensionHidden: NO];
|
||||
@@ -506,6 +704,26 @@ static NSString *ShellQuote(NSString *s) {
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
-(IBAction)resetMachine:(id)sender {
|
||||
[self reset];
|
||||
}
|
||||
|
||||
-(IBAction)resetAll:(id)sender {
|
||||
|
||||
[self reset];
|
||||
[self resetSoftware];
|
||||
[_slotController resetSlots: sender];
|
||||
[_mediaController resetMedia: sender];
|
||||
}
|
||||
|
||||
-(IBAction)resetMedia:(id)sender {
|
||||
[_mediaController resetMedia: sender];
|
||||
[_softwareListControl setObjectValue: nil];
|
||||
[self setSoftware: nil];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -513,7 +731,7 @@ static NSString *ShellQuote(NSString *s) {
|
||||
|
||||
-(void)updateSoftwareList {
|
||||
|
||||
_softwareSet = [SoftwareSet softwareSetForMachine: _mameMachine];
|
||||
_softwareSet = [SoftwareSet softwareSetForMachine: _machine];
|
||||
|
||||
[_softwareListControl setAutocompleteDelegate: _softwareSet];
|
||||
|
||||
@@ -535,3 +753,242 @@ static NSString *ShellQuote(NSString *s) {
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation LaunchWindowController (Bookmark)
|
||||
|
||||
-(IBAction)defaultSave:(id)sender {
|
||||
|
||||
BookmarkManager *bm = [BookmarkManager sharedManager];
|
||||
|
||||
NSDictionary *d = [self makeBookmark];
|
||||
|
||||
[bm saveDefault: d];
|
||||
}
|
||||
|
||||
-(IBAction)defaultLoad:(id)sender {
|
||||
|
||||
BookmarkManager *bm = [BookmarkManager sharedManager];
|
||||
|
||||
NSDictionary *d = [bm loadDefault];
|
||||
if (!d) {
|
||||
[self resetAll: sender];
|
||||
[self setMachine: nil];
|
||||
[_machineViewController reset];
|
||||
[_slotController setMachine: nil];
|
||||
return;
|
||||
}
|
||||
[self loadBookmark: d];
|
||||
}
|
||||
|
||||
-(IBAction)addBookmark:(id)sender {
|
||||
|
||||
if (!_machine) return;
|
||||
|
||||
NSString *name = nil;
|
||||
if (_machineDescription) name = [_machineDescription objectForKey:@"description"];
|
||||
if (!name) name = _machine;
|
||||
|
||||
|
||||
if (_software) {
|
||||
name = [name stringByAppendingFormat: @" - %@", [_software title]];
|
||||
}
|
||||
[self setBookmarkName: name];
|
||||
[_bookmarkTextField selectText: nil];
|
||||
[[self window] beginSheet: _addBookmarkWindow completionHandler: nil];
|
||||
}
|
||||
|
||||
-(IBAction)bookmarkCancel:(id)sender {
|
||||
[[self window] endSheet: _addBookmarkWindow];
|
||||
[_addBookmarkWindow orderOut: nil];
|
||||
}
|
||||
|
||||
-(IBAction)bookmarkSave:(id)sender {
|
||||
|
||||
|
||||
BookmarkManager *bm = [BookmarkManager sharedManager];
|
||||
|
||||
if (![bm validateName: _bookmarkName]) {
|
||||
[_bookmarkTextField selectText: nil];
|
||||
NSBeep();
|
||||
return;
|
||||
}
|
||||
|
||||
NSDictionary *d = [self makeBookmark];
|
||||
|
||||
[bm saveBookmark: d name: _bookmarkName];
|
||||
|
||||
[[self window] endSheet: _addBookmarkWindow];
|
||||
[_addBookmarkWindow orderOut: nil];
|
||||
[self setBookmarkName: nil];
|
||||
}
|
||||
|
||||
|
||||
-(IBAction)bookmarkMenu:(id)sender {
|
||||
|
||||
NSURL *url = [sender representedObject];
|
||||
if (!url) return;
|
||||
|
||||
NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url];
|
||||
if (!d) return; // oops...
|
||||
|
||||
[self loadBookmark: d];
|
||||
}
|
||||
|
||||
|
||||
-(void)loadBookmark: (NSDictionary *)d {
|
||||
Class StringClass = [NSString class];
|
||||
Class NumberClass = [NSNumber class];
|
||||
|
||||
|
||||
NSString *machine = [d objectForKey: @"machine"];
|
||||
if (!machine) return;
|
||||
|
||||
_loadingBookmark = YES;
|
||||
[_machineViewController willLoadBookmark: d];
|
||||
[_slotController willLoadBookmark: d];
|
||||
[_mediaController willLoadBookmark: d];
|
||||
|
||||
[self reset];
|
||||
|
||||
[self setMachine: machine];
|
||||
[self updateSoftwareList];
|
||||
[_softwareListControl setObjectValue: nil]; // will reload the completion list.
|
||||
|
||||
NSString *str;
|
||||
|
||||
str = [d objectForKey: @"software"];
|
||||
if ([str isKindOfClass: StringClass]) {
|
||||
Software *s = [_softwareSet softwareForName: str];
|
||||
if (s) {
|
||||
[_softwareListControl setObjectValue: s];
|
||||
[self setSoftware: s];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Boolean values.
|
||||
NSNumber *n;
|
||||
#undef _
|
||||
#define _(a,b) n = [d objectForKey: a]; if ([n isKindOfClass: NumberClass]) [self b : [n boolValue]]
|
||||
|
||||
_(@"debug", setMameDebug);
|
||||
_(@"squarePixels", setMameSquarePixels);
|
||||
_(@"mouse", setMameMouse);
|
||||
_(@"samples", setMameSamples);
|
||||
_(@"bgfx", setMameBGFX);
|
||||
|
||||
// numeric values
|
||||
// check if in range?
|
||||
#undef _
|
||||
#define _(a,b) n = [d objectForKey: a]; if ([n isKindOfClass: NumberClass]) [self b : [n intValue]]
|
||||
|
||||
_(@"windowMode", setMameWindowMode);
|
||||
_(@"speed", setMameSpeed);
|
||||
|
||||
|
||||
// string values
|
||||
#undef _
|
||||
#define _(a,b) str = [d objectForKey: a]; if ([str isKindOfClass: StringClass]) [self b : str]
|
||||
|
||||
_(@"shareDirectory", setMameShareDirectoryPath);
|
||||
_(@"bitBanger", setMameBitBangerPath);
|
||||
if ([_mameShareDirectoryPath length]) [self setMameShareDirectory: YES];
|
||||
if ([_mameBitBangerPath length]) [self setMameBitBanger: YES];
|
||||
|
||||
_(@"AVIPath", setMameAVIPath);
|
||||
_(@"WAVPath", setMameWAVPath);
|
||||
_(@"VGMPath", setMameVGMPath);
|
||||
if ([_mameAVIPath length]) [self setMameAVI: YES];
|
||||
if ([_mameVGMPath length]) [self setMameVGM: YES];
|
||||
if ([_mameWAVPath length]) [self setMameWAV: YES];
|
||||
|
||||
|
||||
str = [d objectForKey: @"backend"];
|
||||
if ([str isKindOfClass: [NSString class]]) {
|
||||
int ix = BackEndIndex(str);
|
||||
if (ix >= 0) [self setMameBackend: ix];
|
||||
}
|
||||
|
||||
str = [d objectForKey: @"effects"];
|
||||
if ([str isKindOfClass: [NSString class]]) {
|
||||
int ix = EffectsIndex(str);
|
||||
if (ix >= 0) [self setMameEffects: ix];
|
||||
}
|
||||
|
||||
[_machineViewController loadBookmark: d];
|
||||
[_slotController loadBookmark: d];
|
||||
[_mediaController loadBookmark: d];
|
||||
|
||||
[_machineViewController didLoadBookmark: d];
|
||||
[_slotController didLoadBookmark: d];
|
||||
[_mediaController didLoadBookmark: d];
|
||||
|
||||
_loadingBookmark = NO;
|
||||
|
||||
[self buildCommandLine];
|
||||
}
|
||||
|
||||
-(NSDictionary *)makeBookmark {
|
||||
|
||||
[[self window] makeFirstResponder: nil];
|
||||
|
||||
NSMutableDictionary *dict = [NSMutableDictionary new];
|
||||
|
||||
[dict setObject: _machine forKey: @"machine"];
|
||||
[dict setObject: @232 forKey: @"version"];
|
||||
[_machineViewController saveBookmark: dict];
|
||||
[_slotController saveBookmark: dict];
|
||||
[_mediaController saveBookmark: dict];
|
||||
|
||||
|
||||
// Boolean values
|
||||
#undef _
|
||||
#define _(v,k) [dict setObject: v ? (NSObject *)kCFBooleanTrue : (NSObject *)kCFBooleanFalse forKey: k]
|
||||
|
||||
_(_mameDebug, @"debug");
|
||||
_(_mameSquarePixels, @"squarePixels");
|
||||
_(_mameMouse, @"mouse");
|
||||
_(_mameSamples, @"samples");
|
||||
_(_mameBGFX, @"bgfx");
|
||||
|
||||
// numeric values
|
||||
#undef _
|
||||
#define _(v,k) [dict setObject: @(v) forKey: k]
|
||||
_(_mameWindowMode, @"windowMode");
|
||||
_(_mameSpeed, @"speed");
|
||||
|
||||
// String values
|
||||
#undef _
|
||||
#define _(v,k) [dict setObject: v forKey: k]
|
||||
|
||||
if (_mameAVI && [_mameAVIPath length]) _(_mameAVIPath, @"AVIPath");
|
||||
if (_mameWAV && [_mameWAVPath length]) _(_mameWAVPath, @"WAVPath");
|
||||
if (_mameVGM && [_mameVGMPath length]) _(_mameVGMPath, @"VGMPath");
|
||||
|
||||
if (_mameShareDirectory && [_mameShareDirectoryPath length]) _(_mameShareDirectoryPath, @"shareDirectory");
|
||||
if (_mameBitBanger && [_mameBitBangerPath length]) _(_mameBitBangerPath, @"bitBanger");
|
||||
|
||||
|
||||
if (_software) _([_software fullName], @"software");
|
||||
|
||||
|
||||
if (_mameBackend) _(BackendStrings[_mameBackend], @"backend");
|
||||
if (_mameEffects) _(EffectsStrings[_mameEffects], @"effects");
|
||||
|
||||
|
||||
return dict;
|
||||
|
||||
#undef _
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - NSMenuDelegate
|
||||
|
||||
-(void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
NSEventModifierFlags modifiers = [NSEvent modifierFlags];
|
||||
|
||||
[self setOptionKey: modifiers & NSEventModifierFlagOption ? YES : NO];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -12,8 +12,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface LogWindowController : NSWindowController <NSWindowDelegate>
|
||||
|
||||
#if 0
|
||||
+(id)controllerForTask: (NSTask *)task;
|
||||
+(id)controllerForTask: (NSTask *)task close: (BOOL)close;
|
||||
#endif
|
||||
|
||||
+(id)controllerForArgs: (NSArray *)args;
|
||||
+(id)controllerForArgs: (NSArray *)args close: (BOOL)close;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
+94
-37
@@ -19,6 +19,10 @@ static NSMutableSet *LogWindows;
|
||||
@implementation LogWindowController {
|
||||
NSTask *_task;
|
||||
NSFileHandle *_handle;
|
||||
NSFont *_font;
|
||||
|
||||
BOOL _close;
|
||||
BOOL _eof;
|
||||
}
|
||||
|
||||
+(void)initialize {
|
||||
@@ -30,17 +34,14 @@ static NSMutableSet *LogWindows;
|
||||
}
|
||||
|
||||
|
||||
+(id)controllerForTask: (NSTask *)task {
|
||||
+(id)controllerForTask: (NSTask *)task close: (BOOL)close{
|
||||
LogWindowController *controller = [[LogWindowController alloc] initWithWindowNibName: @"LogWindow"];
|
||||
[controller runTask: task];
|
||||
[controller runTask: task close: close];
|
||||
return controller;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+(id)controllerForArgs: (NSArray *)args {
|
||||
|
||||
// NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
+(id)controllerForArgs: (NSArray *)args close: (BOOL)close {
|
||||
|
||||
NSURL *url = MameURL();
|
||||
|
||||
@@ -53,19 +54,35 @@ static NSMutableSet *LogWindows;
|
||||
}
|
||||
|
||||
NSTask *task = [NSTask new];
|
||||
[task setExecutableURL: url];
|
||||
[task setArguments: args];
|
||||
[task setCurrentDirectoryURL: MameWorkingDirectory()];
|
||||
|
||||
return [LogWindowController controllerForTask: task];
|
||||
if (@available(macOS 10.13, *)) {
|
||||
[task setExecutableURL: url];
|
||||
[task setCurrentDirectoryURL: MameWorkingDirectory()];
|
||||
} else {
|
||||
[task setLaunchPath: MamePath()];
|
||||
[task setCurrentDirectoryPath: MameWorkingDirectoryPath()];
|
||||
}
|
||||
|
||||
[task setArguments: args];
|
||||
|
||||
return [LogWindowController controllerForTask: task close: close];
|
||||
|
||||
}
|
||||
|
||||
+(id)controllerForArgs: (NSArray *)args {
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
BOOL close = [defaults boolForKey: kAutoCloseLogWindow];
|
||||
return [self controllerForArgs: args close: close];
|
||||
}
|
||||
|
||||
- (void)windowDidLoad {
|
||||
[super windowDidLoad];
|
||||
|
||||
[LogWindows addObject: self];
|
||||
|
||||
_font = [NSFont userFixedPitchFontOfSize: 0];
|
||||
|
||||
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
|
||||
}
|
||||
|
||||
-(void)appendString: (NSString *)string
|
||||
@@ -73,39 +90,61 @@ static NSMutableSet *LogWindows;
|
||||
if ([string length])
|
||||
{
|
||||
// needs explicit color attribute for proper dark mode support.
|
||||
NSDictionary *attr = @{ NSForegroundColorAttributeName: [NSColor textColor] };
|
||||
NSDictionary *attr = @{
|
||||
NSForegroundColorAttributeName: [NSColor textColor],
|
||||
NSFontAttributeName: _font,
|
||||
};
|
||||
NSAttributedString *astr = [[NSAttributedString alloc] initWithString: string attributes: attr];
|
||||
[[_textView textStorage] appendAttributedString: astr];
|
||||
}
|
||||
}
|
||||
|
||||
-(NSError *)runTask: (NSTask *)task {
|
||||
-(void)appendAttributedString: (NSAttributedString *)string {
|
||||
|
||||
if ([string length]) {
|
||||
[[_textView textStorage] appendAttributedString: string];
|
||||
}
|
||||
}
|
||||
|
||||
-(NSError *)runTask: (NSTask *)task close: (BOOL)close {
|
||||
|
||||
|
||||
if (_task) return nil;
|
||||
_close = close;
|
||||
_eof = NO;
|
||||
|
||||
NSError *error = nil;
|
||||
NSPipe *pipe = [NSPipe pipe];
|
||||
|
||||
// window not yet loaded until [self window] called.
|
||||
const char *path = [[task executableURL] fileSystemRepresentation];
|
||||
// if (cp) [self appendString: [NSString stringWithFormat: @"MAME path: %s", cp]];
|
||||
const char *wd = [[task currentDirectoryURL] fileSystemRepresentation];
|
||||
// if (cp) [self appendString: [NSString stringWithFormat: @"Working Directory: %s", cp]];
|
||||
|
||||
const char *path = nil;
|
||||
const char *wd = nil;
|
||||
|
||||
|
||||
[task setStandardError: pipe];
|
||||
[task setStandardOutput: pipe];
|
||||
[task launchAndReturnError: &error];
|
||||
|
||||
if (@available(macOS 10.13, *)) {
|
||||
NSError *error = nil;
|
||||
path = [[task executableURL] fileSystemRepresentation];
|
||||
wd = [[task currentDirectoryURL] fileSystemRepresentation];
|
||||
|
||||
if (error) {
|
||||
// NSURL *url = [task executableURL];
|
||||
// NSString *path = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
|
||||
NSLog(@"NSTask error. Path = %s error = %@", path, error);
|
||||
// [self appendString: path];
|
||||
// [self appendString: [error description]];
|
||||
return error;
|
||||
[task launchAndReturnError: &error];
|
||||
if (error) {
|
||||
NSLog(@"NSTask error. Path = %s error = %@", path, error);
|
||||
return error;
|
||||
}
|
||||
} else {
|
||||
path = [[task launchPath] fileSystemRepresentation];
|
||||
wd = [[task currentDirectoryPath] fileSystemRepresentation];
|
||||
@try {
|
||||
[task launch];
|
||||
} @catch (NSException *exception) {
|
||||
|
||||
NSLog(@"NSTask exception. Path = %s exception = %@", path, exception);
|
||||
return nil; // ?
|
||||
}
|
||||
}
|
||||
|
||||
_task = task;
|
||||
NSString *title = [NSString stringWithFormat: @"Ample Log - %u", [task processIdentifier]];
|
||||
[[self window] setTitle: title];
|
||||
@@ -116,6 +155,7 @@ static NSMutableSet *LogWindows;
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
|
||||
|
||||
[nc addObserver: self
|
||||
selector: @selector(taskComplete:)
|
||||
name: NSTaskDidTerminateNotification
|
||||
@@ -126,6 +166,7 @@ static NSMutableSet *LogWindows;
|
||||
object: _handle];
|
||||
|
||||
[_handle readInBackgroundAndNotify];
|
||||
|
||||
[[self window] setDocumentEdited: YES];
|
||||
return nil;
|
||||
}
|
||||
@@ -138,21 +179,33 @@ static NSMutableSet *LogWindows;
|
||||
// read complete, queue up another.
|
||||
NSDictionary *dict = [notification userInfo];
|
||||
NSData *data = [dict objectForKey: NSFileHandleNotificationDataItem];
|
||||
|
||||
|
||||
if ([data length])
|
||||
{
|
||||
|
||||
NSString *string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
|
||||
|
||||
[self appendString: string];
|
||||
|
||||
[_handle readInBackgroundAndNotify];
|
||||
} else {
|
||||
[self appendString: @"\n"]; // -listmedia sometimes causes display issues.
|
||||
_eof = YES;
|
||||
//[_textView setNeedsDisplay: YES]; // -listmedia sometimes weird.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(void)taskCompleteHack {
|
||||
|
||||
}
|
||||
|
||||
/* hask! task complete may occur while output still being processed. add a delay to compensate. */
|
||||
-(void)taskComplete: (NSNotification *)notification
|
||||
{
|
||||
if (!_eof) {
|
||||
[self performSelector: @selector(taskComplete:) withObject: notification afterDelay: 0.5];
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL ok = NO;
|
||||
NSTaskTerminationReason reason;
|
||||
int status;
|
||||
@@ -166,7 +219,7 @@ static NSMutableSet *LogWindows;
|
||||
|
||||
if (status == 0)
|
||||
{
|
||||
string = @"\n\n[Success]\n\n";
|
||||
//string = @"\n\n[Success]\n\n";
|
||||
ok = YES;
|
||||
}
|
||||
else string = @"\n\n[An error occurred]\n\n";
|
||||
@@ -175,18 +228,22 @@ static NSMutableSet *LogWindows;
|
||||
{
|
||||
string = [NSString stringWithFormat: @"\n\n[Caught signal %d (%s)]\n\n", status, strsignal(status)];
|
||||
}
|
||||
|
||||
[self appendString: string];
|
||||
|
||||
if (string) {
|
||||
NSDictionary *attr = @{
|
||||
NSForegroundColorAttributeName: [NSColor systemRedColor],
|
||||
NSFontAttributeName: _font,
|
||||
};
|
||||
NSAttributedString *astr = [[NSAttributedString alloc] initWithString: string attributes: attr];
|
||||
[self appendAttributedString: astr];
|
||||
}
|
||||
|
||||
_handle = nil;
|
||||
_task = nil;
|
||||
|
||||
[[self window] setDocumentEdited: NO];
|
||||
|
||||
if (ok && [[NSUserDefaults standardUserDefaults] boolForKey: kAutoCloseLogWindow]) {
|
||||
|
||||
if (ok && _close) {
|
||||
[[self window] close];
|
||||
//[LogWindows removeObject: self]; // close sends WindowWillClose notification.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Ample.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@@ -17,4 +18,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@end
|
||||
|
||||
@interface MachineViewController (Bookmark) <Bookmark>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -110,5 +110,67 @@
|
||||
return [data count];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MachineViewController (Bookmark)
|
||||
|
||||
-(BOOL)loadBookmark: (NSDictionary *)bookmark {
|
||||
|
||||
NSBrowser *browser = (NSBrowser *)[self view];
|
||||
NSString *machine = [bookmark objectForKey: @"machine"];
|
||||
|
||||
NSIndexPath *path = nil;
|
||||
NSUInteger ix[2] = {0, 0 };
|
||||
for (NSDictionary *d in _data) {
|
||||
|
||||
NSArray *children = [d objectForKey: @"children"];
|
||||
|
||||
for (NSDictionary *dd in children) {
|
||||
NSString *value = [dd objectForKey: @"value"];
|
||||
|
||||
if ([machine isEqualToString: value]) {
|
||||
path = [NSIndexPath indexPathWithIndexes: ix length: 2];
|
||||
[browser selectRow: ix[0] inColumn: 0];
|
||||
[browser selectRow: ix[1] inColumn: 1];
|
||||
|
||||
//[browser setSelectionIndexPath: path];
|
||||
return YES;
|
||||
}
|
||||
++ix[1];
|
||||
}
|
||||
ix[1] = 0;
|
||||
|
||||
|
||||
// check parent after.
|
||||
NSString *value = [d objectForKey: @"value"];
|
||||
if ([machine isEqualToString: value]) {
|
||||
path = [NSIndexPath indexPathWithIndexes: ix length: 1];
|
||||
[browser selectRow: ix[0] inColumn: 0];
|
||||
// "setSelectionIndexPath: is not supported for browsers with matrix delegates."
|
||||
//[browser setSelectionIndexPath: path];
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
++ix[0];
|
||||
|
||||
}
|
||||
NSLog(@"MachineViewController: Unable to find %@", machine);
|
||||
return NO;
|
||||
}
|
||||
|
||||
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark {
|
||||
// machine saved in parent.
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(void)willLoadBookmark:(NSDictionary *)bookmark {
|
||||
}
|
||||
|
||||
-(void)didLoadBookmark:(NSDictionary *)bookmark {
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -17,6 +17,7 @@ typedef struct Media {
|
||||
unsigned floppy_5_25;
|
||||
unsigned floppy_3_5;
|
||||
unsigned pseudo_disk;
|
||||
unsigned bitbanger;
|
||||
} Media;
|
||||
|
||||
struct Media MediaFromDictionary(NSDictionary *);
|
||||
|
||||
+144
@@ -22,6 +22,7 @@ struct Media MediaFromDictionary(NSDictionary *dict) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
|
||||
return m;
|
||||
#undef _
|
||||
@@ -38,6 +39,7 @@ void MediaAdd(Media *dest, const Media *src) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
#undef _
|
||||
}
|
||||
|
||||
@@ -53,6 +55,148 @@ BOOL MediaEqual(const Media *lhs, const Media *rhs) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
return YES;
|
||||
#undef _
|
||||
}
|
||||
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
enum {
|
||||
MediaType_5_25,
|
||||
MediaType_3_5,
|
||||
MediaType_HardDisk,
|
||||
MediaType_CD,
|
||||
MediaType_Cassette,
|
||||
};
|
||||
|
||||
#define _x2(a,b) (a | (b << 8))
|
||||
#define _x3(a,b,c) (a | (b << 8) | (c << 16))
|
||||
#define _x4(a,b,c, d) (a | (b << 8) | (c << 16) | (d << 24))
|
||||
static unsigned hash(const char *cp) {
|
||||
unsigned rv = 0;
|
||||
int i, shift;
|
||||
if (!cp) return 0;
|
||||
for (i = 0, shift = 0; i < 4; ++i, shift += 8) {
|
||||
unsigned c = cp[0];
|
||||
if (!c) break;
|
||||
c = tolower(c);
|
||||
rv |= (c << shift);
|
||||
}
|
||||
if (i > 4) return 0;
|
||||
return rv;
|
||||
}
|
||||
|
||||
const char *extname(const char *path) {
|
||||
|
||||
const char *rv = NULL;
|
||||
if (!path) return path;
|
||||
for(unsigned i = 0; ; ++i) {
|
||||
unsigned c = path[i];
|
||||
if (c == 0) break;
|
||||
if (c == '/') rv = NULL;
|
||||
if (c == '.') rv = path + i + 1;
|
||||
}
|
||||
if (rv && !*rv) rv = NULL;
|
||||
return rv;
|
||||
}
|
||||
|
||||
int ClassifyMediaFile(NSString *file) {
|
||||
|
||||
struct stat st;
|
||||
ssize_t size;
|
||||
unsigned char buffer[128];
|
||||
int fd;
|
||||
const char *path = [file fileSystemRepresentation];
|
||||
const char *ext = extname(path);
|
||||
unsigned ext_hash = hash(ext);
|
||||
|
||||
memset(&st, 0, sizeof(st));
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
|
||||
fd = open(path, O_RDONLY);
|
||||
if (fd < 0) return -1;
|
||||
fstat(fd, &st);
|
||||
|
||||
size = read(fd, buffer, sizeof(buffer));
|
||||
close(fd);
|
||||
if (size <= 0) return -1;
|
||||
|
||||
// 13 sector support ? not on an event 512 block boundary.
|
||||
// = 116480 bytes.
|
||||
|
||||
/* woz 1/2 ? */
|
||||
if (!memcmp(buffer, "WOZ1\xff\x0a\x0d\x0a", 8) || !memcmp(buffer, "WOZ2\xff\x0a\x0d\x0a", 8)) {
|
||||
|
||||
if (!memcmp(buffer + 12, "INFO", 4)) {
|
||||
unsigned type = buffer[21]; // 1 = 5.25, 2 = 3.5
|
||||
if (type == 1) return MediaType_5_25;
|
||||
if (type == 2) return MediaType_3_5;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* 2mg? */
|
||||
if (!memcmp(buffer, "2IMG", 4)) {
|
||||
int format = OSReadLittleInt32(buffer, 0x0c); // 0 - dos order, 1 = prodos order, 2 = nib data
|
||||
int blocks = OSReadLittleInt32(buffer, 0x14); // prodos only.
|
||||
//int bytes = OSReadLittleInt32(buffer, 0x1c);
|
||||
|
||||
if (format == 2 || format == 0) return MediaType_5_25; // nib and dos order
|
||||
if (blocks == 280) return MediaType_5_25;
|
||||
if (blocks == 800 || blocks == 1600 || blocks == 1440 || blocks == 2880) return MediaType_3_5;
|
||||
if (blocks > 2880) return MediaType_HardDisk; //
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* chd? */
|
||||
if (!memcmp(buffer, "MComprHD", 8)) {
|
||||
static int offsets[] = { 0, 0, 0, 28, 28, 32}; // offset for logival bytes.
|
||||
int version = OSReadBigInt32(buffer, 12);
|
||||
|
||||
if (version >= 3 && version <= 5) {
|
||||
long bytes = OSReadBigInt64(buffer, offsets[version]);
|
||||
long blocks = bytes >> 9;
|
||||
if ((bytes & 511) == 0) {
|
||||
if (blocks == 800 || blocks == 1600 || blocks == 1440 || blocks == 2880) return MediaType_3_5;
|
||||
if (blocks == 280) return MediaType_5_25;
|
||||
if (blocks > 2880) return MediaType_HardDisk; // iso?
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* dc 4.2? magic is pretty weak. */
|
||||
if (buffer[0x52] == 0x01 && buffer[0x53] == 0x00 && buffer[0] >= 1 && buffer[0] <= 0x3f) {
|
||||
int dsize = OSReadBigInt32(buffer, 0x40);
|
||||
int tsize = OSReadBigInt32(buffer, 0x44);
|
||||
if (dsize + tsize + 0x54 == st.st_size && (size & 511) == 0) {
|
||||
int blocks = dsize >>= 9;
|
||||
if (blocks == 800 || blocks == 1600 || blocks == 1440 || blocks == 2880) return MediaType_3_5;
|
||||
}
|
||||
}
|
||||
|
||||
switch(ext_hash) {
|
||||
case _x3('n', 'i', 'b'): return MediaType_5_25;
|
||||
case _x3('w', 'a', 'v'): return MediaType_Cassette;
|
||||
case _x3('i', 's', 'o'):
|
||||
case _x3('c', 'u', 'e'):
|
||||
case _x3('c', 'd', 'r'):
|
||||
return MediaType_CD;
|
||||
|
||||
// po, do, hdv, dsk - based on size
|
||||
case _x2('d', 'o'):
|
||||
case _x3('d', 's', 'k'):
|
||||
case _x2('p', 'o'):
|
||||
case _x3('h', 'd', 'v'): // usually 3.5 or hard drive
|
||||
if (st.st_size <= 143360) return MediaType_5_25;
|
||||
if (st.st_size <= 1474560) return MediaType_3_5;
|
||||
return MediaType_HardDisk;
|
||||
return MediaType_HardDisk;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Media.h"
|
||||
#import "Ample.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@@ -20,8 +21,11 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (IBAction)ejectAction:(id)sender;
|
||||
- (IBAction)pathAction:(id)sender;
|
||||
|
||||
-(IBAction)resetMedia:(id)sender;
|
||||
|
||||
//-(void)setMedia: (NSDictionary *)media;
|
||||
@end
|
||||
|
||||
@interface MediaViewController (Bookmark) <Bookmark>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
+250
-68
@@ -9,11 +9,25 @@
|
||||
#import "MediaViewController.h"
|
||||
#import "TableCellView.h"
|
||||
|
||||
enum {
|
||||
kIndexFloppy525 = 0,
|
||||
kIndexFloppy35,
|
||||
kIndexHardDrive,
|
||||
kIndexCDROM,
|
||||
kIndexCassette,
|
||||
kIndexDiskImage,
|
||||
kIndexBitBanger,
|
||||
};
|
||||
|
||||
#define CATEGORY_COUNT 7
|
||||
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
|
||||
@protocol MediaNode
|
||||
-(BOOL)isGroupItem;
|
||||
-(BOOL)isExpandable;
|
||||
-(NSInteger) count;
|
||||
-(NSInteger)count;
|
||||
-(NSInteger)category;
|
||||
|
||||
-(NSString *)viewIdentifier;
|
||||
-(void)prepareView: (NSTableCellView *)view;
|
||||
@@ -28,6 +42,7 @@
|
||||
@property NSMutableArray *children; // URLs?
|
||||
@property NSString *title;
|
||||
@property NSInteger index;
|
||||
@property NSInteger category;
|
||||
|
||||
-(NSInteger)count;
|
||||
-(id)objectAtIndex:(NSInteger)index;
|
||||
@@ -36,9 +51,13 @@
|
||||
|
||||
@interface MediaItem : NSObject <MediaNode>
|
||||
|
||||
@property NSString *string;
|
||||
@property NSURL *url;
|
||||
@property BOOL valid;
|
||||
@property NSInteger index;
|
||||
@property NSInteger category;
|
||||
|
||||
@property (readonly) BOOL occupied;
|
||||
|
||||
-(NSInteger)count;
|
||||
-(id)objectAtIndex:(NSInteger)index;
|
||||
@@ -81,8 +100,6 @@
|
||||
|
||||
-(void)prepareView: (NSTableCellView *)view {
|
||||
|
||||
[view setObjectValue: self];
|
||||
[[view textField] setStringValue: _title];
|
||||
}
|
||||
|
||||
-(CGFloat)height {
|
||||
@@ -104,6 +121,7 @@
|
||||
for (unsigned i = count; i < newCount; ++i) {
|
||||
MediaItem *item = [MediaItem new];
|
||||
[item setIndex: i];
|
||||
[item setCategory: _category];
|
||||
[_children addObject: item];
|
||||
}
|
||||
|
||||
@@ -115,7 +133,7 @@
|
||||
|
||||
for (unsigned i = newCount; i < count; ++i) {
|
||||
MediaItem *item = [_children lastObject];
|
||||
if ([item url]) break;
|
||||
if ([item occupied]) break;
|
||||
|
||||
[_children removeLastObject];
|
||||
}
|
||||
@@ -131,7 +149,7 @@
|
||||
|
||||
for (NSInteger i = _validCount; i < count; ++i) {
|
||||
MediaItem *item = [_children lastObject];
|
||||
if ([item url]) break;
|
||||
if ([item occupied]) break;
|
||||
|
||||
[_children removeLastObject];
|
||||
[set addIndex: [_children count]];
|
||||
@@ -181,11 +199,37 @@
|
||||
|
||||
@implementation MediaItem
|
||||
|
||||
|
||||
|
||||
-(instancetype)initWithURL: (NSURL *)url {
|
||||
[self setUrl: url];
|
||||
_url = url;
|
||||
return self;
|
||||
}
|
||||
|
||||
-(instancetype)initWithString: (NSString *)string {
|
||||
_string = string;
|
||||
return self;
|
||||
}
|
||||
|
||||
-(NSString *)argument {
|
||||
if (_string)
|
||||
return _string;
|
||||
|
||||
// todo -- have setURL also update _string?
|
||||
if (_url)
|
||||
return [NSString stringWithCString: [_url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
+(NSSet *)keyPathsForValuesAffectingOccupied {
|
||||
return [NSSet setWithObjects: @"url", @"string", nil];
|
||||
}
|
||||
|
||||
-(BOOL)occupied {
|
||||
return _url || _string;
|
||||
}
|
||||
|
||||
-(NSInteger) count {
|
||||
return 0;
|
||||
}
|
||||
@@ -203,39 +247,12 @@
|
||||
}
|
||||
|
||||
-(NSString *)viewIdentifier {
|
||||
if (_category == kIndexBitBanger) return @"BBItemView";
|
||||
return @"ItemView";
|
||||
}
|
||||
|
||||
-(void)prepareView: (TablePathView *)view {
|
||||
|
||||
NSValueTransformer *t;
|
||||
NSDictionary *options;
|
||||
|
||||
[view setObjectValue: self];
|
||||
|
||||
NSPathControl *pc = [view pathControl];
|
||||
NSButton *button = [view ejectButton];
|
||||
|
||||
[pc unbind: @"value"];
|
||||
[pc unbind: @"enabled"];
|
||||
[pc bind: @"value" toObject: self withKeyPath: @"url" options: nil];
|
||||
[pc bind: @"enabled" toObject: self withKeyPath: @"valid" options: options];
|
||||
|
||||
[button unbind: @"enabled"];
|
||||
[button unbind: @"contentTintColor"];
|
||||
t = [NSValueTransformer valueTransformerForName: NSIsNotNilTransformerName];
|
||||
options = @{ NSValueTransformerBindingOption: t};
|
||||
[button bind: @"enabled" toObject: self withKeyPath: @"url" options: options];
|
||||
|
||||
t = [NSValueTransformer valueTransformerForName: @"ValidColorTransformer"];
|
||||
options = @{ NSValueTransformerBindingOption: t};
|
||||
[button bind: @"contentTintColor" toObject: self withKeyPath: @"valid" options: options];
|
||||
|
||||
#if 0
|
||||
NSColor *tintColor = nil;
|
||||
if (!_valid) tintColor = [NSColor systemRedColor];
|
||||
[button setContentTintColor: tintColor];
|
||||
#endif
|
||||
}
|
||||
|
||||
-(CGFloat)height {
|
||||
@@ -249,28 +266,21 @@
|
||||
@end
|
||||
|
||||
|
||||
#define CATEGORY_COUNT 6
|
||||
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
|
||||
@interface MediaViewController () {
|
||||
|
||||
MediaCategory *_data[CATEGORY_COUNT];
|
||||
NSArray *_root;
|
||||
Media _media;
|
||||
|
||||
BOOL _loadingBookmark;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MediaViewController
|
||||
|
||||
enum {
|
||||
kIndexFloppy525 = 0,
|
||||
kIndexFloppy35,
|
||||
kIndexHardDrive,
|
||||
kIndexCDROM,
|
||||
kIndexCassette,
|
||||
kIndexDiskImage,
|
||||
};
|
||||
|
||||
|
||||
-(void)awakeFromNib {
|
||||
@@ -286,7 +296,11 @@ enum {
|
||||
_data[kIndexCDROM] = [MediaCategory categoryWithTitle: @"CD-ROMs"];
|
||||
_data[kIndexCassette] = [MediaCategory categoryWithTitle: @"Cassettes"];
|
||||
_data[kIndexDiskImage] = [MediaCategory categoryWithTitle: @"Hard Disk Images"]; // Mac Nubus psuedo image device
|
||||
_data[kIndexBitBanger] = [MediaCategory categoryWithTitle: @"Serial Bit Banger"]; // null_modem
|
||||
|
||||
for (unsigned i = 0; i < CATEGORY_COUNT; ++i)
|
||||
[_data[i] setCategory: i];
|
||||
|
||||
_root = @[];
|
||||
|
||||
}
|
||||
@@ -296,7 +310,7 @@ enum {
|
||||
-(void)rebuildArgs {
|
||||
|
||||
static char* prefix[] = {
|
||||
"flop", "flop", "hard", "cdrm", "cass", "disk"
|
||||
"flop", "flop", "hard", "cdrm", "cass", "disk", "bitb",
|
||||
};
|
||||
static_assert(SIZEOF(prefix) == CATEGORY_COUNT, "Missing item");
|
||||
NSMutableArray *args = [NSMutableArray new];
|
||||
@@ -311,12 +325,12 @@ enum {
|
||||
counts[j]++;
|
||||
|
||||
MediaItem *item = [cat objectAtIndex: i];
|
||||
NSURL *url = [item url];
|
||||
if (!url) continue;
|
||||
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
|
||||
NSString *s = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
|
||||
|
||||
[args addObject: s];
|
||||
NSString *arg = [item argument];
|
||||
|
||||
if (arg) {
|
||||
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
|
||||
[args addObject: arg];
|
||||
}
|
||||
}
|
||||
if (j == 0) counts[1] = counts[0]; // 3.5/5.25
|
||||
}
|
||||
@@ -340,8 +354,10 @@ enum {
|
||||
// todo - switch this to use removeItemsAtIndexes:inParent:withAnimation:
|
||||
// and insertItemsAtIndexes:inParent:withAnimation:
|
||||
|
||||
[_outlineView reloadData];
|
||||
[_outlineView expandItem: nil expandChildren: YES];
|
||||
if (!_loadingBookmark) {
|
||||
[_outlineView reloadData];
|
||||
[_outlineView expandItem: nil expandChildren: YES];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)setMedia: (Media)media {
|
||||
@@ -363,11 +379,35 @@ x = media.name; cat = _data[index]; delta |= [cat setItemCount: x]
|
||||
_(floppy_3_5, kIndexFloppy35);
|
||||
_(floppy_5_25, kIndexFloppy525);
|
||||
_(pseudo_disk, kIndexDiskImage);
|
||||
_(bitbanger, kIndexBitBanger);
|
||||
|
||||
|
||||
if (delta) {
|
||||
[self rebuildRoot];
|
||||
[self rebuildArgs];
|
||||
if (!_loadingBookmark) [self rebuildArgs];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)resetDiskImages {
|
||||
|
||||
BOOL delta = NO;
|
||||
for (unsigned j = 0; j < CATEGORY_COUNT; ++j) {
|
||||
|
||||
MediaCategory *cat = _data[j];
|
||||
NSInteger count = [cat count];
|
||||
for (NSInteger i = 0; i < count; ++i) {
|
||||
|
||||
MediaItem *item = [cat objectAtIndex: i];
|
||||
if (![item occupied]) continue;
|
||||
[item setUrl: nil];
|
||||
[item setString: nil];
|
||||
delta = YES;
|
||||
}
|
||||
if ([cat pruneChildrenWithOutlineView: _outlineView]) delta = YES;
|
||||
}
|
||||
if (delta) {
|
||||
[self rebuildRoot];
|
||||
if (!_loadingBookmark) [self rebuildArgs];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -397,15 +437,14 @@ static NSString *kDragType = @"private.ample.media";
|
||||
|
||||
}
|
||||
|
||||
//- (NSTableRowView *)outlineView:(NSOutlineView *)outlineView rowViewForItem:(id)item;
|
||||
|
||||
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id<MediaNode>)item {
|
||||
|
||||
NSString *ident = [item viewIdentifier];
|
||||
if (!ident) return nil;
|
||||
NSTableCellView *v = [outlineView makeViewWithIdentifier: ident owner: self];
|
||||
[(id<MediaNode>)item prepareView: v];
|
||||
[v setObjectValue: item];
|
||||
|
||||
[(id<MediaNode>)item prepareView: v];
|
||||
return v;
|
||||
}
|
||||
|
||||
@@ -437,12 +476,6 @@ static NSString *kDragType = @"private.ample.media";
|
||||
}
|
||||
|
||||
|
||||
- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
|
||||
//return nil;
|
||||
return [[item cellClass] new];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#pragma mark - NSOutlineViewDataSource
|
||||
@@ -605,10 +638,9 @@ static NSString *kDragType = @"private.ample.media";
|
||||
NSInteger row = [_outlineView rowForView: sender];
|
||||
if (row < 0) return;
|
||||
|
||||
//TablePathView *pv = [_outlineView viewAtColumn: 0 row: row makeIfNecessary: NO];
|
||||
MediaItem *item = [_outlineView itemAtRow: row];
|
||||
[item setUrl: nil];
|
||||
//[[pv pathControl] setURL: nil];
|
||||
[item setString: nil];
|
||||
|
||||
// if item is invalid, should attempt to remove...
|
||||
if (![item valid]) {
|
||||
@@ -625,15 +657,165 @@ static NSString *kDragType = @"private.ample.media";
|
||||
}
|
||||
|
||||
- (IBAction)pathAction:(id)sender {
|
||||
// need to update the eject button...
|
||||
|
||||
NSURL *url = [(NSPathControl *)sender URL];
|
||||
|
||||
if (url) {
|
||||
NSInteger tag = [sender tag];
|
||||
// TODO - don't add to recent disks if this is a bitbanger / midi / printer device.
|
||||
if (url && tag == 0) {
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc postNotificationName: @"DiskImageAdded" object: url];
|
||||
}
|
||||
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
-(IBAction)textAction: (id)sender {
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
-(IBAction)resetMedia:(id)sender {
|
||||
[self resetDiskImages];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MediaViewController (Bookmark)
|
||||
|
||||
-(void)willLoadBookmark:(NSDictionary *)bookmark {
|
||||
_loadingBookmark = YES;
|
||||
[self resetDiskImages];
|
||||
}
|
||||
-(void)didLoadBookmark:(NSDictionary *)bookmark {
|
||||
_loadingBookmark = NO;
|
||||
|
||||
|
||||
[self rebuildRoot];
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
static NSString * BookmarkStrings[] = {
|
||||
@"flop_525", @"flop_35", @"hard", @"cdrm", @"cass", @"disk", @"bitb",
|
||||
};
|
||||
static_assert(SIZEOF(BookmarkStrings) == CATEGORY_COUNT, "Missing item");
|
||||
|
||||
static int BookmarkIndex(NSString *str) {
|
||||
if (!str) return -1;
|
||||
for (int i = 0; i < SIZEOF(BookmarkStrings); ++i) {
|
||||
if ([str isEqualToString: BookmarkStrings[i]]) return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
-(BOOL)loadBookmark: (NSDictionary *)bookmark {
|
||||
|
||||
// fragile - depends on order
|
||||
id media = [bookmark objectForKey: @"media"];
|
||||
|
||||
if ([media isKindOfClass: [NSArray class]]) {
|
||||
unsigned ix = 0;
|
||||
for (NSArray *a in (NSArray *)media) {
|
||||
if (ix >= CATEGORY_COUNT) {
|
||||
NSLog(@"MediaViewController: too many categories.");
|
||||
break;
|
||||
}
|
||||
MediaCategory *cat = _data[ix];
|
||||
NSInteger count = [cat count];
|
||||
unsigned i = 0;
|
||||
for (NSString *path in a) {
|
||||
if (i >= count) {
|
||||
NSLog(@"MediaViewController: too many files.");
|
||||
break; //
|
||||
}
|
||||
MediaItem *item = [cat objectAtIndex: i++];
|
||||
if (![path length]) continue;
|
||||
|
||||
if (ix == kIndexBitBanger) {
|
||||
[item setString: path];
|
||||
} else {
|
||||
NSURL *url = [NSURL fileURLWithPath: path];
|
||||
[item setUrl: url];
|
||||
}
|
||||
}
|
||||
++ix;
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
if ([media isKindOfClass: [NSDictionary class]]) {
|
||||
|
||||
for (NSString *key in (NSDictionary *)media) {
|
||||
NSInteger ix = BookmarkIndex(key);
|
||||
if (ix < 0) {
|
||||
NSLog(@"MediaViewController: unrecognized category: %@", key);
|
||||
continue;
|
||||
}
|
||||
MediaCategory *cat = _data[ix];
|
||||
NSInteger count = [cat count];
|
||||
NSArray *a = [(NSDictionary *)media objectForKey: key];
|
||||
unsigned i = 0;
|
||||
|
||||
for (NSString *path in a) {
|
||||
if (i >= count) {
|
||||
NSLog(@"MediaViewController: too many files.");
|
||||
break; //
|
||||
}
|
||||
MediaItem *item = [cat objectAtIndex: i++];
|
||||
if (![path length]) continue;
|
||||
|
||||
if (ix == kIndexBitBanger) {
|
||||
[item setString: path];
|
||||
} else {
|
||||
NSURL *url = [NSURL fileURLWithPath: path];
|
||||
[item setUrl: url];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
static void CompressArray(NSMutableArray *array) {
|
||||
|
||||
for(;;) {
|
||||
NSString *s = [array lastObject];
|
||||
if (!s) return;
|
||||
if ([s length]) return;
|
||||
[array removeLastObject];
|
||||
}
|
||||
}
|
||||
|
||||
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark {
|
||||
|
||||
|
||||
NSMutableDictionary *media = [NSMutableDictionary new];
|
||||
|
||||
for (unsigned ix = 0; ix < CATEGORY_COUNT; ++ix) {
|
||||
|
||||
MediaCategory *cat = _data[ix];
|
||||
NSInteger count = [cat validCount];
|
||||
if (!count) continue;
|
||||
|
||||
NSMutableArray *array = [NSMutableArray new];
|
||||
for (NSInteger i = 0; i < count; ++i) {
|
||||
|
||||
MediaItem *item = [cat objectAtIndex: i];
|
||||
NSString *s = [item argument];
|
||||
if (!s) s = @"";
|
||||
[array addObject: s];
|
||||
}
|
||||
|
||||
CompressArray(array);
|
||||
|
||||
if ([array count])
|
||||
[media setObject: array forKey: BookmarkStrings[ix]];
|
||||
}
|
||||
|
||||
[bookmark setObject: media forKey: @"media"];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// NewMachineViewController.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 6/8/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Ample.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NewMachineViewController : NSViewController
|
||||
|
||||
@property (nullable) NSString *machine;
|
||||
|
||||
-(void)reset;
|
||||
|
||||
@end
|
||||
|
||||
@interface NewMachineViewController (Table) <NSOutlineViewDelegate, NSOutlineViewDataSource>
|
||||
|
||||
@end
|
||||
|
||||
@interface NewMachineViewController (Bookmark) <Bookmark>
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,234 @@
|
||||
//
|
||||
// NewMachineViewController.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 6/8/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "NewMachineViewController.h"
|
||||
|
||||
@interface NewMachineViewController () {
|
||||
|
||||
NSArray *_data;
|
||||
}
|
||||
|
||||
@property (weak) IBOutlet NSOutlineView *outlineView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NewMachineViewController
|
||||
|
||||
-(void)awakeFromNib {
|
||||
|
||||
static unsigned first = 0;
|
||||
|
||||
if (first) return;
|
||||
first++;
|
||||
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSString *path = [bundle pathForResource: @"models" ofType: @"plist"];
|
||||
_data = [NSArray arrayWithContentsOfFile: path];
|
||||
|
||||
}
|
||||
|
||||
-(void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
//[_outlineView reloadData];
|
||||
//[_outlineView setAutosaveExpandedItems: YES];
|
||||
//[_outlineView expandItem: nil expandChildren: YES];
|
||||
}
|
||||
|
||||
#pragma mark - IBActions
|
||||
- (IBAction)clickAction:(id)sender {
|
||||
|
||||
NSInteger row = [_outlineView clickedRow];
|
||||
if (row < 0) return;
|
||||
NSDictionary *item = [_outlineView itemAtRow: row];
|
||||
if (!item) return;
|
||||
|
||||
NSString *value = [item objectForKey: @"value"];
|
||||
NSArray *children = [item objectForKey: @"children"];
|
||||
|
||||
if (value) {
|
||||
[self setMachine: value];
|
||||
} else if (children) {
|
||||
id ap = [_outlineView animator];
|
||||
[_outlineView isItemExpanded: item] ? [ap collapseItem: item] : [ap expandItem: item];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
-(void)reset {
|
||||
|
||||
[_outlineView deselectAll: nil];
|
||||
[self setMachine: nil];
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
@implementation NewMachineViewController (Table)
|
||||
|
||||
#if 0
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldCollapseItem:(id)item {
|
||||
return NO;
|
||||
}
|
||||
#endif
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldShowOutlineCellForItem:(id)item {
|
||||
// disclosure triangle.
|
||||
if (!item) return YES;
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
return [children count] > 0;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
|
||||
if (!item) return YES;
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
return [children count] > 0;
|
||||
}
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item {
|
||||
|
||||
#if 0
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
return [children count] > 0;
|
||||
#else
|
||||
return NO;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
|
||||
|
||||
#if 0
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
if ([children count]) {
|
||||
return [outlineView makeViewWithIdentifier: @"HeaderCell" owner: self];
|
||||
}
|
||||
#endif
|
||||
NSTableCellView *v = [outlineView makeViewWithIdentifier: @"DataCell" owner: self];
|
||||
//[v setObjectValue: item];
|
||||
return v;
|
||||
}
|
||||
|
||||
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
|
||||
if (!item) return [_data count];
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
return [children count];
|
||||
}
|
||||
|
||||
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
|
||||
|
||||
if (item == nil) {
|
||||
return [_data objectAtIndex: index];
|
||||
}
|
||||
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
|
||||
return [children objectAtIndex: index];
|
||||
}
|
||||
|
||||
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item {
|
||||
if (!item) return NO;
|
||||
return [(NSDictionary *)item objectForKey: @"value"] != nil;
|
||||
}
|
||||
|
||||
|
||||
// saving/restoring expanded items
|
||||
- (id)outlineView:(NSOutlineView *)outlineView persistentObjectForItem:(id)item {
|
||||
|
||||
return [item objectForKey: @"description"];
|
||||
}
|
||||
|
||||
- (id)outlineView:(NSOutlineView *)outlineView itemForPersistentObject:(id)object {
|
||||
|
||||
if ([object isKindOfClass: [NSString class]]) {
|
||||
|
||||
for(NSDictionary *d in _data) {
|
||||
if ([(NSString *)object isEqualToString: [d objectForKey: @"description"]])
|
||||
return d;
|
||||
}
|
||||
|
||||
}
|
||||
return nil;
|
||||
//return object;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation NewMachineViewController (Bookmark)
|
||||
|
||||
|
||||
- (void)didLoadBookmark:(NSDictionary *)bookmark {
|
||||
}
|
||||
|
||||
- (BOOL)loadBookmark:(NSDictionary *)bookmark {
|
||||
NSString *machine = [bookmark objectForKey: @"machine"];
|
||||
|
||||
|
||||
|
||||
//NSInteger row = [_outlineView selectedRow];
|
||||
if (!machine) {
|
||||
[self setMachine: nil];
|
||||
[_outlineView deselectAll: nil];
|
||||
return NO;
|
||||
}
|
||||
|
||||
for (NSDictionary *parent in _data) {
|
||||
NSArray *children = [parent objectForKey: @"children"];
|
||||
|
||||
for (NSDictionary *child in children) {
|
||||
if ([machine isEqualToString: [child objectForKey: @"value"]]) {
|
||||
|
||||
id ap = [_outlineView animator];
|
||||
[ap expandItem: parent];
|
||||
NSInteger row = [_outlineView rowForItem: child];
|
||||
if (row >= 0) {
|
||||
NSIndexSet *set = [NSIndexSet indexSetWithIndex: row];
|
||||
[_outlineView selectRowIndexes: set byExtendingSelection: NO];
|
||||
[_outlineView scrollRowToVisible: row];
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
// could also match parent.
|
||||
if ([machine isEqualToString: [parent objectForKey: @"value"]]) {
|
||||
NSInteger row = [_outlineView rowForItem: parent];
|
||||
if (row >= 0) {
|
||||
NSIndexSet *set = [NSIndexSet indexSetWithIndex: row];
|
||||
[_outlineView selectRowIndexes: set byExtendingSelection: NO];
|
||||
[_outlineView scrollRowToVisible: row];
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (BOOL)saveBookmark:(NSMutableDictionary *)bookmark {
|
||||
// machine saved in parent.
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)willLoadBookmark:(NSDictionary *)bookmark {
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,29 +0,0 @@
|
||||
//
|
||||
// NewSlotViewController.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/9/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Media.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NewSlotViewController : NSViewController
|
||||
|
||||
@property NSArray *args;
|
||||
@property Media media;
|
||||
@property NSSize resolution;
|
||||
@property (nonatomic) NSString *machine;
|
||||
@end
|
||||
|
||||
@interface NewSlotViewController (OutlineView) <NSOutlineViewDelegate, NSOutlineViewDataSource>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -1,342 +0,0 @@
|
||||
//
|
||||
// NewSlotViewController.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 9/9/2020.
|
||||
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
#import "Ample.h"
|
||||
#import "NewSlotViewController.h"
|
||||
#import "Menu.h"
|
||||
#import "Slot.h"
|
||||
#import "Media.h"
|
||||
|
||||
|
||||
#import <objc/runtime.h>
|
||||
|
||||
/* number of slot types. bitmask used so should be < sizeof(unsigned *8) */
|
||||
#define SLOT_COUNT 22
|
||||
static_assert(SLOT_COUNT <= sizeof(unsigned) * 8, "too many slot types");
|
||||
|
||||
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
|
||||
static unsigned RootKey = 0;
|
||||
|
||||
|
||||
@interface NewSlotViewController ()
|
||||
@property (weak) IBOutlet NSOutlineView *outlineView;
|
||||
@property (weak) IBOutlet NSOutlineView *childOutlineView;
|
||||
|
||||
@end
|
||||
|
||||
@implementation NewSlotViewController {
|
||||
NSArray *_root;
|
||||
|
||||
unsigned _slots_explicit;
|
||||
unsigned _slots_valid;
|
||||
unsigned _slots_default;
|
||||
|
||||
Slot *_slot_object[SLOT_COUNT];
|
||||
NSString *_slot_value[SLOT_COUNT]; // when explicitely set.
|
||||
|
||||
Media _slot_media[SLOT_COUNT];
|
||||
Media _machine_media;
|
||||
|
||||
NSDictionary *_machine_data;
|
||||
|
||||
IBOutlet NSPopover *_popover;
|
||||
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do view setup here.
|
||||
|
||||
_root = @[];
|
||||
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
|
||||
|
||||
|
||||
//[_outlineView setIndentationPerLevel: 2.0];
|
||||
}
|
||||
|
||||
-(void)resetMachine {
|
||||
|
||||
_root = @[];
|
||||
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
|
||||
|
||||
[_outlineView reloadData];
|
||||
|
||||
_slots_valid = 0;
|
||||
_slots_explicit = 0;
|
||||
_slots_default = 0;
|
||||
_machine_media = EmptyMedia;
|
||||
_machine_data = nil;
|
||||
|
||||
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
|
||||
_slot_media[i] = EmptyMedia;
|
||||
_slot_object[i] = nil;
|
||||
_slot_value[i] = nil;
|
||||
}
|
||||
|
||||
[self setResolution: NSMakeSize(0, 0)];
|
||||
[self setArgs: @[]];
|
||||
[self setMedia: EmptyMedia];
|
||||
}
|
||||
|
||||
|
||||
-(void)loadMachine {
|
||||
|
||||
|
||||
NSDictionary *d = MameMachine(_machine);
|
||||
|
||||
|
||||
if (!d) {
|
||||
[self resetMachine];
|
||||
return;
|
||||
}
|
||||
|
||||
NSArray *r = [d objectForKey: @"resolution"];
|
||||
NSSize res = NSMakeSize(0, 0);
|
||||
if (r) {
|
||||
res.width = [(NSNumber *)[r objectAtIndex: 0 /*@"width"*/] doubleValue];
|
||||
res.height = [(NSNumber *)[r objectAtIndex: 1 /*@"height"*/] doubleValue];
|
||||
}
|
||||
[self setResolution: res];
|
||||
|
||||
_slots_valid = 0;
|
||||
//_slots_explicit = 0;
|
||||
_slots_default = 0;
|
||||
|
||||
_machine_media = MediaFromDictionary([d objectForKey: @"media"]);
|
||||
|
||||
_machine_data = d;
|
||||
|
||||
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
|
||||
_slot_media[i] = EmptyMedia;
|
||||
_slot_object[i] = nil;
|
||||
}
|
||||
|
||||
|
||||
extern NSArray *BuildSlots(NSString *name, NSDictionary *data);
|
||||
_root = BuildSlots(_machine, d);
|
||||
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
|
||||
|
||||
for (Slot *item in _root) {
|
||||
NSInteger index = [item index];
|
||||
if (index < 0) continue;
|
||||
unsigned mask = 1 << index;
|
||||
|
||||
_slots_valid |= mask;
|
||||
if ([item defaultIndex] >= 0)
|
||||
_slots_default |= mask;
|
||||
|
||||
if (_slot_value[index])
|
||||
[item selectValue: _slot_value[index]];
|
||||
|
||||
_slot_media[index] = [item selectedMedia];
|
||||
_slot_object[index] = item;
|
||||
}
|
||||
|
||||
|
||||
[_outlineView reloadData];
|
||||
[self rebuildMedia];
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
-(void)setMachine: (NSString *)machine {
|
||||
if (_machine == machine) return;
|
||||
if (_machine && machine && [machine compare: _machine] == NSOrderedSame) return;
|
||||
_machine = machine;
|
||||
|
||||
if (!machine) {
|
||||
[self resetMachine];
|
||||
return;
|
||||
}
|
||||
[self loadMachine];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
-(void)rebuildMedia {
|
||||
|
||||
|
||||
Media media = _machine_media;
|
||||
|
||||
unsigned mask = 1;
|
||||
for (unsigned i = 0; i < SLOT_COUNT; ++i, mask <<= 1) {
|
||||
|
||||
if (_slots_valid & mask) {
|
||||
MediaAdd(&media, &_slot_media[i]);
|
||||
}
|
||||
}
|
||||
|
||||
[self setMedia: media];
|
||||
}
|
||||
|
||||
|
||||
-(void)rebuildArgs {
|
||||
|
||||
NSMutableArray *args = [NSMutableArray new];
|
||||
|
||||
for (Slot *item in _root) {
|
||||
|
||||
NSArray *x = [item args];
|
||||
if (x) [args addObjectsFromArray: x];
|
||||
}
|
||||
|
||||
[self setArgs: args];
|
||||
}
|
||||
|
||||
- (IBAction)menuChanged:(NSPopUpButton *)sender {
|
||||
|
||||
BOOL direct = YES;
|
||||
NSInteger index = [sender tag];
|
||||
if (index < 0) return; //
|
||||
|
||||
if (index >= 0 && index < SLOT_COUNT) {
|
||||
direct = YES;
|
||||
} else {
|
||||
direct = NO;
|
||||
index &= ~0x10000;
|
||||
}
|
||||
if (index >= SLOT_COUNT) return; //
|
||||
unsigned mask = 1 << index;
|
||||
|
||||
|
||||
// index 0 = ram = special case...
|
||||
|
||||
SlotOption *o = [[sender selectedItem] representedObject];
|
||||
Slot *item = _slot_object[index];
|
||||
|
||||
if (direct) {
|
||||
_slots_explicit |= mask;
|
||||
_slot_value[index] = [o value];
|
||||
//_slots_default &= ~mask;
|
||||
}
|
||||
|
||||
Media media = [item selectedMedia];
|
||||
if (!MediaEqual(&media, &_slot_media[index])) {
|
||||
_slot_media[index] = media;
|
||||
[self rebuildMedia];
|
||||
|
||||
}
|
||||
|
||||
// needs to reload children if expanded.
|
||||
#ifdef SLOT_TREE
|
||||
if (direct) {
|
||||
BOOL rc = ([_outlineView isItemExpanded: item]);
|
||||
[_outlineView reloadItem: item reloadChildren: rc];
|
||||
}
|
||||
#endif
|
||||
[self rebuildArgs];
|
||||
}
|
||||
- (IBAction)hamburger:(id)sender {
|
||||
|
||||
#if 0
|
||||
if ([_popover isShown]) {
|
||||
[_popover close];
|
||||
}
|
||||
#endif
|
||||
|
||||
NSInteger index = [sender tag];
|
||||
if (index < 0 || index >= SLOT_COUNT) return;
|
||||
|
||||
Slot *item = _slot_object[index];
|
||||
|
||||
NSArray *children = [item selectedChildren];
|
||||
objc_setAssociatedObject(_childOutlineView, &RootKey, children, OBJC_ASSOCIATION_RETAIN);
|
||||
if (!children) return;
|
||||
|
||||
[_childOutlineView reloadData];
|
||||
NSSize size = [_popover contentSize];
|
||||
if (size.width < 200) size.width = 250;
|
||||
size = [_childOutlineView sizeThatFits: size];
|
||||
size.height += 40;
|
||||
[_popover setContentSize: size];
|
||||
|
||||
[_popover showRelativeToRect: [sender bounds]
|
||||
ofView: sender
|
||||
preferredEdge: NSRectEdgeMaxY];
|
||||
}
|
||||
|
||||
-(IBAction)resetSlots:(id)sender {
|
||||
|
||||
_slots_explicit = 0;
|
||||
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
|
||||
_slot_media[i] = EmptyMedia;
|
||||
_slot_value[i] = nil;
|
||||
}
|
||||
for (Slot *item in _root) {
|
||||
[item reset];
|
||||
// if children, reset them too...
|
||||
NSInteger index = [item index];
|
||||
if (index < 0) continue;
|
||||
_slot_media[index] = [item selectedMedia];
|
||||
}
|
||||
|
||||
#ifdef SLOT_TREE
|
||||
[_outlineView reloadData];
|
||||
#endif
|
||||
[self rebuildMedia];
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation NewSlotViewController (OutlineView)
|
||||
|
||||
|
||||
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
|
||||
|
||||
NSArray *root = objc_getAssociatedObject(outlineView, &RootKey);
|
||||
if (!item) return [root count];
|
||||
|
||||
#ifdef SLOT_TREE
|
||||
NSArray *tmp = [(Slot *)item selectedChildren];
|
||||
return [tmp count];
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
|
||||
NSArray *root = objc_getAssociatedObject(outlineView, &RootKey);
|
||||
|
||||
if (!item) return [root objectAtIndex: index];
|
||||
#ifdef SLOT_TREE
|
||||
NSArray *tmp = [(Slot *)item selectedChildren];
|
||||
return [tmp objectAtIndex: index];
|
||||
#endif
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
|
||||
|
||||
#ifdef SLOT_TREE
|
||||
if (!item) return NO;
|
||||
NSArray *tmp = [(Slot *)item selectedChildren];
|
||||
return [tmp count] > 0;
|
||||
#else
|
||||
return NO;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(Slot *)item {
|
||||
|
||||
SlotTableCellView *v = [outlineView makeViewWithIdentifier: @"MenuCell" owner: self];
|
||||
|
||||
[item prepareView: v];
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -56,20 +56,25 @@
|
||||
}
|
||||
</style>
|
||||
<script type="text/javascript">
|
||||
function macbook(onoff) {
|
||||
/* os x 10.11 */
|
||||
if (window.NodeList && !NodeList.prototype.forEach) {
|
||||
NodeList.prototype.forEach = Array.prototype.forEach;
|
||||
}
|
||||
|
||||
function macbook(onoff) {
|
||||
var nodes = document.querySelectorAll("[data-macbook]");
|
||||
nodes.forEach( (e) => {
|
||||
nodes.forEach( function(e) {
|
||||
var m = (e.dataset.macbook == "true");
|
||||
e.hidden = m ^ onoff;
|
||||
});
|
||||
}
|
||||
window.addEventListener('load', (event)=> {
|
||||
window.addEventListener('load', function(event) {
|
||||
macbook(false);
|
||||
|
||||
var e = document.getElementById('macbook');
|
||||
if (e) {
|
||||
e.checked = false;
|
||||
e.addEventListener('click', (event) => {
|
||||
e.addEventListener('click', function (event) {
|
||||
macbook(e.checked);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3975,6 +3975,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3983,6 +3988,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5224,6 +5234,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5232,6 +5247,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5620,6 +5640,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5628,6 +5653,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5746,6 +5776,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5754,6 +5789,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3975,6 +3975,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3983,6 +3988,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5224,6 +5234,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5232,6 +5247,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5620,6 +5640,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5628,6 +5653,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5746,6 +5776,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5754,6 +5789,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -165,6 +165,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -173,6 +178,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -286,6 +296,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -294,6 +309,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -190,6 +190,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -198,6 +203,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -311,6 +321,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -319,6 +334,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3602,6 +3602,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3610,6 +3615,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3723,6 +3733,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3731,6 +3746,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4257,6 +4277,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4265,6 +4290,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6414,6 +6444,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6422,6 +6457,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6925,6 +6965,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6933,6 +6978,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7051,6 +7101,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7059,6 +7114,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7479,7 +7539,8 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2gs.xml</string>
|
||||
<string>apple2gs_flop_orig.xml</string>
|
||||
<string>apple2gs_flop_misc.xml</string>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
|
||||
@@ -3642,6 +3642,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3650,6 +3655,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3763,6 +3773,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3771,6 +3786,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4297,6 +4317,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4305,6 +4330,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6454,6 +6484,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6462,6 +6497,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6965,6 +7005,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6973,6 +7018,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7091,6 +7141,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7099,6 +7154,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7519,7 +7579,8 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2gs.xml</string>
|
||||
<string>apple2gs_flop_orig.xml</string>
|
||||
<string>apple2gs_flop_misc.xml</string>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
|
||||
@@ -3642,6 +3642,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3650,6 +3655,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3763,6 +3773,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3771,6 +3786,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4297,6 +4317,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4305,6 +4330,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6454,6 +6484,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6462,6 +6497,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6965,6 +7005,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6973,6 +7018,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7091,6 +7141,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7099,6 +7154,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7519,7 +7579,8 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2gs.xml</string>
|
||||
<string>apple2gs_flop_orig.xml</string>
|
||||
<string>apple2gs_flop_misc.xml</string>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -129,6 +129,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2aplcrd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard Sound/Speech I</string>
|
||||
<key>devname</key>
|
||||
<string>a2mockbd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>thclock</string>
|
||||
@@ -137,6 +145,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2thunpl</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>titan3plus2</string>
|
||||
<key>description</key>
|
||||
<string>Titan /// Plus //</string>
|
||||
<key>devname</key>
|
||||
<string>titan3p2</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -194,6 +210,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2aplcrd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard Sound/Speech I</string>
|
||||
<key>devname</key>
|
||||
<string>a2mockbd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>thclock</string>
|
||||
@@ -202,6 +226,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2thunpl</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>titan3plus2</string>
|
||||
<key>description</key>
|
||||
<string>Titan /// Plus //</string>
|
||||
<key>devname</key>
|
||||
<string>titan3p2</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -259,6 +291,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2aplcrd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard Sound/Speech I</string>
|
||||
<key>devname</key>
|
||||
<string>a2mockbd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>thclock</string>
|
||||
@@ -267,6 +307,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2thunpl</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>titan3plus2</string>
|
||||
<key>description</key>
|
||||
<string>Titan /// Plus //</string>
|
||||
<key>devname</key>
|
||||
<string>titan3p2</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -324,6 +372,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2aplcrd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard Sound/Speech I</string>
|
||||
<key>devname</key>
|
||||
<string>a2mockbd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>thclock</string>
|
||||
@@ -332,6 +388,14 @@
|
||||
<key>devname</key>
|
||||
<string>a2thunpl</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>titan3plus2</string>
|
||||
<key>description</key>
|
||||
<string>Titan /// Plus //</string>
|
||||
<key>devname</key>
|
||||
<string>titan3p2</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -396,6 +460,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -404,6 +473,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1119,6 +1193,60 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>titan3p2</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:gameio</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>joy</string>
|
||||
<key>description</key>
|
||||
<string>Apple II analog joysticks</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>paddles</string>
|
||||
<key>description</key>
|
||||
<string>Apple II paddles</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>compeyes</string>
|
||||
<key>description</key>
|
||||
<string>Digital Vision ComputerEyes</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>gizmo</string>
|
||||
<key>description</key>
|
||||
<string>HAL Labs Gizmo</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
|
||||
@@ -3975,6 +3975,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3983,6 +3988,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5224,6 +5234,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5232,6 +5247,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5620,6 +5640,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5628,6 +5653,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5746,6 +5776,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5754,6 +5789,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3224,6 +3224,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3232,6 +3237,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5506,6 +5516,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5514,6 +5529,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5991,6 +6011,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5999,6 +6024,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6117,6 +6147,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6125,6 +6160,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3224,6 +3224,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3232,6 +3237,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5506,6 +5516,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5514,6 +5529,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5991,6 +6011,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5999,6 +6024,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6117,6 +6147,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6125,6 +6160,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3224,6 +3224,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3232,6 +3237,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5506,6 +5516,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5514,6 +5529,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5991,6 +6011,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5999,6 +6024,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6117,6 +6147,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6125,6 +6160,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3224,6 +3224,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3232,6 +3237,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5506,6 +5516,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5514,6 +5529,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5991,6 +6011,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5999,6 +6024,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6117,6 +6147,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6125,6 +6160,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3224,6 +3224,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3232,6 +3237,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5506,6 +5516,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5514,6 +5529,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5991,6 +6011,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5999,6 +6024,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6117,6 +6147,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6125,6 +6160,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -188,6 +188,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -196,6 +201,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -309,6 +319,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -317,6 +332,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -1288,6 +1288,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1296,6 +1301,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1409,6 +1419,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1417,6 +1432,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1772,6 +1792,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1780,6 +1805,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4054,6 +4084,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4062,6 +4097,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4539,6 +4579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4547,6 +4592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4665,6 +4715,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4673,6 +4728,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -1288,6 +1288,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1296,6 +1301,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1409,6 +1419,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>devname</key>
|
||||
<string>null_modem</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1417,6 +1432,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1772,6 +1792,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1780,6 +1805,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4054,6 +4084,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4062,6 +4097,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4539,6 +4579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4547,6 +4592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4665,6 +4715,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4673,6 +4728,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -1436,6 +1436,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1474,6 +1479,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1505,6 +1515,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1536,6 +1551,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1567,6 +1587,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1585,6 +1610,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -502,6 +502,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -484,6 +484,7 @@
|
||||
<array>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1436,6 +1436,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1474,6 +1479,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1505,6 +1515,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1536,6 +1551,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1567,6 +1587,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -1004,6 +1004,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1042,6 +1047,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1073,6 +1083,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1104,6 +1119,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1135,6 +1155,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1151,6 +1176,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -986,6 +986,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1024,6 +1029,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1055,6 +1065,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1086,6 +1101,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1117,6 +1137,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1135,6 +1160,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1436,6 +1436,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1474,6 +1479,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1505,6 +1515,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1536,6 +1551,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1567,6 +1587,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -532,6 +532,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -1084,6 +1084,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1122,6 +1127,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1153,6 +1163,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1184,6 +1199,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1215,6 +1235,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1231,6 +1256,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -1084,6 +1084,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1122,6 +1127,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1153,6 +1163,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1184,6 +1199,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1215,6 +1235,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1231,6 +1256,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -1436,6 +1436,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1474,6 +1479,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1505,6 +1515,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1536,6 +1551,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1567,6 +1587,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -1585,6 +1610,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -502,6 +502,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -492,6 +492,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -522,6 +522,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -532,6 +532,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -484,6 +484,7 @@
|
||||
<array>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -4287,6 +4287,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -4295,6 +4300,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6569,6 +6579,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -6577,6 +6592,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7054,6 +7074,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7062,6 +7087,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7180,6 +7210,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -7188,6 +7223,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
@@ -3915,6 +3915,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -3923,6 +3928,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5164,6 +5174,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5172,6 +5187,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5560,6 +5580,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5568,6 +5593,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5686,6 +5716,11 @@
|
||||
<string>RS232 Null Modem</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -5694,6 +5729,11 @@
|
||||
<string>RS232 Synchronous I/O</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>bitbanger</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
|
||||
Loaded 100 of 126 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user