Phase 2: Launcher-UI + eigenstaendige Modul-Fenster

- Form1 -> LauncherForm (Dateien via git mv, Designer/resx angepasst)
- Modul-Tab: Karten aus ModuleRegistry mit "Fenster oeffnen"-Button je Modul
- UI/WindowManager: Fenster-Tracking (Key->Form), Re-Open fokussiert, CloseAll
- UI/ModuleFormBase: Basisklasse fuer eigenstaendige Modul-Fenster
- CongressTradingForm: DB-Kennzahlen + manueller Scrape-Trigger (Phase-4-Ausbau folgt)
- WindowManager in DI; Launcher schliesst Modul-Fenster beim Beenden
- Tests: WindowManager (6) -> 21/21 gruen; Launcher-Start verifiziert

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@
This commit is contained in:
Richard
2026-07-27 10:39:50 +02:00
parent 5815d3258f
commit d0bc833235
11 changed files with 483 additions and 59 deletions
+6 -2
View File
@@ -10,6 +10,7 @@ using IBKRTrader.Core.Trading;
using IBKRTrader.Core.Workers;
using IBKRTrader.Core.Workers.BuiltIn;
using IBKRTrader.Modules.CongressTrading;
using IBKRTrader.UI;
using Microsoft.Extensions.DependencyInjection;
namespace IBKRTrader;
@@ -84,7 +85,10 @@ internal static class Program
.ToArray());
services.AddSingleton<WorkerEngine>();
services.AddSingleton<Form1>();
// UI: Launcher + Fenster-Verwaltung
services.AddSingleton<WindowManager>();
services.AddSingleton<LauncherForm>();
var provider = services.BuildServiceProvider();
@@ -93,6 +97,6 @@ internal static class Program
var engine = provider.GetRequiredService<WorkerEngine>();
webApi.SetEngine(engine);
Application.Run(provider.GetRequiredService<Form1>());
Application.Run(provider.GetRequiredService<LauncherForm>());
}
}