47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
#nullable enable
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using T3.Core.Model;
|
|
using T3.Core.Operator;
|
|
|
|
namespace T3.Editor.UiModel;
|
|
|
|
internal static class SymbolUiRegistry
|
|
{
|
|
public static SymbolUi GetSymbolUi(this Instance instance) => instance.Symbol.GetSymbolUi();
|
|
|
|
|
|
public static bool TryGetSymbolUi(this Symbol symbol, [NotNullWhen(true)] out SymbolUi? symbolUi)
|
|
{
|
|
var id = symbol.Id;
|
|
var package = (EditorSymbolPackage)symbol.SymbolPackage;
|
|
return package.TryGetSymbolUi(id, out symbolUi);
|
|
}
|
|
|
|
|
|
public static SymbolUi GetSymbolUi(this Symbol symbol)
|
|
{
|
|
var id = symbol.Id;
|
|
var package = (EditorSymbolPackage)symbol.SymbolPackage;
|
|
if (package.TryGetSymbolUi(id, out var symbolUi))
|
|
return symbolUi!;
|
|
|
|
throw new Exception($"Can't find symbol ui for symbol {id}");
|
|
}
|
|
|
|
public static bool TryGetSymbolUi(Guid symbolId, [NotNullWhen(true)] out SymbolUi? symbolUi)
|
|
{
|
|
foreach(var package in SymbolPackage.AllPackages)
|
|
{
|
|
if (package is not EditorSymbolPackage symbolPackage)
|
|
continue;
|
|
|
|
if (symbolPackage.TryGetSymbolUi(symbolId, out symbolUi))
|
|
return true;
|
|
}
|
|
symbolUi = null;
|
|
return false;
|
|
}
|
|
|
|
public static SymbolUi.Child? GetChildUi(this Instance instance) => instance.SymbolChild?.GetChildUi();
|
|
public static SymbolUi.Child GetChildUi(this Symbol.Child symbolChild) => symbolChild.Parent!.GetSymbolUi().ChildUis[symbolChild.Id];
|
|
} |