mirror of
https://github.com/MaSzyna-EU07/StarterNG.git
synced 2026-11-04 05:11:50 +01:00
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:
@@ -1,3 +1,4 @@
|
||||
using StarterNG.Application;
|
||||
using StarterNG.Domain.Settings;
|
||||
using StarterNG.Tests.Fakes;
|
||||
|
||||
@@ -564,11 +565,25 @@ public class SettingsStoreTests
|
||||
var installation = WithHome(files);
|
||||
installation.SettingsStore.Load();
|
||||
|
||||
installation.SettingsStore.SaveTo(profile);
|
||||
Assert.False(installation.SettingsStore.ExportTo(profile));
|
||||
|
||||
Assert.False(files.FileExists(profile));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void A_profile_written_leaves_what_the_users_file_still_lacks_to_be_saved()
|
||||
{
|
||||
var installation = WithHome(new InMemoryFileSystem().WithFile(UserIni, "uart COM3 57600 0.1\n"));
|
||||
installation.SettingsStore.Load();
|
||||
installation.SettingsStore.Settings.UartPort = "COM4";
|
||||
|
||||
Assert.True(installation.SettingsStore.ExportTo("/home/kolejarz/profile.ini"));
|
||||
|
||||
Assert.Contains(new IniChange("uart", "COM3 57600 0.1", "COM4 57600 0.1"),
|
||||
installation.SettingsStore.Changes(installation.SettingsStore.Settings));
|
||||
Assert.Contains("uart COM3 57600 0.1", installation.Files.ReadAllText(UserIni));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void A_read_that_works_again_lets_the_settings_be_saved()
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user