Thread: [Fuse-for-macosx-commits] SF.net SVN: fuse-for-macosx: [232] trunk/fuse/fusepb
Brought to you by:
fredm
From: <fr...@us...> - 2006-11-14 00:34:48
|
Revision: 232 http://svn.sourceforge.net/fuse-for-macosx/?rev=232&view=rev Author: fredm Date: 2006-11-13 16:34:48 -0800 (Mon, 13 Nov 2006) Log Message: ----------- Move version numbers to 20061114 Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2006-10-22 02:35:08 UTC (rev 231) +++ trunk/fuse/fusepb/Info-Fuse.plist 2006-11-14 00:34:48 UTC (rev 232) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20060718</string> + <string>20061114</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20060718</string> + <string>20061114</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 01:26:29
|
Revision: 243 http://svn.sourceforge.net/fuse-for-macosx/?rev=243&view=rev Author: fredm Date: 2006-12-16 17:26:29 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Move version strings to 20061129. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2006-12-17 01:13:03 UTC (rev 242) +++ trunk/fuse/fusepb/Info-Fuse.plist 2006-12-17 01:26:29 UTC (rev 243) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20061114</string> + <string>20061129</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20061114</string> + <string>20061129</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2006-12-17 03:13:30
|
Revision: 247 http://svn.sourceforge.net/fuse-for-macosx/?rev=247&view=rev Author: fredm Date: 2006-12-16 19:13:29 -0800 (Sat, 16 Dec 2006) Log Message: ----------- Don't ignore settings_cocoa.h and check it in for easier builds from scratch. Added Paths: ----------- trunk/fuse/fusepb/settings_cocoa.h Property Changed: ---------------- trunk/fuse/fusepb/ Property changes on: trunk/fuse/fusepb ___________________________________________________________________ Name: svn:ignore - *~.nib .DS_Store .gdb_history build settings.h settings.m settings_cocoa.h + *~.nib .DS_Store .gdb_history build settings.h settings.m Added: trunk/fuse/fusepb/settings_cocoa.h =================================================================== --- trunk/fuse/fusepb/settings_cocoa.h (rev 0) +++ trunk/fuse/fusepb/settings_cocoa.h 2006-12-17 03:13:29 UTC (rev 247) @@ -0,0 +1,45 @@ +/* settings_cocoa.h: Handling configuration settings + Copyright (c) Copyright (c) 2001-2003 Philip Kendall, Fredrick Meunier + + 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., 49 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Author contact information: + + E-mail: pak...@sr... + Postal address: 15 Crescent Road, Wokingham, Berks, RG40 2DB, England + +*/ + +#ifndef FUSE_SETTINGS_COCOA_H +#define FUSE_SETTINGS_COCOA_H + +#import <Foundation/NSArray.h> + +#include "settings.h" + +struct settings_cocoa { + + NSMutableArray *recent_snapshots; + +}; + +#define NUM_RECENT_ITEMS 10 + +NSMutableArray* +settings_set_rom_array( settings_info *settings ); +void +settings_get_rom_array( settings_info *settings, NSArray *machineroms ); + +#endif /* #ifndef FUSE_SETTINGS_COCOA_H */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-01-09 21:00:02
|
Revision: 287 http://svn.sourceforge.net/fuse-for-macosx/?rev=287&view=rev Author: fredm Date: 2007-01-09 13:00:00 -0800 (Tue, 09 Jan 2007) Log Message: ----------- Move version strings to 20070110. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2007-01-09 14:15:49 UTC (rev 286) +++ trunk/fuse/fusepb/Info-Fuse.plist 2007-01-09 21:00:00 UTC (rev 287) @@ -361,11 +361,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20061129</string> + <string>20070110</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>20061129</string> + <string>20070110</string> <key>NSMainNibFile</key> <string>SDLMain</string> <key>NSPrincipalClass</key> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-06-17 12:26:50
|
Revision: 386 http://svn.sourceforge.net/fuse-for-macosx/?rev=386&view=rev Author: fredm Date: 2007-06-17 05:26:52 -0700 (Sun, 17 Jun 2007) Log Message: ----------- Work around a problem that can cause an exception to be raised using the NSConnection from several threads, don't allow the joystick selection dialog to be posted from the emulator thread. Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2007-06-17 11:15:49 UTC (rev 385) +++ trunk/fuse/fusepb/controllers/FuseController.m 2007-06-17 12:26:52 UTC (rev 386) @@ -1235,7 +1235,7 @@ - (void)openFile:(const char *)filename { - if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } + if( !filename ) return; [[DisplayOpenGLView instance] openFile:filename]; } Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-17 11:15:49 UTC (rev 385) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-17 12:26:52 UTC (rev 386) @@ -218,6 +218,8 @@ kitConnection = [[NSConnection alloc] initWithReceivePort:port1 sendPort:port2]; [kitConnection setRootObject:self]; + [kitConnection enableMultipleThreads]; + /* Ports switched here */ portArray = [NSArray arrayWithObjects:port2, port1, nil]; @@ -571,7 +573,9 @@ -(void) openFile:(const char *)filename { - [proxy_emulator openFile:filename]; + /* openFile can end up calling a dialog for joystick selection, this must + run on the main thread */ + [real_emulator openFile:filename]; } -(void) tapeOpen:(const char *)filename This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-06-19 02:56:55
|
Revision: 390 http://svn.sourceforge.net/fuse-for-macosx/?rev=390&view=rev Author: fredm Date: 2007-06-18 19:56:57 -0700 (Mon, 18 Jun 2007) Log Message: ----------- Add direct tape recording menus. Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.h trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/models/Emulator.h trunk/fuse/fusepb/models/Emulator.m trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/FuseController.h =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.h 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/controllers/FuseController.h 2007-06-19 02:56:57 UTC (rev 390) @@ -52,6 +52,7 @@ IBOutlet NSMenuItem *zxatasp; IBOutlet NSMenuItem *zxcf; IBOutlet NSMenuItem *tapePlay; + IBOutlet NSMenuItem *tapeRecord; IBOutlet NSMenu *recentSnaps; IBOutlet NSWindow *window; @@ -114,6 +115,7 @@ - (IBAction)tape_play:(id)sender; - (IBAction)tape_rewind:(id)sender; - (IBAction)tape_write:(id)sender; +- (IBAction)tape_record:(id)sender; - (IBAction)showRollbackPane:(id)sender; - (IBAction)showTapeBrowserPane:(id)sender; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/controllers/FuseController.m 2007-06-19 02:56:57 UTC (rev 390) @@ -101,6 +101,7 @@ static int if1M8WpSet = 0; static int profileStart = 1; static int profileStop = 0; +static int playTape = 1; static NSMutableArray *allFileTypes = nil; static NSMutableArray *dckFileTypes = nil; @@ -751,6 +752,11 @@ ui_tape_write(); } +- (IBAction)tape_record:(id)sender +{ + [[DisplayOpenGLView instance] tapeToggleRecord]; +} + - (IBAction)cocoa_break:(id)sender { [[DisplayOpenGLView instance] cocoaBreak]; @@ -1138,10 +1144,17 @@ - (void)ui_menu_activate_machine_profiler:(NSNumber*)active { - profileStart = ![active boolValue]; - profileStop = [active boolValue]; + profileStart = ![active boolValue]; + profileStop = [active boolValue]; } +- (void)ui_menu_activate_tape_record:(NSNumber*)active +{ + playTape = ![active boolValue]; + [tapeRecord setTitle:[active boolValue] == NO ? @"Record" : + @"Stop Recording"]; +} + - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem { switch( [menuItem tag] ) { @@ -1228,6 +1241,13 @@ case 71: return profileStop == 0 ? NO : YES; break; + case 72: + case 73: + case 74: + case 75: + case 76: + return playTape == 0 ? NO : YES; + break; default: return YES; } @@ -1825,6 +1845,10 @@ method = @selector(ui_menu_activate_media_ide_divide_slave_eject:); break; + case UI_MENU_ITEM_TAPE_RECORDING: + method = @selector(ui_menu_activate_tape_record:); + break; + default: ui_error( UI_ERROR_ERROR, "Attempt to activate unknown menu item %d", item ); Modified: trunk/fuse/fusepb/models/Emulator.h =================================================================== --- trunk/fuse/fusepb/models/Emulator.h 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/models/Emulator.h 2007-06-19 02:56:57 UTC (rev 390) @@ -69,6 +69,7 @@ -(void) tapeOpen:(const char *)filename; -(void) tapeWrite:(const char *)filename; -(void) tapeTogglePlay; +-(void) tapeToggleRecord; -(void) tapeRewind; -(void) tapeClear; -(int) tapeClose; Modified: trunk/fuse/fusepb/models/Emulator.m =================================================================== --- trunk/fuse/fusepb/models/Emulator.m 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/models/Emulator.m 2007-06-19 02:56:57 UTC (rev 390) @@ -201,6 +201,12 @@ tape_toggle_play( 0 ); } +-(void) tapeToggleRecord +{ + if( tape_recording ) tape_record_stop(); + else tape_record_start(); +} + -(void) tapeRewind { tape_select_block( 0 ); Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2007-06-19 02:56:57 UTC (rev 390) @@ -62,6 +62,7 @@ "tape_clear" = id; "tape_open" = id; "tape_play" = id; + "tape_record" = id; "tape_rewind" = id; "tape_write" = id; }; @@ -82,6 +83,7 @@ savePanelAccessoryView = id; simple8Bit = NSMenuItem; tapePlay = NSMenuItem; + tapeRecord = NSMenuItem; window = NSWindow; zxatasp = NSMenuItem; zxcf = NSMenuItem; Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2007-06-19 02:56:57 UTC (rev 390) @@ -3,11 +3,11 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>998 637 356 240 0 0 1440 878 </string> + <string>615 505 356 240 0 0 1024 746 </string> <key>IBEditorPositions</key> <dict> <key>29</key> - <string>201 691 344 44 0 0 1440 878 </string> + <string>121 582 392 44 0 0 1024 746 </string> </dict> <key>IBFramework Version</key> <string>446.1</string> @@ -17,6 +17,6 @@ <integer>29</integer> </array> <key>IBSystem Version</key> - <string>8L2127</string> + <string>8P135</string> </dict> </plist> Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-06-19 02:56:57 UTC (rev 390) @@ -108,6 +108,7 @@ -(void) tapeOpen:(const char *)filename; -(void) tapeWrite:(const char *)filename; -(void) tapeTogglePlay; +-(void) tapeToggleRecord; -(void) tapeRewind; -(void) tapeClear; -(int) tapeClose; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-18 12:03:30 UTC (rev 389) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-19 02:56:57 UTC (rev 390) @@ -593,6 +593,11 @@ [proxy_emulator tapeTogglePlay]; } +-(void) tapeToggleRecord +{ + [proxy_emulator tapeToggleRecord]; +} + -(void) tapeRewind { [proxy_emulator tapeRewind]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-06-26 14:05:14
|
Revision: 401 http://svn.sourceforge.net/fuse-for-macosx/?rev=401&view=rev Author: fredm Date: 2007-06-26 07:05:14 -0700 (Tue, 26 Jun 2007) Log Message: ----------- Fix for problem with closing debugger window. Modified Paths: -------------- trunk/fuse/fusepb/controllers/DebuggerController.m trunk/fuse/fusepb/models/Emulator.h trunk/fuse/fusepb/models/Emulator.m trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/DebuggerController.m =================================================================== --- trunk/fuse/fusepb/controllers/DebuggerController.m 2007-06-26 12:07:47 UTC (rev 400) +++ trunk/fuse/fusepb/controllers/DebuggerController.m 2007-06-26 14:05:14 UTC (rev 401) @@ -26,6 +26,7 @@ #import "DebuggerController.h" #import "DisplayOpenGLView.h" +#import "Emulator.h" #include <config.h> @@ -577,7 +578,7 @@ int ui_debugger_activate( void ) { - [[DebuggerController singleton] debugger_activate:nil]; + [[Emulator instance] debuggerActivate]; return 0; } Modified: trunk/fuse/fusepb/models/Emulator.h =================================================================== --- trunk/fuse/fusepb/models/Emulator.h 2007-06-26 12:07:47 UTC (rev 400) +++ trunk/fuse/fusepb/models/Emulator.h 2007-06-26 14:05:14 UTC (rev 401) @@ -169,4 +169,6 @@ -(int) trdosDiskWrite:(trdos_drive_number)which; -(ui_confirm_joystick_t) confirmJoystick:(libspectrum_joystick)type inputs:(int)theInputs; +-(void) debuggerActivate; + @end Modified: trunk/fuse/fusepb/models/Emulator.m =================================================================== --- trunk/fuse/fusepb/models/Emulator.m 2007-06-26 12:07:47 UTC (rev 400) +++ trunk/fuse/fusepb/models/Emulator.m 2007-06-26 14:05:14 UTC (rev 401) @@ -724,4 +724,9 @@ return [proxy_view confirmJoystick:type inputs:theInputs]; } +-(void) debuggerActivate +{ + [proxy_view debuggerActivate]; +} + @end Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-06-26 12:07:47 UTC (rev 400) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-06-26 14:05:14 UTC (rev 401) @@ -196,6 +196,8 @@ -(int) trdosDiskWrite:(trdos_drive_number)which; -(ui_confirm_joystick_t) confirmJoystick:(libspectrum_joystick)type inputs:(int)theInputs; +-(void) debuggerActivate; + -(void) mouseMoved:(NSEvent *)theEvent; -(void) mouseDown:(NSEvent *)theEvent; -(void) mouseUp:(NSEvent *)theEvent; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-26 12:07:47 UTC (rev 400) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-06-26 14:05:14 UTC (rev 401) @@ -25,6 +25,7 @@ #import "DisplayOpenGLView.h" #import "Emulator.h" #import "FuseController.h" +#import "DebuggerController.h" #include <OpenGL/gl.h> #include <OpenGL/glext.h> @@ -989,6 +990,11 @@ return [[FuseController singleton] confirmJoystick:type inputs:theInputs]; } +-(void) debuggerActivate +{ + [[DebuggerController singleton] debugger_activate:nil]; +} + -(void) mouseMoved:(NSEvent *)theEvent { [proxy_emulator mouseMoved:theEvent]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-07-04 12:34:43
|
Revision: 421 http://svn.sourceforge.net/fuse-for-macosx/?rev=421&view=rev Author: fredm Date: 2007-07-04 05:33:56 -0700 (Wed, 04 Jul 2007) Log Message: ----------- Make sure we clean up from all changed media, not just tapes. Modified Paths: -------------- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/models/Emulator.h trunk/fuse/fusepb/models/Emulator.m Modified: trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-02 13:44:32 UTC (rev 420) +++ trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-04 12:33:56 UTC (rev 421) @@ -278,6 +278,8 @@ B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */; }; B6A6F11F0B3EA737000B88E9 /* cocoascreenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = B6A6F11D0B3EA737000B88E9 /* cocoascreenshot.h */; }; B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */; }; + B6AB34900C3BC91A0005935E /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = B6AB348E0C3BC91A0005935E /* menu.c */; }; + B6AB34910C3BC91A0005935E /* menu.h in Headers */ = {isa = PBXBuildFile; fileRef = B6AB348F0C3BC91A0005935E /* menu.h */; }; B6B076B20B59FE9A00D4F95C /* Emulator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6B076B00B59FE9A00D4F95C /* Emulator.h */; }; B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B076B10B59FE9A00D4F95C /* Emulator.m */; }; B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B99F890B5F798700EE408F /* cocoadisplay.m */; }; @@ -497,6 +499,8 @@ B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; + B6AB348E0C3BC91A0005935E /* menu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = "<group>"; }; + B6AB348F0C3BC91A0005935E /* menu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = "<group>"; }; B6AB429D0677466E007C50EF /* ula.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ula.c; path = ../ula.c; sourceTree = SOURCE_ROOT; }; B6AB429E0677466E007C50EF /* ula.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ula.h; path = ../ula.h; sourceTree = SOURCE_ROOT; }; B6AD8FEC06221FD500C70D75 /* machines.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = machines.h; path = ../machines/machines.h; sourceTree = SOURCE_ROOT; }; @@ -1171,6 +1175,8 @@ B6403FD70A7E4B1A00E00B11 /* loader.h */, B60B11F7059BC7E70048B64B /* machine.c */, F55985EA038922ED01A804BA /* machine.h */, + B6AB348E0C3BC91A0005935E /* menu.c */, + B6AB348F0C3BC91A0005935E /* menu.h */, B68CB2CC03DD923C00A804BA /* memory.c */, B6CA2A210C33F8490003CF90 /* module.c */, B6CA2A220C33F84A0003CF90 /* module.h */, @@ -1321,6 +1327,7 @@ B6CA2A240C33F84A0003CF90 /* module.h in Headers */, B6CA2A2F0C33F8C10003CF90 /* plusd.h in Headers */, B6CA2A310C33F8C10003CF90 /* wd1770.h in Headers */, + B6AB34910C3BC91A0005935E /* menu.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1567,6 +1574,7 @@ B6CA2A230C33F84A0003CF90 /* module.c in Sources */, B6CA2A2E0C33F8C10003CF90 /* plusd.c in Sources */, B6CA2A300C33F8C10003CF90 /* wd1770.c in Sources */, + B6AB34900C3BC91A0005935E /* menu.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2007-07-02 13:44:32 UTC (rev 420) +++ trunk/fuse/fusepb/controllers/FuseController.m 2007-07-04 12:33:56 UTC (rev 421) @@ -1757,7 +1757,7 @@ - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { if( cocoaui_confirm( "Exit Fuse?" ) ) { - int error = [[DisplayOpenGLView instance] tapeClose]; + int error = [[DisplayOpenGLView instance] checkMediaChanged]; if( error ) return NSTerminateCancel; return NSTerminateNow; Modified: trunk/fuse/fusepb/models/Emulator.h =================================================================== --- trunk/fuse/fusepb/models/Emulator.h 2007-07-02 13:44:32 UTC (rev 420) +++ trunk/fuse/fusepb/models/Emulator.h 2007-07-04 12:33:56 UTC (rev 421) @@ -86,6 +86,7 @@ -(void) reset; -(void) hard_reset; -(int) nmi; +-(int) checkMediaChanged; -(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which; -(void) specplus3DiskEject:(specplus3_drive_number)drive saveFirst:(int)write; Modified: trunk/fuse/fusepb/models/Emulator.m =================================================================== --- trunk/fuse/fusepb/models/Emulator.m 2007-07-02 13:44:32 UTC (rev 420) +++ trunk/fuse/fusepb/models/Emulator.m 2007-07-04 12:33:56 UTC (rev 421) @@ -35,6 +35,7 @@ #include "if2.h" #include "keyboard.h" #include "machine.h" +#include "menu.h" #include "profile.h" #include "psg.h" #include "rzx.h" @@ -280,6 +281,11 @@ return event_add( 0, EVENT_TYPE_NMI ); } +-(int) checkMediaChanged +{ + return menu_check_media_changed(); +} + -(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which { specplus3_disk_insert_default_autoload( which, filename ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-07-13 13:51:01
|
Revision: 430 http://svn.sourceforge.net/fuse-for-macosx/?rev=430&view=rev Author: fredm Date: 2007-07-13 06:49:45 -0700 (Fri, 13 Jul 2007) Log Message: ----------- Factor out some icon texture loading bits. Modified Paths: -------------- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Added Paths: ----------- trunk/fuse/fusepb/views/Texture.h trunk/fuse/fusepb/views/Texture.m Modified: trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-05 13:58:08 UTC (rev 429) +++ trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-13 13:49:45 UTC (rev 430) @@ -292,6 +292,8 @@ B6CA2A2F0C33F8C10003CF90 /* plusd.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA2A2B0C33F8C10003CF90 /* plusd.h */; }; B6CA2A300C33F8C10003CF90 /* wd1770.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CA2A2C0C33F8C10003CF90 /* wd1770.c */; }; B6CA2A310C33F8C10003CF90 /* wd1770.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA2A2D0C33F8C10003CF90 /* wd1770.h */; }; + B6CADD570C47AD90004BA954 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CADD550C47AD90004BA954 /* Texture.h */; }; + B6CADD580C47AD90004BA954 /* Texture.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CADD560C47AD90004BA954 /* Texture.m */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; @@ -540,6 +542,8 @@ B6CA2A2D0C33F8C10003CF90 /* wd1770.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = wd1770.h; sourceTree = "<group>"; }; B6CA304C049CEC410037E9F2 /* psg.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = psg.c; path = ../psg.c; sourceTree = SOURCE_ROOT; }; B6CA304D049CEC410037E9F2 /* psg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = psg.h; path = ../psg.h; sourceTree = SOURCE_ROOT; }; + B6CADD550C47AD90004BA954 /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; }; + B6CADD560C47AD90004BA954 /* Texture.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Texture.m; sourceTree = "<group>"; }; B6CC82FF0800E408006EFFB9 /* CAMachines.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAMachines.h; path = content_arrays/CAMachines.h; sourceTree = SOURCE_ROOT; }; B6CC83000800E408006EFFB9 /* CAMachines.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = CAMachines.m; path = content_arrays/CAMachines.m; sourceTree = SOURCE_ROOT; }; B6CD0B9E06069F4A00847338 /* fuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fuse.cpp; path = ../fuse.cpp; sourceTree = SOURCE_ROOT; }; @@ -1007,6 +1011,8 @@ B6CE7FCF0B28FBEC00EB65B3 /* Views */ = { isa = PBXGroup; children = ( + B6CADD550C47AD90004BA954 /* Texture.h */, + B6CADD560C47AD90004BA954 /* Texture.m */, B6CE7FCB0B28FBD600EB65B3 /* DisplayOpenGLView.h */, B6CE7FCC0B28FBD600EB65B3 /* DisplayOpenGLView.m */, ); @@ -1328,6 +1334,7 @@ B6CA2A2F0C33F8C10003CF90 /* plusd.h in Headers */, B6CA2A310C33F8C10003CF90 /* wd1770.h in Headers */, B6AB34910C3BC91A0005935E /* menu.h in Headers */, + B6CADD570C47AD90004BA954 /* Texture.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1575,6 +1582,7 @@ B6CA2A2E0C33F8C10003CF90 /* plusd.c in Sources */, B6CA2A300C33F8C10003CF90 /* wd1770.c in Sources */, B6AB34900C3BC91A0005935E /* menu.c in Sources */, + B6CADD580C47AD90004BA954 /* Texture.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-07-05 13:58:08 UTC (rev 429) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-07-13 13:49:45 UTC (rev 430) @@ -40,6 +40,7 @@ #define MAX_SCREEN_BUFFERS 2 @class Emulator; +@class Texture; @interface DisplayOpenGLView : NSOpenGLView { @@ -48,18 +49,12 @@ GLuint screenTexId[MAX_SCREEN_BUFFERS]; int currentScreenTex; - Cocoa_Texture redCassetteTex; - GLuint redCassette; - Cocoa_Texture greenCassetteTex; - GLuint greenCassette; - Cocoa_Texture redMdrTex; - GLuint redMdr; - Cocoa_Texture greenMdrTex; - GLuint greenMdr; - Cocoa_Texture redDiskTex; - GLuint redDisk; - Cocoa_Texture greenDiskTex; - GLuint greenDisk; + Texture *redCassette; + Texture *greenCassette; + Texture *redMdr; + Texture *greenMdr; + Texture *redDisk; + Texture *greenDisk; BOOL screenTexInitialised; @@ -91,23 +86,17 @@ -(void) createTexture:(Cocoa_Texture*)newScreen; -(void) destroyTexture; --(void) uploadIconTexture:(GLuint*)textureName - width:(GLsizei)width - height:(GLsizei)height - pixels:(unsigned char *)pixels; --(void) blitIcon:(Cocoa_Texture*)texture name:(GLuint)textureName; +-(void) blitIcon:(Texture*)iconTexture; -(void) setServer:(id)anObject; -(id) initWithFrame:(NSRect)frameRect; -(void) awakeFromNib; -(void) loadPicture:(NSString *) name - greenTex:(Cocoa_Texture*)greenTexture - greenIcon:(GLuint*)greenTextureName - redTex:(Cocoa_Texture*)redTexture - redIcon:(GLuint*)redTextureName - xOrigin:(int)x - yOrigin:(int)y; + greenTex:(Texture*) greenTexture + redTex:(Texture*) redTexture + xOrigin:(int) x + yOrigin:(int) y; -(void) setNeedsDisplayYes; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-07-05 13:58:08 UTC (rev 429) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-07-13 13:49:45 UTC (rev 430) @@ -26,6 +26,7 @@ #import "Emulator.h" #import "FuseController.h" #import "DebuggerController.h" +#import "Texture.h" #include <OpenGL/gl.h> #include <OpenGL/glext.h> @@ -36,54 +37,6 @@ #include "settings.h" #include "ui/cocoa/dirty.h" -unsigned char * -NSBitmapImageRepToRGBAPixelArray(NSBitmapImageRep * bitmap, int red) -{ - unsigned char * pixels; - NSBitmapImageRep * bitmap2; - NSGraphicsContext * context; -#define BYTES_PER_PIXEL 4 - int targetWidth = [bitmap pixelsWide]; - int targetHeight = [bitmap pixelsHigh]; - - pixels = (unsigned char *) malloc(BYTES_PER_PIXEL * targetWidth * targetHeight); - bitmap2 = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: &pixels - pixelsWide: targetWidth - pixelsHigh: targetHeight - bitsPerSample: 8 - samplesPerPixel: 4 - hasAlpha: YES - isPlanar: NO - colorSpaceName: NSDeviceRGBColorSpace - bitmapFormat: NSAlphaNonpremultipliedBitmapFormat - bytesPerRow: (targetWidth * BYTES_PER_PIXEL) - bitsPerPixel: (BYTES_PER_PIXEL * 8)]; - - context = [NSGraphicsContext graphicsContextWithBitmapImageRep: bitmap2]; - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext: context]; - [bitmap drawInRect: NSMakeRect(0, 0, targetWidth, targetHeight)]; - [NSGraphicsContext restoreGraphicsState]; - - int i; - for( i = 0; i < targetWidth * targetHeight; i++ ) { -#ifdef WORDS_BIGENDIAN - pixels[i*4+3] = red ? pixels[i*4+0] : 0; // r on ppc - pixels[i*4+2] = red ? 0 : pixels[i*4+1]; // g on ppc - pixels[i*4+0] = 0; - pixels[i*4+1] = 0; -#else /* #ifdef WORDS_BIGENDIAN */ - pixels[i*4+0] = red ? pixels[i*4+0] : 0; // r on i386 - pixels[i*4+1] = red ? 0 : pixels[i*4+1]; // g on i386 - pixels[i*4+2] = 0; -#endif /* #ifdef WORDS_BIGENDIAN */ - } - - [bitmap2 release]; - - return pixels; -} - const void * get_byte_pointer(void *bitmap) { @@ -222,22 +175,22 @@ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glColor4f(0.0f, 0.0f, 0.0f, 0.0f); - [self loadPicture: @"cassette" greenTex:&greenCassetteTex - greenIcon:&greenCassette - redTex:&redCassetteTex - redIcon:&redCassette + greenCassette = [Texture alloc]; + redCassette = [Texture alloc]; + [self loadPicture: @"cassette" greenTex:greenCassette + redTex:redCassette xOrigin:285 yOrigin:220]; - [self loadPicture: @"microdrive" greenTex:&greenMdrTex - greenIcon:&greenMdr - redTex:&redMdrTex - redIcon:&redMdr + greenMdr = [Texture alloc]; + redMdr = [Texture alloc]; + [self loadPicture: @"microdrive" greenTex:greenMdr + redTex:redMdr xOrigin:264 yOrigin:218]; - [self loadPicture: @"plus3disk" greenTex:&greenDiskTex - greenIcon:&greenDisk - redTex:&redDiskTex - redIcon:&redDisk + greenDisk = [Texture alloc]; + redDisk = [Texture alloc]; + [self loadPicture: @"plus3disk" greenTex:greenDisk + redTex:redDisk xOrigin:243 yOrigin:218]; screenTexInitialised = NO; @@ -310,18 +263,18 @@ [real_emulator release]; real_emulator = nil; - glDeleteTextures(1, &redCassette); - redCassette = 0; - glDeleteTextures(1, &greenCassette); - greenCassette = 0; - glDeleteTextures(1, &redMdr); - redMdr = 0; - glDeleteTextures(1, &greenMdr); - greenMdr = 0; - glDeleteTextures(1, &redDisk); - redDisk = 0; - glDeleteTextures(1, &greenDisk); - greenDisk = 0; + [redCassette release]; + redCassette = nil; + [greenCassette release]; + greenCassette = nil; + [redMdr release]; + redMdr = nil; + [greenMdr release]; + greenMdr = nil; + [redDisk release]; + redDisk = nil; + [greenDisk release]; + greenDisk = nil; [buffered_screen_lock release]; @@ -329,12 +282,10 @@ } -(void) loadPicture: (NSString *) name - greenTex:(Cocoa_Texture*)greenTexture - greenIcon:(GLuint*)greenTextureName - redTex:(Cocoa_Texture*)redTexture - redIcon:(GLuint*)redTextureName - xOrigin:(int)x - yOrigin:(int)y + greenTex:(Texture*) greenTexture + redTex:(Texture*) redTexture + xOrigin:(int) x + yOrigin:(int) y { NSBitmapImageRep *bitmap; NSImage *image = [NSImage imageNamed: name]; @@ -344,28 +295,12 @@ if (bitmap == nil) NSLog(@"in loadPicture: NSBitmapImageRep not loaded"); /* Colour first image green */ - greenTexture->pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, 0 ); - greenTexture->image_width = [bitmap pixelsWide]; - greenTexture->image_height = [bitmap pixelsHigh]; - greenTexture->image_xoffset = x; - greenTexture->image_yoffset = y; + greenTexture = [greenTexture initWithBitmap:bitmap withXOrigin:x + withYOrigin:y colourRed:0]; - [self uploadIconTexture:greenTextureName - width:greenTexture->image_width - height:greenTexture->image_height - pixels:greenTexture->pixels]; - /* Colour second image red */ - redTexture->pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, 1 ); - redTexture->image_width = [bitmap pixelsWide]; - redTexture->image_height = [bitmap pixelsHigh]; - redTexture->image_xoffset = x; - redTexture->image_yoffset = y; - - [self uploadIconTexture:redTextureName - width:redTexture->image_width - height:redTexture->image_height - pixels:redTexture->pixels]; + redTexture = [redTexture initWithBitmap:bitmap withXOrigin:x + withYOrigin:y colourRed:1]; } -(void) setNeedsDisplayYes @@ -373,8 +308,11 @@ [super setNeedsDisplay:YES]; } --(void) blitIcon:(Cocoa_Texture*)texture name:(GLuint)textureName +-(void) blitIcon:(Texture*)iconTexture { + Cocoa_Texture* texture = [iconTexture getTexture]; + GLuint textureName = [iconTexture getTextureId]; + /* Map pixel icon position to appropriate position on -1.0 to 1.0 canvas */ float target_x1 = texture->image_xoffset * 2.0f / (float)DISPLAY_ASPECT_WIDTH - 1.0f; @@ -409,10 +347,10 @@ { switch( disk_state ) { case UI_STATUSBAR_STATE_ACTIVE: - [self blitIcon:&greenDiskTex name:greenDisk]; + [self blitIcon:greenDisk]; break; case UI_STATUSBAR_STATE_INACTIVE: - [self blitIcon:&redDiskTex name:redDisk]; + [self blitIcon:redDisk]; break; case UI_STATUSBAR_STATE_NOT_AVAILABLE: break; @@ -420,10 +358,10 @@ switch( mdr_state ) { case UI_STATUSBAR_STATE_ACTIVE: - [self blitIcon:&greenMdrTex name:greenMdr]; + [self blitIcon:greenMdr]; break; case UI_STATUSBAR_STATE_INACTIVE: - [self blitIcon:&redMdrTex name:redMdr]; + [self blitIcon:redMdr]; break; case UI_STATUSBAR_STATE_NOT_AVAILABLE: break; @@ -431,11 +369,11 @@ switch( tape_state ) { case UI_STATUSBAR_STATE_ACTIVE: - [self blitIcon:&greenCassetteTex name:greenCassette]; + [self blitIcon:greenCassette]; break; case UI_STATUSBAR_STATE_INACTIVE: case UI_STATUSBAR_STATE_NOT_AVAILABLE: - [self blitIcon:&redCassetteTex name:redCassette]; + [self blitIcon:redCassette]; break; } } @@ -651,28 +589,6 @@ [view_lock unlock]; } --(void) uploadIconTexture:(GLuint*)textureName - width:(GLsizei)width - height:(GLsizei)height - pixels:(unsigned char *)pixels -{ - glGenTextures(1, textureName); - - /* Set memory alignment parameters for unpacking the bitmap. */ - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - - /* Specify the texture's properties. */ - glBindTexture( GL_TEXTURE_RECTANGLE_EXT, *textureName ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - - /* Upload the texture bitmap. */ - glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, width, height, 0, GL_RGBA, - GL_UNSIGNED_INT_8_8_8_8_REV, pixels ); -} - -(void) openFile:(const char *)filename { [proxy_emulator openFile:filename]; Added: trunk/fuse/fusepb/views/Texture.h =================================================================== --- trunk/fuse/fusepb/views/Texture.h (rev 0) +++ trunk/fuse/fusepb/views/Texture.h 2007-07-13 13:49:45 UTC (rev 430) @@ -0,0 +1,47 @@ +/* DisplayOpenGLView.h: Implementation for the DisplayOpenGLView class + Copyright (c) 2006-2007 Fredrick Meunier + + 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 + + Author contact information: + + E-mail: fr...@sp... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import <Cocoa/Cocoa.h> + +#include <OpenGL/gl.h> +#include <OpenGL/glext.h> +#include <OpenGL/glu.h> + +#include "ui/cocoa/cocoadisplay.h" + +@interface Texture : NSObject +{ + Cocoa_Texture texture; + GLuint textureId; +} +-(id) initWithBitmap:(NSBitmapImageRep*)bitmap withXOrigin:(int)x + withYOrigin:(int)y colourRed:(int)red; +-(void) dealloc; + +-(Cocoa_Texture*) getTexture; +-(GLuint) getTextureId; + +-(void) uploadIconTexture; + +@end Added: trunk/fuse/fusepb/views/Texture.m =================================================================== --- trunk/fuse/fusepb/views/Texture.m (rev 0) +++ trunk/fuse/fusepb/views/Texture.m 2007-07-13 13:49:45 UTC (rev 430) @@ -0,0 +1,130 @@ +/* DisplayOpenGLView.m: Implementation for the DisplayOpenGLView class + Copyright (c) 2006-2007 Fredrick Meunier + + 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 + + Author contact information: + + E-mail: fr...@sp... + Postal address: 3/66 Roslyn Gardens, Ruscutters Bay, NSW 2011, Australia + +*/ + +#import "Texture.h" + +unsigned char * +NSBitmapImageRepToRGBAPixelArray(NSBitmapImageRep * bitmap, int red) +{ + unsigned char * pixels; + NSBitmapImageRep * bitmap2; + NSGraphicsContext * context; +#define BYTES_PER_PIXEL 4 + int targetWidth = [bitmap pixelsWide]; + int targetHeight = [bitmap pixelsHigh]; + + pixels = (unsigned char *) malloc(BYTES_PER_PIXEL * targetWidth * targetHeight); + bitmap2 = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: &pixels + pixelsWide: targetWidth + pixelsHigh: targetHeight + bitsPerSample: 8 + samplesPerPixel: 4 + hasAlpha: YES + isPlanar: NO + colorSpaceName: NSDeviceRGBColorSpace + bitmapFormat: NSAlphaNonpremultipliedBitmapFormat + bytesPerRow: (targetWidth * BYTES_PER_PIXEL) + bitsPerPixel: (BYTES_PER_PIXEL * 8)]; + + context = [NSGraphicsContext graphicsContextWithBitmapImageRep: bitmap2]; + [NSGraphicsContext saveGraphicsState]; + [NSGraphicsContext setCurrentContext: context]; + [bitmap drawInRect: NSMakeRect(0, 0, targetWidth, targetHeight)]; + [NSGraphicsContext restoreGraphicsState]; + + int i; + for( i = 0; i < targetWidth * targetHeight; i++ ) { +#ifdef WORDS_BIGENDIAN + pixels[i*4+3] = red ? pixels[i*4+0] : 0; // r on ppc + pixels[i*4+2] = red ? 0 : pixels[i*4+1]; // g on ppc + pixels[i*4+0] = 0; + pixels[i*4+1] = 0; +#else /* #ifdef WORDS_BIGENDIAN */ + pixels[i*4+0] = red ? pixels[i*4+0] : 0; // r on i386 + pixels[i*4+1] = red ? 0 : pixels[i*4+1]; // g on i386 + pixels[i*4+2] = 0; +#endif /* #ifdef WORDS_BIGENDIAN */ + } + + [bitmap2 release]; + + return pixels; +} + +@implementation Texture + +-(id) initWithBitmap:(NSBitmapImageRep*)bitmap withXOrigin:(int)x + withYOrigin:(int)y colourRed:(int)red +{ + if( ( self = [super init] ) ) { + texture.pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, red ); + texture.image_width = [bitmap pixelsWide]; + texture.image_height = [bitmap pixelsHigh]; + texture.image_xoffset = x; + texture.image_yoffset = y; + + [self uploadIconTexture]; + } + + return self; +} + +-(void) dealloc +{ + glDeleteTextures(1, &textureId); + free( texture.pixels ); + [super dealloc]; +} + +-(Cocoa_Texture*) getTexture +{ + return &texture; +} + +-(GLuint) getTextureId +{ + return textureId; +} + +-(void) uploadIconTexture; +{ + glGenTextures(1, &textureId); + + /* Set memory alignment parameters for unpacking the bitmap. */ + glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); + + /* Specify the texture's properties. */ + glBindTexture( GL_TEXTURE_RECTANGLE_EXT, textureId ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); + glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + + /* Upload the texture bitmap. */ + glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, texture.image_width, + texture.image_height, 0, GL_RGBA, + GL_UNSIGNED_INT_8_8_8_8_REV, texture.pixels ); +} + +@end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2007-07-16 12:29:17
|
Revision: 431 http://svn.sourceforge.net/fuse-for-macosx/?rev=431&view=rev Author: fredm Date: 2007-07-16 05:29:05 -0700 (Mon, 16 Jul 2007) Log Message: ----------- Switch to using ImageIO for texture loading. Modified Paths: -------------- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj trunk/fuse/fusepb/views/DisplayOpenGLView.m trunk/fuse/fusepb/views/Texture.h trunk/fuse/fusepb/views/Texture.m Added Paths: ----------- trunk/fuse/fusepb/resources/cassette_green.png trunk/fuse/fusepb/resources/cassette_red.png trunk/fuse/fusepb/resources/microdrive_green.png trunk/fuse/fusepb/resources/microdrive_red.png trunk/fuse/fusepb/resources/plus3disk_green.png trunk/fuse/fusepb/resources/plus3disk_red.png Modified: trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-13 13:49:45 UTC (rev 430) +++ trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-07-16 12:29:05 UTC (rev 431) @@ -149,9 +149,6 @@ B61F463109121DF100C8096C /* tzx.icns in Resources */ = {isa = PBXBuildFile; fileRef = B643BB980403A13600A864FD /* tzx.icns */; }; B61F463209121DF100C8096C /* z80.icns in Resources */ = {isa = PBXBuildFile; fileRef = B6676DB0040C348F00B2BFEF /* z80.icns */; }; B61F463309121DF100C8096C /* blank.icns in Resources */ = {isa = PBXBuildFile; fileRef = B6AF242A04156EE700F48F48 /* blank.icns */; }; - B61F463409121DF100C8096C /* cassette.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B6FD5BE505A4EDBF00A6C4FC /* cassette.bmp */; }; - B61F463509121DF100C8096C /* microdrive.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B63B80B7076DB4BC00002519 /* microdrive.bmp */; }; - B61F463609121DF100C8096C /* plus3disk.bmp in Resources */ = {isa = PBXBuildFile; fileRef = B6FD5BEA05A4EDD700A6C4FC /* plus3disk.bmp */; }; B61F463709121DF100C8096C /* SavePanelAccessoryView.nib in Resources */ = {isa = PBXBuildFile; fileRef = B619FC2E090D9BC200344F94 /* SavePanelAccessoryView.nib */; }; B61F463909121DF100C8096C /* z80_ops.c in Sources */ = {isa = PBXBuildFile; fileRef = F55985B20389224001A804BA /* z80_ops.c */; }; B61F463A09121DF100C8096C /* z80.c in Sources */ = {isa = PBXBuildFile; fileRef = F55985B30389224001A804BA /* z80.c */; }; @@ -294,6 +291,12 @@ B6CA2A310C33F8C10003CF90 /* wd1770.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CA2A2D0C33F8C10003CF90 /* wd1770.h */; }; B6CADD570C47AD90004BA954 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CADD550C47AD90004BA954 /* Texture.h */; }; B6CADD580C47AD90004BA954 /* Texture.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CADD560C47AD90004BA954 /* Texture.m */; }; + B6CADD690C48E188004BA954 /* cassette_green.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD670C48E188004BA954 /* cassette_green.png */; }; + B6CADD6A0C48E188004BA954 /* cassette_red.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD680C48E188004BA954 /* cassette_red.png */; }; + B6CADD720C48E1A3004BA954 /* microdrive_green.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD6E0C48E1A3004BA954 /* microdrive_green.png */; }; + B6CADD730C48E1A3004BA954 /* microdrive_red.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD6F0C48E1A3004BA954 /* microdrive_red.png */; }; + B6CADD740C48E1A3004BA954 /* plus3disk_green.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD700C48E1A3004BA954 /* plus3disk_green.png */; }; + B6CADD750C48E1A3004BA954 /* plus3disk_red.png in Resources */ = {isa = PBXBuildFile; fileRef = B6CADD710C48E1A3004BA954 /* plus3disk_red.png */; }; B6CE7F410B2830A300EB65B3 /* cocoadisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3B0B2830A300EB65B3 /* cocoadisplay.h */; }; B6CE7F420B2830A300EB65B3 /* cocoajoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CE7F3C0B2830A300EB65B3 /* cocoajoystick.c */; }; B6CE7F440B2830A300EB65B3 /* cocoaui.h in Headers */ = {isa = PBXBuildFile; fileRef = B6CE7F3E0B2830A300EB65B3 /* cocoaui.h */; }; @@ -402,7 +405,6 @@ B639B7670A6BAFCF00927E24 /* csw.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = csw.icns; sourceTree = "<group>"; }; B639B7D00A6BB45600927E24 /* raw.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = raw.icns; sourceTree = "<group>"; }; B63ABD8D042F175200A864FD /* scaler.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = scaler.c; path = ../ui/scaler/scaler.c; sourceTree = SOURCE_ROOT; }; - B63B80B7076DB4BC00002519 /* microdrive.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = microdrive.bmp; path = ../lib/microdrive.bmp; sourceTree = SOURCE_ROOT; }; B63F9949077182B4004D6DFA /* RollbackController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = RollbackController.h; path = controllers/RollbackController.h; sourceTree = SOURCE_ROOT; }; B63F994A077182B4004D6DFA /* RollbackController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = RollbackController.m; path = controllers/RollbackController.m; sourceTree = SOURCE_ROOT; }; B6403FD60A7E4B1A00E00B11 /* loader.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = loader.c; sourceTree = "<group>"; }; @@ -544,6 +546,12 @@ B6CA304D049CEC410037E9F2 /* psg.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = psg.h; path = ../psg.h; sourceTree = SOURCE_ROOT; }; B6CADD550C47AD90004BA954 /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; }; B6CADD560C47AD90004BA954 /* Texture.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Texture.m; sourceTree = "<group>"; }; + B6CADD670C48E188004BA954 /* cassette_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cassette_green.png; sourceTree = "<group>"; }; + B6CADD680C48E188004BA954 /* cassette_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = cassette_red.png; sourceTree = "<group>"; }; + B6CADD6E0C48E1A3004BA954 /* microdrive_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = microdrive_green.png; sourceTree = "<group>"; }; + B6CADD6F0C48E1A3004BA954 /* microdrive_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = microdrive_red.png; sourceTree = "<group>"; }; + B6CADD700C48E1A3004BA954 /* plus3disk_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus3disk_green.png; sourceTree = "<group>"; }; + B6CADD710C48E1A3004BA954 /* plus3disk_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus3disk_red.png; sourceTree = "<group>"; }; B6CC82FF0800E408006EFFB9 /* CAMachines.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CAMachines.h; path = content_arrays/CAMachines.h; sourceTree = SOURCE_ROOT; }; B6CC83000800E408006EFFB9 /* CAMachines.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = CAMachines.m; path = content_arrays/CAMachines.m; sourceTree = SOURCE_ROOT; }; B6CD0B9E06069F4A00847338 /* fuse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fuse.cpp; path = ../fuse.cpp; sourceTree = SOURCE_ROOT; }; @@ -588,8 +596,6 @@ B6F74F9D04B85B660059D51C /* SaveBinaryController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SaveBinaryController.m; path = controllers/SaveBinaryController.m; sourceTree = "<group>"; }; B6F905ED05CDA24300C2F10D /* Fuse Help */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "Fuse Help"; path = "resources/Fuse Help"; sourceTree = SOURCE_ROOT; }; B6FA759C0C1D7507007F5A10 /* audiofile.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = audiofile.framework; path = ../../audiofile/build/Deployment/audiofile.framework; sourceTree = "<group>"; }; - B6FD5BE505A4EDBF00A6C4FC /* cassette.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = cassette.bmp; path = ../lib/cassette.bmp; sourceTree = SOURCE_ROOT; }; - B6FD5BEA05A4EDD700A6C4FC /* plus3disk.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = plus3disk.bmp; path = ../lib/plus3disk.bmp; sourceTree = SOURCE_ROOT; }; B6FD5C7A05A4F5B600A6C4FC /* utils.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = utils.h; path = ../utils.h; sourceTree = SOURCE_ROOT; }; B6FEA44B0444C2CC0013916D /* tc2068-0.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "tc2068-0.rom"; path = "../roms/tc2068-0.rom"; sourceTree = SOURCE_ROOT; }; B6FEA44C0444C2CC0013916D /* tc2068-1.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = "tc2068-1.rom"; path = "../roms/tc2068-1.rom"; sourceTree = SOURCE_ROOT; }; @@ -850,16 +856,19 @@ B643BB8C0403A0D300A864FD /* resources */ = { isa = PBXGroup; children = ( - F5F4333103903ED801E7A043 /* Fuse.icns */, B6AF242A04156EE700F48F48 /* blank.icns */, - B6FD5BE505A4EDBF00A6C4FC /* cassette.bmp */, + B6CADD670C48E188004BA954 /* cassette_green.png */, + B6CADD680C48E188004BA954 /* cassette_red.png */, B639B7670A6BAFCF00927E24 /* csw.icns */, B6F0480E0952B597006D8005 /* dck.icns */, B643BB8D0403A0FD00A864FD /* dsk.icns */, + F5F4333103903ED801E7A043 /* Fuse.icns */, B650986A09366C8F003AF1BF /* hdf.icns */, B6F048100952B5AD006D8005 /* mdr.icns */, - B63B80B7076DB4BC00002519 /* microdrive.bmp */, - B6FD5BEA05A4EDD700A6C4FC /* plus3disk.bmp */, + B6CADD6E0C48E1A3004BA954 /* microdrive_green.png */, + B6CADD6F0C48E1A3004BA954 /* microdrive_red.png */, + B6CADD700C48E1A3004BA954 /* plus3disk_green.png */, + B6CADD710C48E1A3004BA954 /* plus3disk_red.png */, B639B7D00A6BB45600927E24 /* raw.icns */, B650986B09366C8F003AF1BF /* rom.icns */, B650986C09366C8F003AF1BF /* rzx.icns */, @@ -1419,6 +1428,7 @@ B61F461E09121DF100C8096C /* plus3e-1.rom in Resources */, B61F461F09121DF100C8096C /* plus3e-2.rom in Resources */, B61F462009121DF100C8096C /* plus3e-3.rom in Resources */, + B6CA2A260C33F8800003CF90 /* plusd.rom in Resources */, B61F462109121DF100C8096C /* se-0.rom in Resources */, B61F462209121DF100C8096C /* se-1.rom in Resources */, B61F462309121DF100C8096C /* tc2048.rom in Resources */, @@ -1429,14 +1439,11 @@ B61F462A09121DF100C8096C /* ts2068.png in Resources */, B61F462B09121DF100C8096C /* Fuse.icns in Resources */, B61F463309121DF100C8096C /* blank.icns in Resources */, - B61F463409121DF100C8096C /* cassette.bmp in Resources */, B639B7680A6BAFCF00927E24 /* csw.icns in Resources */, B6F0480F0952B597006D8005 /* dck.icns in Resources */, B61F462C09121DF100C8096C /* dsk.icns in Resources */, B650986D09366C8F003AF1BF /* hdf.icns in Resources */, B6F048110952B5AE006D8005 /* mdr.icns in Resources */, - B61F463509121DF100C8096C /* microdrive.bmp in Resources */, - B61F463609121DF100C8096C /* plus3disk.bmp in Resources */, B650986E09366C8F003AF1BF /* rom.icns in Resources */, B650986F09366C8F003AF1BF /* rzx.icns in Resources */, B6F048130952B5C1006D8005 /* scl.icns in Resources */, @@ -1452,7 +1459,12 @@ B61F463209121DF100C8096C /* z80.icns in Resources */, B6F0481B0952B5FD006D8005 /* zxs.icns in Resources */, B639B7D10A6BB45600927E24 /* raw.icns in Resources */, - B6CA2A260C33F8800003CF90 /* plusd.rom in Resources */, + B6CADD690C48E188004BA954 /* cassette_green.png in Resources */, + B6CADD6A0C48E188004BA954 /* cassette_red.png in Resources */, + B6CADD720C48E1A3004BA954 /* microdrive_green.png in Resources */, + B6CADD730C48E1A3004BA954 /* microdrive_red.png in Resources */, + B6CADD740C48E1A3004BA954 /* plus3disk_green.png in Resources */, + B6CADD750C48E1A3004BA954 /* plus3disk_red.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; Added: trunk/fuse/fusepb/resources/cassette_green.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/cassette_green.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/fuse/fusepb/resources/cassette_red.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/cassette_red.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/fuse/fusepb/resources/microdrive_green.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/microdrive_green.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/fuse/fusepb/resources/microdrive_red.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/microdrive_red.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/fuse/fusepb/resources/plus3disk_green.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/plus3disk_green.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/fuse/fusepb/resources/plus3disk_red.png =================================================================== (Binary files differ) Property changes on: trunk/fuse/fusepb/resources/plus3disk_red.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-07-13 13:49:45 UTC (rev 430) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-07-16 12:29:05 UTC (rev 431) @@ -287,20 +287,21 @@ xOrigin:(int) x yOrigin:(int) y { + NSString *filename; NSBitmapImageRep *bitmap; - NSImage *image = [NSImage imageNamed: name]; + NSImage *image; - /* create a bitmap with the correct image data */ - bitmap = [[NSBitmapImageRep alloc] initWithData:[image TIFFRepresentation]]; - if (bitmap == nil) NSLog(@"in loadPicture: NSBitmapImageRep not loaded"); + filename = [NSString stringWithFormat:@"%@_green", name]; /* Colour first image green */ - greenTexture = [greenTexture initWithBitmap:bitmap withXOrigin:x - withYOrigin:y colourRed:0]; + greenTexture = [greenTexture initWithImageFile:filename withXOrigin:x + withYOrigin:y]; + filename = [NSString stringWithFormat:@"%@_red", name]; + /* Colour second image red */ - redTexture = [redTexture initWithBitmap:bitmap withXOrigin:x - withYOrigin:y colourRed:1]; + redTexture = [redTexture initWithImageFile:filename withXOrigin:x + withYOrigin:y]; } -(void) setNeedsDisplayYes Modified: trunk/fuse/fusepb/views/Texture.h =================================================================== --- trunk/fuse/fusepb/views/Texture.h 2007-07-13 13:49:45 UTC (rev 430) +++ trunk/fuse/fusepb/views/Texture.h 2007-07-16 12:29:05 UTC (rev 431) @@ -1,5 +1,5 @@ -/* DisplayOpenGLView.h: Implementation for the DisplayOpenGLView class - Copyright (c) 2006-2007 Fredrick Meunier +/* Texture.h: Implementation for the Texture class + Copyright (c) 2007 Fredrick Meunier 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 @@ -35,8 +35,8 @@ Cocoa_Texture texture; GLuint textureId; } --(id) initWithBitmap:(NSBitmapImageRep*)bitmap withXOrigin:(int)x - withYOrigin:(int)y colourRed:(int)red; +-(id) initWithImageFile:(NSString*)filename withXOrigin:(int)x + withYOrigin:(int)y; -(void) dealloc; -(Cocoa_Texture*) getTexture; Modified: trunk/fuse/fusepb/views/Texture.m =================================================================== --- trunk/fuse/fusepb/views/Texture.m 2007-07-13 13:49:45 UTC (rev 430) +++ trunk/fuse/fusepb/views/Texture.m 2007-07-16 12:29:05 UTC (rev 431) @@ -1,5 +1,5 @@ -/* DisplayOpenGLView.m: Implementation for the DisplayOpenGLView class - Copyright (c) 2006-2007 Fredrick Meunier +/* Texture.m: Implementation for the Texture class + Copyright (c) 2007 Fredrick Meunier 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 @@ -24,63 +24,48 @@ #import "Texture.h" -unsigned char * -NSBitmapImageRepToRGBAPixelArray(NSBitmapImageRep * bitmap, int red) +@implementation Texture + +-(id) initWithImageFile:(NSString*)filename withXOrigin:(int)x + withYOrigin:(int)y { - unsigned char * pixels; - NSBitmapImageRep * bitmap2; - NSGraphicsContext * context; -#define BYTES_PER_PIXEL 4 - int targetWidth = [bitmap pixelsWide]; - int targetHeight = [bitmap pixelsHigh]; + if( ( self = [super init] ) ) { + NSString *textureName = [[NSBundle mainBundle] pathForImageResource:filename]; + if( !textureName ) + NSLog(@"in initWithImageFile no textureName for filename:%@", filename); + NSURL *textureFile = [NSURL fileURLWithPath:textureName]; - pixels = (unsigned char *) malloc(BYTES_PER_PIXEL * targetWidth * targetHeight); - bitmap2 = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes: &pixels - pixelsWide: targetWidth - pixelsHigh: targetHeight - bitsPerSample: 8 - samplesPerPixel: 4 - hasAlpha: YES - isPlanar: NO - colorSpaceName: NSDeviceRGBColorSpace - bitmapFormat: NSAlphaNonpremultipliedBitmapFormat - bytesPerRow: (targetWidth * BYTES_PER_PIXEL) - bitsPerPixel: (BYTES_PER_PIXEL * 8)]; + CGImageSourceRef image_source = CGImageSourceCreateWithURL( + (CFURLRef)textureFile, + nil); - context = [NSGraphicsContext graphicsContextWithBitmapImageRep: bitmap2]; - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext: context]; - [bitmap drawInRect: NSMakeRect(0, 0, targetWidth, targetHeight)]; - [NSGraphicsContext restoreGraphicsState]; + CGImageRef image = CGImageSourceCreateImageAtIndex( + image_source, + 0, + nil); + texture.image_width = CGImageGetWidth(image); + texture.image_height = CGImageGetHeight(image); - int i; - for( i = 0; i < targetWidth * targetHeight; i++ ) { -#ifdef WORDS_BIGENDIAN - pixels[i*4+3] = red ? pixels[i*4+0] : 0; // r on ppc - pixels[i*4+2] = red ? 0 : pixels[i*4+1]; // g on ppc - pixels[i*4+0] = 0; - pixels[i*4+1] = 0; -#else /* #ifdef WORDS_BIGENDIAN */ - pixels[i*4+0] = red ? pixels[i*4+0] : 0; // r on i386 - pixels[i*4+1] = red ? 0 : pixels[i*4+1]; // g on i386 - pixels[i*4+2] = 0; -#endif /* #ifdef WORDS_BIGENDIAN */ - } + texture.pixels = malloc(texture.image_width * texture.image_height * 4); - [bitmap2 release]; + CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB(); - return pixels; -} + CGContextRef context = CGBitmapContextCreate( + texture.pixels, + texture.image_width, + texture.image_height, + 8, + texture.image_width * 4, + color_space, + kCGImageAlphaPremultipliedFirst); -@implementation Texture + CGContextDrawImage( + context, + CGRectMake(0, 0, texture.image_width, texture.image_height), + image); --(id) initWithBitmap:(NSBitmapImageRep*)bitmap withXOrigin:(int)x - withYOrigin:(int)y colourRed:(int)red -{ - if( ( self = [super init] ) ) { - texture.pixels = NSBitmapImageRepToRGBAPixelArray( bitmap, red ); - texture.image_width = [bitmap pixelsWide]; - texture.image_height = [bitmap pixelsHigh]; + CGContextRelease(context); + texture.image_xoffset = x; texture.image_yoffset = y; @@ -93,7 +78,10 @@ -(void) dealloc { glDeleteTextures(1, &textureId); - free( texture.pixels ); + if (texture.pixels != NULL) { + free( texture.pixels ); + texture.pixels = NULL; + } [super dealloc]; } @@ -112,19 +100,26 @@ glGenTextures(1, &textureId); /* Set memory alignment parameters for unpacking the bitmap. */ + glPixelStorei( GL_UNPACK_ROW_LENGTH, texture.image_width ); glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); /* Specify the texture's properties. */ - glBindTexture( GL_TEXTURE_RECTANGLE_EXT, textureId ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameteri( GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + glBindTexture( GL_TEXTURE_RECTANGLE_ARB, textureId ); + glTexParameteri( GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); + glTexParameteri( GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + /* Upload the texture bitmap. */ - glTexImage2D( GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, texture.image_width, - texture.image_height, 0, GL_RGBA, - GL_UNSIGNED_INT_8_8_8_8_REV, texture.pixels ); + glTexImage2D( GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8, texture.image_width, + texture.image_height, 0, GL_BGRA_EXT, +#ifdef WORDS_BIGENDIAN + GL_UNSIGNED_INT_8_8_8_8_REV, +#else /* #ifdef WORDS_BIGENDIAN */ + GL_UNSIGNED_INT_8_8_8_8, +#endif /* #ifdef WORDS_BIGENDIAN */ + texture.pixels ); } @end This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-02-10 20:47:08
|
Revision: 468 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=468&view=rev Author: fredm Date: 2008-02-10 12:47:11 -0800 (Sun, 10 Feb 2008) Log Message: ----------- Make application quit menu use performClose on the window, and switch exit confirm dialog to windowShouldClose in DisplayOpenGLView (partial fix to bug #1842576). Modified Paths: -------------- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj trunk/fuse/fusepb/controllers/FuseController.h trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2008-02-10 20:47:11 UTC (rev 468) @@ -8,8 +8,6 @@ /* Begin PBXBuildFile section */ B615BFE80B4261E50082D535 /* HIDJoysticks.m in Sources */ = {isa = PBXBuildFile; fileRef = B615BFE60B4261E50082D535 /* HIDJoysticks.m */; }; - B61EEBA60D1A917D006FEA80 /* FuseGenerator.qlgenerator in Resources */ = {isa = PBXBuildFile; fileRef = B61EEB950D1A917D006FEA80 /* FuseGenerator.qlgenerator */; }; - B61EEBB10D1A91A9006FEA80 /* FuseGenerator.qlgenerator in CopyFiles */ = {isa = PBXBuildFile; fileRef = B61EEB950D1A917D006FEA80 /* FuseGenerator.qlgenerator */; }; B61F459309121DF100C8096C /* Fuse Help in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6F905ED05CDA24300C2F10D /* Fuse Help */; }; B61F459409121DF100C8096C /* disk_plus3.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F2076596C700DE7E81 /* disk_plus3.szx */; }; B61F459509121DF100C8096C /* tape_16.szx in CopyFiles */ = {isa = PBXBuildFile; fileRef = B650C3F4076596FD00DE7E81 /* tape_16.szx */; }; @@ -240,7 +238,6 @@ dstPath = Contents/Library/QuickLook; dstSubfolderSpec = 1; files = ( - B61EEBB10D1A91A9006FEA80 /* FuseGenerator.qlgenerator in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1348,7 +1345,6 @@ B6CADD730C48E1A3004BA954 /* microdrive_red.png in Resources */, B6CADD740C48E1A3004BA954 /* plus3disk_green.png in Resources */, B6CADD750C48E1A3004BA954 /* plus3disk_red.png in Resources */, - B61EEBA60D1A917D006FEA80 /* FuseGenerator.qlgenerator in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: trunk/fuse/fusepb/controllers/FuseController.h =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.h 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/controllers/FuseController.h 2008-02-10 20:47:11 UTC (rev 468) @@ -206,7 +206,6 @@ -(ui_confirm_joystick_t) confirmJoystick:(libspectrum_joystick)type inputs:(int)theInputs; - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication; -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender; - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename; - (void)setAcceptsMouseMovedEvents:(BOOL)flag; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/controllers/FuseController.m 2008-02-10 20:47:11 UTC (rev 468) @@ -59,7 +59,7 @@ static char* cocoaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ); static char* cocoaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ); static void cocoaui_disk_eject( specplus3_drive_number drive, int which ); -static int cocoaui_confirm( const char *message ); +int cocoaui_confirm( const char *message ); static int dockEject = 0; static int if2Eject = 0; @@ -1705,17 +1705,6 @@ return YES; } -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender -{ - if( cocoaui_confirm( "Exit Fuse?" ) ) { - int error = [[DisplayOpenGLView instance] checkMediaChanged]; - if( error ) return NSTerminateCancel; - - return NSTerminateNow; - } - return NSTerminateCancel; -} - - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { utils_file file; libspectrum_id_t type; @@ -2124,7 +2113,7 @@ return 0; } -static int +int cocoaui_confirm( const char *message ) { int confirm = 0; Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-02-10 20:47:11 UTC (rev 468) @@ -7,7 +7,7 @@ <key>IBEditorPositions</key> <dict> <key>29</key> - <string>202 691 392 44 0 0 1440 878 </string> + <string>201 691 392 44 0 0 1440 878 </string> </dict> <key>IBFramework Version</key> <string>489.0</string> @@ -17,6 +17,6 @@ <integer>877</integer> </array> <key>IBSystem Version</key> - <string>9A581</string> + <string>9B18</string> </dict> </plist> Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2008-02-10 20:47:11 UTC (rev 468) @@ -218,6 +218,7 @@ -(void) copyGLtoQuartz; -(void) windowWillMiniaturize:(NSNotification *)aNotification; -(void) windowDidMiniaturize:(NSNotification *)notification; +-(BOOL) windowShouldClose:(id)window; -(CVReturn) displayFrame:(const CVTimeStamp *)timeStamp; -(void) windowChangedScreen:(NSNotification*)inNotification; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2007-12-21 02:42:46 UTC (rev 467) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-02-10 20:47:11 UTC (rev 468) @@ -35,6 +35,7 @@ #include "fuse.h" #include "fusepb/main.h" #include "settings.h" +#include "ui/cocoa/cocoaui.h" #include "ui/cocoa/dirty.h" const void * @@ -1168,6 +1169,17 @@ [[self window] setOpaque:YES]; } +-(BOOL) windowShouldClose:(id)window +{ + if( cocoaui_confirm( "Exit Fuse?" ) ) { + int error = [self checkMediaChanged]; + if( error ) return NO; + + return YES; + } + return NO; +} + -(CVReturn) displayFrame:(const CVTimeStamp *)timeStamp { [self drawRect:NSZeroRect]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-02-11 12:16:45
|
Revision: 469 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=469&view=rev Author: fredm Date: 2008-02-11 04:16:49 -0800 (Mon, 11 Feb 2008) Log Message: ----------- Clear stuck shortcut keys for Command-{0,1,2,3,f,s,z,b,o,p,period}, still need to handle Command-q (quit), Command-h (hide) and Command-m (minimise). Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.h trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/FuseController.h =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.h 2008-02-10 20:47:11 UTC (rev 468) +++ trunk/fuse/fusepb/controllers/FuseController.h 2008-02-11 12:16:49 UTC (rev 469) @@ -133,6 +133,9 @@ - savePanelAccessoryView; - (NSPopUpButton*) saveFileType; +- (void)releaseCmdKeys:(NSString *)character:(int)keyCode; +- (void)releaseKey:(int)keyCode; + - (void)ui_menu_activate_media_cartridge:(NSNumber*)active; - (void)ui_menu_activate_media_cartridge_dock:(NSNumber*)active; - (void)ui_menu_activate_media_cartridge_dock_eject:(NSNumber*)active; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2008-02-10 20:47:11 UTC (rev 468) +++ trunk/fuse/fusepb/controllers/FuseController.m 2008-02-11 12:16:49 UTC (rev 469) @@ -126,6 +126,13 @@ "joystick 2", }; +#define QZ_s 0x01 +#define QZ_z 0x06 +#define QZ_b 0x0B +#define QZ_o 0x1F +#define QZ_p 0x23 +#define QZ_PERIOD 0x2F + @implementation FuseController static FuseController *singleton = nil; @@ -462,6 +469,7 @@ free(filename); [[DisplayOpenGLView instance] unpause]; + [self releaseCmdKeys:@"o":QZ_o]; } - (IBAction)reset:(id)sender @@ -513,11 +521,13 @@ - (IBAction)rzx_insert_snap:(id)sender { [[DisplayOpenGLView instance] rzxInsertSnap]; + [self releaseCmdKeys:@"b":QZ_b]; } - (IBAction)rzx_rollback:(id)sender { [[DisplayOpenGLView instance] rzxRollback]; + [self releaseCmdKeys:@"z":QZ_z]; } - (IBAction)rzx_start:(id)sender @@ -615,7 +625,7 @@ filename = cocoaui_savepanel_get_filename( @"Save Snapshot As", [NSArray arrayWithObjects:@"szx", @"z80", @"sna", nil] ); - if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } + if( !filename ) goto save_as_exit; [[DisplayOpenGLView instance] snapshotWrite:filename]; @@ -626,7 +636,9 @@ free( filename ); +save_as_exit: [[DisplayOpenGLView instance] unpause]; + [self releaseCmdKeys:@"s":QZ_s]; } - (IBAction)open_screen:(id)sender @@ -764,6 +776,7 @@ - (IBAction)tape_play:(id)sender { [[DisplayOpenGLView instance] tapeTogglePlay]; + [self releaseCmdKeys:@"p":QZ_p]; } - (IBAction)tape_rewind:(id)sender @@ -849,6 +862,7 @@ preferencesController = [[PreferencesController alloc] init]; } [preferencesController showWindow:self]; + [self releaseCmdKeys:@".":QZ_PERIOD]; } - (IBAction)saveFileTypeClicked:(id)sender; @@ -895,6 +909,55 @@ [super dealloc]; } +/*------------------------------------------------------------------------------ + * releaseCmdKeys - This method fixes an issue when modal windows are used with + * the Mac OSX version of the SDL library. + * As the SDL normally captures all keystrokes, but we need to type in some + * Mac windows, all of the control menu windows run in modal mode. However, + * when this happens, the release of the command key and the shortcut key + * are not sent to SDL. We have to manually cause these events to happen + * to keep the SDL library in a sane state, otherwise only every other + * shortcut keypress will work. + *-----------------------------------------------------------------------------*/ +- (void) releaseCmdKeys:(NSString *)character:(int)keyCode +{ + NSEvent *event1, *event2; + NSPoint point; + + event1 = [NSEvent keyEventWithType:NSKeyUp location:point modifierFlags:0 + timestamp:nil windowNumber:0 context:nil characters:character + charactersIgnoringModifiers:character isARepeat:NO + keyCode:keyCode]; + [NSApp postEvent:event1 atStart:NO]; + + event2 = [NSEvent keyEventWithType:NSFlagsChanged location:point + modifierFlags:0 timestamp:nil windowNumber:0 context:nil + characters:nil charactersIgnoringModifiers:nil isARepeat:NO + keyCode:0]; + [NSApp postEvent:event2 atStart:NO]; +} + +/*------------------------------------------------------------------------------ + * releaseKey - This method fixes an issue when modal windows are used with + * the Mac OSX version of the SDL library. + * As the SDL normally captures all keystrokes, but we need to type in some + * Mac windows, all of the control menu windows run in modal mode. However, + * when this happens, the release of function key which started the process + * is not sent to SDL. We have to manually cause these events to happen + * to keep the SDL library in a sane state, otherwise only everyother shortcut + * keypress will work. + *-----------------------------------------------------------------------------*/ +- (void) releaseKey:(int)keyCode +{ + NSEvent *event1; + NSPoint point; + + event1 = [NSEvent keyEventWithType:NSKeyUp location:point modifierFlags:0 + timestamp:nil windowNumber:0 context:nil characters:@" " + charactersIgnoringModifiers:@" " isARepeat:NO keyCode:keyCode]; + [NSApp postEvent:event1 atStart:NO]; +} + - (void)ui_menu_activate_media_cartridge:(NSNumber*)active { [cart setEnabled:[active boolValue]]; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-02-10 20:47:11 UTC (rev 468) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-02-11 12:16:49 UTC (rev 469) @@ -38,6 +38,12 @@ #include "ui/cocoa/cocoaui.h" #include "ui/cocoa/dirty.h" +#define QZ_f 0x03 +#define QZ_0 0x1D +#define QZ_1 0x12 +#define QZ_2 0x13 +#define QZ_3 0x14 + const void * get_byte_pointer(void *bitmap) { @@ -106,6 +112,7 @@ [view_lock lock]; statusbar_updated = YES; [view_lock unlock]; + [[FuseController singleton] releaseCmdKeys:@"f":QZ_f]; } -(IBAction) zoom:(id)sender @@ -116,19 +123,23 @@ case 1: /* 320x240 */ size.width = 320; size.height = 240; + [[FuseController singleton] releaseCmdKeys:@"1":QZ_1]; break; case 2: /* 640x480 */ size.width = 640; size.height = 480; + [[FuseController singleton] releaseCmdKeys:@"2":QZ_2]; break; case 3: /* 960x720 */ size.width = 960; size.height = 720; + [[FuseController singleton] releaseCmdKeys:@"3":QZ_3]; break; case 0: default: /* Actual size */ size.width = screenTex[0].image_width; size.height = screenTex[0].image_height; + [[FuseController singleton] releaseCmdKeys:@"0":QZ_0]; } [[self window] setContentSize:size]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-02-13 12:54:48
|
Revision: 470 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=470&view=rev Author: fredm Date: 2008-02-13 04:54:53 -0800 (Wed, 13 Feb 2008) Log Message: ----------- Fix the blocked keyboard from Command-q (quit), Command-h (hide) and Command-m (minimise) (fixes bug #1842577). Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.h trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/FuseController.h =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.h 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/controllers/FuseController.h 2008-02-13 12:54:53 UTC (rev 470) @@ -119,6 +119,10 @@ - (IBAction)tape_write:(id)sender; - (IBAction)tape_record:(id)sender; +- (IBAction)quit:(id)sender; +- (IBAction)hide:(id)sender; +- (IBAction)help:(id)sender; + - (IBAction)showRollbackPane:(id)sender; - (IBAction)showTapeBrowserPane:(id)sender; - (IBAction)showKeyboardPane:(id)sender; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/controllers/FuseController.m 2008-02-13 12:54:53 UTC (rev 470) @@ -127,10 +127,13 @@ }; #define QZ_s 0x01 +#define QZ_h 0x04 #define QZ_z 0x06 #define QZ_b 0x0B +#define QZ_q 0x0C #define QZ_o 0x1F #define QZ_p 0x23 +#define QZ_SLASH 0x2C #define QZ_PERIOD 0x2F @implementation FuseController @@ -794,6 +797,24 @@ [[DisplayOpenGLView instance] tapeToggleRecord]; } +- (IBAction)quit:(id)sender +{ + [[NSApp keyWindow] performClose:self]; + [self releaseCmdKeys:@"q":QZ_q]; +} + +- (IBAction)hide:(id)sender +{ + [NSApp hide:self]; + [self releaseCmdKeys:@"h":QZ_h]; +} + +- (IBAction)help:(id)sender +{ + [NSApp showHelp:self]; + [self releaseCmdKeys:@"?":QZ_SLASH]; +} + - (IBAction)cocoa_break:(id)sender { [[DisplayOpenGLView instance] cocoaBreak]; Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2008-02-13 12:54:53 UTC (rev 470) @@ -28,6 +28,8 @@ "export_screen" = id; fullscreen = id; "hard_reset" = id; + help = id; + hide = id; "ide_commit" = id; "ide_eject" = id; "ide_insert" = id; @@ -47,6 +49,7 @@ "profiler_stop" = id; "psg_start" = id; "psg_stop" = id; + quit = id; reset = id; resetUserDefaults = id; "rzx_insert_snap" = id; Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-02-13 12:54:53 UTC (rev 470) @@ -13,10 +13,10 @@ <string>489.0</string> <key>IBOpenObjects</key> <array> + <integer>877</integer> <integer>29</integer> - <integer>877</integer> </array> <key>IBSystem Version</key> - <string>9B18</string> + <string>9C31</string> </dict> </plist> Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2008-02-13 12:54:53 UTC (rev 470) @@ -222,6 +222,7 @@ -(CVReturn) displayFrame:(const CVTimeStamp *)timeStamp; -(void) windowChangedScreen:(NSNotification*)inNotification; +-(void) windowDidDeminiaturize:(NSNotification *)inNotification; -(void) displayLinkStop; -(void) displayLinkStart; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-02-11 12:16:49 UTC (rev 469) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-02-13 12:54:53 UTC (rev 470) @@ -43,6 +43,7 @@ #define QZ_1 0x12 #define QZ_2 0x13 #define QZ_3 0x14 +#define QZ_m 0x2E const void * get_byte_pointer(void *bitmap) @@ -1210,6 +1211,11 @@ } } +-(void) windowDidDeminiaturize:(NSNotification *)inNotification +{ + [[FuseController singleton] releaseCmdKeys:@"m":QZ_m]; +} + -(void) displayLinkStop { if( displayLinkRunning == YES ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-02-18 08:45:02
|
Revision: 487 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=487&view=rev Author: fredm Date: 2008-02-18 00:45:07 -0800 (Mon, 18 Feb 2008) Log Message: ----------- Don't use standard Fuse menu.c, move only function we use (menu_select_roms_with_title) to FuseMenus.m. Modified Paths: -------------- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj trunk/fuse/fusepb/FuseMenus.m Modified: trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj =================================================================== --- trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2008-02-18 07:33:15 UTC (rev 486) +++ trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj 2008-02-18 08:45:07 UTC (rev 487) @@ -191,7 +191,6 @@ B6A6F1060B3D60D0000B88E9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F520C8BC038D022E01A804BA /* OpenGL.framework */; }; B6A6F10E0B3D6360000B88E9 /* cocoaerror.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F10D0B3D6360000B88E9 /* cocoaerror.m */; }; B6A6F1200B3EA737000B88E9 /* cocoascreenshot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6A6F11E0B3EA737000B88E9 /* cocoascreenshot.m */; }; - B6AB34900C3BC91A0005935E /* menu.c in Sources */ = {isa = PBXBuildFile; fileRef = B6AB348E0C3BC91A0005935E /* menu.c */; }; B6B076B30B59FE9A00D4F95C /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B076B10B59FE9A00D4F95C /* Emulator.m */; }; B6B99F8A0B5F798700EE408F /* cocoadisplay.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B99F890B5F798700EE408F /* cocoadisplay.m */; }; B6CA27A70C2CDBC500F06FB3 /* dirty.c in Sources */ = {isa = PBXBuildFile; fileRef = B6CA27A50C2CDBC500F06FB3 /* dirty.c */; }; @@ -428,7 +427,6 @@ B6A7F0E904C9A11D001025EB /* NumberFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NumberFormatter.h; sourceTree = "<group>"; }; B6A7F0EA04C9A11D001025EB /* NumberFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NumberFormatter.m; sourceTree = "<group>"; }; B6AA8A3C03D2FC1C00FED55D /* trdos.rom */ = {isa = PBXFileReference; lastKnownFileType = file; name = trdos.rom; path = ../roms/trdos.rom; sourceTree = SOURCE_ROOT; }; - B6AB348E0C3BC91A0005935E /* menu.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = menu.c; sourceTree = "<group>"; }; B6AB348F0C3BC91A0005935E /* menu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = menu.h; sourceTree = "<group>"; }; B6AB429D0677466E007C50EF /* ula.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ula.c; path = ../ula.c; sourceTree = SOURCE_ROOT; }; B6AB429E0677466E007C50EF /* ula.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ula.h; path = ../ula.h; sourceTree = SOURCE_ROOT; }; @@ -1168,7 +1166,6 @@ B6403FD70A7E4B1A00E00B11 /* loader.h */, B60B11F7059BC7E70048B64B /* machine.c */, F55985EA038922ED01A804BA /* machine.h */, - B6AB348E0C3BC91A0005935E /* menu.c */, B6AB348F0C3BC91A0005935E /* menu.h */, B68CB2CC03DD923C00A804BA /* memory.c */, B6CA2A210C33F8490003CF90 /* module.c */, @@ -1471,7 +1468,6 @@ B6CA27A70C2CDBC500F06FB3 /* dirty.c in Sources */, B6CA2A230C33F84A0003CF90 /* module.c in Sources */, B6CA2A2E0C33F8C10003CF90 /* plusd.c in Sources */, - B6AB34900C3BC91A0005935E /* menu.c in Sources */, B6CADD580C47AD90004BA954 /* Texture.m in Sources */, B63225EC0C66BA1300BB081B /* osname.c in Sources */, B63225EE0C66BA3700BB081B /* paths.c in Sources */, Modified: trunk/fuse/fusepb/FuseMenus.m =================================================================== --- trunk/fuse/fusepb/FuseMenus.m 2008-02-18 07:33:15 UTC (rev 486) +++ trunk/fuse/fusepb/FuseMenus.m 2008-02-18 08:45:07 UTC (rev 487) @@ -31,7 +31,93 @@ #import "FuseController.h" #import "FuseMenus.h" +#include "divide.h" +#include "if1.h" +#include "menu.h" +#include "settings.h" +#include "simpleide.h" +#include "tape.h" +#include "zxatasp.h" +#include "zxcf.h" + void SetEmulationHz( float hz ) { [[Emulator instance] setEmulationHz:hz]; } + +int +menu_check_media_changed( void ) +{ + int confirm, i; + + confirm = tape_close(); if( confirm ) return 1; + +#ifdef HAVE_765_H + + confirm = specplus3_disk_eject( SPECPLUS3_DRIVE_A, 0 ); + if( confirm ) return 1; + + confirm = specplus3_disk_eject( SPECPLUS3_DRIVE_B, 0 ); + if( confirm ) return 1; + +#endif /* #ifdef HAVE_765_H */ + + confirm = beta_disk_eject( BETA_DRIVE_A, 0 ); + if( confirm ) return 1; + + confirm = beta_disk_eject( BETA_DRIVE_B, 0 ); + if( confirm ) return 1; + + confirm = beta_disk_eject( BETA_DRIVE_C, 0 ); + if( confirm ) return 1; + + confirm = beta_disk_eject( BETA_DRIVE_D, 0 ); + if( confirm ) return 1; + + confirm = plusd_disk_eject( PLUSD_DRIVE_1, 0 ); + if( confirm ) return 1; + + confirm = plusd_disk_eject( PLUSD_DRIVE_2, 0 ); + if( confirm ) return 1; + + for( i = 0; i < 8; i++ ) { + confirm = if1_mdr_eject( i, 0 ); + if( confirm ) return 1; + } + + if( settings_current.simpleide_master_file ) { + confirm = simpleide_eject( LIBSPECTRUM_IDE_MASTER ); + if( confirm ) return 1; + } + + if( settings_current.simpleide_slave_file ) { + confirm = simpleide_eject( LIBSPECTRUM_IDE_SLAVE ); + if( confirm ) return 1; + } + + if( settings_current.zxatasp_master_file ) { + confirm = zxatasp_eject( LIBSPECTRUM_IDE_MASTER ); + if( confirm ) return 1; + } + + if( settings_current.zxatasp_slave_file ) { + confirm = zxatasp_eject( LIBSPECTRUM_IDE_SLAVE ); + if( confirm ) return 1; + } + + if( settings_current.zxcf_pri_file ) { + confirm = zxcf_eject(); if( confirm ) return 1; + } + + if( settings_current.divide_master_file ) { + confirm = divide_eject( LIBSPECTRUM_IDE_MASTER ); + if( confirm ) return 1; + } + + if( settings_current.divide_slave_file ) { + confirm = divide_eject( LIBSPECTRUM_IDE_SLAVE ); + if( confirm ) return 1; + } + + return 0; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-03-27 12:05:19
|
Revision: 495 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=495&view=rev Author: fredm Date: 2008-03-27 05:04:48 -0700 (Thu, 27 Mar 2008) Log Message: ----------- Add +D and Beta disk write protect support. Fix Microdrive cartridge menus. Add command key release for keyboard joystick binding shortcut. Modified Paths: -------------- trunk/fuse/fusepb/controllers/FuseController.h trunk/fuse/fusepb/controllers/FuseController.m trunk/fuse/fusepb/models/Emulator.h trunk/fuse/fusepb/models/Emulator.m trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib trunk/fuse/fusepb/views/DisplayOpenGLView.h trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/controllers/FuseController.h =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.h 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/controllers/FuseController.h 2008-03-27 12:04:48 UTC (rev 495) @@ -42,11 +42,23 @@ IBOutlet NSMenuItem *cart; IBOutlet NSMenuItem *dock; IBOutlet NSMenuItem *if1; + IBOutlet NSMenuItem *if1Wp1; + IBOutlet NSMenuItem *if1Wp2; + IBOutlet NSMenuItem *if1Wp3; + IBOutlet NSMenuItem *if1Wp4; + IBOutlet NSMenuItem *if1Wp5; + IBOutlet NSMenuItem *if1Wp6; + IBOutlet NSMenuItem *if1Wp7; + IBOutlet NSMenuItem *if1Wp8; IBOutlet NSMenuItem *if2; IBOutlet NSMenuItem *disk; IBOutlet NSMenuItem *diskPlus3; IBOutlet NSMenuItem *diskTrDos; + IBOutlet NSMenuItem *diskTrDosWpA; + IBOutlet NSMenuItem *diskTrDosWpB; IBOutlet NSMenuItem *diskPlusD; + IBOutlet NSMenuItem *diskPlusDWpA; + IBOutlet NSMenuItem *diskPlusDWpB; IBOutlet NSMenuItem *ide; IBOutlet NSMenuItem *divide; IBOutlet NSMenuItem *simple8Bit; @@ -78,6 +90,8 @@ - (IBAction)disk_eject_write_b:(id)sender; - (IBAction)disk_open_a:(id)sender; - (IBAction)disk_open_b:(id)sender; +- (IBAction)disk_write_protect_a:(id)sender; +- (IBAction)disk_write_protect_b:(id)sender; - (IBAction)dock_eject:(id)sender; - (IBAction)dock_open:(id)sender; - (IBAction)export_screen:(id)sender; @@ -156,7 +170,9 @@ - (void)ui_menu_activate_media_disk_beta_b_wp_set:(NSNumber*)active; - (void)ui_menu_activate_media_disk_plusd:(NSNumber*)active; - (void)ui_menu_activate_media_disk_plusd_a_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_plusd_a_wp_set:(NSNumber*)active; - (void)ui_menu_activate_media_disk_plusd_b_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_plusd_b_wp_set:(NSNumber*)active; - (void)ui_menu_activate_media_if1:(NSNumber*)active; - (void)ui_menu_activate_media_if1_m1_eject:(NSNumber*)active; - (void)ui_menu_activate_media_if1_m1_wp_set:(NSNumber*)active; Modified: trunk/fuse/fusepb/controllers/FuseController.m =================================================================== --- trunk/fuse/fusepb/controllers/FuseController.m 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/controllers/FuseController.m 2008-03-27 12:04:48 UTC (rev 495) @@ -59,7 +59,8 @@ static char* cocoaui_openpanel_get_filename( NSString *title, NSArray *fileTypes ); static char* cocoaui_savepanel_get_filename( NSString *title, NSArray *fileTypes ); -static void cocoaui_disk_eject( specplus3_drive_number drive, int which ); +static void cocoaui_disk_eject( specplus3_drive_number drive, int write ); +static void cocoaui_disk_write_protect( specplus3_drive_number drive, int wrprot ); static void cocoaui_mdr_eject( int drive, int which ); int cocoaui_confirm( const char *message ); @@ -68,9 +69,7 @@ static int diskPlus3EjectA = 0; static int diskPlus3EjectB = 0; static int diskTrdosEjectA = 0; -static int diskTrdosWpSetA = 0; static int diskTrdosEjectB = 0; -static int diskTrdosWpSetB = 0; static int diskPlusDEjectA = 0; static int diskPlusDEjectB = 0; static int record = 1; @@ -90,21 +89,13 @@ static int ideZxataspEjectSlave = 0; static int ideZxcfEject = 0; static int if1M1Eject = 0; -static int if1M1WpSet = 0; static int if1M2Eject = 0; -static int if1M2WpSet = 0; static int if1M3Eject = 0; -static int if1M3WpSet = 0; static int if1M4Eject = 0; -static int if1M4WpSet = 0; static int if1M5Eject = 0; -static int if1M5WpSet = 0; static int if1M6Eject = 0; -static int if1M6WpSet = 0; static int if1M7Eject = 0; -static int if1M7WpSet = 0; static int if1M8Eject = 0; -static int if1M8WpSet = 0; static int profileStart = 1; static int profileStop = 0; static int playTape = 1; @@ -137,10 +128,27 @@ #define QZ_q 0x0C #define QZ_o 0x1F #define QZ_p 0x23 +#define QZ_j 0x26 #define QZ_k 0x28 #define QZ_SLASH 0x2C #define QZ_PERIOD 0x2F +static int +get_microdrive_no( int tag ) { + switch( tag ) { + case 30: case 31: case 32: case 33: case 34: return 0; break; + case 80: case 81: case 82: case 83: case 84: return 1; break; + case 90: case 91: case 92: case 93: case 94: return 2; break; + case 100: case 101: case 102: case 103: case 104: return 3; break; + case 110: case 111: case 112: case 113: case 114: return 4; break; + case 120: case 121: case 122: case 123: case 124: return 5; break; + case 130: case 131: case 132: case 133: case 134: return 6; break; + case 140: case 141: case 142: case 143: case 144: return 7; break; + } + + return 0; +} + @implementation FuseController static FuseController *singleton = nil; @@ -246,6 +254,11 @@ cocoaui_disk_eject( SPECPLUS3_DRIVE_A, 1 ); } +- (IBAction)disk_write_protect_a:(id)sender +{ + cocoaui_disk_write_protect( SPECPLUS3_DRIVE_A, [sender state] == NSOffState ); +} + - (IBAction)disk_eject_b:(id)sender { cocoaui_disk_eject( SPECPLUS3_DRIVE_B, 0 ); @@ -256,6 +269,11 @@ cocoaui_disk_eject( SPECPLUS3_DRIVE_B, 1 ); } +- (IBAction)disk_write_protect_b:(id)sender +{ + cocoaui_disk_write_protect( SPECPLUS3_DRIVE_B, [sender isEnabled] ); +} + - (IBAction)disk_open_a:(id)sender { [self openDisk:SPECPLUS3_DRIVE_A]; @@ -391,7 +409,7 @@ - (IBAction)mdr_insert_new:(id)sender { - [[DisplayOpenGLView instance] if1MdrNew:[sender tag] - 30]; + [[DisplayOpenGLView instance] if1MdrNew:get_microdrive_no( [sender tag] )]; } - (IBAction)mdr_insert:(id)sender @@ -403,7 +421,8 @@ filename = cocoaui_openpanel_get_filename( @"Insert microdrive disk file", mdrFileTypes ); if( !filename ) { [[DisplayOpenGLView instance] unpause]; return; } - [[DisplayOpenGLView instance] if1MdrInsert:filename inDrive:[sender tag] - 30]; + [[DisplayOpenGLView instance] if1MdrInsert:filename + inDrive:get_microdrive_no( [sender tag] )]; [self addRecentSnapshot:filename]; @@ -414,19 +433,20 @@ - (IBAction)mdr_eject:(id)sender { - cocoaui_mdr_eject( [sender tag] - 30, 0 ); + cocoaui_mdr_eject( get_microdrive_no( [sender tag] ), 0 ); } - (IBAction)mdr_eject_write:(id)sender { - cocoaui_mdr_eject( [sender tag] - 30, 1 ); + cocoaui_mdr_eject( get_microdrive_no( [sender tag] ), 1 ); } - (IBAction)mdr_writep:(id)sender { - int no = [sender tag] - 30; + int no = get_microdrive_no( [sender tag] ); - [[DisplayOpenGLView instance] if1MdrWriteProtect:no & 0xf0 inDrive:( no & 0x0f )]; + [[DisplayOpenGLView instance] if1MdrWriteProtect:[sender state] == NSOffState + inDrive:no]; } - (IBAction)open:(id)sender @@ -728,6 +748,7 @@ - (IBAction)joystick_keyboard:(id)sender { [[DisplayOpenGLView instance] joystickToggleKeyboard]; + [self releaseCmdKeys:@"j":QZ_j]; } - (IBAction)tape_clear:(id)sender @@ -1021,7 +1042,7 @@ - (void)ui_menu_activate_media_disk_beta_a_wp_set:(NSNumber*)active { - diskTrdosWpSetA = [active boolValue]; + [diskTrDosWpA setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_disk_beta_b_eject:(NSNumber*)active @@ -1031,7 +1052,7 @@ - (void)ui_menu_activate_media_disk_beta_b_wp_set:(NSNumber*)active { - diskTrdosWpSetB = [active boolValue]; + [diskTrDosWpB setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_disk_plusd:(NSNumber*)active @@ -1044,11 +1065,21 @@ diskPlusDEjectA = [active boolValue]; } +- (void)ui_menu_activate_media_plusd_a_wp_set:(NSNumber*)active +{ + [diskPlusDWpA setState:[active boolValue] == YES ? NSOffState : NSOnState]; +} + - (void)ui_menu_activate_media_disk_plusd_b_eject:(NSNumber*)active { diskPlusDEjectB = [active boolValue]; } +- (void)ui_menu_activate_media_plusd_b_wp_set:(NSNumber*)active +{ + [diskPlusDWpB setState:[active boolValue] == YES ? NSOffState : NSOnState]; +} + - (void)ui_menu_activate_media_ide:(NSNumber*)active { [ide setEnabled:[active boolValue]]; @@ -1121,7 +1152,7 @@ - (void)ui_menu_activate_media_if1_m1_wp_set:(NSNumber*)active { - if1M1WpSet = [active boolValue]; + [if1Wp1 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m2_eject:(NSNumber*)active @@ -1131,7 +1162,7 @@ - (void)ui_menu_activate_media_if1_m2_wp_set:(NSNumber*)active { - if1M2WpSet = [active boolValue]; + [if1Wp2 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m3_eject:(NSNumber*)active @@ -1141,7 +1172,7 @@ - (void)ui_menu_activate_media_if1_m3_wp_set:(NSNumber*)active { - if1M3WpSet = [active boolValue]; + [if1Wp3 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m4_eject:(NSNumber*)active @@ -1151,7 +1182,7 @@ - (void)ui_menu_activate_media_if1_m4_wp_set:(NSNumber*)active { - if1M4WpSet = [active boolValue]; + [if1Wp4 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m5_eject:(NSNumber*)active @@ -1161,7 +1192,7 @@ - (void)ui_menu_activate_media_if1_m5_wp_set:(NSNumber*)active { - if1M5WpSet = [active boolValue]; + [if1Wp5 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m6_eject:(NSNumber*)active @@ -1171,7 +1202,7 @@ - (void)ui_menu_activate_media_if1_m6_wp_set:(NSNumber*)active { - if1M6WpSet = [active boolValue]; + [if1Wp6 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } - (void)ui_menu_activate_media_if1_m7_eject:(NSNumber*)active @@ -1179,6 +1210,11 @@ if1M7Eject = [active boolValue]; } +- (void)ui_menu_activate_media_if1_m7_wp_set:(NSNumber*)active +{ + [if1Wp7 setState:[active boolValue] == YES ? NSOffState : NSOnState]; +} + - (void)ui_menu_activate_media_if1_m8_eject:(NSNumber*)active { if1M8Eject = [active boolValue]; @@ -1186,14 +1222,9 @@ - (void)ui_menu_activate_media_if1_m8_wp_set:(NSNumber*)active { - if1M8WpSet = [active boolValue]; + [if1Wp8 setState:[active boolValue] == YES ? NSOffState : NSOnState]; } -- (void)ui_menu_activate_media_if1_m7_wp_set:(NSNumber*)active -{ - if1M7WpSet = [active boolValue]; -} - - (void)ui_menu_activate_recording:(NSNumber*)active { record = recordFromSnapshot = play = ![active boolValue]; @@ -1246,18 +1277,22 @@ break; case 13: case 14: + case 27: return diskTrdosEjectA == 0 ? NO : YES; break; case 15: case 16: + case 26: return diskTrdosEjectB == 0 ? NO : YES; break; case 20: case 21: + case 24: return diskPlusDEjectA == 0 ? NO : YES; break; case 22: case 23: + case 25: return diskPlusDEjectB == 0 ? NO : YES; break; case 6: @@ -1325,6 +1360,46 @@ case 76: return playTape == 0 ? NO : YES; break; + case 32: + case 33: + case 34: + return if1M1Eject == 0 ? NO : YES; + break; + case 82: + case 83: + case 84: + return if1M2Eject == 0 ? NO : YES; + break; + case 92: + case 93: + case 94: + return if1M3Eject == 0 ? NO : YES; + break; + case 102: + case 103: + case 104: + return if1M4Eject == 0 ? NO : YES; + break; + case 112: + case 113: + case 114: + return if1M5Eject == 0 ? NO : YES; + break; + case 122: + case 123: + case 124: + return if1M6Eject == 0 ? NO : YES; + break; + case 132: + case 133: + case 134: + return if1M7Eject == 0 ? NO : YES; + break; + case 142: + case 143: + case 144: + return if1M8Eject == 0 ? NO : YES; + break; default: return YES; } @@ -1967,6 +2042,20 @@ } static void +cocoaui_disk_write_protect( specplus3_drive_number drive, int wrprot ) +{ + [[DisplayOpenGLView instance] pause]; + if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { + //[[DisplayOpenGLView instance] specplus3DiskWriteProtect:drive protect:wrprot]; + } else if( beta_active ) { + [[DisplayOpenGLView instance] betaDiskWriteProtect:drive protect:wrprot]; + } else { + [[DisplayOpenGLView instance] plusdDiskWriteProtect:drive protect:wrprot]; + } + [[DisplayOpenGLView instance] unpause]; +} + +static void cocoaui_mdr_eject( int drive, int write ) { [[DisplayOpenGLView instance] pause]; @@ -2075,10 +2164,18 @@ method = @selector(ui_menu_activate_media_disk_plusd_a_eject:); break; + case UI_MENU_ITEM_MEDIA_DISK_PLUSD_1_WP_SET: + method = @selector(ui_menu_activate_media_plusd_a_wp_set:); + break; + case UI_MENU_ITEM_MEDIA_DISK_PLUSD_2_EJECT: method = @selector(ui_menu_activate_media_disk_plusd_b_eject:); break; + case UI_MENU_ITEM_MEDIA_DISK_PLUSD_2_WP_SET: + method = @selector(ui_menu_activate_media_plusd_b_wp_set:); + break; + case UI_MENU_ITEM_RECORDING: method = @selector(ui_menu_activate_recording:); break; Modified: trunk/fuse/fusepb/models/Emulator.h =================================================================== --- trunk/fuse/fusepb/models/Emulator.h 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/models/Emulator.h 2008-03-27 12:04:48 UTC (rev 495) @@ -96,10 +96,12 @@ -(void) betaDiskInsert:(const char *)filename inDrive:(beta_drive_number)which; -(void) betaDiskEject:(beta_drive_number)drive saveFirst:(int)write; -(void) betaDiskWrite:(const char *)filename inDrive:(beta_drive_number)which; +-(void) betaDiskWriteProtect:(beta_drive_number)which protect:(int)write; -(void) plusdDiskInsert:(const char *)filename inDrive:(plusd_drive_number)which; -(void) plusdDiskEject:(plusd_drive_number)drive saveFirst:(int)write; -(void) plusdDiskWrite:(const char *)filename inDrive:(plusd_drive_number)which; +-(void) plusdDiskWriteProtect:(plusd_drive_number)which protect:(int)write; -(void) snapshotWrite:(const char *)filename; Modified: trunk/fuse/fusepb/models/Emulator.m =================================================================== --- trunk/fuse/fusepb/models/Emulator.m 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/models/Emulator.m 2008-03-27 12:04:48 UTC (rev 495) @@ -321,6 +321,11 @@ beta_disk_write( which, filename ); } +-(void) betaDiskWriteProtect:(beta_drive_number)which protect:(int)write +{ + beta_disk_writeprotect( which, write ); +} + -(void) plusdDiskInsert:(const char *)filename inDrive:(plusd_drive_number)which { plusd_disk_insert( which, filename, 0 ); @@ -336,6 +341,11 @@ plusd_disk_write( which, filename ); } +-(void) plusdDiskWriteProtect:(plusd_drive_number)which protect:(int)write +{ + plusd_disk_writeprotect( which, write ); +} + -(void) snapshotWrite:(const char *)filename { snapshot_write( filename ); Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib 2008-03-27 12:04:48 UTC (rev 495) @@ -23,6 +23,8 @@ "disk_eject_write_b" = id; "disk_open_a" = id; "disk_open_b" = id; + "disk_write_protect_a" = id; + "disk_write_protect_b" = id; "dock_eject" = id; "dock_open" = id; "export_screen" = id; @@ -84,11 +86,23 @@ disk = NSMenuItem; diskPlus3 = NSMenuItem; diskPlusD = NSMenuItem; + diskPlusDWpA = NSMenuItem; + diskPlusDWpB = NSMenuItem; diskTrDos = NSMenuItem; + diskTrDosWpA = NSMenuItem; + diskTrDosWpB = NSMenuItem; divide = NSMenuItem; dock = NSMenuItem; ide = NSMenuItem; if1 = NSMenuItem; + if1Wp1 = NSMenuItem; + if1Wp2 = NSMenuItem; + if1Wp3 = NSMenuItem; + if1Wp4 = NSMenuItem; + if1Wp5 = NSMenuItem; + if1Wp6 = NSMenuItem; + if1Wp7 = NSMenuItem; + if1Wp8 = NSMenuItem; if2 = NSMenuItem; recentSnaps = NSMenu; saveFileType = NSPopUpButton; Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-03-27 12:04:48 UTC (rev 495) @@ -13,8 +13,8 @@ <string>489.0</string> <key>IBOpenObjects</key> <array> + <integer>877</integer> <integer>29</integer> - <integer>877</integer> </array> <key>IBSystem Version</key> <string>9C7010</string> Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.h 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.h 2008-03-27 12:04:48 UTC (rev 495) @@ -126,10 +126,12 @@ -(void) betaDiskInsert:(const char *)filename inDrive:(beta_drive_number)which; -(void) betaDiskEject:(beta_drive_number)drive saveFirst:(int)write; -(void) betaDiskWrite:(const char *)filename inDrive:(beta_drive_number)which; +-(void) betaDiskWriteProtect:(beta_drive_number)which protect:(int)write; -(void) plusdDiskInsert:(const char *)filename inDrive:(plusd_drive_number)which; -(void) plusdDiskEject:(plusd_drive_number)drive saveFirst:(int)write; -(void) plusdDiskWrite:(const char *)filename inDrive:(plusd_drive_number)which; +-(void) plusdDiskWriteProtect:(plusd_drive_number)which protect:(int)write; -(void) snapshotWrite:(const char *)filename; Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-03-27 12:03:43 UTC (rev 494) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-03-27 12:04:48 UTC (rev 495) @@ -743,6 +743,11 @@ [proxy_emulator betaDiskWrite:filename inDrive:which]; } +-(void) betaDiskWriteProtect:(beta_drive_number)which protect:(int)write +{ + [proxy_emulator betaDiskWriteProtect:which protect:write]; +} + -(void) plusdDiskInsert:(const char *)filename inDrive:(plusd_drive_number)which { [proxy_emulator plusdDiskInsert:filename inDrive:which]; @@ -758,6 +763,11 @@ [proxy_emulator plusdDiskWrite:filename inDrive:which]; } +-(void) plusdDiskWriteProtect:(plusd_drive_number)which protect:(int)write +{ + [proxy_emulator plusdDiskWriteProtect:which protect:write]; +} + -(void) snapshotWrite:(const char *)filename { [proxy_emulator snapshotWrite:filename]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-03-28 13:00:55
|
Revision: 496 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=496&view=rev Author: fredm Date: 2008-03-28 06:01:00 -0700 (Fri, 28 Mar 2008) Log Message: ----------- Move version to Fuse for Mac OS X 0.9.0. Modified Paths: -------------- trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist trunk/fuse/fusepb/config.h trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2008-03-27 12:04:48 UTC (rev 495) +++ trunk/fuse/fusepb/Info-Fuse.plist 2008-03-28 13:01:00 UTC (rev 496) @@ -476,7 +476,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>20070611</string> + <string>0.9.0</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> Modified: trunk/fuse/fusepb/config.h =================================================================== --- trunk/fuse/fusepb/config.h 2008-03-27 12:04:48 UTC (rev 495) +++ trunk/fuse/fusepb/config.h 2008-03-28 13:01:00 UTC (rev 496) @@ -152,7 +152,7 @@ /* #undef USE_WIDGET */ /* Version number of package */ -#define VERSION "0.8.0.1" +#define VERSION "0.9.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-03-27 12:04:48 UTC (rev 495) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-03-28 13:01:00 UTC (rev 496) @@ -14,7 +14,7 @@ name="What's New In Fuse?" id="What's New In Fuse?"></a><!-- AppleSegDescription="This section describes the changes for version 0.8.0 of the Fuse emulator." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">What's new in Fuse -For Mac OS X 20080217</font></h2> +For Mac OS X 0.9.0</font></h2> <ul> <li><font face="Lucida Grande,Helvetica,Arial">New features:</font></li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-03-29 03:20:02
|
Revision: 500 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=500&view=rev Author: fredm Date: 2008-03-28 20:19:57 -0700 (Fri, 28 Mar 2008) Log Message: ----------- Add preferences support for Beta 128 interface. Modified Paths: -------------- trunk/fuse/fusepb/controllers/PreferencesController.m trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib Modified: trunk/fuse/fusepb/controllers/PreferencesController.m =================================================================== --- trunk/fuse/fusepb/controllers/PreferencesController.m 2008-03-29 03:18:36 UTC (rev 499) +++ trunk/fuse/fusepb/controllers/PreferencesController.m 2008-03-29 03:19:57 UTC (rev 500) @@ -351,6 +351,9 @@ case 6: // PlusD settings_current.plusd = 1; break; + case 7: // Beta 128 + settings_current.beta128 = 1; + break; default: // WTF? break; } @@ -378,6 +381,8 @@ value = 5; } else if ( settings_current.plusd ) { value = 6; + } else if ( settings_current.beta128 ) { + value = 7; } [massStorageType selectCellWithTag:value]; Modified: trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2008-03-29 03:18:36 UTC (rev 499) +++ trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2008-03-29 03:19:57 UTC (rev 500) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1548</integer> + <integer>1556</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1545</integer> + <integer>1553</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1546</integer> + <integer>1554</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1547</integer> + <integer>1555</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1237</integer> + <integer>1244</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1238</integer> + <integer>1245</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1171</integer> + <integer>1178</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1172</integer> + <integer>1179</integer> </dict> <key>NSNextOid</key> - <integer>1158</integer> + <integer>1196</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1164</integer> + <integer>1171</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1170</integer> + <integer>1177</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1239</integer> + <integer>1246</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1240</integer> + <integer>1247</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> @@ -160,103 +160,99 @@ </dict> <dict> <key>CF$UID</key> - <integer>811</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>820</integer> </dict> <dict> <key>CF$UID</key> - <integer>821</integer> + <integer>827</integer> </dict> <dict> <key>CF$UID</key> - <integer>825</integer> + <integer>828</integer> </dict> <dict> <key>CF$UID</key> - <integer>828</integer> + <integer>832</integer> </dict> <dict> <key>CF$UID</key> - <integer>831</integer> + <integer>835</integer> </dict> <dict> <key>CF$UID</key> - <integer>834</integer> + <integer>838</integer> </dict> <dict> <key>CF$UID</key> - <integer>837</integer> + <integer>841</integer> </dict> <dict> <key>CF$UID</key> - <integer>840</integer> + <integer>844</integer> </dict> <dict> <key>CF$UID</key> - <integer>843</integer> + <integer>847</integer> </dict> <dict> <key>CF$UID</key> - <integer>846</integer> + <integer>850</integer> </dict> <dict> <key>CF$UID</key> - <integer>849</integer> + <integer>853</integer> </dict> <dict> <key>CF$UID</key> - <integer>852</integer> + <integer>856</integer> </dict> <dict> <key>CF$UID</key> - <integer>855</integer> + <integer>859</integer> </dict> <dict> <key>CF$UID</key> - <integer>858</integer> + <integer>862</integer> </dict> <dict> <key>CF$UID</key> - <integer>861</integer> + <integer>865</integer> </dict> <dict> <key>CF$UID</key> - <integer>864</integer> + <integer>868</integer> </dict> <dict> <key>CF$UID</key> - <integer>867</integer> + <integer>871</integer> </dict> <dict> <key>CF$UID</key> - <integer>870</integer> + <integer>874</integer> </dict> <dict> <key>CF$UID</key> - <integer>873</integer> + <integer>877</integer> </dict> <dict> <key>CF$UID</key> - <integer>876</integer> + <integer>880</integer> </dict> <dict> <key>CF$UID</key> - <integer>879</integer> + <integer>883</integer> </dict> <dict> <key>CF$UID</key> - <integer>882</integer> + <integer>886</integer> </dict> <dict> <key>CF$UID</key> - <integer>885</integer> + <integer>889</integer> </dict> <dict> <key>CF$UID</key> - <integer>894</integer> + <integer>892</integer> </dict> <dict> <key>CF$UID</key> @@ -264,55 +260,51 @@ </dict> <dict> <key>CF$UID</key> - <integer>904</integer> + <integer>908</integer> </dict> <dict> <key>CF$UID</key> - <integer>905</integer> + <integer>911</integer> </dict> <dict> <key>CF$UID</key> - <integer>907</integer> + <integer>912</integer> </dict> <dict> <key>CF$UID</key> - <integer>918</integer> + <integer>914</integer> </dict> <dict> <key>CF$UID</key> - <integer>921</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>925</integer> </dict> <dict> <key>CF$UID</key> - <integer>942</integer> + <integer>928</integer> </dict> <dict> <key>CF$UID</key> - <integer>946</integer> + <integer>932</integer> </dict> <dict> <key>CF$UID</key> - <integer>950</integer> + <integer>949</integer> </dict> <dict> <key>CF$UID</key> - <integer>954</integer> + <integer>953</integer> </dict> <dict> <key>CF$UID</key> - <integer>960</integer> + <integer>957</integer> </dict> <dict> <key>CF$UID</key> - <integer>963</integer> + <integer>961</integer> </dict> <dict> <key>CF$UID</key> - <integer>966</integer> + <integer>967</integer> </dict> <dict> <key>CF$UID</key> @@ -320,82 +312,78 @@ </dict> <dict> <key>CF$UID</key> - <integer>972</integer> + <integer>973</integer> </dict> <dict> <key>CF$UID</key> - <integer>974</integer> + <integer>977</integer> </dict> <dict> <key>CF$UID</key> - <integer>976</integer> + <integer>979</integer> </dict> <dict> <key>CF$UID</key> - <integer>978</integer> + <integer>981</integer> </dict> <dict> <key>CF$UID</key> - <integer>980</integer> + <integer>983</integer> </dict> <dict> <key>CF$UID</key> - <integer>981</integer> + <integer>985</integer> </dict> <dict> <key>CF$UID</key> - <integer>982</integer> + <integer>987</integer> </dict> <dict> <key>CF$UID</key> - <integer>983</integer> + <integer>988</integer> </dict> <dict> <key>CF$UID</key> - <integer>985</integer> + <integer>989</integer> </dict> <dict> <key>CF$UID</key> - <integer>988</integer> + <integer>990</integer> </dict> <dict> <key>CF$UID</key> - <integer>991</integer> + <integer>992</integer> </dict> <dict> <key>CF$UID</key> - <integer>994</integer> + <integer>995</integer> </dict> <dict> <key>CF$UID</key> - <integer>997</integer> + <integer>998</integer> </dict> <dict> <key>CF$UID</key> - <integer>1005</integer> + <integer>1001</integer> </dict> <dict> <key>CF$UID</key> - <integer>1006</integer> + <integer>1004</integer> </dict> <dict> <key>CF$UID</key> - <integer>1007</integer> + <integer>1012</integer> </dict> <dict> <key>CF$UID</key> - <integer>1008</integer> + <integer>1013</integer> </dict> <dict> <key>CF$UID</key> - <integer>1011</integer> + <integer>1014</integer> </dict> <dict> <key>CF$UID</key> - <integer>1012</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>1015</integer> </dict> <dict> @@ -412,23 +400,23 @@ </dict> <dict> <key>CF$UID</key> - <integer>1028</integer> + <integer>1025</integer> </dict> <dict> <key>CF$UID</key> - <integer>1029</integer> + <integer>1026</integer> </dict> <dict> <key>CF$UID</key> - <integer>1030</integer> + <integer>1029</integer> </dict> <dict> <key>CF$UID</key> - <integer>1031</integer> + <integer>1035</integer> </dict> <dict> <key>CF$UID</key> - <integer>1032</integer> + <integer>1036</integer> </dict> <dict> <key>CF$UID</key> @@ -436,27 +424,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>1041</integer> + <integer>1038</integer> </dict> <dict> <key>CF$UID</key> - <integer>1047</integer> + <integer>1039</integer> </dict> <dict> <key>CF$UID</key> - <integer>1052</integer> + <integer>1044</integer> </dict> <dict> <key>CF$UID</key> - <integer>1056</integer> + <integer>1048</integer> </dict> <dict> <key>CF$UID</key> - <integer>1060</integer> + <integer>1054</integer> </dict> <dict> <key>CF$UID</key> - <integer>1062</integer> + <integer>1059</integer> </dict> <dict> <key>CF$UID</key> @@ -464,19 +452,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1066</integer> + <integer>1067</integer> </dict> <dict> <key>CF$UID</key> - <integer>1070</integer> + <integer>1069</integer> </dict> <dict> <key>CF$UID</key> - <integer>1072</integer> + <integer>1070</integer> </dict> <dict> <key>CF$UID</key> - <integer>1074</integer> + <integer>1073</integer> </dict> <dict> <key>CF$UID</key> @@ -484,11 +472,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1080</integer> + <integer>1079</integer> </dict> <dict> <key>CF$UID</key> - <integer>1082</integer> + <integer>1081</integer> </dict> <dict> <key>CF$UID</key> @@ -500,19 +488,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1090</integer> + <integer>1089</integer> </dict> <dict> <key>CF$UID</key> - <integer>1093</integer> + <integer>1091</integer> </dict> <dict> <key>CF$UID</key> - <integer>1096</integer> + <integer>1094</integer> </dict> <dict> <key>CF$UID</key> - <integer>1098</integer> + <integer>1097</integer> </dict> <dict> <key>CF$UID</key> @@ -520,31 +508,31 @@ </dict> <dict> <key>CF$UID</key> - <integer>1101</integer> + <integer>1103</integer> </dict> <dict> <key>CF$UID</key> - <integer>1102</integer> + <integer>1105</integer> </dict> <dict> <key>CF$UID</key> - <integer>1103</integer> + <integer>1107</integer> </dict> <dict> <key>CF$UID</key> - <integer>1105</integer> + <integer>1108</integer> </dict> <dict> <key>CF$UID</key> - <integer>1107</integer> + <integer>1109</integer> </dict> <dict> <key>CF$UID</key> - <integer>1109</integer> + <integer>1110</integer> </dict> <dict> <key>CF$UID</key> - <integer>1111</integer> + <integer>1112</integer> </dict> <dict> <key>CF$UID</key> @@ -552,31 +540,31 @@ </dict> <dict> <key>CF$UID</key> - <integer>1117</integer> + <integer>1116</integer> </dict> <dict> <key>CF$UID</key> - <integer>1120</integer> + <integer>1118</integer> </dict> <dict> <key>CF$UID</key> - <integer>1123</integer> + <integer>1121</integer> </dict> <dict> <key>CF$UID</key> - <integer>1127</integer> + <integer>1124</integer> </dict> <dict> <key>CF$UID</key> - <integer>1129</integer> + <integer>1127</integer> </dict> <dict> <key>CF$UID</key> - <integer>1131</integer> + <integer>1130</integer> </dict> <dict> <key>CF$UID</key> - <integer>1133</integer> + <integer>1134</integer> </dict> <dict> <key>CF$UID</key> @@ -592,27 +580,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>1142</integer> + <integer>1143</integer> </dict> <dict> <key>CF$UID</key> - <integer>1144</integer> + <integer>1145</integer> </dict> <dict> <key>CF$UID</key> - <integer>1146</integer> + <integer>1147</integer> </dict> <dict> <key>CF$UID</key> - <integer>1148</integer> + <integer>1149</integer> </dict> <dict> <key>CF$UID</key> - <integer>1150</integer> + <integer>1151</integer> </dict> <dict> <key>CF$UID</key> - <integer>1152</integer> + <integer>1153</integer> </dict> <dict> <key>CF$UID</key> @@ -620,16 +608,28 @@ </dict> <dict> <key>CF$UID</key> - <integer>1158</integer> + <integer>1157</integer> </dict> <dict> <key>CF$UID</key> - <integer>1160</integer> + <integer>1159</integer> </dict> <dict> <key>CF$UID</key> <integer>1162</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>1165</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1167</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1169</integer> + </dict> </array> </dict> <dict> @@ -689,12 +689,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>207</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>297</integer> + <integer>327</integer> </dict> <key>NSNextResponder</key> <dict> @@ -704,7 +704,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>201</integer> + <integer>262</integer> </dict> </dict> <string>{{18, 127}, {105, 18}}</string> @@ -1124,7 +1124,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>810</integer> + <integer>819</integer> </dict> <key>NSSource</key> <dict> @@ -1136,22 +1136,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>809</integer> + <integer>818</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>808</integer> + <integer>817</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>807</integer> + <integer>816</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>806</integer> + <integer>815</integer> </dict> <key>NSViewClass</key> <dict> @@ -1211,12 +1211,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>207</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>805</integer> + <integer>814</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1233,7 +1233,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> @@ -1243,11 +1243,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>767</integer> + <integer>776</integer> </dict> <dict> <key>CF$UID</key> - <integer>800</integer> + <integer>809</integer> </dict> </array> </dict> @@ -1255,7 +1255,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>766</integer> + <integer>775</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1269,7 +1269,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>197</integer> + <integer>258</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1279,7 +1279,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>531</integer> + <integer>371</integer> </dict> <key>NSSubviews</key> <dict> @@ -1294,7 +1294,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>198</integer> + <integer>259</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1303,7 +1303,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> @@ -1317,12 +1317,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>207</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>196</integer> + <integer>257</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1344,7 +1344,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> @@ -1354,140 +1354,109 @@ </dict> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>56</integer> </dict> <dict> <key>CF$UID</key> - <integer>171</integer> + <integer>60</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>218</integer> + </dict> </array> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>23</integer> </dict> - <key>NSBorderType</key> - <integer>3</integer> - <key>NSBoxType</key> - <integer>0</integer> - <key>NSContentView</key> + <key>NSCell</key> <dict> <key>CF$UID</key> <integer>54</integer> </dict> + <key>NSEnabled</key> + <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>53</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> <integer>50</integer> </dict> - <key>NSOffsets</key> - <dict> - <key>CF$UID</key> - <integer>120</integer> - </dict> - <key>NSSubviews</key> - <dict> - <key>CF$UID</key> - <integer>53</integer> - </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> <integer>50</integer> </dict> - <key>NSTitleCell</key> - <dict> - <key>CF$UID</key> - <integer>121</integer> - </dict> - <key>NSTitlePosition</key> - <integer>2</integer> - <key>NSTransparent</key> - <false/> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{378, 287}, {198, 18}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>22</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - </array> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>21</integer> </dict> - <key>NSFrame</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>18</integer> </dict> - <key>NSNextResponder</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>55</integer> </dict> - <key>NSSubviews</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>52</integer> </dict> - <key>NSSuperview</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>21</integer> </dict> - </dict> - <dict> - <key>$class</key> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>15</integer> </dict> - <key>NS.objects</key> - <array> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>79</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>94</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>108</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>112</integer> - </dict> - </array> </dict> + <string>Kempston joystick interface</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>23</integer> </dict> <key>NSCell</key> <dict> @@ -1504,45 +1473,46 @@ <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>50</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>50</integer> </dict> <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{144, 44}, {249, 26}}</string> + <string>{{378, 243}, {138, 18}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>22</integer> </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>21</integer> </dict> <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>18</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>2</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>1024</integer> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>59</integer> + </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> @@ -1551,298 +1521,352 @@ <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>21</integer> </dict> - <key>NSMenu</key> - <dict> - <key>CF$UID</key> - <integer>63</integer> - </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>62</integer> - </dict> - <key>NSMenuItemRespectAlignment</key> - <true/> <key>NSPeriodicDelay</key> - <integer>400</integer> + <integer>200</integer> <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> + <integer>25</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> </dict> + <string>Interface II</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>17</integer> + <integer>23</integer> </dict> - <key>NSName</key> + <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>16</integer> + <integer>62</integer> </dict> - <key>NSSize</key> - <real>13</real> - <key>NSfFlags</key> - <integer>16</integer> - </dict> - <dict> - <key>$class</key> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>61</integer> </dict> - <key>NS.string</key> - <string></string> - </dict> - <dict> - <key>$class</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>50</integer> </dict> - <key>NS.string</key> - <string></string> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> </dict> + <string>{{378, 265}, {187, 18}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>22</integer> </dict> - <key>NSAction</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>21</integer> </dict> - <key>NSKeyEquiv</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>18</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> <integer>63</integer> </dict> - <key>NSMixedImage</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>60</integer> </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>21</integer> </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>58</integer> + <integer>15</integer> </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>64</integer> - </dict> </dict> + <string>Kempston mouse</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>217</integer> </dict> - <key>NSMenuItems</key> + <key>NSBorderType</key> + <integer>3</integer> + <key>NSBoxType</key> + <integer>0</integer> + <key>NSContentView</key> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>66</integer> </dict> - <key>NSTitle</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>208</integer> </dict> - </dict> - <string>Item1</string> - <dict> - <key>$class</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>50</integer> </dict> - <key>NSClassName</key> + <key>NSOffsets</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>209</integer> </dict> - <key>NSResourceName</key> + <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSTitleCell</key> + <dict> + <key>CF$UID</key> + <integer>210</integer> + </dict> + <key>NSTitlePosition</key> + <integer>2</integer> + <key>NSTransparent</key> + <false/> </dict> - <string>NSImage</string> - <string>NSMenuCheckmark</string> <dict> - <key>$classes</key> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>89</integer> + </dict> + <key>NS.objects</key> <array> - <string>NSCustomResource</string> - <string>%NSCustomResource</string> - <string>NSObject</string> + <dict> + <key>CF$UID</key> + <integer>66</integer> + </dict> </array> - <key>$classname</key> - <string>NSCustomResource</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>207</integer> </dict> - <key>NSClassName</key> + <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>206</integer> </dict> - <key>NSResourceName</key> + <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>64</integer> </dict> - </dict> - <string>NSMenuMixedState</string> - <string>_popUpItemAction:</string> - <dict> - <key>$classes</key> - <array> - <string>NSMenuItem</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMenuItem</string> - </dict> - <dict> - <key>$class</key> + <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>67</integer> </dict> - <key>NS.string</key> - <string>OtherViews</string> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>68</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>139</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>143</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>147</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>151</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>155</integer> + </dict> </array> </dict> <dict> - <key>$classes</key> - <array> - <string>NSMutableArray</string> - <string>NSArray</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMutableArray</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSMenu</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMenu</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSPopUpButtonCell</string> - <string>NSMenuItemCell</string> - <string>NSButtonCell</string> - <string>%NSButtonCell</string> - <string>NSActionCell</string> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSPopUpButtonCell</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSPopUpButton</string> - <string>NSButton</string> - <string>NSControl</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSPopUpButton</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>138</integer> </dict> - <key>NSCell</key> + <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>133</integer> </dict> + <key>NSCellBackgroundColor</key> + <dict> + <key>CF$UID</key> + <integer>137</integer> + </dict> + <key>NSCellClass</key> + <dict> + <key>CF$UID</key> + <integer>124</integer> + </dict> + <key>NSCellSize</key> + <dict> + <key>CF$UID</key> + <integer>122</integer> + </dict> + <key>NSCells</key> + <dict> + <key>CF$UID</key> + <integer>70</integer> + </dict> <key>NSEnabled</key> <true/> + <key>NSFont</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>80</integer> + <integer>69</integer> </dict> + <key>NSIntercellSpacing</key> + <dict> + <key>CF$UID</key> + <integer>123</integer> + </dict> + <key>NSMatrixFlags</key> + <integer>1076363264</integer> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>66</integer> </dict> + <key>NSNumCols</key> + <integer>1</integer> + <key>NSNumRows</key> + <integer>8</integer> + <key>NSProtoCell</key> + <dict> + <key>CF$UID</key> + <integer>125</integer> + </dict> + <key>NSSelectedCell</key> + <dict> + <key>CF$UID</key> + <integer>71</integer> + </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>66</integer> </dict> <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{144, 12}, {125, 26}}</string> + <string>{{14, 9}, {138, 158}}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>89</integer> </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>71</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>78</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>93</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>101</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>109</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>117</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>119</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> <key>NSAlternateContents</key> <dict> <key>CF$UID</key> @@ -1851,145 +1875,193 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>73</integer> </dict> - <key>NSAltersState</key> - <true/> - <key>NSArrowPosition</key> - <integer>1</integer> <key>NSButtonFlags</key> - <integer>109199615</integer> + <integer>1211912703</integer> <key>NSButtonFlags2</key> - <integer>1</integer> + <integer>2</integer> <key>NSCellFlags</key> - <integer>-2076049856</integer> + <integer>-2080244224</integer> <key>NSCellFlags2</key> - <integer>1024</integer> - <key>NSControlView</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>72</integer> </dict> - <key>NSKeyEquivalent</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>68</integer> </dict> - <key>NSMenu</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>21</integer> </dict> - <key>NSMenuItem</key> - <dict> - <key>CF$UID</key> - <integer>83</integer> - </dict> - <key>NSMenuItemRespectAlignment</key> - <true/> <key>NSPeriodicDelay</key> - <integer>400</integer> + <integer>200</integer> <key>NSPeriodicInterval</key> - <integer>75</integer> - <key>NSPreferredEdge</key> - <integer>3</integer> + <integer>25</integer> <key>NSSupport</key> <dict> <key>CF$UID</key> <integer>15</integer> </dict> - <key>NSUsesItemFromMenu</key> - <true/> </dict> + <string>None</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>20</integer> </dict> - <key>NS.string</key> - <string></string> + <key>NSImageName</key> + <dict> + <key>CF$UID</key> + <integer>74</integer> + </dict> </dict> + <string>NSRadioButton</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>22</integer> </dict> - <key>NSAction</key> + <key>NSAlternateContents</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>77</integer> </dict> - <key>NSKeyEquiv</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>73</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>76</integer> </dict> - <key>NSMixedImage</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>68</integer> </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> + <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>77</integer> </dict> - <key>NSState</key> - <integer>1</integer> - <key>NSTarget</key> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>15</integer> </dict> - <key>NSTitle</key> + <key>NSTag</key> + <integer>1</integer> + </dict> + <string>Interface I</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>45</integer> </dict> + <key>NS.string</key> + <string></string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>22</integer> </dict> - <key>NSMenuItems</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>73</integer> </dict> - <key>NSTitle</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>79</integer> </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>68</integer> + </dict> + <key>NSNormalImage</key> + <dict> + <key>CF$UID</key> + <integer>80</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSTag</key> + <integer>2</integer> </dict> - <string>_popUpItemAction:</string> + <string>Simple 8-bit IDE</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>45</integer> + <integer>92</integer> </dict> - <key>NS.string</key> - <string>OtherViews</string> + <key>NSColor</key> + <dict> + <key>CF$UID</key> + <integer>90</integer> + </dict> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> + <dict> + <key>CF$UID</key> + <integer>82</integer> + </dict> + <key>NSSize</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> </dict> + <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>89</integer> </dict> <key>NS.objects</key> <array> @@ -1997,396 +2069,709 @@ <key>CF$UID</key> <integer>83</integer> </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>88</integer> + </dict> + <key>NS.objects</key> + <array> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>85</integer> </dict> </array> </dict> + <integer>0</integer> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>87</integer> </dict> - <key>NSAction</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>86</integer> </dict> - <key>NSKeyEquiv</key> + </dict> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 + +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u + LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw + /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ + ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA + AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// + ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA + ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA + AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB + AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS + AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB + </data> + <dict> + <key>$classes</key> + <array> + <string>NSBitmapImageRep</string> + <string>NSImageRep</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSBitmapImageRep</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSArray</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSArray</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSMutableArray</string> + <string>NSArray</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMutableArray</string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>91</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MCAwAA== + </data> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSColor</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSColor</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSImage</string> + <string>%NSImage</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSImage</string> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>22</integer> </dict> - <key>NSMixedImage</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>73</integer> </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>94</integer> </dict> - <key>NSTarget</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>68</integer> </dict> - <key>NSTitle</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>95</integer> </dict> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSTag</key> + <integer>3</integer> </dict> - <string>Item2</string> - <string>_popUpItemAction:</string> + <string>ZXATASP interface</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>92</integer> </dict> - <key>NSAction</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>90</integer> </dict> - <key>NSKeyEquiv</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>21</integer> + <integer>97</integer> </dict> - <key>NSKeyEquivModMask</key> - <integer>1048576</integer> - <key>NSMenu</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>96</integer> </dict> - <key>NSMixedImage</key> + </dict> + <string>{18, 18}</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>89</integer> </dict> - <key>NSMnemonicLoc</key> - <integer>2147483647</integer> - <key>NSOnImage</key> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>98</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>88</integer> </dict> - <key>NSTarget</key> - <dict> - <key>CF$UID</key> - <integer>81</integer> - </dict> - <key>NSTitle</key> - <dict> - <key>CF$UID</key> - <integer>92</integer> - </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>99</integer> + </dict> + </array> </dict> - <string>Item3</string> - <string>_popUpItemAction:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>87</integer> </dict> - <key>NSCell</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>100</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>95</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>54</integer> - </dict> - <key>NSvFlags</key> - <integer>256</integer> </dict> - <string>{{11, 50}, {114, 17}}</string> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 + +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u + LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw + /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ + ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA + AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// + ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA + ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA + AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB + AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS + AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB + </data> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>22</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>73</integer> </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> - <integer>4194304</integer> + <integer>0</integer> <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>102</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>68</integer> </dict> - <key>NSSupport</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>103</integer> </dict> - <key>NSTextColor</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>15</integer> </dict> + <key>NSTag</key> + <integer>4</integer> </dict> - <string>Real device: -</string> + <string>ZXCF interface</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>92</integer> </dict> - <key>NSCatalogName</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>90</integer> </dict> - <key>NSColor</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>105</integer> </dict> - <key>NSColorName</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>104</integer> </dict> - <key>NSColorSpace</key> - <integer>6</integer> </dict> - <string>System</string> - <string>controlColor</string> + <string>{18, 18}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>89</integer> </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MC42NjY2NjY2OQA= - </data> - </dict> - <dict> - <key>$classes</key> + <key>NS.objects</key> <array> - <string>NSColor</string> - <string>NSObject</string> + <dict> + <key>CF$UID</key> + <integer>106</integer> + </dict> </array> - <key>$classname</key> - <string>NSColor</string> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>88</integer> </dict> - <key>NSCatalogName</key> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>107</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>87</integer> </dict> - <key>NSColor</key> + <key>NSTIFFRepresentation</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>108</integer> </dict> - <key>NSColorName</key> - <dict> - <key>CF$UID</key> - <integer>104</integer> - </dict> - <key>NSColorSpace</key> - <integer>6</integer> </dict> - <string>controlTextColor</string> + <data> + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMA + AAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXwIyMjyRwcHIsJCQk8AAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ + 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAUZGRl5dXV198PDw//8/Pz///////////////////////// + ///U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAAAAAAAxEREUZqamrmtbW1 + /+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG + AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z + 8/P/9fX1//Ly8v/u7u7/0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4 + eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/7e3t/+3t7f/i4uL/zs7O + /8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ + 5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMA + AAADAAAALrCwsPrW1tb/3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn + 5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAADAAAALp2dnezg4OD/5eXl + /+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns + AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5 + +fn/9/f3//b29v/x8fH/6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4u + LpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7//v7+//v7+//19fX/8PDw + /8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ + ///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAA + AAAAAAAAAwAAABcAAABlYmJi3NLS0v3///////////////////////////// + ///V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAAAAAAAAAAAAUAAAAfAAAA + ZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMA + AACzAAAAnwAAAHcAAABDAAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAuAAAAJAAAABcAAAAKAAAA + AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DQEAAAMAAAABABIAAAEBAAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAAB + AAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMA + AAABAAQAAAEWAAMAAAABBxwAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS + AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQAB + </data> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>22</integer> </dict> - <key>NSColorSpace</key> - <integer>3</integer> - <key>NSWhite</key> - <data> - MAA= - </data> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSTextFieldCell</string> - <string>NSActionCell</string> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSTextFieldCell</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSTextField</string> - <string>%NSTextField</string> - <string>NSControl</string> - <string>NSView</string> - <string>NSResponder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSTextField</string> - </dict> - <dict> - <key>$class</key> + <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>73</integer> </dict> - <key>NSCell</key> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>0</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> <dict> <key>CF$UID</key> <integer>110</integer> </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> + <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>68</integer> </dict> - <key>NSNextResponder</key> + <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>111</integer> </dict> - <key>NSSuperview</key> + <key>NSPeriodicDelay</key> + <integer>400</integer> + <key>NSPeriodicInterval</key> + <integer>75</integer> + <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>15</integer> </dict> - <key>NSvFlags</key> - <integer>256</integer> + <key>NSTag</key> + <integer>5</integer> </dict> - <string>{{11, 18}, {122, 17}}</string> + <string>DivIDE</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>92</integer> </dict> - <key>NSBackgroundColor</key> + <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>90</integer> </dict> - <key>NSCellFlags</key> - <integer>67239424</integer> - <key>NSCellFlags2</key> - <integer>4194304</integer> - <key>NSContents</key> + <key>NSImageFlags</key> + <integer>549453824</integer> + <key>NSReps</key> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>113</integer> </dict> - <key>NSControlView</key> + <key>NSSize</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>112</integer> </dict> - <key>NSSupport</key> + </dict> + <string>{18, 18}</string> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>15</integer> + <integer>89</integer> </dict> - <key>NSTextColor</key> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>114</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>88</integer> </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <dict> + ... [truncated message content] |
From: <fr...@us...> - 2008-04-08 13:31:11
|
Revision: 504 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=504&view=rev Author: fredm Date: 2008-04-08 06:31:05 -0700 (Tue, 08 Apr 2008) Log Message: ----------- Add 4x and 5x zoom options for those with big screens. Modified Paths: -------------- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-04-08 12:08:25 UTC (rev 503) +++ trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib 2008-04-08 13:31:05 UTC (rev 504) @@ -13,8 +13,8 @@ <string>489.0</string> <key>IBOpenObjects</key> <array> + <integer>29</integer> <integer>877</integer> - <integer>29</integer> </array> <key>IBSystem Version</key> <string>9C7010</string> Modified: trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-04-08 12:08:25 UTC (rev 503) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-04-08 13:31:05 UTC (rev 504) @@ -43,6 +43,8 @@ #define QZ_1 0x12 #define QZ_2 0x13 #define QZ_3 0x14 +#define QZ_4 0x15 +#define QZ_5 0x16 #define QZ_m 0x2E const void * @@ -136,6 +138,16 @@ size.height = 720; [[FuseController singleton] releaseCmdKeys:@"3":QZ_3]; break; + case 4: /* 1280x960 */ + size.width = 1280; + size.height = 960; + [[FuseController singleton] releaseCmdKeys:@"4":QZ_4]; + break; + case 5: /* 1600x1200 */ + size.width = 1600; + size.height = 1200; + [[FuseController singleton] releaseCmdKeys:@"5":QZ_5]; + break; case 0: default: /* Actual size */ size.width = screenTex[0].image_width; @@ -175,6 +187,9 @@ self = [super initWithFrame:frameRect pixelFormat:pixFmt]; instance = self; + buffered_screen_lock = [[NSLock alloc] init]; + [buffered_screen_lock retain]; + real_emulator = [[Emulator alloc] init]; } @@ -287,6 +302,7 @@ greenDisk = nil; [buffered_screen_lock release]; + buffered_screen_lock = nil; [self release]; } @@ -394,8 +410,7 @@ [view_lock lock]; [buffered_screen_lock lock]; - if( NO == screenTexInitialised || - ( 0 == buffered_screen.dirty->count && NO == statusbar_updated ) ) { + if( NO == screenTexInitialised ) { [buffered_screen_lock unlock]; [view_lock unlock]; return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |