* Added new command wrapper, abstracts static and dynamic commands - All uses of the `Command` are replaced with either `AppCommand`, for a command that is static to the scope of the application, or a reference to an ICommand (specifically, an `EnumCommand<AppCommand>()` instance), which provides the abstract wrapper. - Functionality seems intact. - Next step is to have the MainViewModel add the per-shell commands via SettingsService.CreateShellKeyboardShortcuts(), and have the SettingsService.ParseCommandString() function parse the command strings passed around properly. - Finally, add the keyboard chord input to each shell's settings page. * First kick at adding a new terminal keyboard command. - It isn't presented anywhere, but references to keybindings should be using the ICommand key as their identifier for recognizing anything, and when xterm passes back a keyboard command event, the SettingsService is asked to convert the string into an ICommand. * Renaming ICommand to Command. It's not longer an interface, so this makes more sense. * Renaming back to Command, and new class is AbstractCommand. Going to simplify the PR diff considerably. * Shortcuts for default shells work. Need to get the shell profile edit UI elements working. * Added keyboard shortcut UI elements to shell profile pages. * New and deleted shell profiles propagate to all terminal views. * A bit of cleanup. * Camel-casing command text to fix Ctrl+C and copy behaviour. * Fixed failing test. The new on disk store uses a .ToString(), not the Enum description, since the command isn't an Enum, it's a class now in general, and those semantics make more sense. * Adding default value for null keybindings in shell profiles. * Merge branch 'shell_commands' of https://github.com/Riebart/FluentTerminal into pr/85 Improved default value for keybinding property * Renamed KeyBinding collection to KeyBindings * Use strings as Command parameter of KeyBinding * Added missing Commands to keyBindings of default shellProfiles * fix build and unit tests after merge with master * improve UI * Split OnShellProfileCollectionChanged event
99 lines
5.0 KiB
XML
99 lines
5.0 KiB
XML
<UserControl
|
|
x:Class="FluentTerminal.App.Views.KeyBindingsView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:settings="using:FluentTerminal.App.ViewModels.Settings"
|
|
d:DesignHeight="300"
|
|
d:DesignWidth="400"
|
|
mc:Ignorable="d">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
<TextBlock
|
|
Grid.Column="0"
|
|
Width="180"
|
|
Margin="0,6,24,0"
|
|
Text="{x:Bind ViewModel.CommandName, Mode=OneWay}"
|
|
Visibility="{x:Bind ShowCommandName, Mode=OneWay}" />
|
|
<ItemsControl Grid.Column="1" ItemsSource="{x:Bind ViewModel.KeyBindings, Mode=OneWay}">
|
|
<ItemsControl.ItemTemplate>
|
|
<DataTemplate x:DataType="settings:KeyBindingViewModel">
|
|
<StackPanel
|
|
x:Name="Root"
|
|
Margin="0,0,0,6"
|
|
Orientation="Horizontal">
|
|
<Grid
|
|
Width="48"
|
|
Height="32"
|
|
Margin="0,0,6,0"
|
|
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
|
|
Visibility="{x:Bind Ctrl, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
|
|
<TextBlock
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Text="Ctrl" />
|
|
</Grid>
|
|
<Grid
|
|
Width="48"
|
|
Height="32"
|
|
Margin="0,0,6,0"
|
|
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
|
|
Visibility="{x:Bind Meta, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
|
|
<FontIcon
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
FontFamily="/Assets/settingsicons.ttf#settingsicons"
|
|
Glyph="f" />
|
|
</Grid>
|
|
<Grid
|
|
Width="48"
|
|
Height="32"
|
|
Margin="0,0,6,0"
|
|
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
|
|
Visibility="{x:Bind Alt, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
|
|
<TextBlock
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Text="Alt" />
|
|
</Grid>
|
|
<Grid
|
|
Width="48"
|
|
Height="32"
|
|
Margin="0,0,6,0"
|
|
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
|
|
Visibility="{x:Bind Shift, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
|
|
<TextBlock
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Text="Shift" />
|
|
</Grid>
|
|
<Grid
|
|
Width="64"
|
|
Height="32"
|
|
Margin="0,0,6,0"
|
|
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}">
|
|
<TextBlock
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Center"
|
|
Text="{x:Bind Key, Mode=OneWay, Converter={StaticResource IntToExtendedVirtualKeyConverter}}" />
|
|
</Grid>
|
|
<HyperlinkButton
|
|
Margin="12,0,0,0"
|
|
Command="{x:Bind EditCommand}"
|
|
Content="Edit"
|
|
Visibility="{x:Bind Parent.Editable, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}" />
|
|
<HyperlinkButton
|
|
Margin="12,0,0,0"
|
|
Command="{x:Bind DeleteCommand}"
|
|
Content="Delete"
|
|
Visibility="{x:Bind Parent.Editable, Converter={StaticResource TrueToVisibleConverter}, Mode=OneWay}" />
|
|
</StackPanel>
|
|
</DataTemplate>
|
|
</ItemsControl.ItemTemplate>
|
|
</ItemsControl>
|
|
</Grid>
|
|
</UserControl> |