5 using namespace Marklin;
8 Track *Selection::get_track() const
13 return *tracks.begin();
16 void Selection::clear()
19 signal_changed.emit();
22 void Selection::add_track(Track *t)
24 if(tracks.insert(t).second)
25 signal_changed.emit();
28 void Selection::remove_track(Track *t)
31 signal_changed.emit();
34 void Selection::toggle_track(Track *t)
39 signal_changed.emit();
42 void Selection::select_more()
44 set<Track *> new_tracks;
45 for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
47 const vector<Track *> &links=(*i)->get_links();
48 for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
50 new_tracks.insert(*j);
54 for(set<Track *>::iterator i=new_tracks.begin(); i!=new_tracks.end(); ++i)
55 if(tracks.insert(*i).second)
59 signal_changed.emit();
62 void Selection::select_linked()
65 list<Track *> queue(tracks.begin(), tracks.end());
68 Track *track=queue.front();
69 queue.erase(queue.begin());
71 const vector<Track *> &links=track->get_links();
72 for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
73 if(*j && tracks.insert(*j).second)
79 for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
81 const vector<Track *> &links=(*i)->get_links();
82 for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
83 if(*j && tracks.insert(*j).second)
88 signal_changed.emit();