void SetCircuit(Circuit.Circuit circuit) { this.circuit = circuit; InteractiveComponents.Clear(); Dictionary <string, ButtonWrapper> buttonGroups = new Dictionary <string, ButtonWrapper>(); foreach (Circuit.Component i in circuit.Components) { if (i is IPotControl) { InteractiveComponents.Add(new PotWrapper((i as IPotControl), i.Name)); } else if (i is IButtonControl) { IButtonControl button = (i as IButtonControl); ButtonWrapper wrapper = null; if (string.IsNullOrEmpty(button.Group)) { wrapper = new ButtonWrapper(i.Name); InteractiveComponents.Add(wrapper); } else if (buttonGroups.ContainsKey(button.Group)) { wrapper = buttonGroups[button.Group]; } else { wrapper = new ButtonWrapper(button.Group); buttonGroups[button.Group] = wrapper; InteractiveComponents.Add(wrapper); } wrapper.AddButton(button); } } needRebuild = true; }
void SetCircuit(Circuit.Circuit circuit) { this.circuit = circuit; InteractiveComponents.Clear(); Dictionary <string, ButtonWrapper> buttonGroups = new Dictionary <string, ButtonWrapper>(); Dictionary <string, PotWrapper> potGroups = new Dictionary <string, PotWrapper>(); foreach (Circuit.Component i in circuit.Components) { if (i is IPotControl pot) { if (string.IsNullOrEmpty(pot.Group)) { InteractiveComponents.Add(new PotWrapper(pot, i.Name)); } else if (potGroups.TryGetValue(pot.Group, out var wrapper)) { wrapper.AddSection(pot); } else { wrapper = new PotWrapper(pot, pot.Group); potGroups.Add(pot.Group, wrapper); InteractiveComponents.Add(wrapper); } } else if (i is IButtonControl button) { ButtonWrapper wrapper; if (string.IsNullOrEmpty(button.Group)) { if (button.NumPositions == 2) { wrapper = new DoubleThrowWrapper(button, i.Name); InteractiveComponents.Add(wrapper); } else { wrapper = new MultiThrowWrapper(button, i.Name); InteractiveComponents.Add(wrapper); } } else if (buttonGroups.ContainsKey(button.Group)) { wrapper = buttonGroups[button.Group]; wrapper.AddSection(button); } else { if (button.NumPositions == 2) { wrapper = new DoubleThrowWrapper(button, button.Group); } else { wrapper = new MultiThrowWrapper(button, i.Name); } buttonGroups[button.Group] = wrapper; InteractiveComponents.Add(wrapper); } } } needRebuild = true; }