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()
45 for(TrackSet::iterator i=tracks.begin(); i!=tracks.end(); ++i)
47 const Track::EndpointSeq &epl=(*i)->get_endpoints();
48 for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
50 new_tracks.insert(j->link);
54 for(TrackSet::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 TrackSeq queue(tracks.begin(), tracks.end());
68 Track *track=queue.front();
69 queue.erase(queue.begin());
71 const Track::EndpointSeq &epl=track->get_endpoints();
72 for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
73 if(j->link && tracks.insert(j->link).second)
75 queue.push_back(j->link);
79 for(TrackSet::iterator i=tracks.begin(); i!=tracks.end(); ++i)
81 const Track::EndpointSeq &epl=(*i)->get_endpoints();
82 for(Track::EndpointSeq::const_iterator j=epl.begin(); j!=epl.end(); ++j)
83 if(j->link && tracks.insert(j->link).second)
88 signal_changed.emit();