P1a: PolyTrader.Core auf net8.0 - UI-Contract toolkit-neutral
Der Core traegt keine WinForms-/System.Drawing-Abhaengigkeit mehr und baut als plattformneutrales net8.0 (verifiziert: publish -r linux-x64 erfolgreich). - ModuleView.CreateForm (Func<Form>) -> CreateView (Func<object>): die Shell kennt ihr Toolkit und castet, der Core nicht. Avalonia kann denselben Contract nutzen. - ModuleView.Icon (System.Drawing.Image, seit .NET 7 Windows-only) -> IconKey (string). Aufloesung Schluessel->Bildressource neu in Ui/ViewIcons.cs, ersetzt Program.AssignMenuIcons. - WindowMenu.cs (reine WinForms-Logik) aus dem Core nach Ui/ verschoben. - WindowMenuTests entfernt: testet die eingefrorene WinForms-Menuelogik, die das Testprojekt nach dem Core-Schnitt nicht mehr erreicht. Im Tag winforms-final erhalten; das Avalonia-Gegenstueck bekommt eigene Tests (P6/P9). Module und App bleiben vorerst net8.0-windows - ihre UI zieht erst mit der Avalonia-Portierung um. Windows-App unveraendert lauffaehig (--smoke-ui gruen). 442 Tests gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+9
-23
@@ -215,7 +215,7 @@ internal static class Program
|
||||
Title = "Terminal",
|
||||
Group = "Core",
|
||||
Order = 10,
|
||||
CreateForm = () =>
|
||||
CreateView = () =>
|
||||
{
|
||||
var view = new PolyTraderSharp.Ui.Views.TerminalView();
|
||||
view.Initialize(viewServices.GetRequiredService<TerminalLogger>());
|
||||
@@ -228,7 +228,7 @@ internal static class Program
|
||||
Title = "Server Settings",
|
||||
Group = "Core",
|
||||
Order = 20,
|
||||
CreateForm = () =>
|
||||
CreateView = () =>
|
||||
{
|
||||
var view = new PolyTraderSharp.Ui.Views.SettingsView();
|
||||
view.Initialize(
|
||||
@@ -246,7 +246,7 @@ internal static class Program
|
||||
Title = "Server Jobs",
|
||||
Group = "Core",
|
||||
Order = 30,
|
||||
CreateForm = () =>
|
||||
CreateView = () =>
|
||||
{
|
||||
var view = new PolyTraderSharp.Ui.Views.JobsView();
|
||||
view.Initialize(viewServices.GetRequiredService<JobManager>());
|
||||
@@ -259,7 +259,7 @@ internal static class Program
|
||||
Title = "Dashboard",
|
||||
Group = "Core",
|
||||
Order = 5,
|
||||
CreateForm = () =>
|
||||
CreateView = () =>
|
||||
{
|
||||
var view = new PolyTraderSharp.Ui.Views.DashboardView();
|
||||
var config = viewServices.GetRequiredService<Microsoft.Extensions.Configuration.IConfiguration>();
|
||||
@@ -292,26 +292,12 @@ internal static class Program
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Weist den registrierten Views (Core + Module) ihr Menü-Icon aus den App-Ressourcen zu –
|
||||
/// gemappt über die stabile View-ID. Bereits gesetzte Icons bleiben erhalten.
|
||||
/// Weist den registrierten Views (Core + Module) ihren Standard-Symbolschlüssel zu.
|
||||
/// Die Auflösung Schlüssel → Bildressource liegt in <see cref="PolyTraderSharp.Ui.ViewIcons"/>;
|
||||
/// Core und Module kennen nur noch den Schlüssel (toolkit-neutral, siehe ModuleView.IconKey).
|
||||
/// </summary>
|
||||
private static void AssignMenuIcons(PolyTraderSharp.Ui.ShellUiHost uiHost)
|
||||
{
|
||||
var map = new System.Collections.Generic.Dictionary<string, System.Drawing.Image>
|
||||
{
|
||||
["core.dashboard"] = Properties.Resources.dashboard,
|
||||
["core.settings"] = Properties.Resources.setting_tools,
|
||||
["core.terminal"] = Properties.Resources.error_log,
|
||||
["core.jobs"] = Properties.Resources.system_time,
|
||||
["accounting.main"] = Properties.Resources.coins_in_hand,
|
||||
["copytrading.main"] = Properties.Resources.cross_reference,
|
||||
["resolutionfarming.main"] = Properties.Resources.file_start_workflow,
|
||||
["supervisor.main"] = Properties.Resources.emotion_batman,
|
||||
};
|
||||
foreach (var view in uiHost.Views)
|
||||
if (view.Icon == null && map.TryGetValue(view.Id, out var img))
|
||||
view.Icon = img;
|
||||
}
|
||||
=> PolyTraderSharp.Ui.ViewIcons.AssignDefaults(uiHost);
|
||||
|
||||
private static void RunConfigMigrationFromJson(string folder)
|
||||
{
|
||||
@@ -510,7 +496,7 @@ internal static class Program
|
||||
{
|
||||
try
|
||||
{
|
||||
using var form = view.CreateForm();
|
||||
using var form = (System.Windows.Forms.Form)view.CreateView();
|
||||
Console.WriteLine($"[OK] {view.Id} ({view.Title})");
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
Reference in New Issue
Block a user