using System.Collections.Generic; using System.Drawing; using PolyTrader.Core.Modularity; namespace PolyTraderSharp.Ui { /// /// Löst die toolkit-neutralen -Schlüssel gegen die WinForms- /// Bildressourcen der App auf. Diese Zuordnung ist die einzige Stelle, an der Views und /// Bilddaten zusammenkommen – Core und Module kennen nur noch den Schlüssel als Zeichenkette. /// /// Die Avalonia-Shell bekommt später ein eigenes Gegenstück mit denselben Schlüsseln; die /// Registrierungen in Core und Modulen bleiben dabei unverändert. /// internal static class ViewIcons { /// Symbol-Schlüssel → Bildressource. Unbekannte Schlüssel liefern null (Text-only-Menüeintrag). private static readonly Dictionary Map = new() { ["dashboard"] = Properties.Resources.dashboard, ["settings"] = Properties.Resources.setting_tools, ["terminal"] = Properties.Resources.error_log, ["jobs"] = Properties.Resources.system_time, ["accounting"] = Properties.Resources.coins_in_hand, ["copytrading"] = Properties.Resources.cross_reference, ["resolutionfarming"] = Properties.Resources.file_start_workflow, ["supervisor"] = Properties.Resources.emotion_batman, }; /// /// Standard-Symbolschlüssel je View-ID. Greift für Views, die selbst keinen /// setzen – u.a. die Modul-Fenster, die die App-Ressourcen /// nicht kennen. Ersetzt die frühere Icon-Zuweisung in Program.AssignMenuIcons. /// private static readonly Dictionary DefaultKeyByViewId = new() { ["core.dashboard"] = "dashboard", ["core.settings"] = "settings", ["core.terminal"] = "terminal", ["core.jobs"] = "jobs", ["accounting.main"] = "accounting", ["copytrading.main"] = "copytrading", ["resolutionfarming.main"] = "resolutionfarming", ["supervisor.main"] = "supervisor", }; /// Bildressource zum Schlüssel, oder null (kein Symbol / unbekannter Schlüssel). public static Image? Resolve(string? iconKey) => iconKey != null && Map.TryGetValue(iconKey, out var img) ? img : null; /// /// Setzt bei allen registrierten Views den Standard-Symbolschlüssel, sofern noch keiner gesetzt ist. /// public static void AssignDefaults(IModuleUiHost uiHost) { foreach (var view in uiHost.Views) if (view.IconKey == null && DefaultKeyByViewId.TryGetValue(view.Id, out var key)) view.IconKey = key; } } }