Files
Torch/Torch.Server/Views/ConfigControl.xaml
z__ 1c92f69bd4 updated NLog to v5
fixed most of issues with world creating/loading
fixed log window lags
fixed some compiler warnings
fixed empty log files creating
fixed logging performance
added better logging of load process
commands autocomplete in torch GUI
chat in torch GUI now has entered history (like console, use up/down arrows)
abstraction of instance manager
session name now correctly displaying in torchSessionManager messages
TorchSession now has loaded world property (as torch now has more control about world load process)
now only dedicated config locks after session start
2022-02-02 14:28:53 +07:00

144 lines
9.0 KiB
XML

<UserControl x:Class="Torch.Server.Views.ConfigControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:viewModels="clr-namespace:Torch.Server.ViewModels"
xmlns:managers="clr-namespace:Torch.Server.Managers"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:validationRules="clr-namespace:Torch.Server.Views.ValidationRules"
xmlns:views="clr-namespace:Torch.Views;assembly=Torch"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<DockPanel Grid.Row="0">
<Label Content="World:" DockPanel.Dock="Left" />
<Button Content="Import World Config" Margin="3" Padding="3" DockPanel.Dock="Right" Click="ImportConfig_OnClick" ToolTip="Override the DS config with the one from the selected world." IsEnabled="{Binding ElementName=WorldList, Path=Items.Count, Mode=OneWay}"/>
<Button Content="New World" Margin="3" Padding="3" DockPanel.Dock="Right" Click="NewWorld_OnClick"/>
<ComboBox x:Name="WorldList" ItemsSource="{Binding Worlds}" SelectedItem="{Binding SelectedWorld}" Margin="3"
SelectionChanged="Selector_OnSelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate DataType="managers:WorldViewModel">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Checkpoint.SessionName}" FontWeight="Bold" Padding="0" />
<Label Content="{Binding WorldPath}" Padding="5,0,0,0" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="Size (KB): " Padding="0" />
<Label Content="{Binding WorldSizeKB}" Padding="0" />
<Label Content="Last saved: " Padding="5,0,0,0" />
<Label Content="{Binding Checkpoint.LastSaveTime}" Padding="0" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DockPanel>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*" />
<ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ScrollViewer VerticalScrollBarVisibility="Auto" x:Name="DediConfigScrollViewer">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" Margin="3" DockPanel.Dock="Left">
<Label Content="Server Name" />
<TextBox Text="{Binding ServerName}" Margin="3,0,3,3" Width="160" />
<Label Content="World Name" />
<TextBox Text="{Binding WorldName}" Margin="3,0,3,3" Width="160" />
<Label Content="Server Description" />
<TextBox Text="{Binding ServerDescription}" Margin="3,0,3,3" Width="160" Height="100"
AcceptsReturn="true" VerticalScrollBarVisibility="Auto"/>
<Label Content="Whitelist Group ID" />
<TextBox Margin="3,0,3,3" Width="160" Style="{StaticResource ValidatedTextBox}">
<TextBox.Text>
<Binding Path="GroupId" UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True" NotifyOnValidationError="True">
<Binding.ValidationRules>
<validationRules:NumberValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Label Content="Server IP" />
<StackPanel Orientation="Horizontal" Margin="3,0,3,3">
<TextBox Text="{Binding IP}" Width="100" Height="20" />
<Label Content=":" Width="12" />
<TextBox Text="{Binding Port}" Width="48" Height="20" />
</StackPanel>
<Label Content="Server Password"/>
<TextBox Text="{Binding Password}" Width="160"/>
<CheckBox IsChecked="{Binding PauseGameWhenEmpty}" Content="Pause When Empty" Margin="3" />
<CheckBox IsChecked="{Binding AutodetectDependencies}" Content="Auto Detect Dependencies" Margin="3" />
</StackPanel>
<StackPanel Grid.Column="1" Margin="3">
<Label Content="Administrators" />
<TextBox Text="{Binding Administrators, Converter={StaticResource ListConverterString}}"
Margin="3"
Height="100" AcceptsReturn="true" VerticalScrollBarVisibility="Auto" />
<Button Content="Edit Roles" Click="RoleEdit_Onlick" Margin="3"/>
<Label Content="Reserved Players" />
<TextBox Margin="3" Height="100" AcceptsReturn="true" VerticalScrollBarVisibility="Auto"
Style="{StaticResource ValidatedTextBox}">
<TextBox.Text>
<Binding Path="Reserved" UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True" NotifyOnValidationError="True"
Converter="{StaticResource ListConverterUInt64}">
<Binding.ValidationRules>
<validationRules:ListConverterValidationRule Type="system:UInt64" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<Label Content="Banned Players" />
<TextBox Margin="3" Height="100" AcceptsReturn="true" VerticalScrollBarVisibility="Auto"
Style="{StaticResource ValidatedTextBox}">
<TextBox.Text>
<Binding Path="Banned" UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True" NotifyOnValidationError="True"
Converter="{StaticResource ListConverterUInt64}">
<Binding.ValidationRules>
<validationRules:ListConverterValidationRule Type="system:UInt64" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</StackPanel>
</Grid>
</ScrollViewer>
<Button Grid.Row="1" Content="Save Config" Margin="3" Click="Save_OnClick" />
</Grid>
<TabControl Grid.Column="1" Margin="3">
<TabItem Header="World">
<views:PropertyGrid DataContext="{Binding SessionSettings}" />
</TabItem>
<TabItem Header="Torch">
<views:PropertyGrid x:Name="TorchSettings" />
</TabItem>
</TabControl>
<GridSplitter Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Stretch" ShowsPreview="True"
Width="2" />
</Grid>
</Grid>
</UserControl>