]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/manipulator.cpp
Read MFX locomotive name
[r2c2.git] / source / designer / manipulator.cpp
index 8ac35e82274f58a5c913fa7e346a946d8ed01446..77269228b88567f92dc9575dd1a49ce7c955f98a 100644 (file)
@@ -10,9 +10,8 @@ using namespace std;
 using namespace R2C2;
 using namespace Msp;
 
-Manipulator::Manipulator(Designer &d, Input::Mouse &m, const set<Object *> &objs):
-       Tool(d, m),
-       accepted(false)
+Manipulator::Manipulator(Designer &d, Input::Keyboard &k, Input::Mouse &m, const set<Object *> &objs):
+       Tool(d, k, m)
 {
        set<Object *> pending = objs;
        while(!pending.empty())
@@ -57,38 +56,30 @@ Manipulator::~Manipulator()
        }
 }
 
-void Manipulator::button_press(unsigned btn)
+void Manipulator::finish()
 {
-       if(btn==3)
-               set_done();
-       else if(btn==1)
+       set<Object *> object_set;
+       for(ObjectArray::iterator i=objects.begin(); i!=objects.end(); ++i)
+               object_set.insert(i->object);
+       for(ObjectArray::iterator i=objects.begin(); i!=objects.end(); ++i)
        {
-               set<Object *> object_set;
-               for(ObjectArray::iterator i=objects.begin(); i!=objects.end(); ++i)
-                       object_set.insert(i->object);
-               for(ObjectArray::iterator i=objects.begin(); i!=objects.end(); ++i)
-               {
-                       unsigned nls = i->object->get_n_link_slots();
-                       for(unsigned j=0; j<nls; ++j)
-                               if(Object *link = i->object->get_link(j))
-                                       if(!object_set.count(link))
-                                               i->object->break_link(j);
-               }
-
-               const set<Track *> &ltracks = designer.get_layout().get_all<Track>();
-               for(set<Track *>::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
-               {
-                       bool ok = true;
-                       for(vector<MObject>::iterator j=objects.begin(); (j!=objects.end() && ok); ++j)
-                               ok = (j->object!=*i);
-                       if(!ok) continue;
+               unsigned nls = i->object->get_n_link_slots();
+               for(unsigned j=0; j<nls; ++j)
+                       if(Object *link = i->object->get_link(j))
+                               if(!object_set.count(link))
+                                       i->object->break_link(j);
+       }
 
-                       for(vector<MObject>::iterator j=objects.begin(); j!=objects.end(); ++j)
-                               j->object->link_to(**i);
-               }
+       const set<Track *> &ltracks = designer.get_layout().get_all<Track>();
+       for(set<Track *>::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
+       {
+               bool ok = true;
+               for(vector<MObject>::iterator j=objects.begin(); (j!=objects.end() && ok); ++j)
+                       ok = (j->object!=*i);
+               if(!ok) continue;
 
-               accepted = true;
-               set_done();
+               for(vector<MObject>::iterator j=objects.begin(); j!=objects.end(); ++j)
+                       j->object->link_to(**i);
        }
 }