From 5c75c9f708ad7f9a08443286fa25f95eb4440c6b Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Fri, 30 Sep 2011 20:41:56 +0000 Subject: [PATCH] Implement the audio scroll commands Originally committed to SVN as r5693. --- aegisub/src/audio_box.cpp | 10 ++++++++++ aegisub/src/audio_box.h | 9 +++++++++ aegisub/src/command/audio.cpp | 33 ++++++++++++++++++++++++++++++--- 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/aegisub/src/audio_box.cpp b/aegisub/src/audio_box.cpp index 6451b0845..90f37fe69 100644 --- a/aegisub/src/audio_box.cpp +++ b/aegisub/src/audio_box.cpp @@ -62,6 +62,7 @@ #include "audio_controller.h" #include "audio_display.h" #include "audio_karaoke.h" +#include "audio_timing.h" #include "command/command.h" #include "libresrc/libresrc.h" #include "main.h" @@ -203,3 +204,12 @@ void AudioBox::ShowKaraokeBar(bool show) { SetMinSize(wxSize(-1, new_height)); GetParent()->Layout(); } + +void AudioBox::ScrollAudioBy(int pixel_amount) { + audioDisplay->ScrollBy(pixel_amount); +} + +void AudioBox::ScrollToActiveLine() { + if (controller->GetTimingController()) + audioDisplay->ScrollSampleRangeInView(controller->GetTimingController()->GetIdealVisibleSampleRange()); +} diff --git a/aegisub/src/audio_box.h b/aegisub/src/audio_box.h index 57bddc7eb..94e956d05 100644 --- a/aegisub/src/audio_box.h +++ b/aegisub/src/audio_box.h @@ -89,5 +89,14 @@ public: void ShowKaraokeBar(bool show); + /// @brief Scroll the audio display + /// @param pixel_amount Number of pixels to scroll the view + /// + /// A positive amount moves the display to the right, making later parts of the audio visible. + void ScrollAudioBy(int pixel_amount); + + /// Make the currently active line visible in the audio display + void ScrollToActiveLine(); + DECLARE_EVENT_TABLE() }; diff --git a/aegisub/src/command/audio.cpp b/aegisub/src/command/audio.cpp index a45b023e7..ee288aebc 100644 --- a/aegisub/src/command/audio.cpp +++ b/aegisub/src/command/audio.cpp @@ -45,6 +45,7 @@ #include "command.h" #include "../ass_dialogue.h" +#include "../audio_box.h" #include "../audio_controller.h" #include "../audio_karaoke.h" #include "../audio_timing.h" @@ -333,15 +334,39 @@ struct audio_commit : public Command { }; /// Scroll the audio display to the current selection -struct audio_go_to : public Command { +struct audio_go_to : public validate_audio_open { CMD_NAME("audio/go_to") STR_MENU("Go to selection") STR_DISP("Go to selection") STR_HELP("Go to selection") void operator()(agi::Context *c) { - //if (c->audioController->GetTimingController()) - //audioDisplay->ScrollSampleRangeInView(c->audioController->GetTimingController()->GetIdealVisibleSampleRange()); + c->audioBox->ScrollToActiveLine(); + } +}; + +/// Scroll the audio display left +struct audio_scroll_left : public validate_audio_open { + CMD_NAME("audio/scroll/left") + STR_MENU("Scroll left") + STR_DISP("Scroll left") + STR_HELP("Scroll the audio display left") + + void operator()(agi::Context *c) { + c->audioBox->ScrollAudioBy(-128); + } +}; + + +/// Scroll the audio display right +struct audio_scroll_right : public validate_audio_open { + CMD_NAME("audio/scroll/right") + STR_MENU("Scroll right") + STR_DISP("Scroll right") + STR_HELP("Scroll the audio display right") + + void operator()(agi::Context *c) { + c->audioBox->ScrollAudioBy(128); } }; @@ -475,6 +500,8 @@ namespace cmd { reg(new audio_play_selection); reg(new audio_play_to_end); reg(new audio_save_clip); + reg(new audio_scroll_left); + reg(new audio_scroll_right); reg(new audio_stop); reg(new audio_toggle_spectrum); reg(new audio_vertical_link);