+/* $Id$
+
+This file is part of R²C²
+Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Distributed under the GPL
+*/
+
#ifndef SELECTION_H_
#define SELECTION_H_
class Selection
{
public:
- typedef std::set<Marklin::Track *> TrackSet;
-
sigc::signal<void> signal_changed;
- const TrackSet &get_tracks() const { return tracks; }
- Marklin::Track *get_track() const;
+private:
+ std::set<R2C2::Track *> tracks;
+
+public:
+ const std::set<R2C2::Track *> &get_tracks() const { return tracks; }
+ R2C2::Track *get_track() const;
unsigned size() const { return tracks.size(); }
+
void clear();
- void add_track(Marklin::Track *);
- void remove_track(Marklin::Track *);
- void toggle_track(Marklin::Track *);
+
+ template<typename Iter>
+ void replace(Iter begin, Iter end)
+ {
+ tracks.clear();
+ tracks.insert(begin, end);
+ signal_changed.emit();
+ }
+
+ void add_track(R2C2::Track *);
+ void remove_track(R2C2::Track *);
+ void toggle_track(R2C2::Track *);
+
void select_more();
void select_linked();
-private:
- TrackSet tracks;
+ void select_blocks();
};
#endif