Ejemplo n.º 1
0
        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) {
                    }
                }
        }