private TreeNode GenerateTreeNode(Requirement aRequirement) { if (aRequirement is SimpleRequirement sReq) { return(GenerateLeafNode(sReq)); } if (aRequirement is ComplexRequirement cReq) { var parent = new DropDownTreeNode(cReq); var childReqs = cReq.myRequirements.Select(req => GenerateTreeNode(req)).ToList(); foreach (var child in childReqs) { parent.Nodes.Add(child); } parent.Nodes.Add(new AddingTreeNode()); GenerateSeparators(parent); return(parent); } // Impossible return(null); }
internal void UpdateNodeValue(Func <VASLSetting, dynamic> func, DropDownTreeNode node) { var setting = (VASLSetting)node.Tag; dynamic value = func(setting); if (node.ComboBox.Text != value.ToString()) { node.ComboBox.Text = value.ToString(); } }
private void InitCustomSettings(VASLSettings settings, bool scriptLoaded) { treeCustomSettings.BeginUpdate(); treeCustomSettings.Nodes.Clear(); var flat = new Dictionary <string, DropDownTreeNode>(); foreach (VASLSetting setting in settings.OrderedSettings) { var value = setting.Value; if (CustomSettingsState.ContainsKey(setting.Id)) { value = CustomSettingsState[setting.Id]; } var node = new DropDownTreeNode(setting.Label) { Tag = setting, ToolTipText = setting.ToolTip }; node.ComboBox.Text = value.ToString(); setting.Value = value; if (setting.Parent == null) { treeCustomSettings.Nodes.Add(node); } else if (flat.ContainsKey(setting.Parent)) { flat[setting.Parent].Nodes.Add(node); } flat.Add(setting.Id, node); } foreach (var item in flat) { if (!item.Value.Checked) { UpdateGrayedOut(item.Value); } } treeCustomSettings.ExpandAll(); treeCustomSettings.EndUpdate(); // Scroll up to the top if (treeCustomSettings.Nodes.Count > 0) { treeCustomSettings.Nodes[0].EnsureVisible(); } UpdateCustomSettingsVisibility(); }
private void UpdateGrayedOut(DropDownTreeNode node) { if (node.ForeColor != SystemColors.GrayText) { UpdateNodesInTree(n => { n.ForeColor = node.Checked ? SystemColors.WindowText : SystemColors.GrayText; return(n.Checked || !node.Checked); }, node.Nodes); } }
void AddComplexRequirement(DropDownTreeNode parentNode) { if (parentNode.Tag is ComplexRequirement requirement) { myMementos[myRequirement].Add(myRequirement.CreateMemento()); var newReq = new ComplexRequirement(); requirement.myRequirements.Add(newReq); var newNode = new DropDownTreeNode(newReq); newNode.Nodes.Add(new AddingTreeNode()); SaveManager.Dirty = true; HideControls(); parentNode.Nodes.Insert(parentNode.Nodes.Count - 1, newNode); GenerateSeparators(parentNode); newNode.Expand(); } }
internal void AddNodes(TreeNode root) { root.Nodes.Add("name").Nodes.Add(this.Name); root.Nodes.Add("description").Nodes.Add(this.Description); var useNode = new DropDownTreeNode(this.Use.ToString()); foreach (var u in Enum.GetNames(typeof(BuildingUse))) { useNode.ComboBox.Items.Add(u); } root.Nodes.Add("use").Nodes.Add(useNode); root.Nodes.Add("size").Nodes.Add(this.Size.ToString()); var costNode = root.Nodes.Add("baseCost"); if (this.baseCost.Length == 0) { costNode.Nodes.Add(""); } else { int i = 0; foreach (JObject cost in this.baseCost) { var node = costNode.Nodes.Add(i.ToString()); foreach (JProperty prop in cost.Properties()) { node.Nodes.Add(prop.Name).Nodes.Add(prop.Value.ToString()); } i++; } } root.Nodes.Add("purchased").Nodes.Add(this.Purchased.ToString()); root.Nodes.Add("gifted").Nodes.Add(this.Gifted.ToString()); root.Nodes.Add("unlocked").Nodes.Add(this.Unlocked.ToString()); root.Nodes.Add("multiplier").Nodes.Add(this.Multiplier.ToString()); root.Nodes.Add("stores").Nodes.Add(this.Stores); root.Nodes.Add("produces").Nodes.Add(this.Produces); }
void AddSimpleRequirement(DropDownTreeNode parentNode) { if (parentNode.Tag is ComplexRequirement requirement) { var keySelector = new KeySelector(); keySelector.StartPosition = FormStartPosition.CenterParent; if (keySelector.ShowDialog() == DialogResult.OK) { var newMemento = myRequirement.CreateMemento(); bool changeOccured = false; foreach (var key in keySelector.SelectedKeys.Distinct()) { if (!requirement.myRequirements.Any(req => req is SimpleRequirement sReq && sReq.GetKey() == key)) { var newReq = new SimpleRequirement(key); requirement.myRequirements.Add(newReq); parentNode.Nodes.Insert(parentNode.Nodes.Count - 1, GenerateLeafNode(newReq)); SaveManager.Dirty = true; changeOccured = true; } } if (changeOccured) { myMementos[myRequirement].Add(newMemento); HideControls(); GenerateSeparators(parentNode); ShowControls(); } } } }
public frmMain() { InitializeComponent(); DropDownTreeNode ddtnCOMAutoDetect = new DropDownTreeNode("Autodetect Proxmark"); ddtnCOMAutoDetect.ComboBox.Items.AddRange(new string[] { "Autodetect Proxmark", "Manually Select COM Port" } ); ddtnCOMAutoDetect.ComboBox.SelectedIndex = Convert.ToInt16(ConfigurationManager.AppSettings["Autodetect Proxmark"]); ddtnCOMAutoDetect.ComboBox.Text = ddtnCOMAutoDetect.ComboBox.Items[ddtnCOMAutoDetect.ComboBox.SelectedIndex].ToString(); ddtnCOMAutoDetect.ComboBox.SelectedIndexChanged += new EventHandler((sender, e) => cb_SelectedValueChanged("Autodetect Proxmark", ddtnCOMAutoDetect.ComboBox)); _comPorts = getCOMports(); _comPort.BaudRate = 115200; _comPort.DataBits = 8; _comPort.Encoding = Encoding.Default; _comPort.Handshake = Handshake.None; _comPort.Parity = Parity.None; _comPort.StopBits = StopBits.One; _comPort.RtsEnable = true; _comPort.DtrEnable = true; _comPort.DataReceived += new SerialDataReceivedEventHandler(comRx); DropDownTreeNode ddtnCOMport = new DropDownTreeNode("Select COM Port"); ddtnCOMport.ComboBox.SelectedIndexChanged += new EventHandler((sender, e) => cb_SelectedValueChanged("Selected COM Port", ddtnCOMport.ComboBox)); ddtnCOMport.ComboBox.Width = 200; ddtnCOMport.ComboBox.MinimumSize = new Size(200, 12); if (_comPorts.Count > 0) { // Not thought out very well. If manual COM port selection is enabled and a serial device it attached or removed, this probably will not work. int pm3Index = 0; for (int i = 0; i < _comPorts.Count; i++) { ddtnCOMport.ComboBox.Items.Add("(" + _comPorts[i].DeviceID + ") " + _comPorts[i].Description); if (_comPorts.Exists(x => x.Description.Contains("Proxmark3"))) { pm3Index = i; } if (_comPorts.Exists(x => x.PNPDeviceID.Contains("PROXMARK.ORG"))) { pm3Index = i; } } if (ddtnCOMAutoDetect.ComboBox.SelectedIndex == 0) { ddtnCOMport.ComboBox.SelectedIndex = pm3Index; ddtnCOMport.ComboBox.Text = ddtnCOMport.ComboBox.Items[pm3Index].ToString(); ddtnCOMport.ComboBox.SelectedValue = ddtnCOMport.ComboBox.Items[pm3Index].ToString(); ddtnCOMport.ComboBox.SelectedItem = ddtnCOMport.ComboBox.Items[pm3Index]; } else { ddtnCOMport.ComboBox.SelectedIndex = Convert.ToInt16(ConfigurationManager.AppSettings["Selected COM Port"]); ddtnCOMport.ComboBox.Text = ddtnCOMport.ComboBox.Items[ddtnCOMport.ComboBox.SelectedIndex].ToString(); } try { _comPort.PortName = _comPorts[ddtnCOMport.ComboBox.SelectedIndex].DeviceID; _comPort.Open(); } catch (Exception ex) { Trace.WriteLine("Failed to open port. Freaking out and exiting.\r\n" + ex.Message); Application.Exit(); } } else { Trace.WriteLine("No available ports"); Application.Exit(); } TreeNode tnCOMport = new TreeNode("COM Port"); tnCOMport.Nodes.Add(ddtnCOMAutoDetect); tnCOMport.Nodes.Add(ddtnCOMport); tvSettingsNodes.Nodes.Add(tnCOMport); //tvSettingsNodes.Nodes.Add("Some other setting."); tvSettings.Nodes.Add(tvSettingsNodes); tvSettings.ExpandAll(); string curDir = Directory.GetCurrentDirectory(); pm3Commands.Load(String.Format(@"{0}\pm3Commands.xml", curDir)); TreeNode pm3root = new TreeNode("PM3"); tvMain.Nodes.Add(pm3root); ParseXmlNodes(pm3Commands.SelectSingleNode("pm3").ChildNodes, pm3root); tvMain.ExpandAll(); }