public void RefreshControllerName(IControllerDevice controller) { var path = GenerateEquivalentTreeNodeFullPathFromController(controller); var node = FindNodeInTreeAtPath(treeview, path); if (node.Tag == controller) { node.Text = controller.Name; } }
public void PopulateControllerTree(IControllerDevice controllerToSelect = null) { if (controllerToSelect == null) { _PopulateControllerTree(); return; } List<string> treeNodes = new List<string>(); treeNodes.Add(GenerateEquivalentTreeNodeFullPathFromController(controllerToSelect)); _PopulateControllerTree(treeNodes); }
private void _updateControllerDetails(ControllersAndOutputsSet controllersAndOutputs) { int controllerCount = 0; int patchedCount = 0; int unpatchedCount = 0; _controllerInputs = new List<PatchStatusItem<IDataFlowComponent>>(); foreach (KeyValuePair<IControllerDevice, HashSet<int>> controllersAndOutput in controllersAndOutputs) { controllerCount++; IControllerDevice controller = controllersAndOutput.Key; foreach (int outputIndex in controllersAndOutput.Value) { if (outputIndex > controller.Outputs.Length) { Logging.Warn("passed an output index greater than the controller output length: " + controller.Name + ", " + outputIndex); continue; } bool patched; if (controller.Outputs[outputIndex].Source == null || controller.Outputs[outputIndex].Source.Component == null) { unpatchedCount++; patched = false; } else { patchedCount++; patched = true; } _controllerInputs.Add(new PatchStatusItem<IDataFlowComponent>((controller as OutputController).GetDataFlowComponentForOutput(controller.Outputs[outputIndex]), patched)); } } labelControllerCount.Text = controllerCount.ToString(); labelOutputCount.Text = (patchedCount + unpatchedCount).ToString(); labelPatchedOutputCount.Text = patchedCount.ToString(); labelUnpatchedOutputCount.Text = unpatchedCount.ToString(); buttonUnpatchControllers.Enabled = patchedCount > 0; if (checkBoxReverseOutputOrder.Checked) { _controllerInputs.Reverse(); } labelFirstOutput.Text = ""; labelLastOutput.Text = ""; if (_controllerInputs.Any()) { IControllerDevice controller; int outputIndex; VixenSystem.OutputControllers.getOutputDetailsForDataFlowComponent(_controllerInputs.First().Item, out controller, out outputIndex); labelFirstOutput.Text = string.Format("{0} #{1}", controller.Name, outputIndex + 1); VixenSystem.OutputControllers.getOutputDetailsForDataFlowComponent(_controllerInputs.Last().Item, out controller, out outputIndex); labelLastOutput.Text = string.Format("{0} #{1}", controller.Name, outputIndex + 1); } }
public ControllersAndOutputsSet BuildSelectedControllersAndOutputs() { ControllersAndOutputsSet result = new ControllersAndOutputsSet(); foreach (TreeNode node in controllerTree.SelectedTreeNodes) { IControllerDevice controller = node.Tag as IControllerDevice; int outputIndex = -1; if (controller == null) { if (node.Tag is int) { outputIndex = (int)node.Tag; controller = node.Parent.Tag as IControllerDevice; if (controller == null) { Logging.Error("node parent is not a controller: " + node.Name); } } } if (controller != null) { HashSet <int> selectedOutputs; result.TryGetValue(controller, out selectedOutputs); if (selectedOutputs == null) { selectedOutputs = new HashSet <int>(); result[controller] = selectedOutputs; } // if there wasn't a specific output that this was about, add all outputs for the controller if (outputIndex < 0) { for (int i = 0; i < controller.OutputCount; i++) { selectedOutputs.Add(i); } } else { selectedOutputs.Add(outputIndex); } } else { Logging.Error("can't figure out what controller the node maps to: " + node.Name); } } return(result); }
public void PopulateControllerTree(IControllerDevice controllerToSelect = null) { if (controllerToSelect == null) { _PopulateControllerTree(); return; } List <string> treeNodes = new List <string>(); treeNodes.Add(GenerateEquivalentTreeNodeFullPathFromController(controllerToSelect)); _PopulateControllerTree(treeNodes); }
public bool ConfigureController(IControllerDevice controller) { bool result = false; if (controller.HasSetup) { result = controller.Setup(); if (result) { OnControllersChanged(); } } return(result); }
public bool SetControllerOutputCount(IControllerDevice controller) { using (NumberDialog nd = new NumberDialog("Controller Output Count", "Outputs on this controller?", controller.OutputCount)) { if (nd.ShowDialog() == DialogResult.OK) { // TODO: blergh, dodgy hack (controller as OutputController).OutputCount = nd.Value; OnControllersChanged(); PopulateControllerTree(); return(true); } } return(false); }
public void PopulateControllerTree(Dictionary <IControllerDevice, HashSet <int> > controllersAndOutputs) { List <string> selectedNodes = new List <string>(); foreach (KeyValuePair <IControllerDevice, HashSet <int> > controllerAndOutput in controllersAndOutputs) { IControllerDevice controller = controllerAndOutput.Key; foreach (int i in controllerAndOutput.Value) { selectedNodes.Add(GenerateEquivalentTreeNodeFullPathFromControllerAndOutput(controller, i)); } } _PopulateControllerTree(selectedNodes); }
public bool RenameControllerWithPrompt(IControllerDevice outputController) { using (TextDialog textDialog = new TextDialog("Controller Name?", "Controller Name", outputController.Name, true)) { if (textDialog.ShowDialog() == DialogResult.OK) { if (textDialog.Response != string.Empty) { outputController.Name = textDialog.Response; OnControllersChanged(); PopulateControllerTree(); return(true); } } } return(false); }
public void RefreshControllerOutputNames(IControllerDevice controller) { treeview.BeginUpdate(); var path = GenerateEquivalentTreeNodeFullPathFromController(controller); var node = FindNodeInTreeAtPath(treeview, path); if (node.Tag == controller) { foreach (TreeNode channelNode in node.Nodes) { if (channelNode.Tag is int i) { channelNode.Name = channelNode.Text = controller.Outputs[i].Name; } } } treeview.EndUpdate(); }
private void AddControllerToTree(TreeNodeCollection collection, IControllerDevice controller) { TreeNode controllerNode = new TreeNode(); controllerNode.Name = controller.Id.ToString(); controllerNode.Text = controller.Name; controllerNode.Tag = controller; if (controller.IsRunning) { controllerNode.ImageKey = controllerNode.SelectedImageKey = "Group"; } else { controllerNode.ImageKey = controllerNode.SelectedImageKey = "RedBall"; } collection.Add(controllerNode); for (int i = 0; i < controller.OutputCount; i++) { TreeNode channelNode = new TreeNode(); channelNode.Name = controller.Outputs[i].Name; channelNode.Text = controller.Outputs[i].Name; channelNode.Tag = i; IDataFlowComponentReference source = controller.Outputs[i].Source; if (source == null) { channelNode.ImageKey = channelNode.SelectedImageKey = "WhiteBall"; } else if (source.Component == null || source.OutputIndex < 0) { channelNode.ImageKey = channelNode.SelectedImageKey = "GreyBall"; } else { channelNode.ImageKey = channelNode.SelectedImageKey = "GreenBall"; } controllerNode.Nodes.Add(channelNode); } }
/// <summary> /// Add a new controller without rebuilding the entire tree /// </summary> /// <param name="controller"></param> public void AddControllerToTree(IControllerDevice controller) { treeview.BeginUpdate(); treeview.SelectedNodes.Clear(); _topDisplayedNodes.Clear(); AddControllerToTree(treeview.Nodes, controller); _selectedNodes.Clear(); _selectedNodes.Add(GenerateEquivalentTreeNodeFullPathFromController(controller)); var treeNode = treeview.Nodes[treeview.Nodes.Count - 1]; //Select the new controller treeview.AddSelectedNode(treeview.Nodes[treeview.Nodes.Count - 1]); treeview.EndUpdate(); treeNode.EnsureVisible(); OnControllerSelectionChanged(); }
private void _updateControllerDetails(ControllersAndOutputsSet controllersAndOutputs) { int controllerCount = 0; int patchedCount = 0; int unpatchedCount = 0; _controllerInputs = new List <PatchStatusItem <IDataFlowComponent> >(); foreach (KeyValuePair <IControllerDevice, HashSet <int> > controllersAndOutput in controllersAndOutputs) { controllerCount++; IControllerDevice controller = controllersAndOutput.Key; foreach (int outputIndex in controllersAndOutput.Value) { if (outputIndex > controller.Outputs.Length) { Logging.Warn("passed an output index greater than the controller output length: " + controller.Name + ", " + outputIndex); continue; } bool patched; if (controller.Outputs[outputIndex].Source == null || controller.Outputs[outputIndex].Source.Component == null) { unpatchedCount++; patched = false; } else { patchedCount++; patched = true; } _controllerInputs.Add(new PatchStatusItem <IDataFlowComponent>((controller as OutputController).GetDataFlowComponentForOutput(controller.Outputs[outputIndex]), patched)); } } labelControllerCount.Text = controllerCount.ToString(); labelOutputCount.Text = (patchedCount + unpatchedCount).ToString(); labelPatchedOutputCount.Text = patchedCount.ToString(); labelUnpatchedOutputCount.Text = unpatchedCount.ToString(); }
private void AddControllerToTree(TreeNodeCollection collection, IControllerDevice controller) { TreeNode controllerNode = new TreeNode(); controllerNode.Name = controller.Id.ToString(); controllerNode.Text = controller.Name; controllerNode.Tag = controller; if (controller.IsRunning) controllerNode.ImageKey = controllerNode.SelectedImageKey = "Group"; else controllerNode.ImageKey = controllerNode.SelectedImageKey = "RedBall"; collection.Add(controllerNode); for (int i = 0; i < controller.OutputCount; i++) { TreeNode channelNode = new TreeNode(); channelNode.Name = controller.Outputs[i].Name; channelNode.Text = controller.Outputs[i].Name; channelNode.Tag = i; IDataFlowComponentReference source = controller.Outputs[i].Source; if (source == null) { channelNode.ImageKey = channelNode.SelectedImageKey = "WhiteBall"; } else if (source.Component == null || source.OutputIndex < 0) { channelNode.ImageKey = channelNode.SelectedImageKey = "GreyBall"; } else { channelNode.ImageKey = channelNode.SelectedImageKey = "GreenBall"; } controllerNode.Nodes.Add(channelNode); } }
public ElementsToSingleController(IEnumerable <Element> elements, IControllerDevice controllerDevice, int startingOutputIndex = 0, int outputsPerElement = 1) : this(elements, controllerDevice, controllerDevice.OutputCount, startingOutputIndex, outputsPerElement) { }
public bool getOutputDetailsForDataFlowComponent(IDataFlowComponent component, out IControllerDevice controller, out int outputIndex) { controller = null; outputIndex = 0; if (component == null) { return(false); } Tuple <IControllerDevice, int> data; bool result = _outputDataFlowComponentToController.TryGetValue(component, out data); if (data != null) { controller = data.Item1; outputIndex = data.Item2; } return(result); }
private string GenerateEquivalentTreeNodeFullPathFromControllerAndOutput(IControllerDevice controller, int output) { return(controller.Id + treeview.PathSeparator + controller.Outputs[output].Name); //treeview.PathSeparator + "#" + (output + 1); }
public void PopulateControllerTree(IControllerDevice controllerToSelect = null) { // save metadata that is currently in the treeview _expandedNodes = new HashSet <string>(); _selectedNodes = new HashSet <string>(); _topDisplayedNodes = new List <string>(); SaveTreeNodeState(treeview.Nodes); SaveTreeNodeTopVisible(); // clear the treeview, and repopulate it treeview.BeginUpdate(); treeview.Nodes.Clear(); treeview.SelectedNodes.Clear(); foreach (IControllerDevice controller in VixenSystem.OutputControllers) { AddControllerToTree(treeview.Nodes, controller); } // go through all the data we saved, and try to update the treeview to look // like it used to (expanded nodes, selected nodes, node at the top) foreach (string node in _expandedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { resultNode.Expand(); } } // if a new controller has been passed in to select, select it instead. if (controllerToSelect != null) { _selectedNodes = new HashSet <string>(); _selectedNodes.Add(GenerateEquivalentTreeNodeFullPathFromController(controllerToSelect, treeview.PathSeparator)); } foreach (string node in _selectedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { treeview.AddSelectedNode(resultNode); } } treeview.EndUpdate(); // see stackoverflow.com/questions/626315/winforms-listview-remembering-scrolled-location-on-reload . // we can only set the topNode after EndUpdate(). Also, it might throw an exception -- weird? foreach (string node in _topDisplayedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { try { treeview.TopNode = resultNode; } catch (Exception) { Logging.Warn("exception caught trying to set TopNode."); } break; } } // finally, if we were selecting another controller, make sure we raise the selection changed event if (controllerToSelect != null) { OnControllerSelectionChanged(); } }
public void PopulateControllerTree(IControllerDevice controllerToSelect = null) { // save metadata that is currently in the treeview _expandedNodes = new HashSet<string>(); _selectedNodes = new HashSet<string>(); _topDisplayedNodes = new List<string>(); SaveTreeNodeState(treeview.Nodes); SaveTreeNodeTopVisible(); // clear the treeview, and repopulate it treeview.BeginUpdate(); treeview.Nodes.Clear(); treeview.SelectedNodes.Clear(); foreach (IControllerDevice controller in VixenSystem.OutputControllers) { AddControllerToTree(treeview.Nodes, controller); } // go through all the data we saved, and try to update the treeview to look // like it used to (expanded nodes, selected nodes, node at the top) foreach (string node in _expandedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { resultNode.Expand(); } } // if a new controller has been passed in to select, select it instead. if (controllerToSelect != null) { _selectedNodes = new HashSet<string>(); _selectedNodes.Add(GenerateEquivalentTreeNodeFullPathFromController(controllerToSelect, treeview.PathSeparator)); } foreach (string node in _selectedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { treeview.AddSelectedNode(resultNode); } } treeview.EndUpdate(); // see stackoverflow.com/questions/626315/winforms-listview-remembering-scrolled-location-on-reload . // we can only set the topNode after EndUpdate(). Also, it might throw an exception -- weird? foreach (string node in _topDisplayedNodes) { TreeNode resultNode = FindNodeInTreeAtPath(treeview, node); if (resultNode != null) { try { treeview.TopNode = resultNode; } catch (Exception) { Logging.Warn("exception caught trying to set TopNode."); } break; } } // finally, if we were selecting another controller, make sure we raise the selection changed event if (controllerToSelect != null) { OnControllerSelectionChanged(); } }
private string GenerateEquivalentTreeNodeFullPathFromController(IControllerDevice controller) { return(controller.Id.ToString()); }
public bool SetControllerOutputCount(IControllerDevice controller) { using (NumberDialog nd = new NumberDialog("Controller Output Count", "Outputs on this controller?", controller.OutputCount)) { if (nd.ShowDialog() == DialogResult.OK) { // TODO: blergh, dodgy hack (controller as OutputController).OutputCount = nd.Value; OnControllersChanged(); PopulateControllerTree(); return true; } } return false; }
public bool ConfigureController(IControllerDevice controller) { bool result = false; if (controller.HasSetup) { result = controller.Setup(); if (result) { OnControllersChanged(); PopulateControllerTree(); } } return result; }
public void AddControllerOutputForDataFlowComponent(IDataFlowComponent component, IControllerDevice controller, int outputIndex) { if (_outputDataFlowComponentToController.ContainsKey(component)) { Logging.Error("map already contains link for component: " + component.Name); } _outputDataFlowComponentToController[component] = new Tuple <IControllerDevice, int>(controller, outputIndex); }
private string GenerateEquivalentTreeNodeFullPathFromController(IControllerDevice controller) { return controller.Id.ToString(); }
private string GenerateEquivalentTreeNodeFullPathFromControllerAndOutput(IControllerDevice controller, int output) { return(controller.Id.ToString() + treeview.PathSeparator + "#" + (output + 1)); }
private string GenerateEquivalentTreeNodeFullPathFromControllerAndOutput(IControllerDevice controller, int output) { return controller.Id + treeview.PathSeparator + controller.Outputs[output].Name;//treeview.PathSeparator + "#" + (output + 1); }
public bool RenameControllerWithPrompt(IControllerDevice outputController) { using (TextDialog textDialog = new TextDialog("Controller Name?", "Controller Name", outputController.Name, true)) { if (textDialog.ShowDialog() == DialogResult.OK) { if (textDialog.Response != string.Empty) { outputController.Name = textDialog.Response; OnControllersChanged(); PopulateControllerTree(); return true; } } } return false; }