UI Slice 1b: Fenster-Menue auf ALLEN Fenstern (zentrale Shell-Injektion)
ShellUiHost injiziert das gemeinsame 'Fenster'-Menue beim Oeffnen zentral in jedes Fenster (nur wenn keins eigenes vorhanden ist, z.B. Launcher). Damit erscheint das Menue auf allen Core- und Modul-Fenstern ohne Achtfach-Designer-Duplikat, und jedes kuenftige Fenster bekommt es automatisch. Inhaltliche Controls bleiben designerbasiert; das Nav-Menue ist Shell-Chrome. Tests: +3 (WindowMenu.Populate: Inhalt Launcher/Views/Beenden, aktuelles Fenster fett+angehakt, offenes angehakt, Klick navigiert). 389 Tests gruen, --smoke-ui gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
f54cd7423b
commit
25f0d34042
@@ -28,6 +28,20 @@ namespace PolyTraderSharp.Ui
|
||||
/// <summary>Setzt das Hauptfenster (Launcher) – Ziel für <see cref="ActivateMain"/>.</summary>
|
||||
public void SetMainWindow(Form main) => _mainWindow = main;
|
||||
|
||||
/// <summary>
|
||||
/// Fügt einem Fenster das gemeinsame „Fenster"-Menü hinzu (oberste Leiste). Als letztes
|
||||
/// hinzugefügtes Top-Control belegt der MenuStrip die oberste Zeile über etwaigen ToolStrips.
|
||||
/// </summary>
|
||||
private void AttachWindowMenu(Form form, string currentViewId)
|
||||
{
|
||||
var menu = new MenuStrip { Dock = DockStyle.Top };
|
||||
var fenster = new ToolStripMenuItem("Fenster");
|
||||
menu.Items.Add(fenster);
|
||||
PolyTrader.Core.Modularity.WindowMenu.Wire(fenster, this, currentViewId);
|
||||
form.Controls.Add(menu);
|
||||
form.MainMenuStrip = menu;
|
||||
}
|
||||
|
||||
public void ActivateMain()
|
||||
{
|
||||
if (_mainWindow == null || _mainWindow.IsDisposed) return;
|
||||
@@ -61,6 +75,12 @@ namespace PolyTraderSharp.Ui
|
||||
if (string.IsNullOrEmpty(form.Text) || form.Text == form.Name)
|
||||
form.Text = view.Title;
|
||||
|
||||
// Gemeinsames „Fenster"-Menü zentral in jedes Fenster injizieren (identische Shell-Chrome
|
||||
// auf allen Fenstern; die inhaltlichen Controls bleiben designerbasiert). Nur, wenn das
|
||||
// Fenster nicht bereits ein eigenes Menü mitbringt (z. B. der Launcher).
|
||||
if (form.MainMenuStrip == null)
|
||||
AttachWindowMenu(form, view.Id);
|
||||
|
||||
// Alle Fenster maximiert (Vorgabe): Full-HD-Ziel, skaliert auf größere Auflösungen.
|
||||
form.StartPosition = FormStartPosition.CenterScreen;
|
||||
form.WindowState = FormWindowState.Maximized;
|
||||
|
||||
Reference in New Issue
Block a user