private IEnumerator <object> HandleScroll(WidgetInput input) { var prevPosition = Vector2.Zero; while (true) { var scrollDelta = GetWheelDelta(input); if (scrollDelta != 0 && !input.IsKeyPressed(Key.Alt)) { timeline.OffsetY += scrollDelta * TimelineMetrics.DefaultRowHeight; } if (input.IsKeyPressed(Key.Mouse2)) { var delta = input.MousePosition - prevPosition; if (delta != Vector2.Zero && (timeline.Offset.X - delta.X > 0 || timeline.Offset.Y - delta.Y > 0)) { timeline.Offset -= delta; Core.Operations.Dummy.Perform(); } } prevPosition = input.MousePosition; yield return(null); } }
void HandleCellsMagnification(WidgetInput input) { var delta = GetWheelDelta(input); if (delta != 0 && input.IsKeyPressed(Key.Alt)) { var prevColWidth = TimelineMetrics.ColWidth; TimelineMetrics.ColWidth = (TimelineMetrics.ColWidth + delta).Clamp(5, 30); if (prevColWidth != TimelineMetrics.ColWidth) { timeline.OffsetX += timeline.CurrentColumn * delta; Core.Operations.Dummy.Perform(Document.Current.History); } } }
void HandleCellsMagnification(WidgetInput input) { var delta = GetWheelDelta(input); if (delta != 0 && input.IsKeyPressed(Key.Alt)) { var prevColWidth = TimelineMetrics.ColWidth; TimelineMetrics.ColWidth = (TimelineMetrics.ColWidth + delta).Clamp(5, 30); if (prevColWidth != TimelineMetrics.ColWidth) { var mp = timeline.Grid.RootWidget.Input.LocalMousePosition.X + Timeline.Instance.Offset.X; Timeline.Instance.OffsetX += (mp / prevColWidth) * delta; Core.Operations.Dummy.Perform(); } } }
public Item(Widget widget, Frame frame, WidgetInput input, bool showLabel) { this.frame = frame; var totalTime = 0d; originalWidget = widget; exposedWidget = (Widget)widget.Clone(); exposedWidget.Animations.Clear(); originalTransform = widget.CalcTransitionToSpaceOf(frame).ToTransform2(); exposedTransform = CalcExposedTransform(widget, frame); originalWidget.SetTangerineFlag(TangerineFlags.HiddenOnExposition, true); frame.HitTestTarget = true; var clickArea = new Widget { Size = frame.Size, Anchors = Anchors.LeftRightTopBottom, HitTestTarget = true }; frame.AddNode(clickArea); label = new ThemedSimpleText { Visible = showLabel, Position = new Vector2(3, 2), Color = ColorTheme.Current.SceneView.Label, Text = (exposedWidget.Id ?? ""), OverflowMode = TextOverflowMode.Ignore }; label.FontHeight *= 0.75f; frame.AddNode(label); frame.AddNode(exposedWidget); borderPresenter = new WidgetBoundsPresenter(ColorTheme.Current.SceneView.ExposedItemInactiveBorder, 1); frame.CompoundPresenter.Push(borderPresenter); frame.Tasks.AddLoop(() => { borderPresenter.Color = Document.Current.SelectedNodes().Contains(widget) ? ColorTheme.Current.SceneView.ExposedItemSelectedBorder : ColorTheme.Current.SceneView.ExposedItemInactiveBorder; totalTime += Lime.Task.Current.Delta; if (clickArea.IsMouseOver()) { if (totalTime % 0.5f < 0.25f) { borderPresenter.Color = ColorTheme.Current.SceneView.ExposedItemActiveBorder; } label.Visible = true; if (clickArea.Input.WasMousePressed()) { if (!input.IsKeyPressed(MultiSelectKey)) { Core.Operations.ClearRowSelection.Perform(); Core.Operations.SelectNode.Perform(widget); Closed = true; } else { var isSelected = Document.Current.SelectedNodes().Contains(widget); Core.Operations.SelectNode.Perform(widget, !isSelected); } } } else { label.Visible = showLabel; } }); }
public Item(Widget widget, Frame frame, WidgetInput input, bool showLabel) { this.frame = frame; var totalTime = 0d; originalWidget = widget; exposedWidget = (Widget)widget.Clone(); exposedWidget.Animations.Clear(); originalTransform = (widget.LocalToWorldTransform * SceneView.Instance.CalcTransitionFromSceneSpace(frame)).ToTransform2(); originalWidget.SetTangerineFlag(TangerineFlags.HiddenOnExposition, true); frame.HitTestTarget = true; var clickArea = new Widget { Size = frame.Size, Anchors = Anchors.LeftRightTopBottom, HitTestTarget = true }; frame.AddNode(clickArea); label = new ThemedSimpleText { Visible = showLabel, Position = new Vector2(3, 2), Color = ColorTheme.Current.SceneView.Label, Text = (exposedWidget.Id ?? ""), OverflowMode = TextOverflowMode.Ignore }; frame.AddNode(label); frame.AddNode(exposedWidget); borderPresenter = new WidgetBoundsPresenter(ColorTheme.Current.SceneView.ExposedItemInactiveBorder, 1); frame.CompoundPresenter.Push(borderPresenter); int lastFrame = 0; foreach (var node in exposedWidget.Nodes) { foreach (var animator in node.Animators) { foreach (var key in animator.ReadonlyKeys) { lastFrame = Math.Max(lastFrame, key.Frame); } } } frame.Tasks.AddLoop(() => { borderPresenter.Color = Document.Current.SelectedNodes().Contains(widget) ? ColorTheme.Current.SceneView.ExposedItemSelectedBorder : ColorTheme.Current.SceneView.ExposedItemInactiveBorder; totalTime += Lime.Task.Current.Delta; if (clickArea.IsMouseOver()) { if (totalTime % 0.5f < 0.25f) { borderPresenter.Color = ColorTheme.Current.SceneView.ExposedItemActiveBorder; } label.Visible = true; if (clickArea.Input.WasMousePressed()) { if (!input.IsKeyPressed(MultiSelectKey)) { Document.Current.History.DoTransaction(() => { Core.Operations.ClearRowSelection.Perform(); Core.Operations.SelectNode.Perform(widget); }); Closed = true; } else { var isSelected = Document.Current.SelectedNodes().Contains(widget); Document.Current.History.DoTransaction(() => { Core.Operations.SelectNode.Perform(widget, !isSelected); }); } } } else { label.Visible = showLabel; } if (exposedWidget.DefaultAnimation.Frame <= lastFrame) { savedTime = totalTime; } if (totalTime - savedTime > 1) { exposedWidget.DefaultAnimation.Frame = 0; } }); }