From e8e5440b312508995d9efcd2e93b6fc5ab770341 Mon Sep 17 00:00:00 2001 From: asvitkine <> Date: Sun, 2 Aug 2009 18:34:57 +0000 Subject: [PATCH] initial import of SheepShaver Launcher project for Mac OS X (WIP) --- .../src/MacOSX/Launcher/AppController.h | 30 + .../src/MacOSX/Launcher/AppController.mm | 36 + .../Launcher/English.lproj/InfoPlist.strings | Bin 0 -> 226 bytes .../English.lproj/MainMenu.nib/classes.nib | 32 + .../English.lproj/MainMenu.nib/info.nib | 20 + .../MainMenu.nib/keyedobjects.nib | Bin 0 -> 12495 bytes .../VMListWindow.nib/designable.nib | 661 +++ .../VMListWindow.nib/keyedobjects.nib | Bin 0 -> 8059 bytes .../VMSettingsWindow.nib/designable.nib | 3920 +++++++++++++++++ .../VMSettingsWindow.nib/keyedobjects.nib | Bin 0 -> 37316 bytes SheepShaver/src/MacOSX/Launcher/Info.plist | 28 + .../project.pbxproj | 345 ++ .../src/MacOSX/Launcher/VMListController.h | 38 + .../src/MacOSX/Launcher/VMListController.mm | 133 + .../MacOSX/Launcher/VMSettingsController.h | 76 + .../MacOSX/Launcher/VMSettingsController.mm | 357 ++ SheepShaver/src/MacOSX/Launcher/main.m | 26 + 17 files changed, 5702 insertions(+) create mode 100644 SheepShaver/src/MacOSX/Launcher/AppController.h create mode 100644 SheepShaver/src/MacOSX/Launcher/AppController.mm create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib create mode 100644 SheepShaver/src/MacOSX/Launcher/Info.plist create mode 100644 SheepShaver/src/MacOSX/Launcher/SheepShaverLauncher.xcodeproj/project.pbxproj create mode 100644 SheepShaver/src/MacOSX/Launcher/VMListController.h create mode 100644 SheepShaver/src/MacOSX/Launcher/VMListController.mm create mode 100644 SheepShaver/src/MacOSX/Launcher/VMSettingsController.h create mode 100644 SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm create mode 100644 SheepShaver/src/MacOSX/Launcher/main.m diff --git a/SheepShaver/src/MacOSX/Launcher/AppController.h b/SheepShaver/src/MacOSX/Launcher/AppController.h new file mode 100644 index 00000000..bbe989fb --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/AppController.h @@ -0,0 +1,30 @@ +/* + * AppController.h - Cocoa SheepShaver launcher for Mac OS X + * + * Copyright (C) 2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import + +@interface AppController : NSObject { +} + +- (void) awakeFromNib; + +- (IBAction) openVirtualMachinesList: (id) sender; + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/AppController.mm b/SheepShaver/src/MacOSX/Launcher/AppController.mm new file mode 100644 index 00000000..d483ac2e --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/AppController.mm @@ -0,0 +1,36 @@ +/* + * AppController.mm - Cocoa SheepShaver launcher for Mac OS X + * + * Copyright (C) 2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import "AppController.h" +#import "VMListController.h" + +@implementation AppController + +- (void) awakeFromNib +{ + [self openVirtualMachinesList:self]; +} + +- (IBAction) openVirtualMachinesList: (id) sender +{ + [[VMListController sharedInstance] showWindow:sender]; +} + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings b/SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..f3ecb88370444302916c2d14868308a30fa9d44a GIT binary patch literal 226 zcmZvW%?bfw6o#L*tC%dO7+EOELN=5vxPrk9(=arC!X3FuJbhW})cJYOd!Ekcoe&c- zbs>nTu+v`w?6*2@PY;k_lH1aw`_@Q@JTC vuQJ9GPF~dVx9kFAD5v>%^K#RrWAteKy1v>dup^l1g)>)?~mJu68G} literal 0 HcmV?d00001 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib new file mode 100644 index 00000000..25406602 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib @@ -0,0 +1,32 @@ + + + + + IBClasses + + + CLASS + FirstResponder + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + ACTIONS + + openVirtualMachinesList + id + + CLASS + AppController + LANGUAGE + ObjC + SUPERCLASS + NSObject + + + IBVersion + 1 + + diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib new file mode 100644 index 00000000..af823de0 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 677 + IBLastKnownRelativeProjectPath + ../SheepShaverPrefs.xcodeproj + IBOldestOS + 4 + IBOpenObjects + + 24 + + IBSystem Version + 9J61 + targetFramework + IBCocoaFramework + + diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..71be2236ccbbbb5ea57386e157ff4df328311664 GIT binary patch literal 12495 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 By08EM literal 0 HcmV?d00001 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib new file mode 100644 index 00000000..539d4e7d --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib @@ -0,0 +1,661 @@ + + + + 1050 + 9J61 + 677 + 949.46 + 353.00 + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + VMListController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{196, 309}, {412, 201}} + 536870912 + SheepShaver Virtual Machines + NSWindow + + {3.40282e+38, 3.40282e+38} + {412, 201} + + + 256 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 256 + {374, 94} + + YES + + + 256 + {{375, 0}, {16, 17}} + + + YES + + 3.710000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + LucidaGrande + 1.100000e+01 + 3100 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2048 + + LucidaGrande + 1.300000e+01 + 1044 + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + + + + + + 3.000000e+00 + 2.000000e+00 + + 3 + MQA + + + 6 + System + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 316669952 + 2 + 4 + 15 + 0 + YES + + + {{1, 1}, {355, 94}} + {{19, 0}, {355, 94}} + + + + 4 + + + + 256 + {{356, 1}, {15, 94}} + + + _doScroller: + 3.947369e-01 + + + + 256 + {{-100, -100}, {374, 15}} + + YES + 1 + + _doScroller: + 9.904762e-01 + + + {{20, 60}, {372, 96}} + + 146 + + + + QSAAAEEgAABBmAAAQZgAAA + + + + 293 + {{302, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Run + + + -2038284033 + 129 + + + 200 + 25 + + + + + 293 + {{206, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Settings... + + + -2038284033 + 129 + + + 200 + 25 + + + + + 293 + {{14, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + New... + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{17, 164}, {147, 17}} + + YES + + 68288064 + 272630784 + Virtual Machine List: + + + + 6 + System + controlColor + + + + + + + + 293 + {{110, 11}, {96, 32}} + + YES + + 67239424 + 134217728 + Import... + + + -2038284033 + 129 + + + 200 + 25 + + + + {412, 201} + + {{0, 0}, {1680, 1028}} + {412, 223} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + delegate + + + + 46 + + + + runVirtualMachine: + + + + 47 + + + + newVirtualMachine: + + + + 48 + + + + importVirtualMachine: + + + + 49 + + + + editVirtualMachineSettings: + + + + 50 + + + + vmList + + + + 51 + + + + window + + + + 52 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + + + 2 + + + YES + + + + + + + + + + + 13 + + + YES + + + + + + + + 14 + + + YES + + + + + + 15 + + + + + 16 + + + + + 17 + + + YES + + + + + + 21 + + + YES + + + + + + 22 + + + + + 23 + + + YES + + + + + + 24 + + + + + 25 + + + YES + + + + + + 26 + + + + + 18 + + + + + 31 + + + YES + + + + + + 32 + + + + + 43 + + + YES + + + + + + 44 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 1.IBEditorWindowLastContentRect + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 1.WindowOrigin + 1.editorWindowContentRectSynchronizationRect + 1.windowTemplate.hasMinSize + 1.windowTemplate.minSize + 13.IBPluginDependency + 13.ImportedFromIB2 + 14.IBPluginDependency + 14.ImportedFromIB2 + 15.IBPluginDependency + 15.IBShouldRemoveOnLegacySave + 16.IBPluginDependency + 16.IBShouldRemoveOnLegacySave + 17.IBPluginDependency + 17.ImportedFromIB2 + 18.IBPluginDependency + 18.IBShouldRemoveOnLegacySave + 2.IBPluginDependency + 21.IBPluginDependency + 22.IBPluginDependency + 23.IBPluginDependency + 24.IBPluginDependency + 25.IBPluginDependency + 26.IBPluginDependency + 31.IBPluginDependency + 32.IBPluginDependency + 43.IBPluginDependency + 44.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{151, 461}, {412, 201}} + {{151, 461}, {412, 201}} + + {196, 240} + {{357, 418}, {480, 270}} + + {412, 201} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 52 + + + + YES + + VMListController + NSWindowController + + YES + + YES + editVirtualMachineSettings: + importVirtualMachine: + newVirtualMachine: + runVirtualMachine: + + + YES + id + id + id + id + + + + vmList + NSTableView + + + IBProjectSource + VMListController.h + + + + + 0 + ../SheepShaverLauncher.xcodeproj + 3 + + diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..f6a05e1bb3d7c85eccd822b3ac1b3c416f4d4b9a GIT binary patch literal 8059 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 + + + 1050 + 9J61 + 677 + 949.46 + 353.00 + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + VMSettingsController + + + FirstResponder + + + NSApplication + + + + 256 + + YES + + + 256 + {{145, 20}, {43, 22}} + + YES + + -1804468671 + 71304192 + 40 + + LucidaGrande + 1.300000e+01 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 256 + {{193, 17}, {19, 27}} + + 1 + YES + + 917024 + 0 + 1 + + 4.000000e+01 + 1.000000e+00 + 1.000000e+04 + 1.000000e+00 + YES + YES + + + + + 256 + {{17, 22}, {114, 17}} + + YES + + 67239424 + 272629760 + Volume Size (MB) + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2OQA + + + + 6 + System + controlTextColor + + + + + + {229, 62} + NSView + NSResponder + + + 13 + 2 + {{217, 242}, {580, 460}} + 1886912512 + Virtual Machine Settings + + NSWindow + + + View + + {3.40282e+38, 3.40282e+38} + {580, 460} + + + 256 + + YES + + + 274 + {{13, 59}, {554, 395}} + + + YES + + 1 + + + 256 + + YES + + + 258 + {{95, 50}, {327, 22}} + + YES + + -1804468671 + 272630784 + / + + + YES + + + + + + + 258 + {{95, 78}, {327, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 256 + {{14, 52}, {77, 17}} + + YES + + 67239424 + 71303168 + Unix Root: + + + + + + + + + 256 + {{20, 80}, {71, 17}} + + YES + + 67239424 + 71303168 + ROM File: + + + + + + + + + 274 + + YES + + + 256 + + YES + + + 292 + {{10, 5}, {82, 32}} + + YES + + 67239424 + 134217728 + Add... + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 293 + {{211, 5}, {94, 32}} + + YES + + 67239424 + 134217728 + Create... + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 289 + {{417, 5}, {90, 32}} + + YES + + 67239424 + 134217728 + Remove + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 274 + + YES + + + 2304 + + YES + + + 256 + {468, 152} + + YES + + + 256 + {{375, 0}, {16, 17}} + + + YES + + 3.710000e+02 + 4.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + LucidaGrande + 1.100000e+01 + 3100 + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 337772096 + 2048 + + + + 6 + System + controlBackgroundColor + + + + + + + + 3.000000e+00 + 2.000000e+00 + + + 6 + System + gridColor + + 3 + MC41AA + + + 1.700000e+01 + 312475648 + 2 + 4 + 15 + 0 + YES + + + {{1, 1}, {468, 152}} + + + + + 4 + + + + 256 + {{469, 1}, {15, 152}} + + + _doScroller: + 3.947369e-01 + + + + 256 + {{-100, -100}, {374, 15}} + + 1 + + _doScroller: + 9.904762e-01 + + + {{16, 42}, {485, 154}} + + + 18 + + + + QSAAAEEgAABBmAAAQZgAAA + + + {{2, 2}, {518, 209}} + + + + {{6, 123}, {522, 226}} + + {0, 0} + + 67239424 + 0 + Volumes + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + + 256 + {{14, 22}, {77, 17}} + + YES + + 67239424 + 71303168 + Boot From: + + + + + + + + + 256 + {{95, 18}, {94, 26}} + + YES + + 343014976 + 272630784 + Any + + + YES + + + 5 + YES + + YES + Any + CD-ROM + + + + + 274 + {13, 42} + + + YES + + YES + + + 1.000000e+01 + 1.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + + + LucidaGrande + 1.200000e+01 + 16 + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + CD-ROM + + + YES + + + + 3 + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 1.900000e+01 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + + + + + + 256 + {{390, 22}, {129, 18}} + + YES + + 67239424 + 0 + Disable CD-ROM + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 256 + {{355, 17}, {22, 28}} + + YES + + 917024 + 0 + + 1.600000e+01 + 4.000000e+00 + 1.024000e+03 + 1.000000e+00 + YES + + + + + 256 + {{309, 20}, {41, 22}} + + YES + + -1804468671 + 71304192 + 16 + + + YES + + + + + + + 256 + {{200, 20}, {104, 19}} + + YES + + 67239424 + 71303168 + RAM Size (MB): + + + + + + + + + 289 + {{425, 72}, {98, 32}} + + YES + + 67239424 + 134217728 + Browse... + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 289 + {{425, 44}, {98, 32}} + + YES + + 67239424 + 134217728 + Browse... + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + {{10, 33}, {534, 349}} + + + Setup + + + + + 2 + + + 256 + + YES + + + 266 + + YES + + + 256 + + YES + + + 270 + {{125, 20}, {218, 18}} + + YES + + -2080244224 + 0 + Enable QuickDraw Acceleration + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 266 + {{206, 132}, {143, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + LucidaGrande + 1.300000e+01 + 16 + + + + + + 400 + 75 + + + Window + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + 1 + + + YES + + + OtherViews + + + YES + + + + Fullscreen + + 1048576 + 2147483647 + + + _popUpItemAction: + 2 + + + + + 3 + YES + YES + 1 + + + + + 266 + {{206, 104}, {143, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + 7.5 Hz + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + 5 Hz + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 10 Hz + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 15 Hz + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 30 Hz + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 60 Hz + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + 3 + YES + YES + 1 + + + + + 268 + {{118, 80}, {86, 17}} + + YES + + 67239424 + 71303168 + Width: + + + + + + + + + 268 + {{118, 52}, {86, 17}} + + YES + + 67239424 + 71303168 + Height: + + + + + + + + + 266 + {{209, 76}, {140, 26}} + + YES + + 343014976 + 272630784 + 640 + + + YES + + + 5 + YES + + YES + 512 + 640 + 800 + 1024 + Maximum + + + + + 274 + {13, 105} + + + YES + + YES + + + 1.000000e+01 + 1.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + + + YES + + + + 3 + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 1.900000e+01 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + + + + + + 266 + {{209, 48}, {140, 26}} + + YES + + 343014976 + 272630784 + 480 + + + YES + + + 5 + YES + + YES + 384 + 480 + 600 + 768 + Maximum + + + + + 274 + {13, 105} + + + YES + + YES + + + 1.000000e+01 + 1.000000e+01 + 1.000000e+03 + + 75628032 + 0 + + + + + + 3 + MC4zMzMzMzI5OQA + + + + + 338820672 + 1024 + + + YES + + + + 3 + YES + + + + 3.000000e+00 + 2.000000e+00 + + + 1.900000e+01 + tableViewAction: + -765427712 + + + + 1 + 15 + 0 + YES + + + + + + 268 + {{118, 136}, {86, 19}} + + YES + + 67239424 + 71303168 + Video Type: + + + + + + + + + 268 + {{112, 108}, {92, 19}} + + YES + + 67239424 + 71303168 + Refresh Rate: + + + + + + + + {{2, 2}, {518, 177}} + + + + {{6, 155}, {522, 194}} + + {0, 0} + + 67239424 + 0 + Video Settings + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + + 266 + + YES + + + 256 + + YES + + + 264 + {{15, 96}, {172, 18}} + + YES + + 67239424 + 0 + Disable Audio Output + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 266 + {{118, 59}, {379, 22}} + + YES + + -1804468671 + 272630784 + /dev/dsp + + + YES + + + + + + + 266 + {{118, 29}, {379, 22}} + + YES + + -1804468671 + 272630784 + /dev/mixer + + + YES + + + + + + + 264 + {{14, 61}, {99, 17}} + + YES + + 67239424 + 71303168 + Output Device: + + + + + + + + + 264 + {{14, 31}, {99, 17}} + + YES + + 67239424 + 71303168 + Mixer Device: + + + + + + + + {{2, 2}, {518, 134}} + + + + {{6, 0}, {522, 151}} + + {0, 0} + + 67239424 + 0 + Audio Settings + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + {{10, 33}, {534, 349}} + + Audio / Video + + + + + Item 4 + + + 256 + + YES + + + 266 + + YES + + + 256 + + YES + + + 256 + {{13, 75}, {130, 17}} + + YES + + 70385217 + 71304192 + Modem Port Device: + + + + + + + + + 256 + {{18, 43}, {125, 17}} + + YES + + 70385217 + 71304192 + Printer Port Device: + + + + + + + + + 256 + {{18, 13}, {126, 17}} + + YES + + 70385217 + 71304192 + Ethernet Interface: + + + + + + + + + 266 + {{146, 73}, {351, 22}} + + YES + + -1804468671 + 4195328 + + + + YES + + + + + + + 266 + {{146, 41}, {351, 22}} + + YES + + -1804468671 + 4195328 + + + + YES + + + + + + + 266 + {{146, 10}, {351, 22}} + + YES + + -1804468671 + 4195328 + + + + YES + + + + + + {{2, 2}, {518, 106}} + + + + {{6, 4}, {522, 123}} + + {0, 0} + + 67239424 + 0 + Serial/Network + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + + 266 + + YES + + + 256 + + YES + + + 256 + {{15, 51}, {150, 18}} + + YES + + 67239424 + 0 + Enable JIT Compiler + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 11}, {333, 18}} + + YES + + 67239424 + 0 + Enable built-in 68k DR Emulator (EXPERIMENTAL) + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 256 + {{15, 31}, {236, 18}} + + YES + + 67239424 + 0 + Allow Emulated CPU to Idle + + + 1211912703 + 2 + + + + 200 + 25 + + + + + 265 + {{269, 51}, {220, 18}} + + YES + + 67239424 + 0 + Ignore Illegal Instructions + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 265 + {{269, 31}, {220, 18}} + + YES + + 67239424 + 0 + Ignore Illegal Memory Accesses + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{2, 2}, {518, 77}} + + + + {{6, 255}, {522, 94}} + + {0, 0} + + 67239424 + 0 + CPU Options + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + + 266 + + YES + + + 256 + + YES + + + 256 + {{22, 70}, {142, 18}} + + YES + + 67239424 + 0 + Use Raw Keycodes: + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 266 + {{170, 69}, {327, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 256 + {{14, 43}, {151, 17}} + + YES + + 67239424 + 71303168 + Mouse Wheel Function: + + + + + + + + + 256 + {{66, 15}, {99, 17}} + + YES + + 67239424 + 71303168 + Lines to Scroll: + + + + + + + + + 256 + {{170, 13}, {29, 22}} + + YES + + -1804468671 + 272630784 + 3 + + + YES + + + + + + + 256 + {{167, 37}, {163, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + + + + 400 + 75 + + + Page Up/Down + + 1048576 + 2147483647 + 1 + + + _popUpItemAction: + + + YES + + + OtherViews + + + YES + + + + Cursor Up/Down + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 3 + YES + YES + 1 + + + + + 256 + {{204, 10}, {19, 27}} + + YES + + 917024 + 0 + + 5.900000e+01 + 1.000000e+00 + YES + YES + + + + {{2, 2}, {518, 103}} + + + + {{6, 131}, {522, 120}} + + {0, 0} + + 67239424 + 0 + Mouse/Keyboard + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 3 + 0 + 2 + NO + + + {{10, 33}, {534, 349}} + + Miscellaneous + + + + + + + 0 + YES + YES + + YES + + + + + + 289 + {{374, 20}, {96, 32}} + + YES + + 67239424 + 134217728 + Cancel + + + -2038284033 + 129 + + + 200 + 25 + + + + + 289 + {{470, 20}, {96, 32}} + + YES + + 67239424 + 134217728 + Save + + + -2038284033 + 129 + + + 200 + 25 + + + + {580, 460} + + {{0, 0}, {1440, 878}} + {580, 482} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + takeIntValueFrom: + + + + 282 + + + + initialFirstResponder + + + + 283 + + + + takeIntValueFrom: + + + + 291 + + + + takeIntValueFrom: + + + + 310 + + + + takeIntValueFrom: + + + + 311 + + + + takeIntValueFrom: + + + + 313 + + + + takeIntValueFrom: + + + + 314 + + + + window + + + + 318 + + + + bootFrom + + + + 319 + + + + disableCdrom + + + + 320 + + + + disableSound + + + + 321 + + + + dontUseCPUWhenIdle + + + + 322 + + + + enable68kDREmulator + + + + 323 + + + + enableJIT + + + + 324 + + + + unixRoot + + + + 325 + + + + romFile + + + + 326 + + + + browseForROMFileClicked: + + + + 327 + + + + addDisk: + + + + 328 + + + + createDisk: + + + + 329 + + + + removeDisk: + + + + 330 + + + + useRawKeyCodesClicked: + + + + 331 + + + + rawKeyCodes + + + + 332 + + + + useRawKeyCodes + + + + 333 + + + + modemPort + + + + 334 + + + + mouseWheel + + + + 335 + + + + printerPort + + + + 336 + + + + ramSize + + + + 337 + + + + ramSizeStepper + + + + 338 + + + + mixDevice + + + + 339 + + + + outDevice + + + + 340 + + + + qdAccel + + + + 341 + + + + height + + + + 342 + + + + width + + + + 343 + + + + videoType + + + + 344 + + + + refreshRate + + + + 345 + + + + scrollLines + + + + 346 + + + + scrollLinesStepper + + + + 347 + + + + ignoreIllegalMemoryAccesses + + + + 348 + + + + ethernetInterface + + + + 349 + + + + diskSaveSizeField + + + + 351 + + + + diskSaveSize + + + + 353 + + + + delegate + + + + 355 + + + + disks + + + + 368 + + + + browseForUnixRootClicked: + + + + 369 + + + + ignoreIllegalInstructions + + + + 372 + + + + saveChanges: + + + + 373 + + + + cancelEdit: + + + + 374 + + + + + YES + + 0 + + YES + + + + + + -2 + + + RmlsZSdzIE93bmVyA + + + -1 + + + First Responder + + + -3 + + + Application + + + 141 + + + YES + + + + + + DiskSize + + + 142 + + + YES + + + + PrefsWindow + + + 143 + + + YES + + + + + + + + 144 + + + YES + + + + + + + + 145 + + + YES + + + + + + 147 + + + YES + + + + + + 148 + + + YES + + + + + + + 157 + + + YES + + + + + + + + + + + + + + 230 + + + YES + + + + + + + + + + + + + + + + + + 231 + + + YES + + + + + + 232 + + + YES + + + + + + 233 + + + YES + + + + + + 234 + + + YES + + + + + + 235 + + + YES + + + + + + 236 + + + YES + + + + + + 237 + + + YES + + + + + + 238 + + + YES + + + + + + 239 + + + YES + + + + + + 240 + + + YES + + + + + + + + + 241 + + + YES + + + + + + 242 + + + YES + + + + + + 243 + + + + + 244 + + + + + 245 + + + YES + + + + + + 246 + + + YES + + + + + + 247 + + + YES + + + + + + 248 + + + YES + + + + + + + + 249 + + + + + 250 + + + + + 251 + + + YES + + + + + + 252 + + + YES + + + + + + 253 + + + + + 254 + + + + + 255 + + + + + 256 + + + + + 257 + + + + + 258 + + + + + 259 + + + + + 260 + + + + + 261 + + + + + 262 + + + + + 263 + + + + + 264 + + + + + 265 + + + + + 266 + + + YES + + + + + + 267 + + + YES + + + + + + 268 + + + YES + + + + + + 269 + + + + + 270 + + + + + 271 + + + + + 358 + + + YES + + + + + + 359 + + + YES + + + + + + + + 360 + + + YES + + + + + + 361 + + + + + 362 + + + YES + + + + + + 363 + + + + + 364 + + + YES + + + + + + 365 + + + + + 195 + + + YES + + + + + + + + + + 192 + + + YES + + + + + + 370 + + + YES + + + + + + 190 + + + YES + + + + + + 193 + + + YES + + + + + + 191 + + + YES + + + + + + 228 + + + + + 226 + + + + + 229 + + + + + 371 + + + + + 227 + + + + + 194 + + + YES + + + + + + + + + + + 214 + + + YES + + + + + + 225 + + + + + 215 + + + YES + + + + + + 224 + + + + + 216 + + + YES + + + + + + 223 + + + + + 217 + + + YES + + + + + + 222 + + + + + 218 + + + YES + + + + + + 221 + + + + + 219 + + + YES + + + + + + 220 + + + + + 203 + + + YES + + + + + + + + + + + + 196 + + + YES + + + + + + 197 + + + YES + + + + + + 198 + + + YES + + + + + + 199 + + + YES + + + + + + 200 + + + YES + + + + + + 201 + + + YES + + + + + + 202 + + + YES + + + + + + 204 + + + + + 205 + + + YES + + + + + + 206 + + + YES + + + + + + + 207 + + + + + 208 + + + + + 209 + + + + + 210 + + + + + 211 + + + + + 212 + + + + + 213 + + + + + 150 + + + YES + + + + + + + + + + 158 + + + YES + + + + + + 161 + + + YES + + + + + + 164 + + + YES + + + + + + 159 + + + YES + + + + + + 160 + + + YES + + + + + + 169 + + + + + 170 + + + + + 165 + + + + + 168 + + + + + 171 + + + + + 153 + + + YES + + + + + + 182 + + + + + 151 + + + YES + + + + + + 184 + + + YES + + + + + + 185 + + + YES + + + + + + + 187 + + + + + 186 + + + + + 156 + + + YES + + + + + + 172 + + + YES + + + + + + 173 + + + YES + + + + + + + + + + + 179 + + + + + 178 + + + + + 177 + + + + + 176 + + + + + 175 + + + + + 174 + + + + + 152 + + + YES + + + + + + 183 + + + + + 162 + + + YES + + + + + + 167 + + + + + 154 + + + YES + + + + + + 181 + + + + + 149 + + + YES + + + + + + 188 + + + + + 155 + + + YES + + + + + + 180 + + + + + 163 + + + YES + + + + + + 166 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 141.IBEditorWindowLastContentRect + 141.IBPluginDependency + 141.ImportedFromIB2 + 142.IBEditorWindowLastContentRect + 142.IBWindowTemplateEditedContentRect + 142.ImportedFromIB2 + 142.NSWindowTemplate.visibleAtLaunch + 142.windowTemplate.hasMinSize + 142.windowTemplate.minSize + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 147.IBPluginDependency + 147.ImportedFromIB2 + 148.IBPluginDependency + 148.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 151.IBPluginDependency + 151.ImportedFromIB2 + 152.IBPluginDependency + 152.ImportedFromIB2 + 153.IBPluginDependency + 153.ImportedFromIB2 + 154.IBPluginDependency + 154.ImportedFromIB2 + 155.IBPluginDependency + 155.ImportedFromIB2 + 156.IBPluginDependency + 156.ImportedFromIB2 + 157.IBPluginDependency + 157.ImportedFromIB2 + 158.IBPluginDependency + 158.ImportedFromIB2 + 159.IBPluginDependency + 159.ImportedFromIB2 + 160.IBPluginDependency + 160.ImportedFromIB2 + 161.IBPluginDependency + 161.ImportedFromIB2 + 162.IBPluginDependency + 162.ImportedFromIB2 + 163.IBPluginDependency + 163.ImportedFromIB2 + 164.IBPluginDependency + 164.ImportedFromIB2 + 165.IBPluginDependency + 166.IBPluginDependency + 167.IBPluginDependency + 168.IBPluginDependency + 169.IBPluginDependency + 170.IBPluginDependency + 171.IBPluginDependency + 172.IBPluginDependency + 173.IBEditorWindowLastContentRect + 173.IBPluginDependency + 173.ImportedFromIB2 + 174.IBPluginDependency + 174.ImportedFromIB2 + 175.IBPluginDependency + 175.ImportedFromIB2 + 176.IBPluginDependency + 176.ImportedFromIB2 + 177.IBPluginDependency + 177.ImportedFromIB2 + 178.IBPluginDependency + 178.ImportedFromIB2 + 179.IBPluginDependency + 179.ImportedFromIB2 + 180.IBPluginDependency + 181.IBPluginDependency + 182.IBPluginDependency + 183.IBPluginDependency + 184.IBPluginDependency + 185.IBEditorWindowLastContentRect + 185.IBPluginDependency + 185.ImportedFromIB2 + 186.IBPluginDependency + 186.ImportedFromIB2 + 187.IBPluginDependency + 187.ImportedFromIB2 + 188.IBPluginDependency + 190.IBPluginDependency + 190.ImportedFromIB2 + 191.IBPluginDependency + 191.ImportedFromIB2 + 192.IBPluginDependency + 192.ImportedFromIB2 + 193.IBPluginDependency + 193.ImportedFromIB2 + 194.IBPluginDependency + 194.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 221.IBPluginDependency + 222.IBPluginDependency + 223.IBPluginDependency + 224.IBPluginDependency + 225.IBPluginDependency + 226.IBPluginDependency + 227.IBPluginDependency + 228.IBPluginDependency + 229.IBPluginDependency + 230.IBPluginDependency + 230.ImportedFromIB2 + 231.IBPluginDependency + 231.ImportedFromIB2 + 232.IBPluginDependency + 232.ImportedFromIB2 + 233.IBPluginDependency + 233.ImportedFromIB2 + 234.IBPluginDependency + 234.ImportedFromIB2 + 235.IBPluginDependency + 235.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 237.IBPluginDependency + 237.ImportedFromIB2 + 238.IBPluginDependency + 238.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 240.IBPluginDependency + 240.ImportedFromIB2 + 241.IBPluginDependency + 241.ImportedFromIB2 + 242.IBPluginDependency + 242.ImportedFromIB2 + 243.IBPluginDependency + 244.IBPluginDependency + 245.IBPluginDependency + 245.ImportedFromIB2 + 246.IBPluginDependency + 246.ImportedFromIB2 + 247.IBPluginDependency + 247.ImportedFromIB2 + 248.IBPluginDependency + 248.ImportedFromIB2 + 249.IBPluginDependency + 249.IBShouldRemoveOnLegacySave + 250.IBPluginDependency + 250.IBShouldRemoveOnLegacySave + 251.IBPluginDependency + 251.ImportedFromIB2 + 252.IBPluginDependency + 252.ImportedFromIB2 + 253.IBPluginDependency + 253.IBShouldRemoveOnLegacySave + 254.IBPluginDependency + 255.IBPluginDependency + 256.IBPluginDependency + 257.IBPluginDependency + 258.IBPluginDependency + 259.IBPluginDependency + 260.IBPluginDependency + 261.IBPluginDependency + 262.IBPluginDependency + 263.IBPluginDependency + 264.IBPluginDependency + 265.IBPluginDependency + 266.IBPluginDependency + 266.ImportedFromIB2 + 267.IBPluginDependency + 267.ImportedFromIB2 + 268.IBPluginDependency + 268.ImportedFromIB2 + 269.IBPluginDependency + 270.IBPluginDependency + 271.IBPluginDependency + 358.IBPluginDependency + 359.IBPluginDependency + 360.IBPluginDependency + 361.IBPluginDependency + 362.IBPluginDependency + 363.IBPluginDependency + 364.IBPluginDependency + 364.ImportedFromIB2 + 365.IBPluginDependency + 370.IBPluginDependency + 370.ImportedFromIB2 + 371.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{21, 760}, {229, 62}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{113, 326}, {580, 460}} + {{113, 326}, {580, 460}} + + + + {580, 460} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{196, 613}, {184, 123}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{196, 720}, {138, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + YES + + + YES + + + + + YES + + YES + + + YES + + + + 374 + + + + YES + + VMSettingsController + NSWindowController + + YES + + YES + addDisk: + browseForROMFileClicked: + browseForUnixRootClicked: + cancelEdit: + createDisk: + removeDisk: + saveChanges: + useRawKeyCodesClicked: + + + YES + id + id + id + id + id + id + id + id + + + + YES + + YES + bootFrom + disableCdrom + disableSound + diskSaveSize + diskSaveSizeField + disks + dontUseCPUWhenIdle + enable68kDREmulator + enableJIT + ethernetInterface + height + ignoreIllegalInstructions + ignoreIllegalMemoryAccesses + mixDevice + modemPort + mouseWheel + outDevice + printerPort + qdAccel + ramSize + ramSizeStepper + rawKeyCodes + refreshRate + romFile + scrollLines + scrollLinesStepper + unixRoot + useRawKeyCodes + videoType + width + + + YES + NSComboBox + NSButton + NSButton + NSView + NSTextField + NSTableView + NSButton + NSButton + NSButton + NSTextField + NSComboBox + NSButton + NSButton + NSTextField + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSButton + NSTextField + NSStepper + NSTextField + NSPopUpButton + NSTextField + NSTextField + NSStepper + NSTextField + NSButton + NSPopUpButton + NSComboBox + + + + IBProjectSource + VMSettingsController.h + + + + + 0 + ../SheepShaverLauncher.xcodeproj + 3 + + diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..8072f8c5a8dfab8b450a5f32dd8c64a17d48638c GIT binary patch literal 37316 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 T@gcQp{cjs@`rrP4M~3|$MvT`i literal 0 HcmV?d00001 diff --git a/SheepShaver/src/MacOSX/Launcher/Info.plist b/SheepShaver/src/MacOSX/Launcher/Info.plist new file mode 100644 index 00000000..d284b4cf --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + net.sourceforge.SheepShaverLauncher + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 2.3 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/SheepShaver/src/MacOSX/Launcher/SheepShaverLauncher.xcodeproj/project.pbxproj b/SheepShaver/src/MacOSX/Launcher/SheepShaverLauncher.xcodeproj/project.pbxproj new file mode 100644 index 00000000..a4c1d330 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/SheepShaverLauncher.xcodeproj/project.pbxproj @@ -0,0 +1,345 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 084186B10B3A0515004B1F63 /* VMSettingsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 084186B00B3A0515004B1F63 /* VMSettingsController.mm */; }; + 08B5FAFD102497FA0047FD1B /* VMSettingsWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 08B5FAFB102497FA0047FD1B /* VMSettingsWindow.nib */; }; + 08B5FB01102498B00047FD1B /* VMListWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 08B5FAFF102498B00047FD1B /* VMListWindow.nib */; }; + 08B5FB221024FE320047FD1B /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08B5FB211024FE320047FD1B /* AppController.mm */; }; + 08DC90BD0B67074C00799A45 /* prefs_items.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08DC90BC0B67074C00799A45 /* prefs_items.cpp */; }; + 08DC90BF0B67075D00799A45 /* prefs_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08DC90BE0B67075D00799A45 /* prefs_unix.cpp */; }; + 08DC90C10B67077300799A45 /* prefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08DC90C00B67077300799A45 /* prefs.cpp */; }; + 08F4D174102601C500C6436D /* VMListController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08F4D173102601C500C6436D /* VMListController.mm */; }; + 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 084186AF0B3A0515004B1F63 /* VMSettingsController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = VMSettingsController.h; sourceTree = ""; }; + 084186B00B3A0515004B1F63 /* VMSettingsController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = VMSettingsController.mm; sourceTree = ""; }; + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 08B5FAFC102497FA0047FD1B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/VMSettingsWindow.nib; sourceTree = ""; }; + 08B5FB00102498B00047FD1B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/VMListWindow.nib; sourceTree = ""; }; + 08B5FB201024FE320047FD1B /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; + 08B5FB211024FE320047FD1B /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppController.mm; sourceTree = ""; }; + 08DC90BC0B67074C00799A45 /* prefs_items.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = prefs_items.cpp; path = ../../prefs_items.cpp; sourceTree = SOURCE_ROOT; }; + 08DC90BE0B67075D00799A45 /* prefs_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = prefs_unix.cpp; path = ../../Unix/prefs_unix.cpp; sourceTree = SOURCE_ROOT; }; + 08DC90C00B67077300799A45 /* prefs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = prefs.cpp; path = ../../prefs.cpp; sourceTree = SOURCE_ROOT; }; + 08DC90C20B67078300799A45 /* prefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = prefs.h; path = ../../include/prefs.h; sourceTree = SOURCE_ROOT; }; + 08DC90C40B67079800799A45 /* sys.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sys.h; path = ../../include/sys.h; sourceTree = SOURCE_ROOT; }; + 08DC90C50B6707AC00799A45 /* user_strings_unix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = user_strings_unix.h; path = ../../Unix/user_strings_unix.h; sourceTree = SOURCE_ROOT; }; + 08DC90C60B6707B400799A45 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = ../../Unix/config.h; sourceTree = SOURCE_ROOT; }; + 08DC90C70B6707BE00799A45 /* sysdeps.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sysdeps.h; path = ../../Unix/sysdeps.h; sourceTree = SOURCE_ROOT; }; + 08F4D172102601C500C6436D /* VMListController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VMListController.h; sourceTree = ""; }; + 08F4D173102601C500C6436D /* VMListController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = VMListController.mm; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* SheepShaverLauncher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SheepShaverLauncher.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* SheepShaverLauncher.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* SheepShaverLauncher */ = { + isa = PBXGroup; + children = ( + 08DC90C20B67078300799A45 /* prefs.h */, + 08DC90C40B67079800799A45 /* sys.h */, + 08DC90C50B6707AC00799A45 /* user_strings_unix.h */, + 08DC90C60B6707B400799A45 /* config.h */, + 08DC90C70B6707BE00799A45 /* sysdeps.h */, + 08DC90BC0B67074C00799A45 /* prefs_items.cpp */, + 08DC90BE0B67075D00799A45 /* prefs_unix.cpp */, + 08DC90C00B67077300799A45 /* prefs.cpp */, + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + 08B5FB201024FE320047FD1B /* AppController.h */, + 08B5FB211024FE320047FD1B /* AppController.mm */, + 084186AF0B3A0515004B1F63 /* VMSettingsController.h */, + 084186B00B3A0515004B1F63 /* VMSettingsController.mm */, + 08F4D172102601C500C6436D /* VMListController.h */, + 08F4D173102601C500C6436D /* VMListController.mm */, + ); + name = SheepShaverLauncher; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 29B97316FDCFA39411CA2CEA /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, + 08B5FAFB102497FA0047FD1B /* VMSettingsWindow.nib */, + 08B5FAFF102498B00047FD1B /* VMListWindow.nib */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* SheepShaver Launcher */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SheepShaver Launcher" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SheepShaver Launcher"; + productInstallPath = "$(HOME)/Applications"; + productName = SheepShaverLauncher; + productReference = 8D1107320486CEB800E47090 /* SheepShaverLauncher.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SheepShaverLauncher" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 29B97314FDCFA39411CA2CEA /* SheepShaverLauncher */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* SheepShaver Launcher */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */, + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 08B5FAFD102497FA0047FD1B /* VMSettingsWindow.nib in Resources */, + 08B5FB01102498B00047FD1B /* VMListWindow.nib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + 084186B10B3A0515004B1F63 /* VMSettingsController.mm in Sources */, + 08DC90BD0B67074C00799A45 /* prefs_items.cpp in Sources */, + 08DC90BF0B67075D00799A45 /* prefs_unix.cpp in Sources */, + 08DC90C10B67077300799A45 /* prefs.cpp in Sources */, + 08B5FB221024FE320047FD1B /* AppController.mm in Sources */, + 08F4D174102601C500C6436D /* VMListController.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 08B5FAFB102497FA0047FD1B /* VMSettingsWindow.nib */ = { + isa = PBXVariantGroup; + children = ( + 08B5FAFC102497FA0047FD1B /* English */, + ); + name = VMSettingsWindow.nib; + sourceTree = ""; + }; + 08B5FAFF102498B00047FD1B /* VMListWindow.nib */ = { + isa = PBXVariantGroup; + children = ( + 08B5FB00102498B00047FD1B /* English */, + ); + name = VMListWindow.nib; + sourceTree = ""; + }; + 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = { + isa = PBXVariantGroup; + children = ( + 29B97319FDCFA39411CA2CEA /* English */, + ); + name = MainMenu.nib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + PREFS_EDITOR, + STANDALONE_PREFS, + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + OTHER_CFLAGS = "$(inherited)"; + PRODUCT_NAME = SheepShaverLauncher; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_INPUT_FILETYPE = sourcecode.cpp.objcpp; + GCC_MODEL_TUNING = G5; + GCC_PREPROCESSOR_DEFINITIONS = ( + PREFS_EDITOR, + STANDALONE_PREFS, + ); + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + OTHER_CFLAGS = "$(inherited)"; + PRODUCT_NAME = SheepShaverLauncher; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SheepShaver Launcher" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SheepShaverLauncher" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/SheepShaver/src/MacOSX/Launcher/VMListController.h b/SheepShaver/src/MacOSX/Launcher/VMListController.h new file mode 100644 index 00000000..1dee941b --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/VMListController.h @@ -0,0 +1,38 @@ +/* + * VMListController.h - SheepShaver VM manager in Cocoa on Mac OS X + * + * Copyright (C) 2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import + +@interface VMListController : NSWindowController { + IBOutlet NSTableView *vmList; + NSMutableArray *vmArray; +} + ++ (id) sharedInstance; + +- (id) init; +- (void) awakeFromNib; + +- (IBAction) newVirtualMachine: (id) sender; +- (IBAction) importVirtualMachine: (id) sender; +- (IBAction) editVirtualMachineSettings: (id) sender; +- (IBAction) runVirtualMachine: (id) sender; + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/VMListController.mm b/SheepShaver/src/MacOSX/Launcher/VMListController.mm new file mode 100644 index 00000000..415aa9f8 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/VMListController.mm @@ -0,0 +1,133 @@ +/* + * VMListController.mm - SheepShaver VM manager in Cocoa on Mac OS X + * + * Copyright (C) 2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import "VMListController.h" +#import "VMSettingsController.h" + +@implementation VMListController + ++ (id) sharedInstance +{ + static VMListController *_sharedInstance = nil; + if (!_sharedInstance) { + _sharedInstance = [[VMListController allocWithZone:[self zone]] init]; + } + return _sharedInstance; +} + +- (id) init +{ + self = [super initWithWindowNibName:@"VMListWindow"]; + + NSArray *vms = [[NSUserDefaults standardUserDefaults] stringArrayForKey:@"vm_list"]; + vmArray = [[NSMutableArray alloc] initWithCapacity:[vms count]]; + [vmArray addObjectsFromArray:vms]; + + return self; +} + +- (void) awakeFromNib +{ + [vmList setDataSource: self]; + //[vmList setDelegate: self]; + [vmList reloadData]; +} + +- (int) numberOfRowsInTableView: (NSTableView *) table +{ + return [vmArray count]; +} + +- (id) tableView: (NSTableView *) table objectValueForTableColumn: (NSTableColumn *) c row: (int) r +{ + return [vmArray objectAtIndex: r]; // [[vmArray objectAtIndex: r] lastPathComponent]; +} + +//- (NSString *) tableView: (NSTableView *) table toolTipForCell: (NSCell *) cell rect: (NSRectPointer) rect +// tableColumn: (NSTableColumn *) c row: (int) r mouseLocation: (NSPoint) loc +//{ +// return [vmArray objectAtIndex: r]; +//} + +- (IBAction) newVirtualMachine: (id) sender +{ + NSSavePanel *save = [NSSavePanel savePanel]; + [save setMessage: @"New SheepShaver Virtual Machine:"]; + [save setRequiredFileType: @"sheepvm"]; + [save setCanSelectHiddenExtension: YES]; + [save setExtensionHidden: NO]; + [save beginSheetForDirectory: nil + file: @"New.sheepvm" + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_newVirtualMachineDone: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (IBAction) _newVirtualMachineDone: (NSSavePanel *) save returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if (returnCode == NSOKButton) { + // make dir. + // create prefs file in there + // edit said prefs file + // advanced: show sub-panel in save dialog that says "Create Disk:" + } +} + +- (IBAction) importVirtualMachine: (id) sender +{ + NSOpenPanel *open = [NSOpenPanel openPanel]; + [open setMessage:@"Import SheepShaver Virtual Machine:"]; + [open setResolvesAliases:YES]; + // Curiously, bundles are treated as "files" not "directories" by NSOpenPanel. + [open setCanChooseDirectories:NO]; + [open setCanChooseFiles:YES]; + [open setAllowsMultipleSelection:NO]; + [open beginSheetForDirectory: nil + file: nil + types: [NSArray arrayWithObject:@"sheepvm"] + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_importVirtualMachineDone: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (void) _importVirtualMachineDone: (NSOpenPanel *) open returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if (returnCode == NSOKButton) { + [vmArray addObject:[open filename]]; + [vmList reloadData]; + [[NSUserDefaults standardUserDefaults] setObject:vmArray forKey:@"vm_list"]; + } +} + +- (IBAction) editVirtualMachineSettings:(id)sender +{ + int selectedRow = [vmList selectedRow]; + if (selectedRow >= 0) { + [[VMSettingsController sharedInstance] editSettingsFor:[vmArray objectAtIndex:selectedRow] sender:sender]; + } +} + +- (IBAction) runVirtualMachine:(id)sender +{ +} + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h new file mode 100644 index 00000000..1402aea6 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -0,0 +1,76 @@ +/* + * VMSettingsController.h - Preferences editing in Cocoa on Mac OS X + * + * Copyright (C) 2006-2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import + +@interface VMSettingsController : NSWindowController +{ + IBOutlet NSView *diskSaveSize; + IBOutlet NSTextField *diskSaveSizeField; + NSMutableArray *diskArray; + + // Setup + IBOutlet NSTableView *disks; + IBOutlet NSComboBox *bootFrom; + IBOutlet NSButton *disableCdrom; + IBOutlet NSTextField *ramSize; + IBOutlet NSStepper *ramSizeStepper; + IBOutlet NSTextField *romFile; + IBOutlet NSTextField *unixRoot; + // Audio/Video + IBOutlet NSPopUpButton *videoType; + IBOutlet NSPopUpButton *refreshRate; + IBOutlet NSComboBox *width; + IBOutlet NSComboBox *height; + IBOutlet NSButton *qdAccel; + IBOutlet NSButton *disableSound; + IBOutlet NSTextField *outDevice; + IBOutlet NSTextField *mixDevice; + // Keyboard/Mouse + IBOutlet NSButton *useRawKeyCodes; + IBOutlet NSTextField *rawKeyCodes; + IBOutlet NSPopUpButton *mouseWheel; + IBOutlet NSTextField *scrollLines; + IBOutlet NSStepper *scrollLinesStepper; + // CPU/Misc + IBOutlet NSButton *ignoreIllegalMemoryAccesses; + IBOutlet NSButton *ignoreIllegalInstructions; + IBOutlet NSButton *dontUseCPUWhenIdle; + IBOutlet NSButton *enableJIT; + IBOutlet NSButton *enable68kDREmulator; + IBOutlet NSTextField *modemPort; + IBOutlet NSTextField *printerPort; + IBOutlet NSTextField *ethernetInterface; +} + ++ (id) sharedInstance; +- (id) init; +- (void) editSettingsFor: (NSString *) vmdir sender: (id) sender; +- (IBAction) addDisk: (id) sender; +- (IBAction) removeDisk: (id) sender; +- (IBAction) createDisk: (id) sender; +- (IBAction) useRawKeyCodesClicked: (id) sender; +- (IBAction) browseForROMFileClicked: (id) sender; +- (IBAction) browseForUnixRootClicked: (id) sender; +- (void) cancelEdit: (id) sender; +- (void) saveChanges: (id) sender; +- (void) dealloc; + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm new file mode 100644 index 00000000..2b8e3086 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -0,0 +1,357 @@ +/* + * VMSettingsController.mm - Preferences editing in Cocoa on Mac OS X + * + * Copyright (C) 2006-2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import "VMSettingsController.h" + +#import "sysdeps.h" +#import "prefs.h" + +const int CDROMRefNum = -62; // RefNum of driver + +void prefs_init() +{ +} + +void prefs_exit() +{ +} + +@implementation VMSettingsController + ++ (id) sharedInstance +{ + static VMSettingsController *_sharedInstance = nil; + if (!_sharedInstance) { + _sharedInstance = [[VMSettingsController allocWithZone:[self zone]] init]; + } + return _sharedInstance; +} + +- (id) init +{ + return [super initWithWindowNibName:@"VMSettingsWindow"]; +} + +- (int) numberOfRowsInTableView: (NSTableView *) table +{ + return [diskArray count]; +} + +- (id) tableView: (NSTableView *) table objectValueForTableColumn: (NSTableColumn *) col row: (int) row +{ + return [diskArray objectAtIndex: row]; +} + +static NSString *getStringFromPrefs(const char *key) +{ + const char *value = PrefsFindString(key); + if (value == NULL) + return @""; + return [NSString stringWithCString: value]; +} + +- (void) setupGUI +{ + diskArray = [[NSMutableArray alloc] init]; + + const char *dsk; + int index = 0; + while ((dsk = PrefsFindString("disk", index++)) != NULL) + [diskArray addObject: [NSString stringWithCString: dsk ]]; + + [disks setDataSource: self]; + [disks reloadData]; + + int bootdriver = PrefsFindInt32("bootdriver"), active = 0; + switch (bootdriver) { + case 0: active = 0; break; + case CDROMRefNum: active = 1; break; + } + [bootFrom selectItemAtIndex: active ]; + + [romFile setStringValue: getStringFromPrefs("rom") ]; + [unixRoot setStringValue: getStringFromPrefs("extfs") ]; + [disableCdrom setIntValue: PrefsFindBool("nocdrom") ]; + [ramSize setIntValue: PrefsFindInt32("ramsize") / (1024*1024) ]; + [ramSizeStepper setIntValue: PrefsFindInt32("ramsize") / (1024*1024) ]; + + int display_type = 0; + int dis_width = 640; + int dis_height = 480; + + const char *str = PrefsFindString("screen"); + if (str != NULL) { + if (sscanf(str, "win/%d/%d", &dis_width, &dis_height) == 2) + display_type = 0; + else if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2) + display_type = 1; + } + + [videoType selectItemAtIndex: display_type ]; + [width setIntValue: dis_width ]; + [height setIntValue: dis_height ]; + + int frameskip = PrefsFindInt32("frameskip"); + int item = -1; + switch (frameskip) { + case 12: item = 0; break; + case 8: item = 1; break; + case 6: item = 2; break; + case 4: item = 3; break; + case 2: item = 4; break; + case 1: item = 5; break; + case 0: item = 6; break; + } + if (item >= 0) + [refreshRate selectItemAtIndex: item ]; + + [qdAccel setIntValue: PrefsFindBool("gfxaccel") ]; + + [disableSound setIntValue: PrefsFindBool("nosound") ]; + [outDevice setStringValue: getStringFromPrefs("dsp") ]; + [mixDevice setStringValue: getStringFromPrefs("mixer") ]; + + [useRawKeyCodes setIntValue: PrefsFindBool("keycodes") ]; + [rawKeyCodes setStringValue: getStringFromPrefs("keycodefile") ]; + [rawKeyCodes setEnabled:[useRawKeyCodes intValue]]; + + int wheelmode = PrefsFindInt32("mousewheelmode"), wheel = 0; + switch (wheelmode) { + case 0: wheel = 0; break; + case 1: wheel = 1; break; + } + [mouseWheel selectItemAtIndex: wheel ]; + + [scrollLines setIntValue: PrefsFindInt32("mousewheellines") ]; + [scrollLinesStepper setIntValue: PrefsFindInt32("mousewheellines") ]; + + [ignoreIllegalMemoryAccesses setIntValue: PrefsFindBool("ignoresegv") ]; + [ignoreIllegalInstructions setIntValue: PrefsFindBool("ignoreillegal") ]; + [dontUseCPUWhenIdle setIntValue: PrefsFindBool("idlewait") ]; + [enableJIT setIntValue: PrefsFindBool("jit") ]; + [enable68kDREmulator setIntValue: PrefsFindBool("jit68k") ]; + + [modemPort setStringValue: getStringFromPrefs("seriala") ]; + [printerPort setStringValue: getStringFromPrefs("serialb") ]; + [ethernetInterface setStringValue: getStringFromPrefs("ether") ]; +} + +- (void) editSettingsFor: (NSString *) vmdir sender: (id) sender +{ + chdir([vmdir fileSystemRepresentation]); + AddPrefsDefaults(); + AddPlatformPrefsDefaults(); + LoadPrefs([vmdir fileSystemRepresentation]); + NSWindow *window = [self window]; + [self setupGUI]; + [NSApp runModalForWindow:window]; +} + +static NSString *makeRelativeIfNecessary(NSString *path) +{ + char cwd[1024], filename[1024]; + int cwdlen; + strlcpy(filename, [path fileSystemRepresentation], sizeof(filename)); + getcwd(cwd, sizeof(cwd)); + cwdlen = strlen(cwd); + if (!strncmp(cwd, filename, cwdlen)) { + if (cwdlen >= 0 && cwd[cwdlen-1] != '/') + cwdlen++; + return [NSString stringWithCString: filename + cwdlen]; + } + return path; +} + +- (IBAction) addDisk: (id) sender +{ + NSOpenPanel *open = [NSOpenPanel openPanel]; + [open setCanChooseDirectories:NO]; + [open setAllowsMultipleSelection:NO]; + [open beginSheetForDirectory: @"" + file: @"Unknown" + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_addDiskEnd: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (void) _addDiskEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo +{ + if (theReturnCode == NSOKButton) { + [diskArray addObject: makeRelativeIfNecessary([open filename])]; + [disks reloadData]; + } +} + +- (IBAction) removeDisk: (id) sender +{ + int selectedRow = [disks selectedRow]; + if (selectedRow >= 0) { + [diskArray removeObjectAtIndex: selectedRow]; + [disks reloadData]; + } +} + +- (IBAction) createDisk: (id) sender +{ + NSSavePanel *save = [NSSavePanel savePanel]; + [save setAccessoryView: diskSaveSize]; + [save beginSheetForDirectory: @"" + file: @"New.dsk" + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_createDiskEnd: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (void) _createDiskEnd: (NSSavePanel *) save returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo +{ + if (theReturnCode == NSOKButton) { + int size = [diskSaveSizeField intValue]; + if (size >= 0 && size <= 10000) { + char cmd[1024]; + snprintf(cmd, sizeof(cmd), "dd if=/dev/zero \"of=%s\" bs=1024k count=%d", [[save filename] UTF8String], [diskSaveSizeField intValue]); + int ret = system(cmd); + if (ret == 0) { + [diskArray addObject: makeRelativeIfNecessary([save filename])]; + [disks reloadData]; + } + } + } + [(NSData *)theContextInfo release]; +} + +- (IBAction) useRawKeyCodesClicked: (id) sender +{ + [rawKeyCodes setEnabled:[useRawKeyCodes intValue]]; +} + +- (IBAction) browseForROMFileClicked: (id) sender +{ + NSOpenPanel *open = [NSOpenPanel openPanel]; + [open setCanChooseDirectories:NO]; + [open setAllowsMultipleSelection:NO]; + [open beginSheetForDirectory: @"" + file: [romFile stringValue] + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_browseForROMFileEnd: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (void) _browseForROMFileEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo +{ + if (theReturnCode == NSOKButton) { + [romFile setStringValue: makeRelativeIfNecessary([open filename])]; + } +} + +- (IBAction) browseForUnixRootClicked: (id) sender +{ + NSOpenPanel *open = [NSOpenPanel openPanel]; + [open setCanChooseDirectories:YES]; + [open setCanChooseFiles:NO]; + [open setAllowsMultipleSelection:NO]; + [open beginSheetForDirectory: @"" + file: [unixRoot stringValue] + modalForWindow: [self window] + modalDelegate: self + didEndSelector: @selector(_browseForUnixRootEnd: returnCode: contextInfo:) + contextInfo: nil]; +} + +- (void) _browseForUnixRootEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo +{ + if (theReturnCode == NSOKButton) { + [unixRoot setStringValue: makeRelativeIfNecessary([open filename])]; + } +} + +- (void) cancelEdit: (id) sender +{ + PrefsExit(); + [[self window] close]; + [NSApp stopModal]; +} + +- (void) saveChanges: (id) sender +{ + while (PrefsFindString("disk")) + PrefsRemoveItem("disk"); + + for (int i = 0; i < [diskArray count]; i++) { + PrefsAddString("disk", [[diskArray objectAtIndex:i] UTF8String]); + } + PrefsReplaceInt32("bootdriver", ([bootFrom indexOfSelectedItem] == 1 ? CDROMRefNum : 0)); + PrefsReplaceString("rom", [[romFile stringValue] UTF8String]); + PrefsReplaceString("extfs", [[unixRoot stringValue] UTF8String]); + PrefsReplaceBool("nocdrom", [disableCdrom intValue]); + PrefsReplaceInt32("ramsize", [ramSize intValue] << 20); + + char pref[256]; + snprintf(pref, sizeof(pref), "%s/%d/%d", [videoType indexOfSelectedItem] == 0 ? "win" : "dga", [width intValue], [height intValue]); + PrefsReplaceString("screen", pref); + + int rate = 8; + switch ([refreshRate indexOfSelectedItem]) { + case 0: rate = 12; break; + case 1: rate = 8; break; + case 2: rate = 6; break; + case 3: rate = 4; break; + case 4: rate = 2; break; + case 5: rate = 1; break; + case 6: rate = 0; break; + } + PrefsReplaceInt32("frameskip", rate); + PrefsReplaceBool("gfxaccel", [qdAccel intValue]); + + PrefsReplaceBool("nosound", [disableSound intValue]); + PrefsReplaceString("dsp", [[outDevice stringValue] UTF8String]); + PrefsReplaceString("mixer", [[mixDevice stringValue] UTF8String]); + + PrefsReplaceBool("keycodes", [useRawKeyCodes intValue]); + PrefsReplaceString("keycodefile", [[rawKeyCodes stringValue] UTF8String]); + + PrefsReplaceInt32("mousewheelmode", [mouseWheel indexOfSelectedItem]); + PrefsReplaceInt32("mousewheellines", [scrollLines intValue]); + + PrefsReplaceBool("ignoresegv", [ignoreIllegalMemoryAccesses intValue]); + PrefsReplaceBool("ignoreillegal", [ignoreIllegalInstructions intValue]); + PrefsReplaceBool("idlewait", [dontUseCPUWhenIdle intValue]); + PrefsReplaceBool("jit", [enableJIT intValue]); + PrefsReplaceBool("jit68k", [enable68kDREmulator intValue]); + + PrefsReplaceString("seriala", [[modemPort stringValue] UTF8String]); + PrefsReplaceString("serialb", [[printerPort stringValue] UTF8String]); + PrefsReplaceString("ether", [[ethernetInterface stringValue] UTF8String]); + SavePrefs(); + PrefsExit(); + + [[self window] close]; + [NSApp stopModal]; +} + +- (void) dealloc +{ + [super dealloc]; +} + +@end + diff --git a/SheepShaver/src/MacOSX/Launcher/main.m b/SheepShaver/src/MacOSX/Launcher/main.m new file mode 100644 index 00000000..88f92937 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/main.m @@ -0,0 +1,26 @@ +/* + * main.m - Cocoa SheepShaver launcher for Mac OS X + * + * Copyright (C) 2006-2009 Alexei Svitkine + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#import + +int main(int argc, char *argv[]) +{ + return NSApplicationMain(argc, (const char **) argv); +}