MainWindow.axaml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. <Window xmlns="https://github.com/avaloniaui"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:vm="using:VeloeMinecraftLauncher.ViewModels"
  4. xmlns:m="using:VeloeMinecraftLauncher.Models"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  7. xmlns:titlebars="using:VeloeMinecraftLauncher.Views.TitleBar"
  8. mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
  9. Width="800" Height="450"
  10. MaxWidth="800" MaxHeight="450"
  11. x:Class="VeloeMinecraftLauncher.Views.MainWindow"
  12. Icon="/Assets/avalonia-logo.ico"
  13. Title="VeloeMinecraftLauncher"
  14. TransparencyLevelHint="AcrylicBlur"
  15. Background="Black"
  16. CanResize="False"
  17. ExtendClientAreaToDecorationsHint="True"
  18. ExtendClientAreaChromeHints="NoChrome"
  19. ExtendClientAreaTitleBarHeightHint="-1"
  20. Closing="MainWindow_Closing">
  21. <Window.Background>
  22. <ImageBrush
  23. Source="avares://VeloeMinecraftLauncher/Assets/background.png"
  24. Stretch="Fill"
  25. Opacity="0.9"
  26. />
  27. </Window.Background>
  28. <Design.DataContext>
  29. <vm:MainWindowViewModel/>
  30. </Design.DataContext>
  31. <Panel>
  32. <DockPanel>
  33. <titlebars:TitleBarWindow
  34. IsSeamless="False"
  35. IsIconVisible="False"
  36. IsMaximizeVisible="False"
  37. TitleText="Veloe Minecraft Launcher"
  38. DockPanel.Dock="Top"
  39. ZIndex="997">
  40. </titlebars:TitleBarWindow>
  41. <Grid DockPanel.Dock="Left">
  42. <Grid.RowDefinitions>
  43. <RowDefinition Height="0"></RowDefinition>
  44. <RowDefinition Height="*"></RowDefinition>
  45. <RowDefinition Height="40" ></RowDefinition>
  46. <RowDefinition Height="0"></RowDefinition>
  47. </Grid.RowDefinitions>
  48. <Grid.ColumnDefinitions>
  49. <ColumnDefinition Width="*"></ColumnDefinition>
  50. </Grid.ColumnDefinitions>
  51. <Button
  52. ZIndex="999"
  53. Grid.Row="1"
  54. HorizontalAlignment="Right"
  55. VerticalAlignment="Top"
  56. Command="{Binding DownloadUpdate}"
  57. IsVisible="{Binding IsUpdateAvailable}">
  58. Update Available
  59. </Button>
  60. <TextBlock
  61. ZIndex="998"
  62. Grid.Row="1"
  63. HorizontalAlignment="Right"
  64. VerticalAlignment="Bottom"
  65. Text="{Binding StartButtonOutput}"
  66. Margin="5">
  67. </TextBlock>
  68. <TabControl
  69. Grid.Row="1"
  70. HorizontalAlignment="Stretch">
  71. <TabItem
  72. Header="Servers"
  73. VerticalContentAlignment="Center">
  74. <ItemsControl
  75. ItemsSource="{Binding ServerPanels}">
  76. <ItemsControl.ItemsPanel>
  77. <ItemsPanelTemplate>
  78. <UniformGrid Columns="5" Rows="4"/>
  79. </ItemsPanelTemplate>
  80. </ItemsControl.ItemsPanel>
  81. <ItemsControl.ItemTemplate>
  82. <DataTemplate DataType="m:ServerPanelModel">
  83. <Panel
  84. VerticalAlignment="Top"
  85. HorizontalAlignment="Stretch"
  86. Height="75"
  87. Width="150"
  88. Margin="0 0 10 10">
  89. <Border
  90. Background="Black"
  91. Opacity="0.2"
  92. CornerRadius="15"/>
  93. <ToolTip.Tip>
  94. <TextBlock
  95. Text="{Binding Tip}"
  96. TextWrapping="Wrap"/>
  97. </ToolTip.Tip>
  98. <UniformGrid
  99. Columns="1"
  100. Rows="2"
  101. VerticalAlignment="Center"
  102. HorizontalAlignment="Center">
  103. <TextBlock
  104. VerticalAlignment="Center"
  105. HorizontalAlignment="Center"
  106. Text="{Binding Status}"/>
  107. <TextBlock
  108. VerticalAlignment="Center"
  109. HorizontalAlignment="Center"
  110. FontSize="20"
  111. Text="{Binding Players}"/>
  112. </UniformGrid>
  113. </Panel>
  114. </DataTemplate>
  115. </ItemsControl.ItemTemplate>
  116. </ItemsControl>
  117. </TabItem>
  118. <TabItem>
  119. <TabItem.Header>
  120. <TextBlock VerticalAlignment="Center">Console</TextBlock>
  121. </TabItem.Header>
  122. <Panel
  123. VerticalAlignment="Stretch"
  124. HorizontalAlignment="Stretch"
  125. Margin="0 0 0 5">
  126. <Border Background="Black" Opacity="0.2" CornerRadius="5" />
  127. <ScrollViewer
  128. Name="ConsoleScroll"
  129. HorizontalScrollBarVisibility="Auto"
  130. VerticalAlignment="Stretch"
  131. HorizontalAlignment="Stretch">
  132. <TextBlock
  133. Text="{Binding ConsoleText}"
  134. VerticalAlignment="Stretch"
  135. Width="760"
  136. Margin="5,5,5,5"
  137. TextWrapping="Wrap"
  138. ScrollViewer.VerticalScrollBarVisibility="Visible"
  139. MaxLines="99999">
  140. </TextBlock>
  141. </ScrollViewer>
  142. </Panel>
  143. </TabItem>
  144. <TabItem>
  145. <TabItem.Header>
  146. <TextBlock VerticalAlignment="Center">Changelog</TextBlock>
  147. </TabItem.Header>
  148. <Panel
  149. VerticalAlignment="Stretch"
  150. HorizontalAlignment="Stretch"
  151. Margin="0 0 0 5">
  152. <Border Background="Black" Opacity="0.2" CornerRadius="5" />
  153. <ScrollViewer
  154. HorizontalScrollBarVisibility="Auto"
  155. VerticalAlignment="Stretch"
  156. HorizontalAlignment="Stretch">
  157. <StackPanel
  158. Name="ChangeLogStackPanel"
  159. Width="760"
  160. Margin="5,5,5,5">
  161. </StackPanel>
  162. </ScrollViewer>
  163. </Panel>
  164. </TabItem>
  165. </TabControl>
  166. <StackPanel
  167. Grid.Row="2"
  168. Orientation="Horizontal"
  169. HorizontalAlignment="Center">
  170. <Button
  171. Content="{Binding DownloadButton}"
  172. Command="{Binding OnClickCommand}">
  173. </Button>
  174. <Button
  175. Content="{Binding SettingsButton}"
  176. Command="{Binding OpenSettings}">
  177. </Button>
  178. <TextBlock
  179. Margin="3">
  180. </TextBlock>
  181. <ComboBox
  182. ItemsSource="{Binding DownloadedVersions}"
  183. PlaceholderText="Select version"
  184. SelectedItem="Binding DownloadedVersion"
  185. SelectedIndex="{Binding DownloadedIndex}"
  186. Width="220"
  187. VerticalAlignment="Center"
  188. HorizontalAlignment="Center">
  189. </ComboBox>
  190. <TextBlock
  191. Margin="3">
  192. </TextBlock>
  193. <TextBox
  194. Text="{Binding Username}"
  195. Watermark="Username"
  196. MinWidth="190"
  197. MaxWidth="220"
  198. VerticalAlignment="Center"
  199. HorizontalAlignment="Center">
  200. <TextBox.Styles>
  201. <Style Selector="DataValidationErrors">
  202. <Setter Property="Template">
  203. <ControlTemplate>
  204. <DockPanel LastChildFill="True" MaxWidth="220">
  205. <ContentControl DockPanel.Dock="Right"
  206. ContentTemplate="{TemplateBinding ErrorTemplate}"
  207. DataContext="{TemplateBinding Owner}"
  208. Content="{Binding (DataValidationErrors.Errors)}"
  209. IsVisible="{Binding (DataValidationErrors.HasErrors)}"/>
  210. <ContentPresenter Name="PART_ContentPresenter"
  211. Background="{TemplateBinding Background}"
  212. BorderBrush="{TemplateBinding BorderBrush}"
  213. BorderThickness="{TemplateBinding BorderThickness}"
  214. CornerRadius="{TemplateBinding CornerRadius}"
  215. ContentTemplate="{TemplateBinding ContentTemplate}"
  216. Content="{TemplateBinding Content}"
  217. Padding="{TemplateBinding Padding}"/>
  218. </DockPanel>
  219. </ControlTemplate>
  220. </Setter>
  221. <Setter Property="ErrorTemplate">
  222. <DataTemplate>
  223. <Canvas Width="14" Height="14" Margin="4 0 1 0"
  224. Background="Transparent">
  225. <Path Data="M14,7 A7,7 0 0,0 0,7 M0,7 A7,7 0 1,0 14,7 M7,3l0,5 M7,9l0,2"
  226. Stroke="Yellow"
  227. StrokeThickness="2"/>
  228. </Canvas>
  229. </DataTemplate>
  230. </Setter>
  231. </Style>
  232. </TextBox.Styles>
  233. </TextBox>
  234. <TextBlock
  235. Margin="3">
  236. </TextBlock>
  237. <Button
  238. Content="{Binding StartButton}"
  239. Command="{Binding StartMinecraft}"
  240. IsEnabled="{Binding IsStartButtonEnabled}">
  241. </Button>
  242. </StackPanel>
  243. <StackPanel Orientation="Horizontal" Grid.Row="2">
  244. <TextBox Text="{Binding ArgumentsBox}" TextWrapping="Wrap" Width="680" Height="200" IsVisible="false"></TextBox>
  245. <Button Content="{Binding StartButton}" Command="{Binding StartMinecraftCustom}" IsVisible="false"></Button>
  246. </StackPanel>
  247. </Grid>
  248. </DockPanel>
  249. </Panel>
  250. </Window>