add_menu(trackmenu = new BC_Menu(_("Tracks")));
trackmenu->add_item(new MoveTracksUp(mwindow));
trackmenu->add_item(new MoveTracksDown(mwindow));
+ trackmenu->add_item(new RollTracksUp(mwindow));
+ trackmenu->add_item(new RollTracksDown(mwindow));
trackmenu->add_item(new DeleteTracks(mwindow));
trackmenu->add_item(new DeleteFirstTrack(mwindow));
trackmenu->add_item(new DeleteLastTrack(mwindow));
trackmenu->add_item(new ConcatenateTracks(mwindow));
trackmenu->add_item(new AlignTimecodes(mwindow));
- trackmenu->add_item(new SwapTracksUp(mwindow));
- trackmenu->add_item(new SwapTracksDown(mwindow));
AppendTracks *append_tracks;
trackmenu->add_item(append_tracks = new AppendTracks(mwindow));
append_tracks->create_objects();
MoveTracksDown::MoveTracksDown(MWindow *mwindow)
: BC_MenuItem(_("Move tracks down"), _("Shift-Down"), DOWN)
{
- set_shift(); this->mwindow = mwindow;
+ this->mwindow = mwindow;
+ set_shift();
}
int MoveTracksDown::handle_event()
}
-SwapTracksUp::SwapTracksUp(MWindow *mwindow)
- : BC_MenuItem(_("Swap tracks up"), 0, UP)
+RollTracksUp::RollTracksUp(MWindow *mwindow)
+ : BC_MenuItem(_("Roll tracks up"), _("Ctrl-Shift-Up"), UP)
{
this->mwindow = mwindow;
+ set_ctrl();
set_shift();
}
-int SwapTracksUp::handle_event()
+int RollTracksUp::handle_event()
{
if( mwindow->session->current_operation == NO_OPERATION )
- mwindow->swap_tracks_up();
+ mwindow->roll_tracks_up();
return 1;
}
-SwapTracksDown::SwapTracksDown(MWindow *mwindow)
- : BC_MenuItem(_("Swap tracks down"), 0, DOWN)
+RollTracksDown::RollTracksDown(MWindow *mwindow)
+ : BC_MenuItem(_("Roll tracks down"), _("Ctrl-Shift-Down"), DOWN)
{
- set_shift(); this->mwindow = mwindow;
+ this->mwindow = mwindow;
+ set_ctrl();
+ set_shift();
}
-int SwapTracksDown::handle_event()
+int RollTracksDown::handle_event()
{
if( mwindow->session->current_operation == NO_OPERATION )
- mwindow->swap_tracks_down();
+ mwindow->roll_tracks_down();
return 1;
}
// ========================================== settings
-class MoveTracksUp : public BC_MenuItem
+class RollTracksUp : public BC_MenuItem
{
public:
- MoveTracksUp(MWindow *mwindow);
+ RollTracksUp(MWindow *mwindow);
int handle_event();
MWindow *mwindow;
};
-class MoveTracksDown : public BC_MenuItem
+class RollTracksDown : public BC_MenuItem
{
public:
- MoveTracksDown(MWindow *mwindow);
+ RollTracksDown(MWindow *mwindow);
int handle_event();
MWindow *mwindow;
};
-class SwapTracksUp : public BC_MenuItem
+class MoveTracksUp : public BC_MenuItem
{
public:
- SwapTracksUp(MWindow *mwindow);
+ MoveTracksUp(MWindow *mwindow);
int handle_event();
MWindow *mwindow;
};
-class SwapTracksDown : public BC_MenuItem
+class MoveTracksDown : public BC_MenuItem
{
public:
- SwapTracksDown(MWindow *mwindow);
+ MoveTracksDown(MWindow *mwindow);
int handle_event();
MWindow *mwindow;
};
class DefaultVTransition;
class AddSubttlTrack;
class PasteSubttl;
-class MoveTracksUp;
-class MoveTracksDown;
+class RollTracksUp;
+class RollTracksDown;
class DeleteTracks;
class ConcatenateTracks;
class DeleteFirstTrack;
void move_effect(Plugin *plugin, PluginSet *plugin_set, int64_t position);
void move_plugins_up(PluginSet *plugin_set);
void move_plugins_down(PluginSet *plugin_set);
+ void roll_track_down(Track *track);
+ void roll_tracks_down();
+ void roll_track_up(Track *track);
+ void roll_tracks_up();
void move_track_down(Track *track);
void move_tracks_down();
void move_track_up(Track *track);
void move_tracks_up();
- void swap_track_down(Track *track);
- void swap_tracks_down();
- void swap_track_up(Track *track);
- void swap_tracks_up();
void mute_selection();
void new_folder(const char *new_folder, int is_clips);
void delete_folder(char *folder);
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);
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);
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();
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();
}
-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);
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);
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();
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();
add_item(new TrackAttachEffect(mwindow, this));
add_item(new TrackMoveUp(mwindow, this));
add_item(new TrackMoveDown(mwindow, this));
+ add_item(new TrackRollUp(mwindow, this));
+ add_item(new TrackRollDown(mwindow, this));
add_item(new TrackPopupDeleteTrack(mwindow, this));
add_item(new TrackPopupAddTrack(mwindow, this));
add_item(new TrackPopupFindAsset(mwindow, this));
add_item(new TrackPopupShow(mwindow, this));
add_item(new TrackPopupUserTitle(mwindow, this));
add_item(new TrackPopupTitleColor(mwindow, this));
- add_item(new TrackSwapUp(mwindow, this));
- add_item(new TrackSwapDown(mwindow, this));
resize_option = 0;
matchsize_option = 0;
}
}
-TrackSwapUp::TrackSwapUp(MWindow *mwindow, TrackPopup *popup)
- : BC_MenuItem(_("Swap up"))
+TrackRollUp::TrackRollUp(MWindow *mwindow, TrackPopup *popup)
+ : BC_MenuItem(_("Roll up"))
{
this->mwindow = mwindow;
this->popup = popup;
}
-TrackSwapUp::~TrackSwapUp()
+TrackRollUp::~TrackRollUp()
{
}
-int TrackSwapUp::handle_event()
+int TrackRollUp::handle_event()
{
- mwindow->swap_track_up(popup->track);
+ mwindow->roll_track_up(popup->track);
return 1;
}
-TrackSwapDown::TrackSwapDown(MWindow *mwindow, TrackPopup *popup)
- : BC_MenuItem(_("Swap down"))
+TrackRollDown::TrackRollDown(MWindow *mwindow, TrackPopup *popup)
+ : BC_MenuItem(_("Roll down"))
{
this->mwindow = mwindow;
this->popup = popup;
}
-TrackSwapDown::~TrackSwapDown()
+TrackRollDown::~TrackRollDown()
{
}
-int TrackSwapDown::handle_event()
+int TrackRollDown::handle_event()
{
- mwindow->swap_track_down(popup->track);
+ mwindow->roll_track_down(popup->track);
return 1;
}
TrackPopup *popup;
};
-class TrackSwapUp : public BC_MenuItem
+class TrackRollUp : public BC_MenuItem
{
public:
- TrackSwapUp(MWindow *mwindow, TrackPopup *popup);
- ~TrackSwapUp();
+ TrackRollUp(MWindow *mwindow, TrackPopup *popup);
+ ~TrackRollUp();
int handle_event();
TrackPopup *popup;
};
-class TrackSwapDown : public BC_MenuItem
+class TrackRollDown : public BC_MenuItem
{
public:
- TrackSwapDown(MWindow *mwindow, TrackPopup *popup);
- ~TrackSwapDown();
+ TrackRollDown(MWindow *mwindow, TrackPopup *popup);
+ ~TrackRollDown();
int handle_event();
return 0;
}
-void Tracks::move_tracks(Track *src, Track *dst, int n)
+void Tracks::roll_tracks(Track *src, Track *dst, int n)
{
if( src == dst ) return;
while( --n >= 0 && src ) {
void equivalent_output(Tracks *tracks, double *result);
- void move_tracks(Track *src, Track *dst, int n);
+ void roll_tracks(Track *src, Track *dst, int n);
+ int roll_track_up(Track *track);
+ int roll_track_down(Track *track);
+ int roll_tracks_up();
+ int roll_tracks_down();
int move_track_up(Track *track);
int move_track_down(Track *track);
int move_tracks_up();
int move_tracks_down();
- int swap_track_up(Track *track);
- int swap_track_down(Track *track);
- int swap_tracks_up();
- int swap_tracks_down();
void paste_audio_transition(PluginServer *server);
void paste_video_transition(PluginServer *server, int first_track = 0);
-int Tracks::move_track_up(Track *track)
+int Tracks::roll_track_up(Track *track)
{
if( first == last ) return 1;
int n = 1;
while( dst && !dst->master ) { dst = dst->previous; }
}
if( src == dst ) return 1;
- move_tracks(src, dst, n);
+ roll_tracks(src, dst, n);
return 0;
}
-int Tracks::move_track_down(Track *track)
+int Tracks::roll_track_down(Track *track)
{
if( first == last ) return 1;
int n = 1;
else
dst = !dst ? first : dst->next;
if( src == dst ) return 1;
- move_tracks(src, dst, n);
+ roll_tracks(src, dst, n);
return 0;
}
-int Tracks::move_tracks_up()
+int Tracks::roll_tracks_up()
{
if( first == last ) return 1;
int n = 1;
while( nxt && !nxt->master ) { ++n; nxt = nxt->next; }
}
if( src == dst ) return 1;
- move_tracks(src, dst, n);
+ roll_tracks(src, dst, n);
return 0;
}
-int Tracks::move_tracks_down()
+int Tracks::roll_tracks_down()
{
if( first == last ) return 1;
int n = 1;
while( src && !src->master ) { ++n; src = src->previous; }
}
if( src == dst ) return 1;
- move_tracks(src, dst, n);
+ roll_tracks(src, dst, n);
return 0;
}
-int Tracks::swap_track_up(Track *track)
+int Tracks::move_track_up(Track *track)
{
Track *next_track = track->previous;
if(!next_track) next_track = last;
return 0;
}
-int Tracks::swap_track_down(Track *track)
+int Tracks::move_track_down(Track *track)
{
Track *next_track = track->next;
if(!next_track) next_track = first;
}
-int Tracks::swap_tracks_up()
+int Tracks::move_tracks_up()
{
int result = 0;
Track *next = first;
return result;
}
-int Tracks::swap_tracks_down()
+int Tracks::move_tracks_down()
{
int result = 0;
Track *prev = last;
<td height="26" align="left"><b><font face="Liberation Serif" size=4> Tracks</font></b></td>
<td align="left"><font face="Liberation Serif" size=4>Move tracks up</font></td>
<td align="left"><font face="Liberation Serif" size=4>'Shift-Up'</font></td>
- <td align="left"><font face="Liberation Serif" size=4>Circulate tracks up</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Swap tracks up</font></td>
</tr>
<tr>
<td height="26" align="left"><font face="Liberation Serif" size=4> Pulldown</font></td>
- <td align="left"><font face="Liberation Serif" size=4>Move trks down</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Move tracks dn</font></td>
<td align="left"><font face="Liberation Serif" size=4>'Shift-Down'</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Swap tracks down</font></td>
+ </tr>
+ <tr>
+ <td height="26" align="left"><b><font face="Liberation Serif" size=4> Tracks</font></b></td>
+ <td align="left"><font face="Liberation Serif" size=4>Roll tracks up</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>'Ctrl-Shift-Up'</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Circulate tracks up</font></td>
+ </tr>
+ <tr>
+ <td height="26" align="left"><font face="Liberation Serif" size=4> Pulldown</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Roll tracks dn</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>'Ctrl-Shift-Dn'</font></td>
<td align="left"><font face="Liberation Serif" size=4>Circulate tracks down</font></td>
</tr>
<tr>
<td align="left"><font face="Liberation Serif" size=4>Double click</font></td>
<td align="left"><font face="Liberation Serif" size=4>Between labels, highlights selection</font></td>
</tr>
+ <tr>
+ <td height="26" align="left"><font face="Liberation Serif" size=4><br></font></td>
+ <td align="left"><font face="Liberation Serif" size=4><br></font></td>
+ <td align="left"><font face="Liberation Serif" size=4><br></font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Over Automation Range values, changes value</font></td>
+ </tr>
<tr>
<td height="26" align="left"><font face="Liberation Serif" size=4><br></font></td>
<td align="left"><font face="Liberation Serif" size=4>Toggle single trk</font></td>
For usage help, refer to the following:
https://cinelerra-gg.org/download/CinelerraGG_Manual.pdf
http://g-raffa.eu/Cinelerra/HOWTO/basics.html
-Cinfinity icons selected in Preferences Sam (CC BY 3.0,
- https://creativecommons.org/licenses/by/3.0/)
-Cakewalk and Neophyte themes by Olaf Wolff (CC BY 4.0,
- https://creativecommons.org/licenses/by/4.0/)
.
+September 2020 New Features of note:
+ Motion plugin improvements by SGE for better results.
+ Camera and Projector menus now include easy range change.
+ Faster transition playing with cache + drag capable.
+ Histogram new feature of average frame calculation.
August 2020 New Features of note:
Bump Autos new feature; especially useful for speed.
Language preference now in Settings->Preferences.