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())
}
}
-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 *> <racks = 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 *> <racks = 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);
}
}