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:
parent
9c4e87be9b
commit
883620b69d
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue