Implementada la funcionalidad de bloqueo y desbloqueo de objetos seleccionados en el menú contextual: se agregó un submenú para gestionar el estado de bloqueo de los objetos, actualizando visualmente la selección y marcando cambios sin guardar en el modelo de vista.

This commit is contained in:
Miguel 2025-06-13 22:07:37 +02:00
parent 9c4e87be9b
commit 883620b69d
1 changed files with 46 additions and 0 deletions

View File

@ -426,6 +426,23 @@ namespace CtrEditor
}
}
private void LockSelectedObjects(bool lockState)
{
foreach (var selectedObject in _objectManager.SelectedObjects)
{
selectedObject.Lock_movement = lockState;
}
// Actualizar los visuales de selección para reflejar el cambio de estado
_objectManager.UpdateSelectionVisuals();
// Marcar como cambios sin guardar
if (DataContext is MainViewModel viewModel)
{
viewModel.HasUnsavedChanges = true;
}
}
private void Canvas_MouseEnter(object sender, MouseEventArgs e)
{
if (e.OriginalSource == ImagenEnTrabajoCanvas)
@ -628,6 +645,35 @@ namespace CtrEditor
contextMenu.Items.Add(editPropertiesItem);
contextMenu.Items.Add(new Separator());
// Opciones de bloqueo/desbloqueo
var lockSubmenu = new MenuItem { Header = "Bloqueo" };
// Verificar el estado actual de los objetos
int totalObjects = _objectManager.SelectedObjects.Count;
int lockedObjects = _objectManager.SelectedObjects.Count(obj => obj.Lock_movement);
int unlockedObjects = totalObjects - lockedObjects;
var lockAllItem = new MenuItem { Header = $"Bloquear Objetos ({unlockedObjects} desbloqueados)" };
lockAllItem.Click += (s, e) => LockSelectedObjects(true);
lockAllItem.IsEnabled = unlockedObjects > 0;
lockSubmenu.Items.Add(lockAllItem);
var unlockAllItem = new MenuItem { Header = $"Desbloquear Objetos ({lockedObjects} bloqueados)" };
unlockAllItem.Click += (s, e) => LockSelectedObjects(false);
unlockAllItem.IsEnabled = lockedObjects > 0;
lockSubmenu.Items.Add(unlockAllItem);
// Mostrar estado actual si hay mezcla
if (lockedObjects > 0 && unlockedObjects > 0)
{
lockSubmenu.Items.Add(new Separator());
var statusItem = new MenuItem { Header = $"Estado: {lockedObjects} bloqueados, {unlockedObjects} libres", IsEnabled = false };
lockSubmenu.Items.Add(statusItem);
}
contextMenu.Items.Add(lockSubmenu);
contextMenu.Items.Add(new Separator());
}
contextMenu.IsOpen = true;