X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaytransport.C;h=f53b529e79abf60a93674e844f687a0bbd2b4648;hb=83b70dd60863377cb281e6be5206304e10373e30;hp=4cb51aa75b7ce068848d30fa4cd5414cb2047aee;hpb=7773615d89c9da219d3ade11c265601bfbc07dc0;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/playtransport.C b/cinelerra-5.1/cinelerra/playtransport.C index 4cb51aa7..f53b529e 100644 --- a/cinelerra-5.1/cinelerra/playtransport.C +++ b/cinelerra-5.1/cinelerra/playtransport.C @@ -30,6 +30,7 @@ #include "preferences.h" #include "shuttle.h" #include "theme.h" +#include "tracks.h" #include "transportque.h" #include "vframe.h" @@ -132,7 +133,7 @@ int PlayTransport::get_w() int PlayTransport::is_stopped() { - return engine->command->command == STOP ? 1 : 0; + return engine->is_playing_back ? 0 : 1; } int PlayTransport::flip_vertical(int vertical, int &x, int &y) @@ -210,7 +211,7 @@ int PlayTransport::do_keypress(int key) int loop_play = shft_key & ctrl_key; float speed = 0; int command = -1; - int curr_command = engine->command->command; + int curr_command = engine->is_playing_back ? engine->command->command : STOP; subwindow->unlock_window(); result = 0; @@ -315,7 +316,7 @@ void PlayTransport::handle_transport(int command, int wait_tracking, if( !edl ) return; using_inout = use_inout; - if( !is_vwindow() ) + if( use_mixers() ) mwindow->handle_mixers(edl, command, wait_tracking, use_inout, toggle_audio, 0, speed); engine->next_command->toggle_audio = toggle_audio; @@ -329,21 +330,14 @@ EDL* PlayTransport::get_edl() return mwindow->edl; } -int PlayTransport::pause_transport() +int PlayTransport::set_transport(int mode) { - if(active_button) active_button->set_mode(PLAY_MODE); - return 0; -} - - -int PlayTransport::reset_transport() -{ - fast_reverse->set_mode(PLAY_MODE); - reverse_play->set_mode(PLAY_MODE); - forward_play->set_mode(PLAY_MODE); - frame_reverse_play->set_mode(PLAY_MODE); - frame_forward_play->set_mode(PLAY_MODE); - fast_play->set_mode(PLAY_MODE); + fast_reverse->set_mode(mode); + reverse_play->set_mode(mode); + forward_play->set_mode(mode); + frame_reverse_play->set_mode(mode); + frame_forward_play->set_mode(mode); + fast_play->set_mode(mode); return 0; } @@ -358,10 +352,29 @@ PTransportButton::~PTransportButton() { } -int PTransportButton::set_mode(int mode) +void PTransportButton::set_mode(int mode) { this->mode = mode; - return 0; +} + +void PTransportButton::loop_mode(int dir) +{ + if( mode != LOOP_MODE ) return; + EDL *edl = transport->get_edl(); + if( !edl ) return; + PlaybackEngine *engine = transport->engine; + if( !engine || engine->is_playing_back ) return; + double position = engine->get_tracking_position(); + switch( dir ) { + case PLAY_FORWARD: + if( position >= edl->tracks->total_playable_length() ) + transport->goto_start(); + break; + case PLAY_REVERSE: + if( position <= 0 ) + transport->goto_end(); + break; + } } int PTransportButton::play_command(const char *lock_msg, int command) @@ -382,6 +395,8 @@ RewindButton::RewindButton(MWindow *mwindow, PlayTransport *transport, int x, in : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("rewind")) { set_tooltip(_("Rewind ( Home )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int RewindButton::handle_event() { @@ -395,9 +410,12 @@ FastReverseButton::FastReverseButton(MWindow *mwindow, PlayTransport *transport, : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("fastrev")) { set_tooltip(_("Fast reverse ( + or Alt-p )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int FastReverseButton::handle_event() { + loop_mode(PLAY_REVERSE); return play_command("FastReverseButton::handle_event", FAST_REWIND); } @@ -407,9 +425,12 @@ ReverseButton::ReverseButton(MWindow *mwindow, PlayTransport *transport, int x, : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("reverse")) { set_tooltip(_("Normal reverse ( 6 or Alt-o )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int ReverseButton::handle_event() { + loop_mode(PLAY_REVERSE); return play_command("ReverseButton::handle_event", NORMAL_REWIND); } @@ -419,6 +440,8 @@ FrameReverseButton::FrameReverseButton(MWindow *mwindow, PlayTransport *transpor : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("framerev")) { set_tooltip(_("Frame reverse ( 4 or Alt-u )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int FrameReverseButton::handle_event() { @@ -434,9 +457,12 @@ PlayButton::PlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y) : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("play")) { set_tooltip(_("Normal forward ( 3 or Alt-l )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int PlayButton::handle_event() { + loop_mode(PLAY_FORWARD); return play_command("PlayButton::handle_event", NORMAL_FWD); } @@ -448,6 +474,8 @@ FramePlayButton::FramePlayButton(MWindow *mwindow, PlayTransport *transport, int : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("framefwd")) { set_tooltip(_("Frame forward ( 1 or Alt-j )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int FramePlayButton::handle_event() { @@ -463,9 +491,12 @@ FastPlayButton::FastPlayButton(MWindow *mwindow, PlayTransport *transport, int x : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("fastfwd")) { set_tooltip(_("Fast forward ( Enter or Alt-; )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int FastPlayButton::handle_event() { + loop_mode(PLAY_FORWARD); return play_command("FastPlayButton::handle_event", FAST_FWD); } @@ -473,6 +504,8 @@ EndButton::EndButton(MWindow *mwindow, PlayTransport *transport, int x, int y) : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("end")) { set_tooltip(_("Jump to end ( End )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int EndButton::handle_event() { @@ -486,6 +519,8 @@ StopButton::StopButton(MWindow *mwindow, PlayTransport *transport, int x, int y) : PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("stop")) { set_tooltip(_("Stop ( 0 or Alt-m )")); +// *** CONTEXT_HELP *** + context_help_set_keyword("Transport Controls"); } int StopButton::handle_event() {