static private T HandleEditButtons <T>(T values, ref int selected, SplineComponent spline, string insertLabel, InsertPoint <T> insert, string removeLabel, RemovePoint <T> remove) { if (GUILayout.Button(insertLabel)) { Undo.RecordObject(spline, insertLabel); values = insert(values, ref selected); } if (values != null && selected >= 0) { if (GUILayout.Button(removeLabel)) { Undo.RecordObject(spline, removeLabel); values = remove(values, ref selected); } } return(values); }
public TrackViewer(GCodeCollector code) { InitializeComponent(); Code = code; zoomSlider.ValueChanged += OnSliderValueChanged; scrollViewer.ScrollChanged += OnScrollViewerScrollChanged; scrollViewer.MouseMove += Vaszon_MouseMove; scrollViewer.PreviewMouseRightButtonUp += OnMouseRightButtonUp; scrollViewer.PreviewMouseRightButtonDown += OnMouseRightButtonDown; scrollViewer.PreviewMouseWheel += OnPreviewMouseWheel; RemoveBtn.Click += (s, e) => { RemovePoint?.Invoke(_p - 1); SetPosition(_p); }; Vaszon.MouseUp += (s, e) => { if (!Keyboard.IsKeyDown(Key.LeftCtrl)) { return; } System.Windows.Point currentPosition = e.GetPosition(Vaszon); currentPosition.X -= ShiftView.X; currentPosition.Y -= ShiftView.Y; AddPoint?.Invoke(_p, currentPosition); var line = Vaszon.Children[Vaszon.Children.Count - 2] as Line; SetPosition(_p + 1); }; jelolo = new Ellipse(); jelolo.Fill = Brushes.Yellow; jelolo.Stroke = Brushes.Black; jelolo.Width = 1; jelolo.Height = 1; jelolo.StrokeThickness = 0.2; jelolo.MouseEnter += (s, e) => { Mouse.OverrideCursor = Cursors.Hand; }; jelolo.MouseLeave += (s, e) => { Mouse.OverrideCursor = null; }; jelolo.MouseDown += (s, e) => { mozog = true; jelolo.CaptureMouse(); }; jelolo.MouseUp += (s, e) => { mozog = false; jelolo.ReleaseMouseCapture(); }; jelolo.MouseMove += (s, e) => { if (!mozog) { return; } System.Windows.Point currentPosition = e.GetPosition(Vaszon); Canvas.SetLeft(jelolo, currentPosition.X - jelolo.Width / 2); Canvas.SetTop(jelolo, currentPosition.Y - jelolo.Height / 2); var line = Vaszon.Children[Vaszon.Children.Count - 2] as Line; line.X2 = currentPosition.X; line.Y2 = currentPosition.Y; var l = line.DataContext as GCodeLine; currentPosition.X -= ShiftView.X; currentPosition.Y -= ShiftView.Y; l.x = currentPosition.X; l.y = currentPosition.Y; }; }