From 644674363d681da9edbc3cea47653552055b5095 Mon Sep 17 00:00:00 2001 From: Frame Date: Sat, 28 Mar 2026 13:47:22 +0100 Subject: [PATCH] apply "groupList" attribute in 'VariableCellFactory.ParseXml' --- .../VariablePanel/VariableCellFactory.cs | 4 +-- STROOP.Variables/VariableSpecialDictionary.cs | 27 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/STROOP.Variables/VariablePanel/VariableCellFactory.cs b/STROOP.Variables/VariablePanel/VariableCellFactory.cs index 2ef662c98..faefffc53 100644 --- a/STROOP.Variables/VariablePanel/VariableCellFactory.cs +++ b/STROOP.Variables/VariablePanel/VariableCellFactory.cs @@ -116,8 +116,8 @@ public static (string name, IVariable var) ParseXml(XElement element, VariableSp var specialType = element.Attribute(XName.Get("specialType"))?.Value; return (element.Value, specialType != null - ? sepcialVariables.TryGetValue(specialType, out var special) - ? special + ? sepcialVariables.TryGetValue(specialType, out var specialFactory) + ? specialFactory(element.Attribute(XName.Get("groupList"))?.Value ?? "Special") : null : FromXml(element).view); } diff --git a/STROOP.Variables/VariableSpecialDictionary.cs b/STROOP.Variables/VariableSpecialDictionary.cs index b96e62e71..85ad56e3d 100644 --- a/STROOP.Variables/VariableSpecialDictionary.cs +++ b/STROOP.Variables/VariableSpecialDictionary.cs @@ -7,19 +7,24 @@ public class VariableSpecialDictionary { public static VariableSpecialDictionary Instance = new(); - private readonly Dictionary _dictionary; + private readonly Dictionary> _dictionary; - public VariableSpecialDictionary() => _dictionary = new Dictionary(); + public VariableSpecialDictionary() => _dictionary = new Dictionary>(); - public bool TryGetValue(string key, out IVariable getterSetter) - => _dictionary.TryGetValue(key, out getterSetter); + public bool TryGetValue(string key, out Func variableFactory) + => _dictionary.TryGetValue(key, out variableFactory); public void Add(string key, IVariable.ValueGetter getter, IVariable.ValueSetter setter, string? subclass = null) { - _dictionary[key] = new CustomVariable(subclass.DefaultIfNull()) + _dictionary[key] = groupList => { - getter = getter, - setter = setter, + var result = new CustomVariable(subclass.DefaultIfNull()) + { + getter = getter, + setter = setter, + }; + result.SetValueByKey("groupList", groupList); + return result; }; } @@ -34,11 +39,5 @@ public void Add(string key, string baseAddressType, Func getter, Fun ); public void Add(string key, Func getter, IVariable.ValueSetter setter, string? subclass = null) - { - _dictionary[key] = new CustomVariable(subclass.DefaultIfNull()) - { - getter = () => getter().Yield(), - setter = setter, - }; - } + => Add(key, () => getter().Yield(), setter, subclass); }