void AppConfig::FilenameOptions::LoadSave( IniInterface& ini ) { ScopedIniGroup path( ini, L"Filenames" ); static const wxFileName pc( L"Please Configure" ); //when saving in portable mode, we just save the non-full-path filename // --> on load they'll be initialized with default (relative) paths (works both for plugins and bios) //note: this will break if converting from install to portable, and custom folders are used. We can live with that. bool needRelativeName = ini.IsSaving() && IsPortable(); for( int i=0; i<PluginId_Count; ++i ) { if ( needRelativeName ) { wxFileName plugin_filename = wxFileName( Plugins[i].GetFullName() ); ini.Entry( tbl_PluginInfo[i].GetShortname(), plugin_filename, pc ); } else ini.Entry( tbl_PluginInfo[i].GetShortname(), Plugins[i], pc ); } if( needRelativeName ) { wxFileName bios_filename = wxFileName( Bios.GetFullName() ); ini.Entry( L"BIOS", bios_filename, pc ); } else ini.Entry( L"BIOS", Bios, pc ); }
void AppConfig::GSWindowOptions::LoadSave( IniInterface& ini ) { ScopedIniGroup path( ini, L"GSWindow" ); IniEntry( CloseOnEsc ); IniEntry( DefaultToFullscreen ); IniEntry( AlwaysHideMouse ); IniEntry( DisableResizeBorders ); IniEntry( DisableScreenSaver ); IniEntry( WindowSize ); IniEntry( WindowPos ); IniEntry( IsMaximized ); IniEntry( IsFullscreen ); IniEntry( IsToggleFullscreenOnDoubleClick ); static const wxChar* AspectRatioNames[] = { L"Stretch", L"4:3", L"16:9", // WARNING: array must be NULL terminated to compute it size NULL }; ini.EnumEntry( L"AspectRatio", AspectRatio, AspectRatioNames, AspectRatio ); IniEntry( Zoom ); if( ini.IsLoading() ) SanityCheck(); }
void AppConfig::LoadSaveRootItems( IniInterface& ini ) { IniEntry( MainGuiPosition ); IniEntry( SysSettingsTabName ); IniEntry( McdSettingsTabName ); IniEntry( ComponentsTabName ); IniEntry( AppSettingsTabName ); IniEntry( GameDatabaseTabName ); ini.EnumEntry( L"LanguageId", LanguageId, NULL, LanguageId ); IniEntry( LanguageCode ); IniEntry( RecentIsoCount ); IniEntry( GzipIsoIndexTemplate ); IniEntry( DeskTheme ); IniEntry( Listbook_ImageSize ); IniEntry( Toolbar_ImageSize ); IniEntry( Toolbar_ShowLabels ); wxFileName res(CurrentIso); ini.Entry( L"CurrentIso", res, res, ini.IsLoading() || IsPortable() ); CurrentIso = res.GetFullPath(); IniEntry( CurrentELF ); IniEntry( EnableSpeedHacks ); IniEntry( EnableGameFixes ); IniEntry( EnablePresets ); IniEntry( PresetIndex ); #ifdef __WXMSW__ IniEntry( McdCompressNTFS ); #endif ini.EnumEntry( L"CdvdSource", CdvdSource, CDVD_SourceLabels, CdvdSource ); }
void Pcsx2Config::LoadSave( IniInterface& ini ) { ScopedIniGroup path( ini, L"EmuCore" ); IniBitBool( CdvdVerboseReads ); IniBitBool( CdvdDumpBlocks ); IniBitBool( EnablePatches ); IniBitBool( EnableCheats ); IniBitBool( EnableWideScreenPatches ); IniBitBool( ConsoleToStdio ); IniBitBool( HostFs ); IniBitBool( BackupSavestate ); IniBitBool( McdEnableEjection ); IniBitBool( MultitapPort0_Enabled ); IniBitBool( MultitapPort1_Enabled ); // Process various sub-components: Speedhacks .LoadSave( ini ); Cpu .LoadSave( ini ); GS .LoadSave( ini ); Gamefixes .LoadSave( ini ); Profiler .LoadSave( ini ); Debugger .LoadSave( ini ); Trace .LoadSave( ini ); ini.Flush(); }
void AppConfig::FolderOptions::LoadSave( IniInterface& ini ) { ScopedIniGroup path( ini, L"Folders" ); if( ini.IsSaving() ) { ApplyDefaults(); } IniBitBool( UseDefaultBios ); IniBitBool( UseDefaultSnapshots ); IniBitBool( UseDefaultSavestates ); IniBitBool( UseDefaultMemoryCards ); IniBitBool( UseDefaultLogs ); IniBitBool( UseDefaultLangs ); IniBitBool( UseDefaultPluginsFolder ); IniBitBool( UseDefaultCheats ); IniBitBool( UseDefaultCheatsWS ); //when saving in portable mode, we save relative paths if possible // --> on load, these relative paths will be expanded relative to the exe folder. bool rel = ( ini.IsLoading() || IsPortable() ); IniEntryDirFile( Bios, rel); IniEntryDirFile( Snapshots, rel ); IniEntryDirFile( Savestates, rel ); IniEntryDirFile( MemoryCards, rel ); IniEntryDirFile( Logs, rel ); IniEntryDirFile( Langs, rel ); IniEntryDirFile( Cheats, rel ); IniEntryDirFile( CheatsWS, rel ); ini.Entry( L"PluginsFolder", PluginsFolder, InstallFolder + PathDefs::Base::Plugins(), rel ); IniEntryDirFile( RunIso, rel ); IniEntryDirFile( RunELF, rel ); if( ini.IsLoading() ) { ApplyDefaults(); for( int i=0; i<FolderId_COUNT; ++i ) operator[]( (FoldersEnum_t)i ).Normalize(); } }
void RecentIsoManager::LoadListFrom( IniInterface& ini ) { if (!ini.IsOk()) return; ini.GetConfig().SetRecordDefaults( false ); RemoveAllFromMenu(); m_MaxLength = g_Conf->RecentIsoCount; ScopedIniGroup groupie( ini, L"RecentIso" ); for( uint i=0; i<m_MaxLength; ++i ) { wxFileName loadtmp(L""); ini.Entry( pxsFmt( L"Filename%02d", i ), loadtmp, loadtmp, true ); if( loadtmp.GetFullName()!=L"" ) Add( loadtmp.GetFullPath() ); } Add( g_Conf->CurrentIso ); ini.GetConfig().SetRecordDefaults( true ); }
void ConLog_LoadSaveSettings( IniInterface& ini ) { ScopedIniGroup path(ini, L"ConsoleLogSources"); ini.Entry( L"Devel", DevConWriterEnabled, false ); uint srcnt = ArraySize(ConLogSources); for (uint i=0; i<srcnt; ++i) { if (ConsoleLogSource* log = ConLogSources[i]) { // IsSaving() is for clarity only, since log->Enabled initial value is ignored when loading. if (ini.IsSaving() && !ConLogInitialized) log->Enabled = ConLogDefaults[i]; ini.Entry( log->GetCategory() + L"." + log->GetShortName(), log->Enabled, ConLogDefaults[i] ); } } ConLogInitialized = true; }
void SysTraceLog_LoadSaveSettings( IniInterface& ini ) { ScopedIniGroup path(ini, L"TraceLogSources"); for (uint i=0; i<traceLogCount; ++i) { if (SysTraceLog* log = traceLogList[i]) { pxAssertMsg(log->GetName(), "Trace log without a name!" ); ini.Entry( log->GetCategory() + L"." + log->GetShortName(), log->Enabled, false ); } } }
// ------------------------------------------------------------------------ void AppConfig::LoadSaveMemcards( IniInterface& ini ) { ScopedIniGroup path( ini, L"MemoryCards" ); for( uint slot=0; slot<2; ++slot ) { ini.Entry( pxsFmt( L"Slot%u_Enable", slot+1 ), Mcd[slot].Enabled, Mcd[slot].Enabled ); ini.Entry( pxsFmt( L"Slot%u_Filename", slot+1 ), Mcd[slot].Filename, Mcd[slot].Filename ); } for( uint slot=2; slot<8; ++slot ) { int mtport = FileMcd_GetMtapPort(slot)+1; int mtslot = FileMcd_GetMtapSlot(slot)+1; ini.Entry( pxsFmt( L"Multitap%u_Slot%u_Enable", mtport, mtslot ), Mcd[slot].Enabled, Mcd[slot].Enabled ); ini.Entry( pxsFmt( L"Multitap%u_Slot%u_Filename", mtport, mtslot ), Mcd[slot].Filename, Mcd[slot].Filename ); } }
// ------------------------------------------------------------------------ void AppConfig::LoadSave( IniInterface& ini ) { LoadSaveRootItems( ini ); LoadSaveMemcards( ini ); // Process various sub-components: ProgLogBox .LoadSave( ini, L"ProgramLog" ); Folders .LoadSave( ini ); BaseFilenames .LoadSave( ini ); GSWindow .LoadSave( ini ); Framerate .LoadSave( ini ); ini.Flush(); }
// ------------------------------------------------------------------------ void App_LoadSaveInstallSettings( IniInterface& ini ) { // Portable installs of PCSX2 should not save any of the following information to // the INI file. Only the Run First Time Wizard option is saved, and that's done // from EstablishAppUserMode code. All other options have assumed (fixed) defaults in // portable mode which cannot be changed/saved. // Note: Settins are still *loaded* from portable.ini, in case the user wants to do // low-level overrides of the default behavior of portable mode installs. if (ini.IsSaving() && (InstallationMode == InstallMode_Portable)) return; static const wxChar* DocsFolderModeNames[] = { L"User", L"Custom", // WARNING: array must be NULL terminated to compute it size NULL }; ini.EnumEntry( L"DocumentsFolderMode", DocsFolderMode, DocsFolderModeNames, (InstallationMode == InstallMode_Registered) ? DocsFolder_User : DocsFolder_Custom); ini.Entry( L"CustomDocumentsFolder", CustomDocumentsFolder, PathDefs::AppRoot() ); ini.Entry( L"UseDefaultSettingsFolder", UseDefaultSettingsFolder, true ); ini.Entry( L"SettingsFolder", SettingsFolder, PathDefs::GetSettings() ); // "Install_Dir" conforms to the NSIS standard install directory key name. // Attempt to load plugins and themes based on the Install Folder. ini.Entry( L"Install_Dir", InstallFolder, (wxDirName)(wxFileName(wxStandardPaths::Get().GetExecutablePath()).GetPath()) ); SetFullBaseDir( InstallFolder ); //ini.Entry( L"PluginsFolder", PluginsFolder, InstallFolder + PathDefs::Base::Plugins() ); ini.Entry( L"ThemesFolder", ThemesFolder, InstallFolder + PathDefs::Base::Themes() ); ini.Flush(); }
void Pcsx2Config::GSOptions::LoadSave( IniInterface& ini ) { ScopedIniGroup path( ini, L"GS" ); IniEntry( SynchronousMTGS ); IniEntry( DisableOutput ); IniEntry( VsyncQueueSize ); IniEntry( FrameLimitEnable ); IniEntry( FrameSkipEnable ); IniEntry( VsyncEnable ); IniEntry( ManagedVsync ); IniEntry( LimitScalar ); IniEntry( FramerateNTSC ); IniEntry( FrameratePAL ); // WARNING: array must be NULL terminated to compute it size static const wxChar * const ntsc_pal_str[3] = { L"ntsc", L"pal", NULL }; ini.EnumEntry( L"DefaultRegionMode", DefaultRegionMode, ntsc_pal_str, DefaultRegionMode ); IniEntry( FramesToDraw ); IniEntry( FramesToSkip ); }
void Pcsx2App::DispatchVmSettingsEvent( IniInterface& ini ) { if( !AffinityAssert_AllowFrom_MainUI() ) return; m_evtsrc_AppStatus.Dispatch( AppSettingsEventInfo( ini, ini.IsSaving() ? AppStatus_VmSettingsSaved : AppStatus_VmSettingsLoaded ) ); }