From ec6cb0abb4b7669895b6e96fd7581c93b5abd691 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Sat, 2 Mar 2024 12:51:05 +0100 Subject: infra: Make Avalonia the default UI (#6375) * misc: Move Ryujinx project to Ryujinx.Gtk3 This breaks release CI for now but that's fine. Signed-off-by: Mary Guillemard * misc: Move Ryujinx.Ava project to Ryujinx This breaks CI for now, but it's fine. Signed-off-by: Mary Guillemard * infra: Make Avalonia the default UI Should fix CI after the previous changes. GTK3 isn't build by the release job anymore, only by PR CI. This also ensure that the test-ava update package is still generated to allow update from the old testing channel. Signed-off-by: Mary Guillemard * Fix missing copy in create_app_bundle.sh Signed-off-by: Mary Guillemard * Fix syntax error Signed-off-by: Mary Guillemard --------- Signed-off-by: Mary Guillemard --- .../UI/Views/Input/ControllerInputView.axaml | 1130 -------------------- .../UI/Views/Input/ControllerInputView.axaml.cs | 181 ---- .../UI/Views/Input/MotionInputView.axaml | 171 --- .../UI/Views/Input/MotionInputView.axaml.cs | 68 -- .../UI/Views/Input/RumbleInputView.axaml | 62 -- .../UI/Views/Input/RumbleInputView.axaml.cs | 58 - 6 files changed, 1670 deletions(-) delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml delete mode 100644 src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs (limited to 'src/Ryujinx.Ava/UI/Views/Input') diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml deleted file mode 100644 index 99f2b6b6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml +++ /dev/null @@ -1,1130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs deleted file mode 100644 index 35129706..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/ControllerInputView.axaml.cs +++ /dev/null @@ -1,181 +0,0 @@ -using Avalonia.Controls; -using Avalonia.Controls.Primitives; -using Avalonia.Input; -using Avalonia.Interactivity; -using Avalonia.LogicalTree; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Helpers; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using Ryujinx.Input; -using Ryujinx.Input.Assigner; -using System; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class ControllerInputView : UserControl - { - private bool _dialogOpen; - - private ButtonKeyAssigner _currentAssigner; - internal ControllerInputViewModel ViewModel { get; set; } - - public ControllerInputView() - { - DataContext = ViewModel = new ControllerInputViewModel(this); - - InitializeComponent(); - - foreach (ILogical visual in SettingButtons.GetLogicalDescendants()) - { - if (visual is ToggleButton button && visual is not CheckBox) - { - button.IsCheckedChanged += Button_IsCheckedChanged; - } - } - } - - protected override void OnPointerReleased(PointerReleasedEventArgs e) - { - base.OnPointerReleased(e); - - if (_currentAssigner != null && _currentAssigner.ToggledButton != null && !_currentAssigner.ToggledButton.IsPointerOver) - { - _currentAssigner.Cancel(); - } - } - - private void Button_IsCheckedChanged(object sender, RoutedEventArgs e) - { - if (sender is ToggleButton button) - { - if ((bool)button.IsChecked) - { - if (_currentAssigner != null && button == _currentAssigner.ToggledButton) - { - return; - } - - bool isStick = button.Tag != null && button.Tag.ToString() == "stick"; - - if (_currentAssigner == null) - { - _currentAssigner = new ButtonKeyAssigner(button); - - this.Focus(NavigationMethod.Pointer); - - PointerPressed += MouseClick; - - IKeyboard keyboard = (IKeyboard)ViewModel.AvaloniaKeyboardDriver.GetGamepad("0"); // Open Avalonia keyboard for cancel operations. - IButtonAssigner assigner = CreateButtonAssigner(isStick); - - _currentAssigner.ButtonAssigned += (sender, e) => - { - if (e.IsAssigned) - { - ViewModel.IsModified = true; - } - }; - - _currentAssigner.GetInputAndAssign(assigner, keyboard); - } - else - { - if (_currentAssigner != null) - { - ToggleButton oldButton = _currentAssigner.ToggledButton; - - _currentAssigner.Cancel(); - _currentAssigner = null; - button.IsChecked = false; - } - } - } - else - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - } - } - } - - public void SaveCurrentProfile() - { - ViewModel.Save(); - } - - private IButtonAssigner CreateButtonAssigner(bool forStick) - { - IButtonAssigner assigner; - - var device = ViewModel.Devices[ViewModel.Device]; - - if (device.Type == DeviceType.Keyboard) - { - assigner = new KeyboardKeyAssigner((IKeyboard)ViewModel.SelectedGamepad); - } - else if (device.Type == DeviceType.Controller) - { - assigner = new GamepadButtonAssigner(ViewModel.SelectedGamepad, (ViewModel.Config as StandardControllerInputConfig).TriggerThreshold, forStick); - } - else - { - throw new Exception("Controller not supported"); - } - - return assigner; - } - - private void MouseClick(object sender, PointerPressedEventArgs e) - { - bool shouldUnbind = false; - - if (e.GetCurrentPoint(this).Properties.IsMiddleButtonPressed) - { - shouldUnbind = true; - } - - _currentAssigner?.Cancel(shouldUnbind); - - PointerPressed -= MouseClick; - } - - private async void PlayerIndexBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (ViewModel.IsModified && !_dialogOpen) - { - _dialogOpen = true; - - var result = await ContentDialogHelper.CreateConfirmationDialog( - LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmMessage], - LocaleManager.Instance[LocaleKeys.DialogControllerSettingsModifiedConfirmSubMessage], - LocaleManager.Instance[LocaleKeys.InputDialogYes], - LocaleManager.Instance[LocaleKeys.InputDialogNo], - LocaleManager.Instance[LocaleKeys.RyujinxConfirm]); - - if (result == UserResult.Yes) - { - ViewModel.Save(); - } - - _dialogOpen = false; - - ViewModel.IsModified = false; - - if (e.AddedItems.Count > 0) - { - var player = (PlayerModel)e.AddedItems[0]; - ViewModel.PlayerId = player.Id; - } - } - } - - public void Dispose() - { - _currentAssigner?.Cancel(); - _currentAssigner = null; - ViewModel.Dispose(); - } - } -} diff --git a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml deleted file mode 100644 index a6b587f6..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs deleted file mode 100644 index 1b340752..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/MotionInputView.axaml.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Avalonia.Controls; -using FluentAvalonia.UI.Controls; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using System.Threading.Tasks; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class MotionInputView : UserControl - { - private readonly MotionInputViewModel _viewModel; - - public MotionInputView() - { - InitializeComponent(); - } - - public MotionInputView(ControllerInputViewModel viewModel) - { - var config = viewModel.Configuration as InputConfiguration; - - _viewModel = new MotionInputViewModel - { - Slot = config.Slot, - AltSlot = config.AltSlot, - DsuServerHost = config.DsuServerHost, - DsuServerPort = config.DsuServerPort, - MirrorInput = config.MirrorInput, - Sensitivity = config.Sensitivity, - GyroDeadzone = config.GyroDeadzone, - EnableCemuHookMotion = config.EnableCemuHookMotion, - }; - - InitializeComponent(); - DataContext = _viewModel; - } - - public static async Task Show(ControllerInputViewModel viewModel) - { - MotionInputView content = new(viewModel); - - ContentDialog contentDialog = new() - { - Title = LocaleManager.Instance[LocaleKeys.ControllerMotionTitle], - PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], - SecondaryButtonText = "", - CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], - Content = content, - }; - contentDialog.PrimaryButtonClick += (sender, args) => - { - var config = viewModel.Configuration as InputConfiguration; - 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/Views/Input/RumbleInputView.axaml b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml deleted file mode 100644 index 5b7087a4..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs b/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs deleted file mode 100644 index 9307f872..00000000 --- a/src/Ryujinx.Ava/UI/Views/Input/RumbleInputView.axaml.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Avalonia.Controls; -using FluentAvalonia.UI.Controls; -using Ryujinx.Ava.Common.Locale; -using Ryujinx.Ava.UI.Models; -using Ryujinx.Ava.UI.ViewModels; -using Ryujinx.Common.Configuration.Hid.Controller; -using System.Threading.Tasks; - -namespace Ryujinx.Ava.UI.Views.Input -{ - public partial class RumbleInputView : UserControl - { - private readonly RumbleInputViewModel _viewModel; - - public RumbleInputView() - { - InitializeComponent(); - } - - public RumbleInputView(ControllerInputViewModel viewModel) - { - var config = viewModel.Configuration as InputConfiguration; - - _viewModel = new RumbleInputViewModel - { - StrongRumble = config.StrongRumble, - WeakRumble = config.WeakRumble, - }; - - InitializeComponent(); - - DataContext = _viewModel; - } - - public static async Task Show(ControllerInputViewModel viewModel) - { - RumbleInputView content = new(viewModel); - - ContentDialog contentDialog = new() - { - Title = LocaleManager.Instance[LocaleKeys.ControllerRumbleTitle], - PrimaryButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsSave], - SecondaryButtonText = "", - CloseButtonText = LocaleManager.Instance[LocaleKeys.ControllerSettingsClose], - Content = content, - }; - - contentDialog.PrimaryButtonClick += (sender, args) => - { - var config = viewModel.Configuration as InputConfiguration; - config.StrongRumble = content._viewModel.StrongRumble; - config.WeakRumble = content._viewModel.WeakRumble; - }; - - await contentDialog.ShowAsync(); - } - } -} -- cgit v1.2.3