#include <msp/strings/formatter.h>
#include <msp/strings/lexicalcast.h>
#include <msp/strings/regex.h>
+#include "libmarklin/except.h"
#include "libmarklin/tracktype.h"
#include "engineer.h"
#include "mainpanel.h"
Engineer::~Engineer()
{
- trfc_mgr->save("engineer.state");
+ if(!simulate)
+ trfc_mgr->save("engineer.state");
delete trfc_mgr;
}
if(unsigned tid=track->get_track().get_turnout_id())
{
Turnout &turnout=control.get_turnout(tid);
- turnout.set_route((turnout.get_route()+1)%track->get_track().get_type().get_n_routes());
+ try
+ {
+ turnout.set_route((turnout.get_route()+1)%track->get_track().get_type().get_n_routes());
+ main_panel->set_status_text(format("Turnout %d switched", turnout.get_address()));
+ }
+ catch(const TurnoutBusy &e)
+ {
+ main_panel->set_status_text(e.what());
+ }
}
else if(simulate)
{