Пример #1
0
        public override bool OnKeyDown(KeyboardKeyEventArgs e)
        {
            switch (e.Key)
            {
            case Key.Right:
                if (e.Control)
                {
                    var nextBookmark = project.MainBeatmap.Bookmarks.FirstOrDefault(bookmark => bookmark > Math.Round(timeline.Value * 1000) + 50);
                    if (nextBookmark != 0)
                    {
                        timeline.Value = nextBookmark * 0.001f;
                    }
                }
                else
                {
                    timeline.Scroll(e.Shift ? 4 : 1);
                }
                return(true);

            case Key.Left:
                if (e.Control)
                {
                    var prevBookmark = project.MainBeatmap.Bookmarks.LastOrDefault(bookmark => bookmark < Math.Round(timeline.Value * 1000) - 500);
                    if (prevBookmark != 0)
                    {
                        timeline.Value = prevBookmark * 0.001f;
                    }
                }
                else
                {
                    timeline.Scroll(e.Shift ? -4 : -1);
                }
                return(true);
            }

            if (!e.IsRepeat)
            {
                switch (e.Key)
                {
                case Key.Space:
                    playPauseButton.Click();
                    return(true);

                case Key.O:
                    withSavePrompt(() => Manager.ShowOpenProject());
                    return(true);

                case Key.S:
                    if (e.Control)
                    {
                        saveProject();
                        return(true);
                    }
                    break;

                case Key.C:
                    if (e.Control)
                    {
                        if (e.Shift)
                        {
                            ClipboardHelper.SetText(new TimeSpan(0, 0, 0, 0, (int)(timeSource.Current * 1000)).ToString(Program.Settings.TimeCopyFormat));
                        }
                        else
                        {
                            ClipboardHelper.SetText(((int)(timeSource.Current * 1000)).ToString());
                        }
                        return(true);
                    }
                    break;
                }
            }
            return(base.OnKeyDown(e));
        }