/// <summary> /// Efface la mémoire des actions effectuées. /// </summary> /// <remarks> /// Attention ne doit pas être appelé à l'intérieur d'un couple /// <see cref="StartRecording"/> <see cref="EndRecording"/> ou d'un couple /// <see cref="DisableUndoRegistration"/> <see cref="EnableUndoRegistration"/>. /// </remarks> public static void Clear() { logger.ConditionalTrace("Clear"); undoStack.Clear(); redoStack.Clear(); actList = null; recDepth = 0; disableRegistering = 0; undoing = false; redoing = false; }
/// <summary> /// Les actions qui seront enregistrées jusqu'à l'appel de <see cref="EndRecording"/> /// seront regroupées dans une seule action qui pourra être annulée en une fois. /// </summary> /// <remarks>Attention à ce que le couple <see cref="StartRecording"/> /// <see cref="EndRecording"/> se trouve à l'intérieur d'un couple /// <see cref="DisableUndoRegistration"/> <see cref="EnableUndoRegistration"/></remarks> /// <param name="name">Le nom de l'action groupée.</param> public static void StartRecording(string name) { logger.ConditionalTrace("StartRecording {0}, undoing: {1}, disableRegistering: {2}", name, undoing, disableRegistering); logger.ConditionalTrace(" recDepth on entry: {0}", recDepth); if (!undoing && disableRegistering == 0) { if (actList != null) { recDepth++; logger.ConditionalTrace(" recDepth incremented to {0}", recDepth); } else { actList = new CLActionList(name); } } }
/// <summary> /// Termine l'enregistrement d'une liste d'actions. Le pendant à /// <see cref="StartRecording"/>. /// </summary> public static void EndRecording() { logger.ConditionalTrace("EndRecording depth: {0} undoing: {1}, disableRegistering: {2}", recDepth, undoing, disableRegistering); if (!undoing && disableRegistering == 0) { if (actList != null) { if (recDepth > 0) { recDepth--; } else { PushUndoAct(actList); actList = null; } } else { throw new InvalidOperationException("EndRecording alors qu'il semble ne pas y avoir eu de Start correspondant."); } } }