diff options
| author | Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> | 2023-05-22 00:16:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-22 01:16:20 +0200 |
| commit | b53e7ffd46b5c4ac5c4ac3dcc24385b2c9dc4fa4 (patch) | |
| tree | e2579164c7c81ab47413d30663224fbbd75e024b /src/Ryujinx.Ava/UI | |
| parent | ac66643346df76561ff85be741e2998290d43646 (diff) | |
Ava UI: Input Menu Redesign (#4990)
* Cleanup
* Remove redundant locales
* Start SVG Fixes…
Better +/- buttons
Fix the grips
Bumpers
Better directional pad
More SVG stuff
Grip adjustments
Final stuff
* Make image bigger
* Border radius
* More cleanup
* Restructure
* Restructure Rumble View
* Use compiled bindings where possible
* Round those pesky corners
* Ack Suggestions
* More suggestions
* Update src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs
Co-authored-by: Ac_K <Acoustik666@gmail.com>
---------
Co-authored-by: Ac_K <Acoustik666@gmail.com>
Diffstat (limited to 'src/Ryujinx.Ava/UI')
| -rw-r--r-- | src/Ryujinx.Ava/UI/ViewModels/ControllerInputViewModel.cs (renamed from src/Ryujinx.Ava/UI/ViewModels/ControllerSettingsViewModel.cs) | 11 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/ViewModels/MotionInputViewModel.cs | 93 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/ViewModels/RumbleInputViewModel.cs | 27 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml (renamed from src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml) | 602 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs (renamed from src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml.cs) | 11 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml (renamed from src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml) | 104 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs (renamed from src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml.cs) | 43 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml (renamed from src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml) | 7 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs (renamed from src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml.cs) | 37 | ||||
| -rw-r--r-- | src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml | 70 |
10 files changed, 589 insertions, 416 deletions
diff --git a/src/Ryujinx.Ava/UI/ViewModels/ControllerSettingsViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/ControllerInputViewModel.cs index dd261b10..fda58504 100644 --- a/src/Ryujinx.Ava/UI/ViewModels/ControllerSettingsViewModel.cs +++ b/src/Ryujinx.Ava/UI/ViewModels/ControllerInputViewModel.cs @@ -7,6 +7,7 @@ using Ryujinx.Ava.Common.Locale; using Ryujinx.Ava.Input; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; +using Ryujinx.Ava.UI.Views.Input; using Ryujinx.Ava.UI.Windows; using Ryujinx.Common; using Ryujinx.Common.Configuration; @@ -30,7 +31,7 @@ using Key = Ryujinx.Common.Configuration.Hid.Key; namespace Ryujinx.Ava.UI.ViewModels { - public class ControllerSettingsViewModel : BaseModel, IDisposable + public class ControllerInputViewModel : BaseModel, IDisposable { private const string Disabled = "disabled"; private const string ProControllerResource = "Ryujinx.Ui.Common/Resources/Controller_ProCon.svg"; @@ -231,7 +232,7 @@ namespace Ryujinx.Ava.UI.ViewModels public InputConfig Config { get; set; } - public ControllerSettingsViewModel(UserControl owner) : this() + public ControllerInputViewModel(UserControl owner) : this() { _owner = owner; @@ -258,7 +259,7 @@ namespace Ryujinx.Ava.UI.ViewModels } } - public ControllerSettingsViewModel() + public ControllerInputViewModel() { PlayerIndexes = new ObservableCollection<PlayerModel>(); Controllers = new ObservableCollection<ControllerModel>(); @@ -328,12 +329,12 @@ namespace Ryujinx.Ava.UI.ViewModels public async void ShowMotionConfig() { - await MotionSettingsWindow.Show(this); + await MotionInputView.Show(this); } public async void ShowRumbleConfig() { - await RumbleSettingsWindow.Show(this); + await RumbleInputView.Show(this); } private void LoadInputDriver() diff --git a/src/Ryujinx.Ava/UI/ViewModels/MotionInputViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/MotionInputViewModel.cs new file mode 100644 index 00000000..d57ccc6b --- /dev/null +++ b/src/Ryujinx.Ava/UI/ViewModels/MotionInputViewModel.cs @@ -0,0 +1,93 @@ +namespace Ryujinx.Ava.UI.ViewModels +{ + public class MotionInputViewModel : BaseModel + { + private int _slot; + public int Slot + { + get => _slot; + set + { + _slot = value; + OnPropertyChanged(); + } + } + + private int _altSlot; + public int AltSlot + { + get => _altSlot; + set + { + _altSlot = value; + OnPropertyChanged(); + } + } + + private string _dsuServerHost; + public string DsuServerHost + { + get => _dsuServerHost; + set + { + _dsuServerHost = value; + OnPropertyChanged(); + } + } + + private int _dsuServerPort; + public int DsuServerPort + { + get => _dsuServerPort; + set + { + _dsuServerPort = value; + OnPropertyChanged(); + } + } + + private bool _mirrorInput; + public bool MirrorInput + { + get => _mirrorInput; + set + { + _mirrorInput = value; + OnPropertyChanged(); + } + } + + private int _sensitivity; + public int Sensitivity + { + get => _sensitivity; + set + { + _sensitivity = value; + OnPropertyChanged(); + } + } + + private double _gryoDeadzone; + public double GyroDeadzone + { + get => _gryoDeadzone; + set + { + _gryoDeadzone = value; + OnPropertyChanged(); + } + } + + private bool _enableCemuHookMotion; + public bool EnableCemuHookMotion + { + get => _enableCemuHookMotion; + set + { + _enableCemuHookMotion = value; + OnPropertyChanged(); + } + } + } +}
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/ViewModels/RumbleInputViewModel.cs b/src/Ryujinx.Ava/UI/ViewModels/RumbleInputViewModel.cs new file mode 100644 index 00000000..2d53968f --- /dev/null +++ b/src/Ryujinx.Ava/UI/ViewModels/RumbleInputViewModel.cs @@ -0,0 +1,27 @@ +namespace Ryujinx.Ava.UI.ViewModels +{ + public class RumbleInputViewModel : BaseModel + { + private float _strongRumble; + public float StrongRumble + { + get => _strongRumble; + set + { + _strongRumble = value; + OnPropertyChanged(); + } + } + + private float _weakRumble; + public float WeakRumble + { + get => _weakRumble; + set + { + _weakRumble = value; + OnPropertyChanged(); + } + } + } +}
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml index 1a11a8ff..2395b353 100644 --- a/src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml +++ b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml @@ -1,22 +1,24 @@ <UserControl - x:Class="Ryujinx.Ava.UI.Windows.ControllerSettingsWindow" xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" d:DesignHeight="800" d:DesignWidth="800" - x:CompileBindings="False" + x:Class="Ryujinx.Ava.UI.Views.Input.ControllerInputView" + x:DataType="viewModels:ControllerInputViewModel" + x:CompileBindings="True" mc:Ignorable="d" Focusable="True"> <Design.DataContext> - <viewModels:ControllerSettingsViewModel /> + <viewModels:ControllerInputViewModel /> </Design.DataContext> <UserControl.Resources> <helpers:KeyValueConverter x:Key="Key" /> @@ -28,29 +30,23 @@ <Setter Property="HorizontalAlignment" Value="Stretch" /> </Style> </UserControl.Styles> - <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Orientation="Vertical"> - <Grid Margin="0,2,0,5" HorizontalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - - <!-- Player selection --> - <Border - Grid.Row="0" - Grid.Column="0" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - Padding="2"> + <StackPanel + Margin="0 0 0 5" + Orientation="Vertical" + Spacing="5"> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="10" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <!-- Player Selection --> <Grid + Grid.Column="0" Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Center"> @@ -79,16 +75,9 @@ </ComboBox.ItemTemplate> </ComboBox> </Grid> - </Border> - <!-- Profile selection --> - <Border - Grid.Row="1" - Grid.Column="0" - Margin="0,-1,0,0" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - Padding="2"> + <!-- Profile Selection --> <Grid + Grid.Column="2" Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Center"> @@ -120,7 +109,7 @@ Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{locale:Locale ControllerSettingsLoadProfileToolTip}" - Command="{Binding LoadProfile}"> + Command="{ReflectionBinding LoadProfile}"> <ui:SymbolIcon Symbol="Upload" FontSize="15" @@ -132,7 +121,7 @@ Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{locale:Locale ControllerSettingsSaveProfileToolTip}" - Command="{Binding SaveProfile}"> + Command="{ReflectionBinding SaveProfile}"> <ui:SymbolIcon Symbol="Save" FontSize="15" @@ -144,24 +133,26 @@ Margin="5,0,0,0" VerticalAlignment="Center" ToolTip.Tip="{locale:Locale ControllerSettingsRemoveProfileToolTip}" - Command="{Binding RemoveProfile}"> + Command="{ReflectionBinding RemoveProfile}"> <ui:SymbolIcon Symbol="Delete" FontSize="15" Height="20" /> </Button> </Grid> - </Border> - - <!-- Input device --> - <Border - Grid.Row="0" - Grid.Column="1" - Margin="-1,0,0,0" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - Padding="2"> - <Grid Margin="2" HorizontalAlignment="Stretch"> + </Grid> + <Separator /> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="*" /> + <ColumnDefinition Width="10" /> + <ColumnDefinition Width="*" /> + </Grid.ColumnDefinitions> + <!-- Input Device --> + <Grid + Grid.Column="0" + Margin="2" + HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="*"/> @@ -186,24 +177,16 @@ MinWidth="0" Margin="5,0,0,0" VerticalAlignment="Center" - Command="{Binding LoadDevices}"> + Command="{ReflectionBinding LoadDevices}"> <ui:SymbolIcon Symbol="Refresh" FontSize="15" Height="20"/> </Button> </Grid> - </Border> - - <!-- Controler type --> - <Border - Grid.Row="1" - Grid.Column="1" - Margin="-1,-1,0,0" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - Padding="2"> + <!-- Controller Type --> <Grid + Grid.Column="2" Margin="2" HorizontalAlignment="Stretch" VerticalAlignment="Center"> @@ -220,19 +203,18 @@ <ComboBox Grid.Column="1" HorizontalAlignment="Stretch" - Items="{Binding Controllers}" - SelectedIndex="{Binding Controller}"> + Items="{ReflectionBinding Controllers}" + SelectedIndex="{ReflectionBinding Controller}"> <ComboBox.ItemTemplate> - <DataTemplate> + <DataTemplate DataType="models:ControllerModel"> <TextBlock Text="{Binding Name}" /> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </Grid> - </Border> - </Grid> - - <!-- Button / JoyStick Settings --> + </Grid> + </StackPanel> + <!-- Button / JoyStick Settings --> <Grid Name="SettingButtons" MinHeight="450" @@ -242,27 +224,21 @@ <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> - - <!-- Left --> - <Grid + <!-- Left Controls --> + <StackPanel + Orientation="Vertical" Margin="0,0,5,0" - Grid.Column="0" - VerticalAlignment="Stretch" - DockPanel.Dock="Left"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - <RowDefinition Height="Auto" /> - </Grid.RowDefinitions> - - <!-- Left Triggers --> + Grid.Column="0"> + <!-- Left Triggers --> <Border - Grid.Row="0" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsLeft}" - MinHeight="90"> - <Grid Margin="10" HorizontalAlignment="Stretch"> + MinHeight="90" + CornerRadius="5"> + <Grid + Margin="10" + HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> @@ -274,7 +250,6 @@ <StackPanel Grid.Column="0" Grid.Row="0" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -284,14 +259,13 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <StackPanel Grid.Column="0" Grid.Row="1" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -301,14 +275,13 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <StackPanel Grid.Column="1" Grid.Row="1" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -318,159 +291,172 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </Grid> </Border> - - <!-- Left Joystick --> + <!-- Left Joystick --> <Border - Grid.Row="1" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsLeft}" - Margin="0,5,0,0"> - <StackPanel Margin="10" Orientation="Vertical"> + Margin="0,5,0,0" + CornerRadius="5"> + <StackPanel + Margin="10" + Orientation="Vertical"> <TextBlock Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsLStick}" /> - - <!-- Left Joystick Keyboard --> - <StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical"> - - <!-- Left Joystick Button --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Keyboard --> + <StackPanel + IsVisible="{Binding !IsController}" + Orientation="Vertical"> + <!-- Left Joystick Button --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickButton}" + Text="{locale:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left Joystick Up --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Up --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickUp}" + Text="{locale:Locale ControllerSettingsStickUp}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left Joystick Down --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Down --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickDown}" + Text="{locale:Locale ControllerSettingsStickDown}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left Joystick Left --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Left --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickLeft}" + Text="{locale:Locale ControllerSettingsStickLeft}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left Joystick Right --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Right --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickRight}" + Text="{locale:Locale ControllerSettingsStickRight}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftStickRight, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftStickRight, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> - - <!-- Left Joystick Controller --> - <StackPanel IsVisible="{Binding IsController}" Orientation="Vertical"> - - <!-- Left Joystick Button --> - <StackPanel Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Controller --> + <StackPanel + IsVisible="{Binding IsController}" + Orientation="Vertical"> + <!-- Left Joystick Button --> + <StackPanel + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickButton}" + Text="{locale:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left Joystick Stick --> - <StackPanel Margin="0,4,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left Joystick Stick --> + <StackPanel + Margin="0,4,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickStick}" + Text="{locale:Locale ControllerSettingsStickStick}" TextAlignment="Center" /> <ToggleButton Tag="stick"> <TextBlock - Text="{Binding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - <Separator Margin="0,8,0,8" Height="1" /> - <CheckBox IsChecked="{Binding Configuration.LeftInvertStickX}"> - <TextBlock Text="{locale:Locale ControllerSettingsLStickInvertXAxis}" /> + <Separator + Margin="0,8,0,8" + Height="1" /> + <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickX}"> + <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" /> </CheckBox> - <CheckBox IsChecked="{Binding Configuration.LeftInvertStickY}"> - <TextBlock Text="{locale:Locale ControllerSettingsLStickInvertYAxis}" /> + <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickY}"> + <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" /> </CheckBox> - <CheckBox IsChecked="{Binding Configuration.LeftRotate90}"> + <CheckBox IsChecked="{ReflectionBinding Configuration.LeftRotate90}"> <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> </CheckBox> - <Separator Margin="0,8,0,8" Height="1" /> + <Separator + Margin="0,8,0,8" + Height="1" /> <StackPanel Orientation="Vertical"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsLStickDeadzone}" /> + <TextBlock + HorizontalAlignment="Center" + Text="{locale:Locale ControllerSettingsStickDeadzone}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" @@ -481,14 +467,14 @@ TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" - Value="{Binding Configuration.DeadzoneLeft, Mode=TwoWay}" /> + Value="{ReflectionBinding Configuration.DeadzoneLeft, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Width="25" - Text="{Binding Configuration.DeadzoneLeft, StringFormat=\{0:0.00\}}" /> + Text="{ReflectionBinding Configuration.DeadzoneLeft, StringFormat=\{0:0.00\}}" /> </StackPanel> - <TextBlock - HorizontalAlignment="Center" + <TextBlock + HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsStickRange}" /> <StackPanel HorizontalAlignment="Center" @@ -500,33 +486,36 @@ TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" - Value="{Binding Configuration.RangeLeft, Mode=TwoWay}" /> + Value="{ReflectionBinding Configuration.RangeLeft, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Width="25" - Text="{Binding Configuration.RangeLeft, StringFormat=\{0:0.00\}}" /> + Text="{ReflectionBinding Configuration.RangeLeft, StringFormat=\{0:0.00\}}" /> </StackPanel> </StackPanel> </StackPanel> </StackPanel> </Border> - - <!-- Left DPad --> + <!-- Left DPad --> <Border - Grid.Row="2" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" VerticalAlignment="Top" IsVisible="{Binding IsLeft}" - Margin="0,5,0,0"> - <StackPanel Margin="10" Orientation="Vertical"> + Margin="0,5,0,0" + CornerRadius="5"> + <StackPanel + Margin="10" + Orientation="Vertical"> <TextBlock Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsDPad}" /> <StackPanel Orientation="Vertical"> - <!-- Left DPad Up --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left DPad Up --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" @@ -534,16 +523,16 @@ VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadUp}" TextAlignment="Center" /> - <ToggleButton - HorizontalAlignment="Stretch"> + <ToggleButton> <TextBlock - Text="{Binding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left DPad Down --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left DPad Down --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" @@ -551,16 +540,16 @@ VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadDown}" TextAlignment="Center" /> - <ToggleButton - HorizontalAlignment="Stretch"> + <ToggleButton> <TextBlock - Text="{Binding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left DPad Left --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left DPad Left --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" @@ -568,16 +557,16 @@ VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadLeft}" TextAlignment="Center" /> - <ToggleButton - HorizontalAlignment="Stretch"> + <ToggleButton> <TextBlock - Text="{Binding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Left DPad Right --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Left DPad Right --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" @@ -585,42 +574,50 @@ VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadRight}" TextAlignment="Center" /> - <ToggleButton - HorizontalAlignment="Stretch"> + <ToggleButton> <TextBlock - Text="{Binding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> </StackPanel> </Border> - </Grid> - - <!-- Triggers And Side Buttons--> - <StackPanel Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> + </StackPanel> + <!-- Triggers & Side Buttons --> + <StackPanel + Grid.Column="1" + HorizontalAlignment="Stretch" + VerticalAlignment="Stretch"> <Border BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" MinHeight="90"> - <StackPanel Margin="8" Orientation="Vertical"> - <TextBlock HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerThreshold}" /> - <StackPanel HorizontalAlignment="Center" Orientation="Horizontal"> + BorderThickness="1" + CornerRadius="5" + MinHeight="90"> + <StackPanel + Margin="8" + Orientation="Vertical"> + <TextBlock + HorizontalAlignment="Center" + Text="{locale:Locale ControllerSettingsTriggerThreshold}" /> + <StackPanel + HorizontalAlignment="Center" + Orientation="Horizontal"> <Slider Width="130" Maximum="1" TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" - Value="{Binding Configuration.TriggerThreshold, Mode=TwoWay}" /> + Value="{ReflectionBinding Configuration.TriggerThreshold, Mode=TwoWay}" /> <TextBlock Width="25" - Text="{Binding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" /> + Text="{ReflectionBinding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" /> </StackPanel> <StackPanel Margin="0,4,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" - Background="{DynamicResource ThemeDarkColor}" IsVisible="{Binding !IsRight}" Orientation="Horizontal"> <TextBlock @@ -631,7 +628,7 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> @@ -640,7 +637,6 @@ HorizontalAlignment="Center" VerticalAlignment="Center" IsVisible="{Binding !IsRight}" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -650,7 +646,7 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.LeftButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.LeftButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> @@ -659,7 +655,6 @@ HorizontalAlignment="Center" VerticalAlignment="Center" IsVisible="{Binding !IsLeft}" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -669,7 +664,7 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> @@ -678,7 +673,6 @@ HorizontalAlignment="Center" VerticalAlignment="Center" IsVisible="{Binding !IsLeft}" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -688,26 +682,29 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> </Border> - - <!-- Controller Picture --> + <!-- Controller Picture --> <Image Margin="0,10,0,0" - MaxHeight="250" + MaxHeight="300" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="{Binding Image}" /> - - <!-- Motion+Rumble --> - <StackPanel Margin="0,10,0,0" Orientation="Vertical" VerticalAlignment="Bottom"> + <!-- Motion + Rumble --> + <StackPanel + Margin="0,10,0,0" + Spacing="5" + Orientation="Vertical" + VerticalAlignment="Bottom"> <Border BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" + CornerRadius="5" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" IsVisible="{Binding IsController}"> @@ -720,10 +717,13 @@ Margin="10" MinWidth="0" Grid.Column="0" - IsChecked="{Binding Configuration.EnableMotion, Mode=TwoWay}"> + IsChecked="{ReflectionBinding Configuration.EnableMotion, Mode=TwoWay}"> <TextBlock Text="{locale:Locale ControllerSettingsMotion}" /> </CheckBox> - <Button Margin="10" Grid.Column="1" Command="{Binding ShowMotionConfig}"> + <Button + Margin="10" + Grid.Column="1" + Command="{ReflectionBinding ShowMotionConfig}"> <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> </Button> </Grid> @@ -731,6 +731,7 @@ <Border BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" + CornerRadius="5" HorizontalAlignment="Stretch" IsVisible="{Binding IsController}" Margin="0,-1,0,0"> @@ -743,36 +744,34 @@ Margin="10" MinWidth="0" Grid.Column="0" - IsChecked="{Binding Configuration.EnableRumble, Mode=TwoWay}"> + IsChecked="{ReflectionBinding Configuration.EnableRumble, Mode=TwoWay}"> <TextBlock Text="{locale:Locale ControllerSettingsRumble}" /> </CheckBox> - <Button Margin="10" Grid.Column="1" Command="{Binding ShowRumbleConfig}"> + <Button + Margin="10" + Grid.Column="1" + Command="{ReflectionBinding ShowRumbleConfig}"> <TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" /> </Button> </Grid> </Border> </StackPanel> </StackPanel> - - <!--Right Controls--> - <Grid + <!-- Right Controls --> + <StackPanel + Orientation="Vertical" Margin="5,0,0,0" - Grid.Column="2" - VerticalAlignment="Top" - HorizontalAlignment="Stretch" > - <Grid.RowDefinitions> - <RowDefinition /> - <RowDefinition /> - <RowDefinition /> - <RowDefinition /> - </Grid.RowDefinitions> + Grid.Column="2"> + <!-- Right Triggers --> <Border - Grid.Row="0" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsRight}" - MinHeight="90"> - <Grid Margin="10" HorizontalAlignment="Stretch"> + MinHeight="90" + CornerRadius="5"> + <Grid + Margin="10" + HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> @@ -784,7 +783,6 @@ <StackPanel Grid.Column="1" Grid.Row="0" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -794,7 +792,7 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> @@ -803,7 +801,6 @@ Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -813,7 +810,7 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> @@ -822,7 +819,6 @@ Grid.Row="1" HorizontalAlignment="Right" VerticalAlignment="Center" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" @@ -832,28 +828,31 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </Grid> </Border> + <!-- Right Joystick --> <Border - Grid.Row="1" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsRight}" - Margin="0,5,0,0"> - <StackPanel Margin="10" Orientation="Vertical"> + Margin="0,5,0,0" + CornerRadius="5"> + <StackPanel + Margin="10" + Orientation="Vertical"> <TextBlock Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsButtons}" /> - <StackPanel Orientation="Vertical"> - <!-- Right Buttons A --> + <StackPanel + Orientation="Vertical"> + <!-- Right Buttons A --> <StackPanel Margin="0,0,0,4" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="120" @@ -864,14 +863,13 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - <!-- Right Buttons B --> + <!-- Right Buttons B --> <StackPanel Margin="0,0,0,4" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="120" @@ -882,14 +880,13 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - <!-- Right Buttons X --> + <!-- Right Buttons X --> <StackPanel Margin="0,0,0,4" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="120" @@ -900,14 +897,13 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - <!-- Right Buttons Y --> + <!-- Right Buttons Y --> <StackPanel Margin="0,0,0,4" - Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="120" @@ -918,18 +914,19 @@ TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> </StackPanel> </Border> + <!-- Right DPad --> <Border - Grid.Row="2" Padding="10" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" + CornerRadius="5" IsVisible="{Binding IsRight}" Margin="0,5,0,0"> <StackPanel Orientation="Vertical"> @@ -937,141 +934,149 @@ Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsRStick}" /> - - <!-- Right Joystick Keyboard --> - <StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical"> - - <!-- Right Joystick Button --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Keyboard --> + <StackPanel + IsVisible="{Binding !IsController}" + Orientation="Vertical"> + <!-- Right Joystick Button --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickButton}" + Text="{locale:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Right Joystick Up --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Up --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickUp}" + Text="{locale:Locale ControllerSettingsStickUp}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Right Joystick Down --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Down --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickDown}" + Text="{locale:Locale ControllerSettingsStickDown}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Right Joystick Left --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Left --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickLeft}" + Text="{locale:Locale ControllerSettingsStickLeft}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - <!-- Right Joystick Right --> - <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Right --> + <StackPanel + Margin="0,0,0,4" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickRight}" + Text="{locale:Locale ControllerSettingsStickRight}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightStickRight, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightStickRight, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> - - <!-- Right Joystick Controller --> - <StackPanel IsVisible="{Binding IsController}" Orientation="Vertical"> - - <!-- Right Joystick Button --> - <StackPanel Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Controller --> + <StackPanel + IsVisible="{Binding IsController}" + Orientation="Vertical"> + <!-- Right Joystick Button --> + <StackPanel + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickButton}" + Text="{locale:Locale ControllerSettingsStickButton}" TextAlignment="Center" /> <ToggleButton> <TextBlock - Text="{Binding Configuration.RightControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> - - - <!-- Right Joystick Stick --> - <StackPanel Margin="0,4,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> + <!-- Right Joystick Stick --> + <StackPanel + Margin="0,4,0,4" + Background="{DynamicResource ThemeDarkColor}" + Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickStick}" + Text="{locale:Locale ControllerSettingsStickStick}" TextAlignment="Center" /> <ToggleButton Tag="stick"> <TextBlock - Text="{Binding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}" + Text="{ReflectionBinding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <Separator Margin="0,8,0,8" Height="1" /> - <CheckBox IsChecked="{Binding Configuration.RightInvertStickX}"> - <TextBlock Text="{locale:Locale ControllerSettingsRStickInvertXAxis}" /> + <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickX}"> + <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" /> </CheckBox> - <CheckBox IsChecked="{Binding Configuration.RightInvertStickY}"> - <TextBlock Text="{locale:Locale ControllerSettingsRStickInvertYAxis}" /> + <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickY}"> + <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" /> </CheckBox> - <CheckBox IsChecked="{Binding Configuration.RightRotate90}"> + <CheckBox IsChecked="{ReflectionBinding Configuration.RightRotate90}"> <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> </CheckBox> <Separator Margin="0,8,0,8" Height="1" /> <StackPanel Orientation="Vertical"> - <TextBlock - HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsRStickDeadzone}" /> + <TextBlock + HorizontalAlignment="Center" + Text="{locale:Locale ControllerSettingsStickDeadzone}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" @@ -1084,14 +1089,14 @@ Padding="0" VerticalAlignment="Center" Minimum="0" - Value="{Binding Configuration.DeadzoneRight, Mode=TwoWay}" /> + Value="{ReflectionBinding Configuration.DeadzoneRight, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Width="25" - Text="{Binding Configuration.DeadzoneRight, StringFormat=\{0:0.00\}}" /> + Text="{ReflectionBinding Configuration.DeadzoneRight, StringFormat=\{0:0.00\}}" /> </StackPanel> - <TextBlock - HorizontalAlignment="Center" + <TextBlock + HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsStickRange}" /> <StackPanel HorizontalAlignment="Center" @@ -1103,20 +1108,17 @@ TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" - Value="{Binding Configuration.RangeRight, Mode=TwoWay}" /> + Value="{ReflectionBinding Configuration.RangeRight, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Width="25" - Text="{Binding Configuration.RangeRight, StringFormat=\{0:0.00\}}" /> + Text="{ReflectionBinding Configuration.RangeRight, StringFormat=\{0:0.00\}}" /> </StackPanel> </StackPanel> </StackPanel> </StackPanel> </Border> - </Grid> - + </StackPanel> </Grid> - </StackPanel> - </UserControl>
\ No newline at end of file diff --git a/src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs index 2864b6da..8fe7b941 100644 --- a/src/Ryujinx.Ava/UI/Windows/ControllerSettingsWindow.axaml.cs +++ b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs @@ -4,7 +4,6 @@ using Avalonia.Input; using Avalonia.Interactivity; using Avalonia.LogicalTree; using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Controls; using Ryujinx.Ava.UI.Helpers; using Ryujinx.Ava.UI.Models; using Ryujinx.Ava.UI.ViewModels; @@ -13,18 +12,18 @@ using Ryujinx.Input; using Ryujinx.Input.Assigner; using System; -namespace Ryujinx.Ava.UI.Windows +namespace Ryujinx.Ava.UI.Views.Input { - public partial class ControllerSettingsWindow : UserControl + public partial class ControllerInputView : UserControl { private bool _dialogOpen; private ButtonKeyAssigner _currentAssigner; - internal ControllerSettingsViewModel ViewModel { get; set; } + internal ControllerInputViewModel ViewModel { get; set; } - public ControllerSettingsWindow() + public ControllerInputView() { - DataContext = ViewModel = new ControllerSettingsViewModel(this); + DataContext = ViewModel = new ControllerInputViewModel(this); InitializeComponent(); diff --git a/src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml index 862998ac..b1832437 100644 --- a/src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml +++ b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml @@ -1,12 +1,15 @@ -<UserControl +<UserControl xmlns="https://github.com/avaloniaui" 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:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia" xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" mc:Ignorable="d" - x:Class="Ryujinx.Ava.UI.Windows.MotionSettingsWindow" + x:Class="Ryujinx.Ava.UI.Views.Input.MotionInputView" + x:CompileBindings="True" + x:DataType="viewModels:MotionInputViewModel" Focusable="True"> <Grid Margin="10"> <Grid.RowDefinitions> @@ -14,7 +17,9 @@ <RowDefinition /> </Grid.RowDefinitions> <StackPanel Orientation="Vertical"> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> + <StackPanel + Orientation="Horizontal" + HorizontalAlignment="Center"> <TextBlock Margin="0" HorizontalAlignment="Center" @@ -28,11 +33,14 @@ Maximum="100" Minimum="0" Value="{Binding Sensitivity, Mode=TwoWay}" /> - <TextBlock HorizontalAlignment="Center" - Margin="5, 0" - Text="{Binding Sensitivity, StringFormat=\{0:0\}%}" /> + <TextBlock + HorizontalAlignment="Center" + Margin="5, 0" + Text="{Binding Sensitivity, StringFormat=\{0:0\}%}" /> </StackPanel> - <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> + <StackPanel + Orientation="Horizontal" + HorizontalAlignment="Center"> <TextBlock Margin="0" HorizontalAlignment="Center" @@ -51,17 +59,25 @@ Margin="5, 0" Text="{Binding GyroDeadzone, StringFormat=\{0:0.00\}}" /> </StackPanel> - <Separator Height="1" Margin="0,5" /> - <CheckBox Margin="5" IsChecked="{Binding EnableCemuHookMotion}"> - <TextBlock Margin="0,3,0,0" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" /> + <Separator + Height="1" + Margin="0,5" /> + <CheckBox + Margin="5" + IsChecked="{Binding EnableCemuHookMotion}"> + <TextBlock + Margin="0,3,0,0" + VerticalAlignment="Center" + Text="{locale:Locale ControllerSettingsMotionUseCemuhookCompatibleMotion}" /> </CheckBox> </StackPanel> - <Border Grid.Row="1" - Padding="20,5" - BorderBrush="{DynamicResource ThemeControlBorderColor}" - BorderThickness="1" - HorizontalAlignment="Stretch"> + <Border + Grid.Row="1" + Padding="20,5" + BorderBrush="{DynamicResource ThemeControlBorderColor}" + BorderThickness="1" + CornerRadius="5" + HorizontalAlignment="Stretch"> <Grid VerticalAlignment="Top"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> @@ -109,30 +125,42 @@ <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> - <TextBlock Margin="0,10,0,0" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionControllerSlot}" /> - <ui:NumberBox Grid.Row="0" Grid.Column="1" - Name="CemuHookSlotUpDown" - SmallChange="1" - LargeChange="1" - Maximum="4" - Minimum="0" - Value="{Binding Slot}" /> - <TextBlock Margin="0,10,0,0" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionRightJoyConSlot}" /> - <ui:NumberBox Grid.Row="1" Grid.Column="1" - Name="CemuHookRightJoyConSlotUpDown" - SmallChange="1" - LargeChange="1" - Maximum="4" - Minimum="0" - Value="{Binding AltSlot}" /> + <TextBlock + Margin="0,10,0,0" + VerticalAlignment="Center" + Text="{locale:Locale ControllerSettingsMotionControllerSlot}" /> + <ui:NumberBox + Grid.Row="0" + Grid.Column="1" + Name="CemuHookSlotUpDown" + SmallChange="1" + LargeChange="1" + Maximum="4" + Minimum="0" + Value="{Binding Slot}" /> + <TextBlock + Margin="0,10,0,0" + Grid.Row="1" + Grid.Column="0" + VerticalAlignment="Center" + Text="{locale:Locale ControllerSettingsMotionRightJoyConSlot}" /> + <ui:NumberBox + Grid.Row="1" + Grid.Column="1" + Name="CemuHookRightJoyConSlotUpDown" + SmallChange="1" + LargeChange="1" + Maximum="4" + Minimum="0" + Value="{Binding AltSlot}" /> </Grid> </StackPanel> - <CheckBox HorizontalAlignment="Center" - IsChecked="{Binding MirrorInput, Mode=TwoWay}"> - <TextBlock HorizontalAlignment="Center" - Text="{locale:Locale ControllerSettingsMotionMirrorInput}" /> + <CheckBox + HorizontalAlignment="Center" + IsChecked="{Binding MirrorInput, Mode=TwoWay}"> + <TextBlock + HorizontalAlignment="Center" + Text="{locale:Locale ControllerSettingsMotionMirrorInput}" /> </CheckBox> </StackPanel> </Grid> diff --git a/src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs index c686e7c3..88bbcd93 100644 --- a/src/Ryujinx.Ava/UI/Windows/MotionSettingsWindow.axaml.cs +++ b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs @@ -6,44 +6,42 @@ using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Common.Configuration.Hid.Controller; using System.Threading.Tasks; -namespace Ryujinx.Ava.UI.Windows +namespace Ryujinx.Ava.UI.Views.Input { - public partial class MotionSettingsWindow : UserControl + public partial class MotionInputView : UserControl { - private readonly InputConfiguration<GamepadInputId, StickInputId> _viewmodel; + private MotionInputViewModel _viewModel; - public MotionSettingsWindow() + public MotionInputView() { InitializeComponent(); - DataContext = _viewmodel; } - public MotionSettingsWindow(ControllerSettingsViewModel viewmodel) + public MotionInputView(ControllerInputViewModel viewModel) { - var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; + var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - _viewmodel = new InputConfiguration<GamepadInputId, StickInputId>() + _viewModel = new MotionInputViewModel { Slot = config.Slot, AltSlot = config.AltSlot, DsuServerHost = config.DsuServerHost, DsuServerPort = config.DsuServerPort, MirrorInput = config.MirrorInput, - EnableMotion = config.EnableMotion, Sensitivity = config.Sensitivity, GyroDeadzone = config.GyroDeadzone, EnableCemuHookMotion = config.EnableCemuHookMotion }; InitializeComponent(); - DataContext = _viewmodel; + DataContext = _viewModel; } - public static async Task Show(ControllerSettingsViewModel viewmodel) + public static async Task Show(ControllerInputViewModel viewModel) { - MotionSettingsWindow content = new MotionSettingsWindow(viewmodel); + MotionInputView content = new(viewModel); - ContentDialog contentDialog = new ContentDialog + ContentDialog contentDialog = new() { Title = LocaleManager.Instance[LocaleKeys.ControllerMotionTitle], PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], @@ -53,16 +51,15 @@ namespace Ryujinx.Ava.UI.Windows }; contentDialog.PrimaryButtonClick += (sender, args) => { - var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - config.Slot = content._viewmodel.Slot; - config.EnableMotion = content._viewmodel.EnableMotion; - config.Sensitivity = content._viewmodel.Sensitivity; - config.GyroDeadzone = content._viewmodel.GyroDeadzone; - config.AltSlot = content._viewmodel.AltSlot; - config.DsuServerHost = content._viewmodel.DsuServerHost; - config.DsuServerPort = content._viewmodel.DsuServerPort; - config.EnableCemuHookMotion = content._viewmodel.EnableCemuHookMotion; - config.MirrorInput = content._viewmodel.MirrorInput; + var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; + config.Slot = content._viewModel.Slot; + config.Sensitivity = content._viewModel.Sensitivity; + config.GyroDeadzone = content._viewModel.GyroDeadzone; + config.AltSlot = content._viewModel.AltSlot; + config.DsuServerHost = content._viewModel.DsuServerHost; + config.DsuServerPort = content._viewModel.DsuServerPort; + config.EnableCemuHookMotion = content._viewModel.EnableCemuHookMotion; + config.MirrorInput = content._viewModel.MirrorInput; }; await contentDialog.ShowAsync(); diff --git a/src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml index e47cc5bd..3882ebe2 100644 --- a/src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml +++ b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml @@ -1,11 +1,14 @@ -<UserControl +<UserControl xmlns="https://github.com/avaloniaui" 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:locale="clr-namespace:Ryujinx.Ava.Common.Locale" + xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" mc:Ignorable="d" - x:Class="Ryujinx.Ava.UI.Windows.RumbleSettingsWindow" + x:Class="Ryujinx.Ava.UI.Views.Input.RumbleInputView" + x:DataType="viewModels:RumbleInputViewModel" + x:CompileBindings="True" Focusable="True"> <Grid Margin="10"> <Grid.RowDefinitions> diff --git a/src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs index 178109d6..dfe05b08 100644 --- a/src/Ryujinx.Ava/UI/Windows/RumbleSettingsWindow.axaml.cs +++ b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs @@ -6,36 +6,37 @@ using Ryujinx.Ava.UI.ViewModels; using Ryujinx.Common.Configuration.Hid.Controller; using System.Threading.Tasks; -namespace Ryujinx.Ava.UI.Windows +namespace Ryujinx.Ava.UI.Views.Input { - public partial class RumbleSettingsWindow : UserControl + public partial class RumbleInputView : UserControl { - private readonly InputConfiguration<GamepadInputId, StickInputId> _viewmodel; + private RumbleInputViewModel _viewModel; - public RumbleSettingsWindow() + public RumbleInputView() { InitializeComponent(); - DataContext = _viewmodel; } - public RumbleSettingsWindow(ControllerSettingsViewModel viewmodel) + public RumbleInputView(ControllerInputViewModel viewModel) { - var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; + var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - _viewmodel = new InputConfiguration<GamepadInputId, StickInputId>() + _viewModel = new RumbleInputViewModel { - StrongRumble = config.StrongRumble, WeakRumble = config.WeakRumble + StrongRumble = config.StrongRumble, + WeakRumble = config.WeakRumble }; InitializeComponent(); - DataContext = _viewmodel; + + DataContext = _viewModel; } - public static async Task Show(ControllerSettingsViewModel viewmodel) + public static async Task Show(ControllerInputViewModel viewModel) { - RumbleSettingsWindow content = new RumbleSettingsWindow(viewmodel); + RumbleInputView content = new(viewModel); - ContentDialog contentDialog = new ContentDialog + ContentDialog contentDialog = new() { Title = LocaleManager.Instance[LocaleKeys.ControllerRumbleTitle], PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], @@ -43,14 +44,14 @@ namespace Ryujinx.Ava.UI.Windows CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], Content = content, }; - + contentDialog.PrimaryButtonClick += (sender, args) => { - var config = viewmodel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; - config.StrongRumble = content._viewmodel.StrongRumble; - config.WeakRumble = content._viewmodel.WeakRumble; + var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>; + config.StrongRumble = content._viewModel.StrongRumble; + config.WeakRumble = content._viewModel.WeakRumble; }; - + await contentDialog.ShowAsync(); } } diff --git a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml b/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml index 1c774bda..22ff38f5 100644 --- a/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml +++ b/src/Ryujinx.Ava/UI/Views/Settings/SettingsInputView.axaml @@ -1,11 +1,11 @@ -<UserControl +<UserControl x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsInputView" xmlns="https://github.com/avaloniaui" 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:locale="clr-namespace:Ryujinx.Ava.Common.Locale" - xmlns:window="clr-namespace:Ryujinx.Ava.UI.Windows" + xmlns:views="clr-namespace:Ryujinx.Ava.UI.Views.Input" xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels" mc:Ignorable="d" x:CompileBindings="True" @@ -13,34 +13,56 @@ <Design.DataContext> <viewModels:SettingsViewModel /> </Design.DataContext> - <ScrollViewer + <ScrollViewer Name="InputPage" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> <Border Classes="settings"> - <StackPanel Margin="4" Orientation="Vertical"> - <StackPanel Orientation="Horizontal"> - <CheckBox Margin="5,0" - ToolTip.Tip="{locale:Locale DockModeToggleTooltip}" - IsChecked="{Binding EnableDockedMode}"> - <TextBlock VerticalAlignment="Center" - Text="{locale:Locale SettingsTabInputEnableDockedMode}" /> - </CheckBox> - <CheckBox Margin="5,0" - ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}" - IsChecked="{Binding EnableKeyboard}"> - <TextBlock Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" /> - </CheckBox> - <CheckBox Margin="5,0" - ToolTip.Tip="{locale:Locale DirectMouseTooltip}" - IsChecked="{Binding EnableMouse}"> - <TextBlock Text="{locale:Locale SettingsTabInputDirectMouseAccess}" /> - </CheckBox> - </StackPanel> - <window:ControllerSettingsWindow Name="ControllerSettings" Margin="0" MinHeight="600" /> - </StackPanel> + <Panel + Margin="10"> + <Grid> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"/> + <RowDefinition Height="*" /> + <RowDefinition Height="Auto" /> + </Grid.RowDefinitions> + <views:ControllerInputView + Grid.Row="0" + Name="ControllerSettings" /> + <StackPanel + Orientation="Vertical" + Grid.Row="2"> + <Separator + Margin="0 10" + Height="1" /> + <StackPanel + Orientation="Horizontal" + Spacing="10"> + <CheckBox + ToolTip.Tip="{locale:Locale DockModeToggleTooltip}" + MinWidth="0" + IsChecked="{Binding EnableDockedMode}"> + <TextBlock + Text="{locale:Locale SettingsTabInputEnableDockedMode}" /> + </CheckBox> + <CheckBox + ToolTip.Tip="{locale:Locale DirectKeyboardTooltip}" + IsChecked="{Binding EnableKeyboard}"> + <TextBlock + Text="{locale:Locale SettingsTabInputDirectKeyboardAccess}" /> + </CheckBox> + <CheckBox + ToolTip.Tip="{locale:Locale DirectMouseTooltip}" + IsChecked="{Binding EnableMouse}"> + <TextBlock + Text="{locale:Locale SettingsTabInputDirectMouseAccess}" /> + </CheckBox> + </StackPanel> + </StackPanel> + </Grid> + </Panel> </Border> </ScrollViewer> </UserControl>
\ No newline at end of file |
