public override void Undo(CustomStrokeCollection strokes) { if (strokes.has(Id)) { CustomStroke old = strokes.get(Id); if (old.isLocked()) { throw new Exception("Stroke is Locked"); } strokes.Remove(strokes.get(Id)); EditionSocket.RemoveStroke(Id); } }
private void Canvas_StrokeErasing(object sender, InkCanvasStrokeErasingEventArgs e) { VueModele vueModele = ((VueModele)this.DataContext); //Empiler la modification if (e.Stroke is Savable && !((CustomStroke)e.Stroke).isLocked()) { CustomStroke erasedStroke = (CustomStroke)e.Stroke; vueModele.editeur.Do(new DeleteStroke(erasedStroke.Id.ToString(), ((Savable)erasedStroke).toJson())); EditionSocket.RemoveStroke(erasedStroke.Id.ToString()); } else if (((CustomStroke)e.Stroke).isLocked()) { e.Cancel = true; } }
private void SupprimerSelection(object sender, RoutedEventArgs e) { VueModele vueModele = ((VueModele)this.DataContext); vueModele.editeur.EditingStroke = null; var selectedStrokes = vueModele.Traits.Where(stroke => ((CustomStroke)stroke).isSelected()).ToList(); if (selectedStrokes.Count > 0) { ClipBoard.Clear(); selectedStrokes.ForEach(stroke => { vueModele.Traits.Remove(stroke); ClipBoard.Add(stroke); EditionSocket.RemoveStroke(((CustomStroke)stroke).Id.ToString()); Editeur.instance.Do(new DeleteStroke(((CustomStroke)stroke).Id.ToString(), ((Savable)stroke).toJson())); }); } }