#![allow(unused_imports, dead_code)]
use crate::app_context::AppContext;
use anyhow::{Context, Result};
pub fn undo(ctx: &AppContext, stack_id: Option<u64>) -> Result<()> {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.set_event_hub(&ctx.event_hub);
undo_redo_manager.undo(stack_id).context("undo")
}
pub fn redo(ctx: &AppContext, stack_id: Option<u64>) -> Result<()> {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.set_event_hub(&ctx.event_hub);
undo_redo_manager.redo(stack_id).context("redo")
}
pub fn can_undo(ctx: &AppContext, stack_id: Option<u64>) -> bool {
let undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.can_undo(stack_id)
}
pub fn can_redo(ctx: &AppContext, stack_id: Option<u64>) -> bool {
let undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.can_redo(stack_id)
}
pub fn begin_composite(ctx: &AppContext, stack_id: Option<u64>) {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.set_event_hub(&ctx.event_hub);
undo_redo_manager.begin_composite(stack_id);
}
pub fn end_composite(ctx: &AppContext) {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.set_event_hub(&ctx.event_hub);
undo_redo_manager.end_composite();
}
pub fn cancel_composite(ctx: &AppContext) {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.set_event_hub(&ctx.event_hub);
undo_redo_manager.cancel_composite();
}
pub fn clear_stack(ctx: &AppContext, stack_id: u64) {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.clear_stack(stack_id);
}
pub fn clear_all_stacks(ctx: &AppContext) {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.clear_all_stacks();
}
pub fn get_stack_size(ctx: &AppContext, stack_id: u64) -> usize {
let undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.get_stack_size(stack_id)
}
pub fn create_new_stack(ctx: &AppContext) -> u64 {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager.create_new_stack()
}
pub fn delete_stack(ctx: &AppContext, stack_id: u64) -> Result<()> {
let mut undo_redo_manager = ctx.undo_redo_manager.lock().unwrap();
undo_redo_manager
.delete_stack(stack_id)
.context("deleting undo/redo stack")
}