public StartNode(VirtualControl host, bool addDirectly = false) : base(host, NodeTypes.Root) { Background = Brushes.WhiteSmoke; Title = "Start"; AddExecPort(this, "", PortTypes.Output, "Execute first node"); Description = "The root node."; }
public VariableHoster(VirtualControl host, ref VariableItem variable) { if (host != null) { Host = host; } Style = (Style)FindResource("VariableHoster"); _item = variable; Loaded += (t, y) => { var tb = (TextBlock)Template.FindName("VarName", this); var icon = (Border)Template.FindName("Icon", this); BuildIcons(_item.Type); CaptureMouse(); Move(); tb.Text = _item.Name; _ib.ImageSource = new BitmapImage( new Uri(_icon)); icon.Background = _ib; _positioner.Tick += (c, e) => Move(); _positioner.Interval = new TimeSpan(0); _positioner.Start(); }; MouseLeftButtonUp += VariableHoster_PreviewMouseUp; PreviewMouseMove += VariableHoster_PreviewMouseMove; }
public ReadCSV([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Title = "Read CSV"; Description = "Reads a CSV file and return a data frame."; Host = host; Category = "CSV"; AddObjectPort(this, "File Path", PortTypes.Input, RTypes.Character, false, _tb); AddObjectPort(this, "Headers", PortTypes.Input, RTypes.Logical, false, _cb); AddObjectPort(this, "Character of separation", PortTypes.Input, RTypes.Character, false, _tc); AddObjectPort(this, "return", PortTypes.Output, RTypes.DataFrame, false); _tb.TextChanged += (s, e) => { InputPorts[0].Data.Value = _tb.Text; }; InputPorts[0].DataChanged += (s, e) => { if (_tb.Text != InputPorts[0].Data.Value) { _tb.Text = InputPorts[0].Data.Value; } GenerateCode(); }; InputPorts[2].DataChanged += (s, e) => { if (_tc.Text != InputPorts[2].Data.Value) { _tc.Text = InputPorts[2].Data.Value; } GenerateCode(); }; _cb.Checked += (s, e) => GenerateCode(); }
public Equal([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Title = "=="; Category = "Logic nodes"; Host = host; AddObjectPort(this, "", PortTypes.Input, RTypes.Generic, false); AddObjectPort(this, "", PortTypes.Input, RTypes.Generic, false); AddObjectPort(this, "==", PortTypes.Output, RTypes.Logical, true); MouseRightButtonDown += (sender, args) => GenerateCode(); foreach (var port in InputPorts) { port.DataChanged += (sender, args) => { GenerateCode(); } } ; InputPorts[1].LinkChanged += (sender, args) => { if (!InputPorts[1].Linked) { InputPorts[1].Data.Value = ""; } }; InputPorts[0].LinkChanged += (sender, args) => { if (!InputPorts[0].Linked) { InputPorts[0].Data.Value = ""; } }; }
public static void CreateObjectConnector(VirtualControl host, ObjectPort x, ObjectPort y, string connID = "", bool nullifyTempConn = true) { if (!y.MultipleConnectionsAllowed) { if (y.ConnectedConnectors.Count > 0) { y.ConnectedConnectors.ClearConnectors(); y.Linked = false; if (x != null) { x.Linked = false; } } } Connector conn = x.PortTypes == PortTypes.Output ? new ObjectsConnector(host, x, y) : new ObjectsConnector(host, y, x); conn.EndPort.ConnectedConnectors.Add(conn); conn.StartPort.ConnectedConnectors.Add(conn); conn.StartPort.CountOutConnectors++; conn.EndPort.CountOutConnectors++; host.TemObjectPort = null; TryCast(ref conn); y.Data.Value = x.Data.Value; host.ObjectConnectors.Add(conn as ObjectsConnector); if (connID != "") { conn.ID = connID; } }
public void EnableVirtualControl(ControllerTouchscreen player) { Debug.Assert(player.layout < virtualControls.Length, "Inappropriate layout index " + player.layout + " for controller " + player.name); VirtualControl virtualControl = virtualControls[player.layout]; virtualControl.gameObject.SetActive(true); player.SetVirtualControl(virtualControl); }
public ReturnNode(VirtualControl host, bool spontaneousAddition = true) : base(host, NodeTypes.Return, spontaneousAddition) { Background = Brushes.WhiteSmoke; Title = "Return"; Description = "This value will reflect the passed value as a return value."; AddExecPort(this, "", PortTypes.Input, ""); AddObjectPort(this, "return value", PortTypes.Input, RTypes.Generic, false); }
public Multiply([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Title = "Multiply"; Description = "Multiplies A and B."; Category = "Math nodes"; Host = host; AddObjectPort(this, "A", PortTypes.Input, RTypes.Numeric, false, _a); AddObjectPort(this, "B", PortTypes.Input, RTypes.Numeric, false, _b); AddObjectPort(this, "A * B", PortTypes.Output, RTypes.Numeric, true); MouseRightButtonDown += (sender, args) => GenerateCode(); _a.TextChanged += (sender, args) => { InputPorts[0].Data.Value = _a.Text; GenerateCode(); }; _b.TextChanged += (sender, args) => { InputPorts[1].Data.Value = _b.Text; GenerateCode(); }; foreach (var port in InputPorts) { port.DataChanged += (sender, args) => { GenerateCode(); } } ; InputPorts[1].LinkChanged += (sender, args) => { if (!InputPorts[1].Linked) { InputPorts[1].Data.Value = _b.Text; } }; InputPorts[0].LinkChanged += (sender, args) => { if (!InputPorts[0].Linked) { InputPorts[0].Data.Value = _a.Text; } }; InputPorts[0].DataChanged += (s, e) => { if (_a.Text != InputPorts[0].Data.Value) { _a.Text = InputPorts[0].Data.Value; } }; InputPorts[1].DataChanged += (s, e) => { if (_b.Text != InputPorts[1].Data.Value) { _b.Text = InputPorts[1].Data.Value; } }; }
public Vector1D([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Host = host; Title = "Vector 1D"; Category = "Vectors"; Description = "Contains a one-dimensional vector"; AddObjectPort(this, "return value", PortTypes.Output, RTypes.Generic, true, _tb); _tb.TextChanged += (sender, args) => OutputPorts[0].Data.Value = _tb.Text; }
public static void DeleteExecConnection(VirtualControl host, string id, bool deletedByBrain = false) { for (var index = 0; index < host.ExecutionConnectors.Count; index++) { var conn = host.ExecutionConnectors[index]; if (conn.ID == id) { conn.Delete(deletedByBrain); } } }
public SpaghettiDivider(VirtualControl host, Connector connector, bool spontaneousAddition = true) : base(host, NodeTypes.SpaghettiDivider, spontaneousAddition) { ObjectConnector = connector as ObjectsConnector; Host = host; Connector = connector; Start = connector.StartPort as ObjectPort; End = connector.EndPort as ObjectPort; connector.Delete(); Title = ""; var inPort = Connector.EndPort as ObjectPort; var outPort = Connector.StartPort as ObjectPort; if (outPort != null) { AddObjectPort(this, "", PortTypes.Input, outPort.Data.Type, true); } Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() => { NodesManager.CreateObjectConnector(host, InputPorts[0], outPort); NodesManager.CreateObjectConnector(host, inPort, InputPorts[0]); if (Host.NodesTree.IsVisible) { Host.NodesTree.Remove(); } InputPorts[0].IsEnabled = false; if (InputPorts.Count > 0) { if (InputPorts[0].ConnectedConnectors.Count > 0) { Connector.StartPort = InputPorts[0].ConnectedConnectors[0].StartPort; } } InputPorts[0].DataChanged += (ss, ee) => { End.Data.Value = InputPorts[0].Data.Value; foreach (var c in InputPorts[0].ConnectedConnectors) { c.Wire.HeartBeatsAnimation(false); } }; InputPorts[0].ConnectedConnectors.CollectionChanged += (ss, ee) => { }; var hint = Template.FindName("NodeHint", this) as Path; if (hint != null) { hint.Visibility = Visibility.Collapsed; } Height -= 33; Width -= 13; Canvas.SetTop(InputPortsPanel, -8); Canvas.SetLeft(InputPortsPanel, 3); })); }
public ReadFile(VirtualControl host, bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Host = host; Title = "String"; Description = "This node contains a list of charaters."; Category = "Basic"; AddObjectPort(this, "return ", PortTypes.Output, RTypes.Character, true, _tb); OutputPorts[0].DataChanged += ReadFile_DataChanged; _tb.TextChanged += (sender, args) => OutputPorts[0].Data.Value = _tb.Text; }
public PluginsManager(VirtualControl host) { _host = host; try { _plugins = new List <string>(Directory.GetFiles(@"./Plugins/", "*.dll")); } catch (Exception) { Console.WriteLine("Could not find the plugins folder. The application will create one."); Directory.CreateDirectory(@"./Plugins/"); _plugins = new List <string>(Directory.GetFiles(@"./Plugins/", "*.dll")); } }
public While([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Title = "While"; Host = host; Category = "Loops"; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, "Reset"); AddExecPort(this, "Instructions", PortTypes.Output, "Instructions"); AddObjectPort(this, "Condition", PortTypes.Input, RTypes.Logical, false); Description = "While loop."; }
public CharacterRVector([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Title = "Characters Vector"; Host = host; Category = "Vectors"; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, ""); AddObjP(); AddObjectPort(this, "return value", PortTypes.Output, RTypes.ArrayOrFactorOrListOrMatrix, true); Loaded += RArray_Loaded; }
public GenericRArray([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Title = "Generic array"; Host = host; Category = "Arrays"; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, ""); AddObjectPort(this, "[1]", PortTypes.Input, RTypes.Generic, true); AddObjectPort(this, "return value", PortTypes.Output, RTypes.ArrayOrFactorOrListOrMatrix, true); Loaded += RArray_Loaded; }
public static void MiddleMan(VirtualControl host, Node a, Node b, Node c) { if (c.OutExecPorts[0].ConnectedConnectors[0].EndPort.ParentNode == a) { CreateExecutionConnector(host, a.OutExecPorts[0], b.InExecPorts[0]); CreateExecutionConnector(host, b.OutExecPorts[0], c.InExecPorts[0]); if (b.OutExecPorts[0].ConnectedConnectors.Count > 0) { MiddleMan(host, c, b, b.OutExecPorts[0].ConnectedConnectors[0].EndPort.ParentNode); } } }
public IfElse([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Types = NodeTypes.Event; Host = host; Title = "IfElse"; Category = "Logic nodes"; AddExecPort(this, "", PortTypes.Input, ""); AddObjectPort(this, "Condition", PortTypes.Input, RTypes.Logical, false); AddExecPort(this, "", PortTypes.Output, "True"); AddExecPort(this, "", PortTypes.Output, "False"); AddExecPort(this, "", PortTypes.Output, "Default"); re_Arrange(); }
public LogicalNode([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base(host, NodeTypes.Basic, spontaneousAddition) { Title = "Bool"; Host = host; Category = "Logic nodes"; AddObjectPort(this, "return value", PortTypes.Output, RTypes.Logical, true, _cb); _cb.GotFocus += (sender, args) => { _cb.IsChecked = !_cb.IsChecked; OutputPorts[0].Data.Value = _cb.IsChecked.Value.ToString(); }; }
public Tan([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base(host, NodeTypes.Basic, spontaneousAddition) { Host = host; Title = "Tan"; Category = "Math nodes"; Description = "Calculates tan(x)."; AddObjectPort(this, "value", PortTypes.Input, RTypes.Numeric, false); AddObjectPort(this, "return tan(value)", PortTypes.Output, RTypes.Numeric, true); InputPorts[0].DataChanged += (s, e) => { OutputPorts[0].Data.Value = "tan(" + InputPorts[0].Data.Value + ")"; }; }
public Search(VirtualControl host) { WindowStyle = WindowStyle.ToolWindow; _host = host; Style = FindResource("Search") as Style; Loaded += (s, e) => { clear = Template.FindName("Clear", this) as TextBlock; go = Template.FindName("FindButton", this) as TextBlock; tb = Template.FindName("NodeName", this) as TextBox; lv = Template.FindName("FoundNodes", this) as ListView; clear.MouseLeftButtonUp += (ss, ee) => tb.Clear(); go.MouseLeftButtonUp += Go_MouseLeftButtonUp; Topmost = true; }; }
public ToUpper([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Basic, spontaneousAddition) { Host = host; Title = "Text to upper"; Category = "Characters"; Description = "Converts a set of characters to uppercased characters."; AddObjectPort(this, "Text", PortTypes.Input, RTypes.Character, false); AddObjectPort(this, "return ", PortTypes.Output, RTypes.Character, true); InputPorts[0].DataChanged += (s, e) => { OutputPorts[0].Data.Value = "toupper(" + InputPorts[0].Data.Value + ")"; }; }
public static void CreateObjectConnector(VirtualControl host, string xid, int xindex, string yid, int yindex, string connID = "", bool nullifyTempConn = true) { ObjectPort x = null, y = null; foreach (var node in host.Nodes) { if (node.Id == xid) { x = node.OutputPorts[xindex]; } else if (node.Id == yid) { y = node.InputPorts[yindex]; } } if (!y.MultipleConnectionsAllowed) { if (y.ConnectedConnectors.Count > 0) { y.ConnectedConnectors.ClearConnectors(); y.Linked = false; if (x != null) { x.Linked = false; } } } Connector conn = x.PortTypes == PortTypes.Output ? new ObjectsConnector(host, x, y) : new ObjectsConnector(host, y, x); conn.EndPort.ConnectedConnectors.Add(conn); conn.StartPort.ConnectedConnectors.Add(conn); conn.StartPort.CountOutConnectors++; conn.EndPort.CountOutConnectors++; host.TemObjectPort = null; TryCast(ref conn); y.Data.Value = x.Data.Value; host.ObjectConnectors.Add(conn as ObjectsConnector); if (connID != "") { conn.ID = connID; } }
public static void CreateExecutionConnector(VirtualControl host, string xid, int xindex, string yid, int yindex, string connId = "") { ExecPort x = null, y = null; foreach (var node in host.Nodes) { if (node.Id == xid) { x = node.OutExecPorts[xindex]; } else if (node.Id == yid) { y = node.InExecPorts[yindex]; } } if (y == null || x == null) { return; } x.ConnectedConnectors.ClearConnectors(); y.ConnectedConnectors.ClearConnectors(); x.Linked = false; y.Linked = false; Connector conn; conn = x.PortTypes == PortTypes.Output ? new ExecutionConnector(host, x, y) : new ExecutionConnector(host, y, x); Panel.SetZIndex(conn.Wire, ZIndexes.ConnectorIndex); conn.EndPort.ConnectedConnectors.Add(conn); conn.StartPort.ConnectedConnectors.Add(conn); host.Children.Remove(host.TempConn); host.Children.Remove(host.TempConn); host.TemExecPort = null; host.WireMode = WireMode.Nothing; host.MouseMode = MouseMode.Nothing; host.HideLinkingPossiblity(); host.ExecutionConnectors.Add((ExecutionConnector)conn); if (connId != "") { conn.ID = connId; } }
public Get(VirtualControl host, VariableItem variable, bool spontaneousAddition) : base(host, NodeTypes.VariableGet, spontaneousAddition) { Host = host; Title = string.Empty; AddObjectPort(this, "Return " + variable.Name, PortTypes.Output, RTypes.Generic, true); Description = @"Gets the value of " + variable.Name + "."; OutputPorts[0].Data.Value = variable.Name; if (variable.Type != null) { NodesManager.ChangeColorOfVariableNode(OutputPorts[0], variable.Type); } _item = variable; _item.Gets++; _item.DsOfNodes.Add(Id); }
public Set(VirtualControl host, VariableItem variable, bool spontaneousAddition) : base(host, NodeTypes.VariableSet, spontaneousAddition) { Title = "Set"; Host = host; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, ""); AddObjectPort(this, variable.Name, PortTypes.Input, RTypes.Generic, false); Description = @"Sets the value of " + variable.Name + "."; if (variable.Type != null) { NodesManager.ChangeColorOfVariableNode(InputPorts[0], variable.Type); } variable.Sets++; _item = variable; _item.DsOfNodes.Add(Id); Console.WriteLine("Sets: " + variable.Gets); }
public NodesTree(VirtualControl host) { Style = FindResource("NodesTree") as Style; _host = host; _pluginsManager = new PluginsManager(host); Task.Factory.StartNew(() => { Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(() => { var loadedNewNodes = _pluginsManager.LoadPlugins(); if (!loadedNewNodes) { return; } ClearAll(); BuildCategories(); BuildNodes(); RefreshBackUp(); Loaded += (o, e) => { _tv = (TreeView)Template.FindName("Tv", this); _tv.SelectedItemChanged += _tv_SelectedItemChanged; _tb = (TextBox)Template.FindName("SearchTextBox", this); _tb.TextChanged += (s, ev) => Filter(_tb.Text); if (_tv.ItemsSource == null) { _tv.ItemsSource = Roots; } _tb.PreviewKeyDown += OnPreviewKeyDown; _tv.MouseDoubleClick += _tv_MouseDoubleClick; ExpandAll(); _tb.Focus(); }; })); }); MouseLeave += (o, e) => Remove(); Panel.SetZIndex(this, ZIndexes.NodesTreeIndex); }
public Install([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Title = "Install Package"; Description = "Installs packages from CRAN."; Host = host; Category = "Core"; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, ""); AddObjectPort(this, "Package name", PortTypes.Input, RTypes.Character, false, _tb); _tb.TextChanged += (s, e) => { InputPorts[0].Data.Value = _tb.Text; }; InputPorts[0].DataChanged += (s, e) => { if (_tb.Text != InputPorts[0].Data.Value) { _tb.Text = InputPorts[0].Data.Value; } }; }
public static void CreateExecutionConnector(VirtualControl host, ExecPort x, ExecPort y, string connId = "") { string id; if (connId == "") { id = Guid.NewGuid().ToString(); } else { id = connId; } x.ConnectedConnectors.ClearConnectors(); y.ConnectedConnectors.ClearConnectors(); x.Linked = false; y.Linked = false; Connector conn; conn = x.PortTypes == PortTypes.Output ? new ExecutionConnector(host, x, y) : new ExecutionConnector(host, y, x); Panel.SetZIndex(conn.Wire, ZIndexes.ConnectorIndex); conn.EndPort.ConnectedConnectors.Add(conn); conn.StartPort.ConnectedConnectors.Add(conn); host.Children.Remove(host.TempConn); host.Children.Remove(host.TempConn); host.TemExecPort = null; host.WireMode = WireMode.Nothing; host.MouseMode = MouseMode.Nothing; host.HideLinkingPossiblity(); host.ExecutionConnectors.Add((ExecutionConnector)conn); if (connId != "") { conn.ID = connId; } }
public Plot([Import("host")] VirtualControl host, [Import("bool")] bool spontaneousAddition = false) : base( host, NodeTypes.Method, spontaneousAddition) { Title = "Plot"; Host = host; Category = "Plotting"; AddExecPort(this, "", PortTypes.Input, ""); AddExecPort(this, "", PortTypes.Output, ""); AddObjectPort(this, "", PortTypes.Input, RTypes.Generic, false, _tb); Description = "Uses R's built-in plotting function to generate a plot out of the entered data."; _tb.TextChanged += (s, e) => { InputPorts[0].Data.Value = _tb.Text; }; InputPorts[0].DataChanged += (s, e) => { if (_tb.Text != InputPorts[0].Data.Value) { _tb.Text = InputPorts[0].Data.Value; } }; }