aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Document/IUndoableOperation.cs
blob: 2e19c462ce0a6aab4d964725ea58ea749b7f3704 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)

using System;

namespace Tango.Scripting.Editors.Document
{
	/// <summary>
	/// This Interface describes a the basic Undo/Redo operation
	/// all Undo Operations must implement this interface.
	/// </summary>
	public interface IUndoableOperation
	{
		/// <summary>
		/// Undo the last operation
		/// </summary>
		void Undo();
		
		/// <summary>
		/// Redo the last operation
		/// </summary>
		void Redo();
	}
	
	interface IUndoableOperationWithContext : IUndoableOperation
	{
		void Undo(UndoStack stack);
		void Redo(UndoStack stack);
	}
}
t;bool> changeRenderModeMethod; protected Action pushMarkerMethod; public bool IsPaused { get { return (bool)GetValue(IsPausedProperty); } set { SetValue(IsPausedProperty, value); } } public static readonly DependencyProperty IsPausedProperty = DependencyProperty.Register("IsPaused", typeof(bool), typeof(GraphControllerBase), new PropertyMetadata(false, new PropertyChangedCallback(PausedChanged))); private static void PausedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var control = d as GraphControllerBase; if (control.pausedMethod != null) { control.pausedMethod(control.IsPaused); } } internal void RegisterMethods(Action clear, Action startThread, Action<bool> paused, Action<bool> renderMode, Action pushMarker) { changeRenderModeMethod = renderMode; pausedMethod = paused; clearMethod = clear; startThreadMethod = startThread; pushMarkerMethod = pushMarker; } public abstract void Clear(); public virtual void ChangeRenderMode(bool enabled) { changeRenderModeMethod(enabled); } internal abstract void ClearPoints(); public void PushMarkerLine() { if (pushMarkerMethod != null) { pushMarkerMethod(); } } } }