]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/newtraindialog.cpp
Use generic ObjectTypes in Catalogue
[r2c2.git] / source / engineer / newtraindialog.cpp
index 11fd5c04d6f1331c607926c8d84256216d9e44df..006a819b50d5a631ee86ef945858e4e709c92e5a 100644 (file)
@@ -42,10 +42,11 @@ NewTrainDialog::NewTrainDialog(Engineer &e):
 
        drp_protocol->set_selected_index(0);
 
-       const Catalogue::VehicleMap &cat_vtypes = engineer.get_layout().get_catalogue().get_vehicles();
-       for(Catalogue::VehicleMap::const_iterator i=cat_vtypes.begin(); i!=cat_vtypes.end(); ++i)
-               if(i->second->is_locomotive())
-                       loco_types.append(i->second);
+       const Catalogue::ObjectMap &obj_types = engineer.get_layout().get_catalogue().get_all();
+       for(Catalogue::ObjectMap::const_iterator i=obj_types.begin(); i!=obj_types.end(); ++i)
+               if(const VehicleType *vt = dynamic_cast<const VehicleType *>(i->second))
+                       if(vt->is_locomotive())
+                               loco_types.append(vt);
 }
 
 void NewTrainDialog::on_response(int code)
@@ -67,12 +68,8 @@ void NewTrainDialog::on_response(int code)
                Train *train = new Train(engineer.get_layout(), type, address, protocol);
                train->set_name(ent_name->get_text());
 
-               GLtk::Container *root = parent;
-               while(root->get_parent())
-                       root = root->get_parent();
-
                TrainDialog *dlg = new TrainDialog(engineer, *train);
-               root->add(*dlg);
+               find_ancestor<GLtk::Root>()->add(*dlg);
                dlg->autosize();
        }
 }