X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Ftraindialog.cpp;h=985d4c94ea09eca8bb358e516c19b5641b58619e;hb=abed4a255060d5a233ec0ac2dd60af9132e29201;hp=f202377f0cddea3dba3cb0cdfb31fa576eba6462;hpb=9ad36841021cdd5c7f14d52e946d8ecdb602cf78;p=r2c2.git diff --git a/source/engineer/traindialog.cpp b/source/engineer/traindialog.cpp index f202377..985d4c9 100644 --- a/source/engineer/traindialog.cpp +++ b/source/engineer/traindialog.cpp @@ -9,6 +9,7 @@ #include "libr2c2/layout.h" #include "libr2c2/trainstatus.h" #include "controlpanel.h" +#include "engineer.h" #include "routerpanel.h" #include "timetablepanel.h" #include "traindialog.h" @@ -19,6 +20,7 @@ using namespace Msp; using namespace R2C2; TrainDialog::TrainDialog(Engineer &e, R2C2::Train &t): + DynamicDialog(e.get_user_interface()), engineer(e), train(t), updating(false) @@ -33,6 +35,9 @@ TrainDialog::TrainDialog(Engineer &e, R2C2::Train &t): btn_expand->signal_clicked.connect(sigc::mem_fun(this, &TrainDialog::expand_clicked)); lbl_speed = dynamic_cast(get_item(widgets, "lbl_speed")); sld_speed = dynamic_cast(get_item(widgets, "sld_speed")); + float max_speed = train.get_maximum_speed(); + if(max_speed>0) + sld_speed->set_range(0, max_speed*3.6/train.get_layout().get_catalogue().get_scale()); sld_speed->signal_value_changed.connect(sigc::mem_fun(this, &TrainDialog::ui_speed_changed)); tgl_forward = dynamic_cast(get_item(widgets, "tgl_forward")); tgl_forward->signal_toggled.connect(sigc::mem_fun(this, &TrainDialog::ui_forward_toggled)); @@ -131,8 +136,13 @@ void TrainDialog::ui_forward_toggled(bool value) void TrainDialog::expand_clicked() { - pnl_expander->set_visible(!pnl_expander->is_visible()); - btn_expand->set_style(pnl_expander->is_visible() ? "arrow_up" : "arrow_down"); + set_expanded(!pnl_expander->is_visible()); +} + +void TrainDialog::set_expanded(bool e) +{ + pnl_expander->set_visible(e); + btn_expand->set_style(e ? "arrow_up" : "arrow_down"); signal_autosize_changed.emit(); find_ancestor()->get_layout()->update(); } @@ -141,3 +151,25 @@ void TrainDialog::toggle_panel(bool show, GLtk::Panel *panel) { panel->set_visible(show); } + +bool TrainDialog::save_state(DataFile::Statement &st) const +{ + st.keyword = "traindialog"; + st.append(train.get_address()); + st.sub.push_back((DataFile::Statement("expanded"), pnl_expander->is_visible())); + save_position(st.sub); + + return true; +} + + +TrainDialog::StateLoader::StateLoader(TrainDialog &td): + DataFile::DerivedObjectLoader(td) +{ + add("expanded", &StateLoader::expanded); +} + +void TrainDialog::StateLoader::expanded(bool e) +{ + obj.set_expanded(e); +}