From fd62819e490ee00f53a19f0a7e09ce7670706482 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Sun, 2 Mar 2014 14:32:57 +0100 Subject: [PATCH 01/11] User can now specify wether the selected disk image is a CDROM (required for some games e.g. Diablo 2) --- SheepShaver/src/MacOSX/Launcher/DiskType.h | 23 + SheepShaver/src/MacOSX/Launcher/DiskType.m | 35 + .../Launcher/English.lproj/InfoPlist.strings | Bin .../English.lproj/MainMenu.nib/classes.nib | 0 .../English.lproj/MainMenu.nib/info.nib | 0 .../MainMenu.nib/keyedobjects.nib | Bin .../VMListWindow.nib/designable.nib | 0 .../VMListWindow.nib/keyedobjects.nib | Bin .../VMSettingsWindow.nib/designable.nib | 826 +++++++++++++----- .../VMSettingsWindow.nib/keyedobjects.nib | Bin 38316 -> 43067 bytes .../MacOSX/Launcher/VMSettingsController.h | 4 + .../MacOSX/Launcher/VMSettingsController.mm | 83 +- .../SheepShaver.xcodeproj/project.pbxproj | 6 + 13 files changed, 771 insertions(+), 206 deletions(-) create mode 100755 SheepShaver/src/MacOSX/Launcher/DiskType.h create mode 100755 SheepShaver/src/MacOSX/Launcher/DiskType.m mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/VMSettingsController.h mode change 100644 => 100755 SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm diff --git a/SheepShaver/src/MacOSX/Launcher/DiskType.h b/SheepShaver/src/MacOSX/Launcher/DiskType.h new file mode 100755 index 00000000..8f74d8a0 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/DiskType.h @@ -0,0 +1,23 @@ +// +// DiskType.h +// SheepShaver +// +// Created by maximilian on 01.02.14. +// Copyright 2014 __MyCompanyName__. All rights reserved. +// + +#import + + +@interface DiskType : NSObject { + NSString* _path; + BOOL _isCDROM; +} + +-(NSString*)path; +-(BOOL)isCDROM; + +-(void)setPath:(NSString*)thePath; +-(void)setIsCDROM:(BOOL)cdrom; + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/DiskType.m b/SheepShaver/src/MacOSX/Launcher/DiskType.m new file mode 100755 index 00000000..ec21d458 --- /dev/null +++ b/SheepShaver/src/MacOSX/Launcher/DiskType.m @@ -0,0 +1,35 @@ +// +// DiskType.m +// SheepShaver +// +// Created by maximilian on 01.02.14. +// Copyright 2014 __MyCompanyName__. All rights reserved. +// + +#import "DiskType.h" + + +@implementation DiskType +-(NSString*)path +{ + return _path; +} +-(BOOL)isCDROM +{ + return _isCDROM; +} + +-(void)setPath:(NSString*)thePath +{ + _path = [thePath copy]; +} +-(void)setIsCDROM:(BOOL)cdrom +{ + _isCDROM=cdrom; +} + +-(NSString*)description { + return [NSString stringWithFormat:@"DiskType, path:%@ isCDROM:%@", _path, _isCDROM]; +} + +@end diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings b/SheepShaver/src/MacOSX/Launcher/English.lproj/InfoPlist.strings old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/classes.nib old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/info.nib old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/MainMenu.nib/keyedobjects.nib old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/designable.nib old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMListWindow.nib/keyedobjects.nib old mode 100644 new mode 100755 diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib old mode 100644 new mode 100755 index 2e32cd41..d2ec997b --- a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib +++ b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/designable.nib @@ -1,27 +1,28 @@ - + 1050 - 9J61 - 677 - 949.46 - 353.00 + 10K549 + 851 + 1038.36 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + YES - + + + YES com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -35,7 +36,7 @@ NSApplication - + 256 YES @@ -51,7 +52,7 @@ 40 LucidaGrande - 1.300000e+01 + 13 1044 @@ -86,12 +87,12 @@ 917024 0 - 1 - 4.000000e+01 - 1.000000e+00 - 1.000000e+04 - 1.000000e+00 + 1 + 40 + 1 + 10000 + 1 YES YES @@ -114,7 +115,7 @@ controlColor 3 - MC42NjY2NjY2OQA + MC42NjY2NjY2NjY3AA @@ -127,6 +128,7 @@ {229, 62} + NSView NSResponder @@ -142,7 +144,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {580, 460} @@ -321,34 +323,43 @@ 256 - {468, 152} + {468, 136} YES - - + + 256 - {{375, 0}, {16, 17}} + {468, 17} + + + + + + 256 + {{469, 0}, {16, 17}} + YES - 3.710000e+02 - 4.000000e+01 - 1.000000e+03 + pathCol + 371 + 40 + 1000 - 75628032 - 0 - + 75628096 + 2048 + File LucidaGrande - 1.100000e+01 + 11 3100 3 MC4zMzMzMzI5OQA - + 6 System headerTextColor @@ -370,9 +381,52 @@ + + isCDROMcol + 64 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + CDROM + + + 6 + System + headerColor + + + + + + 67239424 + 0 + + + + 1215058431 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + 3 + YES + YES + + - 3.000000e+00 - 2.000000e+00 + 3 + 2 6 @@ -383,16 +437,19 @@ MC41AA - 1.700000e+01 + 17 312475648 + + 2 4 15 0 YES + 0 - {{1, 1}, {468, 152}} + {{1, 17}, {468, 136}} @@ -402,22 +459,37 @@ 256 - {{469, 1}, {15, 152}} + {{469, 17}, {15, 136}} _doScroller: - 3.947369e-01 + 0.99350649350649356 - 256 + -2147483392 {{-100, -100}, {374, 15}} 1 _doScroller: - 9.904762e-01 + 0.99047620000000003 + + + 2304 + + YES + + + {{1, 0}, {468, 17}} + + + + + 4 + + {{16, 42}, {485, 154}} @@ -426,6 +498,8 @@ + + QSAAAEEgAABBmAAAQZgAAA @@ -502,10 +576,10 @@ YES - - 1.000000e+01 - 1.000000e+01 - 1.000000e+03 + + 10 + 10 + 1000 75628032 0 @@ -514,7 +588,7 @@ LucidaGrande - 1.200000e+01 + 12 16 @@ -538,11 +612,11 @@ - 3.000000e+00 - 2.000000e+00 + 3 + 2 - 1.900000e+01 + 19 tableViewAction: -765427712 @@ -552,6 +626,7 @@ 15 0 YES + 0 @@ -569,13 +644,8 @@ 1211912703 2 - - NSImage - NSSwitch - - - NSSwitch - + + 200 @@ -592,10 +662,10 @@ -2146566624 0 - 1.900000e+01 - 4.000000e+00 - 1.024000e+03 - 1.000000e+00 + 19 + 4 + 1024 + 1 YES @@ -717,7 +787,7 @@ 1211912703 2 - + @@ -740,7 +810,7 @@ 1 LucidaGrande - 1.300000e+01 + 13 16 @@ -979,10 +1049,10 @@ YES - - 1.000000e+01 - 1.000000e+01 - 1.000000e+03 + + 10 + 10 + 1000 75628032 0 @@ -1011,11 +1081,11 @@ - 3.000000e+00 - 2.000000e+00 + 3 + 2 - 1.900000e+01 + 19 tableViewAction: -765427712 @@ -1025,6 +1095,7 @@ 15 0 YES + 0 @@ -1064,10 +1135,10 @@ YES - - 1.000000e+01 - 1.000000e+01 - 1.000000e+03 + + 10 + 10 + 1000 75628032 0 @@ -1096,11 +1167,11 @@ - 3.000000e+00 - 2.000000e+00 + 3 + 2 - 1.900000e+01 + 19 tableViewAction: -765427712 @@ -1110,6 +1181,7 @@ 15 0 YES + 0 @@ -1194,7 +1266,7 @@ 1211912703 2 - + @@ -1465,7 +1537,7 @@ 1211912703 2 - + @@ -1487,7 +1559,7 @@ 1211912703 2 - + @@ -1530,7 +1602,7 @@ 1211912703 2 - + @@ -1552,7 +1624,7 @@ 1211912703 2 - + @@ -1609,7 +1681,7 @@ 1211912703 2 - + @@ -1752,8 +1824,8 @@ 917024 0 - 5.900000e+01 - 1.000000e+00 + 59 + 1 YES YES @@ -1867,7 +1939,39 @@ {{0, 0}, {1440, 878}} {580, 482} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} + + + + 268 + + YES + + + 268 + {{18, 18}, {85, 18}} + + YES + + 67239424 + 0 + Is CDROM + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {121, 54} + + NSView @@ -2265,13 +2369,29 @@ 379 + + + isCDROM + + + + 383 + + + + isCDROMcheckbox + + + + 384 + YES 0 - + YES @@ -2280,19 +2400,19 @@ -2 - - RmlsZSdzIE93bmVyA + + File's Owner -1 - + First Responder -3 - + Application @@ -2304,7 +2424,7 @@ - + DiskSize @@ -2314,7 +2434,7 @@ YES - + PrefsWindow @@ -2561,6 +2681,7 @@ + @@ -2580,6 +2701,7 @@ YES + @@ -3381,19 +3503,61 @@ + + 380 + + + YES + + + + IsCDROM + + + 381 + + + YES + + + + + + 382 + + + + + 388 + + + YES + + + + + + 390 + + + + + 391 + + + YES - + YES - -1.IBPluginDependency - -2.IBPluginDependency -3.IBPluginDependency 141.IBEditorWindowLastContentRect 141.IBPluginDependency 141.ImportedFromIB2 142.IBEditorWindowLastContentRect + 142.IBPluginDependency 142.IBWindowTemplateEditedContentRect 142.ImportedFromIB2 142.NSWindowTemplate.visibleAtLaunch @@ -3623,63 +3787,69 @@ 375.ImportedFromIB2 376.IBPluginDependency 377.IBPluginDependency + 380.IBEditorWindowLastContentRect + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 388.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency YES com.apple.InterfaceBuilder.CocoaPlugin + {{899, 941}, {229, 62}} com.apple.InterfaceBuilder.CocoaPlugin + + {{739, 322}, {580, 460}} com.apple.InterfaceBuilder.CocoaPlugin - {{21, 760}, {229, 62}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{138, 317}, {580, 460}} - {{138, 317}, {580, 460}} - + {{739, 322}, {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 @@ -3690,19 +3860,19 @@ com.apple.InterfaceBuilder.CocoaPlugin {{601, 517}, {143, 143}} 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 @@ -3710,65 +3880,65 @@ 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 @@ -3780,51 +3950,51 @@ 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 @@ -3838,11 +4008,11 @@ 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 @@ -3853,22 +4023,27 @@ 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 + {{705, 948}, {121, 54}} 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 @@ -3876,15 +4051,13 @@ YES - - YES - + YES - 379 + 391 @@ -3894,7 +4067,7 @@ NSWindowController YES - + YES addDisk: browseForKeyCodesFileClicked: @@ -3919,9 +4092,63 @@ id + + YES + + YES + addDisk: + browseForKeyCodesFileClicked: + browseForROMFileClicked: + browseForUnixRootClicked: + cancelEdit: + createDisk: + removeDisk: + saveChanges: + useRawKeyCodesClicked: + + + YES + + addDisk: + id + + + browseForKeyCodesFileClicked: + id + + + browseForROMFileClicked: + id + + + browseForUnixRootClicked: + id + + + cancelEdit: + id + + + createDisk: + id + + + removeDisk: + id + + + saveChanges: + id + + + useRawKeyCodesClicked: + id + + + YES - + YES bootFrom browseRawKeyCodesButton @@ -3937,6 +4164,8 @@ height ignoreIllegalInstructions ignoreIllegalMemoryAccesses + isCDROM + isCDROMcheckbox mixDevice modemPort mouseWheel @@ -3971,6 +4200,8 @@ NSComboBox NSButton NSButton + NSView + NSButton NSTextField NSTextField NSPopUpButton @@ -3990,15 +4221,218 @@ NSComboBox + + YES + + YES + bootFrom + browseRawKeyCodesButton + disableCdrom + disableSound + diskSaveSize + diskSaveSizeField + disks + dontUseCPUWhenIdle + enable68kDREmulator + enableJIT + ethernetInterface + height + ignoreIllegalInstructions + ignoreIllegalMemoryAccesses + isCDROM + isCDROMcheckbox + mixDevice + modemPort + mouseWheel + outDevice + printerPort + qdAccel + ramSize + ramSizeStepper + rawKeyCodes + refreshRate + romFile + scrollLines + scrollLinesStepper + unixRoot + useRawKeyCodes + videoType + width + + + YES + + bootFrom + NSComboBox + + + browseRawKeyCodesButton + NSButton + + + disableCdrom + NSButton + + + disableSound + NSButton + + + diskSaveSize + NSView + + + diskSaveSizeField + NSTextField + + + disks + NSTableView + + + dontUseCPUWhenIdle + NSButton + + + enable68kDREmulator + NSButton + + + enableJIT + NSButton + + + ethernetInterface + NSTextField + + + height + NSComboBox + + + ignoreIllegalInstructions + NSButton + + + ignoreIllegalMemoryAccesses + NSButton + + + isCDROM + NSView + + + isCDROMcheckbox + NSButton + + + mixDevice + NSTextField + + + modemPort + NSTextField + + + mouseWheel + NSPopUpButton + + + outDevice + NSTextField + + + printerPort + NSTextField + + + qdAccel + NSButton + + + ramSize + NSTextField + + + ramSizeStepper + NSStepper + + + rawKeyCodes + NSTextField + + + refreshRate + NSPopUpButton + + + romFile + NSTextField + + + scrollLines + NSTextField + + + scrollLinesStepper + NSStepper + + + unixRoot + NSTextField + + + useRawKeyCodes + NSButton + + + videoType + NSPopUpButton + + + width + NSComboBox + + + IBProjectSource - VMSettingsController.h + Launcher/VMSettingsController.h 0 - ../SheepShaverLauncher.xcodeproj + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../SheepShaver.xcodeproj 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + NSSwitch + + + YES + {9, 8} + {7, 2} + {15, 15} + + diff --git a/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib b/SheepShaver/src/MacOSX/Launcher/English.lproj/VMSettingsWindow.nib/keyedobjects.nib old mode 100644 new mode 100755 index fe1f0b48d95a409e6db8eb1cf05aa8d93e03e054..b27171c4a97d2a2cd2d63e32abc20b9d5d0c5c32 GIT binary patch literal 43067 zcmbq+2YeL8_xP0E+j6u^?4N zrHUwu9Z_sx0R#aR>X=$G# zj0mDgLNaohEzFj~noRapR2G$$4r@|2?iOD`Rpsy|`4t5dir{i?ld7`vaD?Zq*kIC6 zk%Clo6-q}Lr~~SVu0>tZ6f_IniynkK525GLHnbDHirzr)qYu!B=o9ogI)o0Rqv$v~ zfqp;=_QHqZNOTc5!&l*S+zxlb*Ww;H8|UC$JQR<_V{id3#N+V8TeLg;XCm? z_LR*K8WOkxpE=8(DMZnB1K zCC`&r$Zqm3`G9;%ek4DUljIL_fn206s?ad%rI9p>CefDkN}562(hjsE;6kCj=nb?V z9Y}}KvGgWdOiO4ft)w&Pt#lrpPZ!Wd^g;R%T}#)|C+V~FdHOPag}y^~(|75I^mF

