135 lines
8.9 KiB
XML
135 lines
8.9 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:controls="using:PolyTrader.App.Avalonia.Controls"
|
||
xmlns:models="using:PolyTraderSharp.Models"
|
||
x:Class="PolyTrader.App.Avalonia.Views.SettingsWindow">
|
||
|
||
<!--
|
||
Einstellungen. Ersetzt die beiden PropertyGrids der WinForms-Fassung durch den
|
||
kategorisierten SettingsEditor (Überschrift, Beschriftung links, Feld rechts,
|
||
Erklärung klein darunter).
|
||
-->
|
||
<DockPanel>
|
||
<Border Classes="statusbar" DockPanel.Dock="Bottom">
|
||
<TextBlock Name="lblStatus" Text="Bereit." />
|
||
</Border>
|
||
|
||
<TabControl>
|
||
|
||
<TabItem Header="Allgemeine Einstellungen">
|
||
<DockPanel>
|
||
<Border Classes="toolbar" DockPanel.Dock="Top">
|
||
<StackPanel Orientation="Horizontal">
|
||
<Button Name="btnSave" Content="Speichern" />
|
||
<Button Name="btnReload" Content="Neu laden" />
|
||
<Separator Margin="6,0" />
|
||
<Button Name="btnGenMasterKey" Content="Master-Key erzeugen"
|
||
ToolTip.Tip="Erzeugt einen zufälligen AES-Master-Key (nur wenn noch keiner existiert)." />
|
||
<Button Name="btnOpenRouterKey" Content="OpenRouter-Key setzen …"
|
||
ToolTip.Tip="Speichert den OpenRouter-API-Key für den Supervisor (gitignorierte Datei openrouter.key)." />
|
||
<Button Name="btnWatchdogToken" Content="Watchdog-Token setzen …"
|
||
ToolTip.Tip="Speichert den Watchdog-Agent-Token (maskierte Eingabe, bei gesetztem Master-Key verschlüsselt)." />
|
||
<Button Name="btnTestWatchdog" Content="Test-Heartbeat senden"
|
||
ToolTip.Tip="Sendet sofort einen Heartbeat an den konfigurierten Watchdog-Server." />
|
||
<Separator Margin="6,0" />
|
||
<Button Name="btnLicenseKey" Content="Lizenzschlüssel setzen …"
|
||
ToolTip.Tip="Speichert den Deploymentcenter-Lizenzschlüssel (maskierte Eingabe, bei gesetztem Master-Key verschlüsselt)." />
|
||
<Button Name="btnCheckLicense" Content="Lizenz jetzt prüfen"
|
||
ToolTip.Tip="Prüft den gespeicherten Lizenzschlüssel gegen das Deploymentcenter und zeigt Status sowie Hardware-ID." />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<controls:SettingsEditor Name="editorServer" />
|
||
</DockPanel>
|
||
</TabItem>
|
||
|
||
<TabItem Header="Polymarket Accounts">
|
||
<DockPanel>
|
||
<Border Classes="toolbar" DockPanel.Dock="Top">
|
||
<StackPanel Orientation="Horizontal">
|
||
<Button Name="btnAccNew" Content="Neuer Account" />
|
||
<Button Name="btnAccDelete" Content="Löschen" />
|
||
<Button Name="btnAccSave" Content="Account speichern" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<Grid ColumnDefinitions="380,4,*">
|
||
<DataGrid Name="gridAccounts" Grid.Column="0" x:DataType="models:AccountState">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="#" Width="Auto" Binding="{Binding AccountId}" />
|
||
<DataGridTextColumn Header="Name" Width="*" MinWidth="180" Binding="{Binding Name}" />
|
||
<DataGridCheckBoxColumn Header="Demo" Width="Auto" Binding="{Binding IsDemo}" />
|
||
<DataGridCheckBoxColumn Header="Aktiv" Width="Auto" Binding="{Binding IsActive}" />
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
|
||
<GridSplitter Grid.Column="1" Background="{DynamicResource AppBorderBrush}" />
|
||
|
||
<controls:SettingsEditor Name="editorAccount" Grid.Column="2" />
|
||
</Grid>
|
||
</DockPanel>
|
||
</TabItem>
|
||
|
||
<TabItem Header="WebUI">
|
||
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
|
||
<StackPanel Margin="24,20" MaxWidth="680" HorizontalAlignment="Left" Spacing="16">
|
||
<TextBlock Text="WebUI Konfiguration & Fernzugriff" FontSize="18" FontWeight="SemiBold" />
|
||
<TextBlock Text="Das WebUI ermöglicht die Steuerung und Überwachung von PolyTrader über einen Browser – parallel zum Desktop GUI oder im kopflosen Server-Betrieb."
|
||
Foreground="{DynamicResource AppMutedTextBrush}" TextWrapping="Wrap" />
|
||
|
||
<Border Background="{DynamicResource AppSurfaceBrush}" BorderBrush="{DynamicResource AppBorderBrush}" BorderThickness="1" CornerRadius="8" Padding="16">
|
||
<StackPanel Spacing="12">
|
||
<TextBlock Text="Server-Status" FontWeight="SemiBold" FontSize="14" />
|
||
<TextBlock Name="lblWebUiStatus" Text="Status wird ermittelt …" Foreground="{DynamicResource AppAccentBrush}" />
|
||
<TextBlock Name="lblWebUiUrl" Text="http://127.0.0.1:6001" Foreground="{DynamicResource AppMutedTextBrush}" FontSize="12" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<Border Background="{DynamicResource AppSurfaceBrush}" BorderBrush="{DynamicResource AppBorderBrush}" BorderThickness="1" CornerRadius="8" Padding="16">
|
||
<StackPanel Spacing="16">
|
||
<TextBlock Text="Netzwerk & Port" FontWeight="SemiBold" FontSize="14" />
|
||
|
||
<CheckBox Name="chkWebUiEnabled" Content="WebUI Server aktivieren" />
|
||
|
||
<Grid ColumnDefinitions="140,*" Margin="0,4">
|
||
<TextBlock Grid.Column="0" Text="Port:" VerticalAlignment="Center" />
|
||
<NumericUpDown Name="numWebUiPort" Grid.Column="1" Minimum="1024" Maximum="65535" Value="6001" Width="150" HorizontalAlignment="Left" />
|
||
</Grid>
|
||
|
||
<CheckBox Name="chkWebUiLocalOnly" Content="Nur lokaler Zugriff (127.0.0.1)" />
|
||
<TextBlock Text="Wenn deaktiviert, lauscht der Server auf 0.0.0.0 und ist über LAN/VPN erreichbar."
|
||
Foreground="{DynamicResource AppMutedTextBrush}" FontSize="12" Margin="24,-8,0,0" TextWrapping="Wrap" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<Border Background="{DynamicResource AppSurfaceBrush}" BorderBrush="{DynamicResource AppBorderBrush}" BorderThickness="1" CornerRadius="8" Padding="16">
|
||
<StackPanel Spacing="12">
|
||
<TextBlock Text="Zugangssicherung (Token)" FontWeight="SemiBold" FontSize="14" />
|
||
<TextBlock Text="Ohne gültiges Token verweigert das WebUI jeden Zugriff. Das Token wird in appsettings.Local.json gespeichert."
|
||
Foreground="{DynamicResource AppMutedTextBrush}" FontSize="12" TextWrapping="Wrap" />
|
||
|
||
<Grid ColumnDefinitions="*,Auto,Auto" Margin="0,6">
|
||
<TextBox Name="txtWebUiToken" Grid.Column="0" PasswordChar="●" FontFamily="Consolas,monospace" FontSize="12" VerticalAlignment="Center" Margin="0,0,8,0" />
|
||
<Button Name="btnWebUiToggleShowToken" Grid.Column="1" Content="Anzeigen" Margin="0,0,8,0" />
|
||
<Button Name="btnWebUiCopyToken" Grid.Column="2" Content="Kopieren" />
|
||
</Grid>
|
||
|
||
<StackPanel Orientation="Horizontal" Spacing="10" Margin="0,4,0,0">
|
||
<Button Name="btnWebUiGenToken" Content="Neuen Token generieren" />
|
||
</StackPanel>
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<StackPanel Orientation="Horizontal" Spacing="12" Margin="0,8,0,0">
|
||
<Button Name="btnSaveWebUi" Content="WebUI-Einstellungen speichern" />
|
||
<TextBlock Name="lblWebUiSaveStatus" Text="" VerticalAlignment="Center" Foreground="{DynamicResource AppPositiveBrush}" />
|
||
</StackPanel>
|
||
</StackPanel>
|
||
</ScrollViewer>
|
||
</TabItem>
|
||
|
||
</TabControl>
|
||
</DockPanel>
|
||
|
||
</UserControl>
|