示例#1
0
        public VariableFilterCtrl()
        {
            InitializeComponent();

            this.engine = engine;
            this.cmbCatFilter.SelectedIndexChanged += new EventHandler(cmbCatFilter_SelectedIndexChanged);
        }
示例#2
0
        public TodoHdeEnumVariable(INode2 node, TodoEngine engine, string varname)
        {
            this.node = node;
            //this.var = var;

            this.valuepin = this.node.FindPin("Input Enum");

            enumname = this.valuepin.SubType.Split(",".ToCharArray())[1].Trim();

            int ecnt = EnumManager.GetEnumEntryCount(enumname);

            for (int i = 0; i < ecnt; i++)
            {
                string eval = EnumManager.GetEnumEntryString(enumname, i);
                string vn   = varname + "-" + eval;

                TodoVariable var = engine.GetVariableByName(vn);
                if (var == null)
                {
                    var          = new TodoVariable(vn);
                    var.Category = "Global";
                    engine.RegisterVariable(var, false);
                }

                var.ValueChanged += var_ValueChanged;
                vars.Add(var);
            }
            //this.valuepin.
            //this.valuepin.Type

            //var.ValueChanged += var_ValueChanged;
            //var.VariableUpdated += var_VariableUpdated;
        }
示例#3
0
        public static string Persist(TodoEngine engine, string[] variables)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<TodoPreset>");

            //Modules



            //Variables
            sb.AppendLine("<TodoVariables>");

            foreach (TodoVariable var in engine.Variables)
            {
                if (variables.Contains(var.Name))
                {
                    PersistVariable(sb, var);
                }
            }

            sb.AppendLine("</TodoVariables>");
            sb.AppendLine("</TodoPreset>");

            return(sb.ToString());
        }
示例#4
0
        public static void LoadXml(TodoEngine engine, string xml)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);

            XmlNode root = doc.DocumentElement;

            //node = node.ChildNodes[0];
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.Name == "TodoVariables")
                {
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        LoadVariable(engine, child);
                    }
                }

                if (node.Name == "TodoModules")
                {
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        LoadModules(engine, child);
                    }
                }
            }
        }
示例#5
0
        private static void LoadVariable(TodoEngine engine, XmlNode node, List <TodoPreset> varnames)
        {
            TodoPreset preset = new TodoPreset();

            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "Name")
                {
                    preset.Name = child.InnerText;
                }
                if (child.Name == "Category")
                {
                    preset.Category = child.InnerText;
                }
                if (child.Name == "Value")
                {
                    preset.Value = double.Parse(child.InnerText);
                }
            }

            TodoVariable var = engine.GetVariableByName(preset.Name);

            if (var != null)
            {
                var.SetValue(null, preset.Value);
                varnames.Add(preset);
            }
        }
示例#6
0
        private static void LoadOscModule(TodoEngine engine, XmlNode node)
        {
            //Stop module for reload
            engine.Osc.SetEnabled(false);
            engine.Osc.SetOutputEnabled(false);
            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "Input")
                {
                    engine.Osc.AutoStartInput = BoolExtension.ParseEnglish(child.Attributes["AutoStart"].Value);
                    engine.Osc.LocalPort      = int.Parse(child.Attributes["Port"].Value);
                }

                if (child.Name == "Output")
                {
                    engine.Osc.AutoStartOutput = BoolExtension.ParseEnglish(child.Attributes["AutoStart"].Value);
                    engine.Osc.RemotePort      = int.Parse(child.Attributes["Port"].Value);
                }
            }

            if (engine.Osc.AutoStartInput)
            {
                engine.Osc.SetEnabled(true);
            }
            if (engine.Osc.AutoStartOutput)
            {
                engine.Osc.SetOutputEnabled(true);
            }
        }