X^=En%8`aiH%a+Y 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˫H`)uXWG;3BdsI}F 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 X|G`mlasSO`{|`z1w|((NtnmK;4%1kw diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h old mode 100644 new mode 100755 index 2e3a237a..ae48a0b7 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -31,6 +31,10 @@ IBOutlet NSTextField *diskSaveSizeField; NSMutableArray *diskArray; + IBOutlet NSView *isCDROM; + IBOutlet NSButton *isCDROMcheckbox; + //NSMutableArray *cdromArray; + // Setup IBOutlet NSTableView *disks; IBOutlet NSComboBox *bootFrom; diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm old mode 100644 new mode 100755 index c45eacf8..9e6c5fe6 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -26,8 +26,11 @@ #import "VMSettingsController.h" +#import "DiskType.h" + #include + const int CDROMRefNum = -62; // RefNum of driver #ifdef STANDALONE_PREFS @@ -62,12 +65,28 @@ void prefs_exit() - (int) numberOfRowsInTableView: (NSTableView *) table { + //NSLog(@"Count of diskArray: %d", [diskArray count]); return [diskArray count]; } - (id) tableView: (NSTableView *) table objectValueForTableColumn: (NSTableColumn *) col row: (int) row { - return [diskArray objectAtIndex: row]; + DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; + + if([[col identifier] isEqualTo:@"isCDROMcol"]) + { + return [NSString stringWithFormat:@"%d", [d isCDROM]]; + } + + return [d path]; +} + +-(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row +{ + if ([[tableColumn identifier] isEqual:@"isCDROMcol"]) { + DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; + [d setIsCDROM:![d isCDROM]]; + } } static NSString *getStringFromPrefs(const char *key) @@ -85,11 +104,27 @@ static NSString *getStringFromPrefs(const char *key) const char *dsk; int index = 0; while ((dsk = PrefsFindString("disk", index++)) != NULL) - [diskArray addObject: [NSString stringWithUTF8String: dsk ]]; - - [disks setDataSource: self]; - [disks reloadData]; + { + DiskType *disk = [[DiskType alloc] init]; + [disk setPath:[NSString stringWithUTF8String: dsk ]]; + [disk setIsCDROM:NO]; + + [diskArray addObject:disk]; + } + /* Fetch all CDROMs */ + index = 0; + while ((dsk=PrefsFindString("cdrom", index++))!=NULL) { + DiskType *disk = [[DiskType alloc] init]; + [disk setPath:[NSString stringWithUTF8String: dsk ]]; + [disk setIsCDROM:YES]; + + [diskArray addObject:disk]; + } + + [disks setDataSource: self]; + [disks reloadData]; + int bootdriver = PrefsFindInt32("bootdriver"), active = 0; switch (bootdriver) { case 0: active = 0; break; @@ -212,6 +247,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) { NSOpenPanel *open = [NSOpenPanel openPanel]; [open setCanChooseDirectories:YES]; + [open setAccessoryView:isCDROM]; [open setAllowsMultipleSelection:NO]; [open setTreatsFilePackagesAsDirectories:YES]; [open beginSheetForDirectory: [[NSFileManager defaultManager] currentDirectoryPath] @@ -225,8 +261,19 @@ static NSString *makeRelativeIfNecessary(NSString *path) - (void) _addDiskEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo { if (theReturnCode == NSOKButton) { - [diskArray addObject: makeRelativeIfNecessary([open filename])]; - [disks reloadData]; + DiskType *d=[[DiskType alloc] init]; + [d setPath:makeRelativeIfNecessary([open filename])]; + + if([isCDROMcheckbox state]==NSOnState) + { + [d setIsCDROM:YES]; + } + else { + [d setIsCDROM:NO]; + } + + [diskArray addObject: d]; + [disks reloadData]; } } @@ -261,7 +308,11 @@ static NSString *makeRelativeIfNecessary(NSString *path) 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])]; + DiskType *d=[[DiskType alloc] init]; + [d setPath:makeRelativeIfNecessary([save filename])]; + [d setIsCDROM:NO]; + + [diskArray addObject: d]; [disks reloadData]; } } @@ -350,12 +401,24 @@ static NSString *makeRelativeIfNecessary(NSString *path) - (void) saveChanges: (id) sender { + // Remove all disks while (PrefsFindString("disk")) PrefsRemoveItem("disk"); - + // Remove all cdroms + while (PrefsFindString("cdrom")) + PrefsRemoveItem("cdrom"); + + + // Write all disks for (int i = 0; i < [diskArray count]; i++) { - PrefsAddString("disk", [[diskArray objectAtIndex:i] UTF8String]); + DiskType *d = [diskArray objectAtIndex:i]; + if([d isCDROM]) + PrefsAddString("cdrom", [[d path] UTF8String]); + else + PrefsAddString("disk", [[d path] UTF8String]); + } + PrefsReplaceInt32("bootdriver", ([bootFrom indexOfSelectedItem] == 1 ? CDROMRefNum : 0)); PrefsReplaceString("rom", [[romFile stringValue] UTF8String]); PrefsReplaceString("extfs", [[unixRoot stringValue] UTF8String]); diff --git a/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj b/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj index 37065ccc..2808f0d6 100644 --- a/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj +++ b/SheepShaver/src/MacOSX/SheepShaver.xcodeproj/project.pbxproj @@ -129,6 +129,7 @@ 08CD42DC14B7B85B009CA2A2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */; }; 08CD42E814B7B8AA009CA2A2 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CD42E714B7B8AA009CA2A2 /* Carbon.framework */; }; 08D93A16159FE174003B04EC /* clip_macosx64.mm in Sources */ = {isa = PBXBuildFile; fileRef = 08D93A15159FE174003B04EC /* clip_macosx64.mm */; }; + A7B1921418C35D4700791D8D /* DiskType.m in Sources */ = {isa = PBXBuildFile; fileRef = A7B1921318C35D4700791D8D /* DiskType.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -448,6 +449,8 @@ 08CD42DB14B7B85B009CA2A2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 08CD42E714B7B8AA009CA2A2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; 08D93A15159FE174003B04EC /* clip_macosx64.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = clip_macosx64.mm; sourceTree = ""; }; + A7B1921218C35D4700791D8D /* DiskType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskType.h; sourceTree = ""; }; + A7B1921318C35D4700791D8D /* DiskType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiskType.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -940,6 +943,8 @@ 0856D2D614A9A704000B1711 /* Launcher */ = { isa = PBXGroup; children = ( + A7B1921218C35D4700791D8D /* DiskType.h */, + A7B1921318C35D4700791D8D /* DiskType.m */, 0856D30714A9A704000B1711 /* VMSettingsWindow.nib */, 0856D31114A9A704000B1711 /* VMSettingsController.h */, 0856D31214A9A704000B1711 /* VMSettingsController.mm */, @@ -1452,6 +1457,7 @@ 0873A80214AC515D004F12B7 /* utils_macosx.mm in Sources */, 083E370C16EFE85000CCCA59 /* disk_sparsebundle.cpp in Sources */, 083E372216EFE87200CCCA59 /* tinyxml2.cpp in Sources */, + A7B1921418C35D4700791D8D /* DiskType.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From df357601371799371f370eda9aa25e453f4de95d Mon Sep 17 00:00:00 2001 From: atmaxinger Date: Mon, 15 Sep 2014 07:09:09 +0200 Subject: [PATCH 02/11] Some coding style changes --- .../MacOSX/Launcher/VMSettingsController.h | 5 +-- .../MacOSX/Launcher/VMSettingsController.mm | 40 ++++++++----------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h index ae48a0b7..dc80c595 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -30,11 +30,8 @@ IBOutlet NSView *diskSaveSize; IBOutlet NSTextField *diskSaveSizeField; NSMutableArray *diskArray; - IBOutlet NSView *isCDROM; - IBOutlet NSButton *isCDROMcheckbox; - //NSMutableArray *cdromArray; - + IBOutlet NSButton *isCDROMcheckbox; // Setup IBOutlet NSTableView *disks; IBOutlet NSComboBox *bootFrom; diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 9e6c5fe6..e3fb6803 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -30,7 +30,6 @@ #include - const int CDROMRefNum = -62; // RefNum of driver #ifdef STANDALONE_PREFS @@ -65,7 +64,6 @@ void prefs_exit() - (int) numberOfRowsInTableView: (NSTableView *) table { - //NSLog(@"Count of diskArray: %d", [diskArray count]); return [diskArray count]; } @@ -112,18 +110,18 @@ static NSString *getStringFromPrefs(const char *key) [diskArray addObject:disk]; } - /* Fetch all CDROMs */ - index = 0; - while ((dsk=PrefsFindString("cdrom", index++))!=NULL) { - DiskType *disk = [[DiskType alloc] init]; - [disk setPath:[NSString stringWithUTF8String: dsk ]]; - [disk setIsCDROM:YES]; + /* Fetch all CDROMs */ + index = 0; + while ((dsk=PrefsFindString("cdrom", index++))!=NULL) { + DiskType *disk = [[DiskType alloc] init]; + [disk setPath:[NSString stringWithUTF8String: dsk ]]; + [disk setIsCDROM:YES]; - [diskArray addObject:disk]; - } + [diskArray addObject:disk]; + } - [disks setDataSource: self]; - [disks reloadData]; + [disks setDataSource: self]; + [disks reloadData]; int bootdriver = PrefsFindInt32("bootdriver"), active = 0; switch (bootdriver) { @@ -247,7 +245,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) { NSOpenPanel *open = [NSOpenPanel openPanel]; [open setCanChooseDirectories:YES]; - [open setAccessoryView:isCDROM]; + [open setAccessoryView:isCDROM]; [open setAllowsMultipleSelection:NO]; [open setTreatsFilePackagesAsDirectories:YES]; [open beginSheetForDirectory: [[NSFileManager defaultManager] currentDirectoryPath] @@ -261,10 +259,10 @@ static NSString *makeRelativeIfNecessary(NSString *path) - (void) _addDiskEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo { if (theReturnCode == NSOKButton) { - DiskType *d=[[DiskType alloc] init]; + DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([open filename])]; - if([isCDROMcheckbox state]==NSOnState) + if([isCDROMcheckbox state] == NSOnState) { [d setIsCDROM:YES]; } @@ -405,18 +403,14 @@ static NSString *makeRelativeIfNecessary(NSString *path) while (PrefsFindString("disk")) PrefsRemoveItem("disk"); // Remove all cdroms - while (PrefsFindString("cdrom")) - PrefsRemoveItem("cdrom"); + while (PrefsFindString("cdrom")) + PrefsRemoveItem("cdrom"); // Write all disks for (int i = 0; i < [diskArray count]; i++) { - DiskType *d = [diskArray objectAtIndex:i]; - if([d isCDROM]) - PrefsAddString("cdrom", [[d path] UTF8String]); - else - PrefsAddString("disk", [[d path] UTF8String]); - + DiskType *d = [diskArray objectAtIndex:i]; + PrefsAddString([d isCDROM] ? "cdrom" : "disk", [[d path] UTF8String]); } PrefsReplaceInt32("bootdriver", ([bootFrom indexOfSelectedItem] == 1 ? CDROMRefNum : 0)); From b29e53229db89b95b34c7e634ecdbe336bc4b4aa Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:11:45 +0200 Subject: [PATCH 03/11] Fix tabs in VMSettingsController.h --- SheepShaver/src/MacOSX/Launcher/VMSettingsController.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h index dc80c595..a9b1289a 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -30,8 +30,8 @@ IBOutlet NSView *diskSaveSize; IBOutlet NSTextField *diskSaveSizeField; NSMutableArray *diskArray; - IBOutlet NSView *isCDROM; - IBOutlet NSButton *isCDROMcheckbox; + IBOutlet NSView *isCDROM; + IBOutlet NSButton *isCDROMcheckbox; // Setup IBOutlet NSTableView *disks; IBOutlet NSComboBox *bootFrom; From 71932affc8b1c978f1fc457b4ba4dd1d8d8c39b3 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:27:40 +0200 Subject: [PATCH 04/11] One more style change --- SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index e3fb6803..49e4c9ac 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -101,8 +101,7 @@ static NSString *getStringFromPrefs(const char *key) const char *dsk; int index = 0; - while ((dsk = PrefsFindString("disk", index++)) != NULL) - { + while ((dsk = PrefsFindString("disk", index++)) != NULL) { DiskType *disk = [[DiskType alloc] init]; [disk setPath:[NSString stringWithUTF8String: dsk ]]; [disk setIsCDROM:NO]; @@ -112,7 +111,7 @@ static NSString *getStringFromPrefs(const char *key) /* Fetch all CDROMs */ index = 0; - while ((dsk=PrefsFindString("cdrom", index++))!=NULL) { + while ((dsk = PrefsFindString("cdrom", index++)) != NULL) { DiskType *disk = [[DiskType alloc] init]; [disk setPath:[NSString stringWithUTF8String: dsk ]]; [disk setIsCDROM:YES]; From 2721c8b694b3121958449289b39873f16b03e450 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:31:53 +0200 Subject: [PATCH 05/11] Change position of if bracket --- SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 49e4c9ac..9e48e7ba 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -261,8 +261,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([open filename])]; - if([isCDROMcheckbox state] == NSOnState) - { + if([isCDROMcheckbox state] == NSOnState) { [d setIsCDROM:YES]; } else { From 6cdb38e234f581067b710b84207dbc91c9c743e6 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:33:03 +0200 Subject: [PATCH 06/11] Fix some identation --- SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 9e48e7ba..eb2e1100 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -304,9 +304,9 @@ static NSString *makeRelativeIfNecessary(NSString *path) 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) { - DiskType *d=[[DiskType alloc] init]; - [d setPath:makeRelativeIfNecessary([save filename])]; - [d setIsCDROM:NO]; + DiskType *d=[[DiskType alloc] init]; + [d setPath:makeRelativeIfNecessary([save filename])]; + [d setIsCDROM:NO]; [diskArray addObject: d]; [disks reloadData]; From 50787359a51ab840f7b9cfe70853d8a1c55c5692 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:35:53 +0200 Subject: [PATCH 07/11] Fix some more identation --- .../MacOSX/Launcher/VMSettingsController.mm | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index eb2e1100..d895ce88 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -102,11 +102,11 @@ static NSString *getStringFromPrefs(const char *key) const char *dsk; int index = 0; while ((dsk = PrefsFindString("disk", index++)) != NULL) { - DiskType *disk = [[DiskType alloc] init]; - [disk setPath:[NSString stringWithUTF8String: dsk ]]; - [disk setIsCDROM:NO]; - - [diskArray addObject:disk]; + DiskType *disk = [[DiskType alloc] init]; + [disk setPath:[NSString stringWithUTF8String: dsk ]]; + [disk setIsCDROM:NO]; + + [diskArray addObject:disk]; } /* Fetch all CDROMs */ @@ -258,18 +258,18 @@ static NSString *makeRelativeIfNecessary(NSString *path) - (void) _addDiskEnd: (NSOpenPanel *) open returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo { if (theReturnCode == NSOKButton) { - DiskType *d = [[DiskType alloc] init]; - [d setPath:makeRelativeIfNecessary([open filename])]; + DiskType *d = [[DiskType alloc] init]; + [d setPath:makeRelativeIfNecessary([open filename])]; - if([isCDROMcheckbox state] == NSOnState) { - [d setIsCDROM:YES]; - } - else { - [d setIsCDROM:NO]; - } + if([isCDROMcheckbox state] == NSOnState) { + [d setIsCDROM:YES]; + } + else { + [d setIsCDROM:NO]; + } - [diskArray addObject: d]; - [disks reloadData]; + [diskArray addObject: d]; + [disks reloadData]; } } @@ -308,7 +308,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) [d setPath:makeRelativeIfNecessary([save filename])]; [d setIsCDROM:NO]; - [diskArray addObject: d]; + [diskArray addObject: d]; [disks reloadData]; } } @@ -407,8 +407,8 @@ static NSString *makeRelativeIfNecessary(NSString *path) // Write all disks for (int i = 0; i < [diskArray count]; i++) { - DiskType *d = [diskArray objectAtIndex:i]; - PrefsAddString([d isCDROM] ? "cdrom" : "disk", [[d path] UTF8String]); + DiskType *d = [diskArray objectAtIndex:i]; + PrefsAddString([d isCDROM] ? "cdrom" : "disk", [[d path] UTF8String]); } PrefsReplaceInt32("bootdriver", ([bootFrom indexOfSelectedItem] == 1 ? CDROMRefNum : 0)); From aea2b09d476e0186c1b142a3e1042b1ed7e3ed00 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Mon, 15 Sep 2014 07:37:49 +0200 Subject: [PATCH 08/11] Identation & bracket position changes --- .../MacOSX/Launcher/VMSettingsController.mm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index d895ce88..52b073bc 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -69,22 +69,21 @@ void prefs_exit() - (id) tableView: (NSTableView *) table objectValueForTableColumn: (NSTableColumn *) col row: (int) row { - DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; + DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; - if([[col identifier] isEqualTo:@"isCDROMcol"]) - { - return [NSString stringWithFormat:@"%d", [d isCDROM]]; - } + if([[col identifier] isEqualTo:@"isCDROMcol"]) { + return [NSString stringWithFormat:@"%d", [d isCDROM]]; + } - return [d path]; + return [d path]; } -(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { - if ([[tableColumn identifier] isEqual:@"isCDROMcol"]) { - DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; - [d setIsCDROM:![d isCDROM]]; - } + if ([[tableColumn identifier] isEqual:@"isCDROMcol"]) { + DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; + [d setIsCDROM:![d isCDROM]]; + } } static NSString *getStringFromPrefs(const char *key) From 4ee413bc357e0c876599cef027bd31eda2aeaa37 Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Fri, 19 Sep 2014 07:19:11 +0200 Subject: [PATCH 09/11] Identation fixes --- SheepShaver/src/MacOSX/Launcher/VMSettingsController.h | 2 +- SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h index a9b1289a..d8b4ed5a 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.h @@ -52,7 +52,7 @@ // Keyboard/Mouse IBOutlet NSButton *useRawKeyCodes; IBOutlet NSTextField *rawKeyCodes; - IBOutlet NSButton *browseRawKeyCodesButton; + IBOutlet NSButton *browseRawKeyCodesButton; IBOutlet NSPopUpButton *mouseWheel; IBOutlet NSTextField *scrollLines; IBOutlet NSStepper *scrollLinesStepper; diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 52b073bc..d07aed79 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -396,15 +396,15 @@ static NSString *makeRelativeIfNecessary(NSString *path) - (void) saveChanges: (id) sender { - // Remove all disks + // Remove all disks while (PrefsFindString("disk")) PrefsRemoveItem("disk"); - // Remove all cdroms + // Remove all cdroms while (PrefsFindString("cdrom")) PrefsRemoveItem("cdrom"); - // Write all disks + // Write all disks for (int i = 0; i < [diskArray count]; i++) { DiskType *d = [diskArray objectAtIndex:i]; PrefsAddString([d isCDROM] ? "cdrom" : "disk", [[d path] UTF8String]); From 72c79d1a6da3212a6e067f8fc42e7440a702b61d Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Fri, 19 Sep 2014 07:19:42 +0200 Subject: [PATCH 10/11] Simplify some code, style changes --- .../src/MacOSX/Launcher/VMSettingsController.mm | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index d07aed79..3300ae26 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -71,7 +71,7 @@ void prefs_exit() { DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; - if([[col identifier] isEqualTo:@"isCDROMcol"]) { + if ([[col identifier] isEqualTo:@"isCDROMcol"]) { return [NSString stringWithFormat:@"%d", [d isCDROM]]; } @@ -260,12 +260,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([open filename])]; - if([isCDROMcheckbox state] == NSOnState) { - [d setIsCDROM:YES]; - } - else { - [d setIsCDROM:NO]; - } + [d setIsCDROM:([isCDROMcheckbox state] == NSOnState)]; [diskArray addObject: d]; [disks reloadData]; @@ -303,7 +298,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) 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) { - DiskType *d=[[DiskType alloc] init]; + DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([save filename])]; [d setIsCDROM:NO]; From 85c81e3848273c9f61ad8dc3f0aee1176f99a1ea Mon Sep 17 00:00:00 2001 From: Maximilian Irlinger Date: Fri, 19 Sep 2014 07:28:21 +0200 Subject: [PATCH 11/11] Remove all tab line indents from VMSettingsController.mm --- .../MacOSX/Launcher/VMSettingsController.mm | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm index 3300ae26..ca4272e9 100755 --- a/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm +++ b/SheepShaver/src/MacOSX/Launcher/VMSettingsController.mm @@ -70,16 +70,16 @@ void prefs_exit() - (id) tableView: (NSTableView *) table objectValueForTableColumn: (NSTableColumn *) col row: (int) row { DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; - + if ([[col identifier] isEqualTo:@"isCDROMcol"]) { return [NSString stringWithFormat:@"%d", [d isCDROM]]; } - + return [d path]; } -(void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row -{ +{ if ([[tableColumn identifier] isEqual:@"isCDROMcol"]) { DiskType *d = (DiskType*)[diskArray objectAtIndex:row]; [d setIsCDROM:![d isCDROM]]; @@ -104,7 +104,7 @@ static NSString *getStringFromPrefs(const char *key) DiskType *disk = [[DiskType alloc] init]; [disk setPath:[NSString stringWithUTF8String: dsk ]]; [disk setIsCDROM:NO]; - + [diskArray addObject:disk]; } @@ -114,13 +114,13 @@ static NSString *getStringFromPrefs(const char *key) DiskType *disk = [[DiskType alloc] init]; [disk setPath:[NSString stringWithUTF8String: dsk ]]; [disk setIsCDROM:YES]; - + [diskArray addObject:disk]; } - + [disks setDataSource: self]; [disks reloadData]; - + int bootdriver = PrefsFindInt32("bootdriver"), active = 0; switch (bootdriver) { case 0: active = 0; break; @@ -259,9 +259,9 @@ static NSString *makeRelativeIfNecessary(NSString *path) if (theReturnCode == NSOKButton) { DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([open filename])]; - + [d setIsCDROM:([isCDROMcheckbox state] == NSOnState)]; - + [diskArray addObject: d]; [disks reloadData]; } @@ -301,7 +301,7 @@ static NSString *makeRelativeIfNecessary(NSString *path) DiskType *d = [[DiskType alloc] init]; [d setPath:makeRelativeIfNecessary([save filename])]; [d setIsCDROM:NO]; - + [diskArray addObject: d]; [disks reloadData]; } @@ -397,14 +397,14 @@ static NSString *makeRelativeIfNecessary(NSString *path) // Remove all cdroms while (PrefsFindString("cdrom")) PrefsRemoveItem("cdrom"); - - + + // Write all disks for (int i = 0; i < [diskArray count]; i++) { DiskType *d = [diskArray objectAtIndex:i]; PrefsAddString([d isCDROM] ? "cdrom" : "disk", [[d path] UTF8String]); } - + PrefsReplaceInt32("bootdriver", ([bootFrom indexOfSelectedItem] == 1 ? CDROMRefNum : 0)); PrefsReplaceString("rom", [[romFile stringValue] UTF8String]); PrefsReplaceString("extfs", [[unixRoot stringValue] UTF8String]);