Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
        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();
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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();
                    }
                }
            }
        }
Ejemplo n.º 8
0
        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();
        }