From c5e30709a6786bc6b0b2de9f3a9ac477be926869 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Thu, 24 Oct 2013 14:32:49 -0700 Subject: [PATCH] Add a command to cycle between subtitle providers --- aegisub/build/Aegisub/Aegisub.targets | 1 + aegisub/src/command/video.cpp | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/aegisub/build/Aegisub/Aegisub.targets b/aegisub/build/Aegisub/Aegisub.targets index 7f18378d2..277b9505b 100644 --- a/aegisub/build/Aegisub/Aegisub.targets +++ b/aegisub/build/Aegisub/Aegisub.targets @@ -143,6 +143,7 @@ $(AegisubSourceBase)libaegisub\include; $(AegisubSourceBase)build; $(AegisubSourceBase)include; + $(AegisubSourceBase)src; %(AdditionalIncludeDirectories) diff --git a/aegisub/src/command/video.cpp b/aegisub/src/command/video.cpp index 2a944f319..67bef556f 100644 --- a/aegisub/src/command/video.cpp +++ b/aegisub/src/command/video.cpp @@ -48,6 +48,7 @@ #include "../dialog_video_details.h" #include "../frame_main.h" #include "../include/aegisub/context.h" +#include "../include/aegisub/subtitles_provider.h" #include "../main.h" #include "../options.h" #include "../selection_controller.h" @@ -234,6 +235,25 @@ struct video_copy_coordinates : public validator_video_loaded { } }; +struct video_cycle_subtitles_provider : public cmd::Command { + CMD_NAME("video/subtitles_provider/cycle") + STR_MENU("Cycle active subtitles provider") + STR_DISP("Cycle active subtitles provider") + STR_HELP("Cycle active subtitles provider") + + void operator()(agi::Context *c) { + auto providers = SubtitlesProviderFactory::GetClasses(); + if (providers.empty()) return; + + auto it = find(begin(providers), end(providers), OPT_GET("Subtitle/Provider")->GetString()); + if (it != end(providers)) ++it; + if (it == end(providers)) it = begin(providers); + + OPT_SET("Subtitle/Provider")->SetString(*it); + StatusTimeout(wxString::Format(_("Subtitles provider set to %s"), to_wx(*it)), 5000); + } +}; + /// Detach video, displaying it in a separate Window. struct video_detach : public validator_video_loaded { CMD_NAME("video/detach") @@ -760,6 +780,7 @@ namespace cmd { reg(agi::util::make_unique()); reg(agi::util::make_unique()); reg(agi::util::make_unique()); + reg(agi::util::make_unique()); reg(agi::util::make_unique()); reg(agi::util::make_unique()); reg(agi::util::make_unique());