+Track *Track::gang_master()
+{
+ if( edl->session->gang_tracks == GANG_NONE ) return this;
+ Track *track = this;
+ while( track && !track->master ) track = track->previous;
+ return !track ? tracks->first : track;
+}
+
+int Track::is_hidden()
+{
+ if( master ) return 0;
+ if( edl->session->gang_tracks == GANG_MEDIA ) return 1;
+ if( edl->session->gang_tracks == GANG_CHANNELS ) {
+ for( Track *track=previous; track; track=track->previous ) {
+ if( track->data_type == data_type ) return 1;
+ if( track->master ) return 0;
+ }
+ }
+ return 0;
+}
+int Track::is_armed()
+{
+ return gang_master()->armed;
+}
+int Track::is_ganged()
+{
+ return gang_master()->ganged;
+}
+
+int Track::armed_gang(Track *track)
+{
+ if( edl->session->gang_tracks == GANG_NONE ) return ganged;
+ Track *current = gang_master();
+ for(;;) {
+ if( track == current ) return 1;
+ current = current->next;
+ if( !current || current->master ) return 0;
+ }
+ return 1;
+}
+
+