X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Ftrainproperties.cpp;h=d92750e41725fd7d65e7071fbcfefc7e785c5cb1;hb=ca9d278f9472206ad9a01190dcef9f0eb1bcc274;hp=e574925f259628e7846a692a34ee9dd29069e12b;hpb=975ea87cc7be179618b06291cb2506a2523cad1f;p=r2c2.git diff --git a/source/engineer/trainproperties.cpp b/source/engineer/trainproperties.cpp index e574925..d92750e 100644 --- a/source/engineer/trainproperties.cpp +++ b/source/engineer/trainproperties.cpp @@ -1,22 +1,16 @@ -/* $Id$ - -This file is part of the MSP Märklin suite -Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #include -#include +#include #include -#include "libmarklin/driver.h" -#include "libmarklin/vehicle.h" -#include "libmarklin/vehicletype.h" +#include "libr2c2/driver.h" +#include "libr2c2/trainrouter.h" +#include "libr2c2/vehicle.h" +#include "libr2c2/vehicletype.h" #include "engineer.h" #include "trainproperties.h" using namespace std; using namespace Msp; -using namespace Marklin; +using namespace R2C2; TrainProperties::TrainProperties(Engineer &e, Train *t): engineer(e), @@ -94,9 +88,10 @@ TrainProperties::TrainProperties(Engineer &e, Train *t): if(train) { - ent_addr->set_text(lexical_cast(train->get_address())); + ent_addr->set_text(lexical_cast(train->get_address())); ent_name->set_text(train->get_name()); - drp_priority->set_selected_index(train->get_priority()+2); + if(TrainRouter *router = train->get_ai_of_type()) + drp_priority->set_selected_index(router->get_priority()+2); unsigned n_vehicles = train->get_n_vehicles(); for(unsigned i=1; iset_name(ent_name->get_text()); - train->set_priority(drp_priority->get_selected_index()-2); + if(TrainRouter *router = train->get_ai_of_type()) + router->set_priority(drp_priority->get_selected_index()-2); // The locomotive is vehicle 0 so we need to add 1 for(set::const_iterator i=rem_vehicles.end(); i!=rem_vehicles.begin();) @@ -151,7 +147,7 @@ void TrainProperties::remove_vehicle_clicked() lst_vehicles->remove(selected); - unsigned n_vehicles = train->get_n_vehicles()-rem_vehicles.size(); + unsigned n_vehicles = (train ? train->get_n_vehicles()-rem_vehicles.size() : 0); if(static_cast(selected)>=n_vehicles) add_vehicles.erase(add_vehicles.begin()+(selected-n_vehicles)); else @@ -178,5 +174,5 @@ const VehicleType &TrainProperties::get_vehicle_type(unsigned n, bool loco) ++i; } - throw InvalidParameterValue("Vehicle type index out of range"); + throw out_of_range("TrainProperties::get_vehicle_type"); }