]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/selection.cpp
Use raycasting instead of OpenGL selection mode to pick tracks
[r2c2.git] / source / designer / selection.cpp
index 5f71e8b68a5b6be56d72cb2d73f878689807e7d2..604890b92795c9fb090a6882308d54b96fbe2da4 100644 (file)
@@ -1,15 +1,16 @@
 /* $Id$
 
-This file is part of the MSP Märklin suite
+This file is part of R²C²
 Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
 Distributed under the GPL
 */
 
 #include <algorithm>
+#include "libr2c2/block.h"
 #include "selection.h"
 
 using namespace std;
-using namespace Marklin;
+using namespace R2C2;
 using namespace Msp;
 
 Track *Selection::get_track() const
@@ -94,3 +95,21 @@ void Selection::select_linked()
        if(changed)
                signal_changed.emit();
 }
+
+void Selection::select_blocks()
+{
+       bool changed = false;
+       for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
+       {
+               const set<Track *> &btracks = (*i)->get_block().get_tracks();
+               for(set<Track *>::iterator j=btracks.begin(); j!=btracks.end(); ++j)
+                       if(!tracks.count(*j))
+                       {
+                               tracks.insert(*j);
+                               changed = true;
+                       }
+       }
+
+       if(changed)
+               signal_changed.emit();
+}