MainWindow.axaml 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. <window:StyleableWindow
  2. x:Class="Ryujinx.Ava.Ui.Windows.MainWindow"
  3. xmlns="https://github.com/avaloniaui"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:controls="clr-namespace:Ryujinx.Ava.Ui.Controls"
  6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  7. xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. xmlns:models="clr-namespace:Ryujinx.Ava.Ui.Models"
  10. xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
  11. xmlns:viewModels="clr-namespace:Ryujinx.Ava.Ui.ViewModels"
  12. xmlns:window="clr-namespace:Ryujinx.Ava.Ui.Windows"
  13. Title="Ryujinx"
  14. Width="1280"
  15. Height="785"
  16. MinWidth="1092"
  17. MinHeight="680"
  18. d:DesignHeight="720"
  19. d:DesignWidth="1280"
  20. x:CompileBindings="True"
  21. x:DataType="viewModels:MainWindowViewModel"
  22. WindowStartupLocation="CenterScreen"
  23. mc:Ignorable="d">
  24. <Window.Styles>
  25. <Style Selector="TitleBar:fullscreen">
  26. <Setter Property="Background" Value="#000000" />
  27. </Style>
  28. </Window.Styles>
  29. <Design.DataContext>
  30. <viewModels:MainWindowViewModel />
  31. </Design.DataContext>
  32. <Window.Resources>
  33. <controls:BitmapArrayValueConverter x:Key="ByteImage" />
  34. </Window.Resources>
  35. <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
  36. <Grid.RowDefinitions>
  37. <RowDefinition Height="Auto" />
  38. <RowDefinition Height="*" />
  39. </Grid.RowDefinitions>
  40. <controls:OffscreenTextBox Name="HiddenTextBox" Grid.Row="0" />
  41. <StackPanel Grid.Row="0" IsVisible="False">
  42. <controls:HotKeyControl Name="FullscreenHotKey" Command="{ReflectionBinding ToggleFullscreen}" />
  43. <controls:HotKeyControl Name="FullscreenHotKey2" Command="{ReflectionBinding ToggleFullscreen}" />
  44. <controls:HotKeyControl Name="DockToggleHotKey" Command="{ReflectionBinding ToggleDockMode}" />
  45. <controls:HotKeyControl Name="ExitHotKey" Command="{ReflectionBinding ExitCurrentState}" />
  46. </StackPanel>
  47. <Grid
  48. Grid.Row="1"
  49. HorizontalAlignment="Stretch"
  50. VerticalAlignment="Stretch">
  51. <Grid.ColumnDefinitions>
  52. <ColumnDefinition Width="*" />
  53. </Grid.ColumnDefinitions>
  54. <Grid.RowDefinitions>
  55. <RowDefinition Height="Auto" />
  56. <RowDefinition Height="*" />
  57. <RowDefinition Height="Auto" />
  58. </Grid.RowDefinitions>
  59. <StackPanel
  60. Name="MenuBar"
  61. MinHeight="35"
  62. Grid.Row="0"
  63. Margin="0"
  64. HorizontalAlignment="Stretch"
  65. VerticalAlignment="Stretch"
  66. IsVisible="{Binding ShowMenuAndStatusBar}"
  67. Orientation="Vertical">
  68. <DockPanel HorizontalAlignment="Stretch">
  69. <Menu
  70. Name="Menu"
  71. Height="35"
  72. Margin="0"
  73. HorizontalAlignment="Left">
  74. <Menu.ItemsPanel>
  75. <ItemsPanelTemplate>
  76. <DockPanel Margin="0" HorizontalAlignment="Stretch" />
  77. </ItemsPanelTemplate>
  78. </Menu.ItemsPanel>
  79. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarFile}">
  80. <MenuItem
  81. Command="{ReflectionBinding OpenFile}"
  82. Header="{locale:Locale MenuBarFileOpenFromFile}"
  83. IsEnabled="{Binding EnableNonGameRunningControls}"
  84. ToolTip.Tip="{locale:Locale LoadApplicationFileTooltip}" />
  85. <MenuItem
  86. Command="{ReflectionBinding OpenFolder}"
  87. Header="{locale:Locale MenuBarFileOpenUnpacked}"
  88. IsEnabled="{Binding EnableNonGameRunningControls}"
  89. ToolTip.Tip="{locale:Locale LoadApplicationFolderTooltip}" />
  90. <MenuItem Header="{locale:Locale MenuBarFileOpenApplet}" IsEnabled="{Binding IsAppletMenuActive}">
  91. <MenuItem
  92. Command="{ReflectionBinding OpenMiiApplet}"
  93. Header="Mii Edit Applet"
  94. ToolTip.Tip="{locale:Locale MenuBarFileOpenAppletOpenMiiAppletToolTip}" />
  95. </MenuItem>
  96. <Separator />
  97. <MenuItem
  98. Command="{ReflectionBinding OpenRyujinxFolder}"
  99. Header="{locale:Locale MenuBarFileOpenEmuFolder}"
  100. ToolTip.Tip="{locale:Locale OpenRyujinxFolderTooltip}" />
  101. <MenuItem
  102. Command="{ReflectionBinding OpenLogsFolder}"
  103. Header="{locale:Locale MenuBarFileOpenLogsFolder}"
  104. ToolTip.Tip="{locale:Locale OpenRyujinxLogsTooltip}" />
  105. <Separator />
  106. <MenuItem
  107. Command="{ReflectionBinding CloseWindow}"
  108. Header="{locale:Locale MenuBarFileExit}"
  109. ToolTip.Tip="{locale:Locale ExitTooltip}" />
  110. </MenuItem>
  111. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarOptions}">
  112. <MenuItem
  113. Command="{ReflectionBinding ToggleFullscreen}"
  114. Header="{locale:Locale MenuBarOptionsToggleFullscreen}"
  115. InputGesture="F11" />
  116. <MenuItem>
  117. <MenuItem.Icon>
  118. <CheckBox IsChecked="{Binding StartGamesInFullscreen, Mode=TwoWay}"
  119. MinWidth="250">
  120. <TextBlock Text="{locale:Locale MenuBarOptionsStartGamesInFullscreen}"/>
  121. </CheckBox>
  122. </MenuItem.Icon>
  123. </MenuItem>
  124. <MenuItem IsVisible="{Binding ShowConsoleVisible}">
  125. <MenuItem.Icon>
  126. <CheckBox IsChecked="{Binding ShowConsole, Mode=TwoWay}"
  127. MinWidth="250">
  128. <TextBlock Text="{locale:Locale MenuBarOptionsShowConsole}"/>
  129. </CheckBox>
  130. </MenuItem.Icon>
  131. </MenuItem>
  132. <Separator />
  133. <MenuItem Header="{locale:Locale MenuBarOptionsChangeLanguage}">
  134. <MenuItem
  135. Command="{ReflectionBinding ChangeLanguage}"
  136. CommandParameter="de_DE"
  137. Header="Deutsch" />
  138. <MenuItem
  139. Command="{ReflectionBinding ChangeLanguage}"
  140. CommandParameter="en_US"
  141. Header="English (US)" />
  142. <MenuItem
  143. Command="{ReflectionBinding ChangeLanguage}"
  144. CommandParameter="es_ES"
  145. Header="Español (ES)" />
  146. <MenuItem
  147. Command="{ReflectionBinding ChangeLanguage}"
  148. CommandParameter="fr_FR"
  149. Header="Français" />
  150. <MenuItem
  151. Command="{ReflectionBinding ChangeLanguage}"
  152. CommandParameter="it_IT"
  153. Header="Italiano" />
  154. <MenuItem
  155. Command="{ReflectionBinding ChangeLanguage}"
  156. CommandParameter="pt_BR"
  157. Header="Português (BR)" />
  158. <MenuItem
  159. Command="{ReflectionBinding ChangeLanguage}"
  160. CommandParameter="tr_TR"
  161. Header="Türkçe" />
  162. <MenuItem
  163. Command="{ReflectionBinding ChangeLanguage}"
  164. CommandParameter="el_GR"
  165. Header="Ελληνικά" />
  166. <MenuItem
  167. Command="{ReflectionBinding ChangeLanguage}"
  168. CommandParameter="pl_PL"
  169. Header="Polski" />
  170. <MenuItem
  171. Command="{ReflectionBinding ChangeLanguage}"
  172. CommandParameter="ru_RU"
  173. Header="Русский" />
  174. <MenuItem
  175. Command="{ReflectionBinding ChangeLanguage}"
  176. CommandParameter="zh_CN"
  177. Header="简体中文" />
  178. <MenuItem
  179. Command="{ReflectionBinding ChangeLanguage}"
  180. CommandParameter="zh_TW"
  181. Header="繁體中文" />
  182. <MenuItem
  183. Command="{ReflectionBinding ChangeLanguage}"
  184. CommandParameter="ja_JP"
  185. Header="日本語" />
  186. <MenuItem
  187. Command="{ReflectionBinding ChangeLanguage}"
  188. CommandParameter="ko_KR"
  189. Header="한국어" />
  190. </MenuItem>
  191. <Separator />
  192. <MenuItem
  193. Command="{ReflectionBinding OpenSettings}"
  194. Header="{locale:Locale MenuBarOptionsSettings}"
  195. ToolTip.Tip="{locale:Locale OpenSettingsTooltip}" />
  196. <MenuItem
  197. Command="{ReflectionBinding ManageProfiles}"
  198. Header="{locale:Locale MenuBarOptionsManageUserProfiles}"
  199. IsEnabled="{Binding EnableNonGameRunningControls}"
  200. ToolTip.Tip="{locale:Locale OpenProfileManagerTooltip}" />
  201. </MenuItem>
  202. <MenuItem
  203. Name="ActionsMenuItem"
  204. VerticalAlignment="Center"
  205. Header="{locale:Locale MenuBarActions}"
  206. IsEnabled="{Binding IsGameRunning}">
  207. <MenuItem
  208. Click="PauseEmulation_Click"
  209. Header="{locale:Locale MenuBarOptionsPauseEmulation}"
  210. InputGesture="{Binding PauseKey}"
  211. IsEnabled="{Binding !IsPaused}"
  212. IsVisible="{Binding !IsPaused}" />
  213. <MenuItem
  214. Click="ResumeEmulation_Click"
  215. Header="{locale:Locale MenuBarOptionsResumeEmulation}"
  216. InputGesture="{Binding PauseKey}"
  217. IsEnabled="{Binding IsPaused}"
  218. IsVisible="{Binding IsPaused}" />
  219. <MenuItem
  220. Click="StopEmulation_Click"
  221. Header="{locale:Locale MenuBarOptionsStopEmulation}"
  222. InputGesture="Escape"
  223. IsEnabled="{Binding IsGameRunning}"
  224. ToolTip.Tip="{locale:Locale StopEmulationTooltip}" />
  225. <MenuItem Command="{ReflectionBinding SimulateWakeUpMessage}" Header="{locale:Locale MenuBarOptionsSimulateWakeUpMessage}" />
  226. <Separator />
  227. <MenuItem
  228. Name="ScanAmiiboMenuItem"
  229. AttachedToVisualTree="ScanAmiiboMenuItem_AttachedToVisualTree"
  230. Command="{ReflectionBinding OpenAmiiboWindow}"
  231. Header="{locale:Locale MenuBarActionsScanAmiibo}"
  232. IsEnabled="{Binding IsAmiiboRequested}" />
  233. <MenuItem
  234. Command="{ReflectionBinding TakeScreenshot}"
  235. Header="{locale:Locale MenuBarFileToolsTakeScreenshot}"
  236. InputGesture="{Binding ScreenshotKey}"
  237. IsEnabled="{Binding IsGameRunning}" />
  238. <MenuItem
  239. Command="{ReflectionBinding HideUi}"
  240. Header="{locale:Locale MenuBarFileToolsHideUi}"
  241. InputGesture="{Binding ShowUiKey}"
  242. IsEnabled="{Binding IsGameRunning}" />
  243. <MenuItem
  244. Command="{ReflectionBinding OpenCheatManagerForCurrentApp}"
  245. Header="{locale:Locale GameListContextMenuManageCheat}"
  246. IsEnabled="{Binding IsGameRunning}" />
  247. </MenuItem>
  248. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarTools}">
  249. <MenuItem Header="{locale:Locale MenuBarToolsInstallFirmware}" IsEnabled="{Binding EnableNonGameRunningControls}">
  250. <MenuItem Command="{ReflectionBinding InstallFirmwareFromFile}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromFile}" />
  251. <MenuItem Command="{ReflectionBinding InstallFirmwareFromFolder}" Header="{locale:Locale MenuBarFileToolsInstallFirmwareFromDirectory}" />
  252. </MenuItem>
  253. </MenuItem>
  254. <MenuItem VerticalAlignment="Center" Header="{locale:Locale MenuBarHelp}">
  255. <MenuItem
  256. Name="UpdateMenuItem"
  257. Command="{ReflectionBinding CheckForUpdates}"
  258. Header="{locale:Locale MenuBarHelpCheckForUpdates}"
  259. ToolTip.Tip="{locale:Locale CheckUpdatesTooltip}" />
  260. <Separator />
  261. <MenuItem
  262. Command="{ReflectionBinding OpenAboutWindow}"
  263. Header="{locale:Locale MenuBarHelpAbout}"
  264. ToolTip.Tip="{locale:Locale OpenAboutTooltip}" />
  265. </MenuItem>
  266. </Menu>
  267. </DockPanel>
  268. </StackPanel>
  269. <ContentControl
  270. Name="MainContent"
  271. Grid.Row="1"
  272. Padding="0"
  273. HorizontalAlignment="Stretch"
  274. VerticalAlignment="Stretch"
  275. BorderBrush="{DynamicResource ThemeControlBorderColor}"
  276. BorderThickness="0,0,0,0"
  277. DockPanel.Dock="Top"
  278. IsVisible="{Binding ShowContent}">
  279. <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
  280. <Grid.RowDefinitions>
  281. <RowDefinition Height="Auto" />
  282. <RowDefinition Height="*" />
  283. </Grid.RowDefinitions>
  284. <DockPanel
  285. Grid.Row="0"
  286. Margin="0,0,0,5"
  287. HorizontalAlignment="Stretch">
  288. <Button
  289. Width="40"
  290. MinWidth="40"
  291. Margin="5,2,0,2"
  292. VerticalAlignment="Stretch"
  293. Command="{ReflectionBinding SetListMode}"
  294. IsEnabled="{Binding IsGrid}">
  295. <ui:FontIcon
  296. Margin="0"
  297. HorizontalAlignment="Stretch"
  298. VerticalAlignment="Center"
  299. FontFamily="avares://FluentAvalonia/Fonts#Symbols"
  300. Glyph="{controls:GlyphValueConverter List}" />
  301. </Button>
  302. <Button
  303. Width="40"
  304. MinWidth="40"
  305. Margin="5,2,5,2"
  306. VerticalAlignment="Stretch"
  307. Command="{ReflectionBinding SetGridMode}"
  308. IsEnabled="{Binding IsList}">
  309. <ui:FontIcon
  310. Margin="0"
  311. HorizontalAlignment="Stretch"
  312. VerticalAlignment="Center"
  313. FontFamily="avares://FluentAvalonia/Fonts#Symbols"
  314. Glyph="{controls:GlyphValueConverter Grid}" />
  315. </Button>
  316. <TextBlock
  317. Margin="10,0"
  318. VerticalAlignment="Center"
  319. Text="{locale:Locale IconSize}"
  320. ToolTip.Tip="{locale:Locale IconSizeTooltip}" />
  321. <Slider
  322. Width="150"
  323. Height="35"
  324. Margin="5,-10,5,0"
  325. VerticalAlignment="Center"
  326. IsSnapToTickEnabled="True"
  327. Maximum="4"
  328. Minimum="1"
  329. TickFrequency="1"
  330. ToolTip.Tip="{locale:Locale IconSizeTooltip}"
  331. Value="{Binding GridSizeScale}" />
  332. <CheckBox
  333. Margin="0"
  334. VerticalAlignment="Center"
  335. IsChecked="{Binding ShowNames, Mode=TwoWay}"
  336. IsVisible="{Binding IsGrid}">
  337. <TextBlock Margin="5,3,0,0" Text="{locale:Locale CommonShowNames}" />
  338. </CheckBox>
  339. <TextBox
  340. Name="SearchBox"
  341. MinWidth="200"
  342. Margin="5,0,5,0"
  343. HorizontalAlignment="Right"
  344. VerticalAlignment="Center"
  345. DockPanel.Dock="Right"
  346. KeyUp="SearchBox_OnKeyUp"
  347. Text="{Binding SearchText}"
  348. Watermark="{locale:Locale MenuSearch}" />
  349. <ui:DropDownButton
  350. Width="150"
  351. HorizontalAlignment="Right"
  352. VerticalAlignment="Center"
  353. Content="{Binding SortName}"
  354. DockPanel.Dock="Right">
  355. <ui:DropDownButton.Flyout>
  356. <Flyout Placement="Bottom">
  357. <StackPanel
  358. Margin="0"
  359. HorizontalAlignment="Stretch"
  360. Orientation="Vertical">
  361. <StackPanel>
  362. <RadioButton
  363. Checked="Sort_Checked"
  364. Content="{locale:Locale CommonFavorite}"
  365. GroupName="Sort"
  366. IsChecked="{Binding IsSortedByFavorite, Mode=OneTime}"
  367. Tag="Favorite" />
  368. <RadioButton
  369. Checked="Sort_Checked"
  370. Content="{locale:Locale GameListHeaderApplication}"
  371. GroupName="Sort"
  372. IsChecked="{Binding IsSortedByTitle, Mode=OneTime}"
  373. Tag="Title" />
  374. <RadioButton
  375. Checked="Sort_Checked"
  376. Content="{locale:Locale GameListHeaderDeveloper}"
  377. GroupName="Sort"
  378. IsChecked="{Binding IsSortedByDeveloper, Mode=OneTime}"
  379. Tag="Developer" />
  380. <RadioButton
  381. Checked="Sort_Checked"
  382. Content="{locale:Locale GameListHeaderTimePlayed}"
  383. GroupName="Sort"
  384. IsChecked="{Binding IsSortedByTimePlayed, Mode=OneTime}"
  385. Tag="TotalTimePlayed" />
  386. <RadioButton
  387. Checked="Sort_Checked"
  388. Content="{locale:Locale GameListHeaderLastPlayed}"
  389. GroupName="Sort"
  390. IsChecked="{Binding IsSortedByLastPlayed, Mode=OneTime}"
  391. Tag="LastPlayed" />
  392. <RadioButton
  393. Checked="Sort_Checked"
  394. Content="{locale:Locale GameListHeaderFileExtension}"
  395. GroupName="Sort"
  396. IsChecked="{Binding IsSortedByType, Mode=OneTime}"
  397. Tag="FileType" />
  398. <RadioButton
  399. Checked="Sort_Checked"
  400. Content="{locale:Locale GameListHeaderFileSize}"
  401. GroupName="Sort"
  402. IsChecked="{Binding IsSortedBySize, Mode=OneTime}"
  403. Tag="FileSize" />
  404. <RadioButton
  405. Checked="Sort_Checked"
  406. Content="{locale:Locale GameListHeaderPath}"
  407. GroupName="Sort"
  408. IsChecked="{Binding IsSortedByPath, Mode=OneTime}"
  409. Tag="Path" />
  410. </StackPanel>
  411. <Border
  412. Width="60"
  413. Height="2"
  414. Margin="5"
  415. HorizontalAlignment="Stretch"
  416. BorderBrush="White"
  417. BorderThickness="0,1,0,0">
  418. <Separator Height="0" HorizontalAlignment="Stretch" />
  419. </Border>
  420. <RadioButton
  421. Checked="Order_Checked"
  422. Content="{locale:Locale OrderAscending}"
  423. GroupName="Order"
  424. IsChecked="{Binding IsAscending, Mode=OneTime}"
  425. Tag="Ascending" />
  426. <RadioButton
  427. Checked="Order_Checked"
  428. Content="{locale:Locale OrderDescending}"
  429. GroupName="Order"
  430. IsChecked="{Binding !IsAscending, Mode=OneTime}"
  431. Tag="Descending" />
  432. </StackPanel>
  433. </Flyout>
  434. </ui:DropDownButton.Flyout>
  435. </ui:DropDownButton>
  436. <TextBlock
  437. Margin="10,0"
  438. HorizontalAlignment="Right"
  439. VerticalAlignment="Center"
  440. DockPanel.Dock="Right"
  441. Text="{locale:Locale CommonSort}" />
  442. </DockPanel>
  443. <controls:GameListView
  444. x:Name="GameList"
  445. Grid.Row="1"
  446. HorizontalAlignment="Stretch"
  447. VerticalAlignment="Stretch"
  448. HorizontalContentAlignment="Stretch"
  449. VerticalContentAlignment="Stretch"
  450. IsVisible="{Binding IsList}" />
  451. <controls:GameGridView
  452. x:Name="GameGrid"
  453. Grid.Row="1"
  454. HorizontalAlignment="Stretch"
  455. VerticalAlignment="Stretch"
  456. HorizontalContentAlignment="Stretch"
  457. VerticalContentAlignment="Stretch"
  458. IsVisible="{Binding IsGrid}" />
  459. </Grid>
  460. </ContentControl>
  461. <Grid
  462. Grid.Row="1"
  463. HorizontalAlignment="Stretch"
  464. VerticalAlignment="Stretch"
  465. Background="{DynamicResource ThemeContentBackgroundColor}"
  466. IsVisible="{Binding ShowLoadProgress}"
  467. Name="LoadingView"
  468. ZIndex="1000">
  469. <Grid
  470. Margin="40"
  471. HorizontalAlignment="Center"
  472. VerticalAlignment="Center"
  473. IsVisible="{Binding ShowLoadProgress}">
  474. <Grid.ColumnDefinitions>
  475. <ColumnDefinition Width="Auto" />
  476. <ColumnDefinition Width="*" />
  477. </Grid.ColumnDefinitions>
  478. <Border
  479. Grid.RowSpan="2"
  480. Grid.Column="0"
  481. Width="256"
  482. Height="256"
  483. Margin="10"
  484. Padding="4"
  485. BorderBrush="Black"
  486. BorderThickness="2"
  487. BoxShadow="4 4 32 8 #40000000"
  488. CornerRadius="3"
  489. IsVisible="{Binding ShowLoadProgress}">
  490. <Image
  491. Width="256"
  492. Height="256"
  493. IsVisible="{Binding ShowLoadProgress}"
  494. Source="{Binding SelectedIcon, Converter={StaticResource ByteImage}}" />
  495. </Border>
  496. <Grid
  497. Grid.Column="1"
  498. HorizontalAlignment="Stretch"
  499. VerticalAlignment="Center"
  500. IsVisible="{Binding ShowLoadProgress}">
  501. <Grid.RowDefinitions>
  502. <RowDefinition Height="Auto" />
  503. <RowDefinition Height="Auto" />
  504. <RowDefinition Height="Auto" />
  505. </Grid.RowDefinitions>
  506. <TextBlock
  507. Grid.Row="0"
  508. Margin="10"
  509. FontSize="30"
  510. FontWeight="Bold"
  511. IsVisible="{Binding ShowLoadProgress}"
  512. Text="{Binding LoadHeading}"
  513. TextAlignment="Left"
  514. TextWrapping="Wrap" />
  515. <Border
  516. Grid.Row="1"
  517. Margin="10"
  518. Padding="0"
  519. HorizontalAlignment="Stretch"
  520. BorderBrush="{Binding ProgressBarBackgroundColor}"
  521. BorderThickness="1"
  522. ClipToBounds="True"
  523. CornerRadius="5"
  524. IsVisible="{Binding ShowLoadProgress}">
  525. <ProgressBar
  526. Height="10"
  527. MinWidth="500"
  528. Margin="0"
  529. Padding="0"
  530. HorizontalAlignment="Stretch"
  531. Background="{Binding ProgressBarBackgroundColor}"
  532. ClipToBounds="True"
  533. CornerRadius="5"
  534. Foreground="{Binding ProgressBarForegroundColor}"
  535. IsIndeterminate="{Binding IsLoadingIndeterminate}"
  536. IsVisible="{Binding ShowLoadProgress}"
  537. Maximum="{Binding ProgressMaximum}"
  538. Minimum="0"
  539. Value="{Binding ProgressValue}" />
  540. </Border>
  541. <TextBlock
  542. Grid.Row="2"
  543. Margin="10"
  544. FontSize="18"
  545. IsVisible="{Binding ShowLoadProgress}"
  546. Text="{Binding CacheLoadStatus}"
  547. TextAlignment="Left" />
  548. </Grid>
  549. </Grid>
  550. </Grid>
  551. <Grid
  552. Name="StatusBar"
  553. Grid.Row="2"
  554. MinHeight="30"
  555. Height="30"
  556. Margin="0,0"
  557. HorizontalAlignment="Stretch"
  558. VerticalAlignment="Bottom"
  559. Background="{DynamicResource ThemeContentBackgroundColor}"
  560. DockPanel.Dock="Bottom"
  561. IsVisible="{Binding ShowMenuAndStatusBar}">
  562. <Grid.ColumnDefinitions>
  563. <ColumnDefinition Width="Auto" />
  564. <ColumnDefinition Width="Auto" />
  565. <ColumnDefinition Width="*" />
  566. <ColumnDefinition Width="Auto" />
  567. </Grid.ColumnDefinitions>
  568. <StackPanel
  569. Grid.Column="0"
  570. Margin="10,0"
  571. VerticalAlignment="Center"
  572. IsVisible="{Binding EnableNonGameRunningControls}">
  573. <Grid Margin="0">
  574. <Grid.ColumnDefinitions>
  575. <ColumnDefinition Width="Auto" />
  576. <ColumnDefinition Width="Auto" />
  577. <ColumnDefinition />
  578. </Grid.ColumnDefinitions>
  579. <Button
  580. Width="25"
  581. Height="25"
  582. MinWidth="0"
  583. Margin="0,0,5,0"
  584. VerticalAlignment="Center"
  585. Background="Transparent"
  586. Command="{ReflectionBinding LoadApplications}">
  587. <ui:SymbolIcon
  588. Width="50"
  589. Height="100"
  590. Symbol="Refresh" />
  591. </Button>
  592. <TextBlock
  593. Name="LoadStatus"
  594. Grid.Column="1"
  595. Margin="0,0,5,0"
  596. VerticalAlignment="Center"
  597. IsVisible="{Binding EnableNonGameRunningControls}"
  598. Text="{locale:Locale StatusBarGamesLoaded}" />
  599. <ProgressBar
  600. Name="LoadProgressBar"
  601. Grid.Column="2"
  602. Height="6"
  603. VerticalAlignment="Center"
  604. Foreground="{DynamicResource HighlightColor}"
  605. IsVisible="{Binding EnableNonGameRunningControls}"
  606. Maximum="{Binding StatusBarProgressMaximum}"
  607. Value="{Binding StatusBarProgressValue}" />
  608. </Grid>
  609. </StackPanel>
  610. <StackPanel
  611. Grid.Column="1"
  612. Margin="10,0"
  613. HorizontalAlignment="Left"
  614. VerticalAlignment="Center"
  615. IsVisible="{Binding IsGameRunning}"
  616. Orientation="Horizontal">
  617. <TextBlock
  618. Name="VsyncStatus"
  619. Margin="0,0,5,0"
  620. HorizontalAlignment="Left"
  621. VerticalAlignment="Center"
  622. Foreground="{Binding VsyncColor}"
  623. IsVisible="{Binding !ShowLoadProgress}"
  624. PointerReleased="VsyncStatus_PointerReleased"
  625. Text="VSync"
  626. TextAlignment="Left" />
  627. <Border
  628. Width="2"
  629. Height="12"
  630. Margin="2,0"
  631. BorderBrush="Gray"
  632. BorderThickness="1"
  633. IsVisible="{Binding !ShowLoadProgress}" />
  634. <TextBlock
  635. Name="DockedStatus"
  636. Margin="5,0,5,0"
  637. HorizontalAlignment="Left"
  638. VerticalAlignment="Center"
  639. IsVisible="{Binding !ShowLoadProgress}"
  640. PointerReleased="DockedStatus_PointerReleased"
  641. Text="{Binding DockedStatusText}"
  642. TextAlignment="Left" />
  643. <Border
  644. Width="2"
  645. Height="12"
  646. Margin="2,0"
  647. BorderBrush="Gray"
  648. BorderThickness="1"
  649. IsVisible="{Binding !ShowLoadProgress}" />
  650. <TextBlock
  651. Name="AspectRatioStatus"
  652. Margin="5,0,5,0"
  653. HorizontalAlignment="Left"
  654. VerticalAlignment="Center"
  655. IsVisible="{Binding !ShowLoadProgress}"
  656. PointerReleased="AspectRatioStatus_PointerReleased"
  657. Text="{Binding AspectRatioStatusText}"
  658. TextAlignment="Left" />
  659. <Border
  660. Width="2"
  661. Height="12"
  662. Margin="2,0"
  663. BorderBrush="Gray"
  664. BorderThickness="1"
  665. IsVisible="{Binding !ShowLoadProgress}" />
  666. <ui:ToggleSplitButton
  667. Name="VolumeStatus"
  668. Padding="5"
  669. HorizontalAlignment="Left"
  670. VerticalAlignment="Center"
  671. VerticalContentAlignment="Center"
  672. Background="{DynamicResource ThemeContentBackgroundColor}"
  673. BorderThickness="0"
  674. Content="{Binding VolumeStatusText}"
  675. IsChecked="{Binding VolumeMuted}"
  676. IsVisible="{Binding !ShowLoadProgress}">
  677. <ui:ToggleSplitButton.Flyout>
  678. <Flyout Placement="Bottom" ShowMode="TransientWithDismissOnPointerMoveAway">
  679. <Grid Margin="0">
  680. <Slider
  681. Width="150"
  682. Margin="0"
  683. Padding="0"
  684. IsSnapToTickEnabled="True"
  685. LargeChange="0.05"
  686. Maximum="1"
  687. Minimum="0"
  688. SmallChange="0.01"
  689. TickFrequency="0.05"
  690. ToolTip.Tip="{locale:Locale AudioVolumeTooltip}"
  691. Value="{Binding Volume}" />
  692. </Grid>
  693. </Flyout>
  694. </ui:ToggleSplitButton.Flyout>
  695. </ui:ToggleSplitButton>
  696. <Border
  697. Width="2"
  698. Height="12"
  699. Margin="2,0"
  700. BorderBrush="Gray"
  701. BorderThickness="1"
  702. IsVisible="{Binding !ShowLoadProgress}" />
  703. <TextBlock
  704. Margin="5,0,5,0"
  705. HorizontalAlignment="Left"
  706. VerticalAlignment="Center"
  707. IsVisible="{Binding !ShowLoadProgress}"
  708. Text="{Binding GameStatusText}"
  709. TextAlignment="Left" />
  710. <Border
  711. Width="2"
  712. Height="12"
  713. Margin="2,0"
  714. BorderBrush="Gray"
  715. BorderThickness="1"
  716. IsVisible="{Binding !ShowLoadProgress}" />
  717. <TextBlock
  718. Margin="5,0,5,0"
  719. HorizontalAlignment="Left"
  720. VerticalAlignment="Center"
  721. IsVisible="{Binding !ShowLoadProgress}"
  722. Text="{Binding FifoStatusText}"
  723. TextAlignment="Left" />
  724. <Border
  725. Width="2"
  726. Height="12"
  727. Margin="2,0"
  728. BorderBrush="Gray"
  729. BorderThickness="1"
  730. IsVisible="{Binding !ShowLoadProgress}" />
  731. <TextBlock
  732. Margin="5,0,5,0"
  733. HorizontalAlignment="Left"
  734. VerticalAlignment="Center"
  735. IsVisible="{Binding !ShowLoadProgress}"
  736. Text="{Binding BackendText}"
  737. TextAlignment="Left" />
  738. <Border
  739. Width="2"
  740. Height="12"
  741. Margin="2,0"
  742. BorderBrush="Gray"
  743. BorderThickness="1"
  744. IsVisible="{Binding !ShowLoadProgress}" />
  745. <TextBlock
  746. Margin="5,0,5,0"
  747. HorizontalAlignment="Left"
  748. VerticalAlignment="Center"
  749. IsVisible="{Binding !ShowLoadProgress}"
  750. Text="{Binding GpuNameText}"
  751. TextAlignment="Left" />
  752. </StackPanel>
  753. <StackPanel
  754. Grid.Column="3"
  755. Margin="10,0"
  756. VerticalAlignment="Center"
  757. IsVisible="{Binding ShowFirmwareStatus}"
  758. Orientation="Horizontal">
  759. <TextBlock
  760. Name="FirmwareStatus"
  761. Margin="0"
  762. HorizontalAlignment="Right"
  763. VerticalAlignment="Center"
  764. Text="{locale:Locale StatusBarSystemVersion}" />
  765. </StackPanel>
  766. </Grid>
  767. </Grid>
  768. </Grid>
  769. </window:StyleableWindow>