void cutTrack(int tracknum, int blocknum, int windownum){ if (tracknum==-1 && blocknum==-1){ struct Tracker_Windows *window=getWindowFromNum(windownum);if(window==NULL) return; CB_CutTrack_CurrPos(window); } else { struct Tracker_Windows *window=NULL; struct WTracks *wtrack; struct WBlocks *wblock; wtrack=getWTrackFromNumA( windownum, &window, blocknum, &wblock, tracknum ); if(wtrack==NULL) return; cb_wtrack = CB_CutTrack(window, wblock, wtrack); window->must_redraw = true; } }
void DeleteTracks( struct Tracker_Windows *window, struct WBlocks *wblock, NInt tracknum, NInt todelete ) { NInt lokke; NInt num_tracks; struct Blocks *block=wblock->block; struct WTracks *wtrack; if(tracknum>=block->num_tracks+1 || tracknum<0) return; if(tracknum-todelete>=block->num_tracks){ todelete=block->num_tracks-tracknum; } PC_Pause(); if(block->num_tracks==1){ CB_CutTrack_CurrPos(window); goto exit; } num_tracks=block->num_tracks-todelete; fprintf(stderr,"delete track. Curr: %d, num_tracks: %d, todelete: %d\n",tracknum,num_tracks,todelete); for(lokke=tracknum ; lokke<num_tracks-1+todelete;lokke++){ wtrack=CB_CopyTrack( wblock, ListFindElement1(&wblock->wtracks->l,lokke+todelete) ); co_CB_PasteTrack( wblock, wtrack, ListFindElement1(&wblock->wtracks->l,lokke) ); } Block_Set_num_tracks(block,num_tracks); exit: PC_StopPause(NULL); }