X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fdesigner.cpp;h=c60ae8e8688b5c318262d71e40a48d48aebacfb4;hb=e9653dffd0026fb3c02c91a4c0feca688a86c721;hp=e5608331023d038d9146ccb53d375555dbf2dc4f;hpb=f79b3fd58999a73a4a28663b46fdd96c58167a18;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index e560833..c60ae8e 100644 --- a/source/designer/designer.cpp +++ b/source/designer/designer.cpp @@ -53,6 +53,7 @@ Designer::Designer(int argc, char **argv): window.set_title("Railway Designer"); window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Designer::exit), 0)); + selection.signal_changed.connect(sigc::mem_fun(this, &Designer::selection_changed)); manipulator.signal_status.connect(sigc::mem_fun(this, &Designer::manipulation_status)); manipulator.signal_done.connect(sigc::mem_fun(this, &Designer::manipulation_done)); measure.signal_changed.connect(sigc::mem_fun(this, &Designer::measure_changed)); @@ -290,13 +291,7 @@ void Designer::key_press(unsigned key, unsigned mod, wchar_t) else if(key==Msp::Input::KEY_PLUS) selection.select_more(); else if(key==Msp::Input::KEY_L && (mod&Input::MOD_SHIFT)) - { - const set &tracks = layout->get_tracks(); - float len = 0; - for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) - len += (*i)->get_type().get_total_length(); - IO::print("Total length: %.1fm\n", len); - } + selection.select_blocks(); else if(key==Msp::Input::KEY_L) selection.select_linked(); else if(key==Msp::Input::KEY_M) @@ -504,6 +499,20 @@ void Designer::update_track_icon(Track3D &track) } } +void Designer::selection_changed() +{ + const set &tracks = selection.get_tracks(); + if(tracks.empty()) + lbl_status->set_text(string()); + else + { + float len = 0; + for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) + len += (*i)->get_type().get_total_length(); + lbl_status->set_text(format("%.2fm of track selected\n", len)); + } +} + void Designer::manipulation_status(const string &status) { lbl_status->set_text(status); @@ -511,8 +520,8 @@ void Designer::manipulation_status(const string &status) void Designer::manipulation_done(bool) { - lbl_status->set_text(string()); mode = SELECT; + selection_changed(); } void Designer::measure_changed() @@ -527,8 +536,8 @@ void Designer::measure_changed() void Designer::measure_done() { - lbl_status->set_text(string()); mode = SELECT; + selection_changed(); } void Designer::turnout_id_accept(const string &text) @@ -609,7 +618,7 @@ void Designer::show_route(const Route *route) for(set::iterator i=ltracks.begin(); i!=ltracks.end(); ++i) { Track3D &t3d = layout_3d->get_track(**i); - if(route && route->get_tracks().count(*i)) + if(route && route->has_track(**i)) { t3d.get_path().set_color(GL::Color(0.5, 0.8, 1.0)); if((*i)->get_type().is_turnout())