private void UndoModule() { lock (MainWindow.theNeuronArray.modules) { if (moduleUndoInfo.Count == 0) { return; } ModuleUndo m1 = moduleUndoInfo.Last(); if (m1.moduleState == null) //the module was just added { ModuleView.DeleteModule(m1.index); } else { if (m1.index == -1) //the module was just deleted { ModuleView mv = new ModuleView { Width = m1.moduleState.Width, Height = m1.moduleState.Height, FirstNeuron = m1.moduleState.FirstNeuron, Color = m1.moduleState.Color, ModuleTypeStr = m1.moduleState.ModuleTypeStr, Label = m1.moduleState.Label, }; // modules.Add(mv); ModuleView.CreateModule(mv.Label, mv.ModuleTypeStr, Utils.IntToColor(mv.Color), mv.FirstNeuron, mv.Width, mv.Height); } else { modules[m1.index].FirstNeuron = m1.moduleState.FirstNeuron; modules[m1.index].Width = m1.moduleState.Width; modules[m1.index].Height = m1.moduleState.Height; modules[m1.index].Color = m1.moduleState.Color; modules[m1.index].ModuleTypeStr = m1.moduleState.ModuleTypeStr; modules[m1.index].Label = m1.moduleState.Label; } } moduleUndoInfo.RemoveAt(moduleUndoInfo.Count - 1); } }
public void AddModuleUndo(int index, ModuleView currentModule) { ModuleUndo m1 = new ModuleUndo(); m1.index = index; if (currentModule == null) { m1.moduleState = null; } else { m1.moduleState = new ModuleView() { Width = currentModule.Width, Height = currentModule.Height, FirstNeuron = currentModule.FirstNeuron, Color = currentModule.Color, ModuleTypeStr = currentModule.TheModule.GetType().Name, Label = currentModule.Label } }; moduleUndoInfo.Add(m1); }