From b3a69668bf0a64edf0abbbd22ca6590b4dd735a8 Mon Sep 17 00:00:00 2001 From: harukalover Date: Tue, 30 Jun 2009 05:55:03 +0000 Subject: [PATCH] * Fixed an issue with aegisub not trying to open the local config.dat in Windows builds, fixes #902 * Fixed an issue with aegisub failing to start if a local config.dat existed but aegisub did not have permission to write to it Originally committed to SVN as r3090. --- aegisub/src/main.cpp | 12 ++++++++---- aegisub/src/options.cpp | 8 ++++++++ aegisub/src/options.h | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/aegisub/src/main.cpp b/aegisub/src/main.cpp index dfa5d081b..10175b4ed 100644 --- a/aegisub/src/main.cpp +++ b/aegisub/src/main.cpp @@ -146,15 +146,19 @@ bool AegisubApp::OnInit() { // Set config file StartupLog(_T("Load configuration")); Options.LoadDefaults(); -#ifndef __WXMSW__ - Options.SetFile(StandardPaths::DecodePath(_T("?data/config.dat"))); +#ifdef __WXMSW__ + // TODO: Display a messagebox about permission being needed to write to local config once the string freeze is over with + if (wxFileName::IsFileWritable(StandardPaths::DecodePath(_T("?data/config.dat")))) + Options.SetFile(StandardPaths::DecodePath(_T("?data/config.dat"))); + else + Options.SetFile(StandardPaths::DecodePath(_T("?user/config.dat"))); Options.Load(); - if (!Options.AsBool(_T("Local config"))) + if (!Options.AsBool(_T("Local config")) && Options.GetFile() != StandardPaths::DecodePath(_T("?user/config.dat"))) #endif { Options.SetFile(StandardPaths::DecodePath(_T("?user/config.dat"))); Options.Load(); -#ifndef __WXMSW__ +#ifdef __WXMSW__ wxRemoveFile(StandardPaths::DecodePath(_T("?data/config.dat"))); #endif } diff --git a/aegisub/src/options.cpp b/aegisub/src/options.cpp index 355abf9b1..43a40f440 100644 --- a/aegisub/src/options.cpp +++ b/aegisub/src/options.cpp @@ -419,6 +419,14 @@ void OptionsManager::SetFile(wxString file) { } +//////////////// +// Get filename +wxString OptionsManager::GetFile() const +{ + return filename; +} + + //////// // Save void OptionsManager::Save() { diff --git a/aegisub/src/options.h b/aegisub/src/options.h index 7b74e273e..93da3e3d9 100644 --- a/aegisub/src/options.h +++ b/aegisub/src/options.h @@ -79,6 +79,7 @@ public: void Clear(); void SetFile(wxString file); + wxString GetFile() const; void Save(); void Load(); void LoadDefaults(bool onlyDefaults=false,bool versionOverride=false);