using System.Drawing; using IBKRTrader.Core.Modularity; namespace IBKRTrader.UI; /// /// Löst die toolkit-neutralen -Schlüssel gegen die Bildressourcen /// der Shell auf. Der Core kennt seit der Linux-Portierung keine Bilddaten mehr /// (System.Drawing.Image ist seit .NET 7 Windows-only) – er liefert nur noch den Schlüssel, /// die jeweilige Shell das Bild. /// /// Die Avalonia-Shell bekommt ein gleichnamiges Gegenstück mit denselben Schlüsseln /// und denselben PNG-Dateien, sodass Core und Module unverändert bleiben. /// public static class ViewIcons { /// Symbol-Schlüssel → Bildressource aus Resources/. private static readonly Dictionary ImageByKey = new(StringComparer.OrdinalIgnoreCase) { ["dashboard"] = Properties.Resources.dashboard, ["workers"] = Properties.Resources.system_time, ["logs"] = Properties.Resources.error_log, ["settings"] = Properties.Resources.setting_tools, ["congresstrading"] = Properties.Resources.cross_reference, ["accounting"] = Properties.Resources.coins_in_hand, ["supervisor"] = Properties.Resources.token_quantifier, }; /// Standard-Symbolschlüssel je View-ID – greift für Views, die keinen eigenen setzen. private static readonly Dictionary DefaultKeyByViewId = new(StringComparer.OrdinalIgnoreCase) { ["core.dashboard"] = "dashboard", ["core.workers"] = "workers", ["core.logs"] = "logs", ["core.settings"] = "settings", ["congresstrading.main"] = "congresstrading", ["accounting.main"] = "accounting", ["supervisor.main"] = "supervisor", }; /// Bild zum Schlüssel, oder null (kein Symbol / unbekannter Schlüssel). public static Image? Resolve(string? iconKey) => iconKey != null && ImageByKey.TryGetValue(iconKey, out var img) ? img : null; /// Setzt bei allen registrierten Views den Standard-Schlüssel, falls noch keiner gesetzt ist. public static void AssignDefaults(IModuleUiHost host) { foreach (var view in host.Views) if (view.IconKey is null && DefaultKeyByViewId.TryGetValue(view.Id, out var key)) view.IconKey = key; } }