示例#7
0
        public void Evaluate(int SpreadMax)
        {
            if (this.FInvalidateConnect)
            {
                if (this.FInEngine.PluginIO.IsConnected)
                {
                    this.engine = this.FInEngine[0];

                    foreach (INode2 n in this.FHDEHost.ExposedNodeService.Nodes)
                    {
                        this.NodeAddedCB(n);
                    }
                }
                else
                {
                    this.Cleanup();

                    this.engine = null;
                }

                this.FInvalidateConnect = false;
            }

            foreach (TodoHdeVariable hdevar in this.nodes.Values)
            {
                hdevar.Update();
            }
            foreach (TodoHdeEnumVariable hdeenum in this.enums.Values)
            {
                hdeenum.Update();
            }
        }
示例#8
0
        public static string Persist(TodoEngine engine)
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendLine("<TodoMap>");

            //Modules
            sb.AppendLine("<TodoModules>");
            PersistOsc(sb, engine.Osc);
            PersistMidi(sb, engine.Midi);
            sb.AppendLine("</TodoModules>");


            //Variables
            sb.AppendLine("<TodoVariables>");

            foreach (TodoVariable var in engine.Variables)
            {
                PersistVariable(sb, var);
            }

            sb.AppendLine("</TodoVariables>");
            sb.AppendLine("</TodoMap>");

            return(sb.ToString());
        }
示例#9
0
        private static void LoadModules(TodoEngine engine, XmlNode node)
        {
            if (node.Name == "Osc")
            {
                LoadOscModule(engine, node);
            }

            if (node.Name == "Midi")
            {
                LoadMidiModule(engine, node);
            }
        }
示例#10
0
        public TodoHdeEnumVariable(INode2 node, TodoEngine engine, IHDEHost hde)
        {
            this.node = node;
            this.hde  = hde;
            //this.var = var;

            this.valuepin = this.node.FindPin("Input Enum");

            string enumname = this.valuepin.SubType.Split("|".ToCharArray())[1];
            //this.valuepin.
            //this.valuepin.Type

            //var.ValueChanged += var_ValueChanged;
            //var.VariableUpdated += var_VariableUpdated;
        }
示例#11
0
        public TodoHdeVariable(INode2 node, TodoEngine engine, string varname)
        {
            this.node = node;

            this.valuepin = this.node.FindPin("Y Input Value");
            if (this.valuepin.SliceCount == 1)
            {
                TodoVariable var = engine.GetVariableByName(varname);
                if (var == null)
                {
                    var          = new TodoVariable(varname);
                    var.Category = "Global";
                    engine.RegisterVariable(var, false);
                }

                var.ValueChanged    += var_ValueChanged;
                var.VariableUpdated += var_VariableUpdated;

                this.vars.Add(var);
            }
            else if (this.valuepin.SliceCount > 1)
            {
                for (int i = 0; i < this.valuepin.SliceCount; i++)
                {
                    string vn = varname + "-" + i.ToString();

                    TodoVariable var = engine.GetVariableByName(vn);
                    if (var == null)
                    {
                        var          = new TodoVariable(vn);
                        var.Category = "Global";
                        engine.RegisterVariable(var, false);
                    }

                    var.ValueChanged    += var_ValueChanged;
                    var.VariableUpdated += var_VariableUpdated;

                    this.vars.Add(var);
                }
            }

            this.minpin = this.node.FindPin("Minimum");
            this.maxpin = this.node.FindPin("Maximum");

            this.minpin.Changed += minpin_Changed;
            this.maxpin.Changed += maxpin_Changed;
        }
示例#12
0
        public TodoMidiDevice(TodoEngine engine) : base(engine)
        {
            this.usb             = new UsbDetector();
            this.usb.UsbRemoved += usb_UsbRemoved;
            this.usb.UsbAdded   += usb_UsbAdded;
            this.usb.Start();


            for (int i = 0; i < InputDevice.DeviceCount; i++)
            {
                this.inputstatus.Add(eTodoMidiStatus.Connected);
                this.inputdevname.Add(InputDevice.GetDeviceCapabilities(i).name);
            }

            for (int i = 0; i < OutputDevice.DeviceCount; i++)
            {
                this.outputstatus.Add(eTodoMidiStatus.Connected);
                this.outputdevname.Add(OutputDevice.GetDeviceCapabilities(i).name);
            }
        }
