X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fmanipulator.cpp;h=c103314564a69daead55d65c255382681819b3e1;hb=c06f3dde10411cd34aae026d8bf22b7771bdc3e0;hp=359fbbb5e0b8d05feb884ac4ada0fb3707ebaceb;hpb=f8a7788cee0261babfc4c804a58515aad6dfbc3d;p=r2c2.git diff --git a/source/designer/manipulator.cpp b/source/designer/manipulator.cpp index 359fbbb..c103314 100644 --- a/source/designer/manipulator.cpp +++ b/source/designer/manipulator.cpp @@ -1,13 +1,6 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #include #include -#include +#include #include "libr2c2/tracktype.h" #include "designer.h" #include "manipulator.h" @@ -484,11 +477,23 @@ void Manipulator::pointer_motion(int x, int y) delete *i; extend_tracks = trks; + map counts; length = 0; for(vector::iterator i=extend_tracks.begin(); i!=extend_tracks.end(); ++i) + { length += (*i)->get_type().get_total_length(); - - signal_status.emit(format("Extend: %.0fmm", length*1000)); + ++counts[(*i)->get_type().get_article_number()]; + } + + string detail; + for(map::const_iterator i=counts.begin(); i!=counts.end(); ++i) + { + if(!detail.empty()) + detail += ", "; + detail += format("%dx %s", i->second, i->first); + } + + signal_status.emit(format("Extend: %.0fmm (%s)", length*1000, detail)); } } } @@ -641,11 +646,7 @@ vector Manipulator::create_straight(const R2C2::Vector &start, float di float s = sin(dir); for(vector::iterator i=lengths.begin(); i!=lengths.end(); ++i) { - map::iterator j = types_by_length.find(*i); - if(j==types_by_length.end()) - throw LogicError("Internal error"); - - Track *track = new Track(designer.get_layout(), *j->second); + Track *track = new Track(designer.get_layout(), *get_item(types_by_length, *i)); track->set_position(pos); track->set_rotation(dir);