Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
guisim_main.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
21// Main for GUISIM
22/****************************************************************************/
23#include <config.h>
24
25#ifdef HAVE_VERSION_H
26#include <version.h>
27#endif
28
29#include <ctime>
30#include <signal.h>
31#include <iostream>
32#include <microsim/MSFrame.h>
33#include <microsim/MSNet.h>
42#include <utils/xml/XMLSubSys.h>
47
48
49// ===========================================================================
50// main function
51// ===========================================================================
52int
53main(int argc, char** argv) {
54 // make the output aware of threading
57 oc.setApplicationDescription(TL("GUI version of the microscopic, multi-modal traffic simulation SUMO."));
58 oc.setApplicationName("sumo-gui", "Eclipse SUMO GUI Version " VERSION_STRING);
59 gSimulation = true;
60 // preload registry from sumo to decide on language
61 FXRegistry reg("SUMO GUI", "sumo-gui");
62 reg.read();
63 gLanguage = reg.readStringEntry("gui", "language", gLanguage.c_str());
64 int ret = 0;
65 try {
66 // initialise subsystems
69 OptionsIO::setArgs(argc, argv);
71 if (oc.processMetaOptions(false)) {
73 return 0;
74 }
75 // Make application
76 FXApp application("SUMO GUI", "sumo-gui");
77 // Open display
78 application.init(argc, argv);
79 int minor, major;
80 if (!FXGLVisual::supported(&application, major, minor)) {
81 throw ProcessError(TL("This system has no OpenGL support. Exiting."));
82 }
83
84 // build the main window
85 GUIApplicationWindow* window = new GUIApplicationWindow(&application, "*.sumo.cfg,*.sumocfg");
86 gLanguage = oc.getString("language");
87 gSchemeStorage.init(&application);
88 window->dependentBuild(false);
89 // Create app
90 application.addSignal(SIGINT, window, MID_HOTKEY_CTRL_Q_CLOSE);
91 application.create();
92 // Load configuration given on command line
93 if (argc > 1) {
94 window->loadOnStartup();
95 }
96 // Run
97 window->setFocus();
98 ret = application.run();
99 } catch (const ProcessError& e) {
100 if (std::string(e.what()) != std::string("Process Error") && std::string(e.what()) != std::string("")) {
101 WRITE_ERROR(e.what());
102 }
103 MsgHandler::getErrorInstance()->inform("Quitting (on error).", false);
104 ret = 1;
105#ifndef _DEBUG
106 } catch (const std::exception& e) {
107 if (std::string(e.what()) != std::string("")) {
108 WRITE_ERROR(e.what());
109 }
110 MsgHandler::getErrorInstance()->inform("Quitting (on error).", false);
111 ret = 1;
112 } catch (...) {
113 MsgHandler::getErrorInstance()->inform("Quitting (on unknown error).", false);
114 ret = 1;
115#endif
116 }
119 return ret;
120}
121
122
123/****************************************************************************/
@ MID_HOTKEY_CTRL_Q_CLOSE
Main window closes.
Definition GUIAppEnum.h:115
GUICompleteSchemeStorage gSchemeStorage
#define WRITE_ERROR(msg)
Definition MsgHandler.h:304
#define TL(string)
Definition MsgHandler.h:315
std::string gLanguage
the language for GUI elements and messages
Definition StdDefs.cpp:34
bool gSimulation
Definition StdDefs.cpp:30
The main window of the SUMO-gui.
void loadOnStartup(const bool wait=false)
config or net on startup
void dependentBuild(const bool isLibsumo)
build dependt
void init(FXApp *app, bool netedit=false)
Initialises the storage with some default settings.
static void fillOptions()
Inserts options used by the simulation into the OptionsCont-singleton.
Definition MSFrame.cpp:60
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
virtual void inform(std::string msg, bool addType=true)
adds a new error to the list
static void setFactory(Factory func)
Sets the factory function to use for new MsgHandlers.
Definition MsgHandler.h:64
static MsgHandler * create(MsgType type)
A storage for options typed value containers)
Definition OptionsCont.h:89
void setApplicationName(const std::string &appName, const std::string &fullName)
Sets the application name.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
static OptionsCont & getOptions()
Retrieves the options.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
static void setArgs(int argc, char **argv)
Stores the command line arguments for later parsing.
Definition OptionsIO.cpp:58
static void getOptions(const bool commandLineOnly=false)
Parses the command line arguments and loads the configuration.
Definition OptionsIO.cpp:74
static void close()
Closes all of an applications subsystems.
static void close()
request termination of connection
static void init()
Initialises the xml-subsystem.
Definition XMLSubSys.cpp:56
int main(int argc, char **argv)