return end_button->get_x() + end_button->get_w() - rewind_button->get_x();
}
+int PlayTransport::is_stopped()
+{
+ return engine->command->command == STOP ? 1 : 0;
+}
+
int PlayTransport::flip_vertical(int vertical, int &x, int &y)
{
if(vertical)
goto_end();
return result;
}
-
- int toggle_audio = subwindow->shift_down() ? 1 : 0;
- int use_inout = subwindow->ctrl_down() ? 1 : 0;
+// as in play_command
+ int ctrl_key = subwindow->ctrl_down() ? 1 : 0;
+ int shft_key = subwindow->shift_down() ? 1 : 0;
int alt_key = subwindow->alt_down() ? 1 : 0;
+ int use_inout = ctrl_key;
+ int toggle_audio = shft_key & ~ctrl_key;
+ int loop_play = shft_key & ctrl_key;
int command = -1, prev_command = engine->command->command;
using_inout = use_inout;
subwindow->unlock_window();
switch( prev_command ) {
case COMMAND_NONE:
case CURRENT_FRAME:
+ case LAST_FRAME:
case PAUSE:
case STOP:
command = NORMAL_FWD;
break;
}
if( command >= 0 ) {
- handle_transport(command, 0, use_inout, 1, toggle_audio);
+ handle_transport(command, 0, use_inout, 1, toggle_audio, loop_play);
result = 1;
}
-void PlayTransport::handle_transport(int command,
- int wait_tracking, int use_inout, int update_refresh, int toggle_audio)
+void PlayTransport::handle_transport(int command, int wait_tracking, int use_inout,
+ int update_refresh, int toggle_audio, int loop_play)
{
EDL *edl = get_edl();
if( !edl ) return;
if( !is_vwindow() )
- mwindow->queue_mixers(edl, command, wait_tracking, use_inout, update_refresh, toggle_audio);
- engine->issue_command(edl, command, wait_tracking, use_inout, update_refresh, toggle_audio);
+ mwindow->queue_mixers(edl, command, wait_tracking, use_inout, update_refresh, toggle_audio, 0);
+ engine->issue_command(edl, command, wait_tracking, use_inout, update_refresh, toggle_audio, loop_play);
}
EDL* PlayTransport::get_edl()
return 0;
}
+int PTransportButton::play_command(const char *lock_msg, int command)
+{
+ int ctrl_key = transport->subwindow->ctrl_down() ? 1 : 0;
+ int shft_key = transport->subwindow->shift_down() ? 1 : 0;
+ int use_inout = ctrl_key;
+ int toggle_audio = shft_key & ~ctrl_key;
+ int loop_play = shft_key & ctrl_key;
+ unlock_window();
+ transport->handle_transport(command, 0, use_inout, 0, toggle_audio, loop_play);
+ lock_window(lock_msg);
+ return 1;
+}
+
RewindButton::RewindButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("rewind"))
FastReverseButton::FastReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("fastrev"))
{
- set_tooltip(_("Fast reverse ( + )"));
+ set_tooltip(_("Fast reverse ( + or Alt-p )"));
}
int FastReverseButton::handle_event()
{
- unlock_window();
- transport->handle_transport(FAST_REWIND, 0, ctrl_down());
- lock_window("FastReverseButton::handle_event");
- return 1;
+ return play_command("FastReverseButton::handle_event", FAST_REWIND);
}
// Reverse playback normal speed
ReverseButton::ReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("reverse"))
{
- set_tooltip(_("Normal reverse ( 6 )"));
+ set_tooltip(_("Normal reverse ( 6 or Alt-o )"));
}
int ReverseButton::handle_event()
{
- unlock_window();
- transport->handle_transport(NORMAL_REWIND, 0, ctrl_down());
- lock_window("ReverseButton::handle_event");
- return 1;
+ return play_command("ReverseButton::handle_event", NORMAL_REWIND);
}
// Reverse playback one frame
FrameReverseButton::FrameReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("framerev"))
{
- set_tooltip(_("Frame reverse ( 4 )"));
+ set_tooltip(_("Frame reverse ( 4 or Alt-u )"));
}
int FrameReverseButton::handle_event()
{
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 )"));
+ set_tooltip(_("Normal forward ( 3 or Alt-l )"));
}
int PlayButton::handle_event()
{
- unlock_window();
- transport->handle_transport(NORMAL_FWD, 0, ctrl_down());
- lock_window("PlayButton::handle_event");
- return 1;
+ return play_command("PlayButton::handle_event", NORMAL_FWD);
}
FramePlayButton::FramePlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("framefwd"))
{
- set_tooltip(_("Frame forward ( 1 )"));
+ set_tooltip(_("Frame forward ( 1 or Alt-j )"));
}
int FramePlayButton::handle_event()
{
FastPlayButton::FastPlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
: PTransportButton(mwindow, transport, x, y, mwindow->theme->get_image_set("fastfwd"))
{
- set_tooltip(_("Fast forward ( Enter )"));
+ set_tooltip(_("Fast forward ( Enter or Alt-; )"));
}
int FastPlayButton::handle_event()
{
- unlock_window();
- transport->handle_transport(FAST_FWD, 0, ctrl_down());
- lock_window("FastPlayButton::handle_event");
- return 1;
+ return play_command("FastPlayButton::handle_event", FAST_FWD);
}
EndButton::EndButton(MWindow *mwindow, PlayTransport *transport, int x, int y)
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 )"));
+ set_tooltip(_("Stop ( 0 or Alt-m )"));
}
int StopButton::handle_event()
{