diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 6be777a..801cdf5 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -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;