#include "libr2c2/train.h"
#include "libr2c2/zone.h"
#include "departuresdialog.h"
+#include "engineer.h"
using namespace std;
using namespace Msp;
using namespace R2C2;
-DeparturesDialog::DeparturesDialog(const Layout &l, const string &group):
- layout(l),
+DeparturesDialog::DeparturesDialog(Engineer &engineer, const string &group):
+ DynamicDialog(engineer.get_user_interface()),
+ layout(engineer.get_layout()),
departures(0)
{
Loader::WidgetMap widgets;
}
}
-void DeparturesDialog::group_selected(unsigned index)
+void DeparturesDialog::set_group(const string &group)
{
- const string &group = groups.get(index);
+ int index = groups.find(group);
+ if(index<0)
+ throw key_error(group);
+ drp_groups->set_selected_index(index);
+
lbl_title->set_text("Departures from "+group);
for(vector<Row>::iterator i=rows.begin(); i!=rows.end(); ++i)
update_rows();
}
+void DeparturesDialog::group_selected(unsigned index)
+{
+ set_group(groups.get(index));
+}
+
void DeparturesDialog::update_rows()
{
const list<Departures::Departure> &deps = departures->get_departures();
}
}
+bool DeparturesDialog::save_state(DataFile::Statement &st) const
+{
+ st.keyword = "departuresdialog";
+ int sel = drp_groups->get_selected_index();
+ if(sel>=0)
+ st.sub.push_back((DataFile::Statement("group"), groups.get(sel)));
+ save_position(st.sub);
+
+ return true;
+}
+
DeparturesDialog::Row::Row():
departure(0),
lbl_train->set_text(string());
}
}
+
+
+DeparturesDialog::StateLoader::StateLoader(DeparturesDialog &dd):
+ DataFile::DerivedObjectLoader<DeparturesDialog, DynamicDialog::StateLoader>(dd)
+{
+ add("group", &StateLoader::group);
+}
+
+void DeparturesDialog::StateLoader::group(const string &g)
+{
+ obj.set_group(g);
+}