]> git.tdb.fi Git - r2c2.git/blob - source/designer/selection.h
The Root widget can now set matrices itself
[r2c2.git] / source / designer / selection.h
1 #ifndef SELECTION_H_
2 #define SELECTION_H_
3
4 #include <set>
5 #include <sigc++/sigc++.h>
6 #include "3d/track.h"
7
8 class Selection
9 {
10 public:
11         sigc::signal<void> signal_changed;
12
13 private:
14         std::set<R2C2::Track *> tracks;
15
16 public:
17         const std::set<R2C2::Track *> &get_tracks() const { return tracks; }
18         R2C2::Track *get_track() const;
19         unsigned size() const { return tracks.size(); }
20         bool empty() const { return tracks.empty(); }
21
22         void clear();
23
24         template<typename Iter>
25         void replace(Iter begin, Iter end)
26         {
27                 tracks.clear();
28                 tracks.insert(begin, end);
29                 signal_changed.emit();
30         }
31
32         void add_track(R2C2::Track *);
33         void remove_track(R2C2::Track *);
34         void toggle_track(R2C2::Track *);
35
36         void select_more();
37         void select_linked();
38         void select_blocks();
39 };
40
41 #endif