mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2026-06-27 06:39:06 +00:00
Ayyyy, welcome to the UI: Options Menu → General Improvements PR!
We cruisin'!
This is the first PR of a small series aimed at improving the `Options` menu and related submenus.
This initial PR focuses on smaller visual and navigational improvements to the main `Options` menu. As this is part of a progressive series (two PRs _for now_), further bug fixes and refinements may be present in Part 2. Additionally, as the `View` menu is related to some of the changes presents in this PR, it has also received minor adjustments (see details below).
### LOCALISATION
* **Fractured:**
* `MenuBar_Options.json` - `Options` menu locales
* `MenuBar_View.json` - `View` menu locales
* `Settings_Interface.json` - Interface `Settings` tab locales (UI-only)
* **Added:** Missing "e" in Italian translation of `User Profiles` (thank you BOBBIJDJ for pointing it out!)
**NOTE:** `MenuBar_View.json` and `Settings_Interface.json` were not populated in this PR.
### OPTIONS MENU
* **Moved:** `Toggle Fullscreen` to the `View` menu.
* This option affects the current window/view state, so it belongs under `View` rather than `Options`.
* **Moved:** `Show Console` checkbox to the `View` menu.
* Even though it was previously under `Options`, this is a real-time visibility toggle. It affects Ryujinx "immediately" (shows/hides the console window, and as immediately as you can get with our current implementation), so it fits better alongside other current view controls like `Toggle Fullscreen` and the `Window Size` presets.
* **Moved:** `Start Games in Fullscreen` and `Start Games Without UI` (renamed to "Hide UI on Game Start" for better flow) from the `Options` menu to the `Interface` tab in `Settings`.
* These are persistent launch preferences rather than actions that can affect just the current session. Settings is the semantically correct location for them. They now sit alongside other launch-related options such as `Confirm Game Shutdown`.
* Their respective locales were transferred to the newly created `Settings_Interface.json`.
* **Renamed:** `Change Language` → `Language`
* Made consistent with the shorter style used by other items in this menu in previous cleanups.
* **Modified:** Menu item order (see images below).
### VIEW MENU
The `View` menu received only light adjustments in this PR (mainly padding/margins to better fit the newly added `Show Console` checkbox ). A dedicated _View Menu_ follow-up PR is planned to reorganise it further and add new options. Furthermore, _Options Menu (Part 2 of 2)_ will follow shortly as well.
_If there are any features or changes that you wish to be implemented, please comment down below and I'll be happy to accommodate!_
Reviewed-on: https://git.ryujinx.app/projects/Ryubing/pulls/133
282 lines
16 KiB
XML
282 lines
16 KiB
XML
<UserControl
|
|
x:Class="Ryujinx.Ava.UI.Views.Settings.SettingsUiView"
|
|
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:ext="clr-namespace:Ryujinx.Ava.Common.Markup"
|
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
|
mc:Ignorable="d"
|
|
x:DataType="viewModels:SettingsViewModel">
|
|
<Design.DataContext>
|
|
<viewModels:SettingsViewModel />
|
|
</Design.DataContext>
|
|
<ScrollViewer
|
|
Name="UiPage"
|
|
HorizontalAlignment="Stretch"
|
|
VerticalAlignment="Stretch"
|
|
HorizontalScrollBarVisibility="Disabled"
|
|
VerticalScrollBarVisibility="Auto">
|
|
<Border Classes="settings">
|
|
<Grid ColumnDefinitions="Auto,Auto,*" HorizontalAlignment="Stretch">
|
|
<StackPanel
|
|
Grid.Column="0"
|
|
Margin="10"
|
|
HorizontalAlignment="Stretch"
|
|
Orientation="Vertical"
|
|
Spacing="10">
|
|
<TextBlock Classes="h1" Text="{ext:Locale SettingsTabGeneralGeneral}" />
|
|
<StackPanel Margin="10,0,0,0" Orientation="Vertical">
|
|
<CheckBox
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
IsChecked="{Binding ShowConfirmExit}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{ext:Locale SettingsTabGeneralShowConfirmExitDialog}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<CheckBox
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
IsChecked="{Binding StartGamesInFullscreen, Mode=TwoWay}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{ext:Locale Settings_Interface_StartGamesInFullscreenCheckboxLabel}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<CheckBox
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
IsChecked="{Binding StartGamesWithoutUi, Mode=TwoWay}"
|
|
ToolTip.Tip="{ext:Locale Settings_Interface_StartGamesWithoutUICheckboxLabelToolTip}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{ext:Locale Settings_Interface_StartGamesWithoutUICheckboxLabel}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<CheckBox
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
IsChecked="{Binding RememberWindowState}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{ext:Locale SettingsTabGeneralRememberWindowState}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<CheckBox
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
IsChecked="{Binding ShowOldUI}"
|
|
ToolTip.Tip="{ext:Locale SettingsTabGeneralShowOldUIToolTip}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="{ext:Locale SettingsTabGeneralShowOldUI}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<CheckBox IsChecked="{Binding EnableDiscordIntegration}">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock VerticalAlignment="Center"
|
|
ToolTip.Tip="{ext:Locale ToggleDiscordTooltip}"
|
|
Text="{ext:Locale SettingsTabGeneralEnableDiscordRichPresence}" />
|
|
</StackPanel>
|
|
</CheckBox>
|
|
<StackPanel
|
|
Margin="0, 15, 0, 0"
|
|
Orientation="Horizontal">
|
|
<TextBlock VerticalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralFocusLossType}"
|
|
Width="150" />
|
|
<ComboBox SelectedIndex="{Binding FocusLostActionType}"
|
|
HorizontalContentAlignment="Left"
|
|
MinWidth="100">
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralFocusLossTypeDoNothing}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralFocusLossTypeBlockInput}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralFocusLossTypeMuteAudio}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralFocusLossTypeBlockInputAndMuteAudio}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralFocusLossTypePauseEmulation}" />
|
|
</ComboBox>
|
|
</StackPanel>
|
|
<StackPanel
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
Margin="0, 15, 0, 0"
|
|
Orientation="Horizontal">
|
|
<TextBlock VerticalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralCheckUpdatesOnLaunch}"
|
|
Width="150" />
|
|
<ComboBox SelectedIndex="{Binding UpdateCheckerType}"
|
|
HorizontalContentAlignment="Left"
|
|
MinWidth="100">
|
|
<ComboBoxItem
|
|
Content="{ext:Locale CommonOff}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralCheckUpdatesOnLaunchPromptAtStartup}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralCheckUpdatesOnLaunchBackground}" />
|
|
</ComboBox>
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
<StackPanel
|
|
Margin="0, 15, 0, 0"
|
|
Orientation="Horizontal">
|
|
<TextBlock VerticalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralHideCursor}"
|
|
Width="150" />
|
|
<ComboBox SelectedIndex="{Binding HideCursor}"
|
|
HorizontalContentAlignment="Left"
|
|
MinWidth="100">
|
|
<ComboBoxItem
|
|
Content="{ext:Locale Never}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralHideCursorOnIdle}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralHideCursorAlways}" />
|
|
</ComboBox>
|
|
</StackPanel>
|
|
<StackPanel
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
Margin="0, 15, 0, 10"
|
|
Orientation="Horizontal">
|
|
<TextBlock
|
|
VerticalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralTheme}"
|
|
Width="150" />
|
|
<ComboBox SelectedIndex="{Binding BaseStyleIndex}"
|
|
HorizontalContentAlignment="Left"
|
|
MinWidth="100">
|
|
<ComboBoxItem
|
|
Content="{ext:Locale CommonAuto}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralThemeLight}" />
|
|
<ComboBoxItem
|
|
Content="{ext:Locale SettingsTabGeneralThemeDark}" />
|
|
</ComboBox>
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
<Border Grid.Column="1"
|
|
HorizontalAlignment="Center"
|
|
VerticalAlignment="Top"
|
|
Margin="10, 10, 10, 0"
|
|
Height="405"
|
|
BorderBrush="Gray"
|
|
Background="Gray"
|
|
Width="1" />
|
|
<StackPanel
|
|
Margin="10"
|
|
Spacing="10"
|
|
Grid.Column="2"
|
|
Orientation="Vertical" HorizontalAlignment="Stretch">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Classes="h1" Text="{ext:Locale SettingsTabGeneralGameDirectories}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
<StackPanel
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
Margin="10,0,0,0"
|
|
HorizontalAlignment="Stretch"
|
|
Orientation="Vertical"
|
|
Spacing="10">
|
|
<ListBox
|
|
Name="GameDirsList"
|
|
MinHeight="120"
|
|
ItemsSource="{Binding GameDirectories}">
|
|
<ListBox.Styles>
|
|
<Style Selector="ListBoxItem">
|
|
<Setter Property="Padding" Value="10" />
|
|
<Setter Property="Background" Value="{DynamicResource ListBoxBackground}" />
|
|
</Style>
|
|
</ListBox.Styles>
|
|
</ListBox>
|
|
<Grid HorizontalAlignment="Stretch" ColumnDefinitions="*,Auto,Auto">
|
|
<TextBox
|
|
Name="GameDirPathBox"
|
|
Margin="0"
|
|
Watermark="{ext:Locale AddGameDirBoxTooltip}"
|
|
VerticalAlignment="Stretch" />
|
|
<Button
|
|
Name="AddGameDirButton"
|
|
Grid.Column="1"
|
|
MinWidth="90"
|
|
Margin="10,0,0,0">
|
|
<TextBlock HorizontalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralAdd}" />
|
|
</Button>
|
|
<Button
|
|
Name="RemoveGameDirButton"
|
|
Grid.Column="2"
|
|
MinWidth="90"
|
|
Margin="5,0,0,0"
|
|
Click="RemoveGameDirButton_OnClick">
|
|
<TextBlock HorizontalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralRemove}" />
|
|
</Button>
|
|
</Grid>
|
|
</StackPanel>
|
|
<Separator Height="1" />
|
|
<StackPanel Orientation="Vertical" Spacing="5">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Classes="h1" Text="{ext:Locale SettingsTabGeneralAutoloadDirectories}" />
|
|
<TextBlock Classes="globalConfigMarker" IsVisible="{Binding IsGameTitleNotNull}" />
|
|
</StackPanel>
|
|
<TextBlock Foreground="{DynamicResource SecondaryTextColor}"
|
|
Text="{ext:Locale SettingsTabGeneralAutoloadNote}" />
|
|
</StackPanel>
|
|
<StackPanel
|
|
IsEnabled="{Binding !IsGameTitleNotNull}"
|
|
Opacity="{Binding PanelOpacity}"
|
|
Margin="10,0,0,0"
|
|
HorizontalAlignment="Stretch"
|
|
Orientation="Vertical"
|
|
Spacing="10">
|
|
<ListBox
|
|
Name="AutoloadDirsList"
|
|
MinHeight="100"
|
|
ItemsSource="{Binding AutoloadDirectories}">
|
|
<ListBox.Styles>
|
|
<Style Selector="ListBoxItem">
|
|
<Setter Property="Padding" Value="10" />
|
|
<Setter Property="Background" Value="{DynamicResource ListBoxBackground}" />
|
|
</Style>
|
|
</ListBox.Styles>
|
|
</ListBox>
|
|
<Grid HorizontalAlignment="Stretch" ColumnDefinitions="*,Auto,Auto">
|
|
<TextBox
|
|
Name="AutoloadDirPathBox"
|
|
Margin="0"
|
|
Watermark="{ext:Locale AddGameDirBoxTooltip}"
|
|
VerticalAlignment="Stretch" />
|
|
<Button
|
|
Name="AddAutoloadDirButton"
|
|
Grid.Column="1"
|
|
MinWidth="90"
|
|
Margin="10,0,0,0">
|
|
<TextBlock HorizontalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralAdd}" />
|
|
</Button>
|
|
<Button
|
|
Name="RemoveAutoloadDirButton"
|
|
Grid.Column="2"
|
|
MinWidth="90"
|
|
Margin="5,0,0,0"
|
|
Click="RemoveAutoloadDirButton_OnClick">
|
|
<TextBlock HorizontalAlignment="Center"
|
|
Text="{ext:Locale SettingsTabGeneralRemove}" />
|
|
</Button>
|
|
</Grid>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
</ScrollViewer>
|
|
</UserControl>
|