plugin/transtions gang operations, commercial compile fix, segv in select_asset,...
authorGood Guy <good1.2guy@gmail.com>
Sat, 27 Jun 2020 00:31:39 +0000 (18:31 -0600)
committerGood Guy <good1.2guy@gmail.com>
Sat, 27 Jun 2020 00:31:39 +0000 (18:31 -0600)
13 files changed:
cinelerra-5.1/cinelerra/commercials.C
cinelerra-5.1/cinelerra/edit.C
cinelerra-5.1/cinelerra/mwindow.C
cinelerra-5.1/cinelerra/mwindowedit.C
cinelerra-5.1/cinelerra/plugindialog.C
cinelerra-5.1/cinelerra/track.C
cinelerra-5.1/cinelerra/track.h
cinelerra-5.1/cinelerra/tracks.C
cinelerra-5.1/cinelerra/tracks.h
cinelerra-5.1/cinelerra/tracksedit.C
cinelerra-5.1/po/es.po
cinelerra-5.1/po/fr.po
cinelerra-5.1/po/ru.po

index a3461b6db942768b0c8218e330d5ab290cff1f14..b93bb4e3911e61b4225b9a85752b8dcdb2ecb474 100644 (file)
@@ -551,7 +551,7 @@ scan_audio(int vstream, double start, double end)
        Tracks *tracks = mwindow->edl->tracks;
        for(Track *atrk=tracks->first; !cancelled && atrk; atrk=atrk->next) {
                if( atrk->data_type != TRACK_AUDIO ) continue;
        Tracks *tracks = mwindow->edl->tracks;
        for(Track *atrk=tracks->first; !cancelled && atrk; atrk=atrk->next) {
                if( atrk->data_type != TRACK_AUDIO ) continue;
-               if( !atrk->record ) continue;
+               if( !atrk->is_armed() ) continue;
                Edits *edits = atrk->edits;  Edit *next = 0;
                for( Edit *edit=edits->first; !cancelled && edit; edit=next ) {
                        next = edit->next;
                Edits *edits = atrk->edits;  Edit *next = 0;
                for( Edit *edit=edits->first; !cancelled && edit; edit=next ) {
                        next = edit->next;
@@ -592,7 +592,7 @@ scan_video()
        Tracks *tracks = mwindow->edl->tracks;
        for( Track *vtrk=tracks->first; !cancelled && vtrk; vtrk=vtrk->next) {
                if( vtrk->data_type != TRACK_VIDEO ) continue;
        Tracks *tracks = mwindow->edl->tracks;
        for( Track *vtrk=tracks->first; !cancelled && vtrk; vtrk=vtrk->next) {
                if( vtrk->data_type != TRACK_VIDEO ) continue;
-               if( !vtrk->record ) continue;
+               if( !vtrk->is_armed() ) continue;
                Edits *edits = vtrk->edits;  Edit *next = 0;
                for( Edit *edit=edits->first; !cancelled && edit; edit=next ) {
                        next = edit->next;
                Edits *edits = vtrk->edits;  Edit *next = 0;
                for( Edit *edit=edits->first; !cancelled && edit; edit=next ) {
                        next = edit->next;
index f32d1c15cfef084a7c195eed0f3afbb63f5cda78..f538a503e43de737614bcf25eeb6dc64075e18a4 100644 (file)
@@ -234,8 +234,23 @@ void Edit::insert_transition(char *title)
 
 void Edit::detach_transition()
 {
 
 void Edit::detach_transition()
 {
-       if(transition) delete transition;
+       delete transition;
        transition = 0;
        transition = 0;
+       if( edl->session->gang_tracks == GANG_NONE ) return;
+       double pos = track->from_units(startproject);
+       Track *current = edl->tracks->first;
+       for( ; current; current=current->next ) {
+               if( current == track ) continue;
+               if( current->data_type != track->data_type ) continue;
+               if( !current->armed_gang(track) ) continue;
+               int64_t track_pos = current->to_units(pos, 1);
+               Edit *edit = current->edits->editof(track_pos, PLAY_FORWARD, 0);
+               if( !edit ) continue;
+               double edit_pos = track->from_units(edit->startproject);
+               if( !edl->equivalent(pos, edit_pos) ) continue;
+               delete edit->transition;
+               edit->transition = 0;
+       }
 }
 
 int Edit::silence()
 }
 
 int Edit::silence()
index c4e7a7cbf1fe22118a12034cffddcfe47ed2c114..f072467e39a6c3475a4aacb2ca72be2026c80d53 100644 (file)
@@ -5015,7 +5015,7 @@ int MWindow::select_asset(Asset *asset, int vstream, int astream, int delete_tra
                                track->track_h = edl->session->output_h;
                        }
                        else if( delete_tracks )
                                track->track_h = edl->session->output_h;
                        }
                        else if( delete_tracks )
-                               edl->tracks->delete_track(track);
+                               edl->tracks->delete_track(track, 0);
                }
                edl->retrack();
                edl->resample(old_framerate, session->frame_rate, TRACK_VIDEO);
                }
                edl->retrack();
                edl->resample(old_framerate, session->frame_rate, TRACK_VIDEO);
@@ -5051,7 +5051,7 @@ int MWindow::select_asset(Asset *asset, int vstream, int astream, int delete_tra
                                                delete edit;
                                }
                                if( !track->edits->first )
                                                delete edit;
                                }
                                if( !track->edits->first )
-                                       edl->tracks->delete_track(track);
+                                       edl->tracks->delete_track(track, 0);
                        }
                }
                edl->rechannel();
                        }
                }
                edl->rechannel();
