private void palettePanel_MouseDown(object sender, MouseEventArgs e) { if ((e.X > 30) && (e.X < 30 + 16 * 20) && (e.Y > 0) && (e.Y < 16 * 20)) { int selectedIndex = (e.X - 30) / 20 + (e.Y / 20) * 16; if (e.Button == MouseButtons.Right) { ShowContextMenu(selectedIndex, e.Location); } else if (Utilities.IsControlPressed()) { ToggleColourSelected(selectedIndex); } else if (Utilities.IsShiftPressed()) { AddRangeToSelection(selectedIndex); } else { _selectedIndexes.Clear(); _selectedIndexes.Add(selectedIndex); } UpdatePropertyGrid(); palettePanel.Invalidate(); } }
private void SetSelectedControlToControlAtPosition(int mouseX, int mouseY) { GUIControl controlFound = null; int zorderFound = -1; foreach (GUIControl control in _gui.Controls) { if ((mouseX >= control.Left) && (mouseX < control.Left + control.Width) && (mouseY >= control.Top) && (mouseY < control.Top + control.Height) && (control.ZOrder > zorderFound)) { controlFound = control; zorderFound = control.ZOrder; } } _selectedControl = controlFound; // check for ctrl if (controlFound != null) { if (Utilities.IsControlPressed()) { if (_selected.Contains(controlFound) && _selected.Count > 1) { _selected.Remove(controlFound); if (_selected.Count > 0) { _selectedControl = _selected[_selected.Count - 1]; } else { _selectedControl = null; } } else if (!_selected.Contains(controlFound)) { if (controlFound.MemberOf != null) { foreach (GUIControl gc in controlFound.MemberOf) { _selected.Add(gc); } } else { _selected.Add(controlFound); } } } else { if (!_selected.Contains(controlFound)) { _selected.Clear(); if (controlFound.MemberOf != null) { foreach (GUIControl gc in controlFound.MemberOf) { _selected.Add(gc); } } else { _selected.Add(controlFound); } } _selectedControl = controlFound; } } else if (!Utilities.IsControlPressed()) { _selected.Clear(); _selectedControl = null; } if (_selectedControl == null) { DeSelectControl(); } }
private void MoveControlWithMouse(int mouseX, int mouseY) { NormalGUI normalGui = (NormalGUI)_gui; //int _changex = (mouseX - _mouseXOffset) - _selectedControl.Left; //int _changey = (mouseY - _mouseYOffset) - _selectedControl.Top; int[] _diffx = new int[_selected.Count]; int[] _diffy = new int[_selected.Count]; for (int i = 0; i < _selected.Count; i++) { _diffx[i] = _selected[i].Left - _selectedControl.Left; _diffy[i] = _selected[i].Top - _selectedControl.Top; } _selectedControl.Left = mouseX - _mouseXOffset; _selectedControl.Top = mouseY - _mouseYOffset; if (_selectedControl.Left >= normalGui.Width) { _selectedControl.Left = normalGui.Width - 1; } if (_selectedControl.Top >= normalGui.Height) { _selectedControl.Top = normalGui.Height - 1; } _snappedx = -1; _snappedy = -1; if (!Utilities.IsControlPressed()) { foreach (GUIControl _gc in normalGui.Controls) { if (_gc != _selectedControl && !_selected.Contains(_gc)) { if (Math.Abs(_selectedControl.Left - _gc.Left) < 5) { _selectedControl.Left = _gc.Left; _snappedx = _gc.Left; } if (Math.Abs(_selectedControl.Top - _gc.Top) < 5) { _selectedControl.Top = _gc.Top; _snappedy = _gc.Top; } } } } for (int i = 0; i < _selected.Count; i++) { if (!_selected[i].Locked) { _selected[i].Left = _diffx[i] + _selectedControl.Left; _selected[i].Top = _diffy[i] + _selectedControl.Top; } } bgPanel.Invalidate(); }