mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-10 00:48:23 -06:00
Introduce SearchMetadata and navigation by name
- SearchMetadata is unsused, but it is designed to hold information
so that we can navigate to a setting
- Updated all pages to...
- have an x:Name on relevant setting containers
- have a NavigateToXArgs used in the OnNavigatedTo() function
- update the NavigateToXArgs to include the name of an element
to scroll down to
- Add BringIntoViewWhenLoaded() to HasScrollViewer<T> which
scrolls down to the element with a given name
These components aren't fully hooked up together yet and there's a
few TODO CARLOS's throughout. Main upcoming work:
- indexing
- runtime indexing
- search box UI
- search results UI
based on 079c69b8be/doc/specs/settings-search.md
This commit is contained in:
parent
9d7ea77cc8
commit
e01ff4faf0
@ -27,7 +27,11 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Actions::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::ActionsViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToActionsArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
|
||||
// TODO CARLOS: runtime indexing and retrieval support
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
// Subscribe to the view model's FocusContainer event.
|
||||
// Use the KeyBindingViewModel or index provided in the event to focus the corresponding container
|
||||
|
||||
@ -4,12 +4,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actions.g.h"
|
||||
#include "NavigateToActionsArgs.g.h"
|
||||
#include "ActionsViewModel.h"
|
||||
#include "Utils.h"
|
||||
#include "ViewModelHelpers.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToActionsArgs : NavigateToActionsArgsT<NavigateToActionsArgs>
|
||||
{
|
||||
NavigateToActionsArgs(Editor::ActionsViewModel vm, hstring elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::ActionsViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::ActionsViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct Actions : public HasScrollViewer<Actions>, ActionsT<Actions>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -5,6 +5,12 @@ import "ActionsViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToActionsArgs
|
||||
{
|
||||
ActionsViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass Actions : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
Actions();
|
||||
|
||||
@ -29,6 +29,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
void AddProfile::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_State = e.Parameter().as<Editor::AddProfilePageNavigationState>();
|
||||
BringIntoViewWhenLoaded(_State.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -26,8 +26,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
struct AddProfilePageNavigationState : AddProfilePageNavigationStateT<AddProfilePageNavigationState>
|
||||
{
|
||||
public:
|
||||
AddProfilePageNavigationState(const Model::CascadiaSettings& settings) :
|
||||
_Settings{ settings } {}
|
||||
AddProfilePageNavigationState(const Model::CascadiaSettings& settings, const hstring& elementToFocus = {}) :
|
||||
_Settings{ settings },
|
||||
_ElementToFocus{ elementToFocus } {}
|
||||
|
||||
void RequestAddNew()
|
||||
{
|
||||
@ -42,6 +43,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
til::event<AddNewArgs> AddNew;
|
||||
|
||||
WINRT_PROPERTY(Model::CascadiaSettings, Settings, nullptr);
|
||||
WINRT_PROPERTY(hstring, ElementToFocus);
|
||||
};
|
||||
|
||||
struct AddProfile : public HasScrollViewer<AddProfile>, AddProfileT<AddProfile>
|
||||
|
||||
@ -8,6 +8,8 @@ namespace Microsoft.Terminal.Settings.Editor
|
||||
runtimeclass AddProfilePageNavigationState
|
||||
{
|
||||
Microsoft.Terminal.Settings.Model.CascadiaSettings Settings;
|
||||
String ElementToFocus { get; };
|
||||
|
||||
void RequestAddNew();
|
||||
void RequestDuplicate(Guid profile);
|
||||
event AddNewArgs AddNew;
|
||||
|
||||
@ -73,6 +73,7 @@
|
||||
<!-- Color Scheme -->
|
||||
<!-- This currently only display the Dark color scheme, even if the user has a pair of schemes set. -->
|
||||
<local:SettingContainer x:Uid="Profile_ColorScheme"
|
||||
x:Name="ColorScheme"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearColorScheme}"
|
||||
CurrentValueAccessibleName="{x:Bind Appearance.CurrentColorScheme.Name, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Appearance.HasDarkColorSchemeName, Mode=OneWay}"
|
||||
@ -281,16 +282,19 @@
|
||||
</StackPanel>
|
||||
</local:SettingContainer>
|
||||
<local:SettingContainer x:Uid="Profile_MissingFontFaces"
|
||||
x:Name="MissingFontFaces"
|
||||
HelpText="{x:Bind Appearance.MissingFontFaces, Mode=OneWay}"
|
||||
Style="{StaticResource SettingContainerErrorStyle}"
|
||||
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.MissingFontFaces), Mode=OneWay}" />
|
||||
<local:SettingContainer x:Uid="Profile_ProportionalFontFaces"
|
||||
x:Name="ProportionalFontFaces"
|
||||
HelpText="{x:Bind Appearance.ProportionalFontFaces, Mode=OneWay}"
|
||||
Style="{StaticResource SettingContainerWarningStyle}"
|
||||
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Appearance.ProportionalFontFaces), Mode=OneWay}" />
|
||||
|
||||
<!-- Font Size -->
|
||||
<local:SettingContainer x:Uid="Profile_FontSize"
|
||||
x:Name="FontSize"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearFontSize}"
|
||||
HasSettingValue="{x:Bind Appearance.HasFontSize, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.FontSizeOverrideSource, Mode=OneWay}"
|
||||
@ -307,6 +311,7 @@
|
||||
|
||||
<!-- Line Height -->
|
||||
<local:SettingContainer x:Uid="Profile_LineHeight"
|
||||
x:Name="LineHeight"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearLineHeight}"
|
||||
HasSettingValue="{x:Bind Appearance.HasLineHeight, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.LineHeightOverrideSource, Mode=OneWay}"
|
||||
@ -323,6 +328,7 @@
|
||||
|
||||
<!-- Cell Width -->
|
||||
<local:SettingContainer x:Uid="Profile_CellWidth"
|
||||
x:Name="CellWidth"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearCellWidth}"
|
||||
HasSettingValue="{x:Bind Appearance.HasCellWidth, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.CellWidthOverrideSource, Mode=OneWay}"
|
||||
@ -339,6 +345,7 @@
|
||||
|
||||
<!-- Font Weight -->
|
||||
<local:SettingContainer x:Uid="Profile_FontWeight"
|
||||
x:Name="FontWeight"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearFontWeight}"
|
||||
HasSettingValue="{x:Bind Appearance.HasFontWeight, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.FontWeightOverrideSource, Mode=OneWay}"
|
||||
@ -375,6 +382,7 @@
|
||||
</StackPanel>
|
||||
</local:SettingContainer>
|
||||
<local:SettingContainer x:Uid="Profile_FontAxes"
|
||||
x:Name="FontAxes"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearFontAxes}"
|
||||
HasSettingValue="{x:Bind Appearance.HasFontAxes, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.FontAxesOverrideSource, Mode=OneWay}"
|
||||
@ -402,6 +410,7 @@
|
||||
</StackPanel>
|
||||
</local:SettingContainer>
|
||||
<local:SettingContainer x:Uid="Profile_FontFeatures"
|
||||
x:Name="FontFeatures"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearFontFeatures}"
|
||||
HasSettingValue="{x:Bind Appearance.HasFontFeatures, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.FontFeaturesOverrideSource, Mode=OneWay}"
|
||||
@ -431,6 +440,7 @@
|
||||
|
||||
<!-- Builtin Glyphs -->
|
||||
<local:SettingContainer x:Uid="Profile_EnableBuiltinGlyphs"
|
||||
x:Name="EnableBuiltinGlyphs"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearEnableBuiltinGlyphs}"
|
||||
HasSettingValue="{x:Bind Appearance.HasEnableBuiltinGlyphs, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.EnableBuiltinGlyphsOverrideSource, Mode=OneWay}">
|
||||
@ -440,6 +450,7 @@
|
||||
|
||||
<!-- Color Glyphs -->
|
||||
<local:SettingContainer x:Uid="Profile_EnableColorGlyphs"
|
||||
x:Name="EnableColorGlyphs"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearEnableColorGlyphs}"
|
||||
HasSettingValue="{x:Bind Appearance.HasEnableColorGlyphs, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.EnableColorGlyphsOverrideSource, Mode=OneWay}">
|
||||
@ -449,6 +460,7 @@
|
||||
|
||||
<!-- Retro Terminal Effect -->
|
||||
<local:SettingContainer x:Uid="Profile_RetroTerminalEffect"
|
||||
x:Name="RetroTerminalEffect"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearRetroTerminalEffect}"
|
||||
HasSettingValue="{x:Bind Appearance.HasRetroTerminalEffect, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.RetroTerminalEffectOverrideSource, Mode=OneWay}">
|
||||
@ -458,6 +470,7 @@
|
||||
|
||||
<!-- Adjust Indistinguishable Colors -->
|
||||
<local:SettingContainer x:Uid="Profile_AdjustIndistinguishableColors"
|
||||
x:Name="AdjustIndistinguishableColors"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearAdjustIndistinguishableColors}"
|
||||
HasSettingValue="{x:Bind Appearance.HasAdjustIndistinguishableColors, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.AdjustIndistinguishableColorsOverrideSource, Mode=OneWay}">
|
||||
@ -476,6 +489,7 @@
|
||||
|
||||
<!-- Cursor Shape -->
|
||||
<local:SettingContainer x:Uid="Profile_CursorShape"
|
||||
x:Name="CursorShape"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearCursorShape}"
|
||||
HasSettingValue="{x:Bind Appearance.HasCursorShape, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.CursorShapeOverrideSource, Mode=OneWay}">
|
||||
@ -488,6 +502,7 @@
|
||||
|
||||
<!-- Cursor Height -->
|
||||
<local:SettingContainer x:Uid="Profile_CursorHeight"
|
||||
x:Name="CursorHeight"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearCursorHeight}"
|
||||
HasSettingValue="{x:Bind Appearance.HasCursorHeight, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.CursorHeightOverrideSource, Mode=OneWay}"
|
||||
@ -560,6 +575,7 @@
|
||||
|
||||
<!-- Background Image Stretch Mode -->
|
||||
<local:SettingContainer x:Uid="Profile_BackgroundImageStretchMode"
|
||||
x:Name="BackgroundImageStretchMode"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageStretchMode}"
|
||||
HasSettingValue="{x:Bind Appearance.HasBackgroundImageStretchMode, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.BackgroundImageStretchModeOverrideSource, Mode=OneWay}"
|
||||
@ -573,6 +589,7 @@
|
||||
|
||||
<!-- Background Image Alignment -->
|
||||
<local:SettingContainer x:Uid="Profile_BackgroundImageAlignment"
|
||||
x:Name="BackgroundImageAlignment"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageAlignment}"
|
||||
CurrentValue="{x:Bind Appearance.BackgroundImageAlignmentCurrentValue, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Appearance.HasBackgroundImageAlignment, Mode=OneWay}"
|
||||
@ -761,6 +778,7 @@
|
||||
|
||||
<!-- Background Image Opacity -->
|
||||
<local:SettingContainer x:Uid="Profile_BackgroundImageOpacity"
|
||||
x:Name="BackgroundImageOpacity"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearBackgroundImageOpacity}"
|
||||
HasSettingValue="{x:Bind Appearance.HasBackgroundImageOpacity, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.BackgroundImageOpacityOverrideSource, Mode=OneWay}"
|
||||
@ -787,6 +805,7 @@
|
||||
|
||||
<!-- Intense is bold, bright -->
|
||||
<local:SettingContainer x:Uid="Appearance_IntenseTextStyle"
|
||||
x:Name="IntenseTextStyle"
|
||||
ClearSettingValue="{x:Bind Appearance.ClearIntenseTextStyle}"
|
||||
HasSettingValue="{x:Bind Appearance.HasIntenseTextStyle, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Appearance.IntenseTextStyleOverrideSource, Mode=OneWay}">
|
||||
|
||||
@ -35,9 +35,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void ColorSchemes::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::ColorSchemesPageViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToColorSchemesArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
_ViewModel.CurrentPage(ColorSchemesSubPage::Base);
|
||||
|
||||
// TODO CARLOS: runtime indexing and retrieval support
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
_layoutUpdatedRevoker = LayoutUpdated(winrt::auto_revoke, [this](auto /*s*/, auto /*e*/) {
|
||||
// Only let this succeed once.
|
||||
_layoutUpdatedRevoker.revoke();
|
||||
|
||||
@ -5,12 +5,27 @@
|
||||
|
||||
#include "ColorTableEntry.g.h"
|
||||
#include "ColorSchemes.g.h"
|
||||
#include "NavigateToColorSchemesArgs.g.h"
|
||||
#include "ColorSchemeViewModel.h"
|
||||
#include "ColorSchemesPageViewModel.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToColorSchemesArgs : NavigateToColorSchemesArgsT<NavigateToColorSchemesArgs>
|
||||
{
|
||||
NavigateToColorSchemesArgs(const Editor::ColorSchemesPageViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::ColorSchemesPageViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::ColorSchemesPageViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct ColorSchemes : public HasScrollViewer<ColorSchemes>, ColorSchemesT<ColorSchemes>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -6,6 +6,12 @@ import "ColorSchemesPageViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToColorSchemesArgs
|
||||
{
|
||||
ColorSchemesPageViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass ColorSchemes : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||
{
|
||||
ColorSchemes();
|
||||
|
||||
@ -54,7 +54,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Compatibility::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::CompatibilityViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToCompatibilityArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -4,12 +4,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "Compatibility.g.h"
|
||||
#include "NavigateToCompatibilityArgs.g.h"
|
||||
#include "CompatibilityViewModel.g.h"
|
||||
#include "ViewModelHelpers.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToCompatibilityArgs : NavigateToCompatibilityArgsT<NavigateToCompatibilityArgs>
|
||||
{
|
||||
NavigateToCompatibilityArgs(const Editor::CompatibilityViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::CompatibilityViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::CompatibilityViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct CompatibilityViewModel : CompatibilityViewModelT<CompatibilityViewModel>, ViewModelHelper<CompatibilityViewModel>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -7,6 +7,12 @@ import "EnumEntry.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToCompatibilityArgs
|
||||
{
|
||||
CompatibilityViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
runtimeclass CompatibilityViewModel : Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||
{
|
||||
CompatibilityViewModel(Microsoft.Terminal.Settings.Model.CascadiaSettings settings);
|
||||
|
||||
@ -26,13 +26,15 @@
|
||||
|
||||
<StackPanel Style="{StaticResource SettingsStackStyle}">
|
||||
<!-- Allow Headless -->
|
||||
<local:SettingContainer x:Uid="Globals_AllowHeadless">
|
||||
<local:SettingContainer x:Uid="Globals_AllowHeadless"
|
||||
x:Name="AllowHeadless">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.AllowHeadless, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Text Measurement -->
|
||||
<local:SettingContainer x:Uid="Globals_TextMeasurement">
|
||||
<local:SettingContainer x:Uid="Globals_TextMeasurement"
|
||||
x:Name="TextMeasurement">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.TextMeasurementList}"
|
||||
@ -42,13 +44,15 @@
|
||||
|
||||
<!-- Debug Features -->
|
||||
<local:SettingContainer x:Uid="Globals_DebugFeaturesEnabled"
|
||||
x:Name="DebugFeaturesEnabled"
|
||||
Visibility="{x:Bind ViewModel.DebugFeaturesAvailable}">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.DebugFeaturesEnabled, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Reset Application State -->
|
||||
<local:SettingContainer x:Uid="Settings_ResetApplicationState">
|
||||
<local:SettingContainer x:Uid="Settings_ResetApplicationState"
|
||||
x:Name="ResetApplicationState">
|
||||
<Button x:Uid="Settings_ResetApplicationStateButton"
|
||||
Style="{StaticResource DeleteButtonStyle}">
|
||||
<Button.Flyout>
|
||||
@ -69,7 +73,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Reset to Default Settings -->
|
||||
<local:SettingContainer x:Uid="Settings_ResetToDefaultSettings">
|
||||
<local:SettingContainer x:Uid="Settings_ResetToDefaultSettings"
|
||||
x:Name="ResetToDefaultSettings">
|
||||
<Button x:Uid="Settings_ResetToDefaultSettingsButton"
|
||||
Style="{StaticResource DeleteButtonStyle}">
|
||||
<Button.Flyout>
|
||||
|
||||
@ -201,6 +201,7 @@
|
||||
</Border>
|
||||
|
||||
<local:SettingContainer x:Uid="ColorScheme_InboxSchemeDuplicate"
|
||||
x:Name="InboxSchemeDuplicate"
|
||||
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.IsEditable), Mode=OneWay}">
|
||||
<Button x:Name="DuplicateSchemeButton"
|
||||
x:Uid="ColorScheme_DuplicateButton"
|
||||
@ -209,6 +210,7 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<local:SettingContainer x:Uid="ColorScheme_ColorsHeader"
|
||||
x:Name="ColorsHeader"
|
||||
StartExpanded="True"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}"
|
||||
Visibility="{x:Bind ViewModel.IsEditable, Mode=OneWay}">
|
||||
|
||||
@ -34,12 +34,16 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Extensions::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::ExtensionsViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToExtensionsArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
auto vmImpl = get_self<ExtensionsViewModel>(_ViewModel);
|
||||
vmImpl->ExtensionPackageIdentifierTemplateSelector(_extensionPackageIdentifierTemplateSelector);
|
||||
vmImpl->LazyLoadExtensions();
|
||||
vmImpl->MarkAsVisited();
|
||||
|
||||
// TODO CARLOS: runtime indexing and retrieval support
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
if (vmImpl->IsExtensionView())
|
||||
{
|
||||
const auto currentPkgVM = vmImpl->CurrentExtensionPackage();
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Extensions.g.h"
|
||||
#include "NavigateToExtensionsArgs.g.h"
|
||||
#include "ExtensionsViewModel.g.h"
|
||||
#include "ExtensionPackageViewModel.g.h"
|
||||
#include "FragmentExtensionViewModel.g.h"
|
||||
@ -15,6 +16,20 @@
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToExtensionsArgs : NavigateToExtensionsArgsT<NavigateToExtensionsArgs>
|
||||
{
|
||||
NavigateToExtensionsArgs(const Editor::ExtensionsViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::ExtensionsViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::ExtensionsViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct Extensions : public HasScrollViewer<Extensions>, ExtensionsT<Extensions>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -5,6 +5,12 @@ import "ColorSchemesPageViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToExtensionsArgs
|
||||
{
|
||||
ExtensionsViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass Extensions : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
Extensions();
|
||||
|
||||
@ -501,6 +501,7 @@
|
||||
<StackPanel>
|
||||
<!-- Scope -->
|
||||
<local:SettingContainer x:Uid="Extensions_Scope"
|
||||
x:Name="Scope"
|
||||
Content="{x:Bind ViewModel.CurrentExtensionPackage.Scope, Mode=OneWay}"
|
||||
IsTabStop="False"
|
||||
Style="{StaticResource SettingContainerWithTextContent}" />
|
||||
|
||||
@ -24,7 +24,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void GlobalAppearance::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::GlobalAppearanceViewModel>();
|
||||
const auto& args = e.Parameter().as<Editor::NavigateToGlobalAppearanceArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -4,10 +4,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "GlobalAppearance.g.h"
|
||||
#include "NavigateToGlobalAppearanceArgs.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToGlobalAppearanceArgs : NavigateToGlobalAppearanceArgsT<NavigateToGlobalAppearanceArgs>
|
||||
{
|
||||
NavigateToGlobalAppearanceArgs(const Editor::GlobalAppearanceViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::GlobalAppearanceViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::GlobalAppearanceViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct GlobalAppearance : public HasScrollViewer<GlobalAppearance>, GlobalAppearanceT<GlobalAppearance>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -5,6 +5,12 @@ import "GlobalAppearanceViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToGlobalAppearanceArgs
|
||||
{
|
||||
GlobalAppearanceViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass GlobalAppearance : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
GlobalAppearance();
|
||||
|
||||
@ -28,7 +28,8 @@
|
||||
|
||||
<StackPanel Style="{StaticResource SettingsStackStyle}">
|
||||
<!-- Theme -->
|
||||
<local:SettingContainer x:Uid="Globals_Theme">
|
||||
<local:SettingContainer x:Uid="Globals_Theme"
|
||||
x:Name="Theme">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemsSource="{x:Bind ViewModel.ThemeList, Mode=OneWay}"
|
||||
SelectedItem="{x:Bind ViewModel.CurrentTheme, Mode=TwoWay}"
|
||||
@ -42,7 +43,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Position of new tab -->
|
||||
<local:SettingContainer x:Uid="Globals_NewTabPosition">
|
||||
<local:SettingContainer x:Uid="Globals_NewTabPosition"
|
||||
x:Name="NewTabPosition">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.NewTabPositionList, Mode=OneWay}"
|
||||
@ -51,45 +53,52 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Show Titlebar -->
|
||||
<local:SettingContainer x:Uid="Globals_ShowTitlebar">
|
||||
<local:SettingContainer x:Uid="Globals_ShowTitlebar"
|
||||
x:Name="ShowTitlebar">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ShowTabsInTitlebar, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}"
|
||||
Toggled="{x:Bind ViewModel.ShowTitlebarToggled}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Always show tabs -->
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysShowTabs">
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysShowTabs"
|
||||
x:Name="AlwaysShowTabs">
|
||||
<ToggleSwitch IsEnabled="{x:Bind mtu:Converters.InvertBoolean(ViewModel.ShowTabsInTitlebar), Mode=OneWay}"
|
||||
IsOn="{x:Bind ViewModel.AlwaysShowTabs, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Show tabs in full screen -->
|
||||
<local:SettingContainer x:Uid="Globals_ShowTabsFullscreen">
|
||||
<local:SettingContainer x:Uid="Globals_ShowTabsFullscreen"
|
||||
x:Name="ShowTabsFullscreen">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ShowTabsFullscreen, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Show Acrylic in Tab Row -->
|
||||
<local:SettingContainer x:Uid="Globals_AcrylicTabRow">
|
||||
<local:SettingContainer x:Uid="Globals_AcrylicTabRow"
|
||||
x:Name="AcrylicTabRow">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.UseAcrylicInTabRow, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Show Title in Titlebar -->
|
||||
<local:SettingContainer x:Uid="Globals_ShowTitleInTitlebar">
|
||||
<local:SettingContainer x:Uid="Globals_ShowTitleInTitlebar"
|
||||
x:Name="ShowTitleInTitlebar">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ShowTitleInTitlebar, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Always on Top -->
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysOnTop">
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysOnTop"
|
||||
x:Name="AlwaysOnTop">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.AlwaysOnTop, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Tab Width Mode -->
|
||||
<local:SettingContainer x:Uid="Globals_TabWidthMode">
|
||||
<local:SettingContainer x:Uid="Globals_TabWidthMode"
|
||||
x:Name="TabWidthMode">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.TabWidthModeList, Mode=OneWay}"
|
||||
@ -99,37 +108,43 @@
|
||||
|
||||
<!-- Disable Animations -->
|
||||
<!-- NOTE: the UID is "DisablePaneAnimationsReversed" not "DisablePaneAnimations". See GH#9124 for more details. -->
|
||||
<local:SettingContainer x:Uid="Globals_DisableAnimationsReversed">
|
||||
<local:SettingContainer x:Uid="Globals_DisableAnimationsReversed"
|
||||
x:Name="DisableAnimations">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.InvertedDisableAnimations, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Always Show Notification Icon -->
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysShowNotificationIcon">
|
||||
<local:SettingContainer x:Uid="Globals_AlwaysShowNotificationIcon"
|
||||
x:Name="AlwaysShowNotificationIcon">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.AlwaysShowNotificationIcon, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Minimize To Notification Area -->
|
||||
<local:SettingContainer x:Uid="Globals_MinimizeToNotificationArea">
|
||||
<local:SettingContainer x:Uid="Globals_MinimizeToNotificationArea"
|
||||
x:Name="MinimizeToNotificationArea">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.MinimizeToNotificationArea, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Automatically hide window -->
|
||||
<local:SettingContainer x:Uid="Globals_AutoHideWindow">
|
||||
<local:SettingContainer x:Uid="Globals_AutoHideWindow"
|
||||
x:Name="AutoHideWindow">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.AutoHideWindow, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Show Admin Shield -->
|
||||
<local:SettingContainer x:Uid="Globals_ShowAdminShield">
|
||||
<local:SettingContainer x:Uid="Globals_ShowAdminShield"
|
||||
x:Name="ShowAdminShield">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ShowAdminShield, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Enable Unfocused Acrylic -->
|
||||
<local:SettingContainer x:Uid="Globals_EnableUnfocusedAcrylic">
|
||||
<local:SettingContainer x:Uid="Globals_EnableUnfocusedAcrylic"
|
||||
x:Name="EnableUnfocusedAcrylic">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.EnableUnfocusedAcrylic, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
@ -21,7 +21,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Interaction::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::InteractionViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToInteractionArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -4,10 +4,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "Interaction.g.h"
|
||||
#include "NavigateToInteractionArgs.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToInteractionArgs : NavigateToInteractionArgsT<NavigateToInteractionArgs>
|
||||
{
|
||||
NavigateToInteractionArgs(const Editor::InteractionViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::InteractionViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::InteractionViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct Interaction : public HasScrollViewer<Interaction>, InteractionT<Interaction>
|
||||
{
|
||||
Interaction();
|
||||
|
||||
@ -5,6 +5,12 @@ import "InteractionViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToInteractionArgs
|
||||
{
|
||||
InteractionViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass Interaction : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
Interaction();
|
||||
|
||||
@ -27,13 +27,15 @@
|
||||
<StackPanel>
|
||||
<StackPanel Style="{StaticResource SettingsStackStyle}">
|
||||
<!-- Copy On Select -->
|
||||
<local:SettingContainer x:Uid="Globals_CopyOnSelect">
|
||||
<local:SettingContainer x:Uid="Globals_CopyOnSelect"
|
||||
x:Name="CopyOnSelect">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.CopyOnSelect, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Copy Format -->
|
||||
<local:SettingContainer x:Uid="Globals_CopyFormat">
|
||||
<local:SettingContainer x:Uid="Globals_CopyFormat"
|
||||
x:Name="CopyFormat">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.CopyFormatList, Mode=OneWay}"
|
||||
@ -42,19 +44,22 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Trim Block Selection -->
|
||||
<local:SettingContainer x:Uid="Globals_TrimBlockSelection">
|
||||
<local:SettingContainer x:Uid="Globals_TrimBlockSelection"
|
||||
x:Name="TrimBlockSelection">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.TrimBlockSelection, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Trim Paste -->
|
||||
<local:SettingContainer x:Uid="Globals_TrimPaste">
|
||||
<local:SettingContainer x:Uid="Globals_TrimPaste"
|
||||
x:Name="TrimPaste">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.TrimPaste, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Word Delimiters -->
|
||||
<local:SettingContainer x:Uid="Globals_WordDelimiters"
|
||||
x:Name="WordDelimiters"
|
||||
CurrentValue="{x:Bind ViewModel.WordDelimiters, Mode=OneWay}"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}">
|
||||
<TextBox IsSpellCheckEnabled="False"
|
||||
@ -63,13 +68,15 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Snap On Resize -->
|
||||
<local:SettingContainer x:Uid="Globals_SnapToGridOnResize">
|
||||
<local:SettingContainer x:Uid="Globals_SnapToGridOnResize"
|
||||
x:Name="SnapToGridOnResize">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.SnapToGridOnResize, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Tab Switcher Mode -->
|
||||
<local:SettingContainer x:Uid="Globals_TabSwitcherMode">
|
||||
<local:SettingContainer x:Uid="Globals_TabSwitcherMode"
|
||||
x:Name="TabSwitcherMode">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.TabSwitcherModeList}"
|
||||
@ -78,31 +85,36 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Focus Follow Mouse Mode -->
|
||||
<local:SettingContainer x:Uid="Globals_FocusFollowMouse">
|
||||
<local:SettingContainer x:Uid="Globals_FocusFollowMouse"
|
||||
x:Name="FocusFollowMouse">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.FocusFollowMouse, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Enable Font Size Changes with Scrolling -->
|
||||
<local:SettingContainer x:Uid="Globals_ScrollToZoom">
|
||||
<local:SettingContainer x:Uid="Globals_ScrollToZoom"
|
||||
x:Name="ScrollToZoom">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ScrollToZoom, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Enable Window Opacity Changes with Scrolling -->
|
||||
<local:SettingContainer x:Uid="Globals_ScrollToChangeOpacity">
|
||||
<local:SettingContainer x:Uid="Globals_ScrollToChangeOpacity"
|
||||
x:Name="ScrollToChangeOpacity">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ScrollToChangeOpacity, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Detect URLs -->
|
||||
<local:SettingContainer x:Uid="Globals_DetectURLs">
|
||||
<local:SettingContainer x:Uid="Globals_DetectURLs"
|
||||
x:Name="DetectURLs">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.DetectURLs, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Search Web Default Query URL -->
|
||||
<local:SettingContainer x:Uid="Globals_SearchWebDefaultQueryUrl"
|
||||
x:Name="SearchWebDefaultQueryUrl"
|
||||
CurrentValue="{x:Bind ViewModel.SearchWebDefaultQueryUrl, Mode=OneWay}"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}">
|
||||
<TextBox IsSpellCheckEnabled="False"
|
||||
@ -111,7 +123,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Enable Color Selection -->
|
||||
<local:SettingContainer x:Uid="Globals_EnableColorSelection">
|
||||
<local:SettingContainer x:Uid="Globals_EnableColorSelection"
|
||||
x:Name="EnableColorSelection">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.EnableColorSelection, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
@ -123,25 +136,29 @@
|
||||
Style="{StaticResource TextBlockSubHeaderStyle}" />
|
||||
|
||||
<!-- Close All Tabs Warning -->
|
||||
<local:SettingContainer x:Uid="Globals_ConfirmCloseAllTabs">
|
||||
<local:SettingContainer x:Uid="Globals_ConfirmCloseAllTabs"
|
||||
x:Name="ConfirmCloseAllTabs">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.ConfirmCloseAllTabs, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Input Service Warning -->
|
||||
<local:SettingContainer x:Uid="Globals_InputServiceWarning">
|
||||
<local:SettingContainer x:Uid="Globals_InputServiceWarning"
|
||||
x:Name="InputServiceWarning">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.InputServiceWarning, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Large Paste Warning -->
|
||||
<local:SettingContainer x:Uid="Globals_WarnAboutLargePaste">
|
||||
<local:SettingContainer x:Uid="Globals_WarnAboutLargePaste"
|
||||
x:Name="WarnAboutLargePaste">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.WarnAboutLargePaste, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Multi Line Paste Warning -->
|
||||
<local:SettingContainer x:Uid="Globals_WarnAboutMultiLinePaste">
|
||||
<local:SettingContainer x:Uid="Globals_WarnAboutMultiLinePaste"
|
||||
x:Name="WarnAboutMultiLinePaste">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind WarnAboutMultiLinePasteList}"
|
||||
|
||||
@ -40,10 +40,13 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Launch::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::LaunchViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToLaunchArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
auto innerViewModel{ winrt::get_self<Editor::implementation::LaunchViewModel>(_ViewModel) };
|
||||
/* coroutine dispatch */ innerViewModel->PrepareStartOnUserLoginSettings();
|
||||
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
"NavigatedToPage",
|
||||
|
||||
@ -4,10 +4,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "Launch.g.h"
|
||||
#include "NavigateToLaunchArgs.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToLaunchArgs : NavigateToLaunchArgsT<NavigateToLaunchArgs>
|
||||
{
|
||||
NavigateToLaunchArgs(const Editor::LaunchViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::LaunchViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::LaunchViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct Launch : public HasScrollViewer<Launch>, LaunchT<Launch>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -6,6 +6,12 @@ import "LaunchViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToLaunchArgs
|
||||
{
|
||||
LaunchViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass Launch : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
Launch();
|
||||
|
||||
@ -44,9 +44,9 @@
|
||||
<StackPanel>
|
||||
<StackPanel Style="{StaticResource SettingsStackStyle}">
|
||||
<!-- Default Profile -->
|
||||
<local:SettingContainer x:Uid="Globals_DefaultProfile">
|
||||
<ComboBox x:Name="DefaultProfile"
|
||||
ItemsSource="{x:Bind ViewModel.DefaultProfiles}"
|
||||
<local:SettingContainer x:Uid="Globals_DefaultProfile"
|
||||
x:Name="DefaultProfile">
|
||||
<ComboBox ItemsSource="{x:Bind ViewModel.DefaultProfiles}"
|
||||
SelectedItem="{x:Bind ViewModel.CurrentDefaultProfile, Mode=TwoWay}"
|
||||
Style="{StaticResource ComboBoxSettingStyle}">
|
||||
<ComboBox.ItemTemplate>
|
||||
@ -141,7 +141,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Language -->
|
||||
<local:SettingContainer x:Uid="Globals_Language">
|
||||
<local:SettingContainer x:Uid="Globals_Language"
|
||||
x:Name="Language">
|
||||
<ComboBox ItemsSource="{x:Bind ViewModel.LanguageList}"
|
||||
SelectedItem="{x:Bind ViewModel.CurrentLanguage, Mode=TwoWay}"
|
||||
Style="{StaticResource ComboBoxSettingStyle}">
|
||||
@ -154,7 +155,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Language -->
|
||||
<local:SettingContainer x:Uid="Globals_DefaultInputScope">
|
||||
<local:SettingContainer x:Uid="Globals_DefaultInputScope"
|
||||
x:Name="DefaultInputScope">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.DefaultInputScopeList}"
|
||||
@ -164,6 +166,7 @@
|
||||
|
||||
<!-- Start on User Login -->
|
||||
<local:SettingContainer x:Uid="Globals_StartOnUserLogin"
|
||||
x:Name="StartOnUserLogin"
|
||||
HelpText="{x:Bind ViewModel.StartOnUserLoginStatefulHelpText, Mode=OneWay}"
|
||||
Visibility="{x:Bind ViewModel.StartOnUserLoginAvailable, Mode=OneTime}">
|
||||
<ToggleSwitch IsEnabled="{x:Bind ViewModel.StartOnUserLoginConfigurable, Mode=OneWay}"
|
||||
@ -172,7 +175,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- First Window Behavior -->
|
||||
<local:SettingContainer x:Uid="Globals_FirstWindowPreference">
|
||||
<local:SettingContainer x:Uid="Globals_FirstWindowPreference"
|
||||
x:Name="FirstWindowPreference">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.FirstWindowPreferenceList}"
|
||||
@ -181,7 +185,8 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Windowing Behavior -->
|
||||
<local:SettingContainer x:Uid="Globals_WindowingBehavior">
|
||||
<local:SettingContainer x:Uid="Globals_WindowingBehavior"
|
||||
x:Name="WindowingBehavior">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.WindowingBehaviorList}"
|
||||
@ -191,6 +196,7 @@
|
||||
|
||||
<!-- Launch Size -->
|
||||
<local:SettingContainer x:Uid="Globals_LaunchSize"
|
||||
x:Name="LaunchSize"
|
||||
CurrentValue="{x:Bind ViewModel.LaunchSizeCurrentValue, Mode=OneWay}"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}">
|
||||
<Grid ColumnSpacing="12"
|
||||
@ -234,6 +240,7 @@
|
||||
|
||||
<!-- Launch Parameters -->
|
||||
<local:SettingContainer x:Uid="Globals_LaunchParameters"
|
||||
x:Name="LaunchParameters"
|
||||
CurrentValue="{x:Bind ViewModel.LaunchParametersCurrentValue, Mode=OneWay}"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}">
|
||||
<Grid RowSpacing="8">
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "InteractionViewModel.h"
|
||||
#include "LaunchViewModel.h"
|
||||
#include "NewTabMenuViewModel.h"
|
||||
#include "NewTabMenu.h"
|
||||
#include "..\types\inc\utils.hpp"
|
||||
#include <..\WinRTUtils\inc\Utils.h>
|
||||
|
||||
@ -84,7 +85,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(newTabMenuTag), RS_(L"Nav_NewTabMenu/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), _newTabMenuPageVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), winrt::make<NavigateToNewTabMenuArgs>(_newTabMenuPageVM));
|
||||
}
|
||||
});
|
||||
|
||||
@ -137,7 +138,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(extensionsTag), RS_(L"Nav_Extensions/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), _extensionsVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), winrt::make<NavigateToExtensionsArgs>(_extensionsVM));
|
||||
}
|
||||
});
|
||||
|
||||
@ -441,7 +442,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
}
|
||||
else if (currentPage == ProfileSubPage::Terminal)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Profiles_Terminal>(), profile);
|
||||
contentFrame().Navigate(xaml_typename<Editor::Profiles_Terminal>(), winrt::make<implementation::NavigateToProfileArgs>(profile, *this));
|
||||
const auto crumb = winrt::make<Breadcrumb>(breadcrumbTag, RS_(L"Profile_Terminal/Header"), BreadcrumbSubPage::Profile_Terminal);
|
||||
_breadcrumbs.Append(crumb);
|
||||
SettingsMainPage_ScrollViewer().ScrollToVerticalOffset(0);
|
||||
@ -463,31 +464,32 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
if (clickedItemTag == launchTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Launch>(), winrt::make<LaunchViewModel>(_settingsClone));
|
||||
_newTabMenuPageVM.CurrentFolder(nullptr);
|
||||
contentFrame().Navigate(xaml_typename<Editor::Launch>(), winrt::make<NavigateToLaunchArgs>(winrt::make<LaunchViewModel>(_settingsClone)));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Launch/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
else if (clickedItemTag == interactionTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Interaction>(), winrt::make<InteractionViewModel>(_settingsClone.GlobalSettings()));
|
||||
contentFrame().Navigate(xaml_typename<Editor::Interaction>(), winrt::make<NavigateToInteractionArgs>(winrt::make<InteractionViewModel>(_settingsClone.GlobalSettings())));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Interaction/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
else if (clickedItemTag == renderingTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Rendering>(), winrt::make<RenderingViewModel>(_settingsClone));
|
||||
contentFrame().Navigate(xaml_typename<Editor::Rendering>(), winrt::make<NavigateToRenderingArgs>(winrt::make<RenderingViewModel>(_settingsClone)));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Rendering/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
else if (clickedItemTag == compatibilityTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Compatibility>(), winrt::make<CompatibilityViewModel>(_settingsClone));
|
||||
contentFrame().Navigate(xaml_typename<Editor::Compatibility>(), winrt::make<NavigateToCompatibilityArgs>(winrt::make<CompatibilityViewModel>(_settingsClone)));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Compatibility/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
else if (clickedItemTag == actionsTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Actions>(), winrt::make<ActionsViewModel>(_settingsClone));
|
||||
contentFrame().Navigate(xaml_typename<Editor::Actions>(), winrt::make<NavigateToActionsArgs>(winrt::make<ActionsViewModel>(_settingsClone)));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Actions/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
@ -502,7 +504,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
else
|
||||
{
|
||||
// Navigate to the NewTabMenu page
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), _newTabMenuPageVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), winrt::make<NavigateToNewTabMenuArgs>(_newTabMenuPageVM));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_NewTabMenu/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
@ -517,7 +519,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
}
|
||||
else
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), _extensionsVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), winrt::make<NavigateToExtensionsArgs>(_extensionsVM));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Extensions/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
@ -552,7 +554,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_ColorSchemes/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
contentFrame().Navigate(xaml_typename<Editor::ColorSchemes>(), _colorSchemesPageVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::ColorSchemes>(), winrt::make<NavigateToColorSchemesArgs>(_colorSchemesPageVM));
|
||||
|
||||
if (subPage == BreadcrumbSubPage::ColorSchemes_Edit)
|
||||
{
|
||||
@ -561,7 +563,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
}
|
||||
else if (clickedItemTag == globalAppearanceTag)
|
||||
{
|
||||
contentFrame().Navigate(xaml_typename<Editor::GlobalAppearance>(), winrt::make<GlobalAppearanceViewModel>(_settingsClone.GlobalSettings()));
|
||||
contentFrame().Navigate(xaml_typename<Editor::GlobalAppearance>(), winrt::make<NavigateToGlobalAppearanceArgs>(winrt::make<GlobalAppearanceViewModel>(_settingsClone.GlobalSettings())));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(clickedItemTag), RS_(L"Nav_Appearance/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
}
|
||||
@ -623,7 +625,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
_PreNavigateHelper();
|
||||
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), _newTabMenuPageVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::NewTabMenu>(), winrt::make<NavigateToNewTabMenuArgs>(_newTabMenuPageVM));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(newTabMenuTag), RS_(L"Nav_NewTabMenu/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
|
||||
@ -656,7 +658,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
_PreNavigateHelper();
|
||||
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), _extensionsVM);
|
||||
contentFrame().Navigate(xaml_typename<Editor::Extensions>(), winrt::make<NavigateToExtensionsArgs>(_extensionsVM));
|
||||
const auto crumb = winrt::make<Breadcrumb>(box_value(extensionsTag), RS_(L"Nav_Extensions/Content"), BreadcrumbSubPage::None);
|
||||
_breadcrumbs.Append(crumb);
|
||||
|
||||
|
||||
@ -157,6 +157,9 @@
|
||||
<ClInclude Include="Rendering.h">
|
||||
<DependentUpon>Rendering.xaml</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SearchMetadata.h">
|
||||
<DependentUpon>SearchMetadata.idl</DependentUpon>
|
||||
</ClInclude>
|
||||
<ClInclude Include="SettingContainer.h">
|
||||
<DependentUpon>SettingContainer.idl</DependentUpon>
|
||||
</ClInclude>
|
||||
@ -349,6 +352,10 @@
|
||||
<ClCompile Include="Rendering.cpp">
|
||||
<DependentUpon>Rendering.xaml</DependentUpon>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SearchMetadata.cpp">
|
||||
<DependentUpon>SearchMetadata.idl</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</ClCompile>
|
||||
<ClCompile Include="SettingContainer.cpp">
|
||||
<DependentUpon>SettingContainer.idl</DependentUpon>
|
||||
</ClCompile>
|
||||
@ -449,6 +456,9 @@
|
||||
<DependentUpon>Appearances.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Midl>
|
||||
<Midl Include="SearchMetadata.idl">
|
||||
<SubType>Code</SubType>
|
||||
</Midl>
|
||||
<Midl Include="SettingContainer.idl">
|
||||
<SubType>Code</SubType>
|
||||
</Midl>
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
<Midl Include="GlobalAppearanceViewModel.idl" />
|
||||
<Midl Include="LaunchViewModel.idl" />
|
||||
<Midl Include="EnumEntry.idl" />
|
||||
<Midl Include="SearchMetadata.idl" />
|
||||
<Midl Include="SettingContainer.idl" />
|
||||
<Midl Include="TerminalColorConverters.idl" />
|
||||
<Midl Include="NewTabMenuViewModel.idl" />
|
||||
|
||||
@ -43,7 +43,11 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void NewTabMenu::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::NewTabMenuViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToNewTabMenuArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
|
||||
// TODO CARLOS: runtime indexing and retrieval support
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -4,11 +4,26 @@
|
||||
#pragma once
|
||||
|
||||
#include "NewTabMenu.g.h"
|
||||
#include "NavigateToNewTabMenuArgs.g.h"
|
||||
#include "NewTabMenuEntryTemplateSelector.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToNewTabMenuArgs : NavigateToNewTabMenuArgsT<NavigateToNewTabMenuArgs>
|
||||
{
|
||||
NavigateToNewTabMenuArgs(const Editor::NewTabMenuViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::NewTabMenuViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::NewTabMenuViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct NewTabMenu : public HasScrollViewer<NewTabMenu>, NewTabMenuT<NewTabMenu>
|
||||
{
|
||||
public:
|
||||
|
||||
@ -5,6 +5,12 @@ import "NewTabMenuViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToNewTabMenuArgs
|
||||
{
|
||||
NewTabMenuViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass NewTabMenu : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
NewTabMenu();
|
||||
|
||||
@ -15,16 +15,19 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
struct NavigateToProfileArgs : NavigateToProfileArgsT<NavigateToProfileArgs>
|
||||
{
|
||||
public:
|
||||
NavigateToProfileArgs(ProfileViewModel profile, Editor::IHostedInWindow windowRoot) :
|
||||
NavigateToProfileArgs(ProfileViewModel profile, Editor::IHostedInWindow windowRoot, const hstring& elementToFocus = {}) :
|
||||
_Profile(profile),
|
||||
_WindowRoot(windowRoot) {}
|
||||
_WindowRoot(windowRoot),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::IHostedInWindow WindowRoot() const noexcept { return _WindowRoot; }
|
||||
Editor::ProfileViewModel Profile() const noexcept { return _Profile; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::IHostedInWindow _WindowRoot;
|
||||
Editor::ProfileViewModel _Profile{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct BellSoundViewModel : BellSoundViewModelT<BellSoundViewModel>, ViewModelHelper<BellSoundViewModel>
|
||||
|
||||
@ -18,6 +18,7 @@ namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
ProfileViewModel Profile { get; };
|
||||
IHostedInWindow WindowRoot { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
runtimeclass DeleteProfileEventArgs
|
||||
|
||||
@ -29,6 +29,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
const auto args = e.Parameter().as<Editor::NavigateToProfileArgs>();
|
||||
_Profile = args.Profile();
|
||||
_windowRoot = args.WindowRoot();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -26,6 +26,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
_Profile = args.Profile();
|
||||
_windowRoot = args.WindowRoot();
|
||||
|
||||
// TODO CARLOS: how to handle Appearances object
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
if (!_previewControl)
|
||||
{
|
||||
const auto settings = winrt::get_self<implementation::ProfileViewModel>(_Profile)->TermSettings();
|
||||
|
||||
@ -5,11 +5,10 @@
|
||||
|
||||
#include <ThrottledFunc.h>
|
||||
|
||||
#include "Profiles_Appearance.g.h"
|
||||
#include "PreviewConnection.h"
|
||||
#include "Utils.h"
|
||||
|
||||
#include "Profiles_Appearance.g.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct Profiles_Appearance : public HasScrollViewer<Profiles_Appearance>, Profiles_AppearanceT<Profiles_Appearance>
|
||||
|
||||
@ -85,12 +85,12 @@
|
||||
Style="{StaticResource TextBlockSubHeaderStyle}" />
|
||||
|
||||
<!-- Opacity -->
|
||||
<local:SettingContainer x:Name="OpacityContainer"
|
||||
<local:SettingContainer x:Name="Opacity"
|
||||
x:Uid="Profile_Opacity"
|
||||
ClearSettingValue="{x:Bind Profile.ClearOpacity}"
|
||||
HasSettingValue="{x:Bind Profile.HasOpacity, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.OpacityOverrideSource, Mode=OneWay}">
|
||||
<StackPanel x:Name="OpacityControl">
|
||||
<StackPanel>
|
||||
<Grid Style="{StaticResource CustomSliderControlGridStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
@ -108,11 +108,11 @@
|
||||
|
||||
<!-- Use Acrylic -->
|
||||
<local:SettingContainer x:Uid="Profile_UseAcrylic"
|
||||
x:Name="UseAcrylic"
|
||||
ClearSettingValue="{x:Bind Profile.ClearUseAcrylic}"
|
||||
HasSettingValue="{x:Bind Profile.HasUseAcrylic, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.UseAcrylicOverrideSource, Mode=OneWay}">
|
||||
<ToggleSwitch x:Name="UseAcrylicToggleSwitch"
|
||||
IsOn="{x:Bind Profile.UseAcrylic, Mode=TwoWay}"
|
||||
<ToggleSwitch IsOn="{x:Bind Profile.UseAcrylic, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
@ -125,6 +125,7 @@
|
||||
|
||||
<!-- Padding -->
|
||||
<local:SettingContainer x:Uid="Profile_Padding"
|
||||
x:Name="Padding"
|
||||
ClearSettingValue="{x:Bind Profile.ClearPadding}"
|
||||
CurrentValue="{x:Bind Profile.Padding, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Profile.HasPadding, Mode=OneWay}"
|
||||
@ -192,6 +193,7 @@
|
||||
|
||||
<!-- Scrollbar Visibility -->
|
||||
<local:SettingContainer x:Uid="Profile_ScrollbarVisibility"
|
||||
x:Name="ScrollbarVisibility"
|
||||
ClearSettingValue="{x:Bind Profile.ClearScrollState}"
|
||||
HasSettingValue="{x:Bind Profile.HasScrollState, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.ScrollStateOverrideSource, Mode=OneWay}">
|
||||
@ -207,7 +209,10 @@
|
||||
Visibility="{x:Bind Profile.EditableUnfocusedAppearance, Mode=OneWay}">
|
||||
<TextBlock x:Uid="Profile_UnfocusedAppearanceTextBlock"
|
||||
Style="{StaticResource TextBlockSubtitleStyle}" />
|
||||
|
||||
<!--Create Unfocused Appearance-->
|
||||
<Button x:Uid="Profile_CreateUnfocusedAppearanceButton"
|
||||
x:Name="CreateUnfocusedAppearance"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="CreateUnfocusedAppearance_Click"
|
||||
@ -224,7 +229,10 @@
|
||||
</StackPanel>
|
||||
</Button.Content>
|
||||
</Button>
|
||||
|
||||
<!--Delete Unfocused Appearance-->
|
||||
<Button x:Uid="Profile_DeleteUnfocusedAppearanceButton"
|
||||
x:Name="DeleteUnfocusedAppearance"
|
||||
Margin="8,0,0,0"
|
||||
VerticalAlignment="Bottom"
|
||||
Click="DeleteUnfocusedAppearance_Click"
|
||||
@ -241,6 +249,8 @@
|
||||
</Button.Content>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
<!--Unfocused Appearance-->
|
||||
<local:Appearances Appearance="{x:Bind Profile.UnfocusedAppearance, Mode=OneWay}"
|
||||
SourceProfile="{x:Bind Profile, Mode=OneWay}"
|
||||
Visibility="{x:Bind Profile.ShowUnfocusedAppearance, Mode=OneWay}"
|
||||
|
||||
@ -33,6 +33,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
const auto args = e.Parameter().as<Editor::NavigateToProfileArgs>();
|
||||
_Profile = args.Profile();
|
||||
_windowRoot = args.WindowRoot();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
// Check the use parent directory box if the starting directory is empty
|
||||
if (_Profile.StartingDirectory().empty())
|
||||
|
||||
@ -41,6 +41,7 @@
|
||||
so the name will always be overridden.
|
||||
-->
|
||||
<local:SettingContainer x:Uid="Profile_Name"
|
||||
x:Name="Name"
|
||||
CurrentValue="{x:Bind Profile.Name, Mode=OneWay}"
|
||||
Style="{StaticResource ExpanderSettingContainerStyle}"
|
||||
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
||||
@ -49,7 +50,7 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Commandline -->
|
||||
<local:SettingContainer x:Name="CommandlineContainer"
|
||||
<local:SettingContainer x:Name="Commandline"
|
||||
x:Uid="Profile_Commandline"
|
||||
ClearSettingValue="{x:Bind Profile.ClearCommandline}"
|
||||
CurrentValue="{x:Bind Profile.Commandline, Mode=OneWay}"
|
||||
@ -70,7 +71,7 @@
|
||||
</local:SettingContainer>
|
||||
|
||||
<!-- Starting Directory -->
|
||||
<local:SettingContainer x:Name="StartingDirectoryContainer"
|
||||
<local:SettingContainer x:Name="StartingDirectory"
|
||||
x:Uid="Profile_StartingDirectory"
|
||||
ClearSettingValue="{x:Bind Profile.ClearStartingDirectory}"
|
||||
CurrentValue="{x:Bind Profile.CurrentStartingDirectoryPreview, Mode=OneWay}"
|
||||
@ -100,6 +101,7 @@
|
||||
|
||||
<!-- Icon -->
|
||||
<local:SettingContainer x:Uid="Profile_Icon"
|
||||
x:Name="Icon"
|
||||
ClearSettingValue="{x:Bind Profile.ClearIcon}"
|
||||
CurrentValueAccessibleName="{x:Bind Profile.LocalizedIcon, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Profile.HasIcon, Mode=OneWay}"
|
||||
@ -199,6 +201,7 @@
|
||||
|
||||
<!-- Tab Title -->
|
||||
<local:SettingContainer x:Uid="Profile_TabTitle"
|
||||
x:Name="TabTitle"
|
||||
ClearSettingValue="{x:Bind Profile.ClearTabTitle}"
|
||||
CurrentValue="{x:Bind Profile.TabTitlePreview, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Profile.HasTabTitle, Mode=OneWay}"
|
||||
@ -226,6 +229,7 @@
|
||||
|
||||
<!-- Elevate -->
|
||||
<local:SettingContainer x:Uid="Profile_Elevate"
|
||||
x:Name="Elevate"
|
||||
ClearSettingValue="{x:Bind Profile.ClearElevate}"
|
||||
HasSettingValue="{x:Bind Profile.HasElevate, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.ElevateOverrideSource, Mode=OneWay}">
|
||||
@ -235,6 +239,7 @@
|
||||
|
||||
<!-- Hidden -->
|
||||
<local:SettingContainer x:Uid="Profile_Hidden"
|
||||
x:Name="Hidden"
|
||||
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
||||
<ToggleSwitch IsOn="{x:Bind Profile.Hidden, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
|
||||
@ -21,7 +21,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Profiles_Terminal::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_Profile = e.Parameter().as<Editor::ProfileViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToProfileArgs>();
|
||||
_Profile = args.Profile();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
|
||||
<!-- Suppress Application Title -->
|
||||
<local:SettingContainer x:Uid="Profile_SuppressApplicationTitle"
|
||||
x:Name="SuppressApplicationTitle"
|
||||
ClearSettingValue="{x:Bind Profile.ClearSuppressApplicationTitle}"
|
||||
HasSettingValue="{x:Bind Profile.HasSuppressApplicationTitle, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.SuppressApplicationTitleOverrideSource, Mode=OneWay}">
|
||||
@ -42,6 +43,7 @@
|
||||
|
||||
<!-- Force VT Input -->
|
||||
<local:SettingContainer x:Uid="Profile_ForceVTInput"
|
||||
x:Name="ForceVTInput"
|
||||
ClearSettingValue="{x:Bind Profile.ClearForceVTInput}"
|
||||
HasSettingValue="{x:Bind Profile.HasForceVTInput, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.ForceVTInputOverrideSource, Mode=OneWay}">
|
||||
@ -51,6 +53,7 @@
|
||||
|
||||
<!-- Allow VT Checksum Report -->
|
||||
<local:SettingContainer x:Uid="Profile_AllowVtChecksumReport"
|
||||
x:Name="AllowVtChecksumReport"
|
||||
ClearSettingValue="{x:Bind Profile.ClearAllowVtChecksumReport}"
|
||||
HasSettingValue="{x:Bind Profile.HasAllowVtChecksumReport, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.AllowVtChecksumReportOverrideSource, Mode=OneWay}">
|
||||
@ -60,6 +63,7 @@
|
||||
|
||||
<!-- Allow VT Clipboard Writing -->
|
||||
<local:SettingContainer x:Uid="Profile_AllowVtClipboardWrite"
|
||||
x:Name="AllowVtClipboardWrite"
|
||||
ClearSettingValue="{x:Bind Profile.ClearAllowVtClipboardWrite}"
|
||||
HasSettingValue="{x:Bind Profile.HasAllowVtClipboardWrite, Mode=OneWay}"
|
||||
SettingOverrideSource="{x:Bind Profile.AllowVtClipboardWriteOverrideSource, Mode=OneWay}">
|
||||
@ -69,6 +73,7 @@
|
||||
|
||||
<!-- Answerback Message -->
|
||||
<local:SettingContainer x:Uid="Profile_AnswerbackMessage"
|
||||
x:Name="AnswerbackMessage"
|
||||
ClearSettingValue="{x:Bind Profile.ClearAnswerbackMessage}"
|
||||
CurrentValue="{x:Bind Profile.AnswerbackMessagePreview, Mode=OneWay}"
|
||||
HasSettingValue="{x:Bind Profile.HasAnswerbackMessage, Mode=OneWay}"
|
||||
|
||||
@ -16,7 +16,9 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
|
||||
void Rendering::OnNavigatedTo(const NavigationEventArgs& e)
|
||||
{
|
||||
_ViewModel = e.Parameter().as<Editor::RenderingViewModel>();
|
||||
const auto args = e.Parameter().as<Editor::NavigateToRenderingArgs>();
|
||||
_ViewModel = args.ViewModel();
|
||||
BringIntoViewWhenLoaded(args.ElementToFocus());
|
||||
|
||||
TraceLoggingWrite(
|
||||
g_hTerminalSettingsEditorProvider,
|
||||
|
||||
@ -4,10 +4,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "Rendering.g.h"
|
||||
#include "NavigateToRenderingArgs.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct NavigateToRenderingArgs : NavigateToRenderingArgsT<NavigateToRenderingArgs>
|
||||
{
|
||||
NavigateToRenderingArgs(const Editor::RenderingViewModel& vm, const hstring& elementToFocus = {}) :
|
||||
_ViewModel(vm),
|
||||
_ElementToFocus(elementToFocus) {}
|
||||
|
||||
Editor::RenderingViewModel ViewModel() const noexcept { return _ViewModel; }
|
||||
hstring ElementToFocus() const noexcept { return _ElementToFocus; }
|
||||
|
||||
private:
|
||||
Editor::RenderingViewModel _ViewModel{ nullptr };
|
||||
hstring _ElementToFocus{};
|
||||
};
|
||||
|
||||
struct Rendering : public HasScrollViewer<Rendering>, RenderingT<Rendering>
|
||||
{
|
||||
Rendering();
|
||||
|
||||
@ -5,6 +5,12 @@ import "RenderingViewModel.idl";
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
runtimeclass NavigateToRenderingArgs
|
||||
{
|
||||
RenderingViewModel ViewModel { get; };
|
||||
String ElementToFocus { get; };
|
||||
}
|
||||
|
||||
[default_interface] runtimeclass Rendering : Windows.UI.Xaml.Controls.Page
|
||||
{
|
||||
Rendering();
|
||||
|
||||
@ -24,7 +24,8 @@
|
||||
</Page.Resources>
|
||||
|
||||
<StackPanel Style="{StaticResource SettingsStackStyle}">
|
||||
<local:SettingContainer x:Uid="Globals_GraphicsAPI">
|
||||
<local:SettingContainer x:Uid="Globals_GraphicsAPI"
|
||||
x:Name="GraphicsAPI">
|
||||
<ComboBox AutomationProperties.AccessibilityView="Content"
|
||||
ItemTemplate="{StaticResource EnumComboBoxTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.GraphicsAPIList}"
|
||||
@ -32,12 +33,14 @@
|
||||
Style="{StaticResource ComboBoxSettingStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<local:SettingContainer x:Uid="Globals_DisablePartialInvalidation">
|
||||
<local:SettingContainer x:Uid="Globals_DisablePartialInvalidation"
|
||||
x:Name="DisablePartialInvalidation">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.DisablePartialInvalidation, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
<local:SettingContainer x:Uid="Globals_SoftwareRendering">
|
||||
<local:SettingContainer x:Uid="Globals_SoftwareRendering"
|
||||
x:Name="SoftwareRendering">
|
||||
<ToggleSwitch IsOn="{x:Bind ViewModel.SoftwareRendering, Mode=TwoWay}"
|
||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||
</local:SettingContainer>
|
||||
|
||||
45
src/cascadia/TerminalSettingsEditor/SearchMetadata.cpp
Normal file
45
src/cascadia/TerminalSettingsEditor/SearchMetadata.cpp
Normal file
@ -0,0 +1,45 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#include "pch.h"
|
||||
#include "SearchMetadata.h"
|
||||
#include "SearchMetadata.g.cpp"
|
||||
#include "LibraryResources.h"
|
||||
|
||||
using namespace winrt::Windows::UI::Xaml;
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
DependencyProperty SearchMetadata::_ParentPageProperty{ nullptr };
|
||||
DependencyProperty SearchMetadata::_SettingNameProperty{ nullptr };
|
||||
|
||||
SearchMetadata::SearchMetadata()
|
||||
{
|
||||
_InitializeProperties();
|
||||
}
|
||||
|
||||
void SearchMetadata::_InitializeProperties()
|
||||
{
|
||||
// Initialize any dependency properties here.
|
||||
// This performs a lazy load on these properties, instead of
|
||||
// initializing them when the DLL loads.
|
||||
if (!_ParentPageProperty)
|
||||
{
|
||||
_ParentPageProperty =
|
||||
DependencyProperty::RegisterAttached(
|
||||
L"ParentPage",
|
||||
xaml_typename<winrt::Windows::UI::Xaml::Interop::TypeName>(),
|
||||
xaml_typename<Editor::SearchMetadata>(),
|
||||
PropertyMetadata{ nullptr });
|
||||
}
|
||||
if (!_SettingNameProperty)
|
||||
{
|
||||
_SettingNameProperty =
|
||||
DependencyProperty::RegisterAttached(
|
||||
L"SettingName",
|
||||
xaml_typename<hstring>(),
|
||||
xaml_typename<Editor::SearchMetadata>(),
|
||||
PropertyMetadata{ box_value(L"") });
|
||||
}
|
||||
}
|
||||
}
|
||||
40
src/cascadia/TerminalSettingsEditor/SearchMetadata.h
Normal file
40
src/cascadia/TerminalSettingsEditor/SearchMetadata.h
Normal file
@ -0,0 +1,40 @@
|
||||
/*++
|
||||
Copyright (c) Microsoft Corporation
|
||||
Licensed under the MIT license.
|
||||
|
||||
Module Name:
|
||||
- SearchMetadata
|
||||
|
||||
Abstract:
|
||||
- A custom XAML attached property (like AutomationProperties)
|
||||
to hold metadata for search in the settings editor.
|
||||
|
||||
Author(s):
|
||||
- Carlos Zamora - October 2025
|
||||
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "SearchMetadata.g.h"
|
||||
#include "Utils.h"
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
||||
{
|
||||
struct SearchMetadata : SearchMetadataT<SearchMetadata>
|
||||
{
|
||||
public:
|
||||
SearchMetadata();
|
||||
|
||||
ATTACHED_DEPENDENCY_PROPERTY(winrt::Windows::UI::Xaml::Interop::TypeName, ParentPage);
|
||||
ATTACHED_DEPENDENCY_PROPERTY(winrt::hstring, SettingName);
|
||||
|
||||
private:
|
||||
static void _InitializeProperties();
|
||||
};
|
||||
}
|
||||
|
||||
namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
|
||||
{
|
||||
BASIC_FACTORY(SearchMetadata);
|
||||
}
|
||||
19
src/cascadia/TerminalSettingsEditor/SearchMetadata.idl
Normal file
19
src/cascadia/TerminalSettingsEditor/SearchMetadata.idl
Normal file
@ -0,0 +1,19 @@
|
||||
// Copyright (c) Microsoft Corporation.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
namespace Microsoft.Terminal.Settings.Editor
|
||||
{
|
||||
[default_interface]
|
||||
runtimeclass SearchMetadata : Windows.UI.Xaml.DependencyObject
|
||||
{
|
||||
SearchMetadata();
|
||||
|
||||
static Windows.UI.Xaml.DependencyProperty ParentPageProperty { get; };
|
||||
static Windows.UI.Xaml.Interop.TypeName GetParentPage(Windows.UI.Xaml.DependencyObject target);
|
||||
static void SetParentPage(Windows.UI.Xaml.DependencyObject target, Windows.UI.Xaml.Interop.TypeName val);
|
||||
|
||||
static Windows.UI.Xaml.DependencyProperty SettingNameProperty { get; };
|
||||
static String GetSettingName(Windows.UI.Xaml.DependencyObject target);
|
||||
static void SetSettingName(Windows.UI.Xaml.DependencyObject target, String val);
|
||||
}
|
||||
}
|
||||
@ -116,4 +116,34 @@ struct HasScrollViewer
|
||||
DismissAllPopups(uielem.XamlRoot());
|
||||
}
|
||||
}
|
||||
|
||||
// Finds the element with the given name and brings it into view
|
||||
void BringIntoViewWhenLoaded(const winrt::hstring elementName)
|
||||
{
|
||||
if (elementName.empty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
auto* pThis = static_cast<T*>(this);
|
||||
_loadedRevoker = pThis->Loaded(winrt::auto_revoke, [weakThis{ pThis->get_weak() }, elementName](auto&&, auto&&) {
|
||||
if (auto page{ weakThis.get() })
|
||||
{
|
||||
if (const auto& elementToFocus{ page->FindName(elementName).try_as<winrt::Microsoft::Terminal::Settings::Editor::SettingContainer>() })
|
||||
{
|
||||
// We need to wait for the page to be loaded
|
||||
// or else the call to StartBringIntoView()
|
||||
// will end up doing nothing
|
||||
elementToFocus.StartBringIntoView();
|
||||
|
||||
// TODO CARLOS: ensure this works in all scenarios (easiest to test when navigating to page by keyboard)
|
||||
elementToFocus.Focus(winrt::Windows::UI::Xaml::FocusState::Programmatic);
|
||||
}
|
||||
page->_loadedRevoker.revoke();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected:
|
||||
winrt::Windows::UI::Xaml::FrameworkElement::Loaded_revoker _loadedRevoker;
|
||||
};
|
||||
|
||||
@ -253,6 +253,39 @@ private:
|
||||
static winrt::Windows::UI::Xaml::DependencyProperty _##name##Property;
|
||||
#endif
|
||||
|
||||
#ifndef ATTACHED_DEPENDENCY_PROPERTY
|
||||
#define ATTACHED_DEPENDENCY_PROPERTY(type, name) \
|
||||
public: \
|
||||
static winrt::Windows::UI::Xaml::DependencyProperty name##Property() \
|
||||
{ \
|
||||
return _##name##Property; \
|
||||
} \
|
||||
static type Get##name(winrt::Windows::UI::Xaml::DependencyObject const& target) \
|
||||
{ \
|
||||
auto&& temp{ target.GetValue(_##name##Property) }; \
|
||||
if (temp) \
|
||||
{ \
|
||||
return winrt::unbox_value<type>(temp); \
|
||||
} \
|
||||
\
|
||||
if constexpr (std::is_base_of_v<winrt::Windows::Foundation::IInspectable, type>) \
|
||||
{ \
|
||||
return { nullptr }; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
return {}; \
|
||||
} \
|
||||
} \
|
||||
static void Set##name(winrt::Windows::UI::Xaml::DependencyObject const& target, const type& value) \
|
||||
{ \
|
||||
target.SetValue(_##name##Property, winrt::box_value(value)); \
|
||||
} \
|
||||
\
|
||||
private: \
|
||||
static winrt::Windows::UI::Xaml::DependencyProperty _##name##Property;
|
||||
#endif
|
||||
|
||||
// Use this macro for quickly defining the factory_implementation part of a
|
||||
// class. CppWinrt requires these for the compiler, but more often than not,
|
||||
// they require no customization. See
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user