X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmanipulator.cpp;h=77269228b88567f92dc9575dd1a49ce7c955f98a;hb=d84f187ca34a6ab2f8c37d85fa13d5c113714344;hp=8ac35e82274f58a5c913fa7e346a946d8ed01446;hpb=678982e7ddb22bb5fd44ce448d1c5cbf646b2573;p=r2c2.git diff --git a/source/designer/manipulator.cpp b/source/designer/manipulator.cpp index 8ac35e8..7726922 100644 --- a/source/designer/manipulator.cpp +++ b/source/designer/manipulator.cpp @@ -10,9 +10,8 @@ using namespace std; using namespace R2C2; using namespace Msp; -Manipulator::Manipulator(Designer &d, Input::Mouse &m, const set &objs): - Tool(d, m), - accepted(false) +Manipulator::Manipulator(Designer &d, Input::Keyboard &k, Input::Mouse &m, const set &objs): + Tool(d, k, m) { set 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_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_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; jobject->get_link(j)) - if(!object_set.count(link)) - i->object->break_link(j); - } - - const set <racks = designer.get_layout().get_all(); - for(set::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i) - { - bool ok = true; - for(vector::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; jobject->get_link(j)) + if(!object_set.count(link)) + i->object->break_link(j); + } - for(vector::iterator j=objects.begin(); j!=objects.end(); ++j) - j->object->link_to(**i); - } + const set <racks = designer.get_layout().get_all(); + for(set::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i) + { + bool ok = true; + for(vector::iterator j=objects.begin(); (j!=objects.end() && ok); ++j) + ok = (j->object!=*i); + if(!ok) continue; - accepted = true; - set_done(); + for(vector::iterator j=objects.begin(); j!=objects.end(); ++j) + j->object->link_to(**i); } }