}
-
-
-void Tracks::get_affected_edits(ArrayList<Edit*> *drag_edits, double position, Track *start_track)
+void Tracks::clear_selected_edits()
{
- drag_edits->remove_all();
+ for( Track *track=first; track; track=track->next ) {
+ for( Edit *edit=track->edits->first; edit; edit=edit->next )
+ edit->is_selected = 0;
+ }
+}
- for(Track *track = start_track;
- track;
- track = track->next)
- {
-//printf("Tracks::get_affected_edits 1 %p %d %d\n", track, track->data_type, track->record);
- if(track->record)
- {
- for(Edit *edit = track->edits->first; edit; edit = edit->next)
- {
- double startproject = track->from_units(edit->startproject);
-//printf("Tracks::get_affected_edits 1 %d\n", edl->equivalent(startproject, position));
- if(edl->equivalent(startproject, position))
- {
- drag_edits->append(edit);
- break;
- }
+void Tracks::select_affected_edits(double position, Track *start_track, int sense)
+{
+ for( Track *track=start_track; track; track=track->next ) {
+ if( !track->record ) continue;
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( edit->silence() ) continue;
+ double startproject = track->from_units(edit->startproject);
+ if( edl->equivalent(startproject, position) ) {
+ edit->is_selected = sense >= 0 ? sense :
+ edit->is_selected ? 0 : 1;
+ break;
}
}
}
+}
+void Tracks::get_selected_edits(ArrayList<Edit*> *drag_edits)
+{
+ drag_edits->remove_all();
+ for( Track *track=first; track; track=track->next ) {
+ if( !track->record ) continue;
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( !edit->is_selected ) continue;
+ drag_edits->append(edit);
+ }
+ }
}
void Tracks::get_automation_extents(float *min,
Track *new_track = 0;
delete_all_tracks();
+ int solo_track_id = tracks->edl->local_session->solo_track_id;
+
for(Track *current = tracks->first; current; current = NEXT)
{
switch(current->data_type)
continue;
}
new_track->copy_from(current);
+
+ if( current->get_id() == solo_track_id )
+ edl->local_session->solo_track_id = new_track->get_id();
}
}
return current;
}
+Track* Tracks::get_track_by_id(int id)
+{
+ Track *track = edl->tracks->first;
+ while( track && track->get_id() != id ) track = track->next;
+ return track;
+}
int Tracks::total_playable_vtracks()
{
return 0;
}
+int Tracks::new_group(int id)
+{
+ int count = 0;
+ for( Track *track=first; track; track=track->next ) {
+ if( !track->record ) continue;
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( edit->group_id > 0 ) continue;
+ if( !edit->is_selected ) continue;
+ edit->group_id = id;
+ ++count;
+ }
+ }
+ return count;
+}
+
+int Tracks::set_group_selected(int id, int v)
+{
+ int count = 0;
+ for( Track *track=first; track; track=track->next ) {
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( edit->group_id != id ) continue;
+ edit->is_selected = v >= 0 ? v : !edit->is_selected ? 1 : 0;
+ ++count;
+ }
+ }
+ return count;
+}
+
+int Tracks::del_group(int id)
+{
+ int count = 0;
+ for( Track *track=first; track; track=track->next ) {
+ for( Edit *edit=track->edits->first; edit; edit=edit->next ) {
+ if( edit->group_id != id ) continue;
+ edit->is_selected = 1;
+ edit->group_id = 0;
+ ++count;
+ }
+ }
+ return count;
+}
Track *Tracks::get(int idx, int data_type)
{
return 0;
}
-