[Fuse-for-macosx-commits] SF.net SVN: fuse-for-macosx: [255] branches/fusegl/fuse/fusepb
Brought to you by:
fredm
From: <fr...@us...> - 2006-12-19 11:26:36
|
Revision: 255 http://svn.sourceforge.net/fuse-for-macosx/?rev=255&view=rev Author: fredm Date: 2006-12-19 03:26:36 -0800 (Tue, 19 Dec 2006) Log Message: ----------- Remove obsolete files. Removed Paths: ------------- branches/fusegl/fuse/fusepb/SDLMain.h branches/fusegl/fuse/fusepb/SDLMain.mm Deleted: branches/fusegl/fuse/fusepb/SDLMain.h =================================================================== --- branches/fusegl/fuse/fusepb/SDLMain.h 2006-12-19 11:02:48 UTC (rev 254) +++ branches/fusegl/fuse/fusepb/SDLMain.h 2006-12-19 11:26:36 UTC (rev 255) @@ -1,13 +0,0 @@ -/* SDLMain.m - main entry point for our Cocoa-ized SDL app - Initial Version: Darrell Walisser <dwa...@pu...> - Non-NIB-Code & other changes: Max Horn <ma...@qu...> - - Feel free to customize this file to suit your needs -*/ - -#import <Cocoa/Cocoa.h> - -@interface SDLMain : NSObject -+(void)loadFile:(NSString *)filename; -+(void)initialize; -@end Deleted: branches/fusegl/fuse/fusepb/SDLMain.mm =================================================================== --- branches/fusegl/fuse/fusepb/SDLMain.mm 2006-12-19 11:02:48 UTC (rev 254) +++ branches/fusegl/fuse/fusepb/SDLMain.mm 2006-12-19 11:26:36 UTC (rev 255) @@ -1,567 +0,0 @@ -/* SDLMain.m - main entry point for our Cocoa-ized SDL app - Initial Version: Darrell Walisser <dwa...@pu...> - Non-NIB-Code & other changes: Max Horn <ma...@qu...> - - Feel free to customize this file to suit your needs - - Customised for Fuse by Fredrick Meunier <fr...@sp...> -*/ - -#import "ScalerNameToIdTransformer.h" -#import "MachineScalerIsEnabled.h" -#import "MachineNameToIdTransformer.h" -#import "VolumeSliderToPrefTransformer.h" - -extern "C" { -#import "SDL.h" -#import "SDLMain.h" -#import <sys/param.h> /* for MAXPATHLEN */ -#import <unistd.h> -#include <sys/types.h> -#include <sys/mman.h> -#include <libspectrum.h> -#include <config.h> -#include "dck.h" -#include "display.h" -#include "fuse.h" -#include "if2.h" -#include "machines/specplus3.h" -#include "rzx.h" -#include "screenshot.h" -#include "settings.h" -#include "snapshot.h" -#include "tape.h" -#include "trdos.h" -#include "utils.h" -}; - -/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, - but the method still is there and works. To avoid warnings, we declare - it ourselves here. */ -@interface NSApplication(SDL_Missing_Methods) -- (void)setAppleMenu:(NSMenu *)menu; -@end - -/* Use this flag to determine whether we use SDLMain.nib or not */ -#define SDL_USE_NIB_FILE 1 - -/* Use this flag to determine whether we use CPS (docking) or not */ -#define SDL_USE_CPS 1 -#ifdef SDL_USE_CPS -/* Portions of CPS.h */ -typedef struct CPSProcessSerNum -{ - UInt32 lo; - UInt32 hi; -} CPSProcessSerNum; - -extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); -extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); -extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); - -#endif /* SDL_USE_CPS */ - -static int gArgc; -static char **gArgv; -static BOOL gFinderLaunch; -static BOOL gCalledAppMainline = FALSE; - -static NSString *getApplicationName(void) -{ - NSDictionary *dict; - NSString *appName = 0; - - /* Determine the application name */ - dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); - if (dict) - appName = [dict objectForKey: @"CFBundleName"]; - - if (![appName length]) - appName = [[NSProcessInfo processInfo] processName]; - - return appName; -} - -#if SDL_USE_NIB_FILE -/* A helper category for NSString */ -@interface NSString (ReplaceSubString) -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; -@end -#endif - -@interface SDLApplication : NSApplication -@end - -@implementation SDLApplication -/* Invoked from the Quit menu item */ -- (void)terminate:(id)sender -{ - /* Post a SDL_QUIT event */ - SDL_Event event; - event.type = SDL_QUIT; - SDL_PushEvent(&event); -} -@end - - -/* The main class of the application, the application's delegate */ -@implementation SDLMain - -/* Set the working directory to the .app's parent directory */ -- (void) setupWorkingDirectory:(BOOL)shouldChdir -{ - - if (shouldChdir) - { - char parentdir[MAXPATHLEN]; - CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); - CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); - if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { - assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ - } - CFRelease(url); - CFRelease(url2); - } - -} - -#if SDL_USE_NIB_FILE - -/* Fix menu to contain the real app name instead of "SDL App" */ -- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName -{ - NSRange aRange; - NSEnumerator *enumerator; - NSMenuItem *menuItem; - - aRange = [[aMenu title] rangeOfString:@"SDL App"]; - if (aRange.length != 0) - [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; - - enumerator = [[aMenu itemArray] objectEnumerator]; - while ((menuItem = [enumerator nextObject])) - { - aRange = [[menuItem title] rangeOfString:@"SDL App"]; - if (aRange.length != 0) - [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; - if ([menuItem hasSubmenu]) - [self fixMenu:[menuItem submenu] withAppName:appName]; - } - [ aMenu sizeToFit ]; -} - -#else - -static void setApplicationMenu(void) -{ - /* warning: this code is very odd */ - NSMenu *appleMenu; - NSMenuItem *menuItem; - NSString *title; - NSString *appName; - - appName = getApplicationName(); - appleMenu = [[NSMenu alloc] initWithTitle:@""]; - - /* Add menu items */ - title = [@"About " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; - - [appleMenu addItem:[NSMenuItem separatorItem]]; - - title = [@"Hide " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; - - menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; - [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; - - [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; - - [appleMenu addItem:[NSMenuItem separatorItem]]; - - title = [@"Quit " stringByAppendingString:appName]; - [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; - - - /* Put menu into the menubar */ - menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; - [menuItem setSubmenu:appleMenu]; - [[NSApp mainMenu] addItem:menuItem]; - - /* Tell the application object that this is now the application menu */ - [NSApp setAppleMenu:appleMenu]; - - /* Finally give up our references to the objects */ - [appleMenu release]; - [menuItem release]; -} - -/* Create a window menu */ -static void setupWindowMenu(void) -{ - NSMenu *windowMenu; - NSMenuItem *windowMenuItem; - NSMenuItem *menuItem; - - windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; - - /* "Minimize" item */ - menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; - [windowMenu addItem:menuItem]; - [menuItem release]; - - /* Put menu into the menubar */ - windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; - [windowMenuItem setSubmenu:windowMenu]; - [[NSApp mainMenu] addItem:windowMenuItem]; - - /* Tell the application object that this is now the window menu */ - [NSApp setWindowsMenu:windowMenu]; - - /* Finally give up our references to the objects */ - [windowMenu release]; - [windowMenuItem release]; -} - -/* Replacement for NSApplicationMain */ -static void CustomApplicationMain (int argc, char **argv) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - SDLMain *sdlMain; - - /* Ensure the application object is initialised */ - [SDLApplication sharedApplication]; - -#ifdef SDL_USE_CPS - { - CPSProcessSerNum PSN; - /* Tell the dock about us */ - if (!CPSGetCurrentProcess(&PSN)) - if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) - if (!CPSSetFrontProcess(&PSN)) - [SDLApplication sharedApplication]; - } -#endif /* SDL_USE_CPS */ - - /* Set up the menubar */ - [NSApp setMainMenu:[[NSMenu alloc] init]]; - setApplicationMenu(); - setupWindowMenu(); - - /* Create SDLMain and make it the app delegate */ - sdlMain = [[SDLMain alloc] init]; - [NSApp setDelegate:sdlMain]; - - /* Start the main event loop */ - [NSApp run]; - - [sdlMain release]; - [pool release]; -} - -#endif - -/* Called when the internal event loop has just started running */ -- (void) applicationDidFinishLaunching: (NSNotification *) note -{ - int status; - - /* Set the working directory to the .app's parent directory */ - [self setupWorkingDirectory:gFinderLaunch]; - -#if SDL_USE_NIB_FILE - /* Set the main menu to contain the real app name instead of "SDL App" */ - [self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]]; -#endif - - /* Hand off to main application code */ - gCalledAppMainline = TRUE; - status = SDL_main (gArgc, gArgv); - - /* We're done, thank you for playing */ - exit(status); -} - -- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename -{ - utils_file file; libspectrum_id_t type; - libspectrum_class_t lsclass; - char fsrep[MAXPATHLEN+1]; - - if ( display_ui_initialised ) - [SDLMain loadFile:filename]; - else { - [filename getFileSystemRepresentation:fsrep maxLength:MAXPATHLEN]; - - if( utils_read_file( fsrep, &file ) ) fuse_abort(); - - if( libspectrum_identify_file( &type, fsrep, file.buffer, file.length ) ) { - utils_close_file( &file ); - fuse_abort(); - } - - if( libspectrum_identify_class( &lsclass, type ) ) fuse_abort(); - - switch( lsclass ) { - - case LIBSPECTRUM_CLASS_UNKNOWN: - fprintf( stderr, "%s: couldn't identify `%s'\n", fuse_progname, fsrep ); - case LIBSPECTRUM_CLASS_SCREENSHOT: - utils_close_file( &file ); - return NO; - - case LIBSPECTRUM_CLASS_RECORDING: - settings_current.playback_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_SNAPSHOT: - settings_current.snapshot = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_TAPE: - settings_current.tape_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_PLUS3: - settings_current.plus3disk_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_TRDOS: - settings_current.trdosdisk_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - settings_current.dck_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_IF2: - settings_current.if2_file = strdup( fsrep ); - break; - - case LIBSPECTRUM_CLASS_HARDDISK: - if( settings_current.zxcf_active ) { - settings_current.zxcf_pri_file = strdup( fsrep ); - } else if( settings_current.zxatasp_active ) { - settings_current.zxatasp_master_file = strdup( fsrep ); - } else if( settings_current.simpleide_active ) { - settings_current.simpleide_master_file = strdup( fsrep ); - } else { - /* No IDE interface active, so activate the ZXCF */ - settings_current.zxcf_active = 1; - settings_current.zxcf_pri_file = strdup( fsrep ); - } - break; - - default: - fprintf( stderr, "%s: loadFile: unknown class %d!\n", - fuse_progname, type ); - } - - if( utils_close_file( &file ) ) fuse_abort(); - } - - return YES; -} - -+(void)loadFile:(NSString *)filename -{ - utils_file file; libspectrum_id_t type; - libspectrum_class_t lsclass; - int error = 0; - char fsrep[MAXPATHLEN+1]; - - [filename getFileSystemRepresentation:fsrep maxLength:MAXPATHLEN]; - - if( utils_read_file( fsrep, &file ) ) fuse_abort(); - - if( libspectrum_identify_file( &type, fsrep, file.buffer, file.length ) ) { - utils_close_file( &file ); - fuse_abort(); - } - - if( libspectrum_identify_class( &lsclass, type ) ) fuse_abort(); - - switch( lsclass ) { - - case LIBSPECTRUM_CLASS_UNKNOWN: - fprintf( stderr, "%s: couldn't identify `%s'\n", fuse_progname, - fsrep ); - utils_close_file( &file ); - fuse_abort(); - - case LIBSPECTRUM_CLASS_RECORDING: - error = rzx_start_playback_from_buffer( file.buffer, file.length ); - break; - - case LIBSPECTRUM_CLASS_SNAPSHOT: - error = snapshot_read_buffer( file.buffer, file.length, type ); - break; - - case LIBSPECTRUM_CLASS_TAPE: - error = tape_read_buffer( file.buffer, file.length, type, fsrep, - settings_current.auto_load ); - break; - - case LIBSPECTRUM_CLASS_SCREENSHOT: - error = screenshot_scr_read( fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_PLUS3: - error = machine_select( LIBSPECTRUM_MACHINE_PLUS3 ); - - if( !error ) - error = specplus3_disk_insert_default_autoload( SPECPLUS3_DRIVE_A, - fsrep ); - break; - - case LIBSPECTRUM_CLASS_DISK_TRDOS: - error = machine_select( LIBSPECTRUM_MACHINE_PENT ); - - if( !error ) - error = trdos_disk_insert_default_autoload( TRDOS_DRIVE_A, fsrep ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - error = dck_insert( fsrep ); - - if( !error ) - error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); - break; - - case LIBSPECTRUM_CLASS_CARTRIDGE_IF2: - error = if2_insert( fsrep ); - break; - - default: - fprintf( stderr, "%s: loadFile: unknown class %d!\n", fuse_progname, type ); - fuse_abort(); - } - - if( utils_close_file( &file ) ) fuse_abort(); -} - -+(void)initialize -{ - ScalerNameToIdTransformer *sNToITransformer; - MachineScalerIsEnabled *machineScalerIsEnabled; - MachineNameToIdTransformer *mToITransformer; - VolumeSliderToPrefTransformer *vsToPTransformer; - - sNToITransformer = [[[ScalerNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:sNToITransformer - forName:@"ScalerNameToIdTransformer"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:1] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsEnabled"]; - - machineScalerIsEnabled = [[MachineScalerIsEnabled - machineScalerIsEnabledWithInt:0] - autorelease]; - - [NSValueTransformer setValueTransformer:machineScalerIsEnabled - forName:@"MachineTimexIsDisabled"]; - - mToITransformer = [[[MachineNameToIdTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:mToITransformer - forName:@"MachineNameToIdTransformer"]; - - vsToPTransformer = [[[VolumeSliderToPrefTransformer alloc] init] autorelease]; - - [NSValueTransformer setValueTransformer:vsToPTransformer - forName:@"VolumeSliderToPrefTransformer"]; - -} - -@end - - -@implementation NSString (ReplaceSubString) - -- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString -{ - unsigned int bufferSize; - unsigned int selfLen = [self length]; - unsigned int aStringLen = [aString length]; - unichar *buffer; - NSRange localRange; - NSString *result; - - bufferSize = selfLen + aStringLen - aRange.length; - buffer = static_cast<unichar*>(NSAllocateMemoryPages(bufferSize*sizeof(unichar))); - - /* Get first part into buffer */ - localRange.location = 0; - localRange.length = aRange.location; - [self getCharacters:buffer range:localRange]; - - /* Get middle part into buffer */ - localRange.location = 0; - localRange.length = aStringLen; - [aString getCharacters:(buffer+aRange.location) range:localRange]; - - /* Get last part into buffer */ - localRange.location = aRange.location + aRange.length; - localRange.length = selfLen - localRange.location; - [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; - - /* Build output string */ - result = [NSString stringWithCharacters:buffer length:bufferSize]; - - NSDeallocateMemoryPages(buffer, bufferSize); - - return result; -} - -@end - - - -#ifdef main -# undef main -#endif - - -/* Main entry point to executable - should *not* be SDL_main! */ -int main (int argc, char *argv[]) -{ - int error; - - /* Copy the arguments into a global variable */ - int i; - - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - /* This is passed if we are launched by double-clicking */ - if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { - gArgc = 1; - gFinderLaunch = YES; - } else { - gArgc = argc; - gFinderLaunch = NO; - } - gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); - assert (gArgv != NULL); - for (i = 0; i < gArgc; i++) - gArgv[i] = argv[i]; - gArgv[i] = NULL; - - error = settings_defaults( &settings_current ); - if( error ) return error; - -#if SDL_USE_NIB_FILE - [SDLApplication poseAsClass:[NSApplication class]]; - NSApplicationMain (argc, const_cast<const char**>(argv)); -#else - CustomApplicationMain (argc, argv); -#endif - - [pool release]; - - return 0; -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |