#include <config.h>
#ifdef HAVE_VERSION_H
#include <version.h>
#endif
#include <ctime>
#include <signal.h>
#include <iostream>
#include <microsim/MSFrame.h>
#include <microsim/MSNet.h>
#include <utils/options/Option.h>
#include <utils/options/OptionsCont.h>
#include <utils/options/OptionsIO.h>
#include <utils/common/UtilExceptions.h>
#include <utils/common/FileHelpers.h>
#include <utils/common/MsgHandler.h>
#include <utils/common/SystemFrame.h>
#include <utils/foxtools/MsgHandlerSynchronized.h>
#include <utils/xml/XMLSubSys.h>
#include <gui/GUIApplicationWindow.h>
#include <utils/gui/windows/GUIAppEnum.h>
#include <utils/gui/settings/GUICompleteSchemeStorage.h>
#include <traci-server/TraCIServer.h>
int
main(int argc, char** argv) {
MsgHandler::setFactory(&MsgHandlerSynchronized::create);
OptionsCont& oc = OptionsCont::getOptions();
oc.setApplicationDescription(TL("GUI version of the microscopic, multi-modal traffic simulation SUMO."));
oc.setApplicationName("sumo-gui", "Eclipse SUMO GUI " VERSION_STRING);
gSimulation = true;
FXRegistry reg("SUMO GUI", "sumo-gui");
reg.read();
gLanguage = reg.readStringEntry("gui", "language", gLanguage.c_str());
int ret = 0;
try {
XMLSubSys::init();
MSFrame::fillOptions();
OptionsIO::setArgs(argc, argv);
OptionsIO::getOptions(true);
if (oc.processMetaOptions(false)) {
SystemFrame::close();
return 0;
}
FXApp application("SUMO GUI", "sumo-gui");
application.init(argc, argv);
int minor, major;
if (!FXGLVisual::supported(&application, major, minor)) {
throw ProcessError(TL("This system has no OpenGL support. Exiting."));
}
GUIApplicationWindow* window = new GUIApplicationWindow(&application);
gLanguage = oc.getString("language");
gSchemeStorage.init(&application);
window->dependentBuild(false);
application.addSignal(SIGINT, window, MID_HOTKEY_CTRL_Q_CLOSE);
application.create();
if (argc > 1) {
window->loadOnStartup();
}
window->setFocus();
ret = application.run();
} catch (const ProcessError& e) {
if (std::string(e.what()) != std::string("Process Error") && std::string(e.what()) != std::string("")) {
WRITE_ERROR(e.what());
}
MsgHandler::getErrorInstance()->inform("Quitting (on error).", false);
ret = 1;
#ifndef _DEBUG
} catch (const std::exception& e) {
if (std::string(e.what()) != std::string("")) {
WRITE_ERROR(e.what());
}
MsgHandler::getErrorInstance()->inform("Quitting (on error).", false);
ret = 1;
} catch (...) {
MsgHandler::getErrorInstance()->inform("Quitting (on unknown error).", false);
ret = 1;
#endif
}
TraCIServer::close();
SystemFrame::close();
return ret;
}