Beispiel #1
0
 public static ObservableCollection <vMixControl> LoadController(string fileName, IList <vMixFunctionReference> functions, out MainWindowSettings windowSettings)
 {
     windowSettings = null;
     try
     {
         var _controls = new ObservableCollection <vMixControl>();
         using (var stream = File.OpenRead(fileName))
         {
             return(LoadController(stream, functions, out windowSettings));
         }
     }
     catch (Exception e)
     {
         //Emergency controller
         _logger.Error(e, "Error while loading controller!");
         windowSettings = new MainWindowSettings()
         {
             Width = 512 + 16 + 16 + 8, Height = 512 + 196 + 48
         };
         var btn = new vMixControlButton()
         {
             IsColorized = true, Color = vMixWidgetSettingsViewModel.Colors[11].A, BorderColor = vMixWidgetSettingsViewModel.Colors[11].B, Name = "Report Bug", Top = 16 + 16 + 8 + 512, Left = 8, Width = 512, IsCaptionVisible = false, IsCaptionOn = false
         };
         btn.Commands.Add(new vMixControlButtonCommand()
         {
             Action = new vMixFunctionReference()
             {
                 Function = NativeFunctions.WIN, Native = true
             },
             StringParameter = "https://forums.vmix.com/postmessage?t=6468&f=8"
         });
         return(new ObservableCollection <vMixControl>()
         {
             new vMixControlRegion()
             {
                 Text = string.Format("{0}\n\n\nP.S. Don't be afraid, your controller is OK.\nReport about it on forum.", string.Join("", SecurityElement.Escape(e.ToString()).Select(x => (XmlConvert.IsXmlChar(x)?x.ToString():"0x" + Convert.ToByte(x).ToString())).ToArray())), Width = 512, Height = 512, Top = 8, Left = 8, Color = Colors.Red, Name = "Error while loading controller!"
             },
             btn
         });
     }
 }
Beispiel #2
0
 public static void SaveController(string fileName, ObservableCollection <vMixControl> _controls, MainWindowSettings _windowSettings)
 {
     using (var stream = new FileStream(fileName, FileMode.Create))
     {
         _logger.Info("Saving controller.");
         var writer = XmlWriter.Create(stream);
         {
             writer.WriteStartDocument();
             writer.WriteStartElement("Root");
             writer.WriteStartElement("Controls");
             XmlSerializer s = new XmlSerializer(typeof(ObservableCollection <vMixControl>));
             _logger.Info("Writing widgets.");
             s.Serialize(writer, _controls);
             writer.WriteEndElement();
             writer.WriteStartElement("WindowSettings");
             s = new XmlSerializer(typeof(MainWindowSettings));
             _logger.Info("Writing window settings.");
             s.Serialize(writer, _windowSettings);
             writer.WriteEndElement();
             writer.WriteEndElement();
             writer.WriteEndDocument();
             writer.Flush();
         }
     }
 }
Beispiel #3
0
        public static ObservableCollection <vMixControl> LoadController(string fileName, IList <vMixFunctionReference> functions, out MainWindowSettings windowSettings)
        {
            var _controls = new ObservableCollection <vMixControl>();

            using (var stream = File.OpenRead(fileName))
            {
                _logger.Info("Controller loading.");
                var reader = XmlReader.Create(stream);
                {
                    reader.ReadStartElement();
                    reader.ReadStartElement();
                    _logger.Info("Loading widgets.");
                    XmlSerializer s          = new XmlSerializer(typeof(ObservableCollection <vMixControl>));
                    var           collection = (ObservableCollection <vMixControl>)s.Deserialize(reader);
                    foreach (var item in collection)
                    {
                        _controls.Add(item);
                        if (functions != null && item is vMixControlButton)
                        {
                            var btn = item as vMixControlButton;
                            foreach (var command in btn.Commands)
                            {
                                var newFunction = functions.Where(x => x.Function == command.Action.Function).FirstOrDefault();
                                if (newFunction != null)
                                {
                                    command.Action = newFunction;
                                }
                            }
                        }
                    }
                    reader.ReadEndElement();
                    reader.ReadStartElement();

                    _logger.Info("Loading window settings.");
                    s = new XmlSerializer(typeof(MainWindowSettings));


                    windowSettings = (MainWindowSettings)s.Deserialize(reader);

                    reader.ReadEndElement();
                    reader.ReadEndElement();

                    _logger.Info("Configuring API.");
                }
            }
            return(_controls);
        }
