private void deleteKeyframe(Keyframe key) { Keyframes keys = currentSlide.keys; var victimIndex = keys.IndexOf(key); if (currentKeyframeIndex == victimIndex) { if (currentKeyframeIndex == (keys.Count - 1)) { selectKeyframe(keys[currentKeyframeIndex - 1]); } else { selectKeyframe(keys[currentKeyframeIndex + 1]); } } KeyframeControl kfc = key.keyframeControl; keyframePanel.Children.Remove(kfc); keys.Remove(key); if (currentKeyframeIndex > victimIndex) { currentKeyframeIndex--; } }
public void selectKeyframe(Keyframe key) { Keyframes keys = currentSlide.keys; int keyFrameIndex = keys.IndexOf(key); if (currentKeyframeIndex >= 0) { Keyframe oldKey = keys[currentKeyframeIndex]; KeyframeControl oldKFControl = oldKey.keyframeControl; unBindKFC(oldKFControl, oldKey); oldKFControl.DeSelect(); } currentKeyframeIndex = keyFrameIndex; imageCropper.updateLayout(); imageCropper.cropZoom = key.zoomFactor; imageCropper.cropX = key.x; imageCropper.cropY = key.y; imageCropper.updateLayout(); KeyframeControl kfControl = key.keyframeControl; kfControl.Select(); Binding xBinding = new Binding("cropX") { Source = imageCropper, Mode = BindingMode.OneWay }; kfControl.xTb.SetBinding(TextBox.TextProperty, xBinding); Binding yBinding = new Binding("cropY") { Source = imageCropper, Mode = BindingMode.OneWay }; kfControl.yTb.SetBinding(TextBox.TextProperty, yBinding); Binding zoomBinding = new Binding("cropZoom") { Source = imageCropper, Mode = BindingMode.OneWay }; kfControl.zoomTb.SetBinding(TextBox.TextProperty, zoomBinding); }
private int dropDirection(DragEventArgs e, Keyframe target_key) { KeyframeControl kfc = target_key.keyframeControl; Point p = e.GetPosition(kfc); if (p.X < (kfc.ActualWidth / 2)) { return(LEFT); } else { return(RIGHT); } }
private void unBindKFC(KeyframeControl kfc, Keyframe key) { if (kfc == null) { return; } BindingOperations.ClearBinding(kfc.xTb, TextBox.TextProperty); BindingOperations.ClearBinding(kfc.yTb, TextBox.TextProperty); BindingOperations.ClearBinding(kfc.zoomTb, TextBox.TextProperty); // because clearing the binding clears the targets kfc.xTb.Text = key.x.ToString(); kfc.yTb.Text = key.y.ToString(); kfc.zoomTb.Text = key.zoomFactor.ToString(); }
public void addKeyframeControl(Keyframe key, int insertIndex = -1) { KeyframeControl kfControl = new KeyframeControl(); kfControl.DeSelect(); key.keyframeControl = kfControl; if (insertIndex == -1) { keyframePanel.Children.Add(kfControl); } else { keyframePanel.Children.Insert(insertIndex, kfControl); } kfControl.PreviewMouseUp += delegate(object sender, MouseButtonEventArgs e) { keyFrameClick(sender, e, key); }; kfControl.PreviewMouseDown += delegate(object sender, MouseButtonEventArgs e) { keyframePreviewMouseDown(sender, e, key); }; kfControl.MouseMove += delegate(object sender, MouseEventArgs e) { keyframeMouseMove(sender, e, key); }; kfControl.DragOver += delegate(object sender, DragEventArgs e) { keyframeDragOver(sender, e, key); }; kfControl.Drop += delegate(object sender, DragEventArgs e) { keyframeDrop(sender, e, key); }; kfControl.GiveFeedback += delegate(object sender, GiveFeedbackEventArgs e) { keyframeGiveFeedback(sender, e, key); }; kfControl.xTb.Text = key.x.ToString(); kfControl.yTb.Text = key.y.ToString(); kfControl.zoomTb.Text = key.zoomFactor.ToString(); kfControl.durTb.Text = key.duration.ToString(); kfControl.xTb.TextChanged += delegate(object sender, TextChangedEventArgs e) { kfControlChangeEvent(sender, e, key); }; kfControl.yTb.TextChanged += delegate(object sender, TextChangedEventArgs e) { kfControlChangeEvent(sender, e, key); }; kfControl.zoomTb.TextChanged += delegate(object sender, TextChangedEventArgs e) { kfControlChangeEvent(sender, e, key); }; kfControl.durTb.TextChanged += delegate(object sender, TextChangedEventArgs e) { kfControlChangeEvent(sender, e, key); }; kfControl.CMCut.Click += delegate(object sender, RoutedEventArgs e) { cutKeyframeClick(sender, e, key); }; kfControl.CMPaste.Click += delegate(object sender, RoutedEventArgs e) { pasteKeyframeClick(sender, e, key); }; kfControl.CMInsert.Click += delegate(object sender, RoutedEventArgs e) { insertKeyframeClick(sender, e, key); }; kfControl.KeyframeContextMenu.Opened += delegate(object sender, RoutedEventArgs e) { keyframeContextMenuOpened(sender, e, key); }; }
public void selectSlide(int slideIndex, Boolean unbindOld = true) { if (slideIndex < 0) { return; } currentSlide.slideControl.DeSelect(); if (unbindOld) { Keyframe oldKey = currentSlide.keys[currentKeyframeIndex]; KeyframeControl oldKFControl = oldKey.keyframeControl; unBindKFC(oldKFControl, oldKey); } currentSlideIndex = slideIndex; currentSlide.slideControl.Select(); currentKeyframeIndex = 0; var bitmap = Util.BitmapFromUri(slides[slideIndex].uri); imageCropper.image.Source = bitmap; initializeKeysUI(currentSlide); caption.Text = currentSlide.fileName + " (" + bitmap.PixelWidth + " x " + bitmap.PixelHeight + ") " + (slideIndex + 1) + " of " + slides.Count; }