94 #ifdef CHECK_MEMORY_LEAKS 125 FXMAPFUNC(SEL_COMMAND,
MID_NEW_OSGVIEW, GUIApplicationWindow::onCmdNewOSG),
185 FXIMPLEMENT(
GUIApplicationWindow, FXMainWindow, GUIApplicationWindowMap, ARRAYNUMBER(GUIApplicationWindowMap))
196 const std::
string& configPattern)
198 myLoadThread(0), myRunThread(0),
200 myAlternateSimDelay(0),
201 myRecentNets(a, "nets"), myConfigPattern(configPattern),
202 hadDependentBuild(false),
203 myShowTimeAsHMS(false),
204 myAmFullScreen(false),
205 myHaveNotifiedAboutSimEnd(false),
208 myPreviousCollisionNumber(0),
229 LAYOUT_SIDE_TOP | LAYOUT_FILL_X | FRAME_RAISED);
240 myStatusbar =
new FXStatusBar(
this, LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X | FRAME_RAISED);
243 new FXHorizontalFrame(
myStatusbar, LAYOUT_FIX_WIDTH | LAYOUT_FILL_Y | LAYOUT_RIGHT | FRAME_SUNKEN,
244 0, 0, 20, 0, 0, 0, 0, 0, 0, 0);
245 myGeoCoordinate =
new FXLabel(
myGeoFrame,
"N/A\t\tOriginal coordinate (before coordinate transformation in NETCONVERT)", 0, LAYOUT_CENTER_Y);
247 new FXHorizontalFrame(
myStatusbar, LAYOUT_FIX_WIDTH | LAYOUT_FILL_Y | LAYOUT_RIGHT | FRAME_SUNKEN,
248 0, 0, 20, 0, 0, 0, 0, 0, 0, 0);
259 SPLITTER_REVERSED | SPLITTER_VERTICAL | LAYOUT_FILL_X | LAYOUT_FILL_Y | SPLITTER_TRACKING | FRAME_RAISED | FRAME_THICK);
261 LAYOUT_FILL_X | LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK);
264 FXMDIClient::ID_MDI_MENUWINDOW, LAYOUT_LEFT);
266 FXMDIClient::ID_MDI_MENUCLOSE, FRAME_RAISED | LAYOUT_RIGHT);
268 FXMDIClient::ID_MDI_MENURESTORE, FRAME_RAISED | LAYOUT_RIGHT);
270 FXMDIClient::ID_MDI_MENUMINIMIZE, FRAME_RAISED | LAYOUT_RIGHT);
295 int windowWidth = getApp()->reg().readIntEntry(
"SETTINGS",
"width", 600);
296 int windowHeight = getApp()->reg().readIntEntry(
"SETTINGS",
"height", 400);
298 if (oc.
isSet(
"window-size")) {
299 std::vector<std::string> windowSize = oc.
getStringVector(
"window-size");
300 if (windowSize.size() != 2
303 WRITE_ERROR(
"option window-size requires INT,INT");
310 if (oc.
isSet(
"window-size") || getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 0) {
311 setX(getApp()->reg().readIntEntry(
"SETTINGS",
"x", 150));
312 setY(getApp()->reg().readIntEntry(
"SETTINGS",
"y", 150));
313 setWidth(windowWidth);
314 setHeight(windowHeight);
316 gCurrentFolder = getApp()->reg().readStringEntry(
"SETTINGS",
"basedir",
"");
317 FXMainWindow::create();
335 FXint width = getApp()->getNormalFont()->getTextWidth(
"8", 1) * 24;
339 show(PLACEMENT_SCREEN);
341 if (getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 1) {
345 myShowTimeAsHMS = (getApp()->reg().readIntEntry(
"gui",
"timeasHMS", 0) == 1);
383 FXMainWindow::detach();
395 "&Open Simulation...\tCtrl+O\tOpen a simulation (Configuration file).",
398 "Open &Network...\tCtrl+N\tOpen a network.",
401 "Open Shapes \tCtrl+P\tLoad POIs and Polygons for visualization.",
404 "&Reload\tCtrl+R\tReloads the simulation / the network.",
408 "Close\tCtrl+W\tClose the simulation.",
411 FXMenuSeparator* sep1 =
new FXMenuSeparator(
myFileMenu);
413 sep1->setSelector(FXRecentFiles::ID_ANYFILES);
427 FXMenuSeparator* sep2 =
new FXMenuSeparator(
myFileMenu);
429 sep2->setSelector(FXRecentFiles::ID_ANYFILES);
445 "&Quit\tCtrl+Q\tQuit the Application.",
451 for (std::vector<std::string>::iterator it = vehicleClasses.begin(); it != vehicleClasses.end(); ++it) {
457 new FXMenuTitle(
myMenuBar,
"&Edit", NULL, myEditMenu);
458 new FXMenuCommand(myEditMenu,
459 "Edit Selected...\tCtrl+E\tOpens a dialog for editing the list of selected items.",
461 new FXMenuCascade(myEditMenu,
462 "Select lanes which allow...\t\tOpens a menu for selecting a vehicle class by which to selected lanes.",
464 new FXMenuSeparator(myEditMenu);
465 new FXMenuCommand(myEditMenu,
466 "Edit Breakpoints...\tCtrl+B\tOpens a dialog for editing breakpoints.",
468 new FXMenuSeparator(myEditMenu);
469 new FXMenuCommand(myEditMenu,
470 "Open in Netedit...\tCtrl+T\tOpens the netedit application with the current network.",
477 "Application Settings...\t\tOpen a Dialog for Application Settings editing.",
480 "Gaming Mode\tCtrl+G\tToggle gaming mode on/off.",
483 "Full Screen Mode\tCtrl+F\tToggle full screen mode on/off.",
489 "Locate &Junctions\t\tOpen a Dialog for Locating a Junction.",
492 "Locate &Edges\t\tOpen a Dialog for Locating an Edge.",
496 "Locate &Vehicles\t\tOpen a Dialog for Locating a Vehicle.",
500 "Locate &Persons\t\tOpen a Dialog for Locating a Person.",
503 "Locate &TLS\t\tOpen a Dialog for Locating a Traffic Light.",
506 "Locate &Additional\t\tOpen a Dialog for Locating an Additional Structure.",
509 "Locate P&oI\t\tOpen a Dialog for Locating a Point of Intereset.",
512 "Locate Po&lygon\t\tOpen a Dialog for Locating a Polygon.",
516 "Show Internal Structures\t\tShow internal junctions and streets in locator dialog.",
522 "Run\tCtrl+A\tStart running the simulation.",
525 "Stop\tCtrl+S\tStop running the simulation.",
528 "Step\tCtrl+D\tPerform one simulation step.",
535 "Show Status Line\t\tToggle the Status Bar on/off.",
538 "Show Message Window\t\tToggle the Message Window on/off.",
541 "Show Simulation Time\t\tToggle the Simulation Time on/off.",
544 "Show Simulation Delay\t\tToggle the Simulation Delay Entry on/off.",
561 sep1->setSelector(FXMDIClient::ID_MDI_ANY);
569 "Clear Message Window\t\tClear the message window.",
588 LAYOUT_DOCK_NEXT | LAYOUT_SIDE_TOP | FRAME_RAISED);
592 new FXButton(
myToolBar1,
"\t\tOpen a simulation (Configuration file).",
594 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
595 new FXButton(
myToolBar1,
"\t\tOpen a network.",
597 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
598 new FXButton(
myToolBar1,
"\t\tReloads the simulation / the network.",
600 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
606 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
609 new FXButton(
myToolBar2,
"\t\tStart the loaded simulation.",
611 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
612 new FXButton(
myToolBar2,
"\t\tStop the running simulation.",
614 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
615 new FXButton(
myToolBar2,
"\t\tPerform a single simulation step.",
617 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
623 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
627 BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
639 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED | LAYOUT_FILL_Y);
643 BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
646 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_Y);
656 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
660 new FXButton(
myToolBar5,
"\t\tOpen a new microscopic view.",
662 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
664 new FXButton(
myToolBar5,
"\t\tOpen a new 3D view.",
666 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
675 new FXLabel(
myToolBar6,
"Waiting Time:\t\tTime spent waiting accumulated for all vehicles", 0, LAYOUT_TOP | LAYOUT_LEFT);
687 new FXLabel(
myToolBar7,
"Time Loss:\t\tTime lost due to being unable to drive with maximum speed for all vehicles", 0, LAYOUT_TOP | LAYOUT_LEFT);
701 getApp()->reg().writeIntEntry(
"SETTINGS",
"x", getX());
702 getApp()->reg().writeIntEntry(
"SETTINGS",
"y", getY());
703 getApp()->reg().writeIntEntry(
"SETTINGS",
"width", getWidth());
704 getApp()->reg().writeIntEntry(
"SETTINGS",
"height", getHeight());
706 getApp()->reg().writeStringEntry(
"SETTINGS",
"basedir",
gCurrentFolder.text());
707 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", isMaximized() ? 1 : 0);
708 getApp()->reg().writeIntEntry(
"gui",
"timeasHMS",
myShowTimeAsHMS ? 1 : 0);
717 FXMenuCommand* mc =
dynamic_cast<FXMenuCommand*
>(menu);
718 if (mc->getText() ==
"Edit Selected...") {
727 const std::vector<MSLane*>& lanes = (*i)->getLanes();
728 for (std::vector<MSLane*>::const_iterator it = lanes.begin(); it != lanes.end(); ++it) {
771 FXRegistry reg(
"Netedit",
"DLR");
778 std::string netedit =
"netedit";
779 const char* sumoPath = getenv(
"SUMO_HOME");
781 std::string newPath = std::string(sumoPath) +
"/bin/netedit";
783 netedit =
"\"" + newPath +
"\"";
792 cmd =
"start /B \"\" " + cmd;
804 FXFileDialog opendialog(
this,
"Open Simulation Configuration");
806 opendialog.setSelectMode(SELECTFILE_EXISTING);
811 if (opendialog.execute()) {
813 std::string file = opendialog.getFilename().text();
824 FXFileDialog opendialog(
this,
"Open Network");
826 opendialog.setSelectMode(SELECTFILE_EXISTING);
827 opendialog.setPatternList(
"SUMO nets (*.net.xml)\nAll files (*)");
831 if (opendialog.execute()) {
833 std::string file = opendialog.getFilename().text();
844 FXFileDialog opendialog(
this,
"Open Shapes");
846 opendialog.setSelectMode(SELECTFILE_EXISTING);
847 opendialog.setPatternList(
"Additional files (*.xml)\nAll files (*)");
851 if (opendialog.execute()) {
853 std::string file = opendialog.getFilename().text();
866 getApp()->beginWaitCursor();
879 myStatusbar->getStatusLine()->setText(
"Already loading!");
882 std::string file((
const char*)data);
898 myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
908 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
917 myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
927 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
937 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
946 getApp()->forceRefresh();
954 getApp()->forceRefresh();
963 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
1004 sender->handle(
this,
1006 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1014 sender->handle(
this,
1016 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1024 sender->handle(
this,
1026 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1034 sender->handle(
this,
1036 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1068 d->show(PLACEMENT_OWNER);
1118 getApp()->reg().writeIntEntry(
"SETTINGS",
"x", getX());
1119 getApp()->reg().writeIntEntry(
"SETTINGS",
"y", getY());
1120 getApp()->reg().writeIntEntry(
"SETTINGS",
"width", getWidth());
1121 getApp()->reg().writeIntEntry(
"SETTINGS",
"height", getHeight());
1123 setDecorations(DECOR_NONE);
1124 place(PLACEMENT_MAXIMIZED);
1143 place(PLACEMENT_VISIBLE);
1144 setDecorations(DECOR_ALL);
1149 setWidth(getApp()->reg().readIntEntry(
"SETTINGS",
"width", 600));
1150 setHeight(getApp()->reg().readIntEntry(
"SETTINGS",
"height", 400));
1151 setX(getApp()->reg().readIntEntry(
"SETTINGS",
"x", 150));
1152 setY(getApp()->reg().readIntEntry(
"SETTINGS",
"y", 150));
1174 GUIApplicationWindow::onCmdNewOSG(FXObject*, FXSelector,
void*) {
1186 about->show(PLACEMENT_OWNER);
1192 FXEvent*
event = (FXEvent*)ptr;
1194 setDNDData(FROM_CLIPBOARD, event->target,
string);
1256 if (ec->
myNet == 0) {
1293 std::string settingsName = settings.
addSettings(view);
1316 setTitle(
"SUMO Interactive Traffic Light");
1324 (*it)->setText(
"-");
1328 getApp()->endWaitCursor();
1343 if (backlog > running) {
1369 getApp()->forceRefresh();
1399 "\nDo you want to close all open files and views?";
1400 FXuint answer = FXMessageBox::question(
this, MBOX_YES_NO,
"Simulation ended",
"%s", text.c_str());
1427 #ifdef HAVE_DANGEROUS_SOUNDS // disable user-configurable command execution for public build 1430 for (; it != end; ++it) {
1475 getApp()->beginWaitCursor();
1488 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
1499 FXuint opts = MDI_TRACKING;
1535 (*it)->setText(
"-");
1576 return getApp()->getDefaultCursor(DEF_ARROW_CURSOR);
1594 myStatusbar->getStatusLine()->setText(text.c_str());
1595 myStatusbar->getStatusLine()->setNormalText(text.c_str());
1621 const bool hideFraction =
myAmGaming || fmod(
TS, 1.) == 0.;
1622 const int BuffSize = 100;
1623 char buffer[BuffSize];
1625 const int hours = (int)fracSeconds / 3600;
1626 const int minutes = ((int)fracSeconds % 3600) / 60;
1627 fracSeconds = fracSeconds - 3600 * hours - 60 * minutes;
1628 const std::string format = (hideFraction ?
1629 "%02d-%02d-%02.0f" :
"%02d-%02d-%06.3f");
1630 snprintf(buffer, BuffSize, format.c_str(), hours, minutes, fracSeconds);
1632 const std::string format = (hideFraction ?
1633 "%13.0f" :
"%13.3f");
1634 snprintf(buffer, BuffSize, format.c_str(), fracSeconds);
1642 const long handled = FXMainWindow::onKeyPress(o, sel, data);
1643 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
1655 const long handled = FXMainWindow::onKeyRelease(o, sel, data);
1656 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
std::vector< FXMainWindow * > myTrackerWindows
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
Event sent when the the simulation is over.
RandomDistributor< std::string > myJamSounds
FXLabel * myGeoCoordinate
long onCmdShowStats(FXObject *, FXSelector, void *)
Called on commands from the statistic buttons.
static bool _str2int(const std::string &data)
check if a String can be parsed into a int check overflows
virtual ~GUIApplicationWindow()
Destructor.
GUILoadThread * myLoadThread
GUISUMOAbstractView * getView() const
GUICompleteSchemeStorage gSchemeStorage
long onCmdStep(FXObject *, FXSelector, void *)
Called on "step".
static std::string clipped
Representation of a vehicle in the micro simulation.
void handleEvent_SimulationLoaded(GUIEvent *e)
long onCmdReload(FXObject *, FXSelector, void *)
Called on reload.
bool hasPersons() const
Returns whether persons are simulated.
constVehIt loadedVehBegin() const
Returns the begin of the internal vehicle map.
void appendMsg(GUIEventType eType, const std::string &msg)
Adds new text to the window.
SUMOTime myAlternateSimDelay
The alternate simulation delay for toggling.
virtual FXGLCanvas * getBuildGLCanvas() const
send when a message occured
int getRunningVehicleNo() const
Returns the number of build and inserted, but not yet deleted vehicles.
FXSplitter * myMainSplitter
The splitter that divides the main window into vies and the log window.
virtual bool init(GUINet *net, SUMOTime start, SUMOTime end)
initialises the thread with the new simulation
SUMOTime getTimeStep() const
Returns the time step the simulation has ended at.
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
static bool isReadable(std::string path)
Checks whether the given file is readable.
long onUpdOpenRecent(FXObject *, FXSelector, void *)
Determines whether opening a recent file is enabled.
long onCmdEditChosen(FXObject *, FXSelector, void *)
Called on menu Edit->Edit Chosen.
static MTRand myGamingRNG
A random number generator used to choose a gaming sound.
bool gaming
whether the application is in gaming mode or not
Gaming mode - menu entry.
const bool myOsgView
whether to load the OpenSceneGraph view
Loads a file previously loaded.
GUIColorer laneColorer
The lane colorer.
const std::string & getFileName() const
void select(GUIGlID id, bool update=true)
Adds the object with the given id.
GUIVisualizationSettings * getVisualisationSettings() const
get visualitation settings
void addRecentFile(const FX::FXString &f, const bool isNet)
FXToolBarShell * myToolBarDrag4
long onUpdStop(FXObject *, FXSelector, void *)
Determines whether "stop" is enabled.
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
Somebody wants our clipped text.
virtual void setValue(FXdouble value)
Change current value.
void setNumberFormat(FXint prec, FXbool bExp=FALSE)
static bool gRunAfterLoad
the simulation shall start direct after loading
std::string time2string(SUMOTime t)
void setToolBarVisibility(const bool value)
about toggled gaming status
int myViewNumber
The current view number.
virtual bool simulationIsStopable() const
Edit simulation breakpoints.
virtual void detach()
Detaches the tool/menu bar.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
Editor for the list of chosen objects.
void setThickness(const FXint width)
set/get segment width - must be less than half the segment length
FXMenuPane * myLocatorMenu
FXGLVisual * myGLVisual
The gl-visual used.
GUISUMOAbstractView * openNewView(GUISUMOViewParent::ViewType vt=GUISUMOViewParent::VIEW_2D_OPENGL)
long onCmdLocate(FXObject *, FXSelector, void *)
locator-callback
long onCmdStop(FXObject *, FXSelector, void *)
Called on "stop".
FXMutex myEventMutex
the mutex for the waiting semaphore
toogle delay between alternative value
long onCmdNetedit(FXObject *, FXSelector, void *)
Called on menu Edit->Netedit.
FXString gCurrentFolder
The folder used as last.
void handleEvent_Screenshot(GUIEvent *e)
virtual void copyViewportTo(GUISUMOAbstractView *view)
copy the viewport to the given view
void loadConfigOrNet(const std::string &file, bool isNet)
Open a new microscopic 3D view.
void show()
sets the focus after the window is created
Reload the previously loaded simulation.
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false)
Runs the given handler on the given file; returns if everything's ok.
const SUMOTime myBegin
the time the simulation shall start with
long onCmdNewView(FXObject *, FXSelector, void *)
Called if a new view shall be opened (2D view)
static bool gDemoAutoReload
the simulation shall reload when it has ended (demo)
long onUpdOpen(FXObject *, FXSelector, void *)
Determines whether opening is enabled.
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
MSNet::SimulationState getReason() const
Returns the reason the simulation has ended due.
virtual bool simulationIsStepable() const
void addDecals(const std::vector< Decal > &decals)
add decals
#define WRITE_WARNING(msg)
FXToolBarShell * myToolBarDrag2
void setFgColor(FXColor clr)
set/get forground color
static OptionsCont & getOptions()
Retrieves the options.
void checkGamingEvents()
handles additional game-related events
FXMenuPane * myFileMenu
the submenus
void setActive(int scheme)
void addSeparator()
Adds a a separator to this log window.
std::vector< SUMOTime > & getBreakpoints()
SUMOReal getSpeedLimit() const
Returns the speed limit of the edge The speed limit of the first lane is retured; should probably be...
virtual void create()
Creates the main window (required by FOX)
Representation of a lane in the micro simulation (gui-version)
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
FXHorizontalFrame * myCartesianFrame
FXRecentFiles myRecentNets
List of recent nets.
const std::vector< std::string > mySettingsFiles
the name of the settings file to load
void loadConfigOrNet(const std::string &file, bool isNet)
begins the loading of the given file
RandomDistributor< std::string > getEventDistribution(const std::string &id)
const std::string & getMsg() const
Returns the message.
Editor for simulation breakpoints.
const std::string myFile
the name of the file to save to
Locate addtional structure - button.
bool myAmGaming
information whether the gui is currently in gaming mode
bool isOnRoad() const
Returns the information whether the vehicle is on a road (is simulated)
static FXint fxexecute(FXString link)
bool myShowTimeAsHMS
whether to show time as hour:minute:second
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
void handleEvent_Message(GUIEvent *e)
std::vector< FXMDIChild * > mySubWindows
static void clearTextures()
clears loaded textures
long onCmdOpenRecent(FXObject *, FXSelector, void *)
Called on opening a recent file.
static const RGBColor GREEN
An error occured during the simulation step.
long onKeyPress(FXObject *o, FXSelector sel, void *data)
handle keys
Locator configuration - menu entry.
void updateTimeLCD(SUMOTime time)
updates the simulation time display
void setRange(FXdouble lo, FXdouble hi)
Change the spinner's range.
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
FXCondition myEventCondition
the semaphore when waiting for event completion
void handleEvent_SimulationEnded(GUIEvent *e)
bool myHaveNotifiedAboutSimEnd
whether the simulation end was already announced
virtual SUMOReal getXPos() const =0
Returns the x-offset of the field to show stored in this changer.
std::string myConfigPattern
Input file pattern.
static unsigned long runHiddenCommand(const std::string &cmd)
run a shell command without popping up any windows (particuarly on win32)
long onCmdEditBreakpoints(FXObject *, FXSelector, void *)
Called on menu Edit->Edit Breakpoints.
static GUINet * getGUIInstance()
Returns the pointer to the unique instance of GUINet (singleton).
SUMOReal getJamSoundTime()
SUMOReal myJamSoundTime
waiting time after which vehicles trigger jam sounds
std::vector< FXButton * > myStatButtons
Buttons showing and running values and triggering statistic windows.
long onCmdStart(FXObject *, FXSelector, void *)
Called on "play".
SUMOReal getDelay() const
Returns the parsed delay.
ShapeContainer & getShapeContainer()
Returns the shapes container.
long onCmdAppSettings(FXObject *, FXSelector, void *)
Opens the application settings menu (Settings->Application Settings...)
const std::vector< SUMOTime > & getBreakpoints() const
Returns the parsed breakpoints.
virtual void buildToolBars()
Builds the tool bar.
void setHorizontal(const FXint len)
set/get segment horizontal length - must be more than twice the segment width
int myPreviousCollisionNumber
const MSEdge * getEdge() const
Returns the edge the vehicle is currently at.
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
The Simulation delay control.
FXMenuPane * mySettingsMenu
The Simulation execution thread.
static void init(FXApp *a)
Initiate GUIIconSubSys.
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
virtual bool simulationIsStartable() const
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void setVertical(const FXint len)
set/get segment vertical length - must be more than twice the segment width
static int _str2int(const std::string &sData)
converts a string into the integer value described by it by calling the char-type converter...
FXToolBarShell * myMenuBarDrag
SVCPermissions getPermissions() const
Returns the vehicle class permissions for this lane.
bool hasContainers() const
Returns whether containers are simulated.
ViewType
Available view types.
virtual void eventOccured()
GUIRunThread * myRunThread
long onCmdListInternal(FXObject *, FXSelector, void *)
Toggle listing of internal structures.
long onUpdReload(FXObject *, FXSelector, void *)
Determines whether reloading is enabled.
long onCmdDelayToggle(FXObject *, FXSelector, void *)
Called on "delay toggle".
bool isGaming() const
return whether the gui is in gaming mode
GUIPerspectiveChanger & getChanger() const
get changer
const std::string myFile
the name of the loaded file
FXToolBarShell * myToolBarDrag3
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
bool simulationAvailable() const
std::vector< std::string > getStringVector(const std::string &name) const
Returns the list of string-vector-value of the named option (only for Option_String) ...
The application's "About" - dialog.
FXGLCanvas * getBuildGLCanvas() const
bool myAmFullScreen
whether to show the window in full screen mode
Locate junction - button.
long onCmdAbout(FXObject *, FXSelector, void *)
Shows the about dialog.
FXCursor * getDefaultCursor()
long onCmdClose(FXObject *, FXSelector, void *)
Called on menu File->Close.
send when a error occured
Send when a screenshot is requested; View and file name are stored within the event.
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
Load additional file with poi and polygons.
void setTarget(FXObject *tgt)
set the target
bool myListInternal
information whether the locator should list internal structures
long onCmdOpenShapes(FXObject *, FXSelector, void *)
Called on menu File->Load Shapes.
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
The dialog to change the application (gui) settings.
Send when the simulation is over; The reason and the time step are stored within the event...
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
Called if the message window shall be cleared.
void setSnapshots(GUISUMOAbstractView *view) const
Makes a snapshot if it has been parsed.
std::string makeSnapshot(const std::string &destFile)
Takes a snapshots and writes it into the given file.
FXMenuPane * mySelectByPermissions
FXMutex & getBreakpointLock()
MSTransportableControl & getPersonControl()
Returns the person control.
virtual void fillMenuBar()
Builds the menu bar.
T get(MTRand *which=0) const
Draw a sample of the distribution.
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
virtual SUMOReal getZPos() const =0
Returns the camera height corresponding to the current zoom factor.
Application settings - menu entry.
A single child window which contains a view of the simulation area.
FXEX::FXLCDLabel * myWaitingTimeLabel
performance indicators
static bool gQuitOnEnd
the window shall be closed when the simulation has ended
long onCmdGaming(FXObject *, FXSelector, void *)
Toggle gaming mode.
FXStatusBar * myStatusbar
The status bar.
void unlock()
release mutex lock
FXMenuBar * myMenuBar
The application menu bar.
FXMenuPane * myWindowsMenu
FXToolBarShell * myToolBarDrag5
FXToolBarShell * myToolBarDrag7
long onCmdFullScreen(FXObject *, FXSelector, void *)
Toggle full screen mode.
GUIVisualizationSettings & getDefault()
Returns the default scheme.
GUISUMOAbstractView *const myView
the view to save
FXToolBarShell * myToolBarDrag6
static const RGBColor RED
RandomDistributor< std::string > myCollisionSounds
void saveViewport(const SUMOReal x, const SUMOReal y, const SUMOReal z)
Makes the given viewport the default.
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
Called on menu File->Open Configuration.
long onRunThreadEvent(FXObject *, FXSelector, void *)
Called on an event from the simulation thread.
The XML-Handler for shapes loading network loading.
void setGroove(const FXint width)
set/get groove width - must be less than segment width
FXLabel * myCartesianCoordinate
Labels for the current cartesian and geo-coordinate.
void prepareDestruction()
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
FXDEFMAP(GUIApplicationWindow) GUIApplicationWindowMap[]
MFXMutex myTrackerLock
A lock to make the removal and addition of trackers secure.
int getWaitingVehicleNo() const
Returns the number of waiting vehicles.
virtual void sendBlockingEvent(GUIEvent *event)
Sends an event from the application thread to the GUI and waits until it is handled.
void setSelector(FXSelector sel)
set the selector
MSInsertionControl & getInsertionControl()
Returns the insertion control.
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
MFXEventQue< GUIEvent * > myEvents
List of got requests.
static const MSEdgeVector & getAllEdges()
Returns all edges with a numerical id.
static void close()
close GUIIconSubSys
Fullscreen mode - menu entry.
long onUpdAddView(FXObject *, FXSelector, void *)
Determines whether adding a view is enabled.
long onCmdLocate(FXObject *, FXSelector, void *)
Called on menu commands from the Locator menu.
FXEX::FXLCDLabel * myTimeLossLabel
FXRealSpinDial * mySimDelayTarget
FXHorizontalFrame * myGeoFrame
Open a new microscopic view.
A storage for options typed value containers)
void setStatusBarText(const std::string &text)
Locate polygons - button.
FXRecentFiles myRecentConfigs
List of recent config files.
Open editor for selections.
SUMOReal getMaxSpeed() const
Get vehicle's maximum speed [m/s].
SUMOTime getCurrentSimTime() const
FXdouble getValue() const
Return current value.
const SUMOReal SUMO_const_haltingSpeed
the speed threshold at which vehicles are considered as halting
void create()
Creates the widget (and the icons)
void clear()
Clears the list of selected objects.
FXToolBarShell * myToolBarDrag1
for some menu detaching fun
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
std::map< std::string, SUMOVehicle * >::const_iterator constVehIt
Definition of the internal vehicles map iterator.
FXEX::FXThreadEvent myRunThreadEvent
io-event with the run-thread
FXMDIClient * myMDIClient
The multi view panel.
send when a simulation has been loaded
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
send when a warning occured
GUIGlID getGlID() const
Returns the numerical id of the object.
FXToolBar * myToolBar1
The application tool bar.
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
Called on menu File->Open Network.
long onUpdNeedsSimulation(FXObject *, FXSelector, void *)
Determines whether some buttons which require an active simulation may be shown.
void setIncrements(FXdouble fine, FXdouble norm, FXdouble coarse)
Change all spinner increment.
An XML-handler for visualisation schemes.
static std::string getStateMessage(SimulationState state)
Returns the message to show if a certain state occurs.
const std::string & getViewType() const
Returns the parsed view type.
GUIEventType getOwnType() const
returns the event type
static FXString getTitleText(const FXString &appname, FXString filename="")
Returns the title text in dependance to an optional file name.
long onLoadThreadEvent(FXObject *, FXSelector, void *)
Called on an event from the loading thread.
virtual GUISUMOAbstractView * init(FXGLCanvas *share, GUINet &net, ViewType type)
"Initialises" this window by building the contents
The class responsible for building and deletion of vehicles.
void setText(FXString lbl)
manipulate text in LCD label
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
const SUMOTime myEnd
the time the simulation shall end with
void clear()
Clears the window.
virtual SUMOReal getYPos() const =0
Returns the y-offset of the field to show stored in this changer.
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out ...
int getRunningNumber() const
Returns the number of build and inserted, but not yet deleted transportables.
long onCmdTimeToggle(FXObject *, FXSelector, void *)
Called on "time toggle".
long onKeyPress(FXObject *o, FXSelector sel, void *data)
handle keys
void handleEvent_SimulationStep(GUIEvent *e)
#define WRITE_MESSAGE(msg)
FXEX::FXLCDLabel * myLCDLabel
the simulation step display
SUMOTime getSimEndTime() const
FXMenuPane * myControlMenu
GUISelectedStorage gSelected
A global holder of selected objects.
int getCollisionCount() const
return the number of collisions
A logging window for the gui.
send when a simulation step has been performed
long onUpdStep(FXObject *, FXSelector, void *)
Determines whether "step" is enabled.
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
SUMOReal getSpeed() const
Returns the vehicle's current speed.
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
GUINet * myNet
the loaded net
Perform a single simulation step.
send when a status change occured
constVehIt loadedVehEnd() const
Returns the end of the internal vehicle map.
virtual void addToWindowsMenu(FXMenuPane *)
long onUpdStart(FXObject *sender, FXSelector, void *ptr)
Determines whether "play" is enabled.
SUMOReal getOverallProb() const
Return the sum of the probabilites assigned to the members.
MSTransportableControl & getContainerControl()
Returns the container control.
The main window of the SUMO-gui.