bool LabelDialog::TransferDataFromWindow() { int cnt = mData.size(); int i; TrackListIterator iter(mTracks); Track *t; int tndx = 0; // Clear all label tracks of labels for (t = iter.First(); t; t = iter.Next()) { if (t->GetKind() == Track::Label) { LabelTrack *lt = (LabelTrack *)t; tndx++; for (i = lt->GetNumLabels() - 1; i >= 0 ; i--) { lt->DeleteLabel(i); } } } // Create any added tracks while (tndx < (int)mTrackNames.GetCount() - 1) { // Extract the name wxString name = mTrackNames[tndx + 1].AfterFirst(wxT('-')).Mid(1); // Create the NEW track and add to track list auto newTrack = mFactory.NewLabelTrack(); newTrack->SetName(name); mTracks->Add(std::move(newTrack)); tndx++; } // Repopulate with updated labels for (i = 0; i < cnt; i++) { RowData &rd = mData[i]; // Look for track with matching index tndx = 1; for (t = iter.First(); t; t = iter.Next()) { if (t->GetKind() == Track::Label && rd.index == tndx++) { break; } } wxASSERT(t); if (!t) return false; // Add the label to it ((LabelTrack *) t)->AddLabel(rd.selectedRegion, rd.title); ((LabelTrack *) t)->Unselect(); } return true; }
bool LabelDialog::TransferDataFromWindow() { int cnt = mData.GetCount(); int i; TrackListIterator iter(mTracks); Track *t; int tndx = 0; // Clear all label tracks of labels for (t = iter.First(); t; t = iter.Next()) { if (t->GetKind() == Track::Label) { LabelTrack *lt = (LabelTrack *)t; tndx++; for (i = lt->GetNumLabels() - 1; i >= 0 ; i--) { lt->DeleteLabel(i); } } } // Create any added tracks while (tndx < (int)mTrackNames.GetCount() - 1) { // Extract the name wxString name = mTrackNames[tndx + 1].AfterFirst(wxT('-')).Mid(1); // Create the new track and add to track list LabelTrack *newTrack = new LabelTrack(mDirManager); newTrack->SetName(name); mTracks->Add(newTrack); tndx++; } // Repopulate with updated labels for (i = 0; i < cnt; i++) { RowData *rd = mData[i]; // Look for track with matching index tndx = 1; for (t = iter.First(); t; t = iter.Next()) { if (t->GetKind() == Track::Label && rd->index == tndx++) { break; } } // Add the label to it if (!rd->title.IsEmpty()) { ((LabelTrack *) t)->AddLabel(rd->stime, rd->etime, rd->title); ((LabelTrack *) t)->Unselect(); } } return true; }