Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }