181 FXIMPLEMENT(
GNEApplicationWindow, FXMainWindow, GNEApplicationWindowMap, ARRAYNUMBER(GNEApplicationWindowMap))
187 #pragma warning(push) 188 #pragma warning(disable: 4355) 194 myRecentNets(a,
"nets"),
195 myConfigPattern(configPattern),
196 hadDependentBuild(false),
214 WRITE_ERROR(
"DEBUG: GNEApplicationWindow::dependentBuild called twice");
235 myGeoCoordinate =
new FXLabel(
myGeoFrame,
"N/A\t\tOriginal coordinate (before coordinate transformation in NETCONVERT)", 0, LAYOUT_CENTER_Y);
266 getAccelTable()->addAccel(parseAccel(
"m"),
this, FXSEL(SEL_COMMAND,
MID_GNE_MODE_MOVE));
271 getAccelTable()->addAccel(parseAccel(
"t"),
this, FXSEL(SEL_COMMAND,
MID_GNE_MODE_TLS));
275 getAccelTable()->addAccel(parseAccel(
"Esc"),
this, FXSEL(SEL_COMMAND,
MID_GNE_ABORT));
276 getAccelTable()->addAccel(parseAccel(
"Del"),
this, FXSEL(SEL_COMMAND,
MID_GNE_HOTKEY_DEL));
278 getAccelTable()->addAccel(parseAccel(
"F12"),
this, FXSEL(SEL_COMMAND,
MID_GNE_FOCUS_FRAME));
279 getAccelTable()->addAccel(parseAccel(
"v"),
this, FXSEL(SEL_COMMAND,
MID_EDITVIEWPORT));
285 gCurrentFolder = getApp()->reg().readStringEntry(
"SETTINGS",
"basedir",
"");
286 FXMainWindow::create();
294 FXint textWidth = getApp()->getNormalFont()->getTextWidth(
"8", 1) * 22;
298 show(PLACEMENT_DEFAULT);
300 if (getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 1) {
338 FXMainWindow::detach();
349 "&New Network...\tCtrl+N\tCreate a new network.",
352 "&Open Network...\tCtrl+O\tOpen a SUMO network.",
355 "Open Configura&tion...\tCtrl+T\tOpen a NETCONVERT configuration file.",
358 "Import &Foreign Network...\t\tImport a foreign network such as OSM.",
361 "Load S&hapes...\tCtrl+P\tLoad shapes into the network view.",
364 "Load A&dditionals...\tCtrl+D\tLoad additional elements.",
367 "&Reload\tCtrl+R\tReloads the network.",
370 "&Save Network...\tCtrl+S\tSave the network.",
373 "Save Net&work As...\tCtrl+Shift+S\tSave the network in another file.",
376 "Save plain XM&L...\tCtrl+L\tSave plain xml representation the network.",
379 "Save &joined junctions...\tCtrl+J\tSave log of joined junctions (allows reproduction of joins).",
382 "Save Shapes\tCtrl+Shift+P\tSave shapes elements.",
386 "Save Shapes As...\t\tSave shapes elements in another files.",
389 "Save Additionals\tCtrl+Shift+D\tSave additional elements.",
393 "Save Additionals As...\t\tSave additional elements in another file.",
397 "Close\tCtrl+W\tClose the net&work.",
400 FXMenuSeparator* sep1 =
new FXMenuSeparator(
myFileMenu);
402 sep1->setSelector(FXRecentFiles::ID_ANYFILES);
416 FXMenuSeparator* sep2 =
new FXMenuSeparator(
myFileMenu);
418 sep2->setSelector(FXRecentFiles::ID_ANYFILES);
434 "&Quit\tCtrl+Q\tQuit the Application.",
443 "&Undo\tCtrl+Z\tUndo the last change.",
446 "&Redo\tCtrl+Y\tRedo the last change.",
453 "&Edge mode\tE\tCreate junction and edges.",
456 "&Move mode\tM\tMove elements.",
459 "&Delete mode\tD\tDelete elements.",
462 "&Inspect mode\tI\tInspect elements and change their attributes.",
465 "&Select mode\tS\tSelect elements.",
468 "&Connection mode\tC\tEdit connections between lanes.",
471 "&Traffic light mode\tT\tEdit traffic lights over junctions.",
474 "&Additional mode\tA\tCreate additional elements.",
477 "C&rossing mode\tR\tCreate crossings between edges.",
480 "&POI-Poly mode\tP\tCreate Points-Of-Interest and polygons.",
494 "Compute Junctions\tF5\tComputes junction shape and logic.",
497 "Compute Junctions with volatile options\tShift+F5\tComputes junction shape and logic using volatile junctions.",
500 "Clean Junctions\tF6\tRemoves solitary junctions.",
503 "Join Selected Junctions\tF7\tJoins selected junctions into a single junction.",
506 "Clean invalid crossings\tF8\tClear invalid crossings.",
509 "Options\tF10\t\tConfigure Processing Options.",
523 "Locate &Junctions\tShift+J\tOpen a Dialog for Locating a Junction.",
526 "Locate &Edges\tShift+E\tOpen a Dialog for Locating an Edge.",
529 "Locate &TLS\tShift+T\tOpen a Dialog for Locating a Traffic Light.",
536 "&Show Status Line\t\tToggle this Status Bar on/off.",
539 "Show &Message Window\t\tToggle the Message Window on/off.",
565 "&Clear Message Window\t\tClear the message window.",
574 "&Online Documentation\tF1\tOpen Online documentation.",
577 "&About\tF2\tAbout netedit.",
585 getApp()->reg().writeIntEntry(
"SETTINGS",
"x", getX());
586 getApp()->reg().writeIntEntry(
"SETTINGS",
"y", getY());
587 getApp()->reg().writeIntEntry(
"SETTINGS",
"width", getWidth());
588 getApp()->reg().writeIntEntry(
"SETTINGS",
"height", getHeight());
589 getApp()->reg().writeStringEntry(
"SETTINGS",
"basedir",
gCurrentFolder.text());
591 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", 1);
593 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", 0);
628 FXFileDialog opendialog(
this,
"Open Netconvert Configuration");
630 opendialog.setSelectMode(SELECTFILE_EXISTING);
635 if (opendialog.execute()) {
637 std::string file = opendialog.getFilename().text();
648 FXFileDialog opendialog(
this,
"Open Network");
650 opendialog.setSelectMode(SELECTFILE_EXISTING);
651 opendialog.setPatternList(
"SUMO nets (*.net.xml)\nAll files (*)");
655 if (opendialog.execute()) {
657 std::string file = opendialog.getFilename().text();
675 FXFileDialog opendialog(
this,
"Import Foreign Network");
677 opendialog.setSelectMode(SELECTFILE_EXISTING);
678 FXString osmPattern(
"OSM net (*.osm.xml,*.osm)");
679 opendialog.setPatternText(0, osmPattern);
683 if (opendialog.execute()) {
685 std::string file = opendialog.getFilename().text();
689 if (osmPattern.contains(opendialog.getPattern())) {
690 oc.
set(
"osm-files", file);
691 oc.
set(
"ramps.guess",
"true");
692 oc.
set(
"tls.guess",
"true");
694 throw ProcessError(
"Attempted to import unknown file format '" + file +
"'.");
698 new GNEDialog_Wizard(
this,
"Select Import Options", getWidth(), getHeight());
700 if (wizard->execute()) {
712 FXFileDialog opendialog(
this,
"Open Shapes file");
714 opendialog.setSelectMode(SELECTFILE_EXISTING);
715 opendialog.setPatternList(
"Shape files (*.xml)\nAll files (*)");
719 if (opendialog.execute()) {
721 std::string file = opendialog.getFilename().text();
735 FXFileDialog opendialog(
this,
"Open Additionals file");
737 opendialog.setSelectMode(SELECTFILE_EXISTING);
738 opendialog.setPatternList(
"Additional files (*.xml)\nAll files (*)");
742 if (opendialog.execute()) {
744 std::string file = opendialog.getFilename().text();
756 additionalHandler.resetLastTag();
769 myStatusbar->getStatusLine()->setText(
"Already loading!");
772 std::string file((
const char*)fileData);
811 sender->handle(
this,
myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), 0);
832 about->show(PLACEMENT_OWNER);
842 FXEvent*
event = (FXEvent*)ptr;
844 setDNDData(FROM_CLIPBOARD, event->target,
string);
885 if (ec->
myNet == 0) {
897 std::string settingsName = settings.
addSettings(view);
908 off.
set(getApp()->reg().readRealEntry(
"viewport",
"x"), getApp()->reg().readRealEntry(
"viewport",
"y"), getApp()->reg().readRealEntry(
"viewport",
"z"));
912 getApp()->endWaitCursor();
924 additionalHandler.resetLastTag();
962 getApp()->beginWaitCursor();
981 FXuint opts = MDI_TRACKING;
985 viewParent->maximize();
1067 return getApp()->getDefaultCursor(DEF_ARROW_CURSOR);
1080 myStatusbar->getStatusLine()->setText(statusBarText.c_str());
1081 myStatusbar->getStatusLine()->setNormalText(statusBarText.c_str());
1205 WRITE_WARNING(
"Keys Shift + F5 (Compute with volatile options) pressed");
1206 WRITE_WARNING(
"Opening FXMessageBox 'Volatile Recomputing'");
1209 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Recompute with volatile options",
1210 "Changes produced in the net due a recomputing with volatile options cannot be undone. Continue?");
1214 WRITE_WARNING(
"Closed FXMessageBox 'Volatile Recomputing' with 'No'");
1216 WRITE_WARNING(
"Closed FXMessageBox 'Volatile Recomputing' with 'ESC'");
1223 WRITE_WARNING(
"Closed FXMessageBox 'Volatile Recomputing' with 'Yes'");
1230 WRITE_WARNING(
"Opening FXMessageBox 'Save additionals before recomputing'");
1232 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Save additionals before recomputing with volatile options",
1233 "Would you like to save additionals before recomputing?");
1237 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before recomputing' with 'No'");
1239 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before recomputing' with 'ESC'");
1244 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before recomputing' with 'Yes'");
1248 "Select name of the additional file",
".xml",
1258 additionalSavePath = FXSystem::getTempDirectory().text() + std::string(
"/tmpAdditionalsNetedit.xml");
1261 getApp()->beginWaitCursor();
1267 WRITE_WARNING(
"Opening FXMessageBox 'Error saving additionals before recomputing'");
1270 FXMessageBox::error(
this, MBOX_OK,
"Saving additionals in temporal folder failed!",
"%s", e.what());
1273 WRITE_WARNING(
"Closed FXMessageBox 'Error saving additionals before recomputing' with 'OK'");
1278 getApp()->endWaitCursor();
1281 additionalSavePath =
"";
1288 WRITE_WARNING(
"Opening FXMessageBox 'Save shapes before recomputing'");
1290 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Save shapes before recomputing with volatile options",
1291 "Would you like to save shapes before recomputing?");
1295 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before recomputing' with 'No'");
1297 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before recomputing' with 'ESC'");
1302 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before recomputing' with 'Yes'");
1306 "Select name of the shape file",
".xml",
1316 shapeSavePath = FXSystem::getTempDirectory().text() + std::string(
"/tmpShapesNetedit.xml");
1319 getApp()->beginWaitCursor();
1325 WRITE_WARNING(
"Opening FXMessageBox 'Error saving shapes before recomputing'");
1328 FXMessageBox::error(
this, MBOX_OK,
"Saving shapes in temporal folder failed!",
"%s", e.what());
1331 WRITE_WARNING(
"Closed FXMessageBox 'Error saving shapes before recomputing' with 'OK'");
1336 getApp()->endWaitCursor();
1387 if (wizard->execute()) {
1400 "Save Network as",
".net.xml",
1408 oc.
set(
"output-file", file.text());
1418 "Select name of the plain-xml edge-file (other names will be deduced from this)",
"",
1425 bool wasSet = oc.
isSet(
"plain-output-prefix");
1426 std::string oldPrefix = oc.
getString(
"plain-output-prefix");
1428 std::string prefix = file.text();
1431 prefix = prefix.substr(0, prefix.size() - 8);
1434 prefix = prefix.substr(0, prefix.size() - 1);
1436 oc.
set(
"plain-output-prefix", prefix);
1437 getApp()->beginWaitCursor();
1445 WRITE_WARNING(
"Opening FXMessageBox 'Error saving plainXML'");
1448 FXMessageBox::error(
this, MBOX_OK,
"Saving plain xml failed!",
"%s", e.what());
1451 WRITE_WARNING(
"Closed FXMessageBox 'Error saving plainXML' with 'OK'");
1458 oc.
set(
"plain-output-prefix", oldPrefix);
1460 oc.
unSet(
"plain-output-prefix");
1462 getApp()->endWaitCursor();
1470 "Select name of the joined-junctions file",
".nod.xml",
1477 bool wasSet = oc.
isSet(
"junctions.join-output");
1478 std::string oldFile = oc.
getString(
"junctions.join-output");
1480 std::string filename = file.text();
1481 oc.
set(
"junctions.join-output", filename);
1482 getApp()->beginWaitCursor();
1488 WRITE_WARNING(
"Opening FXMessageBox 'error saving joined'");
1491 FXMessageBox::error(
this, MBOX_OK,
"Saving joined junctions failed!",
"%s", e.what());
1494 WRITE_WARNING(
"Closed FXMessageBox 'error saving joined' with 'OK'");
1501 oc.
set(
"junctions.join-output", oldFile);
1503 oc.
unSet(
"junctions.join-output");
1505 getApp()->endWaitCursor();
1517 "Select name of the shape file",
".xml",
1527 getApp()->beginWaitCursor();
1535 WRITE_WARNING(
"Opening FXMessageBox 'Error saving shapes'");
1538 FXMessageBox::error(
this, MBOX_OK,
"Saving POIs failed!",
"%s", e.what());
1541 WRITE_WARNING(
"Closed FXMessageBox 'Error saving shapes' with 'OK'");
1545 getApp()->endWaitCursor();
1556 "Select name of the shape file",
".xml",
1572 sender->handle(
this,
myNet == 0 ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), 0);
1579 sender->handle(
this,
myNet == 0 || !
OptionsCont::getOptions().isSet(
"sumo-net-file") ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE), 0);
1588 if (oc.
getString(
"output-file") ==
"") {
1591 getApp()->beginWaitCursor();
1599 WRITE_WARNING(
"Opening FXMessageBox 'error saving network'");
1602 FXMessageBox::error(
this, MBOX_OK,
"Saving Network failed!",
"%s", e.what());
1605 WRITE_WARNING(
"Closed FXMessageBox 'error saving network' with 'OK'");
1610 getApp()->endWaitCursor();
1623 "Select name of the additional file",
".xml",
1634 getApp()->beginWaitCursor();
1642 WRITE_WARNING(
"Opening FXMessageBox 'error saving additionals'");
1645 FXMessageBox::error(
this, MBOX_OK,
"Saving additionals failed!",
"%s", e.what());
1648 WRITE_WARNING(
"Closed FXMessageBox 'error saving additionals' with 'OK'");
1652 getApp()->endWaitCursor();
1664 "Select name of the additional file",
".xml",
1681 bool enable =
myNet != 0 && oc.
isSet(
"output-file");
1682 sender->handle(
this, FXSEL(SEL_COMMAND, enable ? ID_ENABLE : ID_DISABLE), 0);
1684 FXString caption = (
"Save " + oc.
getString(
"output-file")).c_str();
1685 sender->handle(
this, FXSEL(SEL_COMMAND, FXMenuCaption::ID_SETSTRINGVALUE), (
void*)&caption);
1707 WRITE_WARNING(
"Opening FXMessageBox 'Confirm closing network'");
1710 answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
1711 "Confirm closing Network",
"%s",
1712 "You have unsaved changes in the network. Do you wish to quit and discard all changes?");
1716 if (answer == MBOX_CLICKED_QUIT) {
1719 WRITE_WARNING(
"Closed FXMessageBox 'Confirm closing network' with 'Quit'");
1728 }
else if (answer == MBOX_CLICKED_SAVE) {
1745 WRITE_WARNING(
"Closed FXMessageBox 'Confirm closing network' with 'No'");
1747 WRITE_WARNING(
"Closed FXMessageBox 'Confirm closing network' with 'ESC'");
1770 WRITE_WARNING(
"Opening FXMessageBox 'Save additionals before exit'");
1773 FXuint answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
1774 "Save additionals before exit",
"%s",
1775 "You have unsaved additionals. Do you wish to quit and discard all changes?");
1779 if (answer == MBOX_CLICKED_QUIT) {
1781 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before exit' with 'Quit'");
1785 }
else if (answer == MBOX_CLICKED_SAVE) {
1788 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before exit' with 'Yes'");
1800 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before exit' with 'No'");
1802 WRITE_WARNING(
"Closed FXMessageBox 'Save additionals before exit' with 'ESC'");
1819 WRITE_WARNING(
"Opening FXMessageBox 'Save shapes before exit'");
1822 FXuint answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
1823 "Save shapes before exit",
"%s",
1824 "You have unsaved shapes. Do you wish to quit and discard all changes?");
1828 if (answer == MBOX_CLICKED_QUIT) {
1830 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before exit' with 'Quit'");
1833 }
else if (answer == MBOX_CLICKED_SAVE) {
1836 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before exit' with 'Yes'");
1848 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before exit' with 'No'");
1850 WRITE_WARNING(
"Closed FXMessageBox 'Save shapes before exit' with 'ESC'");
1873 const long handled = FXMainWindow::onKeyPress(o, sel, eventData);
1874 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
1886 const long handled = FXMainWindow::onKeyRelease(o, sel, eventData);
1887 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
1914 if (edge == 0 || laneIndex < 0 || edge->getNumLanes() <= laneIndex) {
1915 WRITE_ERROR(
"Lane '" + laneID +
"' to place poi '" + poiID +
"' on is not known.");
1921 if (lanePos < 0 || lanePos > edge->
getLength()) {
1924 return edge->
getLanes()[laneIndex].shape.positionAtOffset(lanePos, -lanePosLat);
std::vector< FXMainWindow * > myTrackerWindows
std::string myConfigPattern
Input file pattern.
FXLabel * myGeoCoordinate
GUISUMOAbstractView * getView() const
FXMenuBar * myMenuBar
The application menu bar.
FXMenuCommand * mySaveShapesMenuCommand
FXMenuCommand for enable or disable save shapes.
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out ...
GUICompleteSchemeStorage gSchemeStorage
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
void enableSaveAdditionalsMenu()
enable save additionals
long onKeyPress(FXObject *o, FXSelector sel, void *data)
Called when user press a key.
static std::string clipped
GNEEdge * retrieveEdge(const std::string &id, bool failHard=true)
get edge by id
long onCmdNewNetwork(FXObject *, FXSelector, void *)
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
mode for inspecting object attributes
void setAdditionalsFile(const std::string &additionalsFile)
set additionals file
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
void abortOperation(bool clearSelection=true)
abort current edition operation
void setStatusBarText(const std::string &statusBarText)
set text of the statusBar
void appendMsg(GUIEventType eType, const std::string &msg)
Adds new text to the window.
MFXEventQue< GUIEvent * > myEvents
List of got requests.
void resetWritable()
Resets all options to be writeable.
GNEUndoList * getUndoList()
get pointer to undoList
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
long onCmdReload(FXObject *, FXSelector, void *)
called when the command/FXCall reload is executed
void create()
Creates the widget.
void closeAllWindows()
this method closes all windows and deletes the current simulation */
virtual void setViewportFromTo(const Position &lookFrom, const Position &lookAt)
applies the given viewport settings
send when a message occured
FXRecentFiles myRecentConfigs
List of recent config files.
long onCmdSaveAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals is executed
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
void enableSaveShapesMenu()
enable save shapes
The main window of the Netedit.
static bool endsWith(const std::string &str, const std::string suffix)
Checks whether a given string ends with the suffix.
std::string myShapesFile
filename for load/save shapes
#define GUIDesignSplitterMDI
MDI Splitter.
void hotkeyFocusFrame()
handle focus frame keypress
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
called when the command/FXCall clear message windows is executed
void loadConfigOrNet(const std::string &file, bool isNet, bool useStartupOptions, bool newNet=false)
begins the loading of a netconvert configuration or a a network
Loads a file previously loaded.
const std::string & getMsg() const
Returns the message.
virtual void create()
Creates the main window (required by FOX)
long onCmdJoinJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->join junctions
void unSet(const std::string &name, bool failOnNonExistant=true) const
Marks the option as unset.
const std::vector< NBEdge::Lane > & getLanes() const
Returns the lane definitions.
bool hadDependentBuild
check if had dependent build
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
The representation of a single edge during network building.
Load additional file with additional elements.
double getTrackerInterval() const
get current tracker interval (pure virtual but we don't need it)
static void initIcons(FXApp *a)
Initiate GUIIconSubSys.
GNEUndoList * myUndoList
the one and only undo list
long onCmdComputeJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->compute junctions
static void resetTextures()
Reset textures.
void registerMsgHandlers()
register and unregister message handlers
long onCmdSetMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-mode hotkey
void handleEvent_NetworkLoaded(GUIEvent *e)
handle event of type Network loaded
#define GUIDesignStatusBar
design used in status bar
GNENet * myNet
pointer of the net
bool continueWithUnsavedAdditionalChanges()
warns about unsaved changes in additionals and gives the user the option to abort ...
void loadConfigOrNet(const std::string file, bool isNet, bool isReload=false, bool useStartupOptions=false, bool newNet=false)
starts to load a netimport configuration or a network */
void setWindowSizeAndPos()
perform initial window positioning and sizing according to user options / previous call ...
#define GUIDesignToolBarGrip
design for toolbar grip (used to change the position of toolbar with mouse)
long onCmdLocate(FXObject *, FXSelector, void *)
locator-callback
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
called when a key is released
#define GUIDesignSplitter
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
Called when user releases a key.
void saveAdditionals(const std::string &filename, bool volatileOptionsEnabled=false)
save additional elements of the network
Editor for the list of chosen objects.
bool continueWithUnsavedChanges()
warns about unsaved changes and gives the user the option to abort
FXGLVisual * myGLVisual
The gl-visual used.
long onCmdOpenForeign(FXObject *, FXSelector, void *)
called when the command/FXCall open foreign is executed
A NBNetBuilder extended by visualisation and editing capabilities.
long onCmdSaveNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network is executed
void p_begin(const std::string &description)
Begin undo command sub-group. This begins a new group of commands that are treated as a single comman...
long onCmdAbout(FXObject *, FXSelector, void *)
called when the command/FXCall show about dialog is executed
void setEditModeFromHotkey(FXushort selid)
sets edit mode (from hotkey)
bool cleanInvalidCrossings(GNEUndoList *undoList)
clear invalid crossings
FXString gCurrentFolder
The folder used as last.
long onCmdSaveShapes(FXObject *, FXSelector, void *)
called when the command/FXCall save shapes is executed
long onUpdNeedsNetwork(FXObject *, FXSelector, void *)
called when the upadte/FXCall needs network is executed
void saveViewport(const double x, const double y, const double z)
Makes the given viewport the default.
long onCmdCleanInvalidCrossings(FXObject *, FXSelector, void *)
called if the user selects Processing->clear invalid crossings
virtual void eventOccured()
std::string myFile
the name of the loaded file
long onLoadThreadEvent(FXObject *, FXSelector, void *)
called when the command/FXCall load thread is executed
static void resetLoaded()
resets loaded location elements
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
void unregisterMsgHandlers()
void set(double x, double y)
set positions x and y
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.
void updateControls()
update control contents after undo/redo or recompute
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString ¤tFolder)
Returns the file name to write.
virtual FXGLCanvas * getBuildGLCanvas() const
long onCmdEditChosen(FXObject *, FXSelector, void *)
called when the command/FXCall edit chosen is executed
void updateControls()
update control contents after undo/redo or recompute
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
Builds trigger objects for GNENet (busStops, chargingStations, detectors, etc..)
void addDecals(const std::vector< Decal > &decals)
add decals
GUISUMOAbstractView * openNewView()
opens a new simulation display
GNENet * myNet
the loaded net
int getNumberOfAdditionals(SumoXMLTag type=SUMO_TAG_NOTHING) const
Returns the number of additionals of the net.
long onUpdReload(FXObject *, FXSelector, void *)
called when the update/FXCall reload is executed
#define WRITE_WARNING(msg)
A single child window which contains a view of the simulation area.
static OptionsCont & getOptions()
Retrieves the options.
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
The application's "About" - dialog.
void addSeparator()
Adds a a separator to this log window.
void p_clear()
clears the undo list (implies abort)
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
called when the command/FXCall clipboard request is executed
The XML-Handler for network loading.
static void setDefaultOptions(OptionsCont &oc)
sets required options for proper functioning
FXHorizontalFrame * myCartesianFrame
FXDEFMAP(GNEApplicationWindow) GNEApplicationWindowMap[]
FXMenuPane * myProcessingMenu
long onCmdSaveAdditionalsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals as is executed
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
static FXint fxexecute(FXString link)
long onCmdEditViewport(FXObject *, FXSelector, void *)
called if the user press key v to open zoom editor
std::vector< FXMDIChild * > mySubWindows
long onCmdOptions(FXObject *, FXSelector, void *)
called if the user selects Processing->Configure Options
GUIEventType getOwnType() const
returns the event type
mode for editing additional
FXMenuPane * myWindowsMenu
static void close()
close GUITextureSubSys
GNEApplicationWindow()
FOX needs this for static members.
FXSplitter * myMainSplitter
The splitter that divides the main window into view and the log window.
mode for creating polygons
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
long onCmdOpenRecent(FXObject *, FXSelector, void *)
called when the command/FXCall open recent is executed
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall open network is executed
SUMOTime getCurrentSimTime() const
get current simulation time (pure virtual but we don't need it)
int myViewNumber
The current view number.
A point in 2D or 3D with translation and scaling methods.
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise, the sub-group will be added as a new command into parent group. A matching begin() must have been called previously.
Position getLanePos(const std::string &poiID, const std::string &laneID, double lanePos, double lanePosLat)
get lane position
bool joinSelectedJunctions(GNEUndoList *undoList)
join selected junctions
virtual void fillMenuBar()
Builds the menu bar.
bool continueWithUnsavedShapeChanges()
warns about unsaved changes in shapes and gives the user the option to abort
void setSnapshots(GUISUMOAbstractView *view) const
Makes a snapshot if it has been parsed.
long onCmdSaveAsPlainXML(FXObject *, FXSelector, void *)
called when the command/FXCall save as plain xml is executed
long onCmdSaveShapesAs(FXObject *, FXSelector, void *)
called when the command/FXCall save shapes as is executed
void save(OptionsCont &oc)
save the network
Locate junction - button.
mode for selecting objects
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
called when the command/FXCall open configuration is executed
static bool checkOptions()
checks shared options and sets StdDefs
mode for editing crossing
std::string mySettingsFile
the name of the settings file to load
long onCmdOpenAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall open additionals is executed
send when a error occured
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
Load additional file with poi and polygons.
long onCmdLocate(FXObject *, FXSelector, void *)
called when the command/FXCall locate is executed
void setTarget(FXObject *tgt)
set the target
FXCursor * getDefaultCursor()
get default cursor
long onCmdCleanJunctions(FXObject *, FXSelector, void *)
called if the user selects Processing->clean junctions
GNEShapeHandler(const std::string &file, GNENet *net)
Constructor.
virtual ~GNEApplicationWindow()
Destructor.
long onUpdOpen(FXObject *, FXSelector, void *)
called when the command/FXCall on update open executed
GNELoadThread * myLoadThread
the thread that loads the network
FXStatusBar * myStatusbar
The status bar.
abort current edit operation
long onCmdOpenShapes(FXObject *, FXSelector, void *)
called when the command/FXCall open shapes is executed
void unlock()
release mutex lock
long onCmdEnter(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits enter
virtual void showViewportEditor()
show viewport editor
bool myViewportFromRegistry
whether loading viewport from registry
long onCmdFocusFrame(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits f
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
double getLength() const
Returns the computed length of the edge.
static void interpretLaneID(const std::string &lane_id, std::string &edge_id, int &index)
parses edge-id and index from lane-id
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
virtual void detach()
detaches the tool/menu bar
FXLabel * myCartesianCoordinate
Labels for the current cartesian and geo-coordinate.
void setViewport(GUISUMOAbstractView *view)
Sets the default viewport.
MFXMutex myTrackerLock
A lock to make the removal and addition of trackers secure.
focus upper element of current frame
void setSelector(FXSelector sel)
set the selector
long onCmdDel(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits del
FXRecentFiles myRecentNets
List of recent nets.
void loadOptionOnStartup()
load net on startup
void removeSolitaryJunctions(GNEUndoList *undoList)
removes junctions that have no edges
static void close()
close GUIIconSubSys
FXToolBarShell * myMenuBarDrag
FXHorizontalFrame * myGeoFrame
A storage for options typed value containers)
FXMenuCommand * mySaveAdditionalsMenuCommand
FXMenuCommand for enable or disable save additionals.
long onCmdClose(FXObject *, FXSelector, void *)
called when the command/FXCall close is executed
void computeEverything(GNEApplicationWindow *window, bool force=false, bool volatileOptions=false, std::string additionalPath="", std::string shapePath="")
trigger full netbuild computation param[in] window The window to inform about delay param[in] force W...
void clear()
Clears the list of selected objects.
std::string myAdditionalsFile
filename for load/save additionals
FXMDIClient * myMDIClient
The multi view panel.
send when a simulation has been loaded
void handleEvent_Message(GUIEvent *e)
hanlde event of type message
void saveJoined(OptionsCont &oc)
save log of joined junctions (and nothing else)
FXGLCanvas * getBuildGLCanvas() const
get build OpenGL Canvas
send when a warning occured
#define GUIDesignHorizontalFrameStatusBar
Horizontal frame used in status bar.
long onCmdAbort(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits esc
long onCmdSaveJoined(FXObject *, FXSelector, void *)
called when the command/FXCall save joined is executed
An XML-handler for visualisation schemes.
const FXString myTitlePrefix
the prefix for the window title
static FXString getTitleText(const FXString &appname, FXString filename="")
Returns the title text in dependance to an optional file name.
GNENet * myNet
we are responsible for the net
#define GUIDesignToolBarShell3
Open viewport editor - button.
void dependentBuild()
build dependent
void clear()
Clears the window.
NBEdge * getNBEdge()
returns the internal NBEdge
~GNEShapeHandler()
Destructor.
long onCmdComputeJunctionsVolatile(FXObject *, FXSelector, void *)
called if the user selects Processing->compute junctions with volatile options
void hotkeyDel()
handle del keypress
#define WRITE_MESSAGE(msg)
int getNumberOfShapes() const
get number of shapes
static void initTextures(FXApp *a)
Initiate GUITextureSubSys for textures.
GUISelectedStorage gSelected
A global holder of selected objects.
void hotkeyEnter()
handle enter keypress
long onCmdSaveAsNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network as is executed
GNEViewNet * getView()
convenience method
A logging window for the gui.
GNEViewNet * getViewNet() const
get view net
static FXIcon * getIcon(GUIIcon which)
returns a icon previously defined in the enum GUIIcon
void savePlain(OptionsCont &oc)
save plain xml representation of the network (and nothing else)
static void fillOptions(OptionsCont &oc)
clears and initializes the OptionsCont
FXMenuPane * myFileMenu
the submenus
long onKeyPress(FXObject *o, FXSelector sel, void *data)
called when a key is pressed
long onUpdSaveNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall save network is executed
FXMenuPane * myLocatorMenu
mode for connecting lanes
static const Position INVALID
used to indicate that a position is valid
void saveShapes(const std::string &filename)
save shapes elements of the network
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
void setShapesFile(const std::string &shapesFile)
set shapes file