Credit Andrea improved comments in render format
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mwindowedit.C
index 2bf9a97cf2192127e6a7863c447b84e292a7c3ff..5f7aa62f2dc0beff81466819970a7be1cb8ab26c 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * CINELERRA
  * Copyright (C) 1997-2012 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -426,11 +427,11 @@ void MWindow::clear_select()
        gui->draw_overlays(1);
 }
 
-void MWindow::select_edits()
+void MWindow::select_edits(int v)
 {
        double start = edl->local_session->get_selectionstart();
        double end = edl->local_session->get_selectionend();
-       edl->tracks->select_edits(start, end);
+       edl->tracks->select_edits(start, end, v);
        gui->draw_overlays(1);
 }
 
@@ -779,7 +780,7 @@ void MWindow::insert_effects_canvas(Track *dest_track, double start, double leng
 
        ArrayList<SharedLocation> shared_locations;
        PluginSet *pluginset = session->pluginset_highlighted;
-       int gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0;
+       int gang = edl->local_session->gang_tracks != GANG_NONE ? 1 : 0;
        int data_type = dest_track->data_type;
        int first_track = 1;
 
@@ -841,8 +842,8 @@ void MWindow::insert_effect(char *title, SharedLocation *shared_location,
        SharedLocation shared_location_local;
        shared_location_local.copy_from(shared_location);
        int first_track = 1;
-       double start_pos = edl->local_session->get_selectionstart(1);
-       double end_pos = edl->local_session->get_selectionend(1);
+       double start_pos = edl->local_session->get_selectionstart();
+       double end_pos = edl->local_session->get_selectionend();
        for( ; current; current=NEXT ) {
                if( current->data_type != data_type ) continue;
                if( !current->is_armed() ) continue;
@@ -960,6 +961,34 @@ void MWindow::finish_modify_handles()
        cwindow->update(1, 0, 0, 0, 1);
 }
 
+int MWindow::modify_transnhandles()
+{
+       gui->reset_default_message();
+       gui->default_message();
+       Transition *transition = session->drag_transition;
+       if( !transition ) return 1;
+       int64_t length = transition->length;
+       Track *track = transition->edit->track;
+       int64_t start_pos = track->to_units(session->drag_start, 0);
+       int64_t end_pos = track->to_units(session->drag_position, 0);
+       length += end_pos - start_pos;
+       if( length < 0 ) length = 0;
+       if( length == transition->length ) return 0;
+
+       undo_before();
+       transition->length = length;
+       undo_after(_("trans handle"), LOAD_EDITS);
+
+       save_backup();
+       restart_brender();
+       sync_parameters(CHANGE_EDL);
+       update_plugin_guis();
+       gui->update(1, FORCE_REDRAW, 1, 1, 1, 1, 0);
+       cwindow->update(1, 0, 0, 0, 1);
+
+       return 0;
+}
+
 void MWindow::match_output_size(Track *track)
 {
        undo_before();
@@ -1164,10 +1193,10 @@ void MWindow::move_plugins_down(PluginSet *plugin_set)
        sync_parameters(CHANGE_EDL);
 }
 
-void MWindow::move_track_down(Track *track)
+void MWindow::roll_track_down(Track *track)
 {
        undo_before();
-       edl->tracks->move_track_down(track);
+       edl->tracks->roll_track_down(track);
        save_backup();
        undo_after(_("move track down"), LOAD_ALL);
 
@@ -1177,10 +1206,10 @@ void MWindow::move_track_down(Track *track)
        save_backup();
 }
 
-void MWindow::move_tracks_down()
+void MWindow::roll_tracks_down()
 {
        undo_before();
-       edl->tracks->move_tracks_down();
+       edl->tracks->roll_tracks_down();
        save_backup();
        undo_after(_("move tracks down"), LOAD_ALL);
 
@@ -1190,10 +1219,10 @@ void MWindow::move_tracks_down()
        save_backup();
 }
 
-void MWindow::move_track_up(Track *track)
+void MWindow::roll_track_up(Track *track)
 {
        undo_before();
-       edl->tracks->move_track_up(track);
+       edl->tracks->roll_track_up(track);
        save_backup();
        undo_after(_("move track up"), LOAD_ALL);
        restart_brender();
@@ -1202,10 +1231,10 @@ void MWindow::move_track_up(Track *track)
        save_backup();
 }
 
-void MWindow::move_tracks_up()
+void MWindow::roll_tracks_up()
 {
        undo_before();
-       edl->tracks->move_tracks_up();
+       edl->tracks->roll_tracks_up();
        save_backup();
        undo_after(_("move tracks up"), LOAD_ALL);
        restart_brender();
@@ -1214,10 +1243,10 @@ void MWindow::move_tracks_up()
 }
 
 
-void MWindow::swap_track_down(Track *track)
+void MWindow::move_track_down(Track *track)
 {
        undo_before();
-       edl->tracks->swap_track_down(track);
+       edl->tracks->move_track_down(track);
        save_backup();
        undo_after(_("swap track down"), LOAD_ALL);
 
@@ -1227,10 +1256,10 @@ void MWindow::swap_track_down(Track *track)
        save_backup();
 }
 
-void MWindow::swap_tracks_down()
+void MWindow::move_tracks_down()
 {
        undo_before();
-       edl->tracks->swap_tracks_down();
+       edl->tracks->move_tracks_down();
        save_backup();
        undo_after(_("swap tracks down"), LOAD_ALL);
 
@@ -1240,10 +1269,10 @@ void MWindow::swap_tracks_down()
        save_backup();
 }
 
-void MWindow::swap_track_up(Track *track)
+void MWindow::move_track_up(Track *track)
 {
        undo_before();
-       edl->tracks->swap_track_up(track);
+       edl->tracks->move_track_up(track);
        save_backup();
        undo_after(_("swap track up"), LOAD_ALL);
        restart_brender();
@@ -1252,10 +1281,10 @@ void MWindow::swap_track_up(Track *track)
        save_backup();
 }
 
-void MWindow::swap_tracks_up()
+void MWindow::move_tracks_up()
 {
        undo_before();
-       edl->tracks->swap_tracks_up();
+       edl->tracks->move_tracks_up();
        save_backup();
        undo_after(_("swap tracks up"), LOAD_ALL);
        restart_brender();
@@ -2841,6 +2870,10 @@ int MWindow::masters_to_mixers()
                for( ; track && !track->master; track=track->next )
                        mixer_last = track;
                Track *next_track = track;
+               if( !master_track->armed ) {
+                       master_track = next_track;
+                       continue;
+               }
                Mixer *master_mixer = 0;
                for( int i=0, n=edl->mixers.size(); i<n; ++i ) {
                        if( master_track->index_in(edl->mixers[i]) >= 0 ) {