예제 #1
0
        public void UpdateForm()
        {
            _textBoxCurrentValue.Text = GetValues();
            List <bool> lockedBools = new List <bool>();

            for (int i = 0; i < _watchVarWrappers.Count; i++)
            {
                lockedBools.Add(_watchVarWrappers[i].GetLockedBool(_fixedAddressLists[i]));
            }
            _checkBoxLock.CheckState = BoolUtilities.GetCheckState(lockedBools);
        }
예제 #2
0
        public void UpdateForm()
        {
            _textBoxCurrentValue.Text = GetValues();
            List <bool> lockedBools = new List <bool>();

            for (int i = 0; i < _watchVarWrappers.Count; i++)
            {
                lockedBools.Add(_watchVarWrappers[i].GetLockedBool(_fixedAddressLists[i]));
            }
            _checkBoxLock.CheckState = BoolUtilities.GetCheckState(lockedBools);
            if (_isDoingContinuousAdd)
            {
                _addAction(true, false);
            }
            if (_isDoingContinuousSubtract)
            {
                _addAction(false, false);
            }
        }
예제 #3
0
        public VariableControllerForm(
            List <string> varNames, List <WatchVariableWrapper> watchVarWrappers, List <List <uint> > fixedAddressLists)
        {
            _varNames          = varNames;
            _watchVarWrappers  = watchVarWrappers;
            _fixedAddressLists = fixedAddressLists;

            _isDoingContinuousAdd      = false;
            _isDoingContinuousSubtract = false;

            InitializeComponent();
            FormManager.AddForm(this);
            FormClosing += (sender, e) => FormManager.RemoveForm(this);

            _textBoxVarName.Text = String.Join(",", _varNames);

            _addAction = (bool add, bool allowToggle) =>
            {
                List <string> values = ParsingUtilities.ParseStringList(_textBoxAddSubtract.Text);
                if (values.Count == 0)
                {
                    return;
                }
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    _watchVarWrappers[i].AddValue(values[i % values.Count], add, allowToggle, _fixedAddressLists[i]);
                }
            };
            _buttonAdd.Click      += (s, e) => _addAction(true, true);
            _buttonSubtract.Click += (s, e) => _addAction(false, true);

            Timer addTimer = new Timer {
                Interval = 30
            };

            addTimer.Tick += (s, e) => { if (KeyboardUtilities.IsCtrlHeld())
                                         {
                                             _addAction(true, false);
                                         }
            };
            _buttonAdd.MouseDown += (sender, e) => addTimer.Start();
            _buttonAdd.MouseUp   += (sender, e) => addTimer.Stop();

            ControlUtilities.AddContextMenuStripFunctions(
                _buttonAdd,
                new List <string>()
            {
                "Start Continuous Add", "Stop Continuous Add"
            },
                new List <Action>()
            {
                () => _isDoingContinuousAdd = true, () => _isDoingContinuousAdd = false
            });

            Timer subtractTimer = new Timer {
                Interval = 30
            };

            subtractTimer.Tick += (s, e) => { if (KeyboardUtilities.IsCtrlHeld())
                                              {
                                                  _addAction(false, false);
                                              }
            };
            _buttonSubtract.MouseDown += (sender, e) => subtractTimer.Start();
            _buttonSubtract.MouseUp   += (sender, e) => subtractTimer.Stop();

            ControlUtilities.AddContextMenuStripFunctions(
                _buttonSubtract,
                new List <string>()
            {
                "Start Continuous Subtract", "Stop Continuous Subtract"
            },
                new List <Action>()
            {
                () => _isDoingContinuousSubtract = true, () => _isDoingContinuousSubtract = false
            });

            ToolStripMenuItem itemInvertedAdd      = new ToolStripMenuItem("Inverted");
            ToolStripMenuItem itemInvertedSubtract = new ToolStripMenuItem("Inverted");
            Action <bool>     setInverted          = (bool inverted) =>
            {
                tableLayoutPanel1.Controls.Remove(_buttonAdd);
                tableLayoutPanel1.Controls.Remove(_buttonSubtract);
                if (inverted)
                {
                    tableLayoutPanel1.Controls.Add(_buttonAdd, 0, 2);
                    tableLayoutPanel1.Controls.Add(_buttonSubtract, 2, 2);
                }
                else
                {
                    tableLayoutPanel1.Controls.Add(_buttonAdd, 2, 2);
                    tableLayoutPanel1.Controls.Add(_buttonSubtract, 0, 2);
                }
                itemInvertedAdd.Checked      = inverted;
                itemInvertedSubtract.Checked = inverted;
            };

            itemInvertedAdd.Click      += (sender, e) => setInverted(!itemInvertedAdd.Checked);
            itemInvertedSubtract.Click += (sender, e) => setInverted(!itemInvertedSubtract.Checked);
            _buttonAdd.ContextMenuStrip.Items.Add(new ToolStripSeparator());
            _buttonAdd.ContextMenuStrip.Items.Add(itemInvertedAdd);
            _buttonSubtract.ContextMenuStrip.Items.Add(new ToolStripSeparator());
            _buttonSubtract.ContextMenuStrip.Items.Add(itemInvertedSubtract);

            _buttonGet.Click += (s, e) => _textBoxGetSet.Text = GetValues();

            _buttonSet.Click += (s, e) => SetValues(true);
            _textBoxGetSet.AddEnterAction(() => SetValues(true));

            _checkBoxFixAddress.Click += (s, e) => ToggleFixedAddress();

            _checkBoxLock.Click += (s, e) =>
            {
                List <bool> lockedBools = new List <bool>();
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    lockedBools.Add(_watchVarWrappers[i].GetLockedBool(_fixedAddressLists[i]));
                }
                bool anyLocked = lockedBools.Any(b => b);
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    _watchVarWrappers[i].ToggleLocked(!anyLocked, _fixedAddressLists[i]);
                }
            };

            _checkBoxFixAddress.CheckState = BoolUtilities.GetCheckState(
                fixedAddressLists.ConvertAll(fixedAddressList => fixedAddressList != null));

            _textBoxCurrentValue.BackColor = GetColorForCheckState(BoolUtilities.GetCheckState(
                                                                       fixedAddressLists.ConvertAll(fixedAddressList => fixedAddressList != null)));
        }
예제 #4
0
        public VariableControllerForm(
            List <string> varNames, List <WatchVariableWrapper> watchVarWrappers, List <List <uint> > fixedAddressLists)
        {
            _varNames          = varNames;
            _watchVarWrappers  = watchVarWrappers;
            _fixedAddressLists = fixedAddressLists;

            InitializeComponent();

            _textBoxVarName.Text = String.Join(",", _varNames);
            _buttonAdd.Click    += (s, e) =>
            {
                List <string> values = ParsingUtilities.ParseStringList(_textBoxAddSubtract.Text);
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    _watchVarWrappers[i].AddValue(values[i % values.Count], true, _fixedAddressLists[i]);
                }
            };

            _buttonSubtract.Click += (s, e) =>
            {
                List <string> values = ParsingUtilities.ParseStringList(_textBoxAddSubtract.Text);
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    _watchVarWrappers[i].AddValue(values[i % values.Count], false, _fixedAddressLists[i]);
                }
            };

            _buttonGet.Click += (s, e) => _textBoxGetSet.Text = GetValues();

            _buttonSet.Click += (s, e) => SetValues();
            _textBoxGetSet.AddEnterAction(() => SetValues());

            _checkBoxFixAddress.Click += (s, e) => ToggleFixedAddress();

            _checkBoxLock.Click += (s, e) =>
            {
                List <bool> lockedBools = new List <bool>();
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    lockedBools.Add(_watchVarWrappers[i].GetLockedBool(_fixedAddressLists[i]));
                }
                bool anyLocked = lockedBools.Any(b => b);
                for (int i = 0; i < _watchVarWrappers.Count; i++)
                {
                    _watchVarWrappers[i].ToggleLocked(!anyLocked, _fixedAddressLists[i]);
                }
            };

            _checkBoxFixAddress.CheckState = BoolUtilities.GetCheckState(
                fixedAddressLists.ConvertAll(fixedAddressList => fixedAddressList != null));

            _textBoxCurrentValue.BackColor = GetColorForCheckState(BoolUtilities.GetCheckState(
                                                                       fixedAddressLists.ConvertAll(fixedAddressList => fixedAddressList != null)));

            Timer timer = new Timer {
                Interval = 30
            };

            timer.Tick += (s, e) => UpdateForm();
            timer.Start();
        }