Phase 5-UI (Proof-of-Pattern): Launcher-Shell + erste extrahierte View (Terminal)
- Ui/LauncherForm: schlanke Startleiste, rendert Buttons dynamisch aus den registrierten Views (gruppiert) + Legacy-Button fuer das alte Tab-frm_main. - Ui/ViewHostForm: generisches Host-Fenster fuer eine View (Control docked fill). - Ui/ShellUiHost : IModuleUiHost: sammelt Views, oeffnet Einzelinstanz-Fenster. - Ui/Views/TerminalView: erste designbare View (UserControl + Designer.cs); Terminal-Logik aus frm_main extrahiert; DI via Initialize(TerminalLogger) -> parameterloser Ctor bleibt fuer den VS-Designer nutzbar. - Program.cs: startet jetzt LauncherForm (statt frm_main), registriert die Terminal-View; App bleibt via Legacy-Button voll bedienbar. - Build 0 Fehler. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
26dd68a550
commit
3503bbb5d4
+25
-2
@@ -91,6 +91,8 @@ internal static class Program
|
||||
services.AddHostedService((IServiceProvider sp) => sp.GetRequiredService<MullvadVpnService>());
|
||||
services.AddHostedService((IServiceProvider sp) => sp.GetRequiredService<ThreemaService>());
|
||||
services.AddTransient<frm_main>();
|
||||
services.AddSingleton<PolyTraderSharp.Ui.ShellUiHost>();
|
||||
services.AddTransient<PolyTraderSharp.Ui.LauncherForm>();
|
||||
}).Build();
|
||||
|
||||
try
|
||||
@@ -122,8 +124,29 @@ internal static class Program
|
||||
catch { }
|
||||
|
||||
AppHost.Start();
|
||||
frm_main requiredService = AppHost.Services.GetRequiredService<frm_main>();
|
||||
Application.Run(requiredService);
|
||||
|
||||
// Shell-Views registrieren (Core-App-Views; Module folgen via module.RegisterUi).
|
||||
var uiHost = AppHost.Services.GetRequiredService<PolyTraderSharp.Ui.ShellUiHost>();
|
||||
var viewServices = AppHost.Services;
|
||||
uiHost.RegisterView(new PolyTrader.Core.Modularity.ModuleView
|
||||
{
|
||||
Id = "core.terminal",
|
||||
Title = "Terminal",
|
||||
Group = "Core",
|
||||
Order = 10,
|
||||
PreferredWidth = 1000,
|
||||
PreferredHeight = 650,
|
||||
CreateControl = () =>
|
||||
{
|
||||
var view = new PolyTraderSharp.Ui.Views.TerminalView();
|
||||
view.Initialize(viewServices.GetRequiredService<TerminalLogger>());
|
||||
return view;
|
||||
}
|
||||
});
|
||||
// TODO Phase 5-UI: registrierte IPolyTraderModule durchlaufen und module.RegisterUi(uiHost) aufrufen.
|
||||
|
||||
var launcher = AppHost.Services.GetRequiredService<PolyTraderSharp.Ui.LauncherForm>();
|
||||
Application.Run(launcher);
|
||||
AppHost.StopAsync().GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user