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>
 		...
 
[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.
 |