mirror of
https://github.com/ksherlock/ample.git
synced 2026-04-24 10:16:45 +00:00
Compare commits
119 Commits
release-12
...
r25
| Author | SHA1 | Date | |
|---|---|---|---|
| 7633887391 | |||
| c49c4df9bf | |||
| eda219faa2 | |||
| 5382447dc9 | |||
| 8f989c0d3f | |||
| 1141e3da0d | |||
| c5eeec9b6d | |||
| 2122f0707b | |||
| 809e344a2d | |||
| 405e802176 | |||
| d352e7c45d | |||
| 5af5e2e300 | |||
| afc3ac608a | |||
| c200672650 | |||
| 345d4f3d74 | |||
| b795d60995 | |||
| 09b4972084 | |||
| 49c191bf5f | |||
| 7f5efc1479 | |||
| c7fa95c918 | |||
| 7178118ea9 | |||
| e9654f01c0 | |||
| 098b8cb7da | |||
| 35b60b1358 | |||
| 0c56be79f3 | |||
| e66502ea42 | |||
| 70f4738264 | |||
| 026a9e7704 | |||
| 7a482191ab | |||
| 3827cce320 | |||
| 82fbe43795 | |||
| acfc37675b | |||
| fa64005345 | |||
| f79fb60883 | |||
| d92145f6b4 | |||
| 139ab22f2a | |||
| b58a859398 | |||
| a278f679b0 | |||
| 0c55214085 | |||
| 7c704e577d | |||
| d52c2cd9d1 | |||
| 5aa8990ac6 | |||
| 82a73ef79c | |||
| 0d4a08113b | |||
| fc3bae79c3 | |||
| 053b9d84db | |||
| c7d0a2aecb | |||
| 5a098b9d00 | |||
| abf4e027ee | |||
| ec020cf028 | |||
| 9ab4b8373d | |||
| 796b1f2fc8 | |||
| d7b3c763dd | |||
| 32aad8cb61 | |||
| 1eb3811611 | |||
| ac459adb57 | |||
| 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 | |||
| 6468ee2629 | |||
| 5f84c4b2c1 | |||
| 8944c88339 | |||
| 3d4d0c92c7 | |||
| e48e2a9223 | |||
| a8e03a9490 | |||
| 5e87627251 | |||
| 41de913e5f | |||
| 5f3c346562 | |||
| d992b6960d | |||
| bc9e156af0 |
@@ -1,6 +1,9 @@
|
||||
dist
|
||||
embedded/mame64
|
||||
embedded/SDL2.framework
|
||||
embedded/Sparkle.framework
|
||||
embedded/Sparkle-*
|
||||
embedded/SDL2-*
|
||||
build
|
||||
embedded/mame-data.tgz
|
||||
__pycache__
|
||||
|
||||
+202
-75
@@ -62,6 +62,16 @@
|
||||
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 */; };
|
||||
B618B8C42729F6690045C2D8 /* laser128o.plist in Resources */ = {isa = PBXBuildFile; fileRef = B618B8C32729F6690045C2D8 /* laser128o.plist */; };
|
||||
B618B8C52729F6690045C2D8 /* laser128o.plist in Resources */ = {isa = PBXBuildFile; fileRef = B618B8C32729F6690045C2D8 /* laser128o.plist */; };
|
||||
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 */; };
|
||||
@@ -110,6 +120,10 @@
|
||||
B63C1F1025B1447C0016A611 /* CheatSheetWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B63C1F0E25B1447C0016A611 /* CheatSheetWindowController.m */; };
|
||||
B63C1F1225B147E10016A611 /* CheatSheet.html in Resources */ = {isa = PBXBuildFile; fileRef = B63C1F1125B147E10016A611 /* CheatSheet.html */; };
|
||||
B63C1F1325B147E10016A611 /* CheatSheet.html in Resources */ = {isa = PBXBuildFile; fileRef = B63C1F1125B147E10016A611 /* CheatSheet.html */; };
|
||||
B63E57E22755AF2000F8B5D1 /* ace500.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63E57E12755AF1F00F8B5D1 /* ace500.plist */; };
|
||||
B63E57E32755AF2000F8B5D1 /* ace500.plist in Resources */ = {isa = PBXBuildFile; fileRef = B63E57E12755AF1F00F8B5D1 /* ace500.plist */; };
|
||||
B646D10B263A5DF30014C586 /* ace1000.plist in Resources */ = {isa = PBXBuildFile; fileRef = B646D10A263A5DF20014C586 /* ace1000.plist */; };
|
||||
B646D10C263A5DF30014C586 /* ace1000.plist in Resources */ = {isa = PBXBuildFile; fileRef = B646D10A263A5DF20014C586 /* ace1000.plist */; };
|
||||
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64979C124EF6703008ABD20 /* MediaViewController.m */; };
|
||||
B64AF1EE250EC35B00A09B9B /* DiskImages.xib in Resources */ = {isa = PBXBuildFile; fileRef = B64AF1EC250EC35B00A09B9B /* DiskImages.xib */; };
|
||||
B64AF1EF250EC35B00A09B9B /* DiskImages.xib in Resources */ = {isa = PBXBuildFile; fileRef = B64AF1EC250EC35B00A09B9B /* DiskImages.xib */; };
|
||||
@@ -119,7 +133,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 */; };
|
||||
@@ -131,13 +144,23 @@
|
||||
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */; };
|
||||
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B66236B224FDA522006CABD7 /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
B66236C124FDB7A6006CABD7 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B66236BF24FDB7A6006CABD7 /* Credits.rtf */; };
|
||||
B6665C14265A0E3E00254939 /* AutocompleteControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B6665C13265A0E3E00254939 /* AutocompleteControl.m */; };
|
||||
B6665C15265A0E3E00254939 /* AutocompleteControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B6665C13265A0E3E00254939 /* AutocompleteControl.m */; };
|
||||
B6665C1C265C639A00254939 /* Autocomplete.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6665C1A265C639900254939 /* Autocomplete.xib */; };
|
||||
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6665C1A265C639900254939 /* Autocomplete.xib */; };
|
||||
B66D0FE72611386C000902F1 /* SoftwareList.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D0FE62611386B000902F1 /* SoftwareList.m */; };
|
||||
B66D0FE82611386C000902F1 /* SoftwareList.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D0FE62611386B000902F1 /* SoftwareList.m */; };
|
||||
B6841BD7251EC926006A5C39 /* vmnet_helper.c in Sources */ = {isa = PBXBuildFile; fileRef = B6841BCA251EC88E006A5C39 /* vmnet_helper.c */; };
|
||||
B6841BDA251ECB1C006A5C39 /* mame64 in CopyFiles */ = {isa = PBXBuildFile; fileRef = B66236B824FDA698006CABD7 /* mame64 */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
B6841BDE251ECC29006A5C39 /* vmnet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B6841BDD251ECC29006A5C39 /* vmnet.framework */; };
|
||||
B68A899026BE18E000B2C8C6 /* MidiManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B68A898F26BE18E000B2C8C6 /* MidiManager.m */; };
|
||||
B68A899126BE18E000B2C8C6 /* MidiManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B68A898F26BE18E000B2C8C6 /* MidiManager.m */; };
|
||||
B68A899426BF124B00B2C8C6 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B68A899326BF124B00B2C8C6 /* CoreMIDI.framework */; };
|
||||
B68A899526BF12A600B2C8C6 /* CoreMIDI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B68A899326BF124B00B2C8C6 /* CoreMIDI.framework */; };
|
||||
B6A1A1942528EB1700DB0FD7 /* Menu.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A1A1932528EB1700DB0FD7 /* Menu.m */; };
|
||||
B6A1A1952528EB1700DB0FD7 /* Menu.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A1A1932528EB1700DB0FD7 /* Menu.m */; };
|
||||
B6ABF47C275986EB00DC3D48 /* ace2200.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6ABF47B275986EA00DC3D48 /* ace2200.plist */; };
|
||||
B6ABF47D275986EB00DC3D48 /* ace2200.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6ABF47B275986EA00DC3D48 /* ace2200.plist */; };
|
||||
B6B9EA662506A5550080E70D /* EjectButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9EA642506A5550080E70D /* EjectButton.m */; };
|
||||
B6B9EA672506A5550080E70D /* EjectButton.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9EA642506A5550080E70D /* EjectButton.m */; };
|
||||
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA257F24E99BE9005FB8FF /* AppDelegate.m */; };
|
||||
@@ -192,7 +215,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 */; };
|
||||
@@ -251,8 +273,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 */
|
||||
@@ -272,6 +298,7 @@
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */,
|
||||
B635C09B26784A1200B23BFD /* Sparkle.framework in Embed Frameworks */,
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -315,10 +342,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>"; };
|
||||
@@ -365,10 +390,18 @@
|
||||
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>"; };
|
||||
B618B8C32729F6690045C2D8 /* laser128o.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = laser128o.plist; 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>"; };
|
||||
@@ -398,6 +431,8 @@
|
||||
B63C1F0D25B1447C0016A611 /* CheatSheetWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CheatSheetWindowController.h; sourceTree = "<group>"; };
|
||||
B63C1F0E25B1447C0016A611 /* CheatSheetWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CheatSheetWindowController.m; sourceTree = "<group>"; };
|
||||
B63C1F1125B147E10016A611 /* CheatSheet.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = CheatSheet.html; sourceTree = "<group>"; };
|
||||
B63E57E12755AF1F00F8B5D1 /* ace500.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ace500.plist; sourceTree = "<group>"; };
|
||||
B646D10A263A5DF20014C586 /* ace1000.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ace1000.plist; sourceTree = "<group>"; };
|
||||
B64979C024EF6703008ABD20 /* MediaViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaViewController.h; sourceTree = "<group>"; };
|
||||
B64979C124EF6703008ABD20 /* MediaViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MediaViewController.m; sourceTree = "<group>"; };
|
||||
B64AF1ED250EC35B00A09B9B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/DiskImages.xib; sourceTree = "<group>"; };
|
||||
@@ -412,22 +447,26 @@
|
||||
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>"; };
|
||||
B66236B224FDA522006CABD7 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = embedded/SDL2.framework; sourceTree = "<group>"; };
|
||||
B66236B824FDA698006CABD7 /* mame64 */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = mame64; path = embedded/mame64; sourceTree = "<group>"; };
|
||||
B66236C024FDB7A6006CABD7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = "<group>"; };
|
||||
B6665C12265A0E3E00254939 /* AutocompleteControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutocompleteControl.h; sourceTree = "<group>"; };
|
||||
B6665C13265A0E3E00254939 /* AutocompleteControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutocompleteControl.m; sourceTree = "<group>"; };
|
||||
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; };
|
||||
B68A898F26BE18E000B2C8C6 /* MidiManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MidiManager.m; sourceTree = "<group>"; };
|
||||
B68A899226BE320200B2C8C6 /* MidiManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MidiManager.h; sourceTree = "<group>"; };
|
||||
B68A899326BF124B00B2C8C6 /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; };
|
||||
B6A1A1932528EB1700DB0FD7 /* Menu.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Menu.m; sourceTree = "<group>"; };
|
||||
B6A1A1962528EB4600DB0FD7 /* Menu.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Menu.h; sourceTree = "<group>"; };
|
||||
B6ABF47B275986EA00DC3D48 /* ace2200.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ace2200.plist; sourceTree = "<group>"; };
|
||||
B6B9EA642506A5550080E70D /* EjectButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EjectButton.m; sourceTree = "<group>"; };
|
||||
B6B9EA652506A5550080E70D /* EjectButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EjectButton.h; sourceTree = "<group>"; };
|
||||
B6BA257B24E99BE9005FB8FF /* Ample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -465,9 +504,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 */
|
||||
@@ -491,6 +533,9 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B65D718625E70BD5008C5F87 /* WebKit.framework in Frameworks */,
|
||||
B635C09D26784A4800B23BFD /* Sparkle.framework in Frameworks */,
|
||||
B68A899426BF124B00B2C8C6 /* CoreMIDI.framework in Frameworks */,
|
||||
B635C09A26784A1200B23BFD /* Sparkle.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -498,6 +543,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B68A899526BF12A600B2C8C6 /* CoreMIDI.framework in Frameworks */,
|
||||
B65D718725E70BE5008C5F87 /* WebKit.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -508,6 +554,7 @@
|
||||
B6374AB2260EBB970045CA16 /* pty_shell */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B611BA392679489F008597B5 /* pty_shell.entitlements */,
|
||||
B6374AB6260EBB970045CA16 /* pty_shell.c */,
|
||||
);
|
||||
path = pty_shell;
|
||||
@@ -516,8 +563,6 @@
|
||||
B649798C24EEC165008ABD20 /* Recovered References */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B67BD48424EE249D0073E334 /* apple1.plist */,
|
||||
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */,
|
||||
);
|
||||
name = "Recovered References";
|
||||
sourceTree = "<group>";
|
||||
@@ -526,6 +571,9 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6109A0824F5F373005CB652 /* ace100.plist */,
|
||||
B63E57E12755AF1F00F8B5D1 /* ace500.plist */,
|
||||
B646D10A263A5DF20014C586 /* ace1000.plist */,
|
||||
B6ABF47B275986EA00DC3D48 /* ace2200.plist */,
|
||||
B6109A1624F5F376005CB652 /* agat7.plist */,
|
||||
B6109A1224F5F375005CB652 /* agat9.plist */,
|
||||
B6109A1124F5F375005CB652 /* albert.plist */,
|
||||
@@ -564,6 +612,7 @@
|
||||
B61099F724F5F36F005CB652 /* las128ex.plist */,
|
||||
B61099F824F5F36F005CB652 /* laser2c.plist */,
|
||||
B6109A1024F5F375005CB652 /* laser128.plist */,
|
||||
B618B8C32729F6690045C2D8 /* laser128o.plist */,
|
||||
B6109A0B24F5F373005CB652 /* maxxi.plist */,
|
||||
B61099ED24F5F36E005CB652 /* microeng.plist */,
|
||||
B61099F524F5F36F005CB652 /* models.plist */,
|
||||
@@ -607,6 +656,8 @@
|
||||
B66236B624FDA686006CABD7 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B68A899326BF124B00B2C8C6 /* CoreMIDI.framework */,
|
||||
B635C09926784A1200B23BFD /* Sparkle.framework */,
|
||||
B65D718525E70BD5008C5F87 /* WebKit.framework */,
|
||||
B6841BDD251ECC29006A5C39 /* vmnet.framework */,
|
||||
);
|
||||
@@ -618,6 +669,7 @@
|
||||
children = (
|
||||
B63C1B8D25004C6D00511A71 /* mame-data.tgz */,
|
||||
B66236B824FDA698006CABD7 /* mame64 */,
|
||||
B635C09C26784A4800B23BFD /* Sparkle.framework */,
|
||||
B66236B224FDA522006CABD7 /* SDL2.framework */,
|
||||
);
|
||||
name = "Embedded Content";
|
||||
@@ -626,6 +678,7 @@
|
||||
B6841BD1251EC913006A5C39 /* vmnet_helper */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B611BA3A267948B5008597B5 /* vmnet_helper.entitlements */,
|
||||
B6841BCA251EC88E006A5C39 /* vmnet_helper.c */,
|
||||
);
|
||||
path = vmnet_helper;
|
||||
@@ -658,9 +711,12 @@
|
||||
B6BA257D24E99BE9005FB8FF /* Ample */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6665C12265A0E3E00254939 /* AutocompleteControl.h */,
|
||||
B6665C13265A0E3E00254939 /* AutocompleteControl.m */,
|
||||
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
|
||||
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
|
||||
B63C1B8924FF4B7100511A71 /* Ample.h */,
|
||||
B635C09E26784D4700B23BFD /* AmpleLite.m */,
|
||||
B63C1B8A24FF4BF700511A71 /* Ample.m */,
|
||||
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
|
||||
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
|
||||
@@ -668,12 +724,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 */,
|
||||
@@ -684,11 +738,17 @@
|
||||
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 */,
|
||||
B64AF1F8250EF6A500A09B9B /* Transformers.h */,
|
||||
B64AF1F9250EF6A500A09B9B /* Transformers.m */,
|
||||
B68A898F26BE18E000B2C8C6 /* MidiManager.m */,
|
||||
B68A899226BE320200B2C8C6 /* MidiManager.h */,
|
||||
B6BA258124E99BEB005FB8FF /* Assets.xcassets */,
|
||||
B64E15AF24EA365E00E8AD3D /* Resources */,
|
||||
B6BA258624E99BEB005FB8FF /* Info.plist */,
|
||||
@@ -723,7 +783,9 @@
|
||||
B6D6DE4224FAEE8900661A5F /* Nibs */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B6E9A18125088B36005E7525 /* NewSlotView.xib */,
|
||||
B6665C1A265C639900254939 /* Autocomplete.xib */,
|
||||
B6E9A18125088B36005E7525 /* SlotView.xib */,
|
||||
B6F7B536266FDA5B00624C6B /* MachineView.xib */,
|
||||
B63C1B9325008A2700511A71 /* DownloadWindow.xib */,
|
||||
B66236BF24FDB7A6006CABD7 /* Credits.rtf */,
|
||||
B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */,
|
||||
@@ -731,7 +793,6 @@
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */,
|
||||
B61099E524F5F230005CB652 /* MediaView.xib */,
|
||||
B6D6DE3724FAC8B500661A5F /* Preferences.xib */,
|
||||
B61099E324F5F230005CB652 /* SlotView.xib */,
|
||||
B64AF1EC250EC35B00A09B9B /* DiskImages.xib */,
|
||||
B63C1F0925B143C50016A611 /* CheatSheet.xib */,
|
||||
);
|
||||
@@ -804,6 +865,7 @@
|
||||
B66236B124FDA443006CABD7 /* Embed Frameworks */,
|
||||
B6152B5C25F6F4F800605E6E /* ShellScript */,
|
||||
B66236BB24FDA71D006CABD7 /* CopyFiles */,
|
||||
B611BA3D26796483008597B5 /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -878,32 +940,53 @@
|
||||
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 */,
|
||||
B618B8C42729F6690045C2D8 /* laser128o.plist in Resources */,
|
||||
B646D10B263A5DF30014C586 /* ace1000.plist in Resources */,
|
||||
B63C1BA8250192E600511A71 /* zijini.plist in Resources */,
|
||||
B6109A1D24F5F377005CB652 /* space84.plist in Resources */,
|
||||
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 */,
|
||||
B63E57E22755AF2000F8B5D1 /* ace500.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 */,
|
||||
@@ -915,15 +998,11 @@
|
||||
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 */,
|
||||
@@ -934,45 +1013,34 @@
|
||||
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 */,
|
||||
B6ABF47C275986EB00DC3D48 /* ace2200.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 */,
|
||||
@@ -985,7 +1053,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 */,
|
||||
@@ -996,7 +1075,7 @@
|
||||
B63C1BA6250192D800511A71 /* cecm.plist in Resources */,
|
||||
B6E4B5BF24FDE2670094A35C /* agat9.plist in Resources */,
|
||||
B6E4B5C024FDE2670094A35C /* LaunchWindow.xib in Resources */,
|
||||
B6DE323726044C1100418375 /* caution@2x.png in Resources */,
|
||||
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */,
|
||||
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */,
|
||||
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */,
|
||||
B6374AD6260ECB400045CA16 /* maciisi.plist in Resources */,
|
||||
@@ -1011,23 +1090,24 @@
|
||||
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 */,
|
||||
B63E57E32755AF2000F8B5D1 /* ace500.plist in Resources */,
|
||||
B6E4B5D124FDE2670094A35C /* spectred.plist in Resources */,
|
||||
B63C1B9725008A2700511A71 /* DownloadWindow.xib in Resources */,
|
||||
B6E4B5D224FDE2670094A35C /* apple2cp.plist in Resources */,
|
||||
B618B8C52729F6690045C2D8 /* laser128o.plist in Resources */,
|
||||
B6E4B5D324FDE2670094A35C /* MainMenu.xib in Resources */,
|
||||
B6E4B5D424FDE2670094A35C /* prav82.plist in Resources */,
|
||||
B6E4B5D524FDE2670094A35C /* apple2euk.plist in Resources */,
|
||||
@@ -1038,30 +1118,27 @@
|
||||
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 */,
|
||||
B6ABF47D275986EB00DC3D48 /* ace2200.plist in Resources */,
|
||||
B6E4B5E624FDE2670094A35C /* uniap2pt.plist in Resources */,
|
||||
B6E4B5E724FDE2670094A35C /* las128e2.plist in Resources */,
|
||||
B63C1B9E250192D800511A71 /* cece.plist in Resources */,
|
||||
@@ -1075,11 +1152,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;
|
||||
@@ -1087,6 +1162,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;
|
||||
@@ -1102,7 +1197,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 */
|
||||
@@ -1129,7 +1224,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 */,
|
||||
@@ -1137,14 +1232,17 @@
|
||||
B6152B5A25F5B57E00605E6E /* Media.m in Sources */,
|
||||
B6152B5625F4549F00605E6E /* Slot.m in Sources */,
|
||||
B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */,
|
||||
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */,
|
||||
B6665C14265A0E3E00254939 /* AutocompleteControl.m in Sources */,
|
||||
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */,
|
||||
B60A6E1424EE0AE2004B7EEF /* FlippedView.m in Sources */,
|
||||
B68A899026BE18E000B2C8C6 /* MidiManager.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 */,
|
||||
@@ -1156,6 +1254,7 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B68A899126BE18E000B2C8C6 /* MidiManager.m in Sources */,
|
||||
B608E1802502FE0C00D53465 /* TransparentScroller.m in Sources */,
|
||||
B64AF1FB250EF6A500A09B9B /* Transformers.m in Sources */,
|
||||
B6E4B5B024FDE2670094A35C /* main.m in Sources */,
|
||||
@@ -1167,11 +1266,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 */,
|
||||
@@ -1182,14 +1285,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 = (
|
||||
@@ -1222,6 +1317,14 @@
|
||||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6665C1A265C639900254939 /* Autocomplete.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B6665C1B265C639900254939 /* Base */,
|
||||
);
|
||||
name = Autocomplete.xib;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B6BA258324E99BEB005FB8FF /* MainMenu.xib */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
@@ -1246,12 +1349,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 */
|
||||
@@ -1261,7 +1372,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)";
|
||||
};
|
||||
@@ -1271,7 +1384,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)";
|
||||
};
|
||||
@@ -1280,7 +1395,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)";
|
||||
};
|
||||
@@ -1289,7 +1406,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)";
|
||||
};
|
||||
@@ -1345,7 +1464,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;
|
||||
@@ -1397,7 +1516,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;
|
||||
@@ -1411,14 +1530,18 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 12;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
CURRENT_PROJECT_VERSION = 25;
|
||||
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 = "release 12";
|
||||
MARKETING_VERSION = 0.240;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.ksherlock.ample;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
};
|
||||
@@ -1431,14 +1554,18 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 12;
|
||||
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
|
||||
CURRENT_PROJECT_VERSION = 25;
|
||||
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 = "release 12";
|
||||
MARKETING_VERSION = 0.240;
|
||||
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,15 @@ extern NSString *kDownloadExtension;
|
||||
extern NSString *kDefaultDownloadURL;
|
||||
extern NSString *kDefaultDownloadExtension;
|
||||
|
||||
extern NSString *kNotificationDiskImageAdded;
|
||||
extern NSString *kNotificationDiskImageMagicRoute;
|
||||
|
||||
@protocol Bookmark <NSObject>
|
||||
-(BOOL)loadBookmark: (NSDictionary *)bookmark;
|
||||
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark;
|
||||
|
||||
-(void)willLoadBookmark: (NSDictionary *)bookmark;
|
||||
-(void)didLoadBookmark: (NSDictionary *)bookmark;
|
||||
@end
|
||||
|
||||
#endif /* Ample_h */
|
||||
|
||||
+4
-1
@@ -42,7 +42,7 @@ NSURL *MameURL(void) {
|
||||
|
||||
if ([defaults boolForKey: kUseCustomMame]) {
|
||||
NSString *path = [defaults stringForKey: kMamePath];
|
||||
if (![path length]) return [NSURL fileURLWithPath: path];
|
||||
if ([path length]) return [NSURL fileURLWithPath: path];
|
||||
}
|
||||
|
||||
return [bundle URLForAuxiliaryExecutable: @"mame64"];
|
||||
@@ -135,3 +135,6 @@ NSString *kDefaultDownloadExtension = @"DefaultDownloadExtension";
|
||||
|
||||
NSString *kDownloadURL = @"DownloadURL";
|
||||
NSString *kDownloadExtension = @"DownloadExtension";
|
||||
|
||||
NSString *kNotificationDiskImageAdded = @"Disk Image Added";
|
||||
NSString *kNotificationDiskImageMagicRoute = @"Disk Image Magic Route";
|
||||
|
||||
@@ -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
|
||||
+22
-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){
|
||||
@@ -208,5 +218,14 @@
|
||||
[ws openURL: url];
|
||||
}
|
||||
|
||||
- (IBAction)mameMac68kWiki:(id)sender {
|
||||
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
|
||||
|
||||
NSURL *url = [NSURL URLWithString: @"https://wiki.mamedev.org/index.php/Driver:Mac_68K"];
|
||||
[ws openURL: url];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// AutocompleteControl.h
|
||||
// Autocomplete
|
||||
//
|
||||
// Created by Kelvin Sherlock on 2/20/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class AutocompleteControl;
|
||||
|
||||
@protocol AutocompleteItem
|
||||
-(NSString *)menuTitle;
|
||||
-(NSAttributedString *)menuAttributedTitle; //?? can it still handle color?
|
||||
-(BOOL)menuEnabled;
|
||||
-(BOOL)menuIsHeader;
|
||||
@end
|
||||
|
||||
|
||||
@protocol AutoCompleteDelegate
|
||||
|
||||
-(NSArray<id<AutocompleteItem>> *)autocomplete: (AutocompleteControl *)control completionsForString: (NSString *)string;
|
||||
-(NSArray<id<AutocompleteItem>> *)autocomplete: (AutocompleteControl *)control completionsForItem: (id<AutocompleteItem>)item;
|
||||
|
||||
@end
|
||||
|
||||
@interface AutocompleteControl : NSSearchField
|
||||
|
||||
@property NSInteger minWidth;
|
||||
@property NSInteger maxDisplayItems;
|
||||
@property (nullable, weak) id<AutoCompleteDelegate> autocompleteDelegate;
|
||||
|
||||
-(void)invalidate;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,885 @@
|
||||
//
|
||||
// AutocompleteControl.m
|
||||
// Autocomplete
|
||||
//
|
||||
// Created by Kelvin Sherlock on 2/20/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AutocompleteControl.h"
|
||||
#include <wctype.h>
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Todo --
|
||||
- when there is a value, can filter the list by only including header items and the selected value
|
||||
- draw inactive menu items
|
||||
- when menu is hidden then text is manually deleted (not esc canceled), then down/up arrow the list needs to update.
|
||||
- eliminate nib and do it manually.
|
||||
- when menus is too tall, macos moves it to the top of the screen.
|
||||
- 1. it's not moved someplace more appropriate when the size shrinks
|
||||
- 2. it should display to the left or right in that case.
|
||||
- need to know parent's frame.
|
||||
|
||||
- fuzzy search - minimum distance between letters?
|
||||
*/
|
||||
|
||||
|
||||
@interface ACMenuView : NSView
|
||||
@property (nonatomic) NSArray<id<AutocompleteItem>> *items;
|
||||
|
||||
@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
|
||||
|
||||
|
||||
@interface AutocompleteControl ()
|
||||
{
|
||||
IBOutlet NSPanel *_panel;
|
||||
__weak IBOutlet ACMenuView *_menuView;
|
||||
__weak IBOutlet NSScrollView *_scrollView;
|
||||
|
||||
id<AutocompleteItem> _value;
|
||||
BOOL _editing;
|
||||
BOOL _dirty;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface AutocompleteControl (SearchField) <NSSearchFieldDelegate>
|
||||
-(void)fixTextColor: (BOOL)editing;
|
||||
@end
|
||||
|
||||
@implementation AutocompleteControl
|
||||
|
||||
-(void)_init {
|
||||
|
||||
[self setDelegate: self];
|
||||
[self setPlaceholderString: @""];
|
||||
[(NSSearchFieldCell *)[self cell] setSearchButtonCell: nil];
|
||||
|
||||
NSBundle *bundle = [NSBundle mainBundle];
|
||||
NSNib *nib = [[NSNib alloc] initWithNibNamed: @"Autocomplete" bundle: bundle];
|
||||
|
||||
NSArray *topLevel = nil;
|
||||
[nib instantiateWithOwner: self topLevelObjects: &topLevel];
|
||||
|
||||
[_panel setMovable: NO];
|
||||
[_panel setBecomesKeyOnlyIfNeeded: YES];
|
||||
[_menuView setParent: self];
|
||||
}
|
||||
|
||||
-(id)initWithFrame:(NSRect)frameRect {
|
||||
if ((self = [super initWithFrame: frameRect])) {
|
||||
[self _init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(id)initWithCoder:(NSCoder *)coder {
|
||||
if ((self = [super initWithCoder: coder])) {
|
||||
[self _init];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#if 0
|
||||
-(NSString *)stringValue {
|
||||
return [super stringValue];
|
||||
}
|
||||
#endif
|
||||
|
||||
-(id)objectValue {
|
||||
return _value;
|
||||
}
|
||||
|
||||
-(void)setStringValue:(NSString *)stringValue {
|
||||
[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]];
|
||||
[_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 {
|
||||
return _value != nil;
|
||||
}
|
||||
|
||||
|
||||
-(void)hideSuggestions: (id)sender {
|
||||
|
||||
if (![_panel isVisible]) return;
|
||||
|
||||
NSWindow *window = [self window];
|
||||
|
||||
[window removeChildWindow: _panel];
|
||||
[_panel orderOut: sender];
|
||||
|
||||
}
|
||||
|
||||
-(void)showSuggestions: (id)sender {
|
||||
|
||||
if ([_panel isVisible]) return;
|
||||
NSWindow *window = [self window];
|
||||
|
||||
NSRect wFrame = [_panel frame];
|
||||
NSRect vFrame = [self frame];
|
||||
|
||||
NSRect rect = { .origin = vFrame.origin, .size = wFrame.size };
|
||||
rect = [window convertRectToScreen:rect];
|
||||
|
||||
rect.origin.y -= wFrame.size.height + 4;
|
||||
rect.size.width = MAX(vFrame.size.width, _minWidth);
|
||||
// todo - min width option.
|
||||
[_panel setFrame: rect display: YES];
|
||||
|
||||
//[_panel setFrameOrigin: rect.origin];
|
||||
[window addChildWindow: _panel ordered: NSWindowAbove];
|
||||
}
|
||||
|
||||
-(void)updateSuggestions {
|
||||
|
||||
if (!_autocompleteDelegate) return;
|
||||
NSString *needle = [self stringValue];
|
||||
|
||||
NSArray *items = [_autocompleteDelegate autocomplete: self completionsForString: needle];
|
||||
|
||||
[_menuView setItems: items];
|
||||
if ([items count]) {
|
||||
[self showSuggestions: nil];
|
||||
} else {
|
||||
[self hideSuggestions: nil];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)invalidate {
|
||||
|
||||
if (!_autocompleteDelegate) return;
|
||||
|
||||
NSArray *items = nil;
|
||||
|
||||
/* if there is an object value, try to retain it. */
|
||||
if (_value) {
|
||||
|
||||
[_menuView reset];
|
||||
items = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
|
||||
if (items) {
|
||||
[_menuView setItems: items];
|
||||
return;
|
||||
}
|
||||
_value = nil;
|
||||
[self invoke];
|
||||
}
|
||||
NSString *needle = [self stringValue];
|
||||
|
||||
if ([needle length]) {
|
||||
_dirty = YES;
|
||||
}
|
||||
// if only 1 match, auto-set value?
|
||||
items = [_autocompleteDelegate autocomplete: self completionsForString: needle];
|
||||
[self fixTextColor: _editing];
|
||||
[_menuView setItems: items];
|
||||
}
|
||||
|
||||
|
||||
// prevent action messages from the search field/cell.
|
||||
-(BOOL)sendAction:(SEL)action to:(id)target {
|
||||
if (action == [self action] && target == [self target]) return NO;
|
||||
return [super sendAction: action to: target];
|
||||
|
||||
}
|
||||
|
||||
-(void)invoke {
|
||||
_dirty = NO;
|
||||
[super sendAction: [self action] to: [self target]];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation AutocompleteControl (SearchField)
|
||||
|
||||
-(void)fixTextColor: (BOOL)editing {
|
||||
NSColor *color = editing || _value ? [NSColor controlTextColor] : [NSColor systemRedColor];
|
||||
[self setTextColor: color];
|
||||
}
|
||||
|
||||
- (void)controlTextDidChange:(NSNotification *)notification {
|
||||
//NSLog(@"controlTextDidChange");
|
||||
|
||||
if (_value) {
|
||||
_dirty = YES;
|
||||
_value = nil;
|
||||
}
|
||||
|
||||
NSString *s = [self stringValue];
|
||||
if ([s length]) {
|
||||
[self updateSuggestions];
|
||||
} else {
|
||||
_dirty = YES;
|
||||
_value = nil;
|
||||
[_menuView reset];
|
||||
[_menuView setItems: nil];
|
||||
[self hideSuggestions: nil];
|
||||
[self invoke];
|
||||
}
|
||||
}
|
||||
- (void)controlTextDidBeginEditing:(NSNotification *)obj {
|
||||
//NSLog(@"controlTextDidBeginEditing");
|
||||
|
||||
_editing = YES;
|
||||
_dirty = NO;
|
||||
[self fixTextColor: YES];
|
||||
}
|
||||
|
||||
|
||||
|
||||
- (void)controlTextDidEndEditing:(NSNotification *)obj {
|
||||
//NSLog(@"controlTextDidEndEditing");
|
||||
|
||||
_editing = NO;
|
||||
|
||||
[self hideSuggestions: nil];
|
||||
|
||||
if (_dirty) {
|
||||
_value = nil;
|
||||
[self invoke];
|
||||
}
|
||||
[self fixTextColor: NO];
|
||||
}
|
||||
|
||||
|
||||
-(BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor {
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(void)selectItem:(id<AutocompleteItem>)item withSelector:(SEL)selector {
|
||||
|
||||
// for newline/mousedown, will still retain focus after updating
|
||||
// so we need to invalidate the value if it's edited further.
|
||||
if (selector == @selector(insertNewline:) || selector == @selector(mouseDown:) || selector == @selector(insertTab:)) {
|
||||
|
||||
_value = item;
|
||||
NSString *str = [item menuTitle];
|
||||
|
||||
[super setStringValue: str];
|
||||
|
||||
[self hideSuggestions: nil];
|
||||
|
||||
NSText *fieldEditor = [self currentEditor];
|
||||
//[fieldEditor setSelectedRange: NSMakeRange([str length], 0)];
|
||||
[fieldEditor setSelectedRange: NSMakeRange(0, [str length])];
|
||||
|
||||
[self invoke];
|
||||
|
||||
// need to invalidate the menu so it reloads
|
||||
|
||||
|
||||
#if 0
|
||||
NSArray *array = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
|
||||
[_menuView setItems: array];
|
||||
#else
|
||||
[_menuView setItems: nil];
|
||||
#endif
|
||||
|
||||
//NSLog(@"selectItem:withSelector:");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector {
|
||||
|
||||
if (commandSelector == @selector(moveUp:)) {
|
||||
//[self showSuggestions: nil];
|
||||
if ([_panel isVisible]) {
|
||||
[_menuView moveUp: textView];
|
||||
} else {
|
||||
[self updateSuggestions];
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
if (commandSelector == @selector(moveDown:)) {
|
||||
//[self showSuggestions: nil];
|
||||
if ([_panel isVisible]) {
|
||||
[_menuView moveDown: textView];
|
||||
} else {
|
||||
[self updateSuggestions];
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
if (commandSelector == @selector(insertNewline:)) {
|
||||
if ([_panel isVisible])
|
||||
[_menuView insertNewline: textView];
|
||||
return YES;
|
||||
}
|
||||
|
||||
if (commandSelector == @selector(insertTab:)) {
|
||||
if ([_panel isVisible])
|
||||
[_menuView insertTab: textView];
|
||||
return NO;
|
||||
}
|
||||
|
||||
if (commandSelector == @selector(complete:)) {
|
||||
if ([_panel isVisible]) {
|
||||
[self hideSuggestions: nil];
|
||||
} else {
|
||||
[self updateSuggestions];
|
||||
}
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
// esc ?
|
||||
// if panel open, hide
|
||||
// if panel closed, delete.
|
||||
if (commandSelector == @selector(cancelOperation:)) {
|
||||
|
||||
if ([_panel isVisible]) {
|
||||
[self hideSuggestions: nil];
|
||||
} else {
|
||||
_value = nil;
|
||||
[super setStringValue: @""];
|
||||
|
||||
[self hideSuggestions: nil];
|
||||
[_menuView reset];
|
||||
//[_menuView setItems: _completions];
|
||||
// sigh...
|
||||
#if 0
|
||||
NSArray *items =[_autocompleteDelegate autocomplete: self completionsForString: @""];
|
||||
[_menuView setItems: items];
|
||||
#endif
|
||||
[self invoke];
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface ACMenuView () {
|
||||
id<AutocompleteItem> _value;
|
||||
NSInteger _index;
|
||||
NSInteger _count;
|
||||
NSArray<id<AutocompleteItem>> *_items;
|
||||
NSTrackingArea *_trackingArea;
|
||||
NSColor *_backgroundColor;
|
||||
NSColor *_selectedColor;
|
||||
BOOL _tracking;
|
||||
BOOL _clipped;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation ACMenuView
|
||||
|
||||
#define MENU_FONT_SIZE 11
|
||||
#define MENU_HEIGHT 14
|
||||
#define MARGIN_TOP 0 //6
|
||||
#define MARGIN_BOTTOM 0 //6
|
||||
#define INDENT 7
|
||||
#define HEADER_INDENT 7
|
||||
#define MAX_DISPLAY_ITEMS 16
|
||||
|
||||
|
||||
-(void)_init {
|
||||
_backgroundColor = [NSColor windowBackgroundColor];
|
||||
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
|
||||
owner: self
|
||||
userInfo: nil];
|
||||
|
||||
[self addTrackingArea: _trackingArea];
|
||||
}
|
||||
|
||||
-(id)initWithCoder:(NSCoder *)coder {
|
||||
if ((self = [super initWithCoder: coder])) {
|
||||
[self _init];
|
||||
}
|
||||
return self;
|
||||
|
||||
}
|
||||
|
||||
-(BOOL)isFlipped {
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(BOOL)acceptsFirstMouse:(NSEvent *)event {
|
||||
return YES;
|
||||
}
|
||||
|
||||
static CGFloat HeightForItems(NSUInteger count) {
|
||||
return count * MENU_HEIGHT;
|
||||
}
|
||||
|
||||
-(NSSize)intrinsicContentSize {
|
||||
return NSMakeSize(NSViewNoIntrinsicMetric, _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM);
|
||||
}
|
||||
|
||||
- (NSSize)sizeThatFits:(NSSize)size {
|
||||
size.height = _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM;
|
||||
return size;
|
||||
}
|
||||
|
||||
- (void)sizeToFit {
|
||||
NSSize size = [self frame].size;
|
||||
size.height = _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM;
|
||||
[self setFrameSize: size];
|
||||
[self setNeedsDisplay: YES];
|
||||
}
|
||||
|
||||
-(void)reset {
|
||||
[self invalidateRow: _index];
|
||||
_index = -1;
|
||||
_value = nil;
|
||||
_items = nil;
|
||||
}
|
||||
|
||||
-(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) {
|
||||
_value = nil;
|
||||
return;
|
||||
}
|
||||
|
||||
// also check enabled status....
|
||||
if (_value) {
|
||||
_index = [_items indexOfObject: _value];
|
||||
if (_index == NSNotFound) {
|
||||
_index = -1;
|
||||
_value = nil;
|
||||
}
|
||||
}
|
||||
|
||||
// if only 1 entry, auto-select it.
|
||||
if (!_value) {
|
||||
NSInteger count = -1;
|
||||
for (id<AutocompleteItem> item in _items) {
|
||||
++count;
|
||||
if ([item menuIsHeader]) continue;
|
||||
if (_value) {
|
||||
_value = nil;
|
||||
_index = -1;
|
||||
break;
|
||||
}
|
||||
_value = item;
|
||||
_index = count;
|
||||
}
|
||||
}
|
||||
|
||||
NSInteger displayCount = MIN(_count, MAX_DISPLAY_ITEMS);
|
||||
CGFloat newHeight = HeightForItems(displayCount) + 8 ; // 4px top/bottom
|
||||
NSWindow *window = [self window];
|
||||
NSRect wFrame = [window frame];
|
||||
|
||||
NSRect contentRect = [[[self enclosingScrollView] contentView] frame];
|
||||
|
||||
//NSSize size = [self intrinsicContentSize];
|
||||
//NSInteger minWidth = [_parent minWidth];
|
||||
//size.width = MAX(wFrame.size.width, minWidth);
|
||||
//size.height += 8;
|
||||
|
||||
CGFloat delta = wFrame.size.height - newHeight;
|
||||
|
||||
wFrame.origin.y += delta;
|
||||
wFrame.size.height = newHeight;
|
||||
|
||||
_clipped = (_count > displayCount);
|
||||
|
||||
[self setFrameSize: NSMakeSize(contentRect.size.width /*- 15.0*/, HeightForItems(_count))];
|
||||
[self setNeedsDisplay: YES];
|
||||
[window setFrame: wFrame display: YES];
|
||||
|
||||
if (_value) {
|
||||
[self scrollToRow: _index position: ScrollToCenter force: NO];
|
||||
} else {
|
||||
[self scrollToRow: 0 position: ScrollToTop force: YES];
|
||||
}
|
||||
|
||||
//[self sizeToFit];
|
||||
//[[self window] setContentSize: [self frame].size];
|
||||
|
||||
//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);
|
||||
if (index < 0 || index >= _count) return nil;
|
||||
if (indexPtr) *indexPtr = index;
|
||||
return [_items objectAtIndex: index];
|
||||
}
|
||||
|
||||
enum {
|
||||
ScrollToTop,
|
||||
ScrollToBottom,
|
||||
ScrollToCenter,
|
||||
};
|
||||
|
||||
-(void)scrollToRow: (NSInteger)row position: (unsigned)position force: (BOOL)force {
|
||||
if (row < 0) return;
|
||||
if (!_clipped) return;
|
||||
|
||||
NSScrollView *scrollView = [self enclosingScrollView];
|
||||
NSClipView *clipView = [scrollView contentView];
|
||||
|
||||
NSRect visibleRect = [self visibleRect];
|
||||
if (!force) {
|
||||
NSRect mRect = NSMakeRect(0, row * MENU_HEIGHT, 1 , MENU_HEIGHT);
|
||||
if (NSContainsRect(visibleRect, mRect)) return;
|
||||
}
|
||||
|
||||
NSInteger topRow = row;
|
||||
switch (position) {
|
||||
case ScrollToTop:
|
||||
break;
|
||||
case ScrollToBottom:
|
||||
topRow -= MAX_DISPLAY_ITEMS -1;
|
||||
break;
|
||||
case ScrollToCenter:
|
||||
topRow -= MAX_DISPLAY_ITEMS/2 - 1;
|
||||
break;
|
||||
}
|
||||
if (topRow < 0) topRow = 0;
|
||||
if (topRow > _count - MAX_DISPLAY_ITEMS)
|
||||
topRow = _count - MAX_DISPLAY_ITEMS;
|
||||
NSPoint point = NSMakePoint(0, topRow * MENU_HEIGHT);
|
||||
|
||||
//[self scrollClipView: clipView toPoint: point];
|
||||
[clipView scrollToPoint: point];
|
||||
[scrollView reflectScrolledClipView: clipView];
|
||||
|
||||
}
|
||||
|
||||
|
||||
-(void)moveUp:(id)sender {
|
||||
if (_count == 0 || _index <= 0) return;
|
||||
|
||||
NSInteger index = 0;
|
||||
id<AutocompleteItem> value = nil;
|
||||
for (index = _index - 1; index >= 0; --index) {
|
||||
value = [_items objectAtIndex: index];
|
||||
if ([value menuIsHeader]) continue;
|
||||
if (![value menuEnabled]) continue;
|
||||
break;
|
||||
}
|
||||
if (index < 0) return;
|
||||
if (index == _index) return;
|
||||
[self invalidateRow: _index];
|
||||
[self invalidateRow: index];
|
||||
|
||||
_index = index;
|
||||
_value = value;
|
||||
[self scrollToRow: index position: ScrollToTop force: NO];
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
}
|
||||
|
||||
-(void)moveDown:(id)sender {
|
||||
|
||||
// _index -1 selects first item.
|
||||
if (_count == 0 || _index == _count - 1) return;
|
||||
|
||||
NSInteger index = 0;
|
||||
id<AutocompleteItem> value = nil;
|
||||
for (index = _index + 1; index < _count ; ++index) {
|
||||
value = [_items objectAtIndex: index];
|
||||
if ([value menuIsHeader]) continue;
|
||||
if (![value menuEnabled]) continue;
|
||||
break;
|
||||
}
|
||||
if (index == _count) return;
|
||||
if (index == _index) return;
|
||||
[self invalidateRow: _index];
|
||||
[self invalidateRow: index];
|
||||
|
||||
_index = index;
|
||||
_value = value;
|
||||
|
||||
[self scrollToRow: index position: ScrollToBottom force: NO];
|
||||
[_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];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)insertTab:(id)sender {
|
||||
// if only one option, autocomplete?
|
||||
if (_value) {
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)mouseMoved:(NSEvent *)event {
|
||||
//NSLog(@"mouse moved");
|
||||
|
||||
if (!_tracking) return;
|
||||
|
||||
NSPoint p = [event locationInWindow];
|
||||
p = [self convertPoint: p fromView: nil];
|
||||
|
||||
|
||||
NSInteger index;
|
||||
id<AutocompleteItem> value = [self itemAtPoint: p indexPtr: &index];
|
||||
if (!value) return;
|
||||
if (index == _index) return;
|
||||
if ([value menuIsHeader]) return;
|
||||
if (![value menuEnabled]) return;
|
||||
|
||||
[self invalidateRow: _index];
|
||||
[self invalidateRow: index];
|
||||
|
||||
_index = index;
|
||||
_value = value;
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
}
|
||||
-(void)mouseDown:(NSEvent *)event {
|
||||
if (!_tracking) return;
|
||||
|
||||
NSPoint p = [event locationInWindow];
|
||||
p = [self convertPoint: p fromView: nil];
|
||||
|
||||
NSInteger index;
|
||||
id<AutocompleteItem> value = [self itemAtPoint: p indexPtr: &index];
|
||||
if (!value) return;
|
||||
if (index != _index) {
|
||||
if ([value menuIsHeader]) return;
|
||||
if (![value menuEnabled]) return;
|
||||
|
||||
[self invalidateRow: _index];
|
||||
[self invalidateRow: index];
|
||||
|
||||
_index = index;
|
||||
_value = value;
|
||||
}
|
||||
|
||||
[_parent selectItem: _value withSelector: _cmd];
|
||||
}
|
||||
|
||||
-(void)mouseEntered:(NSEvent *)event {
|
||||
//NSLog(@"mouse entered");
|
||||
_tracking = YES;
|
||||
|
||||
}
|
||||
-(void)mouseExited:(NSEvent *)event {
|
||||
//NSLog(@"mouse exited");
|
||||
|
||||
_tracking = NO;
|
||||
}
|
||||
|
||||
-(void)invalidateRow:(NSInteger)row {
|
||||
if (row < 0 || row >= _count) return;
|
||||
|
||||
NSRect r = NSZeroRect;
|
||||
NSRect bounds = [self bounds];
|
||||
|
||||
r.size.width = bounds.size.width;
|
||||
r.size.height = MENU_HEIGHT;
|
||||
r.origin.y = MENU_HEIGHT * row + MARGIN_TOP;
|
||||
//NSLog(@"Invalidating %ld - %@", row, NSStringFromRect(r));
|
||||
[self setNeedsDisplayInRect: r];
|
||||
}
|
||||
|
||||
|
||||
static void DrawString(NSString *str, NSDictionary *attr, CGRect rect) {
|
||||
|
||||
NSSize size = [str sizeWithAttributes: attr];
|
||||
if (size.width <= rect.size.width) {
|
||||
[str drawInRect: rect withAttributes: attr];
|
||||
return;
|
||||
}
|
||||
NSMutableString *mstr = [str mutableCopy];
|
||||
// binary search is probably the best way to handle it :/
|
||||
NSInteger l = [mstr length];
|
||||
while (l > 2) {
|
||||
[mstr replaceCharactersInRange: NSMakeRange(l-2, 2) withString: @"…"];
|
||||
--l;
|
||||
size = [mstr sizeWithAttributes: attr];
|
||||
if (size.width <= rect.size.width) {
|
||||
[mstr drawInRect: rect withAttributes: attr];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-(void)drawItem: (id<AutocompleteItem>)item inRect: (NSRect)rect {
|
||||
NSColor *textColor = [NSColor textColor];
|
||||
if (!item) return;
|
||||
|
||||
if (item == _value) {
|
||||
textColor = [NSColor selectedMenuItemTextColor];
|
||||
[_selectedColor setFill];
|
||||
NSRectFill(rect);
|
||||
}
|
||||
NSString *string = [item menuTitle];
|
||||
|
||||
if ([item menuIsHeader]) {
|
||||
textColor = [NSColor secondaryLabelColor];
|
||||
NSDictionary *attr = @{
|
||||
NSForegroundColorAttributeName: textColor,
|
||||
NSFontAttributeName: [NSFont systemFontOfSize: MENU_FONT_SIZE], // [NSFont boldSystemFontOfSize: 13],
|
||||
};
|
||||
NSRect r = NSInsetRect(rect, HEADER_INDENT, 0);
|
||||
DrawString(string, attr, r);
|
||||
} else {
|
||||
|
||||
NSDictionary *attr = @{
|
||||
NSForegroundColorAttributeName: textColor,
|
||||
NSFontAttributeName: [NSFont systemFontOfSize: MENU_FONT_SIZE],
|
||||
};
|
||||
NSRect r = NSInsetRect(rect, INDENT, 0);
|
||||
r.origin.x += INDENT;
|
||||
r.size.width -= INDENT;
|
||||
DrawString(string, attr, r);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)drawRect:(NSRect)dirtyRect {
|
||||
[super drawRect:dirtyRect];
|
||||
|
||||
NSRect r = [self bounds];
|
||||
NSInteger begin = floor((NSMinY(dirtyRect) - MARGIN_TOP) / MENU_HEIGHT);
|
||||
NSInteger end = ceil((NSMaxY(dirtyRect) - MARGIN_TOP) / MENU_HEIGHT);
|
||||
if (begin < 0) begin = 0;
|
||||
if (end > _count) end = _count;
|
||||
|
||||
|
||||
r.origin.y = MENU_HEIGHT * begin + MARGIN_TOP;
|
||||
r.size.height = MENU_HEIGHT;
|
||||
for (NSInteger index = begin; index < end; ++index) {
|
||||
id<AutocompleteItem> item = [_items objectAtIndex: index];
|
||||
[self drawItem: item inRect: r];
|
||||
r.origin.y += MENU_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/* custom scroller that doesn't draw a background. */
|
||||
@interface ACScroller : NSScroller
|
||||
@end
|
||||
|
||||
@implementation ACScroller
|
||||
|
||||
|
||||
-(void)drawRect:(NSRect)dirtyRect {
|
||||
//[[NSColor windowBackgroundColor] set];
|
||||
[[NSColor clearColor] set];
|
||||
NSRectFill(dirtyRect);
|
||||
[self drawKnob];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface ACPanel : NSPanel
|
||||
@end
|
||||
|
||||
@implementation ACPanel
|
||||
|
||||
/* needed to prevent the pop-up child window from being moved when offscreen. */
|
||||
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
|
||||
return frameRect;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,55 @@
|
||||
<?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="AutocompleteControl">
|
||||
<connections>
|
||||
<outlet property="_menuView" destination="F2h-9b-Ouu" id="min-gE-sma"/>
|
||||
<outlet property="_panel" destination="OYW-cj-FD5" id="DYJ-rN-6Ep"/>
|
||||
<outlet property="_scrollView" destination="VQ6-PE-hTH" id="iKA-Ps-nkl"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<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"/>
|
||||
<view key="contentView" id="3pz-HL-mV1">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="400"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="0.0" horizontalPageScroll="0.0" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="VQ6-PE-hTH">
|
||||
<rect key="frame" x="0.0" y="4" width="300" height="392"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="HWy-NN-aOV">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="392"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view id="F2h-9b-Ouu" customClass="ACMenuView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="300" height="392"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Az6-1a-Hei">
|
||||
<rect key="frame" x="-100" y="-100" width="168" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="tng-g2-1LZ" customClass="ACScroller">
|
||||
<rect key="frame" x="285" y="0.0" width="15" height="392"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="127" y="73"/>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -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, 1921-06-01.\
|
||||
\
|
||||
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">
|
||||
@@ -100,6 +100,7 @@
|
||||
</tableColumn>
|
||||
</tableColumns>
|
||||
<connections>
|
||||
<action trigger="doubleAction" selector="doubleClick:" target="-2" id="Zud-ke-iLR"/>
|
||||
<binding destination="vmp-9h-Z5R" name="content" keyPath="arrangedObjects" id="GHn-tz-ash"/>
|
||||
<outlet property="dataSource" destination="-2" id="PRV-Rt-UuC"/>
|
||||
<outlet property="delegate" destination="-2" id="WuV-c9-o5I"/>
|
||||
|
||||
@@ -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="41" y="28" width="409" 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"/>
|
||||
</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="41" y="3" width="409" 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>
|
||||
<progressIndicator wantsLayer="YES" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="jBN-UJ-tWi">
|
||||
<rect key="frame" x="3" y="9" width="32" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="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>
|
||||
</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,12 +8,15 @@
|
||||
<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"/>
|
||||
<outlet property="slotView" destination="P9d-sS-qEb" id="qlH-u0-hzq"/>
|
||||
<outlet property="softwareListControl" destination="pNl-g4-ZLh" id="U0i-R9-GLE"/>
|
||||
<outlet property="window" destination="Vze-YF-m6e" id="JUs-Eb-MW8"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
@@ -21,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="326" 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">
|
||||
@@ -122,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"/>
|
||||
@@ -238,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"/>
|
||||
@@ -246,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"/>
|
||||
@@ -266,6 +237,17 @@ DQ
|
||||
<binding destination="-2" name="selectedTag" keyPath="self.mameSpeed" id="nFG-yA-KC1"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="knB-Rn-1Cm">
|
||||
<rect key="frame" x="15" y="40" width="67" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Rewind" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="Y7b-jN-HCc">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<binding destination="-2" name="value" keyPath="self.mameRewind" id="Hw5-n7-O27"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
@@ -299,7 +281,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"/>
|
||||
@@ -316,7 +298,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"/>
|
||||
@@ -341,7 +323,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"/>
|
||||
@@ -369,26 +351,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="363"/>
|
||||
<rect key="frame" x="654" y="107" width="326" 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">
|
||||
@@ -409,13 +434,209 @@ DQ
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" id="pNl-g4-ZLh" customClass="AutocompleteControl">
|
||||
<rect key="frame" x="654" y="446" width="326" 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"/>
|
||||
<color key="backgroundColor" name="systemRedColor" catalog="System" colorSpace="catalog"/>
|
||||
</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"/>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
|
||||
<view key="contentView" id="se5-gp-TjO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="800" height="270"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<scrollView fixedFrame="YES" borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hj3-ou-djb">
|
||||
<rect key="frame" x="0.0" y="0.0" width="800" height="270"/>
|
||||
@@ -52,10 +52,31 @@
|
||||
</scrollView>
|
||||
</subviews>
|
||||
</view>
|
||||
<toolbar key="toolbar" implicitIdentifier="54C242E0-0A7F-491A-9B83-7279A9663A36" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="small" id="Cik-bA-ZYu">
|
||||
<allowedToolbarItems>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarShowColorsItem" id="zxC-EA-a7F"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarShowFontsItem" id="xZv-cQ-rPS"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarPrintItem" id="2BZ-oP-sMg"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="j5G-hW-61a"/>
|
||||
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="a72-iv-2QT"/>
|
||||
<toolbarItem implicitItemIdentifier="21A9965C-D1B3-4E82-A344-1688A467E870" label="Clear Log" paletteLabel="Clear Log" tag="-1" image="NSTrashEmpty" id="pn5-MM-9p1">
|
||||
<connections>
|
||||
<action selector="clearLog:" target="-2" id="VU3-mv-6WR"/>
|
||||
</connections>
|
||||
</toolbarItem>
|
||||
</allowedToolbarItems>
|
||||
<defaultToolbarItems>
|
||||
<toolbarItem reference="a72-iv-2QT"/>
|
||||
<toolbarItem reference="pn5-MM-9p1"/>
|
||||
</defaultToolbarItems>
|
||||
</toolbar>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-285" y="-234"/>
|
||||
</window>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSTrashEmpty" width="32" height="32"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -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">
|
||||
@@ -451,7 +491,13 @@
|
||||
<menuItem title="MAME Apple II Wiki" id="GLh-Cc-5uU">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="mameAppleWiki:" target="Voe-Tx-rLC" id="KEg-0U-KdU"/>
|
||||
<action selector="mameAppleWiki:" target="Voe-Tx-rLC" id="jRe-m6-mP0"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="MAME Mac 68K Wiki" id="hDL-K6-iVF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="mameMac68kWiki:" target="Voe-Tx-rLC" id="ZzB-54-vXN"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="MAME Documentation" id="1IW-V0-UWA">
|
||||
|
||||
@@ -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,13 +52,16 @@
|
||||
<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>
|
||||
<outlet property="textField" destination="Pep-mX-LHY" id="hUe-cf-6vq"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="ItemView" translatesAutoresizingMaskIntoConstraints="NO" id="yGq-lc-RCM" customClass="TablePathView">
|
||||
<tableCellView identifier="ItemView" translatesAutoresizingMaskIntoConstraints="NO" id="yGq-lc-RCM" customClass="PathTableCellView">
|
||||
<rect key="frame" x="1" y="21" width="296" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
@@ -70,6 +73,8 @@
|
||||
</pathCell>
|
||||
<connections>
|
||||
<action selector="pathAction:" target="-2" id="4oX-bW-ANp"/>
|
||||
<binding destination="yGq-lc-RCM" name="value" keyPath="objectValue.url" id="Ony-ph-VVo"/>
|
||||
<binding destination="yGq-lc-RCM" name="enabled" keyPath="objectValue.valid" id="f8P-gt-vmK"/>
|
||||
</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,147 @@
|
||||
<outlet property="pathControl" destination="f7R-TO-fmF" id="oH7-N3-JC7"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="BBItemView" id="2Nq-Xz-tkV" customClass="PathTableCellView">
|
||||
<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="value" keyPath="objectValue.string" id="2dZ-JJ-asM">
|
||||
<dictionary key="options">
|
||||
<string key="NSNullPlaceholder">socket.address:port or /path/to/file</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<binding destination="2Nq-Xz-tkV" name="enabled" keyPath="objectValue.valid" id="ZTM-E3-Y9P"/>
|
||||
</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>
|
||||
<tableCellView identifier="OutputItemView" id="jQd-Ar-5uf" customClass="PathTableCellView">
|
||||
<rect key="frame" x="1" y="71" width="296" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="Jg1-Wh-HDk">
|
||||
<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="SjY-iM-xSZ"/>
|
||||
</imageView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vG4-PP-efF" 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="VX6-hb-mCU">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="ejectAction:" target="-2" id="LNr-rK-kpx"/>
|
||||
<binding destination="jQd-Ar-5uf" name="enabled" keyPath="objectValue.occupied" id="p4S-6q-dCG"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Tm9-Zq-fag">
|
||||
<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="/path/to/file" drawsBackground="YES" id="RUQ-s4-75A">
|
||||
<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="N7h-6y-D8W"/>
|
||||
<binding destination="jQd-Ar-5uf" name="value" keyPath="objectValue.string" id="kXU-qJ-HKa">
|
||||
<dictionary key="options">
|
||||
<string key="NSNullPlaceholder">/path/to/file</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
<binding destination="jQd-Ar-5uf" name="enabled" keyPath="objectValue.valid" id="1wE-NY-Vb2"/>
|
||||
</connections>
|
||||
</textField>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="dragHandle" destination="Jg1-Wh-HDk" id="o14-ay-0Ou"/>
|
||||
<outlet property="ejectButton" destination="vG4-PP-efF" id="X2I-2N-t5r"/>
|
||||
</connections>
|
||||
</tableCellView>
|
||||
<tableCellView identifier="MidiItemView" id="HDi-YM-iKn" customClass="MidiTableCellView">
|
||||
<rect key="frame" x="1" y="96" width="296" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="XcO-0S-W4c">
|
||||
<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="4a2-So-rxD"/>
|
||||
</imageView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="F3v-8Z-LaF" 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="b3t-Zp-2si">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="ejectAction:" target="-2" id="AvU-Sz-QKJ"/>
|
||||
<binding destination="HDi-YM-iKn" name="enabled" keyPath="objectValue.occupied" id="ERy-Iz-T9Q"/>
|
||||
</connections>
|
||||
</button>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="L2F-mj-lkr">
|
||||
<rect key="frame" x="20" y="-3" width="244" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="CaJ-NG-vbR" id="Rac-za-bEQ">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<menu key="menu" id="I55-5S-oM2">
|
||||
<items>
|
||||
<menuItem state="on" id="CaJ-NG-vbR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="midiAction:" target="-2" id="LDL-4h-xUR"/>
|
||||
<binding destination="HDi-YM-iKn" name="selectedValue" keyPath="objectValue.string" id="xjL-hx-VG3">
|
||||
<dictionary key="options">
|
||||
<string key="NSValueTransformerName">EmptyStringTransformer</string>
|
||||
</dictionary>
|
||||
</binding>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
<connections>
|
||||
<outlet property="dragHandle" destination="XcO-0S-W4c" id="oKY-UF-LkW"/>
|
||||
<outlet property="ejectButton" destination="F3v-8Z-LaF" id="ql8-4u-qCA"/>
|
||||
<outlet property="popUpButton" destination="L2F-mj-lkr" id="Ktx-Yc-DIp"/>
|
||||
</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];
|
||||
url = [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-03-30T16:00:00Z</date>
|
||||
<date>2021-12-28T16:00:00Z</date>
|
||||
<key>UseCustomMame</key>
|
||||
<false/>
|
||||
<key>AutoCloseLogWindow</key>
|
||||
@@ -15,8 +15,8 @@
|
||||
<key>NSQuitAlwaysKeepsWindows</key>
|
||||
<true/>
|
||||
<key>DefaultDownloadURL</key>
|
||||
<string>https://archive.org/download/mame0.224</string>
|
||||
<string>https://archive.org/download/mame-0.231-merged</string>
|
||||
<key>DefaultDownloadExtension</key>
|
||||
<string>zip</string>
|
||||
<string>7z</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -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.
|
||||
@@ -90,11 +93,16 @@
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
|
||||
[nc addObserver: self selector: @selector(diskImageAdded:) name: @"DiskImageAdded" object: nil];
|
||||
[nc addObserver: self selector: @selector(diskImageAdded:) name: kNotificationDiskImageAdded object: nil];
|
||||
|
||||
[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 {
|
||||
@@ -170,7 +182,7 @@
|
||||
|
||||
NSFileManager *fm = [NSFileManager defaultManager];
|
||||
NSError *error;
|
||||
|
||||
|
||||
NSDictionary *attr = [fm attributesOfItemAtPath: path error: &error];
|
||||
if (error) {
|
||||
NSLog(@"%@ : %@", path, error);
|
||||
@@ -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
|
||||
|
||||
@@ -237,23 +248,18 @@
|
||||
|
||||
}
|
||||
|
||||
-(IBAction)doubleClick: (id)sender {
|
||||
NSDictionary *d = [self clickedItem];
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
|
||||
[nc postNotificationName: kNotificationDiskImageMagicRoute object: nil userInfo: d];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@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 +312,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,7 +251,8 @@ enum {
|
||||
}
|
||||
_items = tmp;
|
||||
[self refreshROMs: nil];
|
||||
|
||||
[_arrayController setContent: _items];
|
||||
|
||||
//[_tableView reloadData];
|
||||
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
|
||||
_session = [NSURLSession sessionWithConfiguration: config delegate: self delegateQueue: nil];
|
||||
@@ -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 {
|
||||
|
||||
@@ -336,6 +373,10 @@ enum {
|
||||
#endif
|
||||
}
|
||||
|
||||
-(void) defocus {
|
||||
[[self window] makeFirstResponder: nil];
|
||||
}
|
||||
|
||||
#pragma mark - IBActions
|
||||
|
||||
-(IBAction)cancelAll:(id)sender {
|
||||
@@ -349,13 +390,11 @@ enum {
|
||||
[_taskIndex removeAllObjects];
|
||||
[self setCurrentCount: 0];
|
||||
[self setActive: NO];
|
||||
|
||||
[_tableView reloadData];
|
||||
//[_tableView setNeedsDisplay: YES]; // doesn't work...
|
||||
}
|
||||
|
||||
- (IBAction)downloadMissing:(id)sender {
|
||||
|
||||
[self defocus];
|
||||
BOOL delta = NO;
|
||||
for (DownloadItem *item in _items) {
|
||||
NSURL *url = [item localURL];
|
||||
@@ -368,7 +407,6 @@ enum {
|
||||
|
||||
if (delta) {
|
||||
[self setActive: YES];
|
||||
[_tableView reloadData];
|
||||
}
|
||||
}
|
||||
- (IBAction)showRomFolder:(id)sender {
|
||||
@@ -399,11 +437,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 {
|
||||
@@ -420,16 +457,16 @@ enum {
|
||||
DownloadItem *item = [self clickedItem];
|
||||
if (!item) return;
|
||||
|
||||
[self defocus];
|
||||
|
||||
[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 +486,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 +561,6 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
|
||||
|
||||
if (item) {
|
||||
[item completeWithError: error];
|
||||
NSUInteger row = [item index];
|
||||
|
||||
[self redrawRow: row];
|
||||
}
|
||||
});
|
||||
|
||||
@@ -521,106 +584,121 @@ 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];
|
||||
-(NSURLCredential *)credentialForChallenge: (NSURLAuthenticationChallenge *)challenge {
|
||||
|
||||
|
||||
//if ([challenge previousFailureCount]) return nil;
|
||||
|
||||
NSURLCredential *credential = nil;
|
||||
NSURLProtectionSpace *space = [challenge protectionSpace];
|
||||
|
||||
|
||||
OSStatus status;
|
||||
NSDictionary *query;
|
||||
CFTypeRef item = nil;
|
||||
|
||||
|
||||
query = @{
|
||||
(id)kSecClass: (id)kSecClassInternetPassword,
|
||||
(id)kSecReturnData: (id)kCFBooleanTrue,
|
||||
(id)kSecReturnAttributes: (id)kCFBooleanTrue,
|
||||
(id)kSecAttrServer: [space host],
|
||||
//(id)kSecAttrProtocol: [space protocol],
|
||||
(id)kSecMatchLimit: (id)kSecMatchLimitOne,
|
||||
};
|
||||
|
||||
status = SecItemCopyMatching((CFDictionaryRef)query, &item);
|
||||
NSLog(@"%@", query);
|
||||
if (status != 0) return nil;
|
||||
|
||||
NSDictionary *d = (__bridge NSDictionary *)item;
|
||||
NSLog(@"%@", d);
|
||||
|
||||
NSString *account = [d objectForKey: (id)kSecAttrAccount];
|
||||
NSData *passwordData = [d objectForKey: (id)kSecValueData];
|
||||
NSString *password = [[NSString alloc] initWithData: passwordData encoding: NSUTF8StringEncoding];
|
||||
|
||||
|
||||
credential = [NSURLCredential credentialWithUser: account password: password persistence: NSURLCredentialPersistenceForSession];
|
||||
|
||||
return credential;
|
||||
|
||||
}
|
||||
|
||||
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
|
||||
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
|
||||
|
||||
return [_items objectAtIndex: row];
|
||||
NSLog(@"challenge: %@", challenge);
|
||||
|
||||
if ([challenge previousFailureCount]) {
|
||||
completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);
|
||||
return;
|
||||
}
|
||||
|
||||
NSURLProtectionSpace *space = [challenge protectionSpace];
|
||||
NSString *method = [space authenticationMethod];
|
||||
|
||||
if ([NSURLAuthenticationMethodHTTPBasic isEqualToString: method] ||
|
||||
[NSURLAuthenticationMethodNTLM isEqualToString: method] ||
|
||||
[NSURLAuthenticationMethodHTTPDigest isEqualToString: method]) {
|
||||
|
||||
NSURLCredential *credential = [self credentialForChallenge: challenge];
|
||||
|
||||
if (credential) {
|
||||
completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
|
||||
}
|
||||
|
||||
|
||||
- (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];
|
||||
}
|
||||
}
|
||||
|
||||
+(NSSet *)keyPathsForValuesAffectingStatusDescription {
|
||||
return [NSSet setWithObjects: @"error", @"status", nil];
|
||||
}
|
||||
-(NSString *)statusDescription {
|
||||
|
||||
static NSString *Names[] = {
|
||||
@@ -637,6 +715,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 +746,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-2022 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
|
||||
|
||||
|
||||
+575
-37
@@ -9,21 +9,29 @@
|
||||
#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>
|
||||
|
||||
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;
|
||||
@@ -33,31 +41,98 @@ 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 mameRewind;
|
||||
|
||||
@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 *mameShareDirectoryPath;
|
||||
@property NSString *mameBitBangerPath;
|
||||
|
||||
@property NSInteger mameSpeed;
|
||||
|
||||
@property BOOL mameBGFX;
|
||||
@property NSInteger mameBackend;
|
||||
@property NSInteger mameEffects;
|
||||
|
||||
|
||||
@property NSInteger mameWindowMode;
|
||||
|
||||
@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)
|
||||
|
||||
-(void)updateSoftwareList;
|
||||
|
||||
@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
|
||||
|
||||
@@ -65,33 +140,91 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
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 setMameRewind: 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",
|
||||
@"mameDebug", @"mameRewind",
|
||||
@"mameSpeed",
|
||||
@"mameAVI", @"mameAVIPath",
|
||||
@"mameWAV", @"mameWAVPath",
|
||||
@"mameVGM", @"mameVGMPath",
|
||||
@"mameShareDirectory", @"mameShareDirectoryPath",
|
||||
@"mameBitBanger", @"mameBitBangerPath",
|
||||
@"mameBGFX", @"mameBackend", @"mameEffects",
|
||||
@"software",
|
||||
];
|
||||
|
||||
for (NSString *key in keys) {
|
||||
@@ -106,6 +239,10 @@ static NSString *kContextMachine = @"kContextMachine";
|
||||
|
||||
[_machineViewController addObserver: self forKeyPath: @"machine" options: 0 context: (__bridge void * _Nullable)kContextMachine];
|
||||
|
||||
|
||||
[_softwareListControl setMinWidth: 250];
|
||||
[_softwareListControl setHidden: YES];
|
||||
|
||||
[self buildCommandLine];
|
||||
}
|
||||
|
||||
@@ -113,10 +250,13 @@ 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 buildCommandLine];
|
||||
} else {
|
||||
@@ -126,6 +266,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) {
|
||||
|
||||
@@ -267,7 +436,7 @@ static NSString *ShellQuote(NSString *s) {
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
if (!_mameMachine) {
|
||||
if (!_machine) {
|
||||
[self setCommandLine: @""];
|
||||
return;
|
||||
}
|
||||
@@ -275,7 +444,12 @@ static NSString *ShellQuote(NSString *s) {
|
||||
NSMutableArray *argv = [NSMutableArray new];
|
||||
|
||||
//[argv addObject: @"mame"];
|
||||
[argv addObject: _mameMachine];
|
||||
[argv addObject: _machine];
|
||||
|
||||
if (_software) {
|
||||
NSString *name = [_softwareSet nameForSoftware: _software];
|
||||
if (name) [argv addObject: name];
|
||||
}
|
||||
|
||||
// -confirm_quit?
|
||||
[argv addObject: @"-skip_gameinfo"];
|
||||
@@ -288,7 +462,7 @@ static NSString *ShellQuote(NSString *s) {
|
||||
[argv addObject: @"-nosamples"];
|
||||
|
||||
if (_mameDebug) [argv addObject: @"-debug"];
|
||||
|
||||
if (_mameRewind) [argv addObject: @"-rewind"];
|
||||
|
||||
|
||||
/*
|
||||
@@ -337,25 +511,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 {
|
||||
@@ -386,7 +547,7 @@ static NSString *ShellQuote(NSString *s) {
|
||||
}
|
||||
|
||||
// audio video.
|
||||
|
||||
|
||||
if (_mameAVI && [_mameAVIPath length]) {
|
||||
[argv addObject: @"-aviwrite"];
|
||||
[argv addObject: _mameAVIPath];
|
||||
@@ -405,6 +566,16 @@ static NSString *ShellQuote(NSString *s) {
|
||||
}
|
||||
}
|
||||
|
||||
if (_mameShareDirectory && [_mameShareDirectoryPath length]) {
|
||||
[argv addObject: @"-share_directory"];
|
||||
[argv addObject: _mameShareDirectoryPath];
|
||||
}
|
||||
|
||||
if (_mameBitBanger && [_mameBitBangerPath length]) {
|
||||
[argv addObject: @"-bitbanger"];
|
||||
[argv addObject: _mameBitBangerPath];
|
||||
}
|
||||
|
||||
[self setCommandLine: JoinArguments(argv, nil)];
|
||||
[self setArgs: argv];
|
||||
}
|
||||
@@ -415,24 +586,90 @@ 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?
|
||||
}
|
||||
|
||||
-(void)defocus {
|
||||
[[self window] makeFirstResponder: nil]; // in case text is being edited...
|
||||
}
|
||||
|
||||
# pragma mark - IBActions
|
||||
|
||||
- (IBAction)launchAction:(id)sender {
|
||||
|
||||
[self defocus];
|
||||
if (![_args count]) return;
|
||||
|
||||
[LogWindowController controllerForArgs: _args];
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)listMedia:(id)sender {
|
||||
|
||||
[self defocus];
|
||||
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 defocus];
|
||||
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];
|
||||
@@ -473,5 +710,306 @@ 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
|
||||
|
||||
|
||||
@implementation LaunchWindowController (SoftwareList)
|
||||
|
||||
-(void)updateSoftwareList {
|
||||
|
||||
_softwareSet = [SoftwareSet softwareSetForMachine: _machine];
|
||||
|
||||
[_softwareListControl setAutocompleteDelegate: _softwareSet];
|
||||
|
||||
if (_softwareSet) {
|
||||
[_softwareListControl invalidate];
|
||||
[_softwareListControl setHidden: NO];
|
||||
} else {
|
||||
_software = nil;
|
||||
[_softwareListControl setHidden: YES];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)softwareChanged:(id)sender {
|
||||
|
||||
id o = [(NSControl *)sender objectValue];
|
||||
//NSLog(@"%@", o);
|
||||
[self setSoftware: o];
|
||||
}
|
||||
|
||||
@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 resetSoftware];
|
||||
|
||||
[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);
|
||||
_(@"rewind", setMameRewind);
|
||||
_(@"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 defocus];
|
||||
|
||||
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");
|
||||
_(_mameRewind, @"rewind");
|
||||
_(_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
|
||||
|
||||
#if 1
|
||||
-(void)menuNeedsUpdate:(NSMenu *)menu {
|
||||
NSEventModifierFlags modifiers = [NSEvent modifierFlags];
|
||||
|
||||
[self setOptionKey: modifiers & NSEventModifierFlagOption ? YES : NO];
|
||||
}
|
||||
|
||||
#else
|
||||
/* doesn't trigger when menu is the first responder. */
|
||||
-(void)flagsChanged:(NSEvent *)event {
|
||||
NSEventModifierFlags modifiers = [event modifierFlags];
|
||||
|
||||
[self setOptionKey: modifiers & NSEventModifierFlagOption ? YES : NO];
|
||||
|
||||
[super flagsChanged: event];
|
||||
}
|
||||
#endif
|
||||
|
||||
@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
|
||||
|
||||
+102
-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.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,4 +254,12 @@ static NSMutableSet *LogWindows;
|
||||
[LogWindows removeObject: self];
|
||||
}
|
||||
|
||||
#pragma mark - IBActions
|
||||
|
||||
- (IBAction)clearLog:(id)sender {
|
||||
NSAttributedString *empty = [NSAttributedString new];
|
||||
[[_textView textStorage] setAttributedString: empty];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -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,8 +17,25 @@ typedef struct Media {
|
||||
unsigned floppy_5_25;
|
||||
unsigned floppy_3_5;
|
||||
unsigned pseudo_disk;
|
||||
unsigned bitbanger;
|
||||
unsigned midiin;
|
||||
unsigned midiout;
|
||||
unsigned picture;
|
||||
} Media;
|
||||
|
||||
|
||||
typedef enum {
|
||||
MediaTypeError = -1,
|
||||
MediaTypeUnknown = 0,
|
||||
MediaType_5_25,
|
||||
MediaType_3_5,
|
||||
MediaType_HardDisk,
|
||||
MediaType_CDROM,
|
||||
MediaType_Cassette,
|
||||
MediaType_Picture,
|
||||
MediaType_MIDI,
|
||||
} MediaType;
|
||||
|
||||
struct Media MediaFromDictionary(NSDictionary *);
|
||||
|
||||
void MediaAdd(Media *dest, const Media *src);
|
||||
@@ -27,4 +44,6 @@ BOOL MediaEqual(const Media *lhs, const Media *rhs);
|
||||
|
||||
extern const Media EmptyMedia;
|
||||
|
||||
MediaType ClassifyMediaFile(id file);
|
||||
|
||||
#endif /* Media_h */
|
||||
|
||||
+229
@@ -22,6 +22,10 @@ struct Media MediaFromDictionary(NSDictionary *dict) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
_(midiin);
|
||||
_(midiout);
|
||||
_(picture);
|
||||
|
||||
return m;
|
||||
#undef _
|
||||
@@ -38,6 +42,10 @@ void MediaAdd(Media *dest, const Media *src) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
_(midiin);
|
||||
_(midiout);
|
||||
_(picture);
|
||||
#undef _
|
||||
}
|
||||
|
||||
@@ -53,6 +61,227 @@ BOOL MediaEqual(const Media *lhs, const Media *rhs) {
|
||||
_(floppy_3_5);
|
||||
_(floppy_5_25);
|
||||
_(pseudo_disk);
|
||||
_(bitbanger);
|
||||
_(midiin);
|
||||
_(midiout);
|
||||
_(picture);
|
||||
|
||||
return YES;
|
||||
#undef _
|
||||
}
|
||||
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
|
||||
|
||||
#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[i];
|
||||
if (!c) break;
|
||||
c = tolower(c);
|
||||
rv |= (c << shift);
|
||||
}
|
||||
//if (i > 4) return 0; // .image is 5....
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
* MAME cares deeply about file extensions. LIST NOT EXHAUSTIVE
|
||||
*
|
||||
* Hard Disk: .chd .hd .hdv .2mg .hdi
|
||||
* CD-ROM: .chd .cue .toc .nrg .gdi .iso .cdr
|
||||
* 5.25: .dsk .do .po .edd .woz .nib .mfi .dfi .rti
|
||||
* 3.5: .dc42 .woz .2mg .mfi .dfi .hfe .mfm .td0 .imd
|
||||
.d77 .d88 .1dd .cqm .cqi .dsk .ima .img .ufi
|
||||
.360 .ipf [also .po and .hdv]
|
||||
* Midi in: .mid
|
||||
* Midi out: .mid
|
||||
* Picture: .png
|
||||
* Cassette: .wav
|
||||
*/
|
||||
|
||||
static bool is_raw_525(size_t disk_size) {
|
||||
if (disk_size & 255) return NO;
|
||||
size_t blocks = disk_size >> 8;
|
||||
|
||||
return blocks == 560 || blocks == 640;
|
||||
}
|
||||
|
||||
static BOOL is_raw_35(size_t disk_size) {
|
||||
if (disk_size & 511) return NO;
|
||||
size_t blocks = disk_size >> 9;
|
||||
|
||||
return blocks == 800 || blocks == 1600 || blocks == 1440 || blocks == 2880;
|
||||
}
|
||||
|
||||
static MediaType is_woz(const uint8_t *buffer, size_t file_size) {
|
||||
|
||||
/* 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 MediaTypeUnknown;
|
||||
}
|
||||
return MediaTypeError;
|
||||
}
|
||||
|
||||
static MediaType is_dc42(const uint8_t *buffer, size_t file_size) {
|
||||
|
||||
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 == file_size) {
|
||||
if (is_raw_35(dsize)) return MediaType_3_5;
|
||||
return MediaType_HardDisk;
|
||||
}
|
||||
}
|
||||
|
||||
return MediaTypeError;
|
||||
}
|
||||
|
||||
static MediaType is_2img(const uint8_t *buffer, size_t file_size) {
|
||||
|
||||
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 (is_raw_525(blocks * 512)) return MediaType_5_25;
|
||||
if (is_raw_35(blocks * 512)) return MediaType_3_5;
|
||||
return MediaType_HardDisk; //
|
||||
//return MediaTypeUnknown;
|
||||
}
|
||||
|
||||
return MediaTypeError;
|
||||
}
|
||||
|
||||
static MediaType is_chd(const uint8_t *buffer, size_t file_size) {
|
||||
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]);
|
||||
if (is_raw_525(bytes)) return MediaType_5_25;
|
||||
if (is_raw_35(bytes)) return MediaType_3_5;
|
||||
return MediaType_HardDisk; // iso?
|
||||
}
|
||||
return MediaTypeUnknown;
|
||||
}
|
||||
return MediaTypeError;
|
||||
}
|
||||
|
||||
|
||||
|
||||
MediaType ClassifyMediaFile(id file) {
|
||||
|
||||
struct stat st;
|
||||
ssize_t size;
|
||||
unsigned char buffer[128];
|
||||
int fd;
|
||||
const char *path = [file fileSystemRepresentation]; // or URL
|
||||
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 MediaTypeError;
|
||||
fstat(fd, &st);
|
||||
|
||||
size = read(fd, buffer, sizeof(buffer));
|
||||
close(fd);
|
||||
if (size <= 0) return MediaTypeError;
|
||||
|
||||
// 13 sector support ? not on an event 512 block boundary.
|
||||
// = 116480 bytes.
|
||||
|
||||
switch(ext_hash) {
|
||||
case _x3('w', 'o', 'z'):
|
||||
return is_woz(buffer, st.st_size);
|
||||
|
||||
case _x3('2', 'm', 'g'):
|
||||
case _x4('2', 'i', 'm', 'g'):
|
||||
return is_2img(buffer, st.st_size);
|
||||
|
||||
case _x3('c', 'h', 'd'):
|
||||
return is_chd(buffer, st.st_size);
|
||||
|
||||
// dc42 - dc,dc42,dsk,img,image
|
||||
case _x2('d', 'c'): // n.b. as of .233, allowed for mac, not for apple2
|
||||
case _x4('d', 'c', '4', '2'):
|
||||
return is_dc42(buffer, st.st_size);
|
||||
|
||||
// dsk, image, img may also be raw or disk copy.
|
||||
case _x3('d', 's', 'k'):
|
||||
case _x3('i', 'm', 'g'):
|
||||
case _x4('i', 'm', 'a', 'g'):
|
||||
|
||||
if (is_raw_525(st.st_size)) return MediaType_5_25;
|
||||
if (is_raw_35(st.st_size)) return MediaType_3_5;
|
||||
return is_dc42(buffer, st.st_size);
|
||||
|
||||
case _x2('d', 'o'):
|
||||
case _x2('p', 'o'):
|
||||
if (is_raw_525(st.st_size)) return MediaType_5_25;
|
||||
if (is_raw_35(st.st_size)) return MediaType_3_5;
|
||||
return MediaTypeUnknown;
|
||||
|
||||
// hdv - 3.5 or hard drive.
|
||||
case _x3('h', 'd', 'v'):
|
||||
case _x3('r', 'a', 'w'):
|
||||
if (is_raw_35(st.st_size)) return MediaType_3_5;
|
||||
if ((st.st_size & 511) == 0) return MediaType_HardDisk;
|
||||
return MediaTypeUnknown;
|
||||
|
||||
case _x3('n', 'i', 'b'):
|
||||
return MediaType_5_25;
|
||||
|
||||
case _x3('w', 'a', 'v'):
|
||||
return MediaType_Cassette;
|
||||
|
||||
// cd-rom
|
||||
case _x3('i', 's', 'o'):
|
||||
case _x3('c', 'u', 'e'):
|
||||
case _x3('c', 'd', 'r'):
|
||||
return MediaType_CDROM;
|
||||
|
||||
case _x3('p', 'n', 'g'):
|
||||
return MediaType_Picture;
|
||||
|
||||
case _x3('m', 'i', 'd'):
|
||||
return MediaType_MIDI;
|
||||
|
||||
}
|
||||
|
||||
return MediaTypeUnknown;
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Media.h"
|
||||
#import "Ample.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@@ -20,8 +21,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (IBAction)ejectAction:(id)sender;
|
||||
- (IBAction)pathAction:(id)sender;
|
||||
|
||||
-(IBAction)resetMedia:(id)sender;
|
||||
|
||||
//-(void)setMedia: (NSDictionary *)media;
|
||||
-(BOOL)smartRouteURL: (NSURL *)url;
|
||||
-(BOOL)smartRouteFile: (NSString *)file;
|
||||
|
||||
@end
|
||||
|
||||
@interface MediaViewController (Bookmark) <Bookmark>
|
||||
|
||||
@end
|
||||
|
||||
|
||||
+424
-83
@@ -9,11 +9,14 @@
|
||||
#import "MediaViewController.h"
|
||||
#import "TableCellView.h"
|
||||
|
||||
#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 +31,8 @@
|
||||
@property NSMutableArray *children; // URLs?
|
||||
@property NSString *title;
|
||||
@property NSInteger index;
|
||||
@property NSInteger category;
|
||||
@property (weak)NSOutlineView *view;
|
||||
|
||||
-(NSInteger)count;
|
||||
-(id)objectAtIndex:(NSInteger)index;
|
||||
@@ -36,9 +41,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 +90,6 @@
|
||||
|
||||
-(void)prepareView: (NSTableCellView *)view {
|
||||
|
||||
[view setObjectValue: self];
|
||||
[[view textField] setStringValue: _title];
|
||||
}
|
||||
|
||||
-(CGFloat)height {
|
||||
@@ -104,6 +111,7 @@
|
||||
for (unsigned i = count; i < newCount; ++i) {
|
||||
MediaItem *item = [MediaItem new];
|
||||
[item setIndex: i];
|
||||
[item setCategory: _category];
|
||||
[_children addObject: item];
|
||||
}
|
||||
|
||||
@@ -115,7 +123,7 @@
|
||||
|
||||
for (unsigned i = newCount; i < count; ++i) {
|
||||
MediaItem *item = [_children lastObject];
|
||||
if ([item url]) break;
|
||||
if ([item occupied]) break;
|
||||
|
||||
[_children removeLastObject];
|
||||
}
|
||||
@@ -123,7 +131,36 @@
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(BOOL)pruneChildrenWithOutlineView: (NSOutlineView *)view {
|
||||
-(BOOL)addURL: (NSURL *)url {
|
||||
|
||||
for (MediaItem *item in _children) {
|
||||
if (![item occupied]) {
|
||||
[item setUrl: url];
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
// add an extra item...
|
||||
|
||||
if (!_children) _children = [NSMutableArray new];
|
||||
NSUInteger ix = [_children count];
|
||||
|
||||
MediaItem *item = [MediaItem new];
|
||||
[item setIndex: ix];
|
||||
[item setCategory: _category];
|
||||
[item setUrl: url];
|
||||
[item setValid: ix < _validCount];
|
||||
[_children addObject: item];
|
||||
if (_view) {
|
||||
NSIndexSet *set = [NSIndexSet indexSetWithIndex: ix];
|
||||
[_view insertItemsAtIndexes: set
|
||||
inParent: self
|
||||
withAnimation: NSTableViewAnimationEffectFade];
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(BOOL)pruneChildren {
|
||||
NSUInteger count = [_children count];
|
||||
BOOL delta = NO;
|
||||
if (_validCount == count) return NO;
|
||||
@@ -131,7 +168,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]];
|
||||
@@ -140,15 +177,15 @@
|
||||
}
|
||||
if (delta) {
|
||||
|
||||
if (view)
|
||||
[view removeItemsAtIndexes: set inParent: self withAnimation: NSTableViewAnimationEffectFade];
|
||||
if (_view)
|
||||
[_view removeItemsAtIndexes: set inParent: self withAnimation: NSTableViewAnimationEffectFade];
|
||||
|
||||
return YES;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
-(BOOL)moveItemFrom: (NSInteger)oldIndex to: (NSInteger)newIndex outlineView: (NSOutlineView *)view {
|
||||
-(BOOL)moveItemFrom: (NSInteger)oldIndex to: (NSInteger)newIndex {
|
||||
if (newIndex == oldIndex) return NO;
|
||||
NSUInteger count = [_children count];
|
||||
if (oldIndex >= count) return NO;
|
||||
@@ -161,7 +198,7 @@
|
||||
} else {
|
||||
[_children insertObject: item atIndex: newIndex];
|
||||
}
|
||||
if (view) [view moveItemAtIndex: oldIndex inParent: self toIndex: newIndex inParent: self];
|
||||
if (_view) [_view moveItemAtIndex: oldIndex inParent: self toIndex: newIndex inParent: self];
|
||||
|
||||
// re-index and re-validate.
|
||||
unsigned ix = 0;
|
||||
@@ -173,7 +210,7 @@
|
||||
|
||||
++ix;
|
||||
}
|
||||
[self pruneChildrenWithOutlineView: view];
|
||||
[self pruneChildren];
|
||||
//[view reloadItem: self reloadChildren: YES];
|
||||
return YES;
|
||||
}
|
||||
@@ -181,11 +218,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,38 +266,23 @@
|
||||
}
|
||||
|
||||
-(NSString *)viewIdentifier {
|
||||
if (_category == kIndexBitBanger) return @"BBItemView";
|
||||
if (_category == kIndexMidiOut) return @"MidiItemView";
|
||||
if (_category == kIndexMidiIn) return @"MidiItemView";
|
||||
return @"ItemView";
|
||||
}
|
||||
|
||||
-(void)prepareView: (TablePathView *)view {
|
||||
|
||||
NSValueTransformer *t;
|
||||
NSDictionary *options;
|
||||
|
||||
[view setObjectValue: self];
|
||||
-(void)prepareView: (MediaTableCellView *)view {
|
||||
/* set the path tag = category. */
|
||||
|
||||
[view prepareView: _category];
|
||||
#if 0
|
||||
if (_category == kIndexMidiIn || _category == kIndexMidiOut || _category == kIndexBitBanger) {
|
||||
return;
|
||||
}
|
||||
|
||||
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];
|
||||
[pc setTag: _category + 1]; // to differentiate 0 / no path control.
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -249,28 +297,21 @@
|
||||
@end
|
||||
|
||||
|
||||
#define CATEGORY_COUNT 6
|
||||
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
|
||||
|
||||
|
||||
@interface MediaViewController () {
|
||||
|
||||
MediaCategory *_data[CATEGORY_COUNT];
|
||||
NSArray *_root;
|
||||
NSMutableArray *_root;
|
||||
Media _media;
|
||||
|
||||
BOOL _loadingBookmark;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation MediaViewController
|
||||
|
||||
enum {
|
||||
kIndexFloppy525 = 0,
|
||||
kIndexFloppy35,
|
||||
kIndexHardDrive,
|
||||
kIndexCDROM,
|
||||
kIndexCassette,
|
||||
kIndexDiskImage,
|
||||
};
|
||||
|
||||
|
||||
-(void)awakeFromNib {
|
||||
@@ -286,8 +327,18 @@ 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
|
||||
|
||||
_root = @[];
|
||||
_data[kIndexMidiIn] = [MediaCategory categoryWithTitle: @"MIDI (In)"];
|
||||
_data[kIndexMidiOut] = [MediaCategory categoryWithTitle: @"MIDI (Out)"];
|
||||
_data[kIndexPicture] = [MediaCategory categoryWithTitle: @"Picture"];
|
||||
|
||||
for (unsigned i = 0; i < CATEGORY_COUNT; ++i) {
|
||||
[_data[i] setCategory: i];
|
||||
[_data[i] setIndex: -1];
|
||||
}
|
||||
|
||||
_root = [NSMutableArray new];
|
||||
|
||||
}
|
||||
|
||||
@@ -296,7 +347,7 @@ enum {
|
||||
-(void)rebuildArgs {
|
||||
|
||||
static char* prefix[] = {
|
||||
"flop", "flop", "hard", "cdrm", "cass", "disk"
|
||||
"flop", "flop", "hard", "cdrm", "cass", "disk", "bitb", "min", "mout", "pic"
|
||||
};
|
||||
static_assert(SIZEOF(prefix) == CATEGORY_COUNT, "Missing item");
|
||||
NSMutableArray *args = [NSMutableArray new];
|
||||
@@ -311,12 +362,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
|
||||
}
|
||||
@@ -325,6 +376,7 @@ enum {
|
||||
}
|
||||
|
||||
-(void)rebuildRoot {
|
||||
|
||||
NSMutableArray *tmp = [NSMutableArray new];
|
||||
int ix = 0;
|
||||
for (unsigned j = 0 ; j < CATEGORY_COUNT; ++j) {
|
||||
@@ -340,12 +392,16 @@ 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 {
|
||||
|
||||
// todo -- fancy diff algorithm to animate changes.
|
||||
|
||||
MediaCategory *cat;
|
||||
BOOL delta = NO;
|
||||
unsigned x;
|
||||
@@ -353,6 +409,8 @@ enum {
|
||||
if (MediaEqual(&_media, &media)) return;
|
||||
_media = media;
|
||||
|
||||
[_outlineView beginUpdates];
|
||||
|
||||
|
||||
#undef _
|
||||
#define _(name, index) \
|
||||
@@ -363,17 +421,55 @@ x = media.name; cat = _data[index]; delta |= [cat setItemCount: x]
|
||||
_(floppy_3_5, kIndexFloppy35);
|
||||
_(floppy_5_25, kIndexFloppy525);
|
||||
_(pseudo_disk, kIndexDiskImage);
|
||||
_(bitbanger, kIndexBitBanger);
|
||||
// disable midi for now - it's either a midi file (which auto-plays too soon to be useful)
|
||||
// or a midi device ("default" for first one).
|
||||
// So we should build a device list (and pre-populate the default one)
|
||||
// another approach is a separate utility to act as a midi/serial input converter
|
||||
// and midi file / serial converter so the modem/serial port could be used.
|
||||
#if 1
|
||||
_(midiin, kIndexMidiIn);
|
||||
_(midiout, kIndexMidiOut);
|
||||
#endif
|
||||
_(picture, kIndexPicture);
|
||||
|
||||
|
||||
if (delta) {
|
||||
[self rebuildRoot];
|
||||
[self rebuildArgs];
|
||||
if (!_loadingBookmark) [self rebuildArgs];
|
||||
}
|
||||
|
||||
[_outlineView endUpdates];
|
||||
}
|
||||
|
||||
-(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 pruneChildren]) delta = YES;
|
||||
}
|
||||
if (delta) {
|
||||
[self rebuildRoot];
|
||||
if (!_loadingBookmark) [self rebuildArgs];
|
||||
}
|
||||
}
|
||||
|
||||
static NSString *kDragType = @"private.ample.media";
|
||||
- (void)viewDidLoad {
|
||||
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
|
||||
[super viewDidLoad];
|
||||
|
||||
//NSOutlineView *view = [self view];
|
||||
@@ -384,6 +480,21 @@ static NSString *kDragType = @"private.ample.media";
|
||||
[_outlineView expandItem: nil expandChildren: YES];
|
||||
|
||||
[_outlineView registerForDraggedTypes: @[kDragType]];
|
||||
|
||||
for (unsigned i = 0; i < CATEGORY_COUNT; ++i)
|
||||
[_data[i] setView: _outlineView];
|
||||
|
||||
|
||||
[nc addObserver: self selector: @selector(magicRouteNotification:) name: kNotificationDiskImageMagicRoute object: nil];
|
||||
|
||||
}
|
||||
|
||||
-(void)viewWillDisappear {
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc removeObserver: self];
|
||||
|
||||
for (unsigned i = 0; i < CATEGORY_COUNT; ++i)
|
||||
[_data[i] setView: nil];
|
||||
}
|
||||
|
||||
#pragma mark - NSOutlineViewDelegate
|
||||
@@ -397,15 +508,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 +547,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
|
||||
@@ -553,7 +657,7 @@ static NSString *kDragType = @"private.ample.media";
|
||||
}
|
||||
|
||||
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id<NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)index {
|
||||
|
||||
|
||||
if (index < 0) return NO;
|
||||
|
||||
|
||||
@@ -587,7 +691,7 @@ static NSString *kDragType = @"private.ample.media";
|
||||
NSInteger oldIndex = indexes[1];
|
||||
|
||||
[_outlineView beginUpdates];
|
||||
[cat moveItemFrom: oldIndex to: index outlineView: _outlineView];
|
||||
[cat moveItemFrom: oldIndex to: index];
|
||||
[_outlineView endUpdates];
|
||||
[self rebuildArgs];
|
||||
|
||||
@@ -605,35 +709,272 @@ 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]) {
|
||||
MediaCategory *cat = [_outlineView parentForItem: item];
|
||||
[_outlineView beginUpdates];
|
||||
[cat pruneChildrenWithOutlineView: _outlineView];
|
||||
[cat pruneChildren];
|
||||
|
||||
// remove the entire category??
|
||||
if (![cat validCount] && ![cat count]) {
|
||||
NSUInteger ix = [_root indexOfObject: cat];
|
||||
if (ix != NSNotFound) {
|
||||
NSIndexSet *set = [NSIndexSet indexSetWithIndex: ix];
|
||||
[_outlineView removeItemsAtIndexes: set
|
||||
inParent: nil
|
||||
withAnimation: NSTableViewAnimationEffectFade];
|
||||
|
||||
[_root removeObjectAtIndex: ix];
|
||||
[cat setIndex: -1];
|
||||
}
|
||||
}
|
||||
|
||||
[_outlineView endUpdates];
|
||||
}
|
||||
|
||||
// todo -- if this eliminates a category completely, it will still be included
|
||||
// since we're now using animaations instead of reloading.
|
||||
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
- (IBAction)pathAction:(id)sender {
|
||||
// need to update the eject button...
|
||||
|
||||
NSURL *url = [(NSPathControl *)sender URL];
|
||||
NSInteger tag = [sender tag] - 1;
|
||||
|
||||
if (url) {
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc postNotificationName: @"DiskImageAdded" object: url];
|
||||
switch(tag) {
|
||||
|
||||
case kIndexFloppy525:
|
||||
case kIndexFloppy35:
|
||||
case kIndexHardDrive:
|
||||
case kIndexCDROM:
|
||||
case kIndexCassette:
|
||||
case kIndexDiskImage:
|
||||
if (url) {
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc postNotificationName: kNotificationDiskImageAdded object: url];
|
||||
}
|
||||
break;
|
||||
|
||||
// not disk images or don't use a path control.
|
||||
case kIndexPicture:
|
||||
case kIndexMidiIn:
|
||||
case kIndexMidiOut:
|
||||
case kIndexBitBanger:
|
||||
default: break;
|
||||
}
|
||||
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
-(IBAction)textAction: (id)sender {
|
||||
[self rebuildArgs];
|
||||
}
|
||||
- (IBAction)midiAction:(id)sender {
|
||||
[self rebuildArgs];
|
||||
}
|
||||
|
||||
-(IBAction)resetMedia:(id)sender {
|
||||
[self resetDiskImages];
|
||||
}
|
||||
|
||||
|
||||
|
||||
-(void)magicRouteNotification: (NSNotification *)notification {
|
||||
NSDictionary *userInfo = [notification userInfo];
|
||||
id path = [userInfo objectForKey: @"path"];
|
||||
|
||||
if ([path isKindOfClass: [NSURL class]]) {
|
||||
[self smartRouteURL: path];
|
||||
return;
|
||||
}
|
||||
|
||||
if ([path isKindOfClass: [NSString class]]) {
|
||||
NSURL *url = [NSURL fileURLWithPath: path];
|
||||
[self smartRouteURL: url];
|
||||
return;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* given a file, add it to the media list.
|
||||
* TODO - how to handle if full or media type missing?
|
||||
*/
|
||||
-(BOOL)smartRouteURL: (NSURL *)url {
|
||||
|
||||
if (!url) return NO;
|
||||
|
||||
MediaType mt = ClassifyMediaFile(url);
|
||||
if (mt < 1) return NO; // unknown / error.
|
||||
|
||||
unsigned ix = 0;
|
||||
switch(mt) {
|
||||
case MediaType_3_5: ix = kIndexFloppy35; break;
|
||||
case MediaType_5_25: ix = kIndexFloppy525; break;
|
||||
case MediaType_Cassette: ix = kIndexCassette; break;
|
||||
case MediaType_HardDisk: ix = kIndexHardDrive; break;
|
||||
case MediaType_CDROM: ix = kIndexCDROM; break;
|
||||
|
||||
case MediaType_Picture: ix = kIndexPicture; break;
|
||||
case MediaType_MIDI: // ix = kIndexMidiIn; break;
|
||||
case MediaTypeError:
|
||||
case MediaTypeUnknown:
|
||||
return NO;
|
||||
}
|
||||
|
||||
[_outlineView beginUpdates];
|
||||
// todo -- check root, insert if necessary?
|
||||
MediaCategory *cat = _data[ix];
|
||||
[cat addURL: url];
|
||||
[_outlineView endUpdates];
|
||||
|
||||
[self rebuildArgs];
|
||||
return YES;
|
||||
}
|
||||
|
||||
-(BOOL)smartRouteFile: (NSString *)file {
|
||||
return NO;
|
||||
}
|
||||
|
||||
@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", @"midiin", @"midiout", @"pic"
|
||||
};
|
||||
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 || ix == kIndexMidiOut || ix == kIndexMidiIn) {
|
||||
[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 || ix == kIndexMidiOut || ix == kIndexMidiIn) {
|
||||
[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,25 @@
|
||||
//
|
||||
// MidiManager.h
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 8/6/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef MidiManager_h
|
||||
#define MidiManager_h
|
||||
|
||||
|
||||
extern NSString *kMidiSourcesChangedNotification;
|
||||
extern NSString *kMidiDestinationsChangedNotification;
|
||||
|
||||
@interface MidiManager : NSObject
|
||||
|
||||
@property NSArray *sources;
|
||||
@property NSArray *destinations;
|
||||
|
||||
+(instancetype)sharedManager;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* MidiManager_h */
|
||||
@@ -0,0 +1,153 @@
|
||||
//
|
||||
// Midi.m
|
||||
// Ample
|
||||
//
|
||||
// Created by Kelvin Sherlock on 8/6/2021.
|
||||
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreMIDI/CoreMIDI.h>
|
||||
|
||||
#import "MidiManager.h"
|
||||
|
||||
static NSArray *MidiSources(void) {
|
||||
|
||||
ItemCount count = MIDIGetNumberOfSources();
|
||||
if (count <= 0) return @[];
|
||||
|
||||
NSMutableArray *rv = [NSMutableArray arrayWithCapacity: count + 1];
|
||||
|
||||
MIDIEndpointRef ep;
|
||||
for(int i = 0; i < count; ++i) {
|
||||
ep = MIDIGetSource(i);
|
||||
if (!ep) continue;
|
||||
|
||||
// https://developer.apple.com/library/archive/qa/qa1374/_index.html
|
||||
CFStringRef str = NULL;
|
||||
MIDIObjectGetStringProperty(ep, kMIDIPropertyDisplayName, &str);
|
||||
|
||||
if (str) {
|
||||
[rv addObject: (__bridge id _Nonnull)(str)];
|
||||
CFRelease(str);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
static NSArray *MidiDestinations(void) {
|
||||
|
||||
ItemCount count = MIDIGetNumberOfDestinations();
|
||||
if (count <= 0) return @[];
|
||||
|
||||
NSMutableArray *rv = [NSMutableArray arrayWithCapacity: count + 1];
|
||||
|
||||
MIDIEndpointRef ep;
|
||||
for(int i = 0; i < count; ++i) {
|
||||
ep = MIDIGetDestination(i);
|
||||
if (!ep) continue;
|
||||
|
||||
// https://developer.apple.com/library/archive/qa/qa1374/_index.html
|
||||
CFStringRef str = NULL;
|
||||
MIDIObjectGetStringProperty(ep, kMIDIPropertyDisplayName, &str);
|
||||
|
||||
if (str) {
|
||||
[rv addObject: (__bridge id _Nonnull)(str)];
|
||||
CFRelease(str);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NSString *kMidiSourcesChangedNotification = @"Midi Sources Changed";
|
||||
NSString *kMidiDestinationsChangedNotification = @"Midi Destinations Changed";
|
||||
|
||||
|
||||
@interface MidiManager () {
|
||||
MIDIClientRef _client;
|
||||
}
|
||||
|
||||
-(void)objectAddRemove: (const MIDIObjectAddRemoveNotification *)message;
|
||||
-(void)objectPropertyChanged: (const MIDIObjectPropertyChangeNotification *)message;
|
||||
@end
|
||||
|
||||
|
||||
static MidiManager *singleton = nil;
|
||||
@implementation MidiManager
|
||||
|
||||
-(void)awakeFromNib {
|
||||
if (!singleton) singleton = self;
|
||||
}
|
||||
|
||||
+(instancetype)sharedManager {
|
||||
if (!singleton) singleton = [MidiManager new];
|
||||
return singleton;
|
||||
}
|
||||
|
||||
-(instancetype)init {
|
||||
|
||||
if (singleton) return singleton;
|
||||
|
||||
OSStatus status;
|
||||
|
||||
|
||||
status = MIDIClientCreateWithBlock(
|
||||
CFSTR("serial_midi"),
|
||||
&_client,
|
||||
^(const MIDINotification *message){
|
||||
switch(message->messageID) {
|
||||
case kMIDIMsgObjectAdded:
|
||||
case kMIDIMsgObjectRemoved:
|
||||
[self objectAddRemove: (const MIDIObjectAddRemoveNotification *)message];
|
||||
break;
|
||||
case kMIDIMsgPropertyChanged:
|
||||
[self objectPropertyChanged: (const MIDIObjectPropertyChangeNotification *)message];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
_sources = MidiSources();
|
||||
_destinations = MidiDestinations();
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)objectAddRemove: (const MIDIObjectAddRemoveNotification *)message {
|
||||
|
||||
const MIDIObjectAddRemoveNotification *m = (const MIDIObjectAddRemoveNotification *)message;
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
|
||||
if (m->childType == kMIDIObjectType_Source) {
|
||||
[self setSources: MidiSources()];
|
||||
[nc postNotificationName: kMidiSourcesChangedNotification object: self];
|
||||
}
|
||||
|
||||
if (m->childType == kMIDIObjectType_Destination) {
|
||||
[self setDestinations: MidiDestinations()];
|
||||
[nc postNotificationName: kMidiDestinationsChangedNotification object: self];
|
||||
}
|
||||
|
||||
}
|
||||
-(void)objectPropertyChanged: (const MIDIObjectPropertyChangeNotification *)message {
|
||||
|
||||
const MIDIObjectPropertyChangeNotification *m = (const MIDIObjectPropertyChangeNotification *)message;
|
||||
if (m->propertyName == kMIDIPropertyDisplayName) {
|
||||
[self setSources: MidiSources()];
|
||||
[self setDestinations: MidiDestinations()];
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc postNotificationName: kMidiSourcesChangedNotification object: self];
|
||||
[nc postNotificationName: kMidiDestinationsChangedNotification object: self];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-(void)dealloc {
|
||||
|
||||
if (_client)
|
||||
MIDIClientDispose(_client);
|
||||
}
|
||||
@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
|
||||
@@ -51,25 +51,30 @@
|
||||
border: solid 1px black;
|
||||
text-shadow: 0px 1px 0px black;
|
||||
box-shadow: 1px 1px 2px 0px rgba(0,0,0,0.75);
|
||||
background-color: rgb(101, 101, 101);
|
||||
background-color: rgb(101, 101, 101);
|
||||
}
|
||||
}
|
||||
</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);
|
||||
});
|
||||
}
|
||||
@@ -99,14 +104,17 @@
|
||||
<td>Toggle full screen mode</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><kbd>F12</kbd></td>
|
||||
<td>
|
||||
<span data-macbook=false><kbd>F12</kbd></span>
|
||||
<span data-macbook=true><kbd>Fn</kbd>+<kbd>F12</kbd></span>
|
||||
</td>
|
||||
<td>Reset Key</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h1>Partial UI Mode</h1>
|
||||
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 14em;" />
|
||||
|
||||
+1190
-18
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,543 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>ace500</string>
|
||||
<key>description</key>
|
||||
<string>Franklin ACE 500</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
<integer>560</integer>
|
||||
<integer>384</integer>
|
||||
</array>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>ramsize</string>
|
||||
<key>description</key>
|
||||
<string>RAM</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>intValue</key>
|
||||
<integer>131072</integer>
|
||||
<key>description</key>
|
||||
<string>128K</string>
|
||||
<key>value</key>
|
||||
<string>128K</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>smartport</string>
|
||||
<key>description</key>
|
||||
<string>Disk Drives</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string></string>
|
||||
<key>devname</key>
|
||||
<string>smartport</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>gameio</string>
|
||||
<key>description</key>
|
||||
<string>Game I/O</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>devname</key>
|
||||
<string>a2joy</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>paddles</string>
|
||||
<key>description</key>
|
||||
<string>Apple II paddles</string>
|
||||
<key>devname</key>
|
||||
<string>a2pdls</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>compeyes</string>
|
||||
<key>description</key>
|
||||
<string>Digital Vision ComputerEyes</string>
|
||||
<key>devname</key>
|
||||
<string>a2ceyes</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>picture</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>gizmo</string>
|
||||
<key>description</key>
|
||||
<string>HAL Labs Gizmo</string>
|
||||
<key>devname</key>
|
||||
<string>a2gizmo</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>modem</string>
|
||||
<key>description</key>
|
||||
<string>Modem</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>devname</key>
|
||||
<string>ie15_terminal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>devname</key>
|
||||
<string>pseudo_terminal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_loopback</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>devname</key>
|
||||
<string>dec_rs232_loopback</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>devname</key>
|
||||
<string>serial_keyboard</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>devname</key>
|
||||
<string>serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>devname</key>
|
||||
<string>serial_terminal</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>devname</key>
|
||||
<string>swtpc8212_terminal</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>devices</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>smartport</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sl6:0</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>525</string>
|
||||
<key>description</key>
|
||||
<string>5.25"</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>floppy_5_25</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sl6:1</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>525</string>
|
||||
<key>description</key>
|
||||
<string>5.25"</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>floppy_5_25</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>rs232_patch_box</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:dce</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:keyboard</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>type3hle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 3 Keyboard (HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>type4hle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 4 Keyboard (HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>type5gbhle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 5 Keyboard (Great Britain - HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>type5jphle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 5 Keyboard (Japan - HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>type5sehle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 5 Keyboard (Sweden - HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>type5hle</string>
|
||||
<key>description</key>
|
||||
<string>Sun Type 5 Keyboard (U.S.A. - HLE)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<key>filter</key>
|
||||
<string>A2C</string>
|
||||
</dict>
|
||||
<string>apple2_flop_misc.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -476,7 +476,7 @@
|
||||
<key>value</key>
|
||||
<string>lx810l</string>
|
||||
<key>description</key>
|
||||
<string>Espon LX-810L</string>
|
||||
<string>Epson LX-810L</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -500,7 +500,15 @@
|
||||
<key>value</key>
|
||||
<string>chessmec</string>
|
||||
<key>description</key>
|
||||
<string>The ChessMachine EC</string>
|
||||
<string>Tasc ChessMachine EC Interface</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>smartboard</string>
|
||||
<key>description</key>
|
||||
<string>Tasc SmartBoard SB30 Interface</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
|
||||
@@ -572,7 +572,7 @@
|
||||
<key>value</key>
|
||||
<string>lx810l</string>
|
||||
<key>description</key>
|
||||
<string>Espon LX-810L</string>
|
||||
<string>Epson LX-810L</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
@@ -596,7 +596,15 @@
|
||||
<key>value</key>
|
||||
<string>chessmec</string>
|
||||
<key>description</key>
|
||||
<string>The ChessMachine EC</string>
|
||||
<string>Tasc ChessMachine EC Interface</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>smartboard</string>
|
||||
<key>description</key>
|
||||
<string>Tasc SmartBoard SB30 Interface</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
|
||||
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
@@ -92,6 +92,11 @@
|
||||
<string>Digital Vision ComputerEyes</string>
|
||||
<key>devname</key>
|
||||
<string>a2ceyes</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>picture</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -142,6 +147,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -165,6 +178,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 +191,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>
|
||||
@@ -206,6 +229,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -255,6 +286,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -278,6 +317,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>
|
||||
@@ -286,6 +330,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>
|
||||
@@ -319,6 +368,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -395,6 +452,150 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>rs232_patch_box</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:dce</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
@@ -469,7 +670,12 @@
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<key>filter</key>
|
||||
<string>A2C</string>
|
||||
</dict>
|
||||
<string>apple2_flop_misc.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
|
||||
@@ -117,6 +117,11 @@
|
||||
<string>Digital Vision ComputerEyes</string>
|
||||
<key>devname</key>
|
||||
<string>a2ceyes</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>picture</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -167,6 +172,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -190,6 +203,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 +216,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>
|
||||
@@ -231,6 +254,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -280,6 +311,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -303,6 +342,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>
|
||||
@@ -311,6 +355,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>
|
||||
@@ -344,6 +393,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -357,6 +414,150 @@
|
||||
</array>
|
||||
<key>devices</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>rs232_patch_box</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:dce</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
@@ -431,7 +632,12 @@
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<key>filter</key>
|
||||
<string>A2C</string>
|
||||
</dict>
|
||||
<string>apple2_flop_misc.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
|
||||
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1756
-17
File diff suppressed because it is too large
Load Diff
+1685
-18
File diff suppressed because it is too large
Load Diff
+1685
-18
File diff suppressed because it is too large
Load Diff
+1685
-18
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
@@ -113,6 +113,22 @@
|
||||
<key>disabled</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>grafex</string>
|
||||
<key>description</key>
|
||||
<string>Grafex-32</string>
|
||||
<key>devname</key>
|
||||
<string>a2grafex</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>softcard3</string>
|
||||
<key>description</key>
|
||||
<string>Microsoft SoftCard ///</string>
|
||||
<key>devname</key>
|
||||
<string>softcard3</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>focusdrive</string>
|
||||
@@ -129,6 +145,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 +161,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>
|
||||
@@ -178,6 +210,22 @@
|
||||
<key>disabled</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>grafex</string>
|
||||
<key>description</key>
|
||||
<string>Grafex-32</string>
|
||||
<key>devname</key>
|
||||
<string>a2grafex</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>softcard3</string>
|
||||
<key>description</key>
|
||||
<string>Microsoft SoftCard ///</string>
|
||||
<key>devname</key>
|
||||
<string>softcard3</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>focusdrive</string>
|
||||
@@ -194,6 +242,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 +258,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>
|
||||
@@ -243,6 +307,22 @@
|
||||
<key>disabled</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>grafex</string>
|
||||
<key>description</key>
|
||||
<string>Grafex-32</string>
|
||||
<key>devname</key>
|
||||
<string>a2grafex</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>softcard3</string>
|
||||
<key>description</key>
|
||||
<string>Microsoft SoftCard ///</string>
|
||||
<key>devname</key>
|
||||
<string>softcard3</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>focusdrive</string>
|
||||
@@ -259,6 +339,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 +355,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>
|
||||
@@ -308,6 +404,22 @@
|
||||
<key>disabled</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>grafex</string>
|
||||
<key>description</key>
|
||||
<string>Grafex-32</string>
|
||||
<key>devname</key>
|
||||
<string>a2grafex</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>softcard3</string>
|
||||
<key>description</key>
|
||||
<string>Microsoft SoftCard ///</string>
|
||||
<key>devname</key>
|
||||
<string>softcard3</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>focusdrive</string>
|
||||
@@ -324,6 +436,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 +452,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>
|
||||
@@ -373,6 +501,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -396,6 +532,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 +545,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>
|
||||
@@ -437,6 +583,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -765,6 +919,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -806,6 +973,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -847,6 +1027,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -888,6 +1081,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -929,6 +1135,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -970,6 +1189,19 @@
|
||||
<key>default</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -1011,6 +1243,19 @@
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
@@ -1041,6 +1286,150 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>rs232_patch_box</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:dce</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
@@ -1111,6 +1500,65 @@
|
||||
</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/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>picture</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</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>
|
||||
|
||||
+1189
-17
File diff suppressed because it is too large
Load Diff
+1574
-15
File diff suppressed because it is too large
Load Diff
+1574
-15
File diff suppressed because it is too large
Load Diff
+1574
-15
File diff suppressed because it is too large
Load Diff
+1574
-15
File diff suppressed because it is too large
Load Diff
+1574
-15
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
@@ -115,6 +115,11 @@
|
||||
<string>Digital Vision ComputerEyes</string>
|
||||
<key>devname</key>
|
||||
<string>a2ceyes</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>picture</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
@@ -165,6 +170,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -188,6 +201,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 +214,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>
|
||||
@@ -229,6 +252,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -278,6 +309,14 @@
|
||||
<key>devname</key>
|
||||
<string>rs_serial_printer</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>devname</key>
|
||||
<string>rs232_patch_box</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
@@ -301,6 +340,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>
|
||||
@@ -309,6 +353,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>
|
||||
@@ -342,6 +391,14 @@
|
||||
<key>devname</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>devname</key>
|
||||
<string>mockingboardd</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
@@ -355,6 +412,150 @@
|
||||
</array>
|
||||
<key>devices</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>rs232_patch_box</string>
|
||||
<key>slots</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>:dce</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>ie15</string>
|
||||
<key>description</key>
|
||||
<string>IE15 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>pty</string>
|
||||
<key>description</key>
|
||||
<string>Pseudo terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>rs_printer</string>
|
||||
<key>description</key>
|
||||
<string>Radio Shack Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>patch</string>
|
||||
<key>description</key>
|
||||
<string>RS-232 Patch Box</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>dec_loopback</string>
|
||||
<key>description</key>
|
||||
<string>RS232 Loopback (DEC 12-15336-00)</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>null_modem</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>rs232_sync_io</string>
|
||||
<key>description</key>
|
||||
<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>
|
||||
<string>keyboard</string>
|
||||
<key>description</key>
|
||||
<string>Serial Keyboard</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>printer</string>
|
||||
<key>description</key>
|
||||
<string>Serial Printer</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>terminal</string>
|
||||
<key>description</key>
|
||||
<string>Serial Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>sunkbd</string>
|
||||
<key>description</key>
|
||||
<string>Sun Keyboard Adaptor</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>mockingboard</string>
|
||||
<key>description</key>
|
||||
<string>Sweet Micro Systems Mockingboard D</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>swtpc8212</string>
|
||||
<key>description</key>
|
||||
<string>SWTPC8212 Terminal</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>sunkbd_adaptor</string>
|
||||
@@ -429,7 +630,12 @@
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>apple2_flop_clcracked.xml</string>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>apple2_flop_orig.xml</string>
|
||||
<key>filter</key>
|
||||
<string>A2C</string>
|
||||
</dict>
|
||||
<string>apple2_flop_misc.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
|
||||
+1353
-12
File diff suppressed because it is too large
Load Diff
+1354
-13
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1189
-17
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh II (FDHD)</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -1124,6 +1122,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -1151,6 +1527,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>
|
||||
@@ -1189,6 +1570,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>
|
||||
@@ -1220,6 +1606,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>
|
||||
@@ -1251,6 +1642,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>
|
||||
@@ -1282,6 +1678,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>
|
||||
@@ -1300,6 +1701,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh Classic II</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -212,11 +210,390 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh Classic</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -192,6 +190,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:4</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsibus:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
@@ -199,6 +575,7 @@
|
||||
<array>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
+403
-2
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh II</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -1124,6 +1122,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -1151,6 +1527,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>
|
||||
@@ -1189,6 +1570,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>
|
||||
@@ -1220,6 +1606,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>
|
||||
@@ -1251,6 +1642,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>
|
||||
@@ -1282,6 +1678,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>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIci</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -692,6 +690,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -719,6 +1095,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>
|
||||
@@ -757,6 +1138,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>
|
||||
@@ -788,6 +1174,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>
|
||||
@@ -819,6 +1210,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>
|
||||
@@ -850,6 +1246,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>
|
||||
@@ -866,6 +1267,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIcx</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -674,6 +672,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -701,6 +1077,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>
|
||||
@@ -739,6 +1120,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>
|
||||
@@ -770,6 +1156,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>
|
||||
@@ -801,6 +1192,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>
|
||||
@@ -832,6 +1228,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>
|
||||
@@ -850,6 +1251,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh II (w/o 68851 MMU)</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -1124,6 +1122,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -1151,6 +1527,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>
|
||||
@@ -1189,6 +1570,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>
|
||||
@@ -1220,6 +1606,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>
|
||||
@@ -1251,6 +1642,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>
|
||||
@@ -1282,6 +1678,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>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIsi</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -242,11 +240,390 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIvi</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -772,6 +770,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -799,6 +1175,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>
|
||||
@@ -837,6 +1218,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>
|
||||
@@ -868,6 +1254,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>
|
||||
@@ -899,6 +1290,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>
|
||||
@@ -930,6 +1326,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>
|
||||
@@ -946,6 +1347,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIvx</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -772,6 +770,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -799,6 +1175,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>
|
||||
@@ -837,6 +1218,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>
|
||||
@@ -868,6 +1254,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>
|
||||
@@ -899,6 +1290,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>
|
||||
@@ -930,6 +1326,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>
|
||||
@@ -946,6 +1347,7 @@
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh IIx</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -1124,6 +1122,384 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
@@ -1151,6 +1527,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>
|
||||
@@ -1189,6 +1570,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>
|
||||
@@ -1220,6 +1606,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>
|
||||
@@ -1251,6 +1642,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>
|
||||
@@ -1282,6 +1678,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>
|
||||
@@ -1300,6 +1701,7 @@
|
||||
<array>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
<string>mac_hdflop.xml</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
+379
-2
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh LC</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -212,11 +210,390 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
<string>Macintosh LC II</string>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>resolution</key>
|
||||
<array>
|
||||
@@ -202,11 +200,390 @@
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:0</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:1</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:2</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:3</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:4</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:5</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>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>name</key>
|
||||
<string>scsi:6</string>
|
||||
<key>options</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string></string>
|
||||
<key>description</key>
|
||||
<string>—None—</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>aplcdsc</string>
|
||||
<key>description</key>
|
||||
<string>Apple SCSI CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>cdrom</string>
|
||||
<key>description</key>
|
||||
<string>CD-ROM</string>
|
||||
<key>default</key>
|
||||
<false/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>cdrom</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>value</key>
|
||||
<string>harddisk</string>
|
||||
<key>description</key>
|
||||
<string>Hard Disk</string>
|
||||
<key>default</key>
|
||||
<true/>
|
||||
<key>media</key>
|
||||
<dict>
|
||||
<key>hard</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</array>
|
||||
<key>software</key>
|
||||
<array>
|
||||
<string>mac_hdflop.xml</string>
|
||||
<string>mac_hdd.xml</string>
|
||||
<string>mac_flop.xml</string>
|
||||
</array>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user