Das Suffix ".Avalonia" gab es nur, weil daneben ein WinForms-IBKRTrader.App
stand. Das ist seit L5 weg, also faellt auch das Suffix. Git erkennt alle
Dateien als Umbenennung; Assembly, Wurzel-Namensraum und die
avares://-Ressourcen-URI sind mitgezogen.
Nebeneffekt der Umbenennung: die global::Avalonia-Qualifizierungen entfallen.
Sie waren noetig, weil der Namensraum IBKRTrader.App.Avalonia das
Avalonia-Paket verdeckt hat - ein Ueberbleibsel genau der Namensgebung, die
jetzt weg ist.
Inhaltlich falsch gewordene Aussagen berichtigt - das waren die eigentlichen
Ueberbleibsel, nicht die Kommentare:
- .agents/rules/grundregeln.md schrieb weiterhin "C# .NET 10 WinForms",
RichTextBox-Logging, LauncherForm und PropertyGrid vor. Das ist die Regel,
nach der kuenftig gearbeitet wird - sie haette die Portierung Stueck fuer
Stueck rueckgaengig gemacht. Jetzt: Avalonia, keine Plattform-Suffixe, die
11er-Pinnung mit Begruendung, dazu die beiden Regeln, die uns in L1b am
meisten gekostet haben (UTC persistieren + AppTimeZone statt DateTime.Now;
jede Formatierung mit ausdruecklichem IFormatProvider).
- Core: LogEntry ("wird in RichTextBox geschrieben"), IWorker/WorkerEngine/
WorkerInfo ("DataGridView-Zeile"/"-Binding"), ModuleView ("die
WinForms-Shell castet auf Form").
- Doku: ARCHITECTURE (Modul-Ui-Ordner, "designbare Forms mit Initialize"),
KONZEPT-Modul-Accounting ("UI (WinForms, ein Fenster mit Tabs)").
BEWUSST STEHEN GEBLIEBEN sind die Kommentare, die WinForms nur als
Begruendung nennen - warum LoggingService ein Ereignis hat statt einer
RichTextBox, warum ModuleView Func<object> liefert, warum es benannte
Record-Zeilentypen gibt, warum die Einstellungsmaske aus Attributen entsteht.
Das ist die Herleitung des heutigen Entwurfs; ohne sie sieht spaeter jede
dieser Stellen nach Umstaendlichkeit ohne Grund aus.
KONZEPT-Linux-Portierung.md bekommt einen Statusvermerk: umgesetzt, die
Pfadangaben im Fundstellenverzeichnis beziehen sich auf den alten Aufbau.
Zwei Abweichungen von der Schaetzung sind dort festgehalten - der geringere
Aufwand dank der PolytraderSharp-Vorlage, und dass die dort empfohlene
InvariantGlobalization ein Fehler gewesen waere.
Verifiziert: Build 0 Fehler/0 Warnungen, 193 Tests gruen, Smoke-UI
konstruiert alle 7 Ansichten + Launcher + Dialog, Daemon-Prueflauf OK,
publish -r linux-x64 fuer beide Einstiegspunkte fehlerfrei.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
46 lines
2.1 KiB
XML
46 lines
2.1 KiB
XML
<Window xmlns="https://github.com/avaloniaui"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:IBKRTrader.App.ViewModels"
|
||
x:Class="IBKRTrader.App.Views.LogsWindow"
|
||
Title="Logs"
|
||
Width="1000" Height="650"
|
||
MinWidth="640" MinHeight="360"
|
||
WindowStartupLocation="CenterScreen">
|
||
|
||
<DockPanel>
|
||
<Menu x:Name="WindowMenuBar" DockPanel.Dock="Top" />
|
||
|
||
<Border Classes="toolbar" DockPanel.Dock="Top">
|
||
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
|
||
<Button x:Name="ClearButton" Content="Leeren" />
|
||
<Button x:Name="CopyButton" Content="Alles kopieren" />
|
||
<CheckBox x:Name="AutoScrollCheck" Content="Automatisch scrollen"
|
||
IsChecked="True" Margin="12,0,0,0" VerticalAlignment="Center" />
|
||
<TextBlock Text="Filter:" Margin="16,0,6,0" VerticalAlignment="Center" />
|
||
<TextBox x:Name="FilterBox" Width="220" Watermark="Text oder Modul" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<Border Classes="statusbar" DockPanel.Dock="Bottom">
|
||
<TextBlock x:Name="StatusText" />
|
||
</Border>
|
||
|
||
<!-- Dunkles Terminal-Erscheinungsbild wie in der bisherigen RichTextBox. Statt der
|
||
Selection-Einfärbung von WinForms wird hier je Eintrag ein eingefärbtes Element
|
||
erzeugt – das ist der Weg, den Avalonia dafür vorsieht. -->
|
||
<ScrollViewer x:Name="LogScroller" Background="#14141E">
|
||
<ItemsControl x:Name="LogList" Margin="8">
|
||
<ItemsControl.ItemTemplate>
|
||
<DataTemplate x:DataType="vm:LogRow">
|
||
<TextBlock Text="{Binding Text}"
|
||
Foreground="{Binding Color}"
|
||
FontFamily="Consolas,Menlo,DejaVu Sans Mono,monospace"
|
||
FontSize="12"
|
||
TextWrapping="NoWrap" />
|
||
</DataTemplate>
|
||
</ItemsControl.ItemTemplate>
|
||
</ItemsControl>
|
||
</ScrollViewer>
|
||
</DockPanel>
|
||
</Window>
|