Save a profile without taking it for a save of eu07.ini

A profile went through the save of eu07.ini with another path: what the store
holds of the file took the changes the file never got, and the list of changes
was empty after it. A profile is now written as an export, from a copy. Like a
save, an export is not written from defaults when the settings could not be
read.
This commit is contained in:
maj00r
2026-11-03 21:51:53 +01:00
parent 2cfb4e4fec
commit c10d771f00
3 changed files with 26 additions and 5 deletions

View File

@@ -148,7 +148,7 @@ public sealed class SettingsStore
SaveTo(_savePath);
}
public void SaveTo(string path)
private void SaveTo(string path)
{
LastSaveFailed = true;
if (LoadFailed)
@@ -242,6 +242,12 @@ public sealed class SettingsStore
/// </summary>
public bool ExportTo(string path)
{
if (LoadFailed)
{
_log.Log($"{path} not written: the settings could not be read, what is held is defaults");
return false;
}
var copy = ConfigFile.Parse(_config.ToText());
ApplyChanges(copy, Changes(Settings));

View File

@@ -235,13 +235,13 @@ public partial class Settings : UserControl, ISettingsCapture
App.Loc["ProfileSaveAs"], MessageBoxButtons.YesNo))
return;
var store = AppServices.Current.SettingsStore;
// Written beside the user's own eu07.ini, which stays as it is.
CaptureInto(AppServices.Current.Settings);
store.SaveTo(path);
bool saved = AppServices.Current.SettingsStore.ExportTo(path);
PopulateProfileCombo();
int idx = FindComboIndexByContent(ProfileCb, Path.GetFileNameWithoutExtension(path));
if (idx >= 0) ProfileCb.SelectedIndex = idx;
SaveStatus.Text = string.Format(App.Loc[store.LastSaveFailed ? "ProfileNotSaved" : "ProfileSaved"], name);
SaveStatus.Text = string.Format(App.Loc[saved ? "ProfileSaved" : "ProfileNotSaved"], name);
}
private void PopulateExeCombo()