示例#13
0
        public void Initialize(TodoEngine engine, ImageList iml)
        {
            this.ImageList  = iml;
            this.CheckBoxes = true;
            this.engine     = engine;

            this.ItemDrag       += new ItemDragEventHandler(TodoTreeView_ItemDrag);
            this.DragOver       += new DragEventHandler(TodoTreeView_DragOver);
            this.DragEnter      += new DragEventHandler(TodoTreeView_DragEnter);
            this.NodeMouseClick += new TreeNodeMouseClickEventHandler(TodoTreeView_NodeMouseClick);


            this.engine.VariableRegistered     += new TodoVariableEventDelegate(engine_VariableRegistered);
            this.engine.VariableMappingChanged += new TodoInputChangedEventDelegate(engine_VariableMappingChanged);
            this.CreateBaseTree();

            foreach (TodoVariable var in this.engine.Variables)
            {
                this.AddVariable(var);
            }
        }
示例#14
0
        private static void LoadMidiModule(TodoEngine engine, XmlNode node)
        {
            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "Inputs")
                {
                    foreach (XmlNode n in child.ChildNodes)
                    {
                        if (n.Name == "Input")
                        {
                            engine.Midi.SetInputAutoStart(n.Attributes["AutoStart"].Value, true);
                            //engine.Osc.AutoStartInput = bool.Parse(child.Attributes["AutoStart"].Value);
                            //engine.Osc.LocalPort = int.Parse(child.Attributes["Port"].Value);
                        }
                    }
                }

                if (child.Name == "Outputs")
                {
                    foreach (XmlNode n in child.ChildNodes)
                    {
                        if (n.Name == "Output")
                        {
                            engine.Midi.SetOutputAutoStart(n.Attributes["AutoStart"].Value, true);
                            //engine.Osc.AutoStartOutput = bool.Parse(child.Attributes["AutoStart"].Value);
                            //engine.Osc.RemotePort = int.Parse(child.Attributes["Port"].Value);
                        }
                    }
                }
            }

            if (engine.Osc.AutoStartInput)
            {
                engine.Osc.SetEnabled(true);
            }
            if (engine.Osc.AutoStartOutput)
            {
                engine.Osc.SetOutputEnabled(true);
            }
        }
示例#15
0
        public static List <TodoPreset> LoadXml(TodoEngine engine, string xml)
        {
            List <TodoPreset> varnames = new List <TodoPreset>();
            XmlDocument       doc      = new XmlDocument();

            doc.LoadXml(xml);

            XmlNode root = doc.DocumentElement;

            //node = node.ChildNodes[0];
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.Name == "TodoVariables")
                {
                    foreach (XmlNode child in node.ChildNodes)
                    {
                        LoadVariable(engine, child, varnames);
                    }
                }
            }
            return(varnames);
        }
示例#16
0
 public TodoOscDevice(TodoEngine engine) : base(engine)
 {
 }
示例#17
0
 public AbstractTodoDevice(TodoEngine engine)
 {
     this.engine = engine;
 }
