This commit introduces the terminal settings editor (to wit: the Settings UI) as a standalone project. This project, and this commit, is the result of two and a half months of work. TSE started as a hackathon project in the Microsoft 2020 Hackathon, and from there it's grown to be a bona-fide graphical settings editor. There is a lot of xaml data binding in here, a number of views and a number of view models, and a bunch of paradigms that we've been reviewing and testing out and designing and refining. Specified in #6720, #8269 Follow-up work in #6800 Closes #1564 Closes #8048 (PR) Co-authored-by: Carlos Zamora <carlos.zamora@microsoft.com> Co-authored-by: Kayla Cinnamon <cinnamon@microsoft.com> Co-authored-by: Alberto Medina Gutierrez <almedina@microsoft.com> Co-authored-by: John Grandle <jograndl@microsoft.com> Co-authored-by: xerootg <xerootg@users.noreply.github.com> Co-authored-by: Scott <sarmiger1@gmail.com> Co-authored-by: Vineeth Thomas Alex <vineeththomasalex@gmail.com> Co-authored-by: Leon Liang <lelian@microsoft.com> Co-authored-by: Dustin L. Howett <duhowett@microsoft.com> Signed-off-by: Dustin L. Howett <duhowett@microsoft.com>
27 lines
1.2 KiB
Plaintext
27 lines
1.2 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
namespace Microsoft.Terminal.Settings.Editor
|
|
{
|
|
// Due to a XAML Compiler bug, it is hard for us to propagate an HWND into a XAML-using runtimeclass.
|
|
// To work around that, we'll only propagate the HWND (when we need to) into the settings' toplevel page
|
|
// and use IHostedInWindow to hide the implementation detail where we use IInitializeWithWindow (shobjidl_core)
|
|
// https://github.com/microsoft/microsoft-ui-xaml/issues/3331
|
|
interface IHostedInWindow
|
|
{
|
|
Boolean TryPropagateHostingWindow(IInspectable i);
|
|
}
|
|
|
|
[default_interface] runtimeclass MainPage : Windows.UI.Xaml.Controls.Page, IHostedInWindow
|
|
{
|
|
MainPage(Microsoft.Terminal.Settings.Model.CascadiaSettings settings);
|
|
|
|
void UpdateSettings(Microsoft.Terminal.Settings.Model.CascadiaSettings settings);
|
|
event Windows.Foundation.TypedEventHandler<Object, Microsoft.Terminal.Settings.Model.SettingsTarget> OpenJson;
|
|
|
|
// Due to the aforementioned bug, we can't use IInitializeWithWindow _here_ either.
|
|
// Let's just smuggle the HWND in as a UInt64 :|
|
|
void SetHostingWindow(UInt64 window);
|
|
}
|
|
}
|