102 lines
5.9 KiB
XML
102 lines
5.9 KiB
XML
<Window 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"
|
|
mc:Ignorable="d" d:DesignWidth="900" d:DesignHeight="650"
|
|
xmlns:vm="clr-namespace:pgLabII.ViewModels"
|
|
x:DataType="vm:EditServerConfigurationViewModel"
|
|
x:Class="pgLabII.Views.EditServerConfigurationWindow"
|
|
Title="Edit Server Configuration"
|
|
SizeToContent="WidthAndHeight">
|
|
<Design.DataContext>
|
|
<vm:EditServerConfigurationViewModel />
|
|
</Design.DataContext>
|
|
|
|
<Grid Margin="12" RowDefinitions="Auto,Auto,Auto,Auto" ColumnDefinitions="*">
|
|
<!-- Basic Details -->
|
|
<StackPanel Grid.Row="0" Spacing="6">
|
|
<TextBlock FontWeight="Bold" Text="Details" Margin="0,0,0,4"/>
|
|
<Grid ColumnDefinitions="Auto,*,Auto,*" RowDefinitions="Auto,Auto,Auto,Auto">
|
|
<TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Name"/>
|
|
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Configuration.Name}"/>
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Color"/>
|
|
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Spacing="6">
|
|
<CheckBox IsChecked="{Binding Configuration.ColorEnabled}"/>
|
|
<ColorPicker Color="{Binding Configuration.Color}"/>
|
|
</StackPanel>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Database"/>
|
|
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Configuration.InitialDatabase}"/>
|
|
|
|
<TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Username"/>
|
|
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Configuration.UserName}"/>
|
|
|
|
<TextBlock Grid.Row="0" Grid.Column="2" VerticalAlignment="Center" Margin="16,0,8,0" Text="Host"/>
|
|
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding Configuration.Host}"/>
|
|
|
|
<TextBlock Grid.Row="1" Grid.Column="2" VerticalAlignment="Center" Margin="16,0,8,0" Text="Port"/>
|
|
<NumericUpDown Grid.Row="1" Grid.Column="3" Value="{Binding Configuration.Port}" Minimum="0" Maximum="65535" Increment="1"/>
|
|
|
|
<TextBlock Grid.Row="2" Grid.Column="2" VerticalAlignment="Center" Margin="16,0,8,0" Text="SSL Mode"/>
|
|
<ComboBox Grid.Row="2" Grid.Column="3" SelectedIndex="{Binding Configuration.DefaultSslMode}">
|
|
<!-- Order must match Npgsql.SslMode enum: Disable(0), Allow(1), Prefer(2), Require(3), VerifyCA(4), VerifyFull(5) -->
|
|
<ComboBoxItem>Disable</ComboBoxItem>
|
|
<ComboBoxItem>Allow</ComboBoxItem>
|
|
<ComboBoxItem>Prefer</ComboBoxItem>
|
|
<ComboBoxItem>Require</ComboBoxItem>
|
|
<ComboBoxItem>VerifyCA</ComboBoxItem>
|
|
<ComboBoxItem>VerifyFull</ComboBoxItem>
|
|
</ComboBox>
|
|
|
|
<TextBlock Grid.Row="3" Grid.Column="2" VerticalAlignment="Center" Margin="16,0,8,0" Text="Password"/>
|
|
<TextBox Grid.Row="3" Grid.Column="3" PasswordChar="*" Text="{Binding Configuration.Password}"/>
|
|
</Grid>
|
|
</StackPanel>
|
|
|
|
<!-- Input Connection String -->
|
|
<StackPanel Grid.Row="1" Margin="0,12,0,0" Spacing="6">
|
|
<TextBlock FontWeight="Bold" Text="Connection string input"/>
|
|
<TextBlock Text="Paste an existing connection string (libpq, Npgsql, URL, or JDBC)."/>
|
|
<TextBox TextWrapping="Wrap" AcceptsReturn="True" MinHeight="60" Text="{Binding InputConnectionString}"/>
|
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto,Auto" VerticalAlignment="Center">
|
|
<TextBlock Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Interpret as"/>
|
|
<!-- Bind SelectedIndex to enum (Auto=0, Libpq=1, Npgsql=2, Url=3, Jdbc=4) -->
|
|
<ComboBox Grid.Column="1" SelectedIndex="{Binding ForcedFormat}">
|
|
<ComboBoxItem>Auto</ComboBoxItem>
|
|
<ComboBoxItem>Libpq</ComboBoxItem>
|
|
<ComboBoxItem>Npgsql</ComboBoxItem>
|
|
<ComboBoxItem>URL</ComboBoxItem>
|
|
<ComboBoxItem>JDBC</ComboBoxItem>
|
|
</ComboBox>
|
|
<TextBlock Grid.Column="2" Margin="12,0,8,0" VerticalAlignment="Center" Text="Detected:"/>
|
|
<TextBlock Grid.Column="3" VerticalAlignment="Center" Text="{Binding DetectedFormat}"/>
|
|
<Button Grid.Column="4" Margin="12,0,0,0" Content="Parse into fields" Command="{Binding ParseConnectionStringCommand}"/>
|
|
</Grid>
|
|
</StackPanel>
|
|
|
|
<!-- Output Connection String -->
|
|
<StackPanel Grid.Row="2" Margin="0,12,0,0" Spacing="6">
|
|
<TextBlock FontWeight="Bold" Text="Connection string output"/>
|
|
<Grid ColumnDefinitions="Auto,*,Auto,Auto" VerticalAlignment="Center">
|
|
<TextBlock Grid.Column="0" VerticalAlignment="Center" Margin="0,0,8,0" Text="Format"/>
|
|
<!-- ConnStringFormat: Libpq=0, Npgsql=1, Url=2, Jdbc=3 -->
|
|
<ComboBox Grid.Column="1" SelectedIndex="{Binding OutputFormat}">
|
|
<ComboBoxItem>Libpq</ComboBoxItem>
|
|
<ComboBoxItem>Npgsql</ComboBoxItem>
|
|
<ComboBoxItem>URL</ComboBoxItem>
|
|
<ComboBoxItem>JDBC</ComboBoxItem>
|
|
</ComboBox>
|
|
<Button Grid.Column="2" Margin="12,0,0,0" Content="Generate" Command="{Binding GenerateConnectionStringCommand}"/>
|
|
<Button Grid.Column="3" Margin="6,0,0,0" Content="Copy" Command="{Binding CopyOutputConnectionStringCommand}"/>
|
|
</Grid>
|
|
<TextBox TextWrapping="Wrap" AcceptsReturn="True" MinHeight="60" IsReadOnly="True" Text="{Binding OutputConnectionString}"/>
|
|
</StackPanel>
|
|
|
|
<!-- Buttons Row -->
|
|
<StackPanel Grid.Row="3" Orientation="Horizontal" Spacing="8" Margin="0,12,0,0" HorizontalAlignment="Right">
|
|
<Button Content="Revert" Command="{Binding RevertCommand}" MinWidth="80"/>
|
|
<Button Content="Save" Command="{Binding SaveCommand}" MinWidth="80"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Window>
|