Add IsActive method to commands to indicate whether or not a radio/checkbox is currently selected
Originally committed to SVN as r5465.
This commit is contained in:
parent
ec2c36c743
commit
2b9d47b9fe
4 changed files with 92 additions and 0 deletions
|
@ -153,6 +153,10 @@ struct audio_view_spectrum : public Command {
|
|||
STR_HELP("Display audio as a frequency-power spectrograph.")
|
||||
CMD_TYPE(COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Audio/Spectrum")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Audio/Spectrum")->SetBool(true);
|
||||
}
|
||||
|
@ -167,6 +171,10 @@ struct audio_view_waveform : public Command {
|
|||
STR_HELP("Display audio as a linear amplitude graph.")
|
||||
CMD_TYPE(COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return !OPT_GET("Audio/Spectrum")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Audio/Spectrum")->SetBool(false);
|
||||
}
|
||||
|
@ -338,6 +346,10 @@ struct audio_autoscroll : public Command {
|
|||
STR_HELP("Auto scrolls audio display to selected line")
|
||||
CMD_TYPE(COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Audio/Auto/Scroll")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
toggle("Audio/Auto/Scroll");
|
||||
}
|
||||
|
@ -351,6 +363,10 @@ struct audio_autocommit : public Command {
|
|||
STR_HELP("Automatically commit all changes")
|
||||
CMD_TYPE(COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Audio/Auto/Commit")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
toggle("Audio/Auto/Commit");
|
||||
}
|
||||
|
@ -364,6 +380,10 @@ struct audio_autonext : public Command {
|
|||
STR_HELP("Auto goes to next line on commit")
|
||||
CMD_TYPE(COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Audio/Next Line on Commit")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
toggle("Audio/Next Line on Commit");
|
||||
}
|
||||
|
@ -377,6 +397,10 @@ struct audio_vertical_link : public Command {
|
|||
STR_HELP("Link vertical zoom and volume sliders")
|
||||
CMD_TYPE(COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Audio/Link")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
toggle("Audio/Link");
|
||||
}
|
||||
|
|
|
@ -109,8 +109,20 @@ namespace cmd {
|
|||
///
|
||||
/// Note that it is still legal to call commands when this returns
|
||||
/// false. In this situation, commands should do nothing.
|
||||
///
|
||||
/// This function should be overridden iff the command's type flags
|
||||
/// include COMMAND_VALIDATE
|
||||
virtual bool Validate(const agi::Context *c) { return true; }
|
||||
|
||||
/// Is the selectable value represented by this command currently selected?
|
||||
/// @param c Project context
|
||||
///
|
||||
/// As with Validate, this function should be very fast.
|
||||
///
|
||||
/// This function should be overridden iff the command's type flags
|
||||
/// include COMMAND_TOGGLE or COMMAND_RADIO
|
||||
virtual bool IsActive(const agi::Context *c) { return false; }
|
||||
|
||||
/// Destructor
|
||||
virtual ~Command() { };
|
||||
};
|
||||
|
|
|
@ -113,6 +113,10 @@ struct grid_tags_hide : public Command {
|
|||
STR_HELP("Hide override tags in the subtitle grid.")
|
||||
CMD_TYPE(COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 2;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(2);
|
||||
}
|
||||
|
@ -127,6 +131,10 @@ struct grid_tags_show : public Command {
|
|||
STR_HELP("Show full override tags in the subtitle grid.")
|
||||
CMD_TYPE(COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 0;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(0);
|
||||
}
|
||||
|
@ -141,6 +149,10 @@ struct grid_tags_simplify : public Command {
|
|||
STR_HELP("Replace override tags in the subtitle grid with a simplified placeholder.")
|
||||
CMD_TYPE(COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Subtitle/Grid/Hide Overrides")->GetInt() == 1;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Subtitle/Grid/Hide Overrides")->SetInt(1);
|
||||
}
|
||||
|
|
|
@ -85,6 +85,10 @@ struct video_aspect_cinematic : public validator_video_attached {
|
|||
STR_HELP("Forces video to 2.35 aspect ratio.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoController->GetAspectRatioType() == 3;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoController->SetAspectRatio(3);
|
||||
|
@ -100,6 +104,10 @@ struct video_aspect_custom : public validator_video_attached {
|
|||
STR_HELP("Forces video to a custom aspect ratio.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoController->GetAspectRatioType() == 4;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
|
||||
|
@ -156,6 +164,10 @@ struct video_aspect_default : public validator_video_attached {
|
|||
STR_HELP("Leave video on original aspect ratio.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoController->GetAspectRatioType() == 0;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoController->SetAspectRatio(0);
|
||||
|
@ -171,6 +183,10 @@ struct video_aspect_full : public validator_video_attached {
|
|||
STR_HELP("Forces video to 4:3 aspect ratio.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoController->GetAspectRatioType() == 1;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoController->SetAspectRatio(1);
|
||||
|
@ -186,6 +202,10 @@ struct video_aspect_wide : public validator_video_attached {
|
|||
STR_HELP("Forces video to 16:9 aspect ratio.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoController->GetAspectRatioType() == 2;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoController->SetAspectRatio(2);
|
||||
|
@ -213,6 +233,10 @@ struct video_detach : public validator_video_loaded {
|
|||
STR_HELP("Detach video, displaying it in a separate Window.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return !!c->detachedVideo;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
wxGetApp().frame->DetachVideo(!c->detachedVideo);
|
||||
}
|
||||
|
@ -479,6 +503,10 @@ struct video_opt_autoscroll : public Command {
|
|||
STR_HELP("Toggle autoscroll of video")
|
||||
CMD_TYPE(COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Video/Subtitle Sync")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Video/Subtitle Sync")->SetBool(!OPT_GET("Video/Subtitle Sync")->GetBool());
|
||||
}
|
||||
|
@ -516,6 +544,10 @@ struct video_show_overscan : public validator_video_loaded {
|
|||
STR_HELP("Show a mask over the video, indicating areas that might get cropped off by overscan on televisions.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_TOGGLE)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return OPT_GET("Video/Overscan Mask")->GetBool();
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
OPT_SET("Video/Overscan Mask")->SetBool(!OPT_GET("Video/Overscan Mask")->GetBool());
|
||||
c->videoBox->videoDisplay->Render();
|
||||
|
@ -531,6 +563,10 @@ public:
|
|||
STR_HELP("Set zoom to 100%.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoBox->videoDisplay->GetZoom() == 1.;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoBox->videoDisplay->SetZoom(1.);
|
||||
|
@ -559,6 +595,10 @@ public:
|
|||
STR_HELP("Set zoom to 200%.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoBox->videoDisplay->GetZoom() == 2.;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoBox->videoDisplay->SetZoom(2.);
|
||||
|
@ -574,6 +614,10 @@ public:
|
|||
STR_HELP("Set zoom to 50%.")
|
||||
CMD_TYPE(COMMAND_VALIDATE | COMMAND_RADIO)
|
||||
|
||||
bool IsActive(const agi::Context *c) {
|
||||
return c->videoBox->videoDisplay->GetZoom() == .5;
|
||||
}
|
||||
|
||||
void operator()(agi::Context *c) {
|
||||
c->videoController->Stop();
|
||||
c->videoBox->videoDisplay->SetZoom(.5);
|
||||
|
|
Loading…
Reference in a new issue