Files
PolyTraderSharp/src/PolyTrader.App.Avalonia/Views/SettingsWindow.axaml
T
Richard 78a2f85b94
CI / Build & Tests (Linux) (push) Canceled after 0s
CI / Plattformneutralität & Hygiene (push) Canceled after 0s
Standardport für WebUI von 5001 auf 6001 geändert
2026-09-08 12:35:29 +02:00

135 lines
8.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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 &amp; 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 &amp; 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>