--- hatari/src/gui-osx/PrefsController.m 2019/04/09 08:56:36 1.1.1.13 +++ hatari/src/gui-osx/PrefsController.m 2019/04/09 08:57:49 1.1.1.14 @@ -10,6 +10,7 @@ Jan 2006, Sébastien Molines - Updated for recent emulator updates 2013 : Miguel SARO, J. VERNET 2016 : J. VERNET - Updated for 1.9.0 + 2017 : Miguel SARO resizable */ // bOKDialog = Dialog_MainDlg(&bForceReset, &bLoadedSnapshot); // prise des préférences @@ -31,6 +32,7 @@ #include "paths.h" #include "keymap.h" #include "joy.h" +#include "midi.h" // Macros to transfer data between Cocoa controls and Hatari data structures // de l'affichage vers la structure (saveAllControls) @@ -300,7 +302,7 @@ BOOL flag1, flag2; /*----------------------------------------------------------------------*/ - (IBAction)chooseCartridgeImage:(id)sender; { - [self choosePathForControl: cartridgeImage chooseDirectories:NO defaultInitialDir:[self initial:cartridge] // cartridge + [self choosePathForControl: cartridgeImage chooseDirectories:NO defaultInitialDir:[self initial:cartridge] // cartridge mutString:cartridge what:@[allC]]; } @@ -558,12 +560,53 @@ BOOL flag1, flag2; { SDLKey key = Preferences_KeysForJoysticks[i]; const char* szKeyName = SDL_GetKeyName(key); - [dropDown addItemWithTitle:[[NSString stringWithCString:szKeyName encoding:NSASCIIStringEncoding] capitalizedString]]; + [dropDown addItemWithTitle:[[NSString stringWithCString:szKeyName encoding:NSASCIIStringEncoding] capitalizedString]]; dropDown.lastItem.tag = key ; } } +// ---------------------------------------------------------------------------- +// populate MIDI dropdowns +// +- (void)initMidiDropdowns +{ + [midiInPort removeAllItems]; + [midiOutPort removeAllItems]; + const char* szinPortName = "Off"; + [midiInPort addItemWithTitle:[NSString stringWithCString:szinPortName encoding:NSASCIIStringEncoding]]; + [midiOutPort addItemWithTitle:[NSString stringWithCString:szinPortName encoding:NSASCIIStringEncoding]]; + + int i = 0; + const char* portName; + while ((portName = Midi_Host_GetPortName(i++, true))) + [midiInPort addItemWithTitle:[NSString stringWithCString:portName encoding:NSASCIIStringEncoding]]; + i = 0; + while ((portName = Midi_Host_GetPortName(i++, false))) + [midiOutPort addItemWithTitle:[NSString stringWithCString:portName encoding:NSASCIIStringEncoding]]; +} + +// ---------------------------------------------------------------------------- +// ConfigureParams -> GUI controls +// +- (void)setMidiDropdowns +{ + [midiInPort selectItemWithTitle:[NSString stringWithCString:ConfigureParams.Midi.sMidiInPortName encoding:NSASCIIStringEncoding]]; + [midiOutPort selectItemWithTitle:[NSString stringWithCString:ConfigureParams.Midi.sMidiOutPortName encoding:NSASCIIStringEncoding]]; +} + +// ---------------------------------------------------------------------------- +// GUI controls -> ConfigureParams +// +- (void)saveMidiDropdowns +{ + strncpy(ConfigureParams.Midi.sMidiInPortName, [[midiInPort titleOfSelectedItem] UTF8String], FILENAME_MAX); + strncpy(ConfigureParams.Midi.sMidiOutPortName, [[midiOutPort titleOfSelectedItem] UTF8String], FILENAME_MAX); + ConfigureParams.Midi.sMidiInPortName[FILENAME_MAX-1] = 0; + ConfigureParams.Midi.sMidiOutPortName[FILENAME_MAX-1] = 0; +} + + /*----------------------------------------------------------------------*/ //Displays the Preferences dialog Ouverture de la fenêtre des préférences /*----------------------------------------------------------------------*/ @@ -603,7 +646,10 @@ BOOL flag1, flag2; [joystickMode cellWithTag:1].enabled = FALSE ; realJoystick.enabled = FALSE ; } - + + // Fill MIDI dropdowns + [self initMidiDropdowns]; + bInitialized = true; } @@ -630,7 +676,7 @@ BOOL flag1, flag2; // Check if change need reset if (Change_DoNeedReset(&CurrentParams, &ConfigureParams)) { - applyChanges = [NSApp myAlerte:NSInformationalAlertStyle Txt:nil + applyChanges = [NSApp myAlerte:NSAlertStyleInformational Txt:nil firstB:localize(@"Don't reset") alternateB:localize(@"Reset") otherB:nil informativeTxt:localize(@"Must be reset") ] == NSAlertSecondButtonReturn ; if (applyChanges) @@ -722,7 +768,7 @@ BOOL flag1, flag2; IMPORT_RADIO(machineType, ConfigureParams.System.nMachineType); IMPORT_RADIO(monitor, ConfigureParams.Screen.nMonitorType); IMPORT_SWITCH(patchTimerD, ConfigureParams.System.bPatchTimerD); - IMPORT_RADIO(ramSize, ConfigureParams.Memory.nMemorySize); + IMPORT_RADIO(ramSize, ConfigureParams.Memory.STRamSize_KB); // MS 12-2016 IMPORT_SWITCH(fastFDC, ConfigureParams.DiskImage.FastFloppy); IMPORT_SWITCH(useBorders, ConfigureParams.Screen.bAllowOverscan); IMPORT_SWITCH(useVDIResolution, ConfigureParams.Screen.bUseExtVdiResolutions); @@ -744,6 +790,7 @@ BOOL flag1, flag2; //1.9.0 SDL2 IMPORT_SWITCH(SDL2UseLinearScaling, ConfigureParams.Screen.nRenderScaleQuality); + IMPORT_SWITCH(SDL2Resizable, ConfigureParams.Screen.bResizable) ; // MS 06-2017 IMPORT_SWITCH(SDL2UseVSync, ConfigureParams.Screen.bUseVsync); //deal with the Max Zoomed Stepper @@ -765,7 +812,9 @@ BOOL flag1, flag2; //deal with TT RAM Size Stepper #ifdef ENABLE_WINUAE_CPU - IMPORT_NTEXTFIELD(TTRAMSizeValue, ConfigureParams.Memory.nTTRamSize); + int ttramsize_MB=ConfigureParams.Memory.TTRamSize_KB/1024 ; //JV 12-2016 + + IMPORT_NTEXTFIELD(TTRAMSizeValue, ttramsize_MB); // MS 12-2016 [TTRAMSizeStepper setDoubleValue:[TTRAMSizeValue intValue]]; IMPORT_SWITCH(cycleExactCPU, ConfigureParams.System.bCycleExactCpu); IMPORT_SWITCH(MMU_Emulation, ConfigureParams.System.bMMU); @@ -842,10 +891,13 @@ BOOL flag1, flag2; { gemdosImage.stringValue = @"" ; [gemdos setString:@""]; } - + // Set the per-joystick controls [self setJoystickControls]; - + + // -- MIDI + [self setMidiDropdowns]; + // Update the controls' enabled states [self updateEnabledStates:self]; } @@ -988,7 +1040,7 @@ BOOL flag1, flag2; EXPORT_RADIO(machineType, ConfigureParams.System.nMachineType); EXPORT_RADIO(monitor, ConfigureParams.Screen.nMonitorType); EXPORT_SWITCH(patchTimerD, ConfigureParams.System.bPatchTimerD); - EXPORT_RADIO(ramSize, ConfigureParams.Memory.nMemorySize); + EXPORT_RADIO(ramSize, ConfigureParams.Memory.STRamSize_KB); // MS 12-2016 EXPORT_SWITCH(fastFDC, ConfigureParams.DiskImage.FastFloppy); EXPORT_SWITCH(useBorders, ConfigureParams.Screen.bAllowOverscan); EXPORT_SWITCH(useVDIResolution, ConfigureParams.Screen.bUseExtVdiResolutions); @@ -1008,6 +1060,7 @@ BOOL flag1, flag2; EXPORT_RADIO(YMVoicesMixing,ConfigureParams.Sound.YmVolumeMixing); //1.9.0 SDL2 EXPORT_SWITCH(SDL2UseLinearScaling, ConfigureParams.Screen.nRenderScaleQuality); + EXPORT_SWITCH(SDL2Resizable, ConfigureParams.Screen.bResizable) ; // MS 06-2017 EXPORT_SWITCH(SDL2UseVSync, ConfigureParams.Screen.bUseVsync); EXPORT_NTEXTFIELD(maxZoomedWidth, ConfigureParams.Screen.nMaxWidth); @@ -1023,7 +1076,11 @@ BOOL flag1, flag2; case 4: ConfigureParams.System.VideoTimingMode=VIDEO_TIMING_MODE_WS4; break; } #ifdef ENABLE_WINUAE_CPU - EXPORT_NTEXTFIELD(TTRAMSizeValue, ConfigureParams.Memory.nTTRamSize); + int ttramsizeMB=[TTRAMSizeValue intValue]*1024; //JV 12-2016 + ConfigureParams.Memory.TTRamSize_KB=ttramsizeMB; + + //EXPORT_NTEXTFIELD(TTRAMSizeValue, ConfigureParams.Memory.TTRamSize_KB); // MS 12-2016 + EXPORT_SWITCH(cycleExactCPU, ConfigureParams.System.bCycleExactCpu); EXPORT_SWITCH(MMU_Emulation, ConfigureParams.System.bMMU); EXPORT_SWITCH(adressSpace24, ConfigureParams.System.bAddressSpace24); @@ -1103,6 +1160,9 @@ BOOL flag1, flag2; // Save the per-joystick controls [self saveJoystickControls]; + + // -- MIDI + [self saveMidiDropdowns]; } /*----------------------------------------------------------------------*/