X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fmwindowedit.C;h=17fa1c7c11fe5f712af66c77331e380ba5e61274;hb=c0b71a7151437c681fe832d1e446924a49ab29aa;hp=a8f798df937e935001e8b9eab52b64526b4c8705;hpb=48375f1b11fa903519ef677c1f118510635c0a3b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/mwindowedit.C b/cinelerra-5.0/cinelerra/mwindowedit.C index a8f798df..17fa1c7c 100644 --- a/cinelerra-5.0/cinelerra/mwindowedit.C +++ b/cinelerra-5.0/cinelerra/mwindowedit.C @@ -36,6 +36,7 @@ #include "edlsession.h" #include "filexml.h" #include "floatauto.h" +#include "floatautos.h" #include "gwindow.h" #include "gwindowgui.h" #include "keyframe.h" @@ -221,8 +222,8 @@ void MWindow::asset_to_all() current; current = NEXT) { - if(current->data_type == TRACK_VIDEO && - current->record) + if(current->data_type == TRACK_VIDEO /* && + current->record */ ) { current->track_w = w; current->track_h = h; @@ -2060,6 +2061,25 @@ void MWindow::shuffle_edits() gui->unlock_window(); } +void MWindow::reverse_edits() +{ + gui->lock_window("MWindow::reverse_edits 1"); + + undo->update_undo_before(); + double start = edl->local_session->get_selectionstart(); + double end = edl->local_session->get_selectionend(); + + edl->tracks->reverse_edits(start, end); + + save_backup(); + undo->update_undo_after(_("reverse edits"), LOAD_EDITS | LOAD_TIMEBAR); + + sync_parameters(CHANGE_EDL); + restart_brender(); + gui->update(0, 1, 1, 0, 0, 0, 0); + gui->unlock_window(); +} + void MWindow::align_edits() { gui->lock_window("MWindow::align_edits 1"); @@ -2152,17 +2172,26 @@ void MWindow::redo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->playback_engine->que->send_command(STOP, - CHANGE_NONE, - 0, - 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); + if(vwindows.get(i)->is_running()) + { + vwindows.get(i)->playback_engine->que->send_command(STOP, + CHANGE_NONE, + 0, + 0); + vwindows.get(i)->playback_engine->interrupt_playback(0); + } } cwindow->gui->lock_window("MWindow::redo_entry"); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->gui->lock_window("MWindow::redo_entry 2"); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->lock_window("MWindow::redo_entry 2"); + } + } } gui->lock_window(); @@ -2183,8 +2212,13 @@ void MWindow::redo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - if (calling_window_gui != vwindows.get(i)->gui) - vwindows.get(i)->gui->unlock_window(); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->unlock_window(); + } + } } cwindow->playback_engine->que->send_command(CURRENT_FRAME, @@ -2443,20 +2477,29 @@ void MWindow::undo_entry(BC_WindowBase *calling_window_gui) 0); cwindow->playback_engine->interrupt_playback(0); - +printf("MWindow::undo_entry %d %d\n", __LINE__, vwindows.size()); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->playback_engine->que->send_command(STOP, - CHANGE_NONE, - 0, - 0); - vwindows.get(i)->playback_engine->interrupt_playback(0); + if(vwindows.get(i)->is_running()) + { + vwindows.get(i)->playback_engine->que->send_command(STOP, + CHANGE_NONE, + 0, + 0); + vwindows.get(i)->playback_engine->interrupt_playback(0); + } } cwindow->gui->lock_window("MWindow::undo_entry 1"); for(int i = 0; i < vwindows.size(); i++) { - vwindows.get(i)->gui->lock_window("MWindow::undo_entry 4"); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->lock_window("MWindow::undo_entry 4"); + } + } } gui->lock_window("MWindow::undo_entry 2"); @@ -2479,8 +2522,13 @@ void MWindow::undo_entry(BC_WindowBase *calling_window_gui) for(int i = 0; i < vwindows.size(); i++) { - if (calling_window_gui != vwindows.get(i)->gui) - vwindows.get(i)->gui->unlock_window(); + if(vwindows.get(i)->is_running()) + { + if (calling_window_gui != vwindows.get(i)->gui) + { + vwindows.get(i)->gui->unlock_window(); + } + } } if (calling_window_gui != gui) @@ -2635,3 +2683,4 @@ void MWindow::cut_commercials() send_command(CURRENT_FRAME, CHANGE_EDL, edl, 1); } +