//----------------------------------------------------------------------- private void GenerateSnapList(KeyframeItem dragged) { snapLines.Clear(); foreach (var timeline in TimelineItem.TimelineGroup) { foreach (KeyframeItem keyframe in timeline.Children) { if (keyframe != dragged && !keyframe.IsSelected) { var time = keyframe.Time; if (!snapLines.Contains(time)) { snapLines.Add(time); } if (keyframe.Duration > 0) { time = keyframe.EndTime; if (!snapLines.Contains(time)) { snapLines.Add(time); } } } } } snapLines.Sort(); }
public DragAction(KeyframeItem item, double originalPos, double startOffset, int timelineIndex) { Item = item; OriginalPosition = originalPos; ActionStartOffset = startOffset; StartTimelineIndex = timelineIndex; }
public void CreateChildren(KeyframeItem item, UndoRedoManager undoRedo) { foreach (var def in Children) { var name = def.Name; DataItem childItem = def.CreateData(undoRedo); item.Children.Add(childItem); } }
//----------------------------------------------------------------------- private double GetKeyframeWidth(KeyframeItem keyframe) { double pixelsASecond = ActualWidth / TimelineItem.TimelineRange; if (keyframe.Duration > 0f) { return(keyframe.Duration * pixelsASecond); } var preview = keyframe.GetImagePreview(); if (preview != null) { return(ActualHeight - 20); } else { return(10); } }
public override DataItem CreateData(UndoRedoManager undoRedo) { var item = new KeyframeItem(this, undoRedo); foreach (var att in Attributes) { var attItem = att.CreateData(undoRedo); item.Attributes.Add(attItem); } CreateChildren(item, undoRedo); foreach (var child in item.Attributes) { child.UpdateVisibleIfBinding(); } foreach (var child in item.Children) { child.UpdateVisibleIfBinding(); } return(item); }
public override DataItem LoadData(XElement element, UndoRedoManager undoRedo) { var item = new KeyframeItem(this, undoRedo); if (Collapse) { var split = element.Value.Split(new string[] { Seperator }, StringSplitOptions.None); if (split.Length == Children.Count) { for (int i = 0; i < split.Length; i++) { var data = split[i]; var def = Children[i] as PrimitiveDataDefinition; DataItem childItem = def.LoadFromString(data, undoRedo); item.Children.Add(childItem); } } else { foreach (var def in Children) { var child = def.CreateData(undoRedo); item.Children.Add(child); } } } else { var commentTexts = Children.Where(e => e is CommentDefinition).Select(e => (e as CommentDefinition).Text); var createdChildren = new List <DataItem>(); foreach (var def in Children) { var name = def.Name; var els = element.Elements(name); if (els.Count() > 0) { var prev = els.First().PreviousNode as XComment; if (prev != null) { var comment = new CommentDefinition().LoadData(prev, undoRedo); if (!commentTexts.Contains(comment.TextValue)) { item.Children.Add(comment); } } if (def is CollectionDefinition) { CollectionItem childItem = (CollectionItem)def.LoadData(els.First(), undoRedo); if (childItem.Children.Count == 0) { var dummyEl = new XElement(els.First().Name); foreach (var el in els) { dummyEl.Add(el); } childItem = (CollectionItem)def.LoadData(dummyEl, undoRedo); } item.Children.Add(childItem); } else { DataItem childItem = def.LoadData(els.First(), undoRedo); item.Children.Add(childItem); } } else { DataItem childItem = def.CreateData(undoRedo); item.Children.Add(childItem); } } if (element.LastNode is XComment) { var comment = new CommentDefinition().LoadData(element.LastNode as XComment, undoRedo); if (!commentTexts.Contains(comment.TextValue)) { item.Children.Add(comment); } } } foreach (var att in Attributes) { var el = element.Attribute(att.Name); DataItem attItem = null; if (el != null) { attItem = att.LoadData(new XElement(el.Name, el.Value.ToString()), undoRedo); } else { attItem = att.CreateData(undoRedo); } item.Attributes.Add(attItem); } item.Children.OrderBy(e => Children.IndexOf(e.Definition)); foreach (var child in item.Attributes) { child.UpdateVisibleIfBinding(); } foreach (var child in item.Children) { child.UpdateVisibleIfBinding(); } return(item); }
public override void DoSaveData(XElement parent, DataItem item) { KeyframeItem si = item as KeyframeItem; if (Collapse) { var name = Name; var data = ""; foreach (var child in si.Children) { var primDef = child.Definition as PrimitiveDataDefinition; data += primDef.WriteToString(child) + Seperator; } data = data.Remove(data.Length - Seperator.Length, Seperator.Length); var el = new XElement(name, data); parent.Add(el); foreach (var att in si.Attributes) { var primDef = att.Definition as PrimitiveDataDefinition; var asString = primDef.WriteToString(att); var defaultAsString = primDef.DefaultValueString(); if (att.Name == "Name" || !primDef.SkipIfDefault || asString != defaultAsString) { el.SetAttributeValue(att.Name, asString); } } } else { var name = Name; var el = new XElement(name); parent.Add(el); foreach (var att in si.Attributes) { var primDef = att.Definition as PrimitiveDataDefinition; var asString = primDef.WriteToString(att); var defaultAsString = primDef.DefaultValueString(); if (att.Name == "Name" || !primDef.SkipIfDefault || asString != defaultAsString) { el.SetAttributeValue(att.Name, asString); } } foreach (var child in si.Children) { var childDef = child.Definition; if (!Children.Contains(childDef)) { throw new Exception("A child has a definition that we dont have! Something broke!"); } child.Definition.SaveData(el, child); } } }