mirror of
https://github.com/microsoft/terminal.git
synced 2025-12-19 18:11:39 -05:00
Introduce Microsoft.Terminal.UI and consolidate UI helpers (#15107)
This pull request introduces the module Microsoft.Terminal.UI.dll, and moves into it the following things: - Any `IDirectKeyListener` - All XAML converter helpers from around the project - ... including `IconPathConverter` from TerminalSettingsModel - ... but not `EmptyStringVisibilityConverter`, which has died It also adds a XAML Markup Extension named `mtu:ResourceString`, which will allow us to refer to string resources directly from XAML. It will allow us to remove all of the places in the code where we manually set resources on XAML controls. --------- Co-authored-by: Leonard Hecker <lhecker@microsoft.com>
This commit is contained in:
1
.github/actions/spelling/allow/microsoft.txt
vendored
1
.github/actions/spelling/allow/microsoft.txt
vendored
@@ -46,6 +46,7 @@ MSAA
|
|||||||
msixbundle
|
msixbundle
|
||||||
MSVC
|
MSVC
|
||||||
MSVCP
|
MSVCP
|
||||||
|
mtu
|
||||||
muxc
|
muxc
|
||||||
netcore
|
netcore
|
||||||
Onefuzz
|
Onefuzz
|
||||||
|
|||||||
@@ -412,6 +412,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TerminalStress", "src\tools
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingTests", "src\tools\RenderingTests\RenderingTests.vcxproj", "{37C995E0-2349-4154-8E77-4A52C0C7F46D}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingTests", "src\tools\RenderingTests\RenderingTests.vcxproj", "{37C995E0-2349-4154-8E77-4A52C0C7F46D}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UIHelpers", "src\cascadia\UIHelpers\UIHelpers.vcxproj", "{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}"
|
||||||
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchcat", "src\tools\benchcat\benchcat.vcxproj", "{2C836962-9543-4CE5-B834-D28E1F124B66}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchcat", "src\tools\benchcat\benchcat.vcxproj", "{2C836962-9543-4CE5-B834-D28E1F124B66}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleMonitor", "src\tools\ConsoleMonitor\ConsoleMonitor.vcxproj", "{328729E9-6723-416E-9C98-951F1473BBE1}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleMonitor", "src\tools\ConsoleMonitor\ConsoleMonitor.vcxproj", "{328729E9-6723-416E-9C98-951F1473BBE1}"
|
||||||
@@ -2356,6 +2358,29 @@ Global
|
|||||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM64.ActiveCfg = Release|ARM64
|
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x64.ActiveCfg = Release|x64
|
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x64.ActiveCfg = Release|x64
|
||||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x86.ActiveCfg = Release|Win32
|
{37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x64.ActiveCfg = AuditMode|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x64.Build.0 = AuditMode|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x86.ActiveCfg = AuditMode|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|x64.ActiveCfg = Fuzzing|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.Build.0 = Release|Win32
|
||||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32
|
||||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM64.ActiveCfg = Release|ARM64
|
||||||
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x64.ActiveCfg = Release|x64
|
{2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x64.ActiveCfg = Release|x64
|
||||||
@@ -2511,6 +2536,7 @@ Global
|
|||||||
{3C67784E-1453-49C2-9660-483E2CC7F7AD} = {40BD8415-DD93-4200-8D82-498DDDC08CC8}
|
{3C67784E-1453-49C2-9660-483E2CC7F7AD} = {40BD8415-DD93-4200-8D82-498DDDC08CC8}
|
||||||
{613CCB57-5FA9-48EF-80D0-6B1E319E20C4} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
{613CCB57-5FA9-48EF-80D0-6B1E319E20C4} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||||
{37C995E0-2349-4154-8E77-4A52C0C7F46D} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
{37C995E0-2349-4154-8E77-4A52C0C7F46D} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||||
|
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C}
|
||||||
{2C836962-9543-4CE5-B834-D28E1F124B66} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
{2C836962-9543-4CE5-B834-D28E1F124B66} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||||
{328729E9-6723-416E-9C98-951F1473BBE1} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
{328729E9-6723-416E-9C98-951F1473BBE1} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||||
{BE92101C-04F8-48DA-99F0-E1F4F1D2DC48} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
{BE92101C-04F8-48DA-99F0-E1F4F1D2DC48} = {A10C4720-DCA4-4640-9749-67F4314F527C}
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
import "TabBase.idl";
|
import "TabBase.idl";
|
||||||
import "IDirectKeyListener.idl";
|
|
||||||
import "HighlightedTextControl.idl";
|
import "HighlightedTextControl.idl";
|
||||||
import "FilteredCommand.idl";
|
import "FilteredCommand.idl";
|
||||||
|
|
||||||
namespace TerminalApp
|
namespace TerminalApp
|
||||||
{
|
{
|
||||||
[default_interface] runtimeclass CommandPalette : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged, IDirectKeyListener
|
[default_interface] runtimeclass CommandPalette : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged, Microsoft.Terminal.UI.IDirectKeyListener
|
||||||
{
|
{
|
||||||
CommandPalette();
|
CommandPalette();
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="using:TerminalApp"
|
xmlns:local="using:TerminalApp"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
|
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
|
||||||
AllowFocusOnInteraction="True"
|
AllowFocusOnInteraction="True"
|
||||||
AutomationProperties.Name="{x:Bind ControlName, Mode=OneWay}"
|
AutomationProperties.Name="{x:Bind ControlName, Mode=OneWay}"
|
||||||
@@ -23,12 +23,6 @@
|
|||||||
|
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<!-- This creates an instance of our CommandKeyChordVisibilityConverter we can reference below -->
|
|
||||||
<local:EmptyStringVisibilityConverter x:Key="CommandKeyChordVisibilityConverter" />
|
|
||||||
<local:EmptyStringVisibilityConverter x:Key="ParsedCommandLineTextVisibilityConverter" />
|
|
||||||
<local:EmptyStringVisibilityConverter x:Key="ParentCommandVisibilityConverter" />
|
|
||||||
<model:IconPathConverter x:Key="IconSourceConverter" />
|
|
||||||
|
|
||||||
<DataTemplate x:Key="ListItemTemplate"
|
<DataTemplate x:Key="ListItemTemplate"
|
||||||
x:DataType="local:FilteredCommand">
|
x:DataType="local:FilteredCommand">
|
||||||
<ListViewItem HorizontalContentAlignment="Stretch"
|
<ListViewItem HorizontalContentAlignment="Stretch"
|
||||||
@@ -62,8 +56,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
The block for the key chord is only visible
|
The block for the key chord is only visible
|
||||||
when there's actual text set as the label. See
|
when there's actual text set as the label.
|
||||||
CommandKeyChordVisibilityConverter for details.
|
|
||||||
We're setting the accessibility view on the
|
We're setting the accessibility view on the
|
||||||
border and text block to Raw because otherwise,
|
border and text block to Raw because otherwise,
|
||||||
Narrator will read out the key chord. Problem is,
|
Narrator will read out the key chord. Problem is,
|
||||||
@@ -77,7 +70,7 @@
|
|||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Background="{ThemeResource FlyoutPresenterBackground}"
|
Background="{ThemeResource FlyoutPresenterBackground}"
|
||||||
Style="{ThemeResource KeyChordBorderStyle}"
|
Style="{ThemeResource KeyChordBorderStyle}"
|
||||||
Visibility="{x:Bind Item.KeyChordText, Mode=OneWay, Converter={StaticResource CommandKeyChordVisibilityConverter}}">
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Item.KeyChordText), Mode=OneWay}">
|
||||||
|
|
||||||
<TextBlock AutomationProperties.AccessibilityView="Raw"
|
<TextBlock AutomationProperties.AccessibilityView="Raw"
|
||||||
FontSize="12"
|
FontSize="12"
|
||||||
@@ -113,8 +106,7 @@
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
The block for the key chord is only visible
|
The block for the key chord is only visible
|
||||||
when there's actual text set as the label. See
|
when there's actual text set as the label.
|
||||||
CommandKeyChordVisibilityConverter for details.
|
|
||||||
We're setting the accessibility view on the
|
We're setting the accessibility view on the
|
||||||
border and text block to Raw because otherwise,
|
border and text block to Raw because otherwise,
|
||||||
Narrator will read out the key chord. Problem is,
|
Narrator will read out the key chord. Problem is,
|
||||||
@@ -127,7 +119,7 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Style="{ThemeResource KeyChordBorderStyle}"
|
Style="{ThemeResource KeyChordBorderStyle}"
|
||||||
Visibility="{x:Bind Item.KeyChordText, Mode=OneWay, Converter={StaticResource CommandKeyChordVisibilityConverter}}">
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Item.KeyChordText), Mode=OneWay}">
|
||||||
|
|
||||||
<TextBlock AutomationProperties.AccessibilityView="Raw"
|
<TextBlock AutomationProperties.AccessibilityView="Raw"
|
||||||
FontSize="12"
|
FontSize="12"
|
||||||
@@ -347,12 +339,12 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontSize="14"
|
FontSize="14"
|
||||||
Text="{x:Bind PrefixCharacter, Mode=OneWay}"
|
Text="{x:Bind PrefixCharacter, Mode=OneWay}"
|
||||||
Visibility="{x:Bind PrefixCharacter, Mode=OneWay, Converter={StaticResource ParentCommandVisibilityConverter}}" />
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(PrefixCharacter), Mode=OneWay}" />
|
||||||
|
|
||||||
<StackPanel Grid.Row="1"
|
<StackPanel Grid.Row="1"
|
||||||
Margin="8,0,8,8"
|
Margin="8,0,8,8"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Visibility="{x:Bind ParentCommandName, Mode=OneWay, Converter={StaticResource ParentCommandVisibilityConverter}}">
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(ParentCommandName), Mode=OneWay}">
|
||||||
|
|
||||||
<Button x:Name="_parentCommandBackButton"
|
<Button x:Name="_parentCommandBackButton"
|
||||||
x:Uid="ParentCommandBackButton"
|
x:Uid="ParentCommandBackButton"
|
||||||
@@ -377,7 +369,7 @@
|
|||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Style="{ThemeResource ParsedCommandLineBorderStyle}"
|
Style="{ThemeResource ParsedCommandLineBorderStyle}"
|
||||||
Visibility="{x:Bind ParsedCommandLineText, Mode=OneWay, Converter={StaticResource ParsedCommandLineTextVisibilityConverter}}">
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(ParsedCommandLineText), Mode=OneWay}">
|
||||||
|
|
||||||
<ScrollViewer MaxHeight="200"
|
<ScrollViewer MaxHeight="200"
|
||||||
VerticalScrollBarVisibility="Auto">
|
VerticalScrollBarVisibility="Auto">
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
#include "pch.h"
|
|
||||||
#include "EmptyStringVisibilityConverter.h"
|
|
||||||
#include "EmptyStringVisibilityConverter.g.cpp"
|
|
||||||
|
|
||||||
using namespace winrt::Windows;
|
|
||||||
using namespace winrt::Windows::UI::Xaml;
|
|
||||||
|
|
||||||
namespace winrt::TerminalApp::implementation
|
|
||||||
{
|
|
||||||
// Method Description:
|
|
||||||
// - Attempt to convert something into another type. For the
|
|
||||||
// EmptyStringVisibilityConverter, we're gonna check if `value` is a
|
|
||||||
// string, and try and convert it into a Visibility value. If the input
|
|
||||||
// param wasn't a string, or was the empty string, we'll return
|
|
||||||
// Visibility::Collapsed. Otherwise, we'll return Visible.
|
|
||||||
|
|
||||||
// Arguments:
|
|
||||||
// - value: the input object to attempt to convert into a Visibility.
|
|
||||||
// Return Value:
|
|
||||||
// - Visible if the object was a string and wasn't the empty string.
|
|
||||||
Foundation::IInspectable EmptyStringVisibilityConverter::Convert(const Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& /* targetType */,
|
|
||||||
const Foundation::IInspectable& /* parameter */,
|
|
||||||
const hstring& /* language */)
|
|
||||||
{
|
|
||||||
const auto& name = winrt::unbox_value_or<hstring>(value, L"");
|
|
||||||
return winrt::box_value(name.empty() ? Visibility::Collapsed : Visibility::Visible);
|
|
||||||
}
|
|
||||||
|
|
||||||
// unused for one-way bindings
|
|
||||||
Foundation::IInspectable EmptyStringVisibilityConverter::ConvertBack(const Foundation::IInspectable& /* value */,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& /* targetType */,
|
|
||||||
const Foundation::IInspectable& /* parameter */,
|
|
||||||
const hstring& /* language */)
|
|
||||||
{
|
|
||||||
throw hresult_not_implemented();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "EmptyStringVisibilityConverter.g.h"
|
|
||||||
|
|
||||||
namespace winrt::TerminalApp::implementation
|
|
||||||
{
|
|
||||||
struct EmptyStringVisibilityConverter : EmptyStringVisibilityConverterT<EmptyStringVisibilityConverter>
|
|
||||||
{
|
|
||||||
EmptyStringVisibilityConverter() = default;
|
|
||||||
|
|
||||||
Windows::Foundation::IInspectable Convert(const Windows::Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& targetType,
|
|
||||||
const Windows::Foundation::IInspectable& parameter,
|
|
||||||
const hstring& language);
|
|
||||||
|
|
||||||
Windows::Foundation::IInspectable ConvertBack(const Windows::Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& targetType,
|
|
||||||
const Windows::Foundation::IInspectable& parameter,
|
|
||||||
const hstring& language);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace winrt::TerminalApp::factory_implementation
|
|
||||||
{
|
|
||||||
BASIC_FACTORY(EmptyStringVisibilityConverter);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
namespace TerminalApp
|
|
||||||
{
|
|
||||||
// See https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-quickstart
|
|
||||||
|
|
||||||
// We use the default attribute to declare IValueConverter as the default
|
|
||||||
// interface. In the listing, EmptyStringVisibilityConverter has only a
|
|
||||||
// constructor, and no methods, so no default interface is generated for it.
|
|
||||||
// The default attribute is optimal if you won't be adding instance members
|
|
||||||
// to EmptyStringVisibilityConverter, because no QueryInterface will be
|
|
||||||
// required to call the IValueConverter methods
|
|
||||||
runtimeclass EmptyStringVisibilityConverter : [default] Windows.UI.Xaml.Data.IValueConverter
|
|
||||||
{
|
|
||||||
EmptyStringVisibilityConverter();
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
namespace TerminalApp
|
|
||||||
{
|
|
||||||
// C++/winrt makes it difficult to share this idl between two projects,
|
|
||||||
// Instead, we just pin the uuid and include it in both TermControl and App
|
|
||||||
// If you update this one, please update the one in TerminalControl\TermControl.idl
|
|
||||||
// If you change this interface, please update the guid.
|
|
||||||
// If you press F7 or Alt and get a runtime error, go make sure both copies are the same.
|
|
||||||
[uuid("0ddf4edc-3fda-4dee-97ca-a417ee3dd510")] interface IDirectKeyListener {
|
|
||||||
Boolean OnDirectKeyEvent(UInt32 vkey, UInt8 scanCode, Boolean down);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,7 +17,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
{
|
{
|
||||||
Controls::IconElement PaletteItem::ResolvedIcon()
|
Controls::IconElement PaletteItem::ResolvedIcon()
|
||||||
{
|
{
|
||||||
const auto icon = IconPathConverter::IconWUX(Icon());
|
const auto icon = Microsoft::Terminal::UI::IconPathConverter::IconWUX(Icon());
|
||||||
icon.Width(16);
|
icon.Width(16);
|
||||||
icon.Height(16);
|
icon.Height(16);
|
||||||
return icon;
|
return icon;
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
|
|
||||||
// The TabViewItem Icon needs MUX while the IconSourceElement in the CommandPalette needs WUX...
|
// The TabViewItem Icon needs MUX while the IconSourceElement in the CommandPalette needs WUX...
|
||||||
Icon(winrt::hstring{ glyph });
|
Icon(winrt::hstring{ glyph });
|
||||||
TabViewItem().IconSource(IconPathConverter::IconSourceMUX(glyph, false));
|
TabViewItem().IconSource(Microsoft::Terminal::UI::IconPathConverter::IconSourceMUX(glyph, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
winrt::Windows::UI::Xaml::Media::Brush SettingsTab::_BackgroundBrush()
|
winrt::Windows::UI::Xaml::Media::Brush SettingsTab::_BackgroundBrush()
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
import "TabBase.idl";
|
import "TabBase.idl";
|
||||||
import "IDirectKeyListener.idl";
|
|
||||||
import "HighlightedTextControl.idl";
|
import "HighlightedTextControl.idl";
|
||||||
import "FilteredCommand.idl";
|
import "FilteredCommand.idl";
|
||||||
|
|
||||||
@@ -21,7 +20,7 @@ namespace TerminalApp
|
|||||||
BottomUp
|
BottomUp
|
||||||
};
|
};
|
||||||
|
|
||||||
[default_interface] runtimeclass SuggestionsControl : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged, IDirectKeyListener
|
[default_interface] runtimeclass SuggestionsControl : Windows.UI.Xaml.Controls.UserControl, Windows.UI.Xaml.Data.INotifyPropertyChanged, Microsoft.Terminal.UI.IDirectKeyListener
|
||||||
{
|
{
|
||||||
SuggestionsControl();
|
SuggestionsControl();
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
xmlns:local="using:TerminalApp"
|
xmlns:local="using:TerminalApp"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
|
xmlns:mux="using:Microsoft.UI.Xaml.Controls"
|
||||||
AllowFocusOnInteraction="True"
|
AllowFocusOnInteraction="True"
|
||||||
AutomationProperties.Name="{x:Bind ControlName, Mode=OneWay}"
|
AutomationProperties.Name="{x:Bind ControlName, Mode=OneWay}"
|
||||||
@@ -23,9 +24,6 @@
|
|||||||
|
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<local:EmptyStringVisibilityConverter x:Key="ParentCommandVisibilityConverter" />
|
|
||||||
<model:IconPathConverter x:Key="IconSourceConverter" />
|
|
||||||
|
|
||||||
<DataTemplate x:Key="ListItemTemplate"
|
<DataTemplate x:Key="ListItemTemplate"
|
||||||
x:DataType="local:FilteredCommand">
|
x:DataType="local:FilteredCommand">
|
||||||
<ListViewItem Height="32"
|
<ListViewItem Height="32"
|
||||||
@@ -161,7 +159,7 @@
|
|||||||
<StackPanel Grid.Row="1"
|
<StackPanel Grid.Row="1"
|
||||||
Margin="8,0,8,8"
|
Margin="8,0,8,8"
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Visibility="{x:Bind ParentCommandName, Mode=OneWay, Converter={StaticResource ParentCommandVisibilityConverter}}">
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(ParentCommandName), Mode=OneWay}">
|
||||||
|
|
||||||
<Button x:Name="_parentCommandBackButton"
|
<Button x:Name="_parentCommandBackButton"
|
||||||
x:Uid="ParentCommandBackButton"
|
x:Uid="ParentCommandBackButton"
|
||||||
|
|||||||
@@ -130,9 +130,6 @@
|
|||||||
<DependentUpon>CommandPalette.xaml</DependentUpon>
|
<DependentUpon>CommandPalette.xaml</DependentUpon>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="FilteredCommand.h" />
|
<ClInclude Include="FilteredCommand.h" />
|
||||||
<ClInclude Include="EmptyStringVisibilityConverter.h">
|
|
||||||
<DependentUpon>EmptyStringVisibilityConverter.idl</DependentUpon>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="Pane.h" />
|
<ClInclude Include="Pane.h" />
|
||||||
<ClInclude Include="ColorHelper.h" />
|
<ClInclude Include="ColorHelper.h" />
|
||||||
<ClInclude Include="pch.h" />
|
<ClInclude Include="pch.h" />
|
||||||
@@ -232,9 +229,6 @@
|
|||||||
<DependentUpon>CommandPalette.xaml</DependentUpon>
|
<DependentUpon>CommandPalette.xaml</DependentUpon>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="FilteredCommand.cpp" />
|
<ClCompile Include="FilteredCommand.cpp" />
|
||||||
<ClCompile Include="EmptyStringVisibilityConverter.cpp">
|
|
||||||
<DependentUpon>EmptyStringVisibilityConverter.idl</DependentUpon>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="Pane.cpp" />
|
<ClCompile Include="Pane.cpp" />
|
||||||
<ClCompile Include="Pane.LayoutSizeNode.cpp" />
|
<ClCompile Include="Pane.LayoutSizeNode.cpp" />
|
||||||
<ClCompile Include="ColorHelper.cpp">
|
<ClCompile Include="ColorHelper.cpp">
|
||||||
@@ -280,7 +274,6 @@
|
|||||||
header in TerminalApp.vcxproj (as well as in this file) -->
|
header in TerminalApp.vcxproj (as well as in this file) -->
|
||||||
<Midl Include="ActionPaletteItem.idl" />
|
<Midl Include="ActionPaletteItem.idl" />
|
||||||
<Midl Include="CommandLinePaletteItem.idl" />
|
<Midl Include="CommandLinePaletteItem.idl" />
|
||||||
<Midl Include="IDirectKeyListener.idl" />
|
|
||||||
<Midl Include="AboutDialog.idl">
|
<Midl Include="AboutDialog.idl">
|
||||||
<DependentUpon>AboutDialog.xaml</DependentUpon>
|
<DependentUpon>AboutDialog.xaml</DependentUpon>
|
||||||
</Midl>
|
</Midl>
|
||||||
@@ -341,7 +334,6 @@
|
|||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Midl>
|
</Midl>
|
||||||
<Midl Include="FilteredCommand.idl" />
|
<Midl Include="FilteredCommand.idl" />
|
||||||
<Midl Include="EmptyStringVisibilityConverter.idl" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- ========================= Misc Files ======================== -->
|
<!-- ========================= Misc Files ======================== -->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -385,6 +377,9 @@
|
|||||||
<Private>true</Private>
|
<Private>true</Private>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj">
|
||||||
|
<Project>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|||||||
@@ -98,7 +98,6 @@
|
|||||||
<Midl Include="ShortcutActionDispatch.idl">
|
<Midl Include="ShortcutActionDispatch.idl">
|
||||||
<Filter>settings</Filter>
|
<Filter>settings</Filter>
|
||||||
</Midl>
|
</Midl>
|
||||||
<Midl Include="IDirectKeyListener.idl" />
|
|
||||||
<Midl Include="SettingsTab.idl">
|
<Midl Include="SettingsTab.idl">
|
||||||
<Filter>tab</Filter>
|
<Filter>tab</Filter>
|
||||||
</Midl>
|
</Midl>
|
||||||
@@ -116,7 +115,6 @@
|
|||||||
</Midl>
|
</Midl>
|
||||||
<Midl Include="PaletteItemTemplateSelector.idl" />
|
<Midl Include="PaletteItemTemplateSelector.idl" />
|
||||||
<Midl Include="TabBase.idl" />
|
<Midl Include="TabBase.idl" />
|
||||||
<Midl Include="EmptyStringVisibilityConverter.idl" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
@@ -187,4 +185,4 @@
|
|||||||
<Filter>app</Filter>
|
<Filter>app</Filter>
|
||||||
</ApplicationDefinition>
|
</ApplicationDefinition>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1101,7 +1101,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto icon = IconPathConverter::IconWUX(iconSource);
|
auto icon = UI::IconPathConverter::IconWUX(iconSource);
|
||||||
Automation::AutomationProperties::SetAccessibilityView(icon, Automation::Peers::AccessibilityView::Raw);
|
Automation::AutomationProperties::SetAccessibilityView(icon, Automation::Peers::AccessibilityView::Raw);
|
||||||
|
|
||||||
return icon;
|
return icon;
|
||||||
@@ -4925,7 +4925,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
|
|
||||||
if (!icon.empty())
|
if (!icon.empty())
|
||||||
{
|
{
|
||||||
auto iconElement = IconPathConverter::IconWUX(icon);
|
auto iconElement = UI::IconPathConverter::IconWUX(icon);
|
||||||
Automation::AutomationProperties::SetAccessibilityView(iconElement, Automation::Peers::AccessibilityView::Raw);
|
Automation::AutomationProperties::SetAccessibilityView(iconElement, Automation::Peers::AccessibilityView::Raw);
|
||||||
button.Icon(iconElement);
|
button.Icon(iconElement);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
// Copyright (c) Microsoft Corporation.
|
||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
import "TaskbarState.idl";
|
import "TaskbarState.idl";
|
||||||
import "IDirectKeyListener.idl";
|
|
||||||
|
|
||||||
namespace TerminalApp
|
namespace TerminalApp
|
||||||
{
|
{
|
||||||
@@ -57,7 +56,7 @@ namespace TerminalApp
|
|||||||
Boolean IsQuakeWindow();
|
Boolean IsQuakeWindow();
|
||||||
};
|
};
|
||||||
|
|
||||||
[default_interface] runtimeclass TerminalPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged, IDirectKeyListener
|
[default_interface] runtimeclass TerminalPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged, Microsoft.Terminal.UI.IDirectKeyListener
|
||||||
{
|
{
|
||||||
TerminalPage(WindowProperties properties, ContentManager manager);
|
TerminalPage(WindowProperties properties, ContentManager manager);
|
||||||
|
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
{
|
{
|
||||||
Icon(_lastIconPath);
|
Icon(_lastIconPath);
|
||||||
bool isMonochrome = iconStyle == IconStyle::Monochrome;
|
bool isMonochrome = iconStyle == IconStyle::Monochrome;
|
||||||
TabViewItem().IconSource(IconPathConverter::IconSourceMUX(_lastIconPath, isMonochrome));
|
TabViewItem().IconSource(Microsoft::Terminal::UI::IconPathConverter::IconSourceMUX(_lastIconPath, isMonochrome));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,7 +327,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
Icon(_lastIconPath);
|
Icon(_lastIconPath);
|
||||||
TabViewItem().IconSource(IconPathConverter::IconSourceMUX(_lastIconPath, _lastIconStyle == IconStyle::Monochrome));
|
TabViewItem().IconSource(Microsoft::Terminal::UI::IconPathConverter::IconSourceMUX(_lastIconPath, _lastIconStyle == IconStyle::Monochrome));
|
||||||
}
|
}
|
||||||
_iconHidden = hide;
|
_iconHidden = hide;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -863,7 +863,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
auto focusedObject{ Windows::UI::Xaml::Input::FocusManager::GetFocusedElement(xamlRoot) };
|
auto focusedObject{ Windows::UI::Xaml::Input::FocusManager::GetFocusedElement(xamlRoot) };
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
if (auto keyListener{ focusedObject.try_as<IDirectKeyListener>() })
|
if (auto keyListener{ focusedObject.try_as<UI::IDirectKeyListener>() })
|
||||||
{
|
{
|
||||||
if (keyListener.OnDirectKeyEvent(vkey, scanCode, down))
|
if (keyListener.OnDirectKeyEvent(vkey, scanCode, down))
|
||||||
{
|
{
|
||||||
@@ -891,7 +891,7 @@ namespace winrt::TerminalApp::implementation
|
|||||||
// don't want to go around the loop again.
|
// don't want to go around the loop again.
|
||||||
if (!focusedObject)
|
if (!focusedObject)
|
||||||
{
|
{
|
||||||
if (auto keyListener{ _root.try_as<IDirectKeyListener>() })
|
if (auto keyListener{ _root.try_as<UI::IDirectKeyListener>() })
|
||||||
{
|
{
|
||||||
return keyListener.OnDirectKeyEvent(vkey, scanCode, down);
|
return keyListener.OnDirectKeyEvent(vkey, scanCode, down);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
import "TerminalPage.idl";
|
import "TerminalPage.idl";
|
||||||
import "ShortcutActionDispatch.idl";
|
import "ShortcutActionDispatch.idl";
|
||||||
import "IDirectKeyListener.idl";
|
|
||||||
|
|
||||||
namespace TerminalApp
|
namespace TerminalApp
|
||||||
{
|
{
|
||||||
@@ -40,7 +39,7 @@ namespace TerminalApp
|
|||||||
|
|
||||||
// See IDialogPresenter and TerminalPage's DialogPresenter for more
|
// See IDialogPresenter and TerminalPage's DialogPresenter for more
|
||||||
// information.
|
// information.
|
||||||
[default_interface] runtimeclass TerminalWindow : IDirectKeyListener, IDialogPresenter, Windows.UI.Xaml.Data.INotifyPropertyChanged
|
[default_interface] runtimeclass TerminalWindow : Microsoft.Terminal.UI.IDirectKeyListener, IDialogPresenter, Windows.UI.Xaml.Data.INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
TerminalWindow(SettingsLoadEventArgs result, ContentManager manager);
|
TerminalWindow(SettingsLoadEventArgs result, ContentManager manager);
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,9 @@
|
|||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsEditor\Microsoft.Terminal.Settings.Editor.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsEditor\Microsoft.Terminal.Settings.Editor.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj">
|
||||||
|
<Project>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</Project>
|
||||||
|
</ProjectReference>
|
||||||
<!-- Reference TerminalAppLib here, so we can use its TerminalApp.winmd as
|
<!-- Reference TerminalAppLib here, so we can use its TerminalApp.winmd as
|
||||||
our TerminalApp.winmd. This didn't work correctly in VS2017, you'd need to
|
our TerminalApp.winmd. This didn't work correctly in VS2017, you'd need to
|
||||||
manually reference the lib -->
|
manually reference the lib -->
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
#include <winrt/Microsoft.Terminal.TerminalConnection.h>
|
#include <winrt/Microsoft.Terminal.TerminalConnection.h>
|
||||||
#include <winrt/Microsoft.Terminal.Settings.Editor.h>
|
#include <winrt/Microsoft.Terminal.Settings.Editor.h>
|
||||||
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.UI.h>
|
||||||
#include <winrt/Windows.Services.Store.h>
|
#include <winrt/Windows.Services.Store.h>
|
||||||
#include <winrt/Windows.Storage.h>
|
#include <winrt/Windows.Storage.h>
|
||||||
#include <winrt/Windows.Storage.Provider.h>
|
#include <winrt/Windows.Storage.Provider.h>
|
||||||
|
|||||||
@@ -14,7 +14,6 @@
|
|||||||
#include "InteractivityAutomationPeer.h"
|
#include "InteractivityAutomationPeer.h"
|
||||||
|
|
||||||
#include "ControlInteractivity.g.cpp"
|
#include "ControlInteractivity.g.cpp"
|
||||||
#include "TermControl.h"
|
|
||||||
|
|
||||||
using namespace ::Microsoft::Console::Types;
|
using namespace ::Microsoft::Console::Types;
|
||||||
using namespace ::Microsoft::Console::VirtualTerminal;
|
using namespace ::Microsoft::Console::VirtualTerminal;
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
namespace Microsoft.Terminal.Control
|
|
||||||
{
|
|
||||||
// C++/winrt makes it difficult to share this idl between two projects,
|
|
||||||
// Instead, we just pin the uuid and include it in both TermControl and App
|
|
||||||
// If you update this one, please update TerminalApp\IDirectKeyListener.idl.
|
|
||||||
// If you change this interface, please update the guid.
|
|
||||||
// If you press F7 or Alt and get a runtime error, go make sure both copies are the same.
|
|
||||||
[uuid("0ddf4edc-3fda-4dee-97ca-a417ee3dd510")] interface IDirectKeyListener {
|
|
||||||
Boolean OnDirectKeyEvent(UInt32 vkey, UInt8 scanCode, Boolean down);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -5,6 +5,8 @@
|
|||||||
#include "ScrollBarVisualStateManager.h"
|
#include "ScrollBarVisualStateManager.h"
|
||||||
#include "ScrollBarVisualStateManager.g.cpp"
|
#include "ScrollBarVisualStateManager.g.cpp"
|
||||||
|
|
||||||
|
#include "TermControl.h"
|
||||||
|
|
||||||
using namespace winrt::Windows::UI::Xaml::Media;
|
using namespace winrt::Windows::UI::Xaml::Media;
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Control::implementation
|
namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
|
|||||||
@@ -14,12 +14,12 @@
|
|||||||
#include <winrt/Windows.UI.Xaml.h>
|
#include <winrt/Windows.UI.Xaml.h>
|
||||||
#include <winrt/Windows.UI.Xaml.Controls.h>
|
#include <winrt/Windows.UI.Xaml.Controls.h>
|
||||||
|
|
||||||
#include "TermControl.h"
|
|
||||||
|
|
||||||
#include "ScrollBarVisualStateManager.g.h"
|
#include "ScrollBarVisualStateManager.g.h"
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Control::implementation
|
namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
{
|
{
|
||||||
|
struct TermControl;
|
||||||
|
|
||||||
struct ScrollBarVisualStateManager : ScrollBarVisualStateManagerT<ScrollBarVisualStateManager>
|
struct ScrollBarVisualStateManager : ScrollBarVisualStateManagerT<ScrollBarVisualStateManager>
|
||||||
{
|
{
|
||||||
bool GoToStateCore(winrt::Windows::UI::Xaml::Controls::Control const& control, winrt::Windows::UI::Xaml::FrameworkElement const& templateRoot, hstring const& stateName, winrt::Windows::UI::Xaml::VisualStateGroup const& group, winrt::Windows::UI::Xaml::VisualState const& state, bool useTransitions);
|
bool GoToStateCore(winrt::Windows::UI::Xaml::Controls::Control const& control, winrt::Windows::UI::Xaml::FrameworkElement const& templateRoot, hstring const& stateName, winrt::Windows::UI::Xaml::VisualStateGroup const& group, winrt::Windows::UI::Xaml::VisualState const& state, bool useTransitions);
|
||||||
|
|||||||
@@ -4,13 +4,19 @@
|
|||||||
import "IMouseWheelListener.idl";
|
import "IMouseWheelListener.idl";
|
||||||
import "IControlSettings.idl";
|
import "IControlSettings.idl";
|
||||||
import "ControlInteractivity.idl";
|
import "ControlInteractivity.idl";
|
||||||
import "IDirectKeyListener.idl";
|
|
||||||
import "EventArgs.idl";
|
import "EventArgs.idl";
|
||||||
import "ICoreState.idl";
|
import "ICoreState.idl";
|
||||||
import "ControlCore.idl";
|
import "ControlCore.idl";
|
||||||
|
|
||||||
namespace Microsoft.Terminal.Control
|
namespace Microsoft.Terminal.Control
|
||||||
{
|
{
|
||||||
|
// This matches the definition in M.T.UI.
|
||||||
|
// Having it here prevents us from having to refer to M.T.UI in **all consuming projects**.
|
||||||
|
// WinRT is a trip.
|
||||||
|
[uuid("0ddf4edc-3fda-4dee-97ca-a417ee3dd510")]
|
||||||
|
interface IDirectKeyListener {
|
||||||
|
Boolean OnDirectKeyEvent(UInt32 vkey, UInt8 scanCode, Boolean down);
|
||||||
|
}
|
||||||
|
|
||||||
enum CursorDisplayState
|
enum CursorDisplayState
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ Modifications:
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "TermControl.h"
|
|
||||||
#include "ControlInteractivity.h"
|
#include "ControlInteractivity.h"
|
||||||
#include "TermControlAutomationPeer.g.h"
|
#include "TermControlAutomationPeer.g.h"
|
||||||
#include "../types/TermControlUiaProvider.hpp"
|
#include "../types/TermControlUiaProvider.hpp"
|
||||||
@@ -37,6 +36,8 @@ Modifications:
|
|||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Control::implementation
|
namespace winrt::Microsoft::Terminal::Control::implementation
|
||||||
{
|
{
|
||||||
|
struct TermControl;
|
||||||
|
|
||||||
struct TermControlAutomationPeer :
|
struct TermControlAutomationPeer :
|
||||||
public TermControlAutomationPeerT<TermControlAutomationPeer>,
|
public TermControlAutomationPeerT<TermControlAutomationPeer>,
|
||||||
::Microsoft::Console::Types::IUiaEventDispatcher
|
::Microsoft::Console::Types::IUiaEventDispatcher
|
||||||
|
|||||||
@@ -122,7 +122,6 @@
|
|||||||
<Midl Include="ControlInteractivity.idl" />
|
<Midl Include="ControlInteractivity.idl" />
|
||||||
<Midl Include="ScrollBarVisualStateManager.idl" />
|
<Midl Include="ScrollBarVisualStateManager.idl" />
|
||||||
<Midl Include="ICoreState.idl" />
|
<Midl Include="ICoreState.idl" />
|
||||||
<Midl Include="IDirectKeyListener.idl" />
|
|
||||||
<Midl Include="KeyChord.idl" />
|
<Midl Include="KeyChord.idl" />
|
||||||
<Midl Include="EventArgs.idl" />
|
<Midl Include="EventArgs.idl" />
|
||||||
<Midl Include="IKeyBindings.idl" />
|
<Midl Include="IKeyBindings.idl" />
|
||||||
@@ -178,6 +177,10 @@
|
|||||||
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj">
|
||||||
|
<Project>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</Project>
|
||||||
|
<Private>false</Private>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- ====================== Compiler & Linker Flags ===================== -->
|
<!-- ====================== Compiler & Linker Flags ===================== -->
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
|
|||||||
@@ -65,6 +65,11 @@
|
|||||||
<Private>true</Private>
|
<Private>true</Private>
|
||||||
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
<CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj">
|
||||||
|
<Project>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</Project>
|
||||||
|
<Private>false</Private>
|
||||||
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -58,6 +58,8 @@
|
|||||||
#include <winrt/Microsoft.Terminal.TerminalConnection.h>
|
#include <winrt/Microsoft.Terminal.TerminalConnection.h>
|
||||||
#include <winrt/Microsoft.Terminal.Core.h>
|
#include <winrt/Microsoft.Terminal.Core.h>
|
||||||
|
|
||||||
|
#include <winrt/Microsoft.Terminal.UI.h>
|
||||||
|
|
||||||
#include <windows.ui.xaml.media.dxinterop.h>
|
#include <windows.ui.xaml.media.dxinterop.h>
|
||||||
|
|
||||||
#include <TraceLoggingProvider.h>
|
#include <TraceLoggingProvider.h>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<Page.Resources>
|
<Page.Resources>
|
||||||
@@ -157,7 +157,6 @@
|
|||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
<!-- Converters & Misc. -->
|
<!-- Converters & Misc. -->
|
||||||
<model:IconPathConverter x:Key="IconSourceConverter" />
|
|
||||||
<SolidColorBrush x:Key="ActionContainerBackgroundEditing"
|
<SolidColorBrush x:Key="ActionContainerBackgroundEditing"
|
||||||
Color="{ThemeResource SystemListMediumColor}" />
|
Color="{ThemeResource SystemListMediumColor}" />
|
||||||
<SolidColorBrush x:Key="ActionContainerBackground"
|
<SolidColorBrush x:Key="ActionContainerBackground"
|
||||||
@@ -194,7 +193,7 @@
|
|||||||
<TextBlock Grid.Column="0"
|
<TextBlock Grid.Column="0"
|
||||||
Style="{StaticResource KeyBindingNameTextBlockStyle}"
|
Style="{StaticResource KeyBindingNameTextBlockStyle}"
|
||||||
Text="{x:Bind Name, Mode=OneWay}"
|
Text="{x:Bind Name, Mode=OneWay}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(IsInEditMode), Mode=OneWay}" />
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(IsInEditMode), Mode=OneWay}" />
|
||||||
|
|
||||||
<!-- Edit Mode: Action Combo-box -->
|
<!-- Edit Mode: Action Combo-box -->
|
||||||
<ComboBox x:Uid="Actions_ActionComboBox"
|
<ComboBox x:Uid="Actions_ActionComboBox"
|
||||||
@@ -210,7 +209,7 @@
|
|||||||
HorizontalAlignment="Right"
|
HorizontalAlignment="Right"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Style="{ThemeResource KeyChordBorderStyle}"
|
Style="{ThemeResource KeyChordBorderStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(IsInEditMode), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(IsInEditMode), Mode=OneWay}">
|
||||||
|
|
||||||
<TextBlock FontSize="14"
|
<TextBlock FontSize="14"
|
||||||
Style="{ThemeResource KeyChordTextBlockStyle}"
|
Style="{ThemeResource KeyChordTextBlockStyle}"
|
||||||
@@ -302,7 +301,7 @@
|
|||||||
Margin="8,0,0,0"
|
Margin="8,0,0,0"
|
||||||
AutomationProperties.Name="{x:Bind DeleteButtonName}"
|
AutomationProperties.Name="{x:Bind DeleteButtonName}"
|
||||||
Style="{StaticResource DeleteSmallButtonStyle}"
|
Style="{StaticResource DeleteSmallButtonStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(IsNewlyAdded), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(IsNewlyAdded), Mode=OneWay}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<FontIcon FontSize="{StaticResource EditButtonIconSize}"
|
<FontIcon FontSize="{StaticResource EditButtonIconSize}"
|
||||||
Glyph="" />
|
Glyph="" />
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -17,7 +18,6 @@
|
|||||||
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary.MergedDictionaries>
|
||||||
<ResourceDictionary Source="CommonResources.xaml" />
|
<ResourceDictionary Source="CommonResources.xaml" />
|
||||||
</ResourceDictionary.MergedDictionaries>
|
</ResourceDictionary.MergedDictionaries>
|
||||||
<model:IconPathConverter x:Key="IconSourceConverter" />
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</Page.Resources>
|
</Page.Resources>
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<IconSourceElement Grid.Column="0"
|
<IconSourceElement Grid.Column="0"
|
||||||
Width="16"
|
Width="16"
|
||||||
Height="16"
|
Height="16"
|
||||||
IconSource="{x:Bind Icon, Converter={StaticResource IconSourceConverter}}" />
|
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Icon), Mode=OneTime}" />
|
||||||
|
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Text="{x:Bind Name}" />
|
Text="{x:Bind Name}" />
|
||||||
|
|||||||
@@ -441,12 +441,12 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
|
|
||||||
void AppearanceViewModel::SetFontWeightFromDouble(double fontWeight)
|
void AppearanceViewModel::SetFontWeightFromDouble(double fontWeight)
|
||||||
{
|
{
|
||||||
FontWeight(Converters::DoubleToFontWeight(fontWeight));
|
FontWeight(winrt::Microsoft::Terminal::UI::Converters::DoubleToFontWeight(fontWeight));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppearanceViewModel::SetBackgroundImageOpacityFromPercentageValue(double percentageValue)
|
void AppearanceViewModel::SetBackgroundImageOpacityFromPercentageValue(double percentageValue)
|
||||||
{
|
{
|
||||||
BackgroundImageOpacity(Converters::PercentageValueToPercentage(percentageValue));
|
BackgroundImageOpacity(winrt::Microsoft::Terminal::UI::Converters::PercentageValueToPercentage(percentageValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppearanceViewModel::SetBackgroundImagePath(winrt::hstring path)
|
void AppearanceViewModel::SetBackgroundImagePath(winrt::hstring path)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
IsTabStop="False"
|
IsTabStop="False"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
x:DataType="local:ColorTableEntry">
|
x:DataType="local:ColorTableEntry">
|
||||||
<Border Width="8"
|
<Border Width="8"
|
||||||
Height="8"
|
Height="8"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(Color)}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(Color)}"
|
||||||
CornerRadius="1" />
|
CornerRadius="1" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<CollectionViewSource x:Key="FontAxesCVS"
|
<CollectionViewSource x:Key="FontAxesCVS"
|
||||||
@@ -65,7 +66,7 @@
|
|||||||
<Grid Grid.Column="0"
|
<Grid Grid.Column="0"
|
||||||
Padding="8"
|
Padding="8"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
|
||||||
ColumnSpacing="1"
|
ColumnSpacing="1"
|
||||||
CornerRadius="2"
|
CornerRadius="2"
|
||||||
RowSpacing="1">
|
RowSpacing="1">
|
||||||
@@ -172,7 +173,7 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
FontFamily="Cascadia Code"
|
FontFamily="Cascadia Code"
|
||||||
Foreground="{x:Bind local:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
|
Foreground="{x:Bind mtu:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
|
||||||
Text="{x:Bind Name, Mode=OneWay}"
|
Text="{x:Bind Name, Mode=OneWay}"
|
||||||
TextTrimming="WordEllipsis" />
|
TextTrimming="WordEllipsis" />
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -201,7 +202,7 @@
|
|||||||
SelectedItem="{x:Bind CurrentFontFace, Mode=OneWay}"
|
SelectedItem="{x:Bind CurrentFontFace, Mode=OneWay}"
|
||||||
SelectionChanged="FontFace_SelectionChanged"
|
SelectionChanged="FontFace_SelectionChanged"
|
||||||
Style="{StaticResource ComboBoxSettingStyle}"
|
Style="{StaticResource ComboBoxSettingStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(ShowAllFonts), Mode=OneWay}" />
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ShowAllFonts), Mode=OneWay}" />
|
||||||
<ComboBox x:Uid="Profile_FontFaceBox"
|
<ComboBox x:Uid="Profile_FontFaceBox"
|
||||||
ItemTemplate="{StaticResource FontFaceComboBoxItemTemplate}"
|
ItemTemplate="{StaticResource FontFaceComboBoxItemTemplate}"
|
||||||
ItemsSource="{x:Bind SourceProfile.CompleteFontList, Mode=OneWay}"
|
ItemsSource="{x:Bind SourceProfile.CompleteFontList, Mode=OneWay}"
|
||||||
@@ -282,7 +283,7 @@
|
|||||||
Minimum="0"
|
Minimum="0"
|
||||||
TickFrequency="50"
|
TickFrequency="50"
|
||||||
TickPlacement="Outside"
|
TickPlacement="Outside"
|
||||||
Value="{x:Bind local:Converters.FontWeightToDouble(Appearance.FontWeight), BindBack=Appearance.SetFontWeightFromDouble, Mode=TwoWay}" />
|
Value="{x:Bind mtu:Converters.FontWeightToDouble(Appearance.FontWeight), BindBack=Appearance.SetFontWeightFromDouble, Mode=TwoWay}" />
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
Style="{StaticResource SliderValueLabelStyle}"
|
Style="{StaticResource SliderValueLabelStyle}"
|
||||||
@@ -499,15 +500,15 @@
|
|||||||
Style="{StaticResource ExpanderSettingContainerStyle}">
|
Style="{StaticResource ExpanderSettingContainerStyle}">
|
||||||
<StackPanel Orientation="Vertical">
|
<StackPanel Orientation="Vertical">
|
||||||
<TextBox x:Uid="Profile_BackgroundImageBox"
|
<TextBox x:Uid="Profile_BackgroundImageBox"
|
||||||
IsEnabled="{x:Bind local:Converters.StringsAreNotEqual('desktopWallpaper', Appearance.BackgroundImagePath), Mode=OneWay}"
|
IsEnabled="{x:Bind mtu:Converters.StringsAreNotEqual('desktopWallpaper', Appearance.BackgroundImagePath), Mode=OneWay}"
|
||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
Style="{StaticResource TextBoxSettingStyle}"
|
Style="{StaticResource TextBoxSettingStyle}"
|
||||||
Text="{x:Bind local:Converters.StringOrEmptyIfPlaceholder('desktopWallpaper', Appearance.BackgroundImagePath), Mode=TwoWay, BindBack=Appearance.SetBackgroundImagePath}" />
|
Text="{x:Bind mtu:Converters.StringOrEmptyIfPlaceholder('desktopWallpaper', Appearance.BackgroundImagePath), Mode=TwoWay, BindBack=Appearance.SetBackgroundImagePath}" />
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<Button x:Uid="Profile_BackgroundImageBrowse"
|
<Button x:Uid="Profile_BackgroundImageBrowse"
|
||||||
Margin="0,10,10,0"
|
Margin="0,10,10,0"
|
||||||
Click="BackgroundImage_Click"
|
Click="BackgroundImage_Click"
|
||||||
IsEnabled="{x:Bind local:Converters.StringsAreNotEqual('desktopWallpaper', Appearance.BackgroundImagePath), Mode=OneWay}"
|
IsEnabled="{x:Bind mtu:Converters.StringsAreNotEqual('desktopWallpaper', Appearance.BackgroundImagePath), Mode=OneWay}"
|
||||||
Style="{StaticResource BrowseButtonStyle}" />
|
Style="{StaticResource BrowseButtonStyle}" />
|
||||||
<CheckBox x:Name="UseDesktopImageCheckBox"
|
<CheckBox x:Name="UseDesktopImageCheckBox"
|
||||||
x:Uid="Profile_UseDesktopImage"
|
x:Uid="Profile_UseDesktopImage"
|
||||||
@@ -732,10 +733,10 @@
|
|||||||
<Slider x:Name="BIOpacitySlider"
|
<Slider x:Name="BIOpacitySlider"
|
||||||
x:Uid="Profile_BackgroundImageOpacitySlider"
|
x:Uid="Profile_BackgroundImageOpacitySlider"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Value="{x:Bind local:Converters.PercentageToPercentageValue(Appearance.BackgroundImageOpacity), BindBack=Appearance.SetBackgroundImageOpacityFromPercentageValue, Mode=TwoWay}" />
|
Value="{x:Bind mtu:Converters.PercentageToPercentageValue(Appearance.BackgroundImageOpacity), BindBack=Appearance.SetBackgroundImageOpacityFromPercentageValue, Mode=TwoWay}" />
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Style="{StaticResource SliderValueLabelStyle}"
|
Style="{StaticResource SliderValueLabelStyle}"
|
||||||
Text="{x:Bind local:Converters.AppendPercentageSign(BIOpacitySlider.Value), Mode=OneWay}" />
|
Text="{x:Bind mtu:Converters.AppendPercentageSign(BIOpacitySlider.Value), Mode=OneWay}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</local:SettingContainer>
|
</local:SettingContainer>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -22,7 +23,7 @@
|
|||||||
x:DataType="local:ColorTableEntry">
|
x:DataType="local:ColorTableEntry">
|
||||||
<Border Width="12"
|
<Border Width="12"
|
||||||
Height="12"
|
Height="12"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(Color)}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(Color)}"
|
||||||
CornerRadius="2" />
|
CornerRadius="2" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
|
|
||||||
@@ -89,7 +90,7 @@
|
|||||||
Height="48"
|
Height="48"
|
||||||
Padding="12,11,8,8"
|
Padding="12,11,8,8"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(BackgroundColor.Color), Mode=OneWay}"
|
||||||
ColumnSpacing="2"
|
ColumnSpacing="2"
|
||||||
CornerRadius="4"
|
CornerRadius="4"
|
||||||
RowSpacing="2">
|
RowSpacing="2">
|
||||||
@@ -195,7 +196,7 @@
|
|||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
FontFamily="Cascadia Code"
|
FontFamily="Cascadia Code"
|
||||||
Foreground="{x:Bind local:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
|
Foreground="{x:Bind mtu:Converters.ColorToBrush(ForegroundColor.Color), Mode=OneWay}"
|
||||||
Text="{x:Bind Name, Mode=OneWay}" />
|
Text="{x:Bind Name, Mode=OneWay}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
<Border Grid.Column="1"
|
<Border Grid.Column="1"
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "Converters.g.h"
|
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|
||||||
{
|
|
||||||
struct Converters : ConvertersT<Converters>
|
|
||||||
{
|
|
||||||
static winrt::hstring AppendPercentageSign(double value);
|
|
||||||
static winrt::Windows::UI::Text::FontWeight DoubleToFontWeight(double value);
|
|
||||||
static winrt::Windows::UI::Xaml::Media::SolidColorBrush ColorToBrush(winrt::Windows::UI::Color color);
|
|
||||||
static double FontWeightToDouble(winrt::Windows::UI::Text::FontWeight fontWeight);
|
|
||||||
static bool InvertBoolean(bool value);
|
|
||||||
static winrt::Windows::UI::Xaml::Visibility InvertedBooleanToVisibility(bool value);
|
|
||||||
static double MaxValueFromPaddingString(winrt::hstring paddingString);
|
|
||||||
static int PercentageToPercentageValue(double value);
|
|
||||||
static double PercentageValueToPercentage(double value);
|
|
||||||
static bool StringsAreNotEqual(winrt::hstring expected, winrt::hstring actual);
|
|
||||||
static winrt::Windows::UI::Xaml::Visibility StringNotEmptyToVisibility(winrt::hstring value);
|
|
||||||
static winrt::hstring StringOrEmptyIfPlaceholder(winrt::hstring placeholder, winrt::hstring value);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Editor::factory_implementation
|
|
||||||
{
|
|
||||||
BASIC_FACTORY(Converters);
|
|
||||||
}
|
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
<DataTemplate x:Key="ColorTableEntryTemplate"
|
<DataTemplate x:Key="ColorTableEntryTemplate"
|
||||||
x:DataType="local:ColorTableEntry">
|
x:DataType="local:ColorTableEntry">
|
||||||
<Button AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneWay}"
|
<Button AutomationProperties.Name="{x:Bind AccessibleName, Mode=OneWay}"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(Color), Mode=OneWay}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(Color), Mode=OneWay}"
|
||||||
Style="{StaticResource ColorSchemesColorButtonStyle}"
|
Style="{StaticResource ColorSchemesColorButtonStyle}"
|
||||||
ToolTipService.ToolTip="{x:Bind AccessibleName, Mode=OneWay}">
|
ToolTipService.ToolTip="{x:Bind AccessibleName, Mode=OneWay}">
|
||||||
<Button.Flyout>
|
<Button.Flyout>
|
||||||
@@ -74,7 +75,7 @@
|
|||||||
<TextBlock AutomationProperties.Name="{x:Bind Name}"
|
<TextBlock AutomationProperties.Name="{x:Bind Name}"
|
||||||
FontFamily="Cascadia Code"
|
FontFamily="Cascadia Code"
|
||||||
FontSize="14"
|
FontSize="14"
|
||||||
Foreground="{x:Bind local:Converters.ColorToBrush(Color), Mode=OneWay}"
|
Foreground="{x:Bind mtu:Converters.ColorToBrush(Color), Mode=OneWay}"
|
||||||
Text="{x:Bind Name}"
|
Text="{x:Bind Name}"
|
||||||
ToolTipService.ToolTip="{x:Bind Name}" />
|
ToolTipService.ToolTip="{x:Bind Name}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -90,7 +91,7 @@
|
|||||||
MaxWidth="{StaticResource StandardControlMaxWidth}"
|
MaxWidth="{StaticResource StandardControlMaxWidth}"
|
||||||
Margin="4"
|
Margin="4"
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
Background="{x:Bind local:Converters.ColorToBrush(ViewModel.BackgroundColor.Color), Mode=OneWay}"
|
Background="{x:Bind mtu:Converters.ColorToBrush(ViewModel.BackgroundColor.Color), Mode=OneWay}"
|
||||||
BorderBrush="{ThemeResource SystemControlForegroundBaseMediumLowBrush}"
|
BorderBrush="{ThemeResource SystemControlForegroundBaseMediumLowBrush}"
|
||||||
BorderThickness="1">
|
BorderThickness="1">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
@@ -198,7 +199,7 @@
|
|||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<local:SettingContainer x:Uid="ColorScheme_InboxSchemeDuplicate"
|
<local:SettingContainer x:Uid="ColorScheme_InboxSchemeDuplicate"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(ViewModel.IsEditable), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(ViewModel.IsEditable), Mode=OneWay}">
|
||||||
<Button x:Name="DuplicateSchemeButton"
|
<Button x:Name="DuplicateSchemeButton"
|
||||||
x:Uid="ColorScheme_DuplicateButton"
|
x:Uid="ColorScheme_DuplicateButton"
|
||||||
Click="{x:Bind ViewModel.Duplicate_Click}"
|
Click="{x:Bind ViewModel.Duplicate_Click}"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@
|
|||||||
|
|
||||||
<!-- Always show tabs -->
|
<!-- Always show tabs -->
|
||||||
<local:SettingContainer x:Uid="Globals_AlwaysShowTabs">
|
<local:SettingContainer x:Uid="Globals_AlwaysShowTabs">
|
||||||
<ToggleSwitch IsEnabled="{x:Bind local:Converters.InvertBoolean(ViewModel.ShowTabsInTitlebar), Mode=OneWay}"
|
<ToggleSwitch IsEnabled="{x:Bind mtu:Converters.InvertBoolean(ViewModel.ShowTabsInTitlebar), Mode=OneWay}"
|
||||||
IsOn="{x:Bind ViewModel.AlwaysShowTabs, Mode=TwoWay}"
|
IsOn="{x:Bind ViewModel.AlwaysShowTabs, Mode=TwoWay}"
|
||||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||||
</local:SettingContainer>
|
</local:SettingContainer>
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -22,7 +23,6 @@
|
|||||||
x:DataType="local:EnumEntry">
|
x:DataType="local:EnumEntry">
|
||||||
<TextBlock Text="{x:Bind EnumName, Mode=OneWay}" />
|
<TextBlock Text="{x:Bind EnumName, Mode=OneWay}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
<SettingsModel:IconPathConverter x:Key="IconSourceConverter" />
|
|
||||||
<Style x:Key="LaunchSizeNumberBoxStyle"
|
<Style x:Key="LaunchSizeNumberBoxStyle"
|
||||||
BasedOn="{StaticResource NumberBoxSettingStyle}"
|
BasedOn="{StaticResource NumberBoxSettingStyle}"
|
||||||
TargetType="muxc:NumberBox">
|
TargetType="muxc:NumberBox">
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<IconSourceElement Grid.Column="0"
|
<IconSourceElement Grid.Column="0"
|
||||||
Width="16"
|
Width="16"
|
||||||
Height="16"
|
Height="16"
|
||||||
IconSource="{x:Bind Icon, Converter={StaticResource IconSourceConverter}}" />
|
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Icon), Mode=OneTime}" />
|
||||||
|
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Text="{x:Bind Name}" />
|
Text="{x:Bind Name}" />
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
Width="24"
|
Width="24"
|
||||||
Height="24"
|
Height="24"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
IconSource="{x:Bind Icon, Converter={StaticResource IconSourceConverter}}" />
|
IconSource="{x:Bind mtu:IconPathConverter.IconSourceWUX(Icon), Mode=OneTime}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="0"
|
<TextBlock Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
@@ -124,14 +124,14 @@
|
|||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Style="{ThemeResource SecondaryTextBlockStyle}"
|
Style="{ThemeResource SecondaryTextBlockStyle}"
|
||||||
Text="{x:Bind Author}"
|
Text="{x:Bind Author}"
|
||||||
Visibility="{x:Bind local:Converters.StringNotEmptyToVisibility(Author)}" />
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Author)}" />
|
||||||
|
|
||||||
<TextBlock Grid.Row="1"
|
<TextBlock Grid.Row="1"
|
||||||
Grid.Column="2"
|
Grid.Column="2"
|
||||||
AutomationProperties.AccessibilityView="Raw"
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Style="{ThemeResource SecondaryTextBlockStyle}"
|
Style="{ThemeResource SecondaryTextBlockStyle}"
|
||||||
Text="{x:Bind Version}"
|
Text="{x:Bind Version}"
|
||||||
Visibility="{x:Bind local:Converters.StringNotEmptyToVisibility(Version)}" />
|
Visibility="{x:Bind mtu:Converters.StringNotEmptyToVisibility(Version)}" />
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Width="118"
|
Width="118"
|
||||||
IsEnabled="{x:Bind local:Converters.InvertBoolean(ViewModel.UseDefaultLaunchPosition), Mode=OneWay}"
|
IsEnabled="{x:Bind mtu:Converters.InvertBoolean(ViewModel.UseDefaultLaunchPosition), Mode=OneWay}"
|
||||||
Style="{StaticResource LaunchPositionNumberBoxStyle}"
|
Style="{StaticResource LaunchPositionNumberBoxStyle}"
|
||||||
Value="{x:Bind ViewModel.InitialPosX, Mode=TwoWay}" />
|
Value="{x:Bind ViewModel.InitialPosX, Mode=TwoWay}" />
|
||||||
<muxc:NumberBox x:Name="PosYBox"
|
<muxc:NumberBox x:Name="PosYBox"
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
Grid.Column="1"
|
Grid.Column="1"
|
||||||
Width="118"
|
Width="118"
|
||||||
IsEnabled="{x:Bind local:Converters.InvertBoolean(ViewModel.UseDefaultLaunchPosition), Mode=OneWay}"
|
IsEnabled="{x:Bind mtu:Converters.InvertBoolean(ViewModel.UseDefaultLaunchPosition), Mode=OneWay}"
|
||||||
Style="{StaticResource LaunchPositionNumberBoxStyle}"
|
Style="{StaticResource LaunchPositionNumberBoxStyle}"
|
||||||
Value="{x:Bind ViewModel.InitialPosY, Mode=TwoWay}" />
|
Value="{x:Bind ViewModel.InitialPosY, Mode=TwoWay}" />
|
||||||
<CheckBox x:Name="UseDefaultLaunchPositionCheckbox"
|
<CheckBox x:Name="UseDefaultLaunchPositionCheckbox"
|
||||||
|
|||||||
@@ -602,7 +602,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
MUX::Controls::NavigationViewItem profileNavItem;
|
MUX::Controls::NavigationViewItem profileNavItem;
|
||||||
profileNavItem.Content(box_value(profile.Name()));
|
profileNavItem.Content(box_value(profile.Name()));
|
||||||
profileNavItem.Tag(box_value<Editor::ProfileViewModel>(profile));
|
profileNavItem.Tag(box_value<Editor::ProfileViewModel>(profile));
|
||||||
profileNavItem.Icon(IconPathConverter::IconWUX(profile.EvaluatedIcon()));
|
profileNavItem.Icon(UI::IconPathConverter::IconWUX(profile.EvaluatedIcon()));
|
||||||
|
|
||||||
// Update the menu item when the icon/name changes
|
// Update the menu item when the icon/name changes
|
||||||
auto weakMenuItem{ make_weak(profileNavItem) };
|
auto weakMenuItem{ make_weak(profileNavItem) };
|
||||||
@@ -612,7 +612,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
const auto& tag{ menuItem.Tag().as<Editor::ProfileViewModel>() };
|
const auto& tag{ menuItem.Tag().as<Editor::ProfileViewModel>() };
|
||||||
if (args.PropertyName() == L"Icon")
|
if (args.PropertyName() == L"Icon")
|
||||||
{
|
{
|
||||||
menuItem.Icon(IconPathConverter::IconWUX(tag.Icon()));
|
menuItem.Icon(UI::IconPathConverter::IconWUX(tag.Icon()));
|
||||||
}
|
}
|
||||||
else if (args.PropertyName() == L"Name")
|
else if (args.PropertyName() == L"Name")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
xmlns:tsm="using:Microsoft.Terminal.Settings.Model"
|
xmlns:tsm="using:Microsoft.Terminal.Settings.Model"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|||||||
@@ -47,10 +47,6 @@
|
|||||||
<ClInclude Include="AddProfile.h">
|
<ClInclude Include="AddProfile.h">
|
||||||
<DependentUpon>AddProfile.xaml</DependentUpon>
|
<DependentUpon>AddProfile.xaml</DependentUpon>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="Converters.h">
|
|
||||||
<DependentUpon>Converters.idl</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="EnumEntry.h">
|
<ClInclude Include="EnumEntry.h">
|
||||||
<DependentUpon>EnumEntry.idl</DependentUpon>
|
<DependentUpon>EnumEntry.idl</DependentUpon>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -194,10 +190,6 @@
|
|||||||
<ClCompile Include="AddProfile.cpp">
|
<ClCompile Include="AddProfile.cpp">
|
||||||
<DependentUpon>AddProfile.xaml</DependentUpon>
|
<DependentUpon>AddProfile.xaml</DependentUpon>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="Converters.cpp">
|
|
||||||
<DependentUpon>Converters.idl</DependentUpon>
|
|
||||||
<SubType>Code</SubType>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="GlobalAppearance.cpp">
|
<ClCompile Include="GlobalAppearance.cpp">
|
||||||
<DependentUpon>GlobalAppearance.xaml</DependentUpon>
|
<DependentUpon>GlobalAppearance.xaml</DependentUpon>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -294,7 +286,6 @@
|
|||||||
<DependentUpon>AddProfile.xaml</DependentUpon>
|
<DependentUpon>AddProfile.xaml</DependentUpon>
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Midl>
|
</Midl>
|
||||||
<Midl Include="Converters.idl" />
|
|
||||||
<Midl Include="EnumEntry.idl" />
|
<Midl Include="EnumEntry.idl" />
|
||||||
<Midl Include="GlobalAppearance.idl">
|
<Midl Include="GlobalAppearance.idl">
|
||||||
<DependentUpon>GlobalAppearance.xaml</DependentUpon>
|
<DependentUpon>GlobalAppearance.xaml</DependentUpon>
|
||||||
@@ -377,6 +368,9 @@
|
|||||||
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj">
|
||||||
|
<Project>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</Project>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj">
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj">
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
|||||||
@@ -26,9 +26,6 @@
|
|||||||
<Midl Include="GlobalAppearanceViewModel.idl" />
|
<Midl Include="GlobalAppearanceViewModel.idl" />
|
||||||
<Midl Include="LaunchViewModel.idl" />
|
<Midl Include="LaunchViewModel.idl" />
|
||||||
<Midl Include="EnumEntry.idl" />
|
<Midl Include="EnumEntry.idl" />
|
||||||
<Midl Include="Converters.idl">
|
|
||||||
<Filter>Converters</Filter>
|
|
||||||
</Midl>
|
|
||||||
<Midl Include="SettingContainer.idl" />
|
<Midl Include="SettingContainer.idl" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -53,4 +50,4 @@
|
|||||||
<Page Include="AddProfile.xaml" />
|
<Page Include="AddProfile.xaml" />
|
||||||
<Page Include="KeyChordListener.xaml" />
|
<Page Include="KeyChordListener.xaml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
|
|
||||||
void SetAcrylicOpacityPercentageValue(double value)
|
void SetAcrylicOpacityPercentageValue(double value)
|
||||||
{
|
{
|
||||||
Opacity(winrt::Microsoft::Terminal::Settings::Editor::Converters::PercentageValueToPercentage(value));
|
Opacity(winrt::Microsoft::Terminal::UI::Converters::PercentageValueToPercentage(value));
|
||||||
};
|
};
|
||||||
|
|
||||||
void SetPadding(double value)
|
void SetPadding(double value)
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -78,10 +79,10 @@
|
|||||||
<Slider x:Name="OpacitySlider"
|
<Slider x:Name="OpacitySlider"
|
||||||
x:Uid="Profile_OpacitySlider"
|
x:Uid="Profile_OpacitySlider"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Value="{x:Bind local:Converters.PercentageToPercentageValue(Profile.Opacity), BindBack=Profile.SetAcrylicOpacityPercentageValue, Mode=TwoWay}" />
|
Value="{x:Bind mtu:Converters.PercentageToPercentageValue(Profile.Opacity), BindBack=Profile.SetAcrylicOpacityPercentageValue, Mode=TwoWay}" />
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Style="{StaticResource SliderValueLabelStyle}"
|
Style="{StaticResource SliderValueLabelStyle}"
|
||||||
Text="{x:Bind local:Converters.AppendPercentageSign(OpacitySlider.Value), Mode=OneWay}" />
|
Text="{x:Bind mtu:Converters.AppendPercentageSign(OpacitySlider.Value), Mode=OneWay}" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</local:SettingContainer>
|
</local:SettingContainer>
|
||||||
@@ -116,7 +117,7 @@
|
|||||||
<Slider x:Name="PaddingSlider"
|
<Slider x:Name="PaddingSlider"
|
||||||
x:Uid="Profile_PaddingSlider"
|
x:Uid="Profile_PaddingSlider"
|
||||||
Grid.Column="0"
|
Grid.Column="0"
|
||||||
Value="{x:Bind local:Converters.MaxValueFromPaddingString(Profile.Padding), BindBack=Profile.SetPadding, Mode=TwoWay}" />
|
Value="{x:Bind mtu:Converters.MaxValueFromPaddingString(Profile.Padding), BindBack=Profile.SetPadding, Mode=TwoWay}" />
|
||||||
<TextBlock Grid.Column="1"
|
<TextBlock Grid.Column="1"
|
||||||
Style="{StaticResource SliderValueLabelStyle}"
|
Style="{StaticResource SliderValueLabelStyle}"
|
||||||
Text="{Binding ElementName=PaddingSlider, Path=Value, Mode=OneWay}" />
|
Text="{Binding ElementName=PaddingSlider, Path=Value, Mode=OneWay}" />
|
||||||
@@ -144,7 +145,7 @@
|
|||||||
Margin="10,0,0,0"
|
Margin="10,0,0,0"
|
||||||
Click="CreateUnfocusedAppearance_Click"
|
Click="CreateUnfocusedAppearance_Click"
|
||||||
Style="{StaticResource BaseButtonStyle}"
|
Style="{StaticResource BaseButtonStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.HasUnfocusedAppearance), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.HasUnfocusedAppearance), Mode=OneWay}">
|
||||||
<Button.Content>
|
<Button.Content>
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<FontIcon Margin="0,3,0,0"
|
<FontIcon Margin="0,3,0,0"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
xmlns:local="using:Microsoft.Terminal.Settings.Editor"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
xmlns:model="using:Microsoft.Terminal.Settings.Model"
|
||||||
|
xmlns:mtu="using:Microsoft.Terminal.UI"
|
||||||
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@
|
|||||||
<local:SettingContainer x:Uid="Profile_Name"
|
<local:SettingContainer x:Uid="Profile_Name"
|
||||||
CurrentValue="{x:Bind Profile.Name, Mode=OneWay}"
|
CurrentValue="{x:Bind Profile.Name, Mode=OneWay}"
|
||||||
Style="{StaticResource ExpanderSettingContainerStyle}"
|
Style="{StaticResource ExpanderSettingContainerStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
||||||
<TextBox Style="{StaticResource TextBoxSettingStyle}"
|
<TextBox Style="{StaticResource TextBoxSettingStyle}"
|
||||||
Text="{x:Bind Profile.Name, Mode=TwoWay}" />
|
Text="{x:Bind Profile.Name, Mode=TwoWay}" />
|
||||||
</local:SettingContainer>
|
</local:SettingContainer>
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
HasSettingValue="{x:Bind Profile.HasCommandline, Mode=OneWay}"
|
HasSettingValue="{x:Bind Profile.HasCommandline, Mode=OneWay}"
|
||||||
SettingOverrideSource="{x:Bind Profile.CommandlineOverrideSource, Mode=OneWay}"
|
SettingOverrideSource="{x:Bind Profile.CommandlineOverrideSource, Mode=OneWay}"
|
||||||
Style="{StaticResource ExpanderSettingContainerStyle}"
|
Style="{StaticResource ExpanderSettingContainerStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBox x:Uid="Profile_CommandlineBox"
|
<TextBox x:Uid="Profile_CommandlineBox"
|
||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
@@ -108,16 +109,16 @@
|
|||||||
<StackPanel>
|
<StackPanel>
|
||||||
<TextBox x:Uid="Profile_IconBox"
|
<TextBox x:Uid="Profile_IconBox"
|
||||||
FontFamily="Segoe UI, Segoe Fluent Icons, Segoe MDL2 Assets"
|
FontFamily="Segoe UI, Segoe Fluent Icons, Segoe MDL2 Assets"
|
||||||
IsEnabled="{x:Bind local:Converters.InvertBoolean(Profile.HideIcon), Mode=OneWay}"
|
IsEnabled="{x:Bind mtu:Converters.InvertBoolean(Profile.HideIcon), Mode=OneWay}"
|
||||||
IsSpellCheckEnabled="False"
|
IsSpellCheckEnabled="False"
|
||||||
Style="{StaticResource TextBoxSettingStyle}"
|
Style="{StaticResource TextBoxSettingStyle}"
|
||||||
Text="{x:Bind Profile.Icon, Mode=TwoWay}"
|
Text="{x:Bind Profile.Icon, Mode=TwoWay}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.HideIcon), Mode=OneWay}" />
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.HideIcon), Mode=OneWay}" />
|
||||||
<Button x:Uid="Profile_IconBrowse"
|
<Button x:Uid="Profile_IconBrowse"
|
||||||
Margin="0,10,0,0"
|
Margin="0,10,0,0"
|
||||||
Click="Icon_Click"
|
Click="Icon_Click"
|
||||||
Style="{StaticResource BrowseButtonStyle}"
|
Style="{StaticResource BrowseButtonStyle}"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.HideIcon), Mode=OneWay}" />
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.HideIcon), Mode=OneWay}" />
|
||||||
<CheckBox x:Name="HideIconCheckbox"
|
<CheckBox x:Name="HideIconCheckbox"
|
||||||
x:Uid="Profile_HideIconCheckbox"
|
x:Uid="Profile_HideIconCheckbox"
|
||||||
Margin="0,5,0,0"
|
Margin="0,5,0,0"
|
||||||
@@ -147,7 +148,7 @@
|
|||||||
|
|
||||||
<!-- Hidden -->
|
<!-- Hidden -->
|
||||||
<local:SettingContainer x:Uid="Profile_Hidden"
|
<local:SettingContainer x:Uid="Profile_Hidden"
|
||||||
Visibility="{x:Bind local:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
Visibility="{x:Bind mtu:Converters.InvertedBooleanToVisibility(Profile.IsBaseLayer), Mode=OneWay}">
|
||||||
<ToggleSwitch IsOn="{x:Bind Profile.Hidden, Mode=TwoWay}"
|
<ToggleSwitch IsOn="{x:Bind Profile.Hidden, Mode=TwoWay}"
|
||||||
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
Style="{StaticResource ToggleSwitchInExpanderStyle}" />
|
||||||
</local:SettingContainer>
|
</local:SettingContainer>
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
#include <winrt/Microsoft.Terminal.Core.h>
|
#include <winrt/Microsoft.Terminal.Core.h>
|
||||||
#include <winrt/Microsoft.Terminal.Control.h>
|
#include <winrt/Microsoft.Terminal.Control.h>
|
||||||
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.UI.h>
|
||||||
|
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <shobjidl_core.h>
|
#include <shobjidl_core.h>
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "IconPathConverter.g.h"
|
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|
||||||
{
|
|
||||||
struct IconPathConverter : IconPathConverterT<IconPathConverter>
|
|
||||||
{
|
|
||||||
IconPathConverter() = default;
|
|
||||||
|
|
||||||
Windows::Foundation::IInspectable Convert(const Windows::Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& targetType,
|
|
||||||
const Windows::Foundation::IInspectable& parameter,
|
|
||||||
const hstring& language);
|
|
||||||
|
|
||||||
Windows::Foundation::IInspectable ConvertBack(const Windows::Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& targetType,
|
|
||||||
const Windows::Foundation::IInspectable& parameter,
|
|
||||||
const hstring& language);
|
|
||||||
|
|
||||||
static Windows::UI::Xaml::Controls::IconElement IconWUX(const winrt::hstring& iconPath);
|
|
||||||
static Microsoft::UI::Xaml::Controls::IconSource IconSourceMUX(const winrt::hstring& iconPath, const bool convertToGrayscale);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Model::factory_implementation
|
|
||||||
{
|
|
||||||
BASIC_FACTORY(IconPathConverter);
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
namespace Microsoft.Terminal.Settings.Model
|
|
||||||
{
|
|
||||||
// See https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-quickstart
|
|
||||||
|
|
||||||
// We use the default attribute to declare IValueConverter as the default
|
|
||||||
// interface. In the listing, IconPathConverter has only a
|
|
||||||
// constructor, and no methods, so no default interface is generated for it.
|
|
||||||
// The default attribute is optimal if you won't be adding instance members
|
|
||||||
// to IconPathConverter, because no QueryInterface will be
|
|
||||||
// required to call the IValueConverter methods
|
|
||||||
runtimeclass IconPathConverter : [default] Windows.UI.Xaml.Data.IValueConverter
|
|
||||||
{
|
|
||||||
IconPathConverter();
|
|
||||||
|
|
||||||
static Windows.UI.Xaml.Controls.IconElement IconWUX(String path);
|
|
||||||
static Microsoft.UI.Xaml.Controls.IconSource IconSourceMUX(String path, Boolean convertToGrayscale);
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -46,9 +46,6 @@
|
|||||||
<ClInclude Include="DefaultTerminal.h">
|
<ClInclude Include="DefaultTerminal.h">
|
||||||
<DependentUpon>DefaultTerminal.idl</DependentUpon>
|
<DependentUpon>DefaultTerminal.idl</DependentUpon>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="IconPathConverter.h">
|
|
||||||
<DependentUpon>IconPathConverter.idl</DependentUpon>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="pch.h" />
|
<ClInclude Include="pch.h" />
|
||||||
<ClInclude Include="ActionArgs.h">
|
<ClInclude Include="ActionArgs.h">
|
||||||
<DependentUpon>ActionArgs.idl</DependentUpon>
|
<DependentUpon>ActionArgs.idl</DependentUpon>
|
||||||
@@ -122,9 +119,6 @@
|
|||||||
<ClCompile Include="DefaultTerminal.cpp">
|
<ClCompile Include="DefaultTerminal.cpp">
|
||||||
<DependentUpon>DefaultTerminal.idl</DependentUpon>
|
<DependentUpon>DefaultTerminal.idl</DependentUpon>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="IconPathConverter.cpp">
|
|
||||||
<DependentUpon>IconPathConverter.idl</DependentUpon>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="init.cpp" />
|
<ClCompile Include="init.cpp" />
|
||||||
<ClCompile Include="pch.cpp">
|
<ClCompile Include="pch.cpp">
|
||||||
<PrecompiledHeader>Create</PrecompiledHeader>
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
@@ -229,7 +223,6 @@
|
|||||||
<Midl Include="Command.idl" />
|
<Midl Include="Command.idl" />
|
||||||
<Midl Include="DefaultTerminal.idl" />
|
<Midl Include="DefaultTerminal.idl" />
|
||||||
<Midl Include="GlobalAppSettings.idl" />
|
<Midl Include="GlobalAppSettings.idl" />
|
||||||
<Midl Include="IconPathConverter.idl" />
|
|
||||||
<Midl Include="Profile.idl" />
|
<Midl Include="Profile.idl" />
|
||||||
<Midl Include="EnumMappings.idl" />
|
<Midl Include="EnumMappings.idl" />
|
||||||
<Midl Include="TerminalSettings.idl" />
|
<Midl Include="TerminalSettings.idl" />
|
||||||
@@ -316,7 +309,7 @@
|
|||||||
<DisableSpecificWarnings>4702;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
<DisableSpecificWarnings>4702;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>WindowsApp.lib;user32.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);user32.lib</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
<Reference>
|
<Reference>
|
||||||
<Private>false</Private>
|
<Private>false</Private>
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
<Filter>json</Filter>
|
<Filter>json</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="init.cpp" />
|
<ClCompile Include="init.cpp" />
|
||||||
<ClCompile Include="IconPathConverter.cpp" />
|
|
||||||
<ClCompile Include="DefaultTerminal.cpp" />
|
<ClCompile Include="DefaultTerminal.cpp" />
|
||||||
<ClCompile Include="FileUtils.cpp" />
|
<ClCompile Include="FileUtils.cpp" />
|
||||||
<ClCompile Include="VisualStudioGenerator.cpp">
|
<ClCompile Include="VisualStudioGenerator.cpp">
|
||||||
@@ -83,7 +82,6 @@
|
|||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="IInheritable.h" />
|
<ClInclude Include="IInheritable.h" />
|
||||||
<ClInclude Include="MTSMSettings.h" />
|
<ClInclude Include="MTSMSettings.h" />
|
||||||
<ClInclude Include="IconPathConverter.h" />
|
|
||||||
<ClInclude Include="DefaultTerminal.h" />
|
<ClInclude Include="DefaultTerminal.h" />
|
||||||
<ClInclude Include="FileUtils.h" />
|
<ClInclude Include="FileUtils.h" />
|
||||||
<ClInclude Include="HashUtils.h" />
|
<ClInclude Include="HashUtils.h" />
|
||||||
@@ -113,7 +111,6 @@
|
|||||||
<Midl Include="CascadiaSettings.idl" />
|
<Midl Include="CascadiaSettings.idl" />
|
||||||
<Midl Include="KeyChordSerialization.idl" />
|
<Midl Include="KeyChordSerialization.idl" />
|
||||||
<Midl Include="EnumMappings.idl" />
|
<Midl Include="EnumMappings.idl" />
|
||||||
<Midl Include="IconPathConverter.idl" />
|
|
||||||
<Midl Include="TerminalSettings.idl" />
|
<Midl Include="TerminalSettings.idl" />
|
||||||
<Midl Include="AppearanceConfig.idl" />
|
<Midl Include="AppearanceConfig.idl" />
|
||||||
<Midl Include="IAppearanceConfig.idl" />
|
<Midl Include="IAppearanceConfig.idl" />
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
<ClInclude Include="../KeyMapping.h" />
|
<ClInclude Include="../KeyMapping.h" />
|
||||||
<ClInclude Include="../Profile.h" />
|
<ClInclude Include="../Profile.h" />
|
||||||
<ClInclude Include="../TerminalWarnings.h" />
|
<ClInclude Include="../TerminalWarnings.h" />
|
||||||
<ClInclude Include="../IconPathConverter.h" />
|
|
||||||
<ClInclude Include="../NewTabMenuEntry.h" />
|
<ClInclude Include="../NewTabMenuEntry.h" />
|
||||||
<ClInclude Include="../SeparatorEntry.h">
|
<ClInclude Include="../SeparatorEntry.h">
|
||||||
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
<DependentUpon>../NewTabMenuEntry.h</DependentUpon>
|
||||||
@@ -130,7 +129,7 @@
|
|||||||
<AdditionalIncludeDirectories>$(OpenConsoleDir)\dep\jsoncpp\json;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(OpenConsoleDir)\dep\jsoncpp\json;%(AdditionalIncludeDirectories);</AdditionalIncludeDirectories>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<AdditionalDependencies>User32.lib;WindowsApp.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>%(AdditionalDependencies);user32.lib</AdditionalDependencies>
|
||||||
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
|
<!-- TSM Lib contains a DllMain that we need to force the use of. -->
|
||||||
<AdditionalOptions Condition="'$(Platform)'=='Win32'">/INCLUDE:_DllMain@12 %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions Condition="'$(Platform)'=='Win32'">/INCLUDE:_DllMain@12 %(AdditionalOptions)</AdditionalOptions>
|
||||||
<AdditionalOptions Condition="'$(Platform)'!='Win32'">/INCLUDE:DllMain %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions Condition="'$(Platform)'!='Win32'">/INCLUDE:DllMain %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
|||||||
@@ -29,8 +29,6 @@
|
|||||||
#include <winrt/Windows.ApplicationModel.h>
|
#include <winrt/Windows.ApplicationModel.h>
|
||||||
#include <winrt/Windows.Foundation.Collections.h>
|
#include <winrt/Windows.Foundation.Collections.h>
|
||||||
#include <winrt/Windows.Foundation.h>
|
#include <winrt/Windows.Foundation.h>
|
||||||
#include <winrt/Windows.Graphics.Imaging.h>
|
|
||||||
#include <Windows.Graphics.Imaging.Interop.h>
|
|
||||||
#include <winrt/Windows.Storage.h>
|
#include <winrt/Windows.Storage.h>
|
||||||
#include <winrt/Windows.Storage.Streams.h>
|
#include <winrt/Windows.Storage.Streams.h>
|
||||||
#include <winrt/Windows.System.h>
|
#include <winrt/Windows.System.h>
|
||||||
@@ -38,7 +36,6 @@
|
|||||||
#include <winrt/Windows.UI.ViewManagement.h>
|
#include <winrt/Windows.UI.ViewManagement.h>
|
||||||
#include <winrt/Windows.UI.Xaml.Controls.h>
|
#include <winrt/Windows.UI.Xaml.Controls.h>
|
||||||
#include <winrt/Windows.UI.Xaml.Media.h>
|
#include <winrt/Windows.UI.Xaml.Media.h>
|
||||||
#include <winrt/Windows.UI.Xaml.Media.Imaging.h>
|
|
||||||
|
|
||||||
#include <winrt/Microsoft.UI.Xaml.Controls.h>
|
#include <winrt/Microsoft.UI.Xaml.Controls.h>
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
#include "pch.h"
|
#include "pch.h"
|
||||||
#include "Converters.h"
|
#include "Converters.h"
|
||||||
#if __has_include("Converters.g.cpp")
|
|
||||||
#include "Converters.g.cpp"
|
#include "Converters.g.cpp"
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
#pragma warning(disable : 26497) // We will make these functions constexpr, as they are part of an ABI boundary.
|
||||||
|
#pragma warning(disable : 26440) // The function ... can be declared as noexcept.
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
{
|
{
|
||||||
winrt::hstring Converters::AppendPercentageSign(double value)
|
winrt::hstring Converters::AppendPercentageSign(double value)
|
||||||
{
|
{
|
||||||
const auto number{ value };
|
return to_hstring(gsl::narrow_cast<uint32_t>(std::lrint(value))) + L"%";
|
||||||
return to_hstring((int)number) + L"%";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
winrt::Windows::UI::Xaml::Media::SolidColorBrush Converters::ColorToBrush(winrt::Windows::UI::Color color)
|
winrt::Windows::UI::Xaml::Media::SolidColorBrush Converters::ColorToBrush(const winrt::Windows::UI::Color& color)
|
||||||
{
|
{
|
||||||
return Windows::UI::Xaml::Media::SolidColorBrush(color);
|
return Windows::UI::Xaml::Media::SolidColorBrush(color);
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
return winrt::Windows::UI::Text::FontWeight{ base::ClampedNumeric<uint16_t>(value) };
|
return winrt::Windows::UI::Text::FontWeight{ base::ClampedNumeric<uint16_t>(value) };
|
||||||
}
|
}
|
||||||
|
|
||||||
double Converters::FontWeightToDouble(winrt::Windows::UI::Text::FontWeight fontWeight)
|
double Converters::FontWeightToDouble(const winrt::Windows::UI::Text::FontWeight& fontWeight)
|
||||||
{
|
{
|
||||||
return fontWeight.Weight;
|
return fontWeight.Weight;
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
return value ? winrt::Windows::UI::Xaml::Visibility::Collapsed : winrt::Windows::UI::Xaml::Visibility::Visible;
|
return value ? winrt::Windows::UI::Xaml::Visibility::Collapsed : winrt::Windows::UI::Xaml::Visibility::Visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
double Converters::MaxValueFromPaddingString(winrt::hstring paddingString)
|
double Converters::MaxValueFromPaddingString(const winrt::hstring& paddingString)
|
||||||
{
|
{
|
||||||
const auto singleCharDelim = L',';
|
const auto singleCharDelim = L',';
|
||||||
std::wstringstream tokenStream(paddingString.c_str());
|
std::wstringstream tokenStream(paddingString.c_str());
|
||||||
@@ -85,11 +85,11 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
return base::ClampDiv<double, double>(value, 100);
|
return base::ClampDiv<double, double>(value, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Converters::StringsAreNotEqual(winrt::hstring expected, winrt::hstring actual)
|
bool Converters::StringsAreNotEqual(const winrt::hstring& expected, const winrt::hstring& actual)
|
||||||
{
|
{
|
||||||
return expected != actual;
|
return expected != actual;
|
||||||
}
|
}
|
||||||
winrt::Windows::UI::Xaml::Visibility Converters::StringNotEmptyToVisibility(winrt::hstring value)
|
winrt::Windows::UI::Xaml::Visibility Converters::StringNotEmptyToVisibility(const winrt::hstring& value)
|
||||||
{
|
{
|
||||||
return value.empty() ? winrt::Windows::UI::Xaml::Visibility::Collapsed : winrt::Windows::UI::Xaml::Visibility::Visible;
|
return value.empty() ? winrt::Windows::UI::Xaml::Visibility::Collapsed : winrt::Windows::UI::Xaml::Visibility::Visible;
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ namespace winrt::Microsoft::Terminal::Settings::Editor::implementation
|
|||||||
// - value - the value string.
|
// - value - the value string.
|
||||||
// Return Value:
|
// Return Value:
|
||||||
// - The value string, unless it matches the placeholder in which case the empty string.
|
// - The value string, unless it matches the placeholder in which case the empty string.
|
||||||
winrt::hstring Converters::StringOrEmptyIfPlaceholder(winrt::hstring placeholder, winrt::hstring value)
|
winrt::hstring Converters::StringOrEmptyIfPlaceholder(const winrt::hstring& placeholder, const winrt::hstring& value)
|
||||||
{
|
{
|
||||||
return placeholder == value ? L"" : value;
|
return placeholder == value ? L"" : value;
|
||||||
}
|
}
|
||||||
33
src/cascadia/UIHelpers/Converters.h
Normal file
33
src/cascadia/UIHelpers/Converters.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Converters.g.h"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
|
{
|
||||||
|
struct Converters
|
||||||
|
{
|
||||||
|
Converters() = default;
|
||||||
|
static winrt::hstring AppendPercentageSign(double value);
|
||||||
|
static winrt::Windows::UI::Text::FontWeight DoubleToFontWeight(double value);
|
||||||
|
static winrt::Windows::UI::Xaml::Media::SolidColorBrush ColorToBrush(const winrt::Windows::UI::Color& color);
|
||||||
|
static double FontWeightToDouble(const winrt::Windows::UI::Text::FontWeight& fontWeight);
|
||||||
|
static bool InvertBoolean(bool value);
|
||||||
|
static winrt::Windows::UI::Xaml::Visibility InvertedBooleanToVisibility(bool value);
|
||||||
|
static double MaxValueFromPaddingString(const winrt::hstring& paddingString);
|
||||||
|
static int PercentageToPercentageValue(double value);
|
||||||
|
static double PercentageValueToPercentage(double value);
|
||||||
|
static bool StringsAreNotEqual(const winrt::hstring& expected, const winrt::hstring& actual);
|
||||||
|
static winrt::Windows::UI::Xaml::Visibility StringNotEmptyToVisibility(const winrt::hstring& value);
|
||||||
|
static winrt::hstring StringOrEmptyIfPlaceholder(const winrt::hstring& placeholder, const winrt::hstring& value);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::factory_implementation
|
||||||
|
{
|
||||||
|
struct Converters : ConvertersT<Converters, implementation::Converters>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,24 +1,30 @@
|
|||||||
// Copyright (c) Microsoft Corporation.
|
// Copyright (c) Microsoft Corporation.
|
||||||
// Licensed under the MIT license.
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
namespace Microsoft.Terminal.Settings.Editor
|
namespace Microsoft.Terminal.UI
|
||||||
{
|
{
|
||||||
|
|
||||||
[bindable]
|
[bindable]
|
||||||
[default_interface] static runtimeclass Converters
|
static runtimeclass Converters
|
||||||
{
|
{
|
||||||
|
// Booleans
|
||||||
|
static Boolean InvertBoolean(Boolean value);
|
||||||
|
static Windows.UI.Xaml.Visibility InvertedBooleanToVisibility(Boolean value);
|
||||||
|
|
||||||
|
// Numbers
|
||||||
|
static Int32 PercentageToPercentageValue(Double value);
|
||||||
|
static Double PercentageValueToPercentage(Double value);
|
||||||
|
|
||||||
|
// Strings
|
||||||
|
static Boolean StringsAreNotEqual(String expected, String actual);
|
||||||
|
static Windows.UI.Xaml.Visibility StringNotEmptyToVisibility(String value);
|
||||||
|
static String StringOrEmptyIfPlaceholder(String placeholder, String value);
|
||||||
|
|
||||||
|
// Misc
|
||||||
static String AppendPercentageSign(Double value);
|
static String AppendPercentageSign(Double value);
|
||||||
static Windows.UI.Text.FontWeight DoubleToFontWeight(Double value);
|
static Windows.UI.Text.FontWeight DoubleToFontWeight(Double value);
|
||||||
static Windows.UI.Xaml.Media.SolidColorBrush ColorToBrush(Windows.UI.Color color);
|
static Windows.UI.Xaml.Media.SolidColorBrush ColorToBrush(Windows.UI.Color color);
|
||||||
static Double FontWeightToDouble(Windows.UI.Text.FontWeight fontWeight);
|
static Double FontWeightToDouble(Windows.UI.Text.FontWeight fontWeight);
|
||||||
static Boolean InvertBoolean(Boolean value);
|
|
||||||
static Windows.UI.Xaml.Visibility InvertedBooleanToVisibility(Boolean value);
|
|
||||||
static Double MaxValueFromPaddingString(String paddingString);
|
static Double MaxValueFromPaddingString(String paddingString);
|
||||||
static Int32 PercentageToPercentageValue(Double value);
|
|
||||||
static Double PercentageValueToPercentage(Double value);
|
|
||||||
static Boolean StringsAreNotEqual(String expected, String actual);
|
|
||||||
static Windows.UI.Xaml.Visibility StringNotEmptyToVisibility(String value);
|
|
||||||
static String StringOrEmptyIfPlaceholder(String placeholder, String value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
src/cascadia/UIHelpers/IDirectKeyListener.idl
Normal file
10
src/cascadia/UIHelpers/IDirectKeyListener.idl
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
namespace Microsoft.Terminal.UI
|
||||||
|
{
|
||||||
|
[uuid("0ddf4edc-3fda-4dee-97ca-a417ee3dd510")]
|
||||||
|
interface IDirectKeyListener {
|
||||||
|
Boolean OnDirectKeyEvent(UInt32 vkey, UInt8 scanCode, Boolean down);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,7 +19,7 @@ using namespace winrt::Windows::UI::Xaml;
|
|||||||
using namespace winrt::Windows::Graphics::Imaging;
|
using namespace winrt::Windows::Graphics::Imaging;
|
||||||
using namespace winrt::Windows::Storage::Streams;
|
using namespace winrt::Windows::Storage::Streams;
|
||||||
|
|
||||||
namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
{
|
{
|
||||||
// These are templates that help us figure out which BitmapIconSource/FontIconSource to use for a given IconSource.
|
// These are templates that help us figure out which BitmapIconSource/FontIconSource to use for a given IconSource.
|
||||||
// We have to do this because some of our code still wants to use WUX/MUX IconSources.
|
// We have to do this because some of our code still wants to use WUX/MUX IconSources.
|
||||||
@@ -95,7 +95,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
_TIL_INLINEPREFIX winrt::hstring _expandIconPath(hstring iconPath)
|
static winrt::hstring _expandIconPath(const hstring& iconPath)
|
||||||
{
|
{
|
||||||
if (iconPath.empty())
|
if (iconPath.empty())
|
||||||
{
|
{
|
||||||
@@ -140,7 +140,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
typename FontIconSource<TIconSource>::type icon;
|
typename FontIconSource<TIconSource>::type icon;
|
||||||
const auto ch = iconPath[0];
|
const auto ch = til::at(iconPath, 0);
|
||||||
|
|
||||||
// The range of MDL2 Icons isn't explicitly defined, but
|
// The range of MDL2 Icons isn't explicitly defined, but
|
||||||
// we're using this based off the table on:
|
// we're using this based off the table on:
|
||||||
@@ -178,51 +178,25 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
return iconSource;
|
return iconSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method Description:
|
Windows::UI::Xaml::Controls::IconSource IconPathConverter::IconSourceWUX(const hstring& path)
|
||||||
// - Attempt to convert something into another type. For the
|
|
||||||
// IconPathConverter, we support a variety of icons:
|
|
||||||
// * If the icon is a path to an image, we'll use that.
|
|
||||||
// * If it isn't, then we'll try and use the text as a FontIcon. If the
|
|
||||||
// character is in the range of symbols reserved for the Segoe MDL2
|
|
||||||
// Asserts, well treat it as such. Otherwise, we'll default to a Sego
|
|
||||||
// UI icon, so things like emoji will work.
|
|
||||||
// - MUST BE CALLED ON THE UI THREAD.
|
|
||||||
// Arguments:
|
|
||||||
// - value: the input object to attempt to convert into an IconSource.
|
|
||||||
// Return Value:
|
|
||||||
// - Visible if the object was a string and wasn't the empty string.
|
|
||||||
Foundation::IInspectable IconPathConverter::Convert(const Foundation::IInspectable& value,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& /* targetType */,
|
|
||||||
const Foundation::IInspectable& /* parameter */,
|
|
||||||
const hstring& /* language */)
|
|
||||||
{
|
|
||||||
const auto& iconPath = winrt::unbox_value_or<winrt::hstring>(value, L"");
|
|
||||||
return _getIconSource<Controls::IconSource>(iconPath, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
// unused for one-way bindings
|
|
||||||
Foundation::IInspectable IconPathConverter::ConvertBack(const Foundation::IInspectable& /* value */,
|
|
||||||
const Windows::UI::Xaml::Interop::TypeName& /* targetType */,
|
|
||||||
const Foundation::IInspectable& /* parameter */,
|
|
||||||
const hstring& /* language */)
|
|
||||||
{
|
|
||||||
throw hresult_not_implemented();
|
|
||||||
}
|
|
||||||
|
|
||||||
Windows::UI::Xaml::Controls::IconSource _IconSourceWUX(hstring path)
|
|
||||||
{
|
{
|
||||||
|
// * If the icon is a path to an image, we'll use that.
|
||||||
|
// * If it isn't, then we'll try and use the text as a FontIcon. If the
|
||||||
|
// character is in the range of symbols reserved for the Segoe MDL2
|
||||||
|
// Asserts, well treat it as such. Otherwise, we'll default to a Segoe
|
||||||
|
// UI icon, so things like emoji will work.
|
||||||
return _getIconSource<Windows::UI::Xaml::Controls::IconSource>(path, false);
|
return _getIconSource<Windows::UI::Xaml::Controls::IconSource>(path, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Microsoft::UI::Xaml::Controls::IconSource _IconSourceMUX(hstring path, bool monochrome)
|
static Microsoft::UI::Xaml::Controls::IconSource _IconSourceMUX(const hstring& path, bool monochrome)
|
||||||
{
|
{
|
||||||
return _getIconSource<Microsoft::UI::Xaml::Controls::IconSource>(path, monochrome);
|
return _getIconSource<Microsoft::UI::Xaml::Controls::IconSource>(path, monochrome);
|
||||||
}
|
}
|
||||||
|
|
||||||
SoftwareBitmap _convertToSoftwareBitmap(HICON hicon,
|
static SoftwareBitmap _convertToSoftwareBitmap(HICON hicon,
|
||||||
BitmapPixelFormat pixelFormat,
|
BitmapPixelFormat pixelFormat,
|
||||||
BitmapAlphaMode alphaMode,
|
BitmapAlphaMode alphaMode,
|
||||||
IWICImagingFactory* imagingFactory)
|
gsl::not_null<IWICImagingFactory*> imagingFactory)
|
||||||
{
|
{
|
||||||
// Load the icon into an IWICBitmap
|
// Load the icon into an IWICBitmap
|
||||||
wil::com_ptr<IWICBitmap> iconBitmap;
|
wil::com_ptr<IWICBitmap> iconBitmap;
|
||||||
@@ -245,9 +219,9 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
return softwareBitmap;
|
return softwareBitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
SoftwareBitmap _getBitmapFromIconFileAsync(const winrt::hstring& iconPath,
|
static SoftwareBitmap _getBitmapFromIconFileAsync(const winrt::hstring& iconPath,
|
||||||
int32_t iconIndex,
|
int32_t iconIndex,
|
||||||
uint32_t iconSize)
|
uint32_t iconSize)
|
||||||
{
|
{
|
||||||
wil::unique_hicon hicon;
|
wil::unique_hicon hicon;
|
||||||
LOG_IF_FAILED(SHDefExtractIcon(iconPath.c_str(), iconIndex, 0, &hicon, nullptr, iconSize));
|
LOG_IF_FAILED(SHDefExtractIcon(iconPath.c_str(), iconIndex, 0, &hicon, nullptr, iconSize));
|
||||||
@@ -276,7 +250,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
// - 0 if the iconPath is an exe/dll/lnk file but does not contain an index (i.e. we default
|
// - 0 if the iconPath is an exe/dll/lnk file but does not contain an index (i.e. we default
|
||||||
// to the first icon in the file)
|
// to the first icon in the file)
|
||||||
// - the icon index if the iconPath is an exe/dll/lnk file and contains an index
|
// - the icon index if the iconPath is an exe/dll/lnk file and contains an index
|
||||||
std::optional<int> _getIconIndex(const winrt::hstring& iconPath, std::wstring_view& iconPathWithoutIndex)
|
static std::optional<int> _getIconIndex(const winrt::hstring& iconPath, std::wstring_view& iconPathWithoutIndex)
|
||||||
{
|
{
|
||||||
const auto pathView = std::wstring_view{ iconPath };
|
const auto pathView = std::wstring_view{ iconPath };
|
||||||
// Does iconPath have a comma in it? If so, split the string on the
|
// Does iconPath have a comma in it? If so, split the string on the
|
||||||
@@ -309,8 +283,8 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
winrt::Windows::UI::Xaml::Media::Imaging::SoftwareBitmapSource _getImageIconSourceForBinary(std::wstring_view iconPathWithoutIndex,
|
static winrt::Windows::UI::Xaml::Media::Imaging::SoftwareBitmapSource _getImageIconSourceForBinary(std::wstring_view iconPathWithoutIndex,
|
||||||
int index)
|
int index)
|
||||||
{
|
{
|
||||||
// Try:
|
// Try:
|
||||||
// * c:\Windows\System32\SHELL32.dll, 210
|
// * c:\Windows\System32\SHELL32.dll, 210
|
||||||
@@ -353,7 +327,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation
|
|||||||
const auto indexOpt = _getIconIndex(iconPath, iconPathWithoutIndex);
|
const auto indexOpt = _getIconIndex(iconPath, iconPathWithoutIndex);
|
||||||
if (!indexOpt.has_value())
|
if (!indexOpt.has_value())
|
||||||
{
|
{
|
||||||
auto source = _IconSourceWUX(iconPath);
|
auto source = IconSourceWUX(iconPath);
|
||||||
Controls::IconSourceElement icon;
|
Controls::IconSourceElement icon;
|
||||||
icon.IconSource(source);
|
icon.IconSource(source);
|
||||||
return icon;
|
return icon;
|
||||||
20
src/cascadia/UIHelpers/IconPathConverter.h
Normal file
20
src/cascadia/UIHelpers/IconPathConverter.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "IconPathConverter.g.h"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
|
{
|
||||||
|
struct IconPathConverter
|
||||||
|
{
|
||||||
|
IconPathConverter() = default;
|
||||||
|
|
||||||
|
static Windows::UI::Xaml::Controls::IconElement IconWUX(const winrt::hstring& iconPath);
|
||||||
|
static Windows::UI::Xaml::Controls::IconSource IconSourceWUX(const winrt::hstring& iconPath);
|
||||||
|
static Microsoft::UI::Xaml::Controls::IconSource IconSourceMUX(const winrt::hstring& iconPath, bool convertToGrayscale);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::factory_implementation
|
||||||
|
{
|
||||||
|
BASIC_FACTORY(IconPathConverter);
|
||||||
|
}
|
||||||
13
src/cascadia/UIHelpers/IconPathConverter.idl
Normal file
13
src/cascadia/UIHelpers/IconPathConverter.idl
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
namespace Microsoft.Terminal.UI
|
||||||
|
{
|
||||||
|
static runtimeclass IconPathConverter
|
||||||
|
{
|
||||||
|
static Windows.UI.Xaml.Controls.IconElement IconWUX(String path);
|
||||||
|
static Windows.UI.Xaml.Controls.IconSource IconSourceWUX(String path);
|
||||||
|
static Microsoft.UI.Xaml.Controls.IconSource IconSourceMUX(String path, Boolean convertToGrayscale);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
3
src/cascadia/UIHelpers/Microsoft.Terminal.UI.def
Normal file
3
src/cascadia/UIHelpers/Microsoft.Terminal.UI.def
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
EXPORTS
|
||||||
|
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
|
||||||
|
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
|
||||||
17
src/cascadia/UIHelpers/ResourceString.cpp
Normal file
17
src/cascadia/UIHelpers/ResourceString.cpp
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "pch.h"
|
||||||
|
#include "ResourceString.h"
|
||||||
|
#include "ResourceString.g.cpp"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
|
{
|
||||||
|
winrt::Windows::Foundation::IInspectable ResourceString::ProvideValue()
|
||||||
|
{
|
||||||
|
if (tree_.empty())
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto loader{ winrt::Windows::ApplicationModel::Resources::ResourceLoader::GetForCurrentView(tree_ + L"/Resources") };
|
||||||
|
return winrt::box_value(loader.GetString(name_));
|
||||||
|
}
|
||||||
|
}
|
||||||
43
src/cascadia/UIHelpers/ResourceString.h
Normal file
43
src/cascadia/UIHelpers/ResourceString.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ResourceString.g.h"
|
||||||
|
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::implementation
|
||||||
|
{
|
||||||
|
struct ResourceString : ResourceStringT<ResourceString>
|
||||||
|
{
|
||||||
|
ResourceString() noexcept = default;
|
||||||
|
|
||||||
|
hstring Tree()
|
||||||
|
{
|
||||||
|
return tree_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Tree(hstring const& value)
|
||||||
|
{
|
||||||
|
tree_ = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
hstring Name()
|
||||||
|
{
|
||||||
|
return name_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Name(hstring const& value)
|
||||||
|
{
|
||||||
|
name_ = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
winrt::Windows::Foundation::IInspectable ProvideValue();
|
||||||
|
|
||||||
|
private:
|
||||||
|
winrt::hstring tree_;
|
||||||
|
winrt::hstring name_;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
namespace winrt::Microsoft::Terminal::UI::factory_implementation
|
||||||
|
{
|
||||||
|
struct ResourceString : ResourceStringT<ResourceString, implementation::ResourceString>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
}
|
||||||
9
src/cascadia/UIHelpers/ResourceString.idl
Normal file
9
src/cascadia/UIHelpers/ResourceString.idl
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
namespace Microsoft.Terminal.UI {
|
||||||
|
runtimeclass ResourceString : Windows.UI.Xaml.Markup.MarkupExtension
|
||||||
|
{
|
||||||
|
ResourceString();
|
||||||
|
String Tree { get; set; };
|
||||||
|
String Name { get; set; };
|
||||||
|
Object ProvideValue();
|
||||||
|
};
|
||||||
|
}
|
||||||
78
src/cascadia/UIHelpers/UIHelpers.vcxproj
Normal file
78
src/cascadia/UIHelpers/UIHelpers.vcxproj
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}</ProjectGuid>
|
||||||
|
<ProjectName>Microsoft.Terminal.UI</ProjectName>
|
||||||
|
<RootNamespace>Microsoft.Terminal.UI</RootNamespace>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<OpenConsoleUniversalApp>true</OpenConsoleUniversalApp>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="NuGet Dependencies">
|
||||||
|
<TerminalCppWinrt>true</TerminalCppWinrt>
|
||||||
|
<TerminalMUX>true</TerminalMUX>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="..\..\..\common.openconsole.props" Condition="'$(OpenConsoleDir)'==''" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\common.nugetversions.props" />
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.pre.props" />
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
<ClInclude Include="Converters.h">
|
||||||
|
<DependentUpon>Converters.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="IconPathConverter.h">
|
||||||
|
<DependentUpon>IconPathConverter.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="ResourceString.h">
|
||||||
|
<DependentUpon>ResourceString.idl</DependentUpon>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="init.cpp" />
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Converters.cpp">
|
||||||
|
<DependentUpon>Converters.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="IconPathConverter.cpp">
|
||||||
|
<DependentUpon>IconPathConverter.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="ResourceString.cpp">
|
||||||
|
<DependentUpon>ResourceString.idl</DependentUpon>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Midl Include="Converters.idl" />
|
||||||
|
<Midl Include="IconPathConverter.idl" />
|
||||||
|
<Midl Include="IDirectKeyListener.idl" />
|
||||||
|
<Midl Include="ResourceString.idl" />
|
||||||
|
</ItemGroup>
|
||||||
|
<!-- ========================= Project References ======================== -->
|
||||||
|
<ItemGroup>
|
||||||
|
<!--
|
||||||
|
the packaging project won't recurse through our dependencies, you have to
|
||||||
|
make sure that if you add a cppwinrt dependency to any of these projects,
|
||||||
|
you also update all the consumers
|
||||||
|
-->
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\types\lib\types.vcxproj">
|
||||||
|
<Project>{18D09A24-8240-42D6-8CB6-236EEE820263}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\WinRTUtils\WinRTUtils.vcxproj">
|
||||||
|
<Project>{CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}</Project>
|
||||||
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>%(AdditionalDependencies);user32.lib;shell32.lib</AdditionalDependencies>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<Import Project="$(OpenConsoleDir)src\cppwinrt.build.post.props" />
|
||||||
|
|
||||||
|
<!-- This -must- go after cppwinrt.build.post.props because that includes many VS-provided props including appcontainer.common.props, which stomps on what cppwinrt.targets did. -->
|
||||||
|
<Import Project="$(OpenConsoleDir)src\common.nugetversions.targets" />
|
||||||
|
</Project>
|
||||||
38
src/cascadia/UIHelpers/UIHelpers.vcxproj.filters
Normal file
38
src/cascadia/UIHelpers/UIHelpers.vcxproj.filters
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Resources">
|
||||||
|
<UniqueIdentifier>accd3aa8-1ba0-4223-9bbe-0c431709210b</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Generated Files">
|
||||||
|
<UniqueIdentifier>{926ab91d-31b4-48c3-b9a4-e681349f27f0}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resources\en-US">
|
||||||
|
<UniqueIdentifier>{ee3ff32f-d013-49cb-8eb9-1ec084585086}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Module">
|
||||||
|
<UniqueIdentifier>{091e7617-c506-4742-82fc-75e7ca32e2fe}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="init.cpp">
|
||||||
|
<Filter>Module</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp">
|
||||||
|
<Filter>Module</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pch.cpp">
|
||||||
|
<Filter>Module</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="pch.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Midl Include="ResourceString.idl" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Natvis Include="$(SolutionDir)tools\ConsoleTypes.natvis" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
21
src/cascadia/UIHelpers/init.cpp
Normal file
21
src/cascadia/UIHelpers/init.cpp
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
|
|
||||||
|
#pragma warning(suppress : 26440) // Not interested in changing the specification of DllMain to make it noexcept given it's an interface to the OS.
|
||||||
|
BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD reason, LPVOID /*reserved*/)
|
||||||
|
{
|
||||||
|
switch (reason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
DisableThreadLibraryCalls(hInstDll);
|
||||||
|
break;
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
4
src/cascadia/UIHelpers/pch.cpp
Normal file
4
src/cascadia/UIHelpers/pch.cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
#include "pch.h"
|
||||||
46
src/cascadia/UIHelpers/pch.h
Normal file
46
src/cascadia/UIHelpers/pch.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// Copyright (c) Microsoft Corporation.
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
//
|
||||||
|
// pch.h
|
||||||
|
// Header for platform projection include files
|
||||||
|
//
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#define NOMCX
|
||||||
|
#define NOHELP
|
||||||
|
#define NOCOMM
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#define BLOCK_TIL
|
||||||
|
#include <LibraryIncludes.h>
|
||||||
|
// This is inexplicable, but for whatever reason, cppwinrt conflicts with the
|
||||||
|
// SDK definition of this function, so the only fix is to undef it.
|
||||||
|
// from WinBase.h
|
||||||
|
// Windows::UI::Xaml::Media::Animation::IStoryboard::GetCurrentTime
|
||||||
|
#ifdef GetCurrentTime
|
||||||
|
#undef GetCurrentTime
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <wil/cppwinrt.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.ApplicationModel.Resources.h>
|
||||||
|
#include <winrt/Windows.Foundation.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.Graphics.Imaging.h>
|
||||||
|
#include <Windows.Graphics.Imaging.Interop.h>
|
||||||
|
|
||||||
|
#include <winrt/Windows.UI.Text.h>
|
||||||
|
#include <winrt/Windows.UI.Xaml.Controls.h>
|
||||||
|
#include <winrt/Windows.UI.Xaml.Markup.h>
|
||||||
|
#include <winrt/Windows.UI.Xaml.Media.h>
|
||||||
|
#include <winrt/Windows.UI.Xaml.Media.Imaging.h>
|
||||||
|
|
||||||
|
#include <winrt/Microsoft.UI.Xaml.Controls.h>
|
||||||
|
|
||||||
|
// Manually include til after we include Windows.Foundation to give it winrt superpowers
|
||||||
|
#include "til.h"
|
||||||
|
|
||||||
|
#include <cppwinrt_utils.h>
|
||||||
|
#include <wil/cppwinrt_helpers.h> // must go after the CoreDispatcher type is defined
|
||||||
@@ -42,7 +42,6 @@ Author(s):
|
|||||||
#include <winrt/Windows.system.h>
|
#include <winrt/Windows.system.h>
|
||||||
#include <winrt/Windows.Foundation.h>
|
#include <winrt/Windows.Foundation.h>
|
||||||
#include <winrt/Windows.Foundation.Collections.h>
|
#include <winrt/Windows.Foundation.Collections.h>
|
||||||
#include <Windows.Graphics.Imaging.Interop.h>
|
|
||||||
#include <winrt/windows.ui.core.h>
|
#include <winrt/windows.ui.core.h>
|
||||||
#include <winrt/Windows.ui.input.h>
|
#include <winrt/Windows.ui.input.h>
|
||||||
#include <winrt/Windows.UI.ViewManagement.h>
|
#include <winrt/Windows.UI.ViewManagement.h>
|
||||||
|
|||||||
@@ -85,6 +85,7 @@
|
|||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalControl\dll\TerminalControl.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalConnection\TerminalConnection.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalSettingsModel\dll\Microsoft.Terminal.Settings.Model.vcxproj" />
|
||||||
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\UIHelpers\UIHelpers.vcxproj" />
|
||||||
|
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalApp\dll\TerminalApp.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\TerminalApp\dll\TerminalApp.vcxproj" />
|
||||||
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj" />
|
<ProjectReference Include="$(OpenConsoleDir)src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj" />
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ Abstract:
|
|||||||
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
#include <winrt/Microsoft.Terminal.Settings.Model.h>
|
||||||
#include <winrt/Microsoft.Terminal.Remoting.h>
|
#include <winrt/Microsoft.Terminal.Remoting.h>
|
||||||
#include <winrt/Microsoft.Terminal.Control.h>
|
#include <winrt/Microsoft.Terminal.Control.h>
|
||||||
|
#include <winrt/Microsoft.Terminal.UI.h>
|
||||||
|
|
||||||
#include <wil/resource.h>
|
#include <wil/resource.h>
|
||||||
#include <wil/win32_helpers.h>
|
#include <wil/win32_helpers.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user