index d0a1259484fe7aa4cf088d8690452f962fed1a65..6336841b434dfbd73a51c5bf0a6f516c9299a57d 100644 (file)
@@ -774,17 +774,17 @@ void MWindow::insert_effects_canvas(Track *dest_track, double start, double leng
        for( Track *track=dest_track; track; track=track->next ) {
                if( gang && track->master && !first_track ) break;
                if( track->data_type != data_type ) continue;
        for( Track *track=dest_track; track; track=track->next ) {
                if( gang && track->master && !first_track ) break;
                if( track->data_type != data_type ) continue;
-               if( !track->armed ) continue;
+               if( !track->is_armed() ) continue;
                int module = edl->tracks->number_of(track);
                for( int i=0; i<session->drag_pluginservers->total; ++i ) {
                        PluginServer *plugin = session->drag_pluginservers->values[i];
                int module = edl->tracks->number_of(track);
                for( int i=0; i<session->drag_pluginservers->total; ++i ) {
                        PluginServer *plugin = session->drag_pluginservers->values[i];
-                       int shared = gang && plugin->multichannel ? 1 : 0;
+                       int shared = gang; // && plugin->multichannel ? 1 : 0;
                        int plugin_type = !first_track && shared ?
                                PLUGIN_SHAREDPLUGIN : PLUGIN_STANDALONE;
                        SharedLocation *shared_location = !first_track ?
                                &shared_locations[i] : &shared_locations.append();
                        insert_effect(plugin->title, shared_location, track,
                        int plugin_type = !first_track && shared ?
                                PLUGIN_SHAREDPLUGIN : PLUGIN_STANDALONE;
                        SharedLocation *shared_location = !first_track ?
                                &shared_locations[i] : &shared_locations.append();
                        insert_effect(plugin->title, shared_location, track,
-                               pluginset, start, length, plugin_type);
+                                       pluginset, start, length, plugin_type);
                        if( first_track && shared ) {
                                shared_location->module = module;
                                shared_location->plugin = pluginset ?
                        if( first_track && shared ) {
                                shared_location->module = module;
                                shared_location->plugin = pluginset ?
@@ -829,38 +829,34 @@ void MWindow::insert_effect(char *title, SharedLocation *shared_location,
        SharedLocation shared_location_local;
        shared_location_local.copy_from(shared_location);
        int first_track = 1;
        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);
        for( ; current; current=NEXT ) {
        for( ; current; current=NEXT ) {
-               if( current->data_type == data_type && current->is_armed() ) {
-                       double start =  edl->local_session->get_selectionstart(1);
-                       double end = edl->local_session->get_selectionend(1);
-                       double length = end - start;
-                       if( start >= end ) {
-                               start = 0;
-                               length = current->get_length();
-                       }
-                       insert_effect(title, &shared_location_local,
+               if( current->data_type != data_type ) continue;
+               if( !current->is_armed() ) continue;
+               double start = start_pos, end = end_pos;
+               if( plugin_type == PLUGIN_STANDALONE && start >= end ) {
+                       start = 0;
+                       end = current->get_length();
+               }
+               double length = end - start;
+               insert_effect(title, &shared_location_local,
                                current, 0, start, length, plugin_type);
                                current, 0, start, length, plugin_type);
-
-                       if( first_track ) {
-                               if( plugin_type == PLUGIN_STANDALONE && single_standalone ) {
-                                       plugin_type = PLUGIN_SHAREDPLUGIN;
-                                       shared_location_local.module = edl->tracks->number_of(current);
-                                       shared_location_local.plugin = current->plugin_set.total - 1;
-                               }
-                               first_track = 0;
+               if( first_track ) {
+                       if( plugin_type == PLUGIN_STANDALONE && single_standalone ) {
+                               plugin_type = PLUGIN_SHAREDPLUGIN;
+                               shared_location_local.module = edl->tracks->number_of(current);
+                               shared_location_local.plugin = current->plugin_set.total - 1;
+                               start_pos = start;  end_pos = end;
                        }
                        }
+                       first_track = 0;
                }
        }
 }
 
                }
        }
 }
 
-
 void MWindow::insert_effect(char *title,
 void MWindow::insert_effect(char *title,
-       SharedLocation *shared_location,
-       Track *track,
-       PluginSet *plugin_set,
-       double start,
-       double length,
-       int plugin_type)
+               SharedLocation *shared_location, Track *track, PluginSet *plugin_set,
+               double start, double length, int plugin_type)
 {
        KeyFrame *default_keyframe = 0;
        PluginServer *server = 0;
 {
        KeyFrame *default_keyframe = 0;
        PluginServer *server = 0;
@@ -873,9 +869,8 @@ void MWindow::insert_effect(char *title,
                server->save_data(default_keyframe);
        }
 // Insert plugin object
                server->save_data(default_keyframe);
        }
 // Insert plugin object
-       track->insert_effect(title, shared_location,
-               default_keyframe, plugin_set,
-               start, length, plugin_type);
+       track->insert_effect(title, shared_location, default_keyframe,
+                       plugin_set, start, length, plugin_type);
        track->optimize();
 
        if( plugin_type == PLUGIN_STANDALONE ) {
        track->optimize();
 
        if( plugin_type == PLUGIN_STANDALONE ) {
index fba1ae797e8652e58debdd7ae9a9fe7c45540a54..8063982bfe8ffa652b11cf624af470f050b76e17 100644 (file)
@@ -436,8 +436,9 @@ void PluginDialog::apply()
 void PluginDialogThread::apply()
 {
        Plugin *plugin = 0;
 void PluginDialogThread::apply()
 {
        Plugin *plugin = 0;
-       if( mwindow->edl )
-               mwindow->edl->session->single_standalone = single_standalone;
+       EDL *edl = mwindow->edl;
+       if( edl )
+               edl->session->single_standalone = single_standalone;
        if(plugin_type) {
                mwindow->gui->lock_window("PluginDialogThread::run 3");
                mwindow->undo->update_undo_before();
        if(plugin_type) {
                mwindow->gui->lock_window("PluginDialogThread::run 3");
                mwindow->undo->update_undo_before();
@@ -445,13 +446,20 @@ void PluginDialogThread::apply()
                        mwindow->insert_effect(plugin_title, &shared_location,
                                data_type, plugin_type, single_standalone);
                }
                        mwindow->insert_effect(plugin_title, &shared_location,
                                data_type, plugin_type, single_standalone);
                }
-               else if( (plugin=mwindow->edl->tracks->plugin_exists(plugin_id)) != 0 ) {
+               else if( (plugin=edl->tracks->plugin_exists(plugin_id)) != 0 ) {
                        plugin->change_plugin(plugin_title,
                                        &shared_location, plugin_type);
                }
                        plugin->change_plugin(plugin_title,
                                        &shared_location, plugin_type);
                }
-               else if( mwindow->edl->tracks->track_exists(track) ) {
+               else if( edl->tracks->track_exists(track) ) {
+                       double start = edl->local_session->get_selectionstart(1);
+                       double end = edl->local_session->get_selectionend(1);
+                       if( start >= end ) {
+                               start = 0;
+                               end = track->get_length();
+                       }
+                       double length = end - start;
                        mwindow->insert_effect(plugin_title, &shared_location,
                        mwindow->insert_effect(plugin_title, &shared_location,
-                                       track, 0, 0, 0, plugin_type);
+                                       track, 0, start, length, plugin_type);
                }
 
                mwindow->save_backup();
                }
 
                mwindow->save_backup();
index a565c1fbfe91845ea95f2adef0d509699351616e..264bd95f829da34765232284043c585bd2e55f9b 100644 (file)
@@ -480,90 +480,17 @@ void Track::insert_plugin_set(Track *track,
                shift_effects(position, min_length, edit_autos, 0);
 }
 
                shift_effects(position, min_length, edit_autos, 0);
 }
 
-
-Plugin* Track::insert_effect(const char *title,
-               SharedLocation *shared_location,
-               KeyFrame *default_keyframe,
-               PluginSet *plugin_set,
-               double start,
-               double length,
-               int plugin_type)
+Plugin* Track::insert_effect(const char *title, SharedLocation *shared_location,
+               KeyFrame *default_keyframe, PluginSet *plugin_set,
+               double start, double length, int plugin_type)
 {
 {
-       if(!plugin_set)
-       {
+       if( !plugin_set ) {
                plugin_set = new PluginSet(edl, this);
                this->plugin_set.append(plugin_set);
        }
                plugin_set = new PluginSet(edl, this);
                this->plugin_set.append(plugin_set);
        }
-
-       Plugin *plugin = 0;
-
-// Position is identical to source plugin
-       if(plugin_type == PLUGIN_SHAREDPLUGIN)
-       {
-               Track *source_track = tracks->get_item_number(shared_location->module);
-               if(source_track)
-               {
-                       Plugin *source_plugin = source_track->get_current_plugin(
-                               edl->local_session->get_selectionstart(1),
-                               shared_location->plugin,
-                               PLAY_FORWARD,
-                               1,
-                               0);
-
-// From an attach operation
-                       if(source_plugin)
-                       {
-                               plugin = plugin_set->insert_plugin(title,
-                                       source_plugin->startproject,
-                                       source_plugin->length,
-                                       plugin_type,
-                                       shared_location,
-                                       default_keyframe,
-                                       1);
-                       }
-                       else
-// From a drag operation
-                       {
-                               plugin = plugin_set->insert_plugin(title,
-                                       to_units(start, 0),
-                                       to_units(length, 1),
-                                       plugin_type,
-                                       shared_location,
-                                       default_keyframe,
-                                       1);
-                       }
-               }
-       }
-       else
-       {
-// This should be done in the caller
-               if(EQUIV(length, 0))
-               {
-                       if(edl->local_session->get_selectionend() >
-                               edl->local_session->get_selectionstart())
-                       {
-                               start = edl->local_session->get_selectionstart();
-                               length = edl->local_session->get_selectionend() - start;
-                       }
-                       else
-                       {
-                               start = 0;
-                               length = get_length();
-                       }
-               }
-//printf("Track::insert_effect %f %f %d %d\n", start, length, to_units(start, 0),
-//                     to_units(length, 0));
-
-               plugin = plugin_set->insert_plugin(title,
-                       to_units(start, 0),
-                       to_units(length, 1),
-                       plugin_type,
-                       shared_location,
-                       default_keyframe,
-                       1);
-       }
-//printf("Track::insert_effect 2 %f %f\n", start, length);
-
+       Plugin *plugin = plugin_set->insert_plugin(title,
+                       to_units(start, 0), to_units(length, 1), plugin_type,
+                       shared_location, default_keyframe, 1);
        expand_view = 1;
        return plugin;
 }
        expand_view = 1;
        return plugin;
 }
@@ -641,8 +568,7 @@ void Track::remove_pluginset(PluginSet *plugin_set)
                if(plugin_set == this->plugin_set.values[i]) break;
 
        this->plugin_set.remove_object(plugin_set);
                if(plugin_set == this->plugin_set.values[i]) break;
 
        this->plugin_set.remove_object(plugin_set);
-       for(i++ ; i < this->plugin_set.total; i++)
-       {
+       for( ++i ; i<=this->plugin_set.total; ++i ) {
                SharedLocation old_location, new_location;
                new_location.module = old_location.module = tracks->number_of(this);
                old_location.plugin = i;
                SharedLocation old_location, new_location;
                new_location.module = old_location.module = tracks->number_of(this);
                old_location.plugin = i;
@@ -668,26 +594,54 @@ void Track::shift_effects(int64_t position, int64_t length, int edit_autos, Edit
 void Track::detach_effect(Plugin *plugin)
 {
 //printf("Track::detach_effect 1\n");
 void Track::detach_effect(Plugin *plugin)
 {
 //printf("Track::detach_effect 1\n");
-       for(int i = 0; i < plugin_set.total; i++)
-       {
-               PluginSet *plugin_set = this->plugin_set.values[i];
-               for(Plugin *dest = (Plugin*)plugin_set->first;
-                       dest;
-                       dest = (Plugin*)dest->next)
-               {
-                       if(dest == plugin)
-                       {
-                               int64_t start = plugin->startproject;
-                               int64_t end = plugin->startproject + plugin->length;
-
-                               plugin_set->clear(start, end, 1);
-                               optimize();
+       for( int i=0; i<plugin_set.size(); ++i ) {
+               PluginSet *pluginset = plugin_set[i];
+               Plugin *dest = (Plugin*)pluginset->first;
+               while( dest && dest != plugin ) dest = (Plugin*)dest->next;
+               if( !dest ) continue;
+               tracks->detach_ganged_effects(plugin);
+               int64_t start = plugin->startproject;
+               int64_t end = start + plugin->length;
+               pluginset->clear(start, end, 1);
+               optimize();
 //printf("Track::detach_effect 2 %d\n", plugin_set->length());
 // Delete 0 length pluginsets
 //printf("Track::detach_effect 2 %d\n", plugin_set->length());
 // Delete 0 length pluginsets
-                               return;
-                       }
+               return;
+       }
+}
+
+void Track::detach_shared_effects(int module)
+{
+       for( int i=0; i<plugin_set.size(); ++i ) {
+               PluginSet *pluginset = this->plugin_set[i];
+               Plugin *dest = (Plugin*)pluginset->first;
+               for( ; dest; dest=(Plugin*)dest->next ) {
+                       if( (dest->plugin_type != PLUGIN_SHAREDPLUGIN &&
+                            dest->plugin_type != PLUGIN_SHAREDMODULE) ) continue;
+                       if( dest->shared_location.module != module ) continue;
+                       int64_t start = dest->startproject;
+                       int64_t end = start + dest->length;
+                       pluginset->clear(start, end, 1);
+               }
+       }
+       optimize();
+}
+
+void Track::detach_ganged_effects(Plugin *plugin)
+{
+       for( int i=0; i<plugin_set.size(); ++i ) {
+               PluginSet *pluginset = this->plugin_set[i];
+               Plugin *dest = (Plugin*)pluginset->first;
+               for( ; dest; dest=(Plugin*)dest->next ) {
+                       if( strcmp(dest->title, plugin->title) != 0 ) continue;
+                       if( dest->startproject != plugin->startproject ) continue;
+                       if( dest->length != plugin->length ) continue;
+                       int64_t start = dest->startproject;
+                       int64_t end = start + dest->length;
+                       pluginset->clear(start, end, 1);
                }
        }
                }
        }
+       optimize();
 }
 
 void Track::resample(double old_rate, double new_rate)
 }
 
 void Track::resample(double old_rate, double new_rate)
@@ -699,25 +653,6 @@ void Track::resample(double old_rate, double new_rate)
        nudge = (int64_t)(nudge * new_rate / old_rate);
 }
 
        nudge = (int64_t)(nudge * new_rate / old_rate);
 }
 
-void Track::detach_shared_effects(int module)
-{
-       for(int i = 0; i < plugin_set.size(); i++) {
-               PluginSet *plugin_set = this->plugin_set.get(i);
-               for(Plugin *dest = (Plugin*)plugin_set->first; dest; ) {
-                       if( (dest->plugin_type == PLUGIN_SHAREDPLUGIN ||
-                               dest->plugin_type == PLUGIN_SHAREDMODULE) &&
-                               dest->shared_location.module == module ) {
-                               int64_t start = dest->startproject;
-                               int64_t end = dest->startproject + dest->length;
-                               plugin_set->clear(start, end, 1);
-                       }
-
-                       if(dest) dest = (Plugin*)dest->next;
-               }
-       }
-       optimize();
-}
-
 
 void Track::optimize()
 {
 
 void Track::optimize()
 {
index 4f81719c2c10f4c486bc16bbeeeabe8685496bee..a23f664806cd95ca6f7f284335d847103b17081e 100644 (file)
@@ -141,7 +141,8 @@ public:
 
 // detach shared effects referencing module
        void detach_shared_effects(int module);
 
 // detach shared effects referencing module
        void detach_shared_effects(int module);
-
+// detach all corresponding effects in gang
+       void detach_ganged_effects(Plugin *plugin);
 
 // Called by playable tracks to test for playable server.
 // Descends the plugin tree without creating a virtual console.
 
 // Called by playable tracks to test for playable server.
 // Descends the plugin tree without creating a virtual console.
index 71aee8fcfbaf7f8755d2acbbd241baacd95ac008..d904d5d6b330df4d660b61d6d05d24990a736f62 100644 (file)
@@ -35,6 +35,7 @@
 #include "panauto.h"
 #include "panautos.h"
 #include "patchbay.h"
 #include "panauto.h"
 #include "panautos.h"
 #include "patchbay.h"
+#include "plugin.h"
 #include "mainsession.h"
 #include "strack.h"
 #include "theme.h"
 #include "mainsession.h"
 #include "strack.h"
 #include "theme.h"
@@ -314,10 +315,11 @@ Track* Tracks::add_subttl_track(int above, Track *dst_track)
 }
 
 
 }
 
 
-int Tracks::delete_track(Track *track)
+int Tracks::delete_track(Track *track, int gang)
 {
        if( !track ) return 0;
 {
        if( !track ) return 0;
-       int gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0;
+       if( gang < 0 )
+               gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0;
        Track *nxt = track->next;
        if( gang ) {
                while( track && !track->master && track->previous )
        Track *nxt = track->next;
        if( gang ) {
                while( track && !track->master && track->previous )
@@ -341,13 +343,21 @@ int Tracks::delete_track(Track *track)
 
 int Tracks::detach_shared_effects(int module)
 {
 
 int Tracks::detach_shared_effects(int module)
 {
-       for(Track *current = first; current; current = NEXT)
-       {
+       for( Track *current=first; current; current=NEXT ) {
                current->detach_shared_effects(module);
        }
                current->detach_shared_effects(module);
        }
-
        return 0;
        return 0;
- }
+} 
+int Tracks::detach_ganged_effects(Plugin *plugin)
+{
+       if( edl->session->gang_tracks == GANG_NONE ) return 1;
+       for( Track *current=first; current; current=NEXT ) {
+               if( current == plugin->track ) continue;
+               if( !current->armed_gang(plugin->track) ) continue;
+               current->detach_ganged_effects(plugin);
+       }
+       return 0;
+}
 
 int Tracks::total_of(int type)
 {
 
 int Tracks::total_of(int type)
 {
index f5a328ed5f8fc78295619dbb8ef17179ad455894..3d67671310a455997dd0faca1eca451cc5ab0612 100644 (file)
@@ -118,9 +118,11 @@ public:
 //     Track* add_audio_track(int to_end = 1);
 //     Track* add_video_track(int to_end = 1);
 // delete any track
 //     Track* add_audio_track(int to_end = 1);
 //     Track* add_video_track(int to_end = 1);
 // delete any track
-       int delete_track(Track* track);
+       int delete_track(Track *track, int gang=-1);
 // detach shared effects referencing module
        int detach_shared_effects(int module);
 // detach shared effects referencing module
        int detach_shared_effects(int module);
+// detach all corresponding effects in gang
+       int detach_ganged_effects(Plugin *plugin);
 
        EDL *edl;
 
 
        EDL *edl;
 
index 849d6942cb24ebd7a058d534cf77d25448421c2d..f1684204d4fdb8d9f74296e7e41c000825b3789c 100644 (file)
@@ -372,27 +372,41 @@ void Tracks::set_transition_length(double start, double end, double length)
 void Tracks::set_transition_length(Transition *transition, double length)
 {
 // Must verify existence of transition
 void Tracks::set_transition_length(Transition *transition, double length)
 {
 // Must verify existence of transition
-       int done = 0;
-       if(!transition) return;
-       for(Track *current_track = first;
-               current_track && !done;
-               current_track = current_track->next)
-       {
-               for(Edit *current_edit = current_track->edits->first;
-                       current_edit && !done;
-                       current_edit = current_edit->next)
-               {
-                       if(current_edit->transition == transition)
-                       {
-                               transition->length = current_track->to_units(length, 1);
-                               if( current_edit == current_track->edits->last &&
-                                   current_edit->silence() ) {
-                                       current_edit->length = current_edit->transition->length;
+       int found = 0;
+       if( !transition ) return;
+       for( Track *track=first; track && !found; track=track->next ) {
+               for( Edit *edit=track->edits->first; edit && !found; edit = edit->next ) {
+                       if( edit->transition == transition ) {
+                               transition->length = track->to_units(length, 1);
+                               if( edit == track->edits->last && edit->silence() ) {
+                                       edit->length = edit->transition->length;
                                }
                                }
-                               done = 1;
+                               found = 1;
                        }
                }
        }
                        }
                }
        }
+       if( !found ) return;
+       if( edl->session->gang_tracks == GANG_NONE ) return;
+       Track *track = transition->edit->track;
+       double pos = track->from_units(transition->edit->startproject);
+       Track *current = edl->tracks->first;
+       for( ; current; current=current->next ) {
+               if( current == track ) continue;
+               if( current->data_type != track->data_type ) continue;
+               if( !current->armed_gang(track) ) continue;
+               int64_t track_pos = current->to_units(pos, 1);
+               Edit *edit = current->edits->editof(track_pos, PLAY_FORWARD, 0);
+               if( !edit || !edit->transition ) continue;
+               double edit_pos = track->from_units(edit->startproject);
+               if( !edl->equivalent(pos, edit_pos) ) continue;
+// modify gang same transitions at same position
+               if( edit->transition->Plugin::identical(transition) ) {
+                       edit->transition->length = transition->length;
+               }
+               if( edit == track->edits->last && edit->silence() ) {
+                       edit->length = edit->transition->length;
+               }
+       }
 }
 
 void Tracks::paste_transitions(double start, double end, int track_type, char* title)
 }
 
 void Tracks::paste_transitions(double start, double end, int track_type, char* title)
@@ -1060,6 +1074,20 @@ void Tracks::paste_automation(double selectionstart,
 void Tracks::paste_transition(PluginServer *server, Edit *dest_edit)
 {
        dest_edit->insert_transition(server->title);
 void Tracks::paste_transition(PluginServer *server, Edit *dest_edit)
 {
        dest_edit->insert_transition(server->title);
+       if( edl->session->gang_tracks == GANG_NONE ) return;
+       Track *track = dest_edit->track;
+       double pos = track->from_units(dest_edit->startproject);
+       for( Track *current=first; current; current=current->next ) {
+               if( current == track ) continue;
+               if( current->data_type != track->data_type ) continue;
+               if( !current->armed_gang(track) ) continue;
+               int64_t track_pos = current->to_units(pos, 1);
+               Edit *edit = current->edits->editof(track_pos, PLAY_FORWARD, 0);
+               if( !edit ) continue;
+               double edit_pos = track->from_units(edit->startproject);
+               if( !edl->equivalent(pos, edit_pos) ) continue;
+               edit->insert_transition(server->title);
+       }
 }
 
 void Tracks::paste_video_transition(PluginServer *server, int first_track)
 }
 
 void Tracks::paste_video_transition(PluginServer *server, int first_track)
index 0ddaf26d757e18a0a6a272480416ec5852fe4009..9f041dbc63d9045cf21765b2f9575492de351632 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Project-Id-Version: Cinelerra 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-10-15 14:02-0600\n"
 "Project-Id-Version: Cinelerra 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-10-15 14:02-0600\n"
-"PO-Revision-Date: 2020-05-29 10:42+0200\n"
+"PO-Revision-Date: 2020-06-25 19:11+0200\n"
 "Last-Translator: Sergio Daniel Gomez <sergio.sgsistemas@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "Language: es\n"
 "Last-Translator: Sergio Daniel Gomez <sergio.sgsistemas@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "Language: es\n"
@@ -18,7 +18,7 @@ msgstr ""
 "X-Generator: Poedit 2.0.6\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "X-Generator: Poedit 2.0.6\n"
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-01-29 14:04-0700\n"
+"POT-Creation-Date: 2020-06-03 14:04-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Rafa Mar <rafamar.mm.ig@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Rafa Mar <rafamar.mm.ig@gmail.com>\n"
 "Language-Team: SPANISH <LL@li.org>\n"
@@ -92,12 +92,12 @@ msgstr "Aceptar la operación"
 msgid "Cancel the operation"
 msgstr "Cancelar la operación"
 
 msgid "Cancel the operation"
 msgstr "Cancelar la operación"
 
-#: guicast/bcfilebox.C:348 cinelerra/awindowgui.C:3499
+#: guicast/bcfilebox.C:348 cinelerra/awindowgui.C:3501
 #: cinelerra/folderlistmenu.C:61
 msgid "Display text"
 msgstr "Vista de Lista"
 
 #: cinelerra/folderlistmenu.C:61
 msgid "Display text"
 msgstr "Vista de Lista"
 
-#: guicast/bcfilebox.C:362 cinelerra/awindowgui.C:3490
+#: guicast/bcfilebox.C:362 cinelerra/awindowgui.C:3492
 #: cinelerra/folderlistmenu.C:61
 msgid "Display icons"
 msgstr "Vista de Iconos"
 #: cinelerra/folderlistmenu.C:61
 msgid "Display icons"
 msgstr "Vista de Iconos"
@@ -126,7 +126,7 @@ msgstr "Actualizar"
 msgid "Directory:"
 msgstr "Carpeta:"
 
 msgid "Directory:"
 msgstr "Carpeta:"
 
-#: guicast/bcfilebox.C:621 cinelerra/awindowgui.C:3198
+#: guicast/bcfilebox.C:621 cinelerra/awindowgui.C:3200
 msgid "Search:"
 msgstr "Buscar:"
 
 msgid "Search:"
 msgstr "Buscar:"
 
@@ -194,7 +194,7 @@ msgstr "Elija entre usado recientemente"
 msgid "Enter a new name for the file:"
 msgstr "Introducir un nuevo nombre para el archivo:"
 
 msgid "Enter a new name for the file:"
 msgstr "Introducir un nuevo nombre para el archivo:"
 
-#: guicast/bcresources.C:1844
+#: guicast/bcresources.C:1845
 #, c-format
 msgid "Conversion from %s to %s is not available\n"
 msgstr "La conversión de %s a %s no está disponible\n"
 #, c-format
 msgid "Conversion from %s to %s is not available\n"
 msgstr "La conversión de %s a %s no está disponible\n"
@@ -744,7 +744,7 @@ msgstr ""
 "Error: no se puede cargar:\n"
 " %s"
 
 "Error: no se puede cargar:\n"
 " %s"
 
-#: cinelerra/assetpopup.C:248 cinelerra/mwindow.C:3983
+#: cinelerra/assetpopup.C:248 cinelerra/mwindow.C:3998
 #, c-format
 msgid ""
 "media is not EDL:\n"
 #, c-format
 msgid ""
 "media is not EDL:\n"
@@ -830,7 +830,7 @@ msgstr "No usado"
 #: cinelerra/fileffmpeg.C:596 cinelerra/fileffmpeg.C:767
 #: cinelerra/filetiff.C:118 cinelerra/proxypopup.C:317
 #: cinelerra/recordbatches.C:309 cinelerra/recordgui.C:323
 #: cinelerra/fileffmpeg.C:596 cinelerra/fileffmpeg.C:767
 #: cinelerra/filetiff.C:118 cinelerra/proxypopup.C:317
 #: cinelerra/recordbatches.C:309 cinelerra/recordgui.C:323
-#: cinelerra/recordgui.C:772 cinelerra/rescale.C:7 cinelerra/scopewindow.C:1329
+#: cinelerra/recordgui.C:772 cinelerra/rescale.C:7 cinelerra/scopewindow.C:1340
 #: cinelerra/sharedlocation.C:144 cinelerra/sharedlocation.C:149
 #: cinelerra/sharedlocation.C:162 cinelerra/vwindowgui.C:269
 #: plugins/descratch/descratch.C:624 plugins/findobj/findobjwindow.C:893
 #: cinelerra/sharedlocation.C:144 cinelerra/sharedlocation.C:149
 #: cinelerra/sharedlocation.C:162 cinelerra/vwindowgui.C:269
 #: plugins/descratch/descratch.C:624 plugins/findobj/findobjwindow.C:893
@@ -921,7 +921,7 @@ msgstr ": Eliminar clips activos"
 msgid "Permanently remove from disk?"
 msgstr "Eliminar permanentemente del disco?"
 
 msgid "Permanently remove from disk?"
 msgstr "Eliminar permanentemente del disco?"
 
-#: cinelerra/atrack.C:134 cinelerra/new.C:116
+#: cinelerra/atrack.C:135 cinelerra/new.C:116
 #, c-format
 msgid "Audio %d"
 msgstr "Audio %d"
 #, c-format
 msgid "Audio %d"
 msgstr "Audio %d"
@@ -1042,144 +1042,144 @@ msgstr "Objectivo de origen"
 msgid "No Play"
 msgstr "No Reproducir"
 
 msgid "No Play"
 msgstr "No Reproducir"
 
-#: cinelerra/awindowgui.C:977 cinelerra/awindowgui.C:1036
+#: cinelerra/awindowgui.C:979 cinelerra/awindowgui.C:1038
 #, c-format
 msgid "Reading %s"
 msgstr "Leyendo %s"
 
 #, c-format
 msgid "Reading %s"
 msgstr "Leyendo %s"
 
-#: cinelerra/awindowgui.C:1119 cinelerra/awindowgui.C:1168
+#: cinelerra/awindowgui.C:1121 cinelerra/awindowgui.C:1170
 #, c-format
 msgid "Rendering %s"
 msgstr "Renderizando %s"
 
 #, c-format
 msgid "Rendering %s"
 msgstr "Renderizando %s"
 
-#: cinelerra/awindowgui.C:1273
+#: cinelerra/awindowgui.C:1275
 msgid ": Resources"
 msgstr ": Recursos"
 
 msgid ": Resources"
 msgstr ": Recursos"
 
-#: cinelerra/awindowgui.C:1443 cinelerra/awindowgui.C:2379
-#: cinelerra/awindowgui.C:2399
+#: cinelerra/awindowgui.C:1445 cinelerra/awindowgui.C:2381
+#: cinelerra/awindowgui.C:2401
 msgid "awindowgui#Title"
 msgstr "Título"
 
 msgid "awindowgui#Title"
 msgstr "Título"
 
-#: cinelerra/awindowgui.C:1444 cinelerra/awindowgui.C:2380
+#: cinelerra/awindowgui.C:1446 cinelerra/awindowgui.C:2382
 msgid "Comments"
 msgstr "Comentarios"
 
 msgid "Comments"
 msgstr "Comentarios"
 
-#: cinelerra/awindowgui.C:1531
+#: cinelerra/awindowgui.C:1533
 msgid "Visibility"
 msgstr "Visible"
 
 msgid "Visibility"
 msgstr "Visible"
 
-#: cinelerra/awindowgui.C:1759
+#: cinelerra/awindowgui.C:1761
 msgid ": Remove plugin"
 msgstr ": Eliminar plugin"
 
 msgid ": Remove plugin"
 msgstr ": Eliminar plugin"
 
-#: cinelerra/awindowgui.C:1789
+#: cinelerra/awindowgui.C:1791
 msgid "remove plugin?"
 msgstr "eliminar plugin?"
 
 msgid "remove plugin?"
 msgstr "eliminar plugin?"
 
-#: cinelerra/awindowgui.C:1818
+#: cinelerra/awindowgui.C:1820
 #, c-format
 msgid "remove %s\n"
 msgstr "eliminar %s\n"
 
 #, c-format
 msgid "remove %s\n"
 msgstr "eliminar %s\n"
 
-#: cinelerra/awindowgui.C:2224
+#: cinelerra/awindowgui.C:2226
 msgid "Proxy clip"
 msgstr "Clip de Proxy"
 
 msgid "Proxy clip"
 msgstr "Clip de Proxy"
 
-#: cinelerra/awindowgui.C:2398
+#: cinelerra/awindowgui.C:2400
 msgid "Time Stamps"
 msgstr "Marcas de tiempo"
 
 msgid "Time Stamps"
 msgstr "Marcas de tiempo"
 
-#: cinelerra/awindowgui.C:3152
+#: cinelerra/awindowgui.C:3154
 msgid "No info available"
 msgstr "Ninguna información disponible"
 
 msgid "No info available"
 msgstr "Ninguna información disponible"
 
-#: cinelerra/awindowgui.C:3245
+#: cinelerra/awindowgui.C:3247
 msgid "Delete asset from disk"
 msgstr "Borrar clip desde el disco"
 
 msgid "Delete asset from disk"
 msgstr "Borrar clip desde el disco"
 
-#: cinelerra/awindowgui.C:3258
+#: cinelerra/awindowgui.C:3260
 msgid "Delete asset from project"
 msgstr "Borrar los clips de proyecto"
 
 msgid "Delete asset from project"
 msgstr "Borrar los clips de proyecto"
 
-#: cinelerra/awindowgui.C:3287
+#: cinelerra/awindowgui.C:3289
 msgid "Redraw index"
 msgstr "Volver a dibujar índice"
 
 msgid "Redraw index"
 msgstr "Volver a dibujar índice"
 
-#: cinelerra/awindowgui.C:3300
+#: cinelerra/awindowgui.C:3302
 msgid "Paste asset on recordable tracks"
 msgstr "Pegar clip en pistas grabables"
 
 msgid "Paste asset on recordable tracks"
 msgstr "Pegar clip en pistas grabables"
 
-#: cinelerra/awindowgui.C:3313
+#: cinelerra/awindowgui.C:3315
 msgid "Append asset in new tracks"
 msgstr "Agregar clip en una nueva pista"
 
 msgid "Append asset in new tracks"
 msgstr "Agregar clip en una nueva pista"
 
-#: cinelerra/awindowgui.C:3326
+#: cinelerra/awindowgui.C:3328
 msgid "View asset"
 msgstr "Ver recurso"
 
 msgid "View asset"
 msgstr "Ver recurso"
 
-#: cinelerra/awindowgui.C:3370 cinelerra/fileffmpeg.C:1145
+#: cinelerra/awindowgui.C:3372 cinelerra/fileffmpeg.C:1145
 msgid "ffmpeg"
 msgstr "ffmpeg"
 
 msgid "ffmpeg"
 msgstr "ffmpeg"
 
-#: cinelerra/awindowgui.C:3371
+#: cinelerra/awindowgui.C:3373
 msgid "ladspa"
 msgstr "ladspa"
 
 msgid "ladspa"
 msgstr "ladspa"
 
-#: cinelerra/awindowgui.C:3372
+#: cinelerra/awindowgui.C:3374
 msgid "lv2"
 msgstr "lv2"
 
 msgid "lv2"
 msgstr "lv2"
 
-#: cinelerra/awindowgui.C:3373
+#: cinelerra/awindowgui.C:3375
 msgid "audio_tools"
 msgstr "audio_herramientas"
 
 msgid "audio_tools"
 msgstr "audio_herramientas"
 
-#: cinelerra/awindowgui.C:3374
+#: cinelerra/awindowgui.C:3376
 msgid "audio_transitions"
 msgstr "audio_transiciones"
 
 msgid "audio_transitions"
 msgstr "audio_transiciones"
 
-#: cinelerra/awindowgui.C:3375
+#: cinelerra/awindowgui.C:3377
 msgid "blending"
 msgstr "mezcla"
 
 msgid "blending"
 msgstr "mezcla"
 
-#: cinelerra/awindowgui.C:3376
+#: cinelerra/awindowgui.C:3378
 msgid "colors"
 msgstr "colores"
 
 msgid "colors"
 msgstr "colores"
 
-#: cinelerra/awindowgui.C:3377
+#: cinelerra/awindowgui.C:3379
 msgid "exotic"
 msgstr "exótico"
 
 msgid "exotic"
 msgstr "exótico"
 
-#: cinelerra/awindowgui.C:3378
+#: cinelerra/awindowgui.C:3380
 msgid "transforms"
 msgstr "transformadas"
 
 msgid "transforms"
 msgstr "transformadas"
 
-#: cinelerra/awindowgui.C:3379
+#: cinelerra/awindowgui.C:3381
 msgid "tv_effects"
 msgstr "tv_efectos"
 
 msgid "tv_effects"
 msgstr "tv_efectos"
 
-#: cinelerra/awindowgui.C:3380
+#: cinelerra/awindowgui.C:3382
 msgid "video_tools"
 msgstr "video_herramientas"
 
 msgid "video_tools"
 msgstr "video_herramientas"
 
-#: cinelerra/awindowgui.C:3381
+#: cinelerra/awindowgui.C:3383
 msgid "video_transitions"
 msgstr "video_transiciones"
 
 msgid "video_transitions"
 msgstr "video_transiciones"
 
-#: cinelerra/awindowgui.C:3493
+#: cinelerra/awindowgui.C:3495
 msgid "Display icons packed"
 msgstr "Mostrar iconos empaquetados"
 
 msgid "Display icons packed"
 msgstr "Mostrar iconos empaquetados"
 
-#: cinelerra/awindowgui.C:3496
+#: cinelerra/awindowgui.C:3498
 msgid "Display icon list"
 msgstr "Mostrar lista de íconos"
 
 msgid "Display icon list"
 msgstr "Mostrar lista de íconos"
 
-#: cinelerra/awindowgui.C:3506 cinelerra/clippopup.C:173
+#: cinelerra/awindowgui.C:3508 cinelerra/clippopup.C:173
 #: cinelerra/folderlistmenu.C:92 cinelerra/proxypopup.C:131
 msgid "Sort items"
 msgstr "Organizar objectos"
 
 #: cinelerra/folderlistmenu.C:92 cinelerra/proxypopup.C:131
 msgid "Sort items"
 msgstr "Organizar objectos"
 
-#: cinelerra/awindowgui.C:3560 cinelerra/channeledit.C:476
+#: cinelerra/awindowgui.C:3562 cinelerra/channeledit.C:476
 msgid "Select"
 msgstr "Seleccionar"
 
 msgid "Select"
 msgstr "Seleccionar"
 
@@ -1351,7 +1351,7 @@ msgstr "Nuevo"
 #: cinelerra/batchrender.C:1052 cinelerra/channeledit.C:577
 #: cinelerra/clippopup.C:340 cinelerra/cwindowtool.C:2037
 #: cinelerra/cwindowtool.C:2091 cinelerra/dbwindow.C:240
 #: cinelerra/batchrender.C:1052 cinelerra/channeledit.C:577
 #: cinelerra/clippopup.C:340 cinelerra/cwindowtool.C:2037
 #: cinelerra/cwindowtool.C:2091 cinelerra/dbwindow.C:240
-#: cinelerra/keyframegui.C:747 cinelerra/labelpopup.C:87
+#: cinelerra/keyframegui.C:749 cinelerra/labelpopup.C:87
 #: cinelerra/recordbatches.C:487 plugins/piano/piano.C:835
 #: plugins/synthesizer/synthesizer.C:1311
 msgid "Delete"
 #: cinelerra/recordbatches.C:487 plugins/piano/piano.C:835
 #: plugins/synthesizer/synthesizer.C:1311
 msgid "Delete"
@@ -1481,7 +1481,7 @@ msgid "Resize Tracks"
 msgstr "Cambiar el tamaño de las Pistas"
 
 #: cinelerra/bdcreate.C:670 cinelerra/dvdcreate.C:802
 msgstr "Cambiar el tamaño de las Pistas"
 
 #: cinelerra/bdcreate.C:670 cinelerra/dvdcreate.C:802
-#: cinelerra/scopewindow.C:1253 plugins/colorbalance/colorbalance.C:506
+#: cinelerra/scopewindow.C:1255 plugins/colorbalance/colorbalance.C:506
 #: plugins/gamma/gamma.C:451 plugins/histogram/histogram.C:99
 #: plugins/interpolate/interpolate.C:246
 msgid "Histogram"
 #: plugins/gamma/gamma.C:451 plugins/histogram/histogram.C:99
 #: plugins/interpolate/interpolate.C:246
 msgid "Histogram"
@@ -1718,7 +1718,7 @@ msgstr "Supr"
 
 #: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:496
 #: cinelerra/fileffmpeg.C:1222 cinelerra/fileffmpeg.C:1627
 
 #: cinelerra/binfolder.C:1655 cinelerra/cwindowtool.C:496
 #: cinelerra/fileffmpeg.C:1222 cinelerra/fileffmpeg.C:1627
-#: cinelerra/keyframegui.C:785 cinelerra/loadfile.C:196
+#: cinelerra/keyframegui.C:787 cinelerra/loadfile.C:192
 #: cinelerra/mixersalign.C:428 cinelerra/mixersalign.C:436
 #: cinelerra/plugindialog.C:288 cinelerra/plugindialog.C:361
 #: cinelerra/plugindialog.C:471 cinelerra/pluginfclient.C:218
 #: cinelerra/mixersalign.C:428 cinelerra/mixersalign.C:436
 #: cinelerra/plugindialog.C:288 cinelerra/plugindialog.C:361
 #: cinelerra/plugindialog.C:471 cinelerra/pluginfclient.C:218
@@ -2610,7 +2610,7 @@ msgstr "Mostrar información de herramientas (F9)"
 msgid "Show safe regions (F10)"
 msgstr "Mostrar zonas seguras (F10)"
 
 msgid "Show safe regions (F10)"
 msgstr "Mostrar zonas seguras (F10)"
 
-#: cinelerra/cpanel.C:377 plugins/perspective/perspective.C:203
+#: cinelerra/cpanel.C:377 plugins/perspective/perspective.C:211
 #: plugins/zoom/zoom.C:147
 msgid "Zoom"
 msgstr "Zoom"
 #: plugins/zoom/zoom.C:147
 msgid "Zoom"
 msgstr "Zoom"
@@ -2647,32 +2647,32 @@ msgstr "Mostrar controles"
 msgid "Hide controls"
 msgstr "Ocultar controles"
 
 msgid "Hide controls"
 msgstr "Ocultar controles"
 
-#: cinelerra/cwindowgui.C:1827 cinelerra/cwindowgui.C:3373
+#: cinelerra/cwindowgui.C:1829 cinelerra/cwindowgui.C:3378
 msgid "mask rotate"
 msgstr "rotación de máscara"
 
 msgid "mask rotate"
 msgstr "rotación de máscara"
 
-#: cinelerra/cwindowgui.C:1831 cinelerra/cwindowgui.C:3377
+#: cinelerra/cwindowgui.C:1833 cinelerra/cwindowgui.C:3382
 msgid "mask scale"
 msgstr "escalar máscara"
 
 msgid "mask scale"
 msgstr "escalar máscara"
 
-#: cinelerra/cwindowgui.C:1839
+#: cinelerra/cwindowgui.C:1841
 msgid "mask translate"
 msgstr "máscara convertir"
 
 msgid "mask translate"
 msgstr "máscara convertir"
 
-#: cinelerra/cwindowgui.C:1846
+#: cinelerra/cwindowgui.C:1848
 msgid "mask adjust"
 msgstr "ajuste de máscara"
 
 msgid "mask adjust"
 msgstr "ajuste de máscara"
 
-#: cinelerra/cwindowgui.C:1859 cinelerra/cwindowtool.C:3075
+#: cinelerra/cwindowgui.C:1861 cinelerra/cwindowtool.C:3075
 #: cinelerra/cwindowtool.C:3102
 msgid "mask point"
 msgstr "punto de máscara"
 
 #: cinelerra/cwindowtool.C:3102
 msgid "mask point"
 msgstr "punto de máscara"
 
-#: cinelerra/cwindowgui.C:2355 cinelerra/cwindowgui.C:2470
+#: cinelerra/cwindowgui.C:2357 cinelerra/cwindowgui.C:2472
 msgid "Eyedrop"
 msgstr "Eyedrop"
 
 msgid "Eyedrop"
 msgstr "Eyedrop"
 
-#: cinelerra/cwindowgui.C:3098 cinelerra/cwindowgui.C:3356
+#: cinelerra/cwindowgui.C:3100 cinelerra/cwindowgui.C:3361
 #: cinelerra/cwindowtool.C:1010 cinelerra/cwindowtool.C:1058
 #: cinelerra/cwindowtool.C:1124 cinelerra/cwindowtool.C:1128
 #: cinelerra/cwindowtool.C:1155 cinelerra/cwindowtool.C:1159
 #: cinelerra/cwindowtool.C:1010 cinelerra/cwindowtool.C:1058
 #: cinelerra/cwindowtool.C:1124 cinelerra/cwindowtool.C:1128
 #: cinelerra/cwindowtool.C:1155 cinelerra/cwindowtool.C:1159
@@ -2683,7 +2683,7 @@ msgstr "Eyedrop"
 msgid "camera"
 msgstr "cámara"
 
 msgid "camera"
 msgstr "cámara"
 
-#: cinelerra/cwindowgui.C:3100 cinelerra/cwindowgui.C:3360
+#: cinelerra/cwindowgui.C:3102 cinelerra/cwindowgui.C:3365
 #: cinelerra/cwindowtool.C:1423 cinelerra/cwindowtool.C:1469
 #: cinelerra/cwindowtool.C:1524 cinelerra/cwindowtool.C:1529
 #: cinelerra/cwindowtool.C:1553 cinelerra/cwindowtool.C:1557
 #: cinelerra/cwindowtool.C:1423 cinelerra/cwindowtool.C:1469
 #: cinelerra/cwindowtool.C:1524 cinelerra/cwindowtool.C:1529
 #: cinelerra/cwindowtool.C:1553 cinelerra/cwindowtool.C:1557
@@ -2694,7 +2694,7 @@ msgstr "cámara"
 msgid "projector"
 msgstr "proyector"
 
 msgid "projector"
 msgstr "proyector"
 
-#: cinelerra/cwindowgui.C:3369
+#: cinelerra/cwindowgui.C:3374
 msgid "mask"
 msgstr "máscara"
 
 msgid "mask"
 msgstr "máscara"
 
@@ -4017,7 +4017,7 @@ msgstr "Deshacer ( z )"
 msgid "Redo ( shift Z )"
 msgstr "Rehacer ( Mayús Z )"
 
 msgid "Redo ( shift Z )"
 msgstr "Rehacer ( Mayús Z )"
 
-#: cinelerra/editpanel.C:1271 cinelerra/recordscopes.C:171
+#: cinelerra/editpanel.C:1273 cinelerra/recordscopes.C:173
 msgid "View scope"
 msgstr "Ver Vectorscopio"
 
 msgid "View scope"
 msgstr "Ver Vectorscopio"
 
@@ -5580,7 +5580,7 @@ msgstr "ArchivoVorvis::abrir_archivo %s: flujo de bits invalido.\n"
 msgid "Flipbook..."
 msgstr "Flipbook..."
 
 msgid "Flipbook..."
 msgstr "Flipbook..."
 
-#: cinelerra/floatauto.C:436 cinelerra/scopewindow.C:1318
+#: cinelerra/floatauto.C:436 cinelerra/scopewindow.C:1326
 #: plugins/titler/titlerwindow.C:690
 msgid "Smooth"
 msgstr "Suave"
 #: plugins/titler/titlerwindow.C:690
 msgid "Smooth"
 msgstr "Suave"
@@ -5588,7 +5588,7 @@ msgstr "Suave"
 #: cinelerra/floatauto.C:437 plugins/gradient/gradient.C:260
 #: plugins/gradient/gradient.C:334
 #: plugins/histogram_bezier/bistogramwindow.C:848
 #: cinelerra/floatauto.C:437 plugins/gradient/gradient.C:260
 #: plugins/gradient/gradient.C:334
 #: plugins/histogram_bezier/bistogramwindow.C:848
-#: plugins/perspective/perspective.C:609 plugins/timefront/timefront.C:371
+#: plugins/perspective/perspective.C:626 plugins/timefront/timefront.C:371
 #: plugins/timefront/timefront.C:509
 msgid "Linear"
 msgstr "Lineal"
 #: plugins/timefront/timefront.C:509
 msgid "Linear"
 msgstr "Lineal"
@@ -5653,7 +5653,7 @@ msgstr "Establecer el tipo de archivo ffmpeg"
 msgid "User Defined"
 msgstr "Definido por el usuario"
 
 msgid "User Defined"
 msgstr "Definido por el usuario"
 
-#: cinelerra/formatpresets.C:67 cinelerra/keyframegui.C:508
+#: cinelerra/formatpresets.C:67 cinelerra/keyframegui.C:510
 msgid "Presets:"
 msgstr "Preestablecidos:"
 
 msgid "Presets:"
 msgstr "Preestablecidos:"
 
@@ -6063,31 +6063,31 @@ msgstr "Parámetro"
 msgid "%s: %s Keyframe"
 msgstr "%s: %s de fotogramas clave"
 
 msgid "%s: %s Keyframe"
 msgstr "%s: %s de fotogramas clave"
 
-#: cinelerra/keyframegui.C:372
+#: cinelerra/keyframegui.C:374
 msgid "apply preset"
 msgstr "aplicar predefinido"
 
 msgid "apply preset"
 msgstr "aplicar predefinido"
 
-#: cinelerra/keyframegui.C:444
+#: cinelerra/keyframegui.C:446
 msgid "edit keyframe"
 msgstr "editar fotograma clave"
 
 msgid "edit keyframe"
 msgstr "editar fotograma clave"
 
-#: cinelerra/keyframegui.C:485
+#: cinelerra/keyframegui.C:487
 msgid "Keyframe parameters:"
 msgstr "Parámetros de la clave:"
 
 msgid "Keyframe parameters:"
 msgstr "Parámetros de la clave:"
 
-#: cinelerra/keyframegui.C:498
+#: cinelerra/keyframegui.C:500
 msgid "Edit value:"
 msgstr "Editar valor:"
 
 msgid "Edit value:"
 msgstr "Editar valor:"
 
-#: cinelerra/keyframegui.C:515
+#: cinelerra/keyframegui.C:517
 msgid "Preset title:"
 msgstr "Título predefinido:"
 
 msgid "Preset title:"
 msgstr "Título predefinido:"
 
-#: cinelerra/keyframegui.C:678
+#: cinelerra/keyframegui.C:680
 msgid "Apply to all selected keyframes"
 msgstr "Aplicar a todas las claves seleccionadas"
 
 msgid "Apply to all selected keyframes"
 msgstr "Aplicar a todas las claves seleccionadas"
 
-#: cinelerra/keyframegui.C:766
+#: cinelerra/keyframegui.C:768
 msgid "keyframegui#Save"
 msgstr "Guardar"
 
 msgid "keyframegui#Save"
 msgstr "Guardar"
 
@@ -6144,7 +6144,7 @@ msgstr "Editar parámetros..."
 msgid "mute"
 msgstr "mutear"
 
 msgid "mute"
 msgstr "mutear"
 
-#: cinelerra/keyframepopup.C:659 cinelerra/keyframepopup.C:669
+#: cinelerra/keyframepopup.C:644 cinelerra/keyframepopup.C:654
 msgid "speed"
 msgstr "velocidad"
 
 msgid "speed"
 msgstr "velocidad"
 
@@ -6180,19 +6180,19 @@ msgstr ""
 "Otros proyectos pueden cambiar este proyecto\n"
 "y esto puede convertirse en un enlace roto"
 
 "Otros proyectos pueden cambiar este proyecto\n"
 "y esto puede convertirse en un enlace roto"
 
-#: cinelerra/loadfile.C:166
+#: cinelerra/loadfile.C:162
 msgid ": Load"
 msgstr ": Carga"
 
 msgid ": Load"
 msgstr ": Carga"
 
-#: cinelerra/loadfile.C:167
+#: cinelerra/loadfile.C:163
 msgid "Select files to load:"
 msgstr "Seleccionar archivos para cargar:"
 
 msgid "Select files to load:"
 msgstr "Seleccionar archivos para cargar:"
 
-#: cinelerra/loadfile.C:242
+#: cinelerra/loadfile.C:238
 msgid ": Locate file"
 msgstr ": Localizar el archivo"
 
 msgid ": Locate file"
 msgstr ": Localizar el archivo"
 
-#: cinelerra/loadfile.C:295
+#: cinelerra/loadfile.C:291
 msgid "Load backup"
 msgstr "Cargar copia de seguridad"
 
 msgid "Load backup"
 msgstr "Cargar copia de seguridad"
 
@@ -6357,7 +6357,7 @@ msgstr "Vídeo"
 msgid "Tracks"
 msgstr "Pistas"
 
 msgid "Tracks"
 msgstr "Pistas"
 
-#: cinelerra/mainmenu.C:215 cinelerra/scopewindow.C:1310
+#: cinelerra/mainmenu.C:215 cinelerra/scopewindow.C:1316
 msgid "Settings"
 msgstr "Ajustes"
 
 msgid "Settings"
 msgstr "Ajustes"
 
@@ -6794,7 +6794,7 @@ msgstr "Cargar recientes..."
 msgid "%s ETA: %s"
 msgstr "%s tiempo estimado: %s"
 
 msgid "%s ETA: %s"
 msgstr "%s tiempo estimado: %s"
 
-#: cinelerra/mainsession.C:665 cinelerra/mwindow.C:3990
+#: cinelerra/mainsession.C:669 cinelerra/mwindow.C:4005
 #: cinelerra/mwindowedit.C:2155
 #, c-format
 msgid "Clip %d"
 #: cinelerra/mwindowedit.C:2155
 #, c-format
 msgid "Clip %d"
@@ -6885,7 +6885,7 @@ msgstr "No se ha seleccionado un rango para procesar."
 msgid ": %s"
 msgstr ": %s"
 
 msgid ": %s"
 msgstr ": %s"
 
-#: cinelerra/menueffects.C:458 cinelerra/mwindow.C:3881
+#: cinelerra/menueffects.C:458 cinelerra/mwindow.C:3895
 #: cinelerra/packagerenderer.C:168
 #, c-format
 msgid "Couldn't open %s"
 #: cinelerra/packagerenderer.C:168
 #, c-format
 msgid "Couldn't open %s"
@@ -6938,7 +6938,7 @@ msgid "Show meters"
 msgstr "Mostrar Vúmetros de Audio"
 
 #: cinelerra/mixersalign.C:73 cinelerra/mixersalign.C:261
 msgstr "Mostrar Vúmetros de Audio"
 
 #: cinelerra/mixersalign.C:73 cinelerra/mixersalign.C:261
-#: cinelerra/patchgui.C:665
+#: cinelerra/patchgui.C:695
 msgid "Nudge"
 msgstr "Empujar"
 
 msgid "Nudge"
 msgstr "Empujar"
 
@@ -6990,7 +6990,7 @@ msgstr "pos"
 #: plugins/linearblur/linearblur.C:272
 #: plugins/mandelcuda/mandelbrotwindow.C:201
 #: plugins/nbodycuda/nbodywindow.C:276 plugins/oilpainting/oil.C:264
 #: plugins/linearblur/linearblur.C:272
 #: plugins/mandelcuda/mandelbrotwindow.C:201
 #: plugins/nbodycuda/nbodywindow.C:276 plugins/oilpainting/oil.C:264
-#: plugins/perspective/perspective.C:542 plugins/polar/polar.C:335
+#: plugins/perspective/perspective.C:559 plugins/polar/polar.C:335
 #: plugins/radialblur/radialblur.C:275 plugins/reframert/reframert.C:275
 #: plugins/rgbshift/rgbshift.C:115 plugins/rotate/rotate.C:244
 #: plugins/rumbler/rumbler.C:154 plugins/sharpen/sharpenwindow.C:167
 #: plugins/radialblur/radialblur.C:275 plugins/reframert/reframert.C:275
 #: plugins/rgbshift/rgbshift.C:115 plugins/rotate/rotate.C:244
 #: plugins/rumbler/rumbler.C:154 plugins/sharpen/sharpenwindow.C:167
@@ -7304,81 +7304,81 @@ msgstr "Iniciando GUI"
 msgid "Initializing Fonts"
 msgstr "Iniciando Fuentes"
 
 msgid "Initializing Fonts"
 msgstr "Iniciando Fuentes"
 
-#: cinelerra/mwindow.C:3859
+#: cinelerra/mwindow.C:3873
 msgid "open edl"
 msgstr "abrir edl"
 
 msgid "open edl"
 msgstr "abrir edl"
 
-#: cinelerra/mwindow.C:3869
+#: cinelerra/mwindow.C:3883
 #, c-format
 msgid "Warning: Asset not updated: %s"
 msgstr "Advertencia: activo no actualizado: %s"
 
 #, c-format
 msgid "Warning: Asset not updated: %s"
 msgstr "Advertencia: activo no actualizado: %s"
 
-#: cinelerra/mwindow.C:3888
+#: cinelerra/mwindow.C:3902
 #, c-format
 msgid "\"%s\" %jdC written"
 msgstr "\"%s\" %jdC escrito"
 
 #, c-format
 msgid "\"%s\" %jdC written"
 msgstr "\"%s\" %jdC escrito"
 
-#: cinelerra/mwindow.C:3960
+#: cinelerra/mwindow.C:3975
 #, c-format
 msgid "Nested_%02d%02d%02d-%02d%02d%02d_"
 msgstr "Anidado_%02d%02d%02d-%02d%02d%02d_"
 
 #, c-format
 msgid "Nested_%02d%02d%02d-%02d%02d%02d_"
 msgstr "Anidado_%02d%02d%02d-%02d%02d%02d_"
 
-#: cinelerra/mwindow.C:3971
+#: cinelerra/mwindow.C:3986
 msgid "clip2media"
 msgstr "clip2deMedios"
 
 msgid "clip2media"
 msgstr "clip2deMedios"
 
-#: cinelerra/mwindow.C:4001
+#: cinelerra/mwindow.C:4016
 #, c-format
 msgid "From: %s"
 msgstr "Desde: %s"
 
 #, c-format
 msgid "From: %s"
 msgstr "Desde: %s"
 
-#: cinelerra/mwindow.C:4003
+#: cinelerra/mwindow.C:4018
 msgid "media2clip"
 msgstr "medios2clip"
 
 msgid "media2clip"
 msgstr "medios2clip"
 
-#: cinelerra/mwindow.C:4017 cinelerra/mwindow.C:4029
+#: cinelerra/mwindow.C:4032 cinelerra/mwindow.C:4044
 msgid "reference"
 msgstr "referencia"
 
 msgid "reference"
 msgstr "referencia"
 
-#: cinelerra/mwindow.C:4132
+#: cinelerra/mwindow.C:4147
 #, c-format
 msgid "Couldn't open %s for writing."
 msgstr "No se pudo abrir %s para la escritura."
 
 #, c-format
 msgid "Couldn't open %s for writing."
 msgstr "No se pudo abrir %s para la escritura."
 
-#: cinelerra/mwindow.C:4185
+#: cinelerra/mwindow.C:4200
 msgid "perpetual load"
 msgstr "carga perpetua"
 
 msgid "perpetual load"
 msgstr "carga perpetua"
 
-#: cinelerra/mwindow.C:4211
+#: cinelerra/mwindow.C:4226
 #, c-format
 msgid "Copying: %s\n"
 msgstr "Copiando: %s\n"
 
 #, c-format
 msgid "Copying: %s\n"
 msgstr "Copiando: %s\n"
 
-#: cinelerra/mwindow.C:4298
+#: cinelerra/mwindow.C:4313
 #, c-format
 msgid "Saving to %s:\n"
 msgstr "Guardando a: %s\n"
 
 #, c-format
 msgid "Saving to %s:\n"
 msgstr "Guardando a: %s\n"
 
-#: cinelerra/mwindow.C:4360
+#: cinelerra/mwindow.C:4375
 #, c-format
 msgid "\"%s\" %dC written"
 msgstr "\"%s\" %dC escrito"
 
 #, c-format
 msgid "\"%s\" %dC written"
 msgstr "\"%s\" %dC escrito"
 
-#: cinelerra/mwindow.C:4367
+#: cinelerra/mwindow.C:4382
 #, c-format
 msgid "Couldn't open %s."
 msgstr "No se pudo abrir %s."
 
 #, c-format
 msgid "Couldn't open %s."
 msgstr "No se pudo abrir %s."
 
-#: cinelerra/mwindow.C:4538
+#: cinelerra/mwindow.C:4553
 msgid "remove assets"
 msgstr "eliminar clips"
 
 msgid "remove assets"
 msgstr "eliminar clips"
 
-#: cinelerra/mwindow.C:4763
+#: cinelerra/mwindow.C:4788
 #, c-format
 msgid "Using %s"
 msgstr "Utilizando %s"
 
 #, c-format
 msgid "Using %s"
 msgstr "Utilizando %s"
 
-#: cinelerra/mwindow.C:4893 cinelerra/mwindowedit.C:193
+#: cinelerra/mwindow.C:4918 cinelerra/mwindowedit.C:193
 #: cinelerra/mwindowedit.C:240 cinelerra/preferencesthread.C:288
 msgid ""
 "This project's dimensions are not multiples of 4 so\n"
 #: cinelerra/mwindowedit.C:240 cinelerra/preferencesthread.C:288
 msgid ""
 "This project's dimensions are not multiples of 4 so\n"
@@ -7387,7 +7387,7 @@ msgstr ""
 "Las dimensiones de este proyecto no son múltiplos de 4 por lo\n"
 " cual no puede ser renderizado con OpenGL."
 
 "Las dimensiones de este proyecto no son múltiplos de 4 por lo\n"
 " cual no puede ser renderizado con OpenGL."
 
-#: cinelerra/mwindow.C:5010
+#: cinelerra/mwindow.C:5035
 msgid "select asset"
 msgstr "selecionar clip"
 
 msgid "select asset"
 msgstr "selecionar clip"
 
@@ -8118,7 +8118,7 @@ msgstr "Cinelerra: Visor"
 msgid "Cinelerra: Warning"
 msgstr "Cinelerra: Advertencia"
 
 msgid "Cinelerra: Warning"
 msgstr "Cinelerra: Advertencia"
 
-#: cinelerra/new.C:119 cinelerra/vtrack.C:114
+#: cinelerra/new.C:119 cinelerra/vtrack.C:115
 #, c-format
 msgid "Video %d"
 msgstr "Vídeo %d"
 #, c-format
 msgid "Video %d"
 msgstr "Vídeo %d"
@@ -8221,64 +8221,68 @@ msgstr "Intercambiar dimensiones"
 msgid "Render file per label and no labels\n"
 msgstr "Procesar archivo por etiqueta y sin etiquetas\n"
 
 msgid "Render file per label and no labels\n"
 msgstr "Procesar archivo por etiqueta y sin etiquetas\n"
 
-#: cinelerra/patchgui.C:317
+#: cinelerra/patchgui.C:322
 msgid "Play track"
 msgstr ""
 "Silenciar pista\n"
 "AFECTA AL RENDER"
 
 msgid "Play track"
 msgstr ""
 "Silenciar pista\n"
 "AFECTA AL RENDER"
 
-#: cinelerra/patchgui.C:342
+#: cinelerra/patchgui.C:347
 msgid "play patch"
 msgstr "reproducir parte"
 
 msgid "play patch"
 msgstr "reproducir parte"
 
-#: cinelerra/patchgui.C:370
+#: cinelerra/patchgui.C:375
 msgid "Arm track"
 msgstr ""
 "Bloquear/Desbloquear edición de la pista (TAB)\n"
 "Click con Mayúsculas bloquea/desbloquea las demás (Mayús-TAB)"
 
 msgid "Arm track"
 msgstr ""
 "Bloquear/Desbloquear edición de la pista (TAB)\n"
 "Click con Mayúsculas bloquea/desbloquea las demás (Mayús-TAB)"
 
-#: cinelerra/patchgui.C:400
+#: cinelerra/patchgui.C:405
 msgid "record patch"
 msgstr "parchear la grabación"
 
 msgid "record patch"
 msgstr "parchear la grabación"
 
-#: cinelerra/patchgui.C:427
+#: cinelerra/patchgui.C:432
 msgid "Gang faders"
 msgstr ""
 "Encadena el cambio de valores cuando se hace uso del deslizador\n"
 "Este cambio afectará a todas las pistas activas que tengan este icono activado\n"
 "Muy útil para cambiar la ganancia de las pistas de audio de manera simultánea"
 
 msgid "Gang faders"
 msgstr ""
 "Encadena el cambio de valores cuando se hace uso del deslizador\n"
 "Este cambio afectará a todas las pistas activas que tengan este icono activado\n"
 "Muy útil para cambiar la ganancia de las pistas de audio de manera simultánea"
 
-#: cinelerra/patchgui.C:452
+#: cinelerra/patchgui.C:457
 msgid "gang patch"
 msgstr "junta parte"
 
 msgid "gang patch"
 msgstr "junta parte"
 
-#: cinelerra/patchgui.C:479
+#: cinelerra/patchgui.C:484
 msgid "Draw media"
 msgstr "Ver/ocultar miniaturas"
 
 msgid "Draw media"
 msgstr "Ver/ocultar miniaturas"
 
-#: cinelerra/patchgui.C:504
+#: cinelerra/patchgui.C:509
 msgid "draw patch"
 msgstr "dibujar parte"
 
 msgid "draw patch"
 msgstr "dibujar parte"
 
-#: cinelerra/patchgui.C:530
+#: cinelerra/patchgui.C:535
 msgid "Don't send to output"
 msgstr ""
 "Silenciar pista, se puede animar\n"
 "AFECTA AL RENDER"
 
 msgid "Don't send to output"
 msgstr ""
 "Silenciar pista, se puede animar\n"
 "AFECTA AL RENDER"
 
-#: cinelerra/patchgui.C:570
+#: cinelerra/patchgui.C:575
 msgid "mute patch"
 msgstr "silenciar parte"
 
 msgid "mute patch"
 msgstr "silenciar parte"
 
-#: cinelerra/patchgui.C:616
+#: cinelerra/patchgui.C:587
+msgid "Track Data Height"
+msgstr "Altura de la pista"
+
+#: cinelerra/patchgui.C:646
 msgid "expand patch"
 msgstr "ampliar parte"
 
 msgid "expand patch"
 msgstr "ampliar parte"
 
-#: cinelerra/patchgui.C:643 cinelerra/patchgui.C:647
+#: cinelerra/patchgui.C:673 cinelerra/patchgui.C:677
 msgid "track title"
 msgstr "título de la pista"
 
 msgid "track title"
 msgstr "título de la pista"
 
-#: cinelerra/patchgui.C:676 cinelerra/patchgui.C:682
+#: cinelerra/patchgui.C:706 cinelerra/patchgui.C:712
 msgid "nudge."
 msgstr "empujar."
 
 msgid "nudge."
 msgstr "empujar."
 
@@ -8536,7 +8540,7 @@ msgstr "plugin compartido"
 msgid "shared module"
 msgstr "modulo compartido"
 
 msgid "shared module"
 msgstr "modulo compartido"
 
-#: cinelerra/pluginclient.C:1079 cinelerra/pluginclient.C:1090
+#: cinelerra/pluginclient.C:1084 cinelerra/pluginclient.C:1095
 msgid "tweek"
 msgstr "tweek"
 
 msgid "tweek"
 msgstr "tweek"
 
@@ -9433,7 +9437,7 @@ msgstr "Tamaño:"
 msgid "x"
 msgstr "x"
 
 msgid "x"
 msgstr "x"
 
-#: cinelerra/resourcepixmap.C:461
+#: cinelerra/resourcepixmap.C:457
 #, c-format
 msgid "ResourcePixmap::draw_audio_source: failed to check out %s for drawing.\n"
 msgstr "ResourcePixmap::draw_audio_source: no se pudo verificar %s para dibujar.\n"
 #, c-format
 msgid "ResourcePixmap::draw_audio_source: failed to check out %s for drawing.\n"
 msgstr "ResourcePixmap::draw_audio_source: no se pudo verificar %s para dibujar.\n"
@@ -9518,40 +9522,44 @@ msgstr "Scalar datos"
 msgid ": Scopes"
 msgstr ": Vectorscopio"
 
 msgid ": Scopes"
 msgstr ": Vectorscopio"
 
-#: cinelerra/scopewindow.C:1245
+#: cinelerra/scopewindow.C:1247
 msgid "Scopes"
 msgstr "Escopio"
 
 msgid "Scopes"
 msgstr "Escopio"
 
-#: cinelerra/scopewindow.C:1255
+#: cinelerra/scopewindow.C:1257
 msgid "Histogram RGB"
 msgstr "Histograma RGB"
 
 msgid "Histogram RGB"
 msgstr "Histograma RGB"
 
-#: cinelerra/scopewindow.C:1258 plugins/audioscope/audioscope.C:311
+#: cinelerra/scopewindow.C:1260 plugins/audioscope/audioscope.C:311
 #: plugins/piano/piano.C:528 plugins/synthesizer/synthesizer.C:562
 msgid "Waveform"
 msgstr "Forma de onda"
 
 #: plugins/piano/piano.C:528 plugins/synthesizer/synthesizer.C:562
 msgid "Waveform"
 msgstr "Forma de onda"
 
-#: cinelerra/scopewindow.C:1260
+#: cinelerra/scopewindow.C:1262
 msgid "Waveform RGB"
 msgstr "Forma de onda RGB"
 
 msgid "Waveform RGB"
 msgstr "Forma de onda RGB"
 
-#: cinelerra/scopewindow.C:1262
+#: cinelerra/scopewindow.C:1264
 msgid "Waveform ply"
 msgstr "Forma de onda ply"
 
 msgid "Waveform ply"
 msgstr "Forma de onda ply"
 
-#: cinelerra/scopewindow.C:1265
+#: cinelerra/scopewindow.C:1267
 msgid "Vectorscope"
 msgstr "Vectorscopio"
 
 msgid "Vectorscope"
 msgstr "Vectorscopio"
 
-#: cinelerra/scopewindow.C:1267
+#: cinelerra/scopewindow.C:1269
 msgid "VectorWheel"
 msgstr "RuedaCromática"
 
 msgid "VectorWheel"
 msgstr "RuedaCromática"
 
-#: cinelerra/scopewindow.C:1322
+#: cinelerra/scopewindow.C:1330
 msgid "Refresh on Stop"
 msgstr "Refrescar al parar"
 
 msgid "Refresh on Stop"
 msgstr "Refrescar al parar"
 
-#: cinelerra/scopewindow.C:1325
+#: cinelerra/scopewindow.C:1332
+msgid "Refresh on Release"
+msgstr "Refrescar al actualizar"
+
+#: cinelerra/scopewindow.C:1336
 msgid "-VectorWheel Grids-"
 msgstr "-Rejilla de la RuedaCromática-"
 
 msgid "-VectorWheel Grids-"
 msgstr "-Rejilla de la RuedaCromática-"
 
@@ -9632,7 +9640,7 @@ msgstr "Bienvenidos en Cinelerra."
 msgid "Cancel operation"
 msgstr "Cancelar la operación"
 
 msgid "Cancel operation"
 msgstr "Cancelar la operación"
 
-#: cinelerra/strack.C:54
+#: cinelerra/strack.C:55
 #, c-format
 msgid "Subttl %d"
 msgstr "Subttl %d"
 #, c-format
 msgid "Subttl %d"
 msgstr "Subttl %d"
@@ -9655,7 +9663,7 @@ msgstr "Tamaño del archivo:"
 
 #: cinelerra/swindow.C:159
 msgid "Entries:"
 
 #: cinelerra/swindow.C:159
 msgid "Entries:"
-msgstr "Entradas:"
+msgstr "Secciones:"
 
 #: cinelerra/swindow.C:164
 msgid "Lines:"
 
 #: cinelerra/swindow.C:164
 msgid "Lines:"
@@ -9667,11 +9675,11 @@ msgstr "Textos:"
 
 #: cinelerra/swindow.C:185
 msgid "Script Text:"
 
 #: cinelerra/swindow.C:185
 msgid "Script Text:"
-msgstr "Guión de texto:"
+msgstr "Texto del archivo seleccionado:"
 
 #: cinelerra/swindow.C:187 cinelerra/swindow.C:193
 msgid "Line Text:"
 
 #: cinelerra/swindow.C:187 cinelerra/swindow.C:193
 msgid "Line Text:"
-msgstr "Líneas de texto:"
+msgstr "Línea activa de texto:"
 
 #: cinelerra/swindow.C:207
 msgid ""
 
 #: cinelerra/swindow.C:207
 msgid ""
@@ -9690,20 +9698,27 @@ msgid ""
 "*  Entry 2\n"
 "This is the second entry.\n"
 msgstr ""
 "*  Entry 2\n"
 "This is the second entry.\n"
 msgstr ""
-"Agregar subtítulos: rápido \"Cómo... \" (= o * indica comentario)\n"
-"* 2345678901234567890123456789012345678901234567890123456789\n"
-"Para los subtítulos de DVD normales, coloque el \"script\" en un archivo de texto. Las líneas pueden tener cualquier longitud, pero se dividirán para ajustarse según algunos criterios a continuación.\n"
-"El texto en ejecución utilizado como líneas de \"script\" se dividirá en líneas múltiples.\n"
-"La longitud de la línea objetivo es de 60 caracteres.\n"
-"La puntuación se puede marcar para crear un salto de línea temprano.\n"
-"El retorno de carro único finaliza una línea de script individual.\n"
-"El retorno de carro doble indica el final de una entrada.\n"
-"Se elimina el espacio en blanco al principio o al final de la línea.\n"
-"Puede editar la línea activa en el cuadro Texto de línea.\n"
+"Agregar subtítulos: Algunos consejos\n"
+"(= o * al inicio de una línea indica que es un comentario)\n"
+"=Esto es un comentario y no actua como texto de subtítulos\n"
+"*A CONTINUACIÓN LA REFERENCIA DE LONGITUD MÁXIMA DE LÍNEA \n"
+"*2345678901234567890123456789012345678901234567890123456789\n"
+"Para los subtítulos de DVD normales, coloque el guión (los textos) en un archivo de texto plano. Las líneas pueden tener cualquier longitud, pero se dividirán para ajustarse de acuerdo con algunos criterios que vemos a continuación.\n"
+"Cargue el archivo de texto en el asistente.\n"
+"Las líneas largas provenientes del archivo de texto se dividirán en varias.\n"
+"La longitud máxima de una línea de texto es de 60 caracteres.\n"
+"Las comas y puntos de una línea de texto larga preferiblemente serán usados para los saltos de línea.\n"
+"Podemos hacer los saltos de línea desde el editor de texto en los puntos deseados.\n"
+"Un doble salto de línea o una línea en blanco indica el final de una sección.\n"
+"Los espacios en blanco al principio o final de línea se eliminan de manera automática.\n"
+"Puede editar la línea activa en el siguiente cuadro Texto.\n"
+"\n"
+"== Una nueva sección está aquí con fines ilustrativos.\n"
+"* Sección 2\n"
+"Aquí van los textos de la segunda sección\n"
+"Podemos crear las líneas y secciones que deseemos.\n"
+"Cuando hayas finalizado la creación de subtítulos simplemente pulsa el botón \"Guardar\".\n"
 "\n"
 "\n"
-"== Una nueva entrada está aquí con fines ilustrativos.\n"
-"* Entrada 2\n"
-"Esta es la segunda entrada.\n"
 
 #: cinelerra/swindow.C:239
 msgid ": Subtitle"
 
 #: cinelerra/swindow.C:239
 msgid ": Subtitle"
@@ -9805,11 +9820,11 @@ msgstr "Siguiente"
 msgid "Previous tip"
 msgstr "Anterior"
 
 msgid "Previous tip"
 msgstr "Anterior"
 
-#: cinelerra/trackcanvas.C:4656
+#: cinelerra/trackcanvas.C:4643
 msgid "keyframe"
 msgstr "fotograma clave"
 
 msgid "keyframe"
 msgstr "fotograma clave"
 
-#: cinelerra/trackcanvas.C:4864
+#: cinelerra/trackcanvas.C:4851
 msgid "hard_edge"
 msgstr "borde_duro"
 
 msgid "hard_edge"
 msgstr "borde_duro"
 
@@ -9850,7 +9865,7 @@ msgid "Bar Color..."
 msgstr "Color de Barra..."
 
 #: cinelerra/trackpopup.C:433 cinelerra/trackpopup.C:460
 msgstr "Color de Barra..."
 
 #: cinelerra/trackpopup.C:433 cinelerra/trackpopup.C:460
-#: plugins/echocancel/echocancel.C:212 plugins/perspective/perspective.C:607
+#: plugins/echocancel/echocancel.C:212 plugins/perspective/perspective.C:624
 msgid "default"
 msgstr "default"
 
 msgid "default"
 msgstr "default"
 
@@ -10142,63 +10157,67 @@ msgstr ": Advertencia"
 msgid "Don't show this warning again."
 msgstr "No mostrar esta advertencia."
 
 msgid "Don't show this warning again."
 msgstr "No mostrar esta advertencia."
 
-#: cinelerra/zoombar.C:71
+#: cinelerra/zoombar.C:72
 msgid "Duration visible in the timeline"
 msgstr "Duración visible en la línea de tiempo"
 
 msgid "Duration visible in the timeline"
 msgstr "Duración visible en la línea de tiempo"
 
-#: cinelerra/zoombar.C:75
+#: cinelerra/zoombar.C:76
 msgid "Audio waveform scale"
 msgstr "Escala de la forma de onda de audio"
 
 msgid "Audio waveform scale"
 msgstr "Escala de la forma de onda de audio"
 
-#: cinelerra/zoombar.C:79
-msgid "Height of tracks in the timeline"
-msgstr "Altura de las pistas en la línea de tiempo"
+#: cinelerra/zoombar.C:80
+msgid "Height of audio tracks"
+msgstr "Altura de las pistas de audio"
+
+#: cinelerra/zoombar.C:84
+msgid "Height of video tracks"
+msgstr "Altura de las pistas de video"
 
 
-#: cinelerra/zoombar.C:251
+#: cinelerra/zoombar.C:252
 msgid "Title Alpha"
 msgstr "Título Alfa"
 
 msgid "Title Alpha"
 msgstr "Título Alfa"
 
-#: cinelerra/zoombar.C:418
+#: cinelerra/zoombar.C:430
 msgid "Automation range maximum"
 msgstr "Valor máximo de automatización"
 
 msgid "Automation range maximum"
 msgstr "Valor máximo de automatización"
 
-#: cinelerra/zoombar.C:420
+#: cinelerra/zoombar.C:432
 msgid "Automation range minimum"
 msgstr "Valor minimo de automatización"
 
 msgid "Automation range minimum"
 msgstr "Valor minimo de automatización"
 
-#: cinelerra/zoombar.C:453
+#: cinelerra/zoombar.C:465
 msgid "Automation Type"
 msgstr "Tipo de automatización"
 
 msgid "Automation Type"
 msgstr "Tipo de automatización"
 
-#: cinelerra/zoombar.C:469
+#: cinelerra/zoombar.C:481
 msgid "Audio Fade:"
 msgstr "Fundido de Audio:"
 
 msgid "Audio Fade:"
 msgstr "Fundido de Audio:"
 
-#: cinelerra/zoombar.C:470
+#: cinelerra/zoombar.C:482
 msgid "Video Fade:"
 msgstr "Fundido de Vídeo:"
 
 msgid "Video Fade:"
 msgstr "Fundido de Vídeo:"
 
-#: cinelerra/zoombar.C:471
+#: cinelerra/zoombar.C:483
 msgid "Zoom:"
 msgstr "Zoom:"
 
 msgid "Zoom:"
 msgstr "Zoom:"
 
-#: cinelerra/zoombar.C:472 plugins/titler/titlerwindow.C:344
+#: cinelerra/zoombar.C:484 plugins/titler/titlerwindow.C:344
 msgid "Speed:"
 msgstr "Velocidad:"
 
 msgid "Speed:"
 msgstr "Velocidad:"
 
-#: cinelerra/zoombar.C:517
+#: cinelerra/zoombar.C:529
 msgid "Automation range"
 msgstr "Rango de automatización"
 
 msgid "Automation range"
 msgstr "Rango de automatización"
 
-#: cinelerra/zoombar.C:577
+#: cinelerra/zoombar.C:589
 msgid "Selection start time"
 msgstr "Seleccionar el tiempo de inicio"
 
 msgid "Selection start time"
 msgstr "Seleccionar el tiempo de inicio"
 
-#: cinelerra/zoombar.C:613
+#: cinelerra/zoombar.C:625
 msgid "Selection length"
 msgstr "Seleccionar longitud"
 
 msgid "Selection length"
 msgstr "Seleccionar longitud"
 
-#: cinelerra/zoombar.C:647
+#: cinelerra/zoombar.C:659
 msgid "Selection end time"
 msgstr "Seleccionar el tiempo final"
 
 msgid "Selection end time"
 msgstr "Seleccionar el tiempo final"
 
@@ -10478,14 +10497,15 @@ msgid "Position & Size"
 msgstr "Posición y Tamaño"
 
 #: plugins/boxblur/boxblur.C:463 plugins/crikey/crikeywindow.C:150
 msgstr "Posición y Tamaño"
 
 #: plugins/boxblur/boxblur.C:463 plugins/crikey/crikeywindow.C:150
-#: plugins/radialblur/radialblur.C:150 plugins/sketcher/sketcherwindow.C:448
-#: plugins/titler/titlerwindow.C:290 plugins/titler/titlerwindow.C:294
-#: plugins/tracer/tracerwindow.C:114 plugins/zoomblur/zoomblur.C:148
+#: plugins/perspective/perspective.C:139 plugins/radialblur/radialblur.C:150
+#: plugins/sketcher/sketcherwindow.C:448 plugins/titler/titlerwindow.C:290
+#: plugins/titler/titlerwindow.C:294 plugins/tracer/tracerwindow.C:114
+#: plugins/zoomblur/zoomblur.C:148
 msgid "X:"
 msgstr "X:"
 
 #: plugins/boxblur/boxblur.C:470 plugins/crikey/crikeywindow.C:159
 msgid "X:"
 msgstr "X:"
 
 #: plugins/boxblur/boxblur.C:470 plugins/crikey/crikeywindow.C:159
-#: plugins/perspective/perspective.C:137 plugins/radialblur/radialblur.C:157
+#: plugins/perspective/perspective.C:145 plugins/radialblur/radialblur.C:157
 #: plugins/sketcher/sketcherwindow.C:465 plugins/titler/titlerwindow.C:291
 #: plugins/titler/titlerwindow.C:299 plugins/tracer/tracerwindow.C:124
 #: plugins/yuv/yuv.C:264 plugins/yuv/yuvwindow.C:43
 #: plugins/sketcher/sketcherwindow.C:465 plugins/titler/titlerwindow.C:291
 #: plugins/titler/titlerwindow.C:299 plugins/tracer/tracerwindow.C:124
 #: plugins/yuv/yuv.C:264 plugins/yuv/yuvwindow.C:43
@@ -12124,7 +12144,7 @@ msgstr "Estirar Rectilineo"
 msgid "Rectilinear Shrink"
 msgstr "Encoger Rectilíneo"
 
 msgid "Rectilinear Shrink"
 msgstr "Encoger Rectilíneo"
 
-#: plugins/lens/lens.C:396 plugins/perspective/perspective.C:608
+#: plugins/lens/lens.C:396 plugins/perspective/perspective.C:625
 msgid "Nearest"
 msgstr "Mas cercano"
 
 msgid "Nearest"
 msgstr "Mas cercano"
 
@@ -12729,47 +12749,47 @@ msgstr "Ventana:"
 msgid "EQ Parametric"
 msgstr "EQ paramétrico"
 
 msgid "EQ Parametric"
 msgstr "EQ paramétrico"
 
-#: plugins/perspective/perspective.C:131
-msgid "Current X:"
-msgstr "Actual:"
+#: plugins/perspective/perspective.C:133
+msgid "Current"
+msgstr "Actual:"
 
 
-#: plugins/perspective/perspective.C:144 plugins/perspective/perspective.C:662
+#: plugins/perspective/perspective.C:152 plugins/perspective/perspective.C:679
 msgid "Perspective"
 msgstr "Perspectiva"
 
 msgid "Perspective"
 msgstr "Perspectiva"
 
-#: plugins/perspective/perspective.C:147
+#: plugins/perspective/perspective.C:155
 msgid "Sheer"
 msgstr "Malla"
 
 msgid "Sheer"
 msgstr "Malla"
 
-#: plugins/perspective/perspective.C:153 plugins/reframert/reframert.C:222
+#: plugins/perspective/perspective.C:161 plugins/reframert/reframert.C:222
 msgid "Stretch"
 msgstr "Estirar"
 
 msgid "Stretch"
 msgstr "Estirar"
 
-#: plugins/perspective/perspective.C:160
+#: plugins/perspective/perspective.C:167
 msgid "Zoom view:"
 msgstr "Vista Zoom:"
 
 msgid "Zoom view:"
 msgstr "Vista Zoom:"
 
-#: plugins/perspective/perspective.C:165
+#: plugins/perspective/perspective.C:173
 msgid "Perspective direction:"
 msgstr "Dirección perspectiva:"
 
 msgid "Perspective direction:"
 msgstr "Dirección perspectiva:"
 
-#: plugins/perspective/perspective.C:168
+#: plugins/perspective/perspective.C:176
 msgid "Forward"
 msgstr "Normal"
 
 msgid "Forward"
 msgstr "Normal"
 
-#: plugins/perspective/perspective.C:171
+#: plugins/perspective/perspective.C:179
 msgid "Reverse"
 msgstr "Invertido"
 
 msgid "Reverse"
 msgstr "Invertido"
 
-#: plugins/perspective/perspective.C:173
+#: plugins/perspective/perspective.C:181
 msgid "Alt/Shift:"
 msgstr "Alt / Mayús:"
 
 msgid "Alt/Shift:"
 msgstr "Alt / Mayús:"
 
-#: plugins/perspective/perspective.C:174
+#: plugins/perspective/perspective.C:182
 msgid "Button1 Action:"
 msgstr "+ Acción con ratón:"
 
 msgid "Button1 Action:"
 msgstr "+ Acción con ratón:"
 
-#: plugins/perspective/perspective.C:182
+#: plugins/perspective/perspective.C:190
 msgid ""
 "Translate endpoint\n"
 "Zoom image\n"
 msgid ""
 "Translate endpoint\n"
 "Zoom image\n"
@@ -12781,7 +12801,7 @@ msgstr ""
 "Mover forma\n"
 "Mover vista"
 
 "Mover forma\n"
 "Mover vista"
 
-#: plugins/perspective/perspective.C:610
+#: plugins/perspective/perspective.C:627
 msgid "Cubic"
 msgstr "Cúbico"
 
 msgid "Cubic"
 msgstr "Cúbico"
 
@@ -14009,7 +14029,7 @@ msgstr "Revisión diente de sierra"
 msgid "Unsharp"
 msgstr "Enfocar"
 
 msgid "Unsharp"
 msgstr "Enfocar"
 
-#: plugins/videoscope/videoscope.C:166
+#: plugins/videoscope/videoscope.C:167
 msgid "VideoScope"
 msgstr "VídeoEscopio"
 
 msgid "VideoScope"
 msgstr "VídeoEscopio"
 
@@ -14133,10 +14153,7 @@ msgstr "Y Ampliación:"
 msgid "Zoom Blur"
 msgstr "Desenfoque Zoom"
 
 msgid "Zoom Blur"
 msgstr "Desenfoque Zoom"
 
-#:
-msgid "Height of audio tracks"
-msgstr "Altura de las pistas de audio"
-msgid "Height of video tracks"
-msgstr "Altura de las pistas de vídeo"
-msgid "Track Data Height"
-msgstr "Altura de la pista"
+msgid "Master Track"
+msgstr "Pista Maestra"
+msgid "Gang Tracks"
+msgstr "Grupo de Pistas"
index 02bb8f6e29d7ffe0a136d1115f05cc222020f96a..0192a6ce3ad1f316a9c2a39471cd3783fb86b3b7 100644 (file)
@@ -456,7 +456,7 @@ msgstr "Espace de couleur YUV :"
 
 #: cinelerra/appearanceprefs.C:178
 msgid "YUV color range:"
 
 #: cinelerra/appearanceprefs.C:178
 msgid "YUV color range:"
-msgstr "Plage de couleur YUV"
+msgstr "Plage de couleur YUV :"
 
 #: cinelerra/appearanceprefs.C:416
 msgid "Use thumbnails in resource window"
 
 #: cinelerra/appearanceprefs.C:416
 msgid "Use thumbnails in resource window"
index 7f1ed4a9273c335675a644fa2462a937208246bc..cc7cdf6096e0e36dd0cb659b91d8da78d02a9720 100644 (file)
@@ -521,7 +521,7 @@ msgstr "Деактивировать текст. поле щелчком мыш
 
 #: cinelerra/appearanceprefs.C:666
 msgid "Always show next frame"
 
 #: cinelerra/appearanceprefs.C:666
 msgid "Always show next frame"
-msgstr "Показывать всегда кадр, что впереди (справа от) курсора."
+msgstr "Показывать всегда кадр,\nчто впереди (справа от) курсора."
 
 #: cinelerra/appearanceprefs.C:679
 msgid "Autocolor assets"
 
 #: cinelerra/appearanceprefs.C:679
 msgid "Autocolor assets"