Beispiel #4
0
        public static ObservableCollection <vMixControl> LoadController(Stream stream, IList <vMixFunctionReference> functions, out MainWindowSettings windowSettings)
        {
            var _controls = new ObservableCollection <vMixControl>();

            _logger.Info("Controller loading.");
            var reader = XmlReader.Create(stream);

            {
                reader.ReadStartElement();
                reader.ReadStartElement();
                _logger.Info("Loading widgets.");
                XmlSerializer s          = new XmlSerializer(typeof(ObservableCollection <vMixControl>));
                var           collection = (ObservableCollection <vMixControl>)s.Deserialize(reader);
                foreach (var item in collection)
                {
                    _controls.Add(item);
                    if (functions != null && item is vMixControlButton)
                    {
                        var btn = item as vMixControlButton;
                        foreach (var command in btn.Commands)
                        {
                            var newFunction = functions.Where(x => x.Function == command.Action.Function || (x.Aliases?.Split(',').Contains(command.Action.Function) ?? false)).FirstOrDefault();
                            if (newFunction != null)
                            {
                                command.Action = newFunction;
                            }
                        }
                    }
                }
                reader.ReadEndElement();
                reader.ReadStartElement();

                _logger.Info("Loading window settings.");
                s = new XmlSerializer(typeof(MainWindowSettings));

                var settings = (MainWindowSettings)s.Deserialize(reader);

                windowSettings = settings;

                reader.ReadEndElement();

                if (reader.IsStartElement())
                {
                    reader.ReadStartElement();

                    s = new XmlSerializer(typeof(ObservableCollection <Pair <string, string> >));
                    var globals = (ObservableCollection <Pair <string, string> >)s.Deserialize(reader);
                    //Add or update global variable, according to controller variables
                    foreach (var item in globals)
                    {
                        if (GlobalVariablesViewModel._variables.Count(x => x.A == item.A) == 0)
                        {
                            GlobalVariablesViewModel._variables.Add(item);
                        }
                        else
                        {
                            GlobalVariablesViewModel._variables.Where(x => x.A == item.A).First().B = item.B;
                        }
                    }


                    reader.ReadEndElement();
                }

                reader.ReadEndElement();

                _logger.Info("Configuring API.");
            }
            return(_controls);
        }
Beispiel #5
0
        public static ObservableCollection <vMixControl> LoadController(string fileName, IList <vMixFunctionReference> functions, out MainWindowSettings windowSettings)
        {
            var _controls = new ObservableCollection <vMixControl>();

            using (var stream = File.OpenRead(fileName))
            {
                return(LoadController(stream, functions, out windowSettings));
            }
        }
Beispiel #6
0
        public static void SaveController(Stream stream, ObservableCollection <vMixControl> _controls, MainWindowSettings _windowSettings)
        {
            _logger.Info("Saving controller.");
            var writer = XmlWriter.Create(stream);
            {
                writer.WriteStartDocument();
                writer.WriteStartElement("Root");
                writer.WriteStartElement("Controls");
                XmlSerializer s = new XmlSerializer(typeof(ObservableCollection <vMixControl>));
                _logger.Info("Writing widgets.");
                s.Serialize(writer, _controls);
                writer.WriteEndElement();
                writer.WriteStartElement("WindowSettings");
                s = new XmlSerializer(typeof(MainWindowSettings));
                _logger.Info("Writing window settings.");
                s.Serialize(writer, _windowSettings);
                writer.WriteEndElement();

                writer.WriteStartElement("GlobalVariables");
                s = new XmlSerializer(typeof(ObservableCollection <Pair <string, string> >));
                _logger.Info("Writing global variables.");
                s.Serialize(writer, GlobalVariablesViewModel._variables);
                writer.WriteEndElement();

                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
            }
        }
Beispiel #7
0
 public static void SaveController(string fileName, ObservableCollection <vMixControl> _controls, MainWindowSettings _windowSettings)
 {
     using (var stream = new FileStream(fileName, FileMode.Create))
     {
         SaveController(stream, _controls, _windowSettings);
     }
 }