ToolbarButton CreateEyeButton() { var button = new ToolbarButton(IconPool.GetTexture("Timeline.Eye")) { Tooltip = "Show widgets" }; button.AddTransactionClickHandler(() => { var nodes = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList(); var visibility = NodeVisibility.Hidden; if (nodes.All(i => i.EditorState().Visibility == NodeVisibility.Hidden)) { visibility = NodeVisibility.Shown; } else if (nodes.All(i => i.EditorState().Visibility == NodeVisibility.Shown)) { visibility = NodeVisibility.Default; } foreach (var node in nodes) { Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Visibility), visibility); } }); button.Components.Add(new DocumentationComponent("ShowWidgets")); button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v); return(button); }
ToolbarButton CreateExitButton() { var button = new ToolbarButton(IconPool.GetTexture("Timeline.ExitContainer")) { Tip = "Exit current container (backspace)" }; button.AddTransactionClickHandler(Core.Operations.LeaveNode.Perform); button.Updating += _ => button.Enabled = Core.Operations.LeaveNode.IsAllowed(); button.Components.Add(new DocumentationComponent("ExitContainer")); return(button); }
ToolbarButton CreateLockButton() { var button = new ToolbarButton { Highlightable = false }; button.AddChangeWatcher( () => trackRow.Locked, i => button.Texture = IconPool.GetTexture(i ? "Timeline.Lock" : "Timeline.Dot") ); button.AddTransactionClickHandler(() => Core.Operations.SetProperty.Perform(trackRow, nameof(AnimationTrackRow.Locked), !trackRow.Locked)); return(button); }
ToolbarButton CreateLockAnimationButton() { var button = new ToolbarButton { Highlightable = false }; button.AddChangeWatcher( () => propRow.Animator.Enabled, i => button.Texture = IconPool.GetTexture(i ? "Timeline.AnimationEnabled" : "Timeline.AnimationDisabled") ); button.AddTransactionClickHandler(() => { Core.Operations.SetProperty.Perform(propRow.Animator, nameof(IAnimator.Enabled), !propRow.Animator.Enabled); }); return(button); }
ToolbarButton CreateApplyZeroPoseButton() { var button = new ToolbarButton(IconPool.GetTexture("Timeline.ApplyZeroPose")) { Tooltip = "Apply zero pose" }; button.AddTransactionClickHandler(() => { Core.Operations.SetProperty.Perform(Document.Current.Animation, nameof(Animation.ApplyZeroPose), !Document.Current.Animation.ApplyZeroPose); }); button.AddChangeWatcher(() => Document.Current.Animation.ApplyZeroPose, i => button.Checked = i); button.Components.Add(new DocumentationComponent("ApplyZeroPose")); button.AddChangeWatcher(() => !Document.Current.Animation.IsLegacy && !Document.Current.Animation.IsCompound, v => button.Visible = v); return(button); }
ToolbarButton CreateLockButton() { var button = new ToolbarButton { Highlightable = false }; button.Texture = IconPool.GetTexture("Timeline.Lock"); button.AddTransactionClickHandler(() => { var locked = InnerNodes(folder).All(i => !i.EditorState().Locked); foreach (var node in InnerNodes(folder)) { Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Locked), locked); } }); return(button); }
ToolbarButton CreateExpandButton() { var button = new ToolbarButton { Highlightable = false, Padding = new Thickness(5) }; button.Texture = IconPool.GetTexture("Timeline.minus"); button.AddChangeWatcher( () => folder.Expanded, i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus") ); button.AddChangeWatcher( () => folder.Items.Count != 0, i => button.Visible = folder.Items.Count != 0 ); button.AddTransactionClickHandler(ExpandOrCollapse); return(button); }
ToolbarButton CreateLockButton() { var button = new ToolbarButton(IconPool.GetTexture("Timeline.Lock")) { Tip = "Lock widgets" }; button.AddTransactionClickHandler(() => { var nodes = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList(); var locked = nodes.All(i => !i.EditorState().Locked); foreach (var node in nodes) { Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Locked), locked); } }); button.Components.Add(new DocumentationComponent("LockWidgets")); return(button); }
ToolbarButton CreateNewFolderButton() { var button = new ToolbarButton(IconPool.GetTexture("Tools.NewFolder")) { Tip = "Create folder" }; button.AddTransactionClickHandler(() => { var newFolder = new Folder { Id = "Folder" }; Core.Operations.InsertFolderItem.Perform(newFolder); Core.Operations.ClearRowSelection.Perform(); Core.Operations.SelectRow.Perform(Document.Current.GetRowForObject(newFolder)); }); button.Components.Add(new DocumentationComponent("CreateFolder")); return(button); }
ToolbarButton CreateLockAnimationButton() { var button = new ToolbarButton(IconPool.GetTexture("Timeline.AnimationEnabled")) { Tip = "Lock animation" }; button.AddTransactionClickHandler(() => { var nodes = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList(); var enable = !nodes.All(IsAnimationEnabled); foreach (var node in nodes) { foreach (var animator in node.Animators) { Core.Operations.SetProperty.Perform(animator, nameof(IAnimator.Enabled), enable); } } }); button.Components.Add(new DocumentationComponent("LockAnimation")); return(button); }
ToolbarButton CreateEyeButton() { var button = new ToolbarButton { Highlightable = false }; button.AddChangeWatcher(() => trackRow.Visibility, i => { var texture = "Timeline.Dot"; if (i == AnimationTrackVisibility.Shown) { texture = "Timeline.Eye"; } else if (i == AnimationTrackVisibility.Hidden) { texture = "Timeline.Cross"; } button.Texture = IconPool.GetTexture(texture); }); button.AddTransactionClickHandler( () => Core.Operations.SetProperty.Perform(trackRow, nameof(AnimationTrackRow.Visibility), (AnimationTrackVisibility)(((int)trackRow.Visibility + 1) % 3)) ); return(button); }
ToolbarButton CreateEyeButton() { var button = new ToolbarButton { Highlightable = false }; button.Texture = IconPool.GetTexture("Timeline.Eye"); button.AddTransactionClickHandler(() => { var visibility = NodeVisibility.Hidden; if (InnerNodes(folder).All(i => i.EditorState().Visibility == NodeVisibility.Hidden)) { visibility = NodeVisibility.Shown; } else if (InnerNodes(folder).All(i => i.EditorState().Visibility == NodeVisibility.Shown)) { visibility = NodeVisibility.Default; } foreach (var node in InnerNodes(folder)) { Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Visibility), visibility); } }); return(button); }
ToolbarButton CreateExpandButton() { var button = new ToolbarButton { Highlightable = false, Padding = new Thickness(5) }; button.Texture = IconPool.GetTexture("Timeline.minus"); button.AddChangeWatcher( () => folder.Expanded, i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus") ); button.AddChangeWatcher( () => folder.Items.Count != 0, i => button.Visible = folder.Items.Count != 0 ); button.AddTransactionClickHandler(() => { Core.Operations.SetProperty.Perform(folder, nameof(Folder.Expanded), !folder.Expanded); if (folder.Expanded) { Timeline.Instance.EnsureRowChildsVisible(row); } }); return(button); }