// // TakeControlCommand.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Threading; using System.Threading.Tasks; using Remora.Results; namespace NosSmooth.Core.Commands.Control; /// /// Take control in the given group and call the given callback with a cancellation token. /// /// /// The command will be cancelled either if the program tries to take control in the same group again /// or the user has clicked somewhere to cancel the operation. /// /// The callback to be called when control is granted. /// The callback to be called if the operation was cancelled and the control was revoked. /// The group of the take control. public record TakeControlCommand ( Func> HandleCallback, Func> CancelledCallback, string Group = "__default", bool CanBeCancelledByAnother = true, bool WaitForCancellation = true, bool AllowUserCancel = true, bool CancelOnMapChange = true ) : ITakeControlCommand;