]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/trainlistdialog.h
Persist most dialogs across runs
[r2c2.git] / source / engineer / trainlistdialog.h
index c12bcd4fc72c8a6bfb95f348f3605a2192c86f7e..e73a6bbdaeb02478df214bf55a4217fb300de27c 100644 (file)
@@ -1,20 +1,23 @@
 #ifndef TRAINLISTDIALOG_H_
 #define TRAINLISTDIALOG_H_
 
-#include <msp/gltk/dialog.h>
+#include <sigc++/trackable.h>
 #include <msp/gltk/list.h>
 #include <msp/gltk/listdata.h>
 #include "libr2c2/layout.h"
+#include "dynamicdialog.h"
 
 class Engineer;
 
-class TrainListDialog: public Msp::GLtk::Dialog
+class TrainListDialog: public DynamicDialog, public sigc::trackable
 {
 private:
        Engineer &engineer;
        R2C2::Layout &layout;
        Msp::GLtk::BasicListData<R2C2::Train *> trains;
        Msp::GLtk::List *lst_trains;
+       Msp::GLtk::BasicListData<const R2C2::Driver::DetectedLocomotive *> detected_locos;
+       Msp::GLtk::List *lst_imported;
 
 public:
        TrainListDialog(Engineer &);
@@ -22,6 +25,15 @@ public:
 private:
        void new_clicked();
        void show_clicked();
+       void tab_toggled(bool, Msp::GLtk::Widget *);
+       void locomotive_detected(const R2C2::Driver::DetectedLocomotive &);
+       void locomotive_gone(const R2C2::Driver::DetectedLocomotive &);
+       void train_added(R2C2::Train &);
+       void train_removed(R2C2::Train &);
+       void train_name_changed(R2C2::Train &);
+
+public:
+       virtual bool save_state(Msp::DataFile::Statement &) const;
 };
 
 #endif