Copytrading-UI: ein Fenster mit TabControl statt drei Launcher-Buttons

Statt je Ansicht ein eigenes Fenster (3 Launcher-Buttons) gibt es jetzt EIN
Modul-Fenster mit Tabs – wie im alten PolyTrader. Skaliert sauber, wenn weitere
Module dazukommen (ein Button je Modul).

- MasterTradersView/ClosedTradesView/AccountSettingsView: von Form -> UserControl
  (Tab-Inhalte); Designer-Root auf Size statt ClientSize/Text/MinimumSize.
- Neu: CopyTradingMainForm (Designer) mit TabControl + 3 TabPages, hostet die
  drei UserControls; Initialize(IServiceProvider) versorgt jeden Tab per DI.
- CopyTradingModule.RegisterUi registriert nur noch EINE View "Copytrading".

Verifiziert: Build grün, --smoke-ui grün (eine View copytrading.main +
Launcher konstruieren fehlerfrei, 3 Accounts / 32 Trader hydriert).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-06 10:26:40 +02:00
co-authored by Claude Opus 4.8
parent 76007db93f
commit c3d7e41e62
11 changed files with 422 additions and 166 deletions
@@ -56,54 +56,20 @@ namespace PolyTrader.Modules.CopyTrading
public void RegisterUi(IModuleUiHost host, IServiceProvider services)
{
// EIN Fenster fürs ganze Modul: die einzelnen Ansichten sind Tabs im
// CopyTradingMainForm (Master-Trader / geschlossene Trades / Account-Einstellungen).
// So bleibt der Launcher schlank ein Button je Modul statt je View.
host.RegisterView(new ModuleView
{
Id = "copytrading.masters",
Title = "Master-Trader",
Id = "copytrading.main",
Title = "Copytrading",
Group = "CopyTrading",
Order = 100,
CreateForm = () =>
{
var view = new MasterTradersView();
view.Initialize(
services.GetRequiredService<ITrackedTraderRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
}
});
host.RegisterView(new ModuleView
{
Id = "copytrading.closedtrades",
Title = "Geschlossene Copytrades",
Group = "CopyTrading",
Order = 110,
CreateForm = () =>
{
var view = new ClosedTradesView();
view.Initialize(
services.GetRequiredService<ICopyTradeLogRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
}
});
host.RegisterView(new ModuleView
{
Id = "copytrading.accountsettings",
Title = "Copytrading-Account-Einstellungen",
Group = "CopyTrading",
Order = 120,
CreateForm = () =>
{
var view = new AccountSettingsView();
view.Initialize(
services.GetRequiredService<ICopyTradingAccountSettingsRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
var form = new CopyTradingMainForm();
form.Initialize(services);
return form;
}
});
}