public static Dictionary <string, OverlayVariableBaseModel> ProcessVariables(XmlNode vlNode, DirectoryInfo startDirectory) { Dictionary <string, OverlayVariableBaseModel> variableDictionary = new Dictionary <string, OverlayVariableBaseModel>(); foreach (XmlNode vNode in vlNode.ChildNodes) { OverlayVariableBaseModel ov = null; switch (vNode.LocalName) { case "Counter": ov = new OverlayCounterViewModel(); break; case "DropDown": ov = new OverlayDropDownViewModel(); break; case "String": ov = new OverlayStringViewModel(); break; case "ItemSelector": ov = new OverlayItemSelectorViewModel(); break; } if (ov != null) { try { ov.FromXML(vNode); } catch (InvalidXMLValueException ex) { MessageBox.Show(ex.Message); throw new VariableParseException(VariableParseException.Reason.InvalidXML); } try { variableDictionary.Add(ov.Name, ov); } catch (ArgumentException) { if (ov.Name == null) { throw new VariableParseException(VariableParseException.Reason.NullVariable); } else { throw new VariableParseException(VariableParseException.Reason.DuplicateVariable); } } } } return(variableDictionary); }
private void OverlayVariable_VariableUpdated(OverlayVariableBaseModel sender) { // Call update variables on each overlay Application.Current.Dispatcher.Invoke(new Action(delegate() { foreach (OverlayWindow o in overlayList) ((OverlayWindowModel) o.DataContext).UpdateVariables(variableDictionary); }) ); if (VariableUpdated != null) VariableUpdated(sender); }
// Virtual event handlers should be called in addition if overriden. // Send an update packet protected virtual void OverlaySettings_VariableUpdated(OverlayVariableBaseModel ov) { if (Connection != null && EncryptedStream != null) { Dictionary<string, object> updateParams = new Dictionary<string, object>(); updateParams["variableName"] = ov.Name; updateParams["variableValue"] = ov.StringValue; try { UpdateVariableCommand.Instance.SendCommand(EncryptedStream, updateParams); } catch (ObjectDisposedException) { } catch (InvalidOperationException) { } } }