示例#18
0
        private static void LoadInputs(TodoEngine engine, XmlNode node, TodoVariable var)
        {
            string type = node.Attributes["Type"].Value;


            if (type == "OSC")
            {
                TodoOscInput osc = new TodoOscInput(var);

                foreach (XmlNode child in node.ChildNodes)
                {
                    if (child.Name == "Message")
                    {
                        osc.Message = child.InnerText;
                    }
                    if (child.Name == "TakeOverMode")
                    {
                        osc.TakeOverMode = (eTodoLocalTakeOverMode)Enum.Parse(typeof(eTodoLocalTakeOverMode), child.InnerText);
                    }
                    if (child.Name == "FeedbackMode")
                    {
                        osc.FeedBackMode = (eTodoLocalFeedBackMode)Enum.Parse(typeof(eTodoLocalFeedBackMode), child.InnerText);
                    }
                }
                engine.Osc.RegisterInput(osc);
            }

            if (type == "Midi")
            {
                TodoMidiInput midi = new TodoMidiInput(var);
                midi.Device = "Any";
                foreach (XmlNode child in node.ChildNodes)
                {
                    if (child.Name == "ControlType")
                    {
                        midi.ControlType = (eTodoMidiType)Enum.Parse(typeof(eTodoMidiType), child.InnerText);
                    }
                    if (child.Name == "ControlValue")
                    {
                        midi.ControlValue = Convert.ToInt32(child.InnerText);
                    }
                    if (child.Name == "Channel")
                    {
                        midi.MidiChannel = Convert.ToInt32(child.InnerText);
                    }
                    if (child.Name == "Device")
                    {
                        midi.Device = child.InnerText;
                    }
                    if (child.Name == "TakeOverMode")
                    {
                        midi.TakeOverMode = (eTodoLocalTakeOverMode)Enum.Parse(typeof(eTodoLocalTakeOverMode), child.InnerText);
                    }
                    if (child.Name == "FeedbackMode")
                    {
                        midi.FeedBackMode = (eTodoLocalFeedBackMode)Enum.Parse(typeof(eTodoLocalFeedBackMode), child.InnerText);
                    }
                }
                engine.Midi.RegisterInput(midi);
            }
        }
示例#19
0
        private static void LoadVariable(TodoEngine engine, XmlNode node)
        {
            TodoVariable var = new TodoVariable();

            var.Inputs = new List <AbstractTodoInput>();

            foreach (XmlNode child in node.ChildNodes)
            {
                if (child.Name == "Name")
                {
                    var.Name = child.InnerText;
                }
                if (child.Name == "Category")
                {
                    var.Category = child.InnerText;
                }
                if (child.Name == "AllowFeedBack")
                {
                    var.AllowFeedBack = BoolExtension.ParseEnglish(child.InnerText);
                }
                if (child.Name == "Default")
                {
                    var.Default = Convert.ToDouble(child.InnerText, CultureInfo.InvariantCulture);
                }
                if (child.Name == "MinValue")
                {
                    var.Mapper.MinValue = Convert.ToDouble(child.InnerText, CultureInfo.InvariantCulture);
                }
                if (child.Name == "MaxValue")
                {
                    var.Mapper.MaxValue = Convert.ToDouble(child.InnerText, CultureInfo.InvariantCulture);
                }
                if (child.Name == "TweenMode")
                {
                    var.Mapper.TweenMode = (eTweenMode)Enum.Parse(typeof(eTweenMode), child.InnerText);
                }
                if (child.Name == "EaseMode")
                {
                    var.Mapper.EaseMode = (eTweenEaseMode)Enum.Parse(typeof(eTweenEaseMode), child.InnerText);
                }
                if (child.Name == "TakeOverMode")
                {
                    var.TakeOverMode = (eTodoGlobalTakeOverMode)Enum.Parse(typeof(eTodoGlobalTakeOverMode), child.InnerText);
                }
                if (child.Name == "TodoInputs")
                {
                    foreach (XmlNode input in child.ChildNodes)
                    {
                        LoadInputs(engine, input, var);
                    }
                }
            }

            if (var.Category == null)
            {
                var.Category = "Global";
            }
            else
            {
                if (var.Category.Length == 0)
                {
                    var.Category = "Global";
                }
            }
            engine.RegisterVariable(var, false);
            var.SetDefault();

            //foreach (AbstractTodoInput ti in var.Inputs)
            //{
            //    engine.RegisterInput(ti);
            //}
        }
示例#20
0
 public TodoOscTreeController(TodoEngine engine)
 {
     this.engine = engine;
     engine.Osc.OscDataReceived += new OscReceivedDelegate(Osc_OscDataReceived);
 }
示例#21
0
 public TodoCategoryFilter(TodoEngine engine)
 {
     this.engine = engine;
 }