[Fuse-for-macosx-commits] SF.net SVN: fuse-for-macosx: [339] branches/fusegl/fuse/fusepb
Brought to you by:
fredm
From: <fr...@us...> - 2007-04-06 07:21:51
|
Revision: 339 http://svn.sourceforge.net/fuse-for-macosx/?rev=339&view=rev Author: fredm Date: 2007-04-06 00:21:52 -0700 (Fri, 06 Apr 2007) Log Message: ----------- Move specplus3 and trdos menus to Emulator object. Make menu enabling and disabling happen from main thread. Modified Paths: -------------- branches/fusegl/fuse/fusepb/controllers/FuseController.h branches/fusegl/fuse/fusepb/controllers/FuseController.m branches/fusegl/fuse/fusepb/models/Emulator.h branches/fusegl/fuse/fusepb/models/Emulator.m branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.h =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.h 2007-04-06 07:21:52 UTC (rev 339) @@ -132,18 +132,51 @@ - (void) releaseCmdKeys:(NSString *)character:(int)keyCode; - (void) releaseKey:(int)keyCode; -- (void)ui_menu_activate_media_cartridge:(int)active; -- (void)ui_menu_activate_media_cartridge_dock:(int)active; -- (void)ui_menu_activate_media_cartridge_if2:(int)active; -- (void)ui_menu_activate_media_disk:(int)active; -- (void)ui_menu_activate_media_disk_plus3:(int)active; -- (void)ui_menu_activate_media_disk_trdos:(int)active; -- (void)ui_menu_activate_media_if1:(int)active; -- (void)ui_menu_activate_media_ide:(int)active; -- (void)ui_menu_activate_media_ide_divide:(int)active; -- (void)ui_menu_activate_media_ide_simple8bit:(int)active; -- (void)ui_menu_activate_media_ide_zxatasp:(int)active; -- (void)ui_menu_activate_media_ide_zxcf:(int)active; +- (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; +- (void)ui_menu_activate_media_cartridge_if2:(NSNumber*)active; +- (void)ui_menu_activate_media_cartridge_if2_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_disk:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_plus3:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_plus3_a_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_plus3_b_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_trdos:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_trdos_a_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_disk_trdos_b_eject:(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; +- (void)ui_menu_activate_media_if1_m2_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m2_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m3_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m3_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m4_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m4_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m5_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m5_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m6_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m6_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m7_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m7_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m8_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_if1_m8_wp_set:(NSNumber*)active; +- (void)ui_menu_activate_media_ide:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_divide:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_divide_master_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_divide_slave_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_simple8bit:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_simple8bit_master_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_simple8bit_slave_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_zxatasp:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_zxatasp_master_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_zxatasp_slave_eject:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_zxcf:(NSNumber*)active; +- (void)ui_menu_activate_media_ide_zxcf_eject:(NSNumber*)active; +- (void)ui_menu_activate_recording:(NSNumber*)active; +- (void)ui_menu_activate_recording_rollback:(NSNumber*)active; +- (void)ui_menu_activate_ay_logging:(NSNumber*)active; +- (void)ui_menu_activate_machine_profiler:(NSNumber*)active; - (void)openFile:(const char *)filename; - (void)openRecent:(id)sender; Modified: branches/fusegl/fuse/fusepb/controllers/FuseController.m =================================================================== --- branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/controllers/FuseController.m 2007-04-06 07:21:52 UTC (rev 339) @@ -51,7 +51,6 @@ #include "settings_cocoa.h" #include "snapshot.h" #include "thumbnail.h" -#include "trdos.h" #include "ui.h" #include "uidisplay.h" #include "utils.h" @@ -913,66 +912,234 @@ [NSApp postEvent:event1 atStart:NO]; } -- (void)ui_menu_activate_media_cartridge:(int)active +- (void)ui_menu_activate_media_cartridge:(NSNumber*)active { - [cart setEnabled:active == 0 ? NO : YES]; + [cart setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_cartridge_dock:(int)active +- (void)ui_menu_activate_media_cartridge_dock:(NSNumber*)active { - [dock setEnabled:active == 0 ? NO : YES]; + [dock setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_cartridge_if2:(int)active +- (void)ui_menu_activate_media_cartridge_dock_eject:(NSNumber*)active { - [if2 setEnabled:active == 0 ? NO : YES]; + dockEject = [active boolValue]; } -- (void)ui_menu_activate_media_disk:(int)active +- (void)ui_menu_activate_media_cartridge_if2:(NSNumber*)active { - [disk setEnabled:active == 0 ? NO : YES]; + [if2 setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_disk_plus3:(int)active +- (void)ui_menu_activate_media_cartridge_if2_eject:(NSNumber*)active { - [diskPlus3 setEnabled:active == 0 ? NO : YES]; + if2Eject = [active boolValue]; } -- (void)ui_menu_activate_media_disk_trdos:(int)active +- (void)ui_menu_activate_media_disk:(NSNumber*)active { - [diskTrDos setEnabled:active == 0 ? NO : YES]; + [disk setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_ide:(int)active +- (void)ui_menu_activate_media_disk_plus3:(NSNumber*)active { - [ide setEnabled:active == 0 ? NO : YES]; + [diskPlus3 setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_ide_divide:(int)active +- (void)ui_menu_activate_media_disk_plus3_a_eject:(NSNumber*)active { - [divide setEnabled:active == 0 ? NO : YES]; + diskPlus3EjectA = [active boolValue]; } -- (void)ui_menu_activate_media_ide_simple8bit:(int)active +- (void)ui_menu_activate_media_disk_plus3_b_eject:(NSNumber*)active { - [simple8Bit setEnabled:active == 0 ? NO : YES]; + diskPlus3EjectB = [active boolValue]; } -- (void)ui_menu_activate_media_ide_zxatasp:(int)active +- (void)ui_menu_activate_media_disk_trdos:(NSNumber*)active { - [zxatasp setEnabled:active == 0 ? NO : YES]; + [diskTrDos setEnabled:[active boolValue]]; } -- (void)ui_menu_activate_media_ide_zxcf:(int)active +- (void)ui_menu_activate_media_disk_trdos_a_eject:(NSNumber*)active { - [zxcf setEnabled:active == 0 ? NO : YES]; + diskTrdosEjectA = [active boolValue]; } -- (void)ui_menu_activate_media_if1:(int)active +- (void)ui_menu_activate_media_disk_trdos_b_eject:(NSNumber*)active { - [if1 setEnabled:active == 0 ? NO : YES]; + diskTrdosEjectB = [active boolValue]; } +- (void)ui_menu_activate_media_ide:(NSNumber*)active +{ + [ide setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_ide_divide:(NSNumber*)active +{ + [divide setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_ide_divide_master_eject:(NSNumber*)active +{ + ideDivideEjectMaster = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_divide_slave_eject:(NSNumber*)active +{ + ideDivideEjectSlave = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_simple8bit:(NSNumber*)active +{ + [simple8Bit setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_ide_simple8bit_master_eject:(NSNumber*)active +{ + ideSimple8BitEjectMaster = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_simple8bit_slave_eject:(NSNumber*)active +{ + ideSimple8BitEjectSlave = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_zxatasp:(NSNumber*)active +{ + [zxatasp setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_ide_zxatasp_master_eject:(NSNumber*)active +{ + ideZxataspEjectMaster = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_zxatasp_slave_eject:(NSNumber*)active +{ + ideZxataspEjectSlave = [active boolValue]; +} + +- (void)ui_menu_activate_media_ide_zxcf:(NSNumber*)active +{ + [zxcf setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_ide_zxcf_eject:(NSNumber*)active +{ + ideZxcfEject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1:(NSNumber*)active +{ + [if1 setEnabled:[active boolValue]]; +} + +- (void)ui_menu_activate_media_if1_m1_eject:(NSNumber*)active +{ + if1M1Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m1_wp_set:(NSNumber*)active +{ + if1M1WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m2_eject:(NSNumber*)active +{ + if1M2Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m2_wp_set:(NSNumber*)active +{ + if1M2WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m3_eject:(NSNumber*)active +{ + if1M3Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m3_wp_set:(NSNumber*)active +{ + if1M3WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m4_eject:(NSNumber*)active +{ + if1M4Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m4_wp_set:(NSNumber*)active +{ + if1M4WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m5_eject:(NSNumber*)active +{ + if1M5Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m5_wp_set:(NSNumber*)active +{ + if1M5WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m6_eject:(NSNumber*)active +{ + if1M6Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m6_wp_set:(NSNumber*)active +{ + if1M6WpSet = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m7_eject:(NSNumber*)active +{ + if1M7Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m8_eject:(NSNumber*)active +{ + if1M8Eject = [active boolValue]; +} + +- (void)ui_menu_activate_media_if1_m8_wp_set:(NSNumber*)active +{ + if1M8WpSet = [active boolValue]; +} + +- (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]; + stop = [active boolValue]; +} + +- (void)ui_menu_activate_recording_rollback:(NSNumber*)active +{ + insert_snap = rollback = rollback_to = [active boolValue]; +} + +- (void)ui_menu_activate_ay_logging:(NSNumber*)active +{ + recordPsg = ![active boolValue]; + stopPsg = [active boolValue]; +} + +- (void)ui_menu_activate_machine_profiler:(NSNumber*)active +{ + profileStart = ![active boolValue]; + profileStop = [active boolValue]; +} + - (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem { switch( [menuItem tag] ) { @@ -1244,9 +1411,9 @@ [self addRecentSnapshot:filename]; if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { - specplus3_disk_insert_default_autoload( drive, filename ); + [[DisplayOpenGLView instance] specplus3DiskInsert:filename inDrive:drive]; } else { - trdos_disk_insert_default_autoload( drive, filename ); + [[DisplayOpenGLView instance] trdosDiskInsert:filename inDrive:drive]; } free( filename ); @@ -1429,13 +1596,14 @@ { [[DisplayOpenGLView instance] pause]; if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 ) { - specplus3_disk_eject( drive, write ); + [[DisplayOpenGLView instance] specplus3DiskEject:drive saveFirst:write]; } else { - trdos_disk_eject( drive, write ); + [[DisplayOpenGLView instance] trdosDiskEject:drive saveFirst:write]; } [[DisplayOpenGLView instance] unpause]; } +/* Runs in Emulator object context */ int menu_open_snap( void ) { @@ -1455,139 +1623,174 @@ int ui_menu_activate( ui_menu_item item, int active ) { - FuseController *controller = [FuseController singleton]; + NSNumber* activeBool = [NSNumber numberWithBool:active ? YES : NO]; + SEL method = nil; switch( item ) { case UI_MENU_ITEM_MEDIA_CARTRIDGE: - [controller ui_menu_activate_media_cartridge:active]; break; + method = @selector(ui_menu_activate_media_cartridge:); + break; case UI_MENU_ITEM_MEDIA_CARTRIDGE_DOCK: - [controller ui_menu_activate_media_cartridge_dock:active]; + method = @selector(ui_menu_activate_media_cartridge_dock:); break; case UI_MENU_ITEM_MEDIA_CARTRIDGE_DOCK_EJECT: - dockEject = active; break; + method = @selector(ui_menu_activate_media_cartridge_dock_eject:); + break; case UI_MENU_ITEM_MEDIA_CARTRIDGE_IF2: - [controller ui_menu_activate_media_cartridge_if2:active]; break; + method = @selector(ui_menu_activate_media_cartridge_if2:); + break; case UI_MENU_ITEM_MEDIA_CARTRIDGE_IF2_EJECT: - if2Eject = active; break; + method = @selector(ui_menu_activate_media_cartridge_if2_eject:); + break; case UI_MENU_ITEM_MEDIA_DISK: - [controller ui_menu_activate_media_disk:active]; break; + method = @selector(ui_menu_activate_media_disk:); + break; case UI_MENU_ITEM_MEDIA_DISK_PLUS3: - [controller ui_menu_activate_media_disk_plus3:active]; + method = @selector(ui_menu_activate_media_disk_plus3:); break; case UI_MENU_ITEM_MEDIA_DISK_PLUS3_A_EJECT: - diskPlus3EjectA = active; break; + method = @selector(ui_menu_activate_media_disk_plus3_a_eject:); + break; case UI_MENU_ITEM_MEDIA_DISK_PLUS3_B_EJECT: - diskPlus3EjectB = active; break; + method = @selector(ui_menu_activate_media_disk_plus3_b_eject:); + break; case UI_MENU_ITEM_MEDIA_DISK_TRDOS: - [controller ui_menu_activate_media_disk_trdos:active]; + method = @selector(ui_menu_activate_media_disk_trdos:); break; case UI_MENU_ITEM_MEDIA_DISK_TRDOS_A_EJECT: - diskTrdosEjectA = active; break; + method = @selector(ui_menu_activate_media_disk_trdos_a_eject:); + break; case UI_MENU_ITEM_MEDIA_DISK_TRDOS_B_EJECT: - diskTrdosEjectB = active; break; + method = @selector(ui_menu_activate_media_disk_trdos_b_eject:); + break; case UI_MENU_ITEM_RECORDING: - record = recordFromSnapshot = play = !active; - stop = active; break; + method = @selector(ui_menu_activate_recording:); + break; case UI_MENU_ITEM_RECORDING_ROLLBACK: - insert_snap = rollback = rollback_to = active; + method = @selector(ui_menu_activate_recording_rollback:); break; case UI_MENU_ITEM_AY_LOGGING: - recordPsg = !active; stopPsg = active; break; + method = @selector(ui_menu_activate_ay_logging:); + break; case UI_MENU_ITEM_MEDIA_IDE: - [controller ui_menu_activate_media_ide:active]; break; + method = @selector(ui_menu_activate_media_ide:); + break; case UI_MENU_ITEM_MEDIA_IDE_SIMPLE8BIT: - [controller ui_menu_activate_media_ide_simple8bit:active]; + method = @selector(ui_menu_activate_media_ide_simple8bit:); break; case UI_MENU_ITEM_MEDIA_IDE_SIMPLE8BIT_MASTER_EJECT: - ideSimple8BitEjectMaster = active; break; + method = @selector(ui_menu_activate_media_ide_simple8bit_master_eject:); + break; case UI_MENU_ITEM_MEDIA_IDE_SIMPLE8BIT_SLAVE_EJECT: - ideSimple8BitEjectSlave = active; break; + method = @selector(ui_menu_activate_media_ide_simple8bit_slave_eject:); + break; case UI_MENU_ITEM_MEDIA_IDE_ZXATASP: - [controller ui_menu_activate_media_ide_zxatasp:active]; + method = @selector(ui_menu_activate_media_ide_zxatasp:); break; case UI_MENU_ITEM_MEDIA_IDE_ZXATASP_MASTER_EJECT: - ideZxataspEjectMaster = active; break; + method = @selector(ui_menu_activate_media_ide_zxatasp_master_eject:); + break; case UI_MENU_ITEM_MEDIA_IDE_ZXATASP_SLAVE_EJECT: - ideZxataspEjectSlave = active; break; + method = @selector(ui_menu_activate_media_ide_zxatasp_slave_eject:); + break; case UI_MENU_ITEM_MEDIA_IDE_ZXCF: - [controller ui_menu_activate_media_ide_zxcf:active]; break; + method = @selector(ui_menu_activate_media_ide_zxcf:); + break; case UI_MENU_ITEM_MEDIA_IDE_ZXCF_EJECT: - ideZxcfEject = active; break; + method = @selector(ui_menu_activate_media_ide_zxcf_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1: - [controller ui_menu_activate_media_if1:active]; break; + method = @selector(ui_menu_activate_media_if1:); + break; case UI_MENU_ITEM_MEDIA_IF1_M1_EJECT: - if1M1Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m1_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M1_WP_SET: - if1M1WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m1_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M2_EJECT: - if1M2Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m2_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M2_WP_SET: - if1M2WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m2_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M3_EJECT: - if1M3Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m3_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M3_WP_SET: - if1M3WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m3_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M4_EJECT: - if1M4Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m4_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M4_WP_SET: - if1M4WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m4_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M5_EJECT: - if1M5Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m5_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M5_WP_SET: - if1M5WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m5_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M6_EJECT: - if1M6Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m6_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M6_WP_SET: - if1M6WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m6_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M7_EJECT: - if1M7Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m7_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M7_WP_SET: - if1M7WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m7_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_M8_EJECT: - if1M8Eject = active; break; + method = @selector(ui_menu_activate_media_if1_m8_eject:); + break; case UI_MENU_ITEM_MEDIA_IF1_M8_WP_SET: - if1M8WpSet = active; break; + method = @selector(ui_menu_activate_media_if1_m8_wp_set:); + break; case UI_MENU_ITEM_MEDIA_IF1_RS232_UNPLUG_R: case UI_MENU_ITEM_MEDIA_IF1_RS232_UNPLUG_T: @@ -1595,19 +1798,20 @@ break; case UI_MENU_ITEM_MACHINE_PROFILER: - profileStart = !active; - profileStop = active; + method = @selector(ui_menu_activate_machine_profiler:); break; case UI_MENU_ITEM_MEDIA_IDE_DIVIDE: - [controller ui_menu_activate_media_ide_divide:active]; + method = @selector(ui_menu_activate_media_ide_divide:); break; case UI_MENU_ITEM_MEDIA_IDE_DIVIDE_MASTER_EJECT: - ideDivideEjectMaster = active; break; + method = @selector(ui_menu_activate_media_ide_divide_master_eject:); + break; case UI_MENU_ITEM_MEDIA_IDE_DIVIDE_SLAVE_EJECT: - ideDivideEjectSlave = active; break; + method = @selector(ui_menu_activate_media_ide_divide_slave_eject:); + break; default: ui_error( UI_ERROR_ERROR, "Attempt to activate unknown menu item %d", @@ -1616,6 +1820,12 @@ } + [[FuseController singleton] + performSelectorOnMainThread:method + withObject:activeBool + waitUntilDone:NO + ]; + return 0; } @@ -1648,7 +1858,7 @@ drive = which == SPECPLUS3_DRIVE_A ? 'A' : 'B'; - if( !specplus3_disk_present( which ) ) { + if( ![[DisplayOpenGLView instance] specplus3DiskPresent:which] ) { ui_error( UI_ERROR_INFO, "No disk present in drive %c:", drive ); return 0; } @@ -1660,7 +1870,7 @@ if( !filename ) { [[DisplayOpenGLView instance] unpause]; return 1; } - specplus3_disk_write( which, filename ); + [[DisplayOpenGLView instance] specplus3DiskWrite:filename inDrive:which]; [[FuseController singleton] addRecentSnapshot:filename]; @@ -1691,7 +1901,7 @@ if( !filename ) { [[DisplayOpenGLView instance] unpause]; return 1; } - trdos_disk_write( which, filename ); + [[DisplayOpenGLView instance] trdosDiskWrite:filename inDrive:which]; [[FuseController singleton] addRecentSnapshot:filename]; Modified: branches/fusegl/fuse/fusepb/models/Emulator.h =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.h 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/models/Emulator.h 2007-04-06 07:21:52 UTC (rev 339) @@ -27,6 +27,8 @@ #include <libspectrum.h> #include "input.h" +#include "machines/specplus3.h" +#include "trdos.h" @interface Emulator : NSObject { @@ -77,6 +79,15 @@ -(void) reset; -(int) nmi; +-(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which; +-(void) specplus3DiskEject:(specplus3_drive_number)drive saveFirst:(int)write; +-(int) specplus3DiskPresent:(specplus3_drive_number)which; +-(void) specplus3DiskWrite:(const char *)filename inDrive:(specplus3_drive_number)which; + +-(void) trdosDiskInsert:(const char *)filename inDrive:(trdos_drive_number)which; +-(void) trdosDiskEject:(trdos_drive_number)drive saveFirst:(int)write; +-(void) trdosDiskWrite:(const char *)filename inDrive:(trdos_drive_number)which; + -(void) snapshotWrite:(const char *)filename; -(void) screenshotScrRead:(const char *)filename; Modified: branches/fusegl/fuse/fusepb/models/Emulator.m =================================================================== --- branches/fusegl/fuse/fusepb/models/Emulator.m 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/models/Emulator.m 2007-04-06 07:21:52 UTC (rev 339) @@ -248,6 +248,41 @@ return event_add( 0, EVENT_TYPE_NMI ); } +-(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which +{ + specplus3_disk_insert_default_autoload( which, filename ); +} + +-(void) specplus3DiskEject:(specplus3_drive_number)drive saveFirst:(int)write +{ + specplus3_disk_eject( drive, write ); +} + +-(int) specplus3DiskPresent:(specplus3_drive_number)which +{ + return specplus3_disk_present( which ); +} + +-(void) specplus3DiskWrite:(const char *)filename inDrive:(specplus3_drive_number)which +{ + specplus3_disk_write( which, filename ); +} + +-(void) trdosDiskInsert:(const char *)filename inDrive:(trdos_drive_number)which +{ + trdos_disk_insert_default_autoload( which, filename ); +} + +-(void) trdosDiskEject:(trdos_drive_number)drive saveFirst:(int)write +{ + trdos_disk_eject( drive, write ); +} + +-(void) trdosDiskWrite:(const char *)filename inDrive:(trdos_drive_number)which +{ + trdos_disk_write( which, filename ); +} + -(void) snapshotWrite:(const char *)filename { snapshot_write( filename ); Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.h 2007-04-06 07:21:52 UTC (rev 339) @@ -31,6 +31,8 @@ #include <libspectrum.h> #include "input.h" +#include "machines/specplus3.h" +#include "trdos.h" #include "ui/cocoa/cocoadisplay.h" #include "ui/ui.h" @@ -113,6 +115,15 @@ -(void) reset; -(int) nmi; +-(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which; +-(void) specplus3DiskEject:(specplus3_drive_number)drive saveFirst:(int)write; +-(int) specplus3DiskPresent:(specplus3_drive_number)which; +-(void) specplus3DiskWrite:(const char *)filename inDrive:(specplus3_drive_number)which; + +-(void) trdosDiskInsert:(const char *)filename inDrive:(trdos_drive_number)which; +-(void) trdosDiskEject:(trdos_drive_number)drive saveFirst:(int)write; +-(void) trdosDiskWrite:(const char *)filename inDrive:(trdos_drive_number)which; + -(void) snapshotWrite:(const char *)filename; -(void) screenshotScrRead:(const char *)filename; Modified: branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-04-06 01:54:59 UTC (rev 338) +++ branches/fusegl/fuse/fusepb/views/DisplayOpenGLView.m 2007-04-06 07:21:52 UTC (rev 339) @@ -629,6 +629,41 @@ return [proxy_emulator nmi]; } +-(void) specplus3DiskInsert:(const char *)filename inDrive:(specplus3_drive_number)which +{ + [proxy_emulator specplus3DiskInsert:filename inDrive:which]; +} + +-(void) specplus3DiskEject:(specplus3_drive_number)drive saveFirst:(int)write +{ + [proxy_emulator specplus3DiskEject:drive saveFirst:write]; +} + +-(int) specplus3DiskPresent:(specplus3_drive_number)which +{ + return [proxy_emulator specplus3DiskPresent:which]; +} + +-(void) specplus3DiskWrite:(const char *)filename inDrive:(specplus3_drive_number)which +{ + [proxy_emulator specplus3DiskWrite:filename inDrive:which]; +} + +-(void) trdosDiskInsert:(const char *)filename inDrive:(trdos_drive_number)which +{ + [proxy_emulator trdosDiskInsert:filename inDrive:which]; +} + +-(void) trdosDiskEject:(trdos_drive_number)drive saveFirst:(int)write +{ + [proxy_emulator trdosDiskEject:drive saveFirst:write]; +} + +-(void) trdosDiskWrite:(const char *)filename inDrive:(trdos_drive_number)which +{ + [proxy_emulator trdosDiskWrite:filename inDrive:which]; +} + -(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. |