示例#1
0
        private void OnMenuStripClick(object sender, ToolStripItemClickedEventArgs e)
        {
            if (this != _lastSelected)
            {
                return;
            }

            switch (e.ClickedItem.Text)
            {
            case "Edit":
                EditMode = true;
                break;

            case "View As Hexadecimal":
                _watchVar.UseHex = !(e.ClickedItem as ToolStripMenuItem).Checked;
                (e.ClickedItem as ToolStripMenuItem).Checked = !(e.ClickedItem as ToolStripMenuItem).Checked;
                break;

            case "Lock Value":
                EditMode = false;
                (e.ClickedItem as ToolStripMenuItem).Checked = !(e.ClickedItem as ToolStripMenuItem).Checked;
                if (OffsetList.Any(o => GetIsLocked(o)))
                {
                    OffsetList.ForEach(o => RemoveLock(o));
                }
                else
                {
                    OffsetList.ForEach(o => LockUpdate(o));
                }
                break;

            case "Select Object":
                if (_watchVar.ByteCount != 4)
                {
                    return;
                }

                var slotManager = ManagerContext.Current.ObjectSlotManager;
                slotManager.SelectedSlotsAddresses.Clear();
                foreach (var otherOffset in OffsetList)
                {
                    var objAddress = BitConverter.ToUInt32(_watchVar.GetByteData(otherOffset), 0);
                    if (ManagerContext.Current.ObjectSlotManager.ObjectSlots.Count(s => s.Address == objAddress) > 0)
                    {
                        slotManager.SelectedSlotsAddresses.Add(objAddress);
                    }
                }
                break;

            case "Highlight":
                var toolItem = (e.ClickedItem as ToolStripMenuItem);
                toolItem.Checked       = !toolItem.Checked;
                _tablePanel.ShowBorder = toolItem.Checked;
                break;
            }
        }
示例#2
0
        private void _textBoxValue_MouseEnter(object sender, EventArgs e)
        {
            var lockedStatus = CheckState.Unchecked;

            if (OffsetList.Any(o => GetIsLocked(o)))
            {
                if (OffsetList.All(o => GetIsLocked(o)))
                {
                    lockedStatus = CheckState.Checked;
                }
                else
                {
                    lockedStatus = CheckState.Indeterminate;
                }
            }

            _lastSelected = this;
            if (_watchVar.IsAngle)
            {
                (AngleMenu.Items["HexView"] as ToolStripMenuItem).Checked            = _watchVar.UseHex;
                (AngleMenu.Items["LockValue"] as ToolStripMenuItem).CheckState       = lockedStatus;
                (AngleMenu.Items["Highlight"] as ToolStripMenuItem).Checked          = _tablePanel.ShowBorder;
                (AngleDropDownMenu[0].DropDownItems[0] as ToolStripMenuItem).Checked = (_angleViewMode == AngleViewModeType.Recommended);
                (AngleDropDownMenu[0].DropDownItems[1] as ToolStripMenuItem).Checked = (_angleViewMode == AngleViewModeType.Unsigned);
                (AngleDropDownMenu[0].DropDownItems[2] as ToolStripMenuItem).Checked = (_angleViewMode == AngleViewModeType.Signed);
                (AngleDropDownMenu[0].DropDownItems[3] as ToolStripMenuItem).Checked = (_angleViewMode == AngleViewModeType.Degrees);
                (AngleDropDownMenu[0].DropDownItems[4] as ToolStripMenuItem).Checked = (_angleViewMode == AngleViewModeType.Radians);
                (AngleDropDownMenu[1] as ToolStripMenuItem).Checked = _angleTruncated;
            }
            else
            {
                (Menu.Items["HexView"] as ToolStripMenuItem).Checked      = _watchVar.UseHex;
                (Menu.Items["LockValue"] as ToolStripMenuItem).CheckState = lockedStatus;
                (Menu.Items["Highlight"] as ToolStripMenuItem).Checked    = _tablePanel.ShowBorder;
                ObjectDropDownMenu.ForEach(d => Menu.Items.Remove(d));
                if (_watchVar.IsObject)
                {
                    ObjectDropDownMenu.ForEach(d => Menu.Items.Add(d));
                }
            }
        }
示例#3
0
        public void Update()
        {
            if (_watchVar.IsSpecial)
            {
                return;
            }

            ShowLockedImage(OffsetList.Any(o => GetIsLocked(o)), !OffsetList.All(o => GetIsLocked(o)));

            if (_editMode)
            {
                return;
            }

            _changedByUser = false;

            if (_watchVar.IsBool)
            {
                if (OffsetList.Any(o => _watchVar.GetBoolValue(o)))
                {
                    if (OffsetList.All(o => _watchVar.GetBoolValue(o)))
                    {
                        CheckBoxCheckState = CheckState.Checked;
                    }
                    else
                    {
                        CheckBoxCheckState = CheckState.Indeterminate;
                    }
                }
                else
                {
                    CheckBoxCheckState = CheckState.Unchecked;
                }
            }
            else
            {
                bool firstOffset = true;
                foreach (var offset in OffsetList)
                {
                    string newText = "";
                    if (_watchVar.IsAngle)
                    {
                        newText = _watchVar.GetAngleStringValue(offset, _angleViewMode, _angleTruncated);
                    }
                    else
                    {
                        newText = _watchVar.GetStringValue(offset);
                    }

                    if (firstOffset)
                    {
                        _textBoxValue.Text = newText;
                    }
                    else if (_textBoxValue.Text != newText)
                    {
                        _textBoxValue.Text = "";
                        continue;
                    }

                    firstOffset = false;
                }
            }

            _changedByUser = true;
        }