89 #ifdef CHECK_MEMORY_LEAKS 119 FXMAPFUNC(SEL_COMMAND,
MID_NEW_OSGVIEW, GUIApplicationWindow::onCmdNewOSG),
175 FXIMPLEMENT(
GUIApplicationWindow, FXMainWindow, GUIApplicationWindowMap, ARRAYNUMBER(GUIApplicationWindowMap))
186 const std::
string& configPattern)
188 myLoadThread(0), myRunThread(0),
190 myAlternateSimDelay(0),
191 myRecentNets(a, "nets"), myConfigPattern(configPattern),
192 hadDependentBuild(false),
193 myShowTimeAsHMS(false),
194 myAmFullScreen(false),
195 myHaveNotifiedAboutSimEnd(false),
218 LAYOUT_SIDE_TOP | LAYOUT_FILL_X | FRAME_RAISED);
229 myStatusbar =
new FXStatusBar(
this, LAYOUT_SIDE_BOTTOM | LAYOUT_FILL_X | FRAME_RAISED);
232 new FXHorizontalFrame(
myStatusbar, LAYOUT_FIX_WIDTH | LAYOUT_FILL_Y | LAYOUT_RIGHT | FRAME_SUNKEN,
233 0, 0, 20, 0, 0, 0, 0, 0, 0, 0);
234 myGeoCoordinate =
new FXLabel(
myGeoFrame,
"N/A\t\tOriginal coordinate (before coordinate transformation in NETCONVERT)", 0, LAYOUT_CENTER_Y);
236 new FXHorizontalFrame(
myStatusbar, LAYOUT_FIX_WIDTH | LAYOUT_FILL_Y | LAYOUT_RIGHT | FRAME_SUNKEN,
237 0, 0, 20, 0, 0, 0, 0, 0, 0, 0);
243 SPLITTER_REVERSED | SPLITTER_VERTICAL | LAYOUT_FILL_X | LAYOUT_FILL_Y | SPLITTER_TRACKING | FRAME_RAISED | FRAME_THICK);
245 LAYOUT_FILL_X | LAYOUT_FILL_Y | FRAME_SUNKEN | FRAME_THICK);
248 FXMDIClient::ID_MDI_MENUWINDOW, LAYOUT_LEFT);
250 FXMDIClient::ID_MDI_MENUCLOSE, FRAME_RAISED | LAYOUT_RIGHT);
252 FXMDIClient::ID_MDI_MENURESTORE, FRAME_RAISED | LAYOUT_RIGHT);
254 FXMDIClient::ID_MDI_MENUMINIMIZE, FRAME_RAISED | LAYOUT_RIGHT);
279 if (getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 0) {
280 setX(getApp()->reg().readIntEntry(
"SETTINGS",
"x", 150));
281 setY(getApp()->reg().readIntEntry(
"SETTINGS",
"y", 150));
282 setWidth(getApp()->reg().readIntEntry(
"SETTINGS",
"width", 600));
283 setHeight(getApp()->reg().readIntEntry(
"SETTINGS",
"height", 400));
285 gCurrentFolder = getApp()->reg().readStringEntry(
"SETTINGS",
"basedir",
"");
286 FXMainWindow::create();
304 FXint width = getApp()->getNormalFont()->getTextWidth(
"8", 1) * 24;
308 show(PLACEMENT_SCREEN);
309 if (getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 1) {
312 myShowTimeAsHMS = (getApp()->reg().readIntEntry(
"gui",
"timeasHMS", 0) == 1);
350 FXMainWindow::detach();
362 "&Open Simulation...\tCtrl+O\tOpen a simulation (Configuration file).",
365 "Open &Network...\tCtrl+N\tOpen a network.",
368 "Open Shapes \tCtrl+P\tLoad POIs and Polygons for visualization.",
371 "&Reload\tCtrl+R\tReloads the simulation / the network.",
375 "Close\tCtrl+W\tClose the simulation.",
378 FXMenuSeparator* sep1 =
new FXMenuSeparator(
myFileMenu);
380 sep1->setSelector(FXRecentFiles::ID_ANYFILES);
394 FXMenuSeparator* sep2 =
new FXMenuSeparator(
myFileMenu);
396 sep2->setSelector(FXRecentFiles::ID_ANYFILES);
412 "&Quit\tCtrl+Q\tQuit the Application.",
418 for (std::vector<std::string>::iterator it = vehicleClasses.begin(); it != vehicleClasses.end(); ++it) {
424 new FXMenuTitle(
myMenuBar,
"&Edit", NULL, myEditMenu);
425 new FXMenuCommand(myEditMenu,
426 "Edit Selected...\tCtrl+E\tOpens a dialog for editing the list of selected items.",
428 new FXMenuCascade(myEditMenu,
429 "Select lanes which allow...\t\tOpens a menu for selecting a vehicle class by which to selected lanes.",
431 new FXMenuSeparator(myEditMenu);
432 new FXMenuCommand(myEditMenu,
433 "Edit Breakpoints...\tCtrl+B\tOpens a dialog for editing breakpoints.",
435 new FXMenuSeparator(myEditMenu);
436 new FXMenuCommand(myEditMenu,
437 "Open in Netedit...\tCtrl+T\tOpens the netedit application with the current network.",
444 "Application Settings...\t\tOpen a Dialog for Application Settings editing.",
447 "Gaming Mode\tCtrl+G\tToggle gaming mode on/off.",
450 "Full Screen Mode\tCtrl+F\tToggle full screen mode on/off.",
456 "Locate &Junctions\t\tOpen a Dialog for Locating a Junction.",
459 "Locate &Edges\t\tOpen a Dialog for Locating an Edge.",
463 "Locate &Vehicles\t\tOpen a Dialog for Locating a Vehicle.",
467 "Locate &Persons\t\tOpen a Dialog for Locating a Person.",
470 "Locate &TLS\t\tOpen a Dialog for Locating a Traffic Light.",
473 "Locate &Additional\t\tOpen a Dialog for Locating an Additional Structure.",
476 "Locate P&oI\t\tOpen a Dialog for Locating a Point of Intereset.",
479 "Locate Po&lygon\t\tOpen a Dialog for Locating a Polygon.",
483 "Show Internal Structures\t\tShow internal junctions and streets in locator Dialog.",
489 "Run\tCtrl+A\tStart running the simulation.",
492 "Stop\tCtrl+S\tStop running the simulation.",
495 "Step\tCtrl+D\tPerform one simulation step.",
502 "Show Status Line\t\tToggle the Status Bar on/off.",
505 "Show Message Window\t\tToggle the Message Window on/off.",
508 "Show Simulation Time\t\tToggle the Simulation Time on/off.",
511 "Show Simulation Delay\t\tToggle the Simulation Delay Entry on/off.",
528 sep1->setSelector(FXMDIClient::ID_MDI_ANY);
536 "Clear Message Window\t\tClear the message window.",
555 LAYOUT_DOCK_NEXT | LAYOUT_SIDE_TOP | FRAME_RAISED);
559 new FXButton(
myToolBar1,
"\t\tOpen a simulation (Configuration file).",
561 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
562 new FXButton(
myToolBar1,
"\t\tOpen a network.",
564 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
565 new FXButton(
myToolBar1,
"\t\tReloads the simulation / the network.",
567 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
573 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
576 new FXButton(
myToolBar2,
"\t\tStart the loaded simulation.",
578 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
579 new FXButton(
myToolBar2,
"\t\tStop the running simulation.",
581 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
582 new FXButton(
myToolBar2,
"\t\tPerform a single simulation step.",
584 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
590 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
594 BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
606 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED | LAYOUT_FILL_Y);
610 BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
613 LAYOUT_TOP | FRAME_SUNKEN | FRAME_THICK | LAYOUT_FILL_Y);
623 LAYOUT_DOCK_SAME | LAYOUT_SIDE_TOP | FRAME_RAISED);
627 new FXButton(
myToolBar5,
"\t\tOpen a new microscopic view.",
629 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
631 new FXButton(
myToolBar5,
"\t\tOpen a new 3D view.",
633 ICON_ABOVE_TEXT | BUTTON_TOOLBAR | FRAME_RAISED | LAYOUT_TOP | LAYOUT_LEFT);
642 new FXLabel(
myToolBar6,
"Waiting Time:\t\tTime spent waiting accumulated for all vehicles", 0, LAYOUT_TOP | LAYOUT_LEFT);
654 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);
668 getApp()->reg().writeIntEntry(
"SETTINGS",
"x", getX());
669 getApp()->reg().writeIntEntry(
"SETTINGS",
"y", getY());
670 getApp()->reg().writeIntEntry(
"SETTINGS",
"width", getWidth());
671 getApp()->reg().writeIntEntry(
"SETTINGS",
"height", getHeight());
673 getApp()->reg().writeStringEntry(
"SETTINGS",
"basedir",
gCurrentFolder.text());
674 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", isMaximized() ? 1 : 0);
675 getApp()->reg().writeIntEntry(
"gui",
"timeasHMS",
myShowTimeAsHMS ? 1 : 0);
684 FXMenuCommand* mc =
dynamic_cast<FXMenuCommand*
>(menu);
685 if (mc->getText() ==
"Edit Selected...") {
695 for (std::vector<MSLane*>::const_iterator it = lanes.begin(); it != lanes.end(); ++it) {
738 FXRegistry reg(
"Netedit",
"DLR");
745 std::string netedit =
"netedit";
746 const char* sumoPath = getenv(
"SUMO_HOME");
748 std::string newPath = std::string(sumoPath) +
"/bin/netedit";
758 cmd =
"start " + cmd;
770 FXFileDialog opendialog(
this,
"Open Simulation Configuration");
772 opendialog.setSelectMode(SELECTFILE_EXISTING);
777 if (opendialog.execute()) {
779 std::string file = opendialog.getFilename().text();
790 FXFileDialog opendialog(
this,
"Open Network");
792 opendialog.setSelectMode(SELECTFILE_EXISTING);
793 opendialog.setPatternList(
"SUMO nets (*.net.xml)\nAll files (*)");
797 if (opendialog.execute()) {
799 std::string file = opendialog.getFilename().text();
810 FXFileDialog opendialog(
this,
"Open Shapes");
812 opendialog.setSelectMode(SELECTFILE_EXISTING);
813 opendialog.setPatternList(
"Additional files (*.xml)\nAll files (*)");
817 if (opendialog.execute()) {
819 std::string file = opendialog.getFilename().text();
833 getApp()->beginWaitCursor();
846 myStatusbar->getStatusLine()->setText(
"Already loading!");
849 std::string file((
const char*)data);
865 myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
875 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
884 myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
894 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
904 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
913 getApp()->forceRefresh();
921 getApp()->forceRefresh();
930 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
973 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
983 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
993 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1001 sender->handle(
this,
1003 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
1024 d->show(PLACEMENT_OWNER);
1074 getApp()->reg().writeIntEntry(
"SETTINGS",
"x", getX());
1075 getApp()->reg().writeIntEntry(
"SETTINGS",
"y", getY());
1076 getApp()->reg().writeIntEntry(
"SETTINGS",
"width", getWidth());
1077 getApp()->reg().writeIntEntry(
"SETTINGS",
"height", getHeight());
1079 setDecorations(DECOR_NONE);
1080 place(PLACEMENT_MAXIMIZED);
1099 place(PLACEMENT_VISIBLE);
1100 setDecorations(DECOR_ALL);
1105 setWidth(getApp()->reg().readIntEntry(
"SETTINGS",
"width", 600));
1106 setHeight(getApp()->reg().readIntEntry(
"SETTINGS",
"height", 400));
1107 setX(getApp()->reg().readIntEntry(
"SETTINGS",
"x", 150));
1108 setY(getApp()->reg().readIntEntry(
"SETTINGS",
"y", 150));
1130 GUIApplicationWindow::onCmdNewOSG(FXObject*, FXSelector,
void*) {
1142 about->show(PLACEMENT_OWNER);
1148 FXEvent*
event = (FXEvent*)ptr;
1150 setDNDData(FROM_CLIPBOARD, event->target,
string);
1211 if (ec->
myNet == 0) {
1248 std::string settingsName = settings.
addSettings(view);
1270 setTitle(
"SUMO Interactive Traffic Light");
1280 getApp()->endWaitCursor();
1297 getApp()->forceRefresh();
1321 "\nDo you want to close all open files and views?";
1322 FXuint answer = FXMessageBox::question(
this, MBOX_YES_NO,
"Simulation ended",
"%s", text.c_str());
1349 #ifdef HAVE_INTERNAL 1352 for (; it != end; ++it) {
1386 getApp()->beginWaitCursor();
1399 myStatusbar->getStatusLine()->setText(
"No simulation loaded!");
1403 FXuint opts = MDI_TRACKING;
1469 return getApp()->getDefaultCursor(DEF_ARROW_CURSOR);
1487 myStatusbar->getStatusLine()->setText(text.c_str());
1488 myStatusbar->getStatusLine()->setNormalText(text.c_str());
1500 const bool hideFraction =
myAmGaming || fmod(
TS, 1.) == 0.;
1501 const int BuffSize = 100;
1502 char buffer[BuffSize];
1504 const int hours = (int)fracSeconds / 3600;
1505 const int minutes = ((int)fracSeconds % 3600) / 60;
1506 fracSeconds = fracSeconds - 3600 * hours - 60 * minutes;
1507 const std::string format = (hideFraction ?
1508 "%02d-%02d-%02.0f" :
"%02d-%02d-%06.3f");
1509 snprintf(buffer, BuffSize, format.c_str(), hours, minutes, fracSeconds);
1511 const std::string format = (hideFraction ?
1512 "%13.0f" :
"%13.3f");
1513 snprintf(buffer, BuffSize, format.c_str(), fracSeconds);
1521 const long handled = FXMainWindow::onKeyPress(o, sel, data);
1522 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
1534 const long handled = FXMainWindow::onKeyRelease(o, sel, data);
1535 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
std::vector< FXMainWindow * > myTrackerWindows
Event sent when the the simulation is over.
MFXMutex & getBreakpointLock()
RandomDistributor< std::string > myJamSounds
FXLabel * myGeoCoordinate
GUISUMOAbstractView * getView() const
virtual ~GUIApplicationWindow()
Destructor.
GUILoadThread * myLoadThread
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)
SUMOReal getMaxSpeed() const
Get vehicle's maximum speed [m/s].
long onCmdReload(FXObject *, FXSelector, void *)
Called on reload.
virtual bool simulationIsStepable() const
void appendMsg(GUIEventType eType, const std::string &msg)
Adds new text to the window.
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
MSNet::SimulationState getReason() const
Returns the reason the simulation has ended due.
SUMOTime myAlternateSimDelay
The alternate simulation delay for toggling.
GUIVisualizationSettings * getVisualisationSettings()
send when a message occured
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
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.
const std::string & getViewType() const
Returns the parsed view type.
long onCmdEditChosen(FXObject *, FXSelector, void *)
Called on menu Edit->Edit Chosen.
static MTRand myGamingRNG
A random number generator used to choose a gaming sound.
constVehIt loadedVehBegin() const
Returns the begin of the internal vehicle map.
bool gaming
whether the application is in gaming mode or not
virtual SUMOReal getZoom() const =0
Returns the zoom factor computed stored in this changer.
Gaming mode - menu entry.
const bool myOsgView
whether to load the OpenSceneGraph view
Loads a file previously loaded.
const std::string & getMsg() const
Returns the message.
GUIColorer laneColorer
The lane colorer.
void select(GUIGlID id, bool update=true)
Adds the object with the given id.
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)
virtual bool simulationIsStartable() const
static bool gRunAfterLoad
the simulation shall start direct after loading
std::string time2string(SUMOTime t)
void setToolBarVisibility(const bool value)
about toggled gaming status
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
void setActive(size_t scheme)
const std::vector< SUMOTime > & getBreakpoints() const
Returns the parsed breakpoints.
static bool dictionary(const std::string &id, MSEdge *edge)
Inserts edge into the static dictionary Returns true if the key id isn't already in the dictionary...
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)
void loadConfigOrNet(const std::string &file, bool isNet)
Open a new microscopic 3D view.
Reload the previously loaded simulation.
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
bool isGaming() const
return whether the gui is in gaming mode
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)
GUIGlID getGlID() const
Returns the numerical id of the object.
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
virtual FXGLCanvas * getBuildGLCanvas() const
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
void addDecals(const std::vector< Decal > &decals)
#define WRITE_WARNING(msg)
FXToolBarShell * myToolBarDrag2
void setViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
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 addSeparator()
Adds a a separator to this log window.
std::vector< SUMOTime > & getBreakpoints()
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
SUMOReal getDelay() const
Returns the parsed delay.
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)
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
Editor for simulation breakpoints.
const std::string myFile
the name of the file to save to
Locate addtional structure - button.
GUIPerspectiveChanger & getChanger() const
bool myAmGaming
information whether the gui is currently in gaming mode
static FXint fxexecute(FXString link)
bool myShowTimeAsHMS
whether to show time as hour:minute:second
void handleEvent_Message(GUIEvent *e)
std::vector< FXMDIChild * > mySubWindows
static void clearTextures()
clears loaded textures
GUIEventType getOwnType() const
returns the event type
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.
FXCondition myEventCondition
the semaphore when waiting for event completion
void handleEvent_SimulationEnded(GUIEvent *e)
FXdouble getValue() const
Return current value.
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.
SUMOReal getJamSoundTime()
SUMOReal myJamSoundTime
waiting time after which vehicles trigger jam sounds
long onCmdStart(FXObject *, FXSelector, void *)
Called on "play".
ShapeContainer & getShapeContainer()
Returns the shapes container.
long onCmdAppSettings(FXObject *, FXSelector, void *)
Opens the application settings menu (Settings->Application Settings...)
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
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
The Simulation delay control.
FXMenuPane * mySettingsMenu
The Simulation execution thread.
static void init(FXApp *a)
size_t myViewNumber
The current view number.
T get(MTRand *which=0) const
Draw a sample of the distribution.
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
void setSnapshots(GUISUMOAbstractView *view) const
Makes a snapshot if it has been parsed.
void setVertical(const FXint len)
set/get segment vertical length - must be more than twice the segment width
FXToolBarShell * myMenuBarDrag
const std::string getBuildName(const std::string &version)
attach some build flags to the version string
SUMOTime getCurrentSimTime() const
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".
const std::string myFile
the name of the loaded file
FXToolBarShell * myToolBarDrag3
The application's "About" - dialog.
void setStatusBarText(const std::string &)
bool myAmFullScreen
whether to show the window in full screen mode
Locate junction - button.
long onCmdAbout(FXObject *, FXSelector, void *)
Shows the about dialog.
const std::string & getFileName() const
FXCursor * getDefaultCursor()
long onCmdClose(FXObject *, FXSelector, void *)
Called on menu File->Close.
void saveViewport(const SUMOReal x, const SUMOReal y, const SUMOReal zoom)
Makes the given viewport the default.
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)
SVCPermissions getPermissions() const
Returns the vehicle class permissions for this lane.
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)
virtual bool simulationIsStopable() const
The dialog to change the application (gui) settings.
SUMOReal getSpeedLimit() const
Returns the speed limit of the edge The speed limit of the first lane is retured; should probably be...
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.
std::string makeSnapshot(const std::string &destFile)
Takes a snapshots and writes it into the given file.
FXMenuPane * mySelectByPermissions
virtual void fillMenuBar()
Builds the menu bar.
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
SUMOReal getOverallProb() const
Return the sum of the probabilites assigned to the members.
FXGLCanvas * getBuildGLCanvas() const
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
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()
FXDEFMAP(GUIApplicationWindow) GUIApplicationWindowMap[]
MFXMutex myTrackerLock
A lock to make the removal and addition of trackers secure.
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
MFXEventQue< GUIEvent * > myEvents
List of got requests.
Fullscreen mode - menu entry.
long onUpdAddView(FXObject *, FXSelector, void *)
Determines whether adding a view is enabled.
SUMOTime getSimEndTime() const
long onCmdLocate(FXObject *, FXSelector, void *)
Called on menu commands from the Locator menu.
FXEX::FXLCDLabel * myTimeLossLabel
FXRealSpinDial * mySimDelayTarget
FXHorizontalFrame * myGeoFrame
static size_t dictSize()
Returns the number of edges.
Open a new microscopic view.
Locate polygons - button.
FXRecentFiles myRecentConfigs
List of recent config files.
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
Open editor for selections.
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
SUMOReal getSpeed() const
Returns the vehicle's current speed.
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
bool simulationAvailable() const
static FXColor getFXColor(const RGBColor &col)
converts FXColor to RGBColor
send when a warning occured
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.
SUMOTime getTimeStep() const
Returns the time step the simulation has ended at.
void setIncrements(FXdouble fine, FXdouble norm, FXdouble coarse)
Change all spinner increment.
static const bool gUseMesoSim
An XML-handler for visualisation schemes.
static std::string getStateMessage(SimulationState state)
Returns the message to show if a certain state occurs.
constVehIt loadedVehEnd() const
Returns the end of the internal vehicle map.
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
const MSEdge * getEdge() const
Returns the edge the vehicle is currently at.
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 ...
long onCmdTimeToggle(FXObject *, FXSelector, void *)
Called on "time toggle".
bool isOnRoad() const
Returns the information whether the vehicle is on a road (is simulated)
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
FXMenuPane * myControlMenu
GUISelectedStorage gSelected
A global holder of selected objects.
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)
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
GUINet * myNet
the loaded net
Perform a single simulation step.
virtual void addToWindowsMenu(FXMenuPane *)
long onUpdStart(FXObject *sender, FXSelector, void *ptr)
Determines whether "play" is enabled.
The main window of the SUMO-gui.