repeat play, in/out <> shortcuts, append to proj wording, cleanup
[goodguy/history.git] / cinelerra-5.1 / cinelerra / mwindowgui.C
index 78cbb2a149f0f939e8f7c653f3f5f8179b4e4bcb..ec33eba7b24fe9e4998bc968fe48be937d5f2784 100644 (file)
@@ -320,12 +320,8 @@ void MWindowGUI::create_objects()
 
        if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__);
        add_subwindow(mainclock = new MainClock(mwindow,
-               mwindow->theme->mclock_x,
-               mwindow->theme->mclock_y,
+               mwindow->theme->mclock_x, mwindow->theme->mclock_y,
                mwindow->theme->mclock_w));
-       mainclock->set_position_offset( (double)
-               (mwindow->edl->session->get_frame_offset() /
-                       mwindow->edl->session->frame_rate));
        if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__);
        mainclock->update(0);
 
@@ -382,12 +378,6 @@ void MWindowGUI::redraw_time_dependancies()
        mainclock->update(mwindow->edl->local_session->get_selectionstart(1));
 }
 
-int MWindowGUI::cursor_enter_event()
-{
-       reset_default_message();
-       return 0;
-}
-
 int MWindowGUI::focus_in_event()
 {
        for(int i = 0; i < TOTAL_PANES; i++)
@@ -926,16 +916,19 @@ int MWindowGUI::visible(int64_t x1, int64_t x2, int64_t view_x1, int64_t view_x2
 
 void MWindowGUI::show_message(const char *message, int color)
 {
-       statusbar->set_message(message, color);
+       statusbar->show_message(message, color);
 }
-void MWindowGUI::set_default_message(const char *message)
+
+void MWindowGUI::update_default_message()
 {
-       statusbar->set_default_message(message);
+       statusbar->update_default_message();
 }
+
 void MWindowGUI::reset_default_message()
 {
        statusbar->reset_default_message();
 }
+
 void MWindowGUI::default_message()
 {
        statusbar->default_message();
@@ -1175,6 +1168,14 @@ int MWindowGUI::keypress_event()
                result = 1;
                break;
 
+       case 'k': case 'K':
+               if( alt_down() ) break;
+               stop_transport("MWindowGUI::keypress_event 1");
+               mwindow->nearest_plugin_keyframe(shift_down(),
+                       !ctrl_down() ? PLAY_FORWARD : PLAY_REVERSE);
+               result = 1;
+               break;
+
        case '1': case '2': case '3': case '4':
        case '5': case '6': case '7': case '8':
                if( !alt_down() || shift_down() ) break;
@@ -1185,9 +1186,7 @@ int MWindowGUI::keypress_event()
        case LEFT:
                if( !ctrl_down() ) {
                        if( alt_down() ) {
-                               unlock_window();
-                               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
-                               lock_window("MWindowGUI::keypress_event 1");
+                               stop_transport("MWindowGUI::keypress_event 1");
                                mwindow->prev_edit_handle(shift_down());
                        }
                        else
@@ -1199,9 +1198,7 @@ int MWindowGUI::keypress_event()
        case RIGHT:
                if( !ctrl_down() ) {
                        if( alt_down() ) {
-                               unlock_window();
-                               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
-                               lock_window("MWindowGUI::keypress_event 2");
+                               stop_transport("MWindowGUI::keypress_event 2");
                                mwindow->next_edit_handle(shift_down());
                        }
                        else
@@ -2243,6 +2240,32 @@ void MWindowGUI::draw_trackmovement()
 }
 
 
+void MWindowGUI::update_mixers(Track *track, int v)
+{
+       for( int i=0; i<TOTAL_PANES;  ++i ) {
+               if( !pane[i] ) continue;
+               PatchBay *patchbay = pane[i]->patchbay;
+               if( !patchbay ) continue;
+               for( int j=0; j<patchbay->patches.total; ++j ) {
+                       PatchGUI *patchgui = patchbay->patches.values[j];
+                       if( !patchgui->mix ) continue;
+                       if( !track || patchgui->track == track ) {
+                               patchgui->mix->update(v>=0 ? v :
+                                       mwindow->mixer_track_active(patchgui->track));
+                       }
+               }
+       }
+}
+
+void MWindowGUI::stop_transport(const char *lock_msg)
+{
+       if( !mbuttons->transport->is_stopped() ) {
+               if( lock_msg ) unlock_window();
+               mbuttons->transport->handle_transport(STOP, 1, 0, 0);
+               if( lock_msg ) lock_window(lock_msg);
+       }
+}
+
 PaneButton::PaneButton(MWindow *mwindow, int x, int y)
  : BC_Button(x, y, mwindow->theme->get_image_set("pane"))
 {
@@ -2289,9 +2312,7 @@ FFMpegToggle::FFMpegToggle(MWindow *mwindow, MButtons *mbuttons, int x, int y)
 {
        this->mwindow = mwindow;
        this->mbuttons = mbuttons;
-       set_tooltip(!get_value() ?
-               _("Currently: Try FFMpeg last\n   Click to: Try FFMpeg first") :
-               _("Currently: Try FFMpeg first\n   Click to: Try FFMpeg last"));
+       set_tooltip(get_value() ? FFMPEG_EARLY_TIP : FFMPEG_LATE_TIP);
 }
 
 FFMpegToggle::~FFMpegToggle()
@@ -2301,12 +2322,10 @@ FFMpegToggle::~FFMpegToggle()
 int FFMpegToggle::handle_event()
 {
        int ffmpeg_early_probe = get_value();
-       set_tooltip(!ffmpeg_early_probe ?
-               _("Currently: Try FFMpeg last\n   Click to: Try FFMpeg first") :
-               _("Currently: Try FFMpeg first\n   Click to: Try FFMpeg last"));
+       set_tooltip(ffmpeg_early_probe ? FFMPEG_EARLY_TIP : FFMPEG_LATE_TIP);
        mwindow->preferences->set_file_probe_armed("FFMPEG_Early", ffmpeg_early_probe);
        mwindow->preferences->set_file_probe_armed("FFMPEG_Late", !ffmpeg_early_probe);
-       
+
        mwindow->show_warning(&mwindow->preferences->warn_indexes,
                _("Changing the base codecs may require rebuilding indexes."));
        return 1;