## Summary of the Pull Request This fixes a bug where renaming/deleting a color scheme would not update profiles that referenced it. This also adds detection for renaming a color scheme to a name that is already in use, and adds appropriate UI for that. ## References #6800 - Settings UI Epic ## PR Checklist * [X] Closes #8756 ## Detailed Description of the Pull Request / Additional comments `Model::CascadiaSettings` was updated to have a `UpdateColorSchemeReferences()` function that updates all profiles referencing the newly renamed color scheme. `Editor::ColorSchemesPageNavigationState` now takes and exposes a `Model::CascadiaSettings`. When a color scheme is renamed or deleted, we use `CascadiaSettings` to update our list of color schemes appropriately, then call `UpdateColorSchemeReferences()` to update the profiles. The tricky part is that `Profile` does not store a direct reference to `ColorScheme`, but rather the name of the color scheme. See [this tread](https://github.com/microsoft/terminal/issues/8756#issuecomment-760375027) for a discussion on this topic. ## Validation Steps Performed Repro steps from #8756 when renaming/deleting a referenced color scheme. ## Demo ![Scheme Name Already In Use Demo](https://user-images.githubusercontent.com/11050425/105431427-6e023980-5c0a-11eb-894a-42152fc77f05.gif)
47 lines
1.6 KiB
Plaintext
47 lines
1.6 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
import "GlobalAppSettings.idl";
|
|
import "Profile.idl";
|
|
import "TerminalWarnings.idl";
|
|
|
|
namespace Microsoft.Terminal.Settings.Model
|
|
{
|
|
[default_interface] runtimeclass CascadiaSettings {
|
|
CascadiaSettings(String json);
|
|
CascadiaSettings Copy();
|
|
|
|
void WriteSettingsToDisk();
|
|
|
|
static CascadiaSettings LoadDefaults();
|
|
static CascadiaSettings LoadAll();
|
|
static CascadiaSettings LoadUniversal();
|
|
|
|
static String SettingsPath { get; };
|
|
static String DefaultSettingsPath { get; };
|
|
|
|
static String ApplicationDisplayName { get; };
|
|
static String ApplicationVersion { get; };
|
|
|
|
GlobalAppSettings GlobalSettings { get; };
|
|
|
|
Profile ProfileDefaults { get; };
|
|
|
|
Windows.Foundation.Collections.IObservableVector<Profile> AllProfiles { get; };
|
|
Windows.Foundation.Collections.IObservableVector<Profile> ActiveProfiles { get; };
|
|
|
|
KeyMapping KeyMap { get; };
|
|
|
|
Windows.Foundation.Collections.IVectorView<SettingsLoadWarnings> Warnings { get; };
|
|
Windows.Foundation.IReference<SettingsLoadErrors> GetLoadingError { get; };
|
|
String GetSerializationErrorMessage { get; };
|
|
|
|
Profile CreateNewProfile();
|
|
Profile FindProfile(Guid profileGuid);
|
|
ColorScheme GetColorSchemeForProfile(Guid profileGuid);
|
|
void UpdateColorSchemeReferences(String oldName, String newName);
|
|
|
|
Guid GetProfileForArgs(NewTerminalArgs newTerminalArgs);
|
|
}
|
|
}
|