60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.ComponentModel;
|
|
using QURO;
|
|
|
|
namespace AnimationEditor.Modifications
|
|
{
|
|
public static class ModHelper
|
|
{
|
|
public static void DoModificationWithSelectionTracking(IModification mod, ComboBox animBox, ListBox frameBox, ListBox frameSpriteBox)
|
|
{
|
|
mod.SetPreChangeSelection(new SelectionState(animBox, frameBox, frameSpriteBox));
|
|
mod.Do();
|
|
mod.SetPostChangeSelection(new SelectionState (animBox, frameBox, frameSpriteBox));
|
|
Console.WriteLine("Perform: " + mod);
|
|
}
|
|
|
|
public static void UndoAndRestoreSelection(IModification mod, ComboBox animBox, ListBox frameBox, ListBox frameSpriteBox)
|
|
{
|
|
mod.Undo();
|
|
RestoreSelection(mod.GetPreChangeSelection(), animBox, frameBox, frameSpriteBox);
|
|
Console.WriteLine("Undo: " + mod);
|
|
}
|
|
|
|
public static void RedoAndRestoreSelection(IModification mod, ComboBox animBox, ListBox frameBox, ListBox frameSpriteBox)
|
|
{
|
|
mod.Do();
|
|
RestoreSelection(mod.GetPostChangeSelection(), animBox, frameBox, frameSpriteBox);
|
|
Console.WriteLine("Redo: " + mod);
|
|
}
|
|
|
|
public static void RestoreSelection(SelectionState selection, ComboBox animBox, ListBox frameBox, ListBox frameSpriteBox)
|
|
{
|
|
animBox.SelectedIndex = selection.SelectedAnimation;
|
|
|
|
frameBox.SelectedIndices.Clear();
|
|
foreach(int index in selection.SelectedFrames)
|
|
{
|
|
frameBox.SelectedIndices.Add(index);
|
|
}
|
|
|
|
frameSpriteBox.SelectedIndices.Clear();
|
|
foreach(int index in selection.SelectedFrameSprites)
|
|
{
|
|
frameSpriteBox.SelectedIndices.Add(index);
|
|
}
|
|
}
|
|
|
|
public static void SetSingleSelection(ListBox lb, int index)
|
|
{
|
|
lb.SelectedIndices.Clear();
|
|
lb.SelectedIndex = index;
|
|
}
|
|
}
|
|
}
|