+ MainPanel *main_panel;
+ std::list<TrainPanel *> train_panels;
+ std::list<TrainView *> train_views;
+ Msp::Time::TimeStamp status_timeout;
+ bool picking;
+ R2C2::Track *picking_track;
+ int picking_entry;
+ R2C2::Path3D *picking_path;
+ int pointer_x;
+ int pointer_y;
+ bool pointer_moved;
+
+public:
+ Engineer(int argc, char **argv);
+ ~Engineer();
+
+ const Msp::GLtk::Resources &get_ui_resources() const { return ui_res; }
+ Msp::GLtk::Root &get_root() const { return *root; }
+ const R2C2::Catalogue &get_catalogue() const { return catalogue; }
+ R2C2::Layout &get_layout() { return layout; }
+ R2C2::Layout3D &get_layout_3d() { return layout_3d; }
+ const Msp::GL::Lighting &get_lighting() const { return lighting; }
+ void set_status(const std::string &);
+ void rearrange_panels();
+ void add_train_view(TrainView &);
+ void remove_train_view(TrainView &);
+ void pick(bool);
+ int main();
+ void quit() { exit(0); }
+private: