274 FXIMPLEMENT(
GNEApplicationWindow, FXMainWindow, GNEApplicationWindowMap, ARRAYNUMBER(GNEApplicationWindowMap))
283 myLoadThread(
nullptr),
286 myFileMenuTLS(
nullptr),
287 myFileMenuEdgeTypes(
nullptr),
288 myFileMenuAdditionals(
nullptr),
289 myFileMenuDemandElements(
nullptr),
290 myFileMenuDataElements(
nullptr),
292 myProcessingMenu(
nullptr),
293 myLocatorMenu(
nullptr),
294 myWindowsMenu(
nullptr),
296 myMessageWindow(
nullptr),
297 myMainSplitter(
nullptr),
298 hadDependentBuild(false),
301 myConfigPattern(configPattern),
302 myToolbarsGrip(this),
304 myFileMenuCommands(this),
305 myEditMenuCommands(this),
306 myProcessingMenuCommands(this),
307 myLocateMenuCommands(this),
308 myWindowsMenuCommands(this),
309 mySupermodeCommands(this),
311 myTitlePrefix("NETEDIT " VERSION_STRING),
328 WRITE_ERROR(
"DEBUG: GNEApplicationWindow::dependentBuild called twice");
343 myGeoCoordinate =
new FXLabel(
myGeoFrame,
"N/A\t\tOriginal coordinate (before coordinate transformation in netconvert)",
nullptr, LAYOUT_CENTER_Y);
374 gCurrentFolder = getApp()->reg().readStringEntry(
"SETTINGS",
"basedir",
"");
375 FXMainWindow::create();
387 FXint textWidth = getApp()->getNormalFont()->getTextWidth(
"8", 1) * 22;
391 show(PLACEMENT_DEFAULT);
393 if (getApp()->reg().readIntEntry(
"SETTINGS",
"maximized", 0) == 1) {
440 getApp()->reg().writeStringEntry(
"SETTINGS",
"basedir",
gCurrentFolder.text());
442 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", 1);
444 getApp()->reg().writeIntEntry(
"SETTINGS",
"maximized", 0);
484 FXFileDialog opendialog(
this,
"Open Netconvert Configuration");
486 opendialog.setSelectMode(SELECTFILE_EXISTING);
491 if (opendialog.execute()) {
493 std::string file = opendialog.getFilename().text();
510 FXFileDialog opendialog(
this,
"Open Network");
512 opendialog.setSelectMode(SELECTFILE_EXISTING);
513 opendialog.setPatternList(
"SUMO nets (*.net.xml)\nAll files (*)");
517 if (opendialog.execute()) {
519 std::string file = opendialog.getFilename().text();
539 FXFileDialog opendialog(
this,
"Import Foreign Network");
541 opendialog.setSelectMode(SELECTFILE_EXISTING);
542 FXString osmPattern(
"OSM net (*.osm.xml,*.osm)");
543 opendialog.setPatternText(0, osmPattern);
547 if (opendialog.execute()) {
549 std::string file = opendialog.getFilename().text();
553 if (osmPattern.contains(opendialog.getPattern())) {
556 oc.
set(
"osm-files", file);
557 oc.
set(
"geometry.remove",
"true");
558 oc.
set(
"ramps.guess",
"true");
559 oc.
set(
"junctions.join",
"true");
560 oc.
set(
"tls.guess-signals",
"true");
561 oc.
set(
"tls.discard-simple",
"true");
563 throw ProcessError(
"Attempted to import unknown file format '" + file +
"'.");
569 if (wizard->execute()) {
584 FXFileDialog opendialog(
this,
"Open Additionals file");
586 opendialog.setSelectMode(SELECTFILE_EXISTING);
587 opendialog.setPatternList(
"Additional files (*.add.xml)\nAll files (*)");
591 if (opendialog.execute()) {
596 std::string file = opendialog.getFilename().text();
625 FXFileDialog opendialog(
this,
"Open TLSPrograms file");
627 opendialog.setSelectMode(SELECTFILE_EXISTING);
628 opendialog.setPatternList(
"TLSProgram files (*.xml)\nAll files (*)");
632 if (opendialog.execute()) {
636 std::string file = opendialog.getFilename().text();
659 FXFileDialog opendialog(
this,
"Load edgeType file");
661 opendialog.setSelectMode(SELECTFILE_EXISTING);
662 opendialog.setPatternList(
"*.xml");
666 if (opendialog.execute()) {
678 for (
const auto &auxEdgeType : typeContainerAux) {
684 for (
const auto &auxLaneType : auxEdgeType.second->laneTypeDefinitions) {
705 FXFileDialog opendialog(
this,
"Open demand element file");
707 opendialog.setSelectMode(SELECTFILE_EXISTING);
708 opendialog.setPatternList(
"Demand element files (*.rou.xml)\nAll files (*)");
712 if (opendialog.execute()) {
717 std::string file = opendialog.getFilename().text();
746 FXFileDialog opendialog(
this,
"Open data element file");
748 opendialog.setSelectMode(SELECTFILE_EXISTING);
749 opendialog.setPatternList(
"Data element files (*.xml)\nAll files (*)");
753 if (opendialog.execute()) {
758 std::string file = opendialog.getFilename().text();
797 myStatusbar->getStatusLine()->setText(
"Already loading!");
800 std::string file((
const char*)fileData);
861 sender->handle(
this,
myAmLoading ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
876 WRITE_DEBUG(
"Toogle load additionals in sumo-gui");
896 about->show(PLACEMENT_OWNER);
904 FXEvent*
event = (FXEvent*)ptr;
906 setDNDData(FROM_CLIPBOARD, event->target,
string);
950 if (ec->
myNet ==
nullptr) {
962 GNEViewParent* viewParent =
new GNEViewParent(
myMDIClient,
myMDIMenu,
"NETEDIT VIEW",
this,
nullptr,
myNet,
myUndoList,
nullptr, MDI_TRACKING, 10, 10, 300, 200);
964 viewParent->maximize();
985 off.
set(getApp()->reg().readRealEntry(
"viewport",
"x"), getApp()->reg().readRealEntry(
"viewport",
"y"), getApp()->reg().readRealEntry(
"viewport",
"z"));
990 getApp()->endWaitCursor();
995 std::vector<std::string> additionalFiles = oc.
getStringVector(
"additional-files");
999 for (
const auto& additionalFile : additionalFiles) {
1000 WRITE_MESSAGE(
"Loading additionals and shapes from '" + additionalFile +
"'");
1006 WRITE_ERROR(
"Loading of " + additionalFile +
" failed.");
1019 std::vector<std::string> demandElementsFiles = oc.
getStringVector(
"route-files");
1023 for (
const auto& demandElementsFile : demandElementsFiles) {
1024 WRITE_MESSAGE(
"Loading demand elements from '" + demandElementsFile +
"'");
1029 WRITE_ERROR(
"Loading of " + demandElementsFile +
" failed.");
1042 std::vector<std::string> dataElementsFiles = oc.
getStringVector(
"data-files");
1050 for (
const auto& dataElementsFile : dataElementsFiles) {
1051 WRITE_MESSAGE(
"Loading data elements from '" + dataElementsFile +
"'");
1056 WRITE_ERROR(
"Loading of " + dataElementsFile +
" failed.");
1071 if (oc.
isSet(
"additionals-output")) {
1074 oc.
set(
"additional-files", oc.
getString(
"additionals-output"));
1077 if (oc.
isSet(
"demandelements-output")) {
1080 oc.
set(
"route-files", oc.
getString(
"demandelements-output"));
1083 if (oc.
isSet(
"dataelements-output")) {
1086 oc.
set(
"data-files", oc.
getString(
"dataelements-output"));
1110 myFileMenu =
new FXMenuPane(
this, LAYOUT_FIX_HEIGHT);
1122 "&Quit",
"Ctrl+Q",
"Quit the Application.",
1129 "&Undo",
"Ctrl+Z",
"Undo the last change.",
1132 "&Redo",
"Ctrl+Y",
"Redo the last change.",
1157 "&Online Documentation",
"F1",
"Open Online documentation.",
1160 "&About",
"F12",
"About netedit.",
1168 getApp()->beginWaitCursor();
1253 if (
myNet !=
nullptr) {
1270 return getApp()->getDefaultCursor(DEF_ARROW_CURSOR);
1278 oc.
set(
"offset.disable-normalization",
"true");
1285 myStatusbar->getStatusLine()->setText(statusBarText.c_str());
1286 myStatusbar->getStatusLine()->setNormalText(statusBarText.c_str());
1297 std::string additionalsSavePath = oc.
getString(
"additional-files");
1298 std::string demandElementsSavePath = oc.
getString(
"route-files");
1299 std::string dataElementsSavePath = oc.
getString(
"data-files");
1301 WRITE_DEBUG(
"Opening FXMessageBox 'Volatile Recomputing'");
1303 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Recompute with volatile options",
1304 "Changes produced in the net due a recomputing with volatile options cannot be undone. Continue?");
1308 WRITE_DEBUG(
"Closed FXMessageBox 'Volatile Recomputing' with 'No'");
1309 }
else if (answer == 4) {
1310 WRITE_DEBUG(
"Closed FXMessageBox 'Volatile Recomputing' with 'ESC'");
1316 WRITE_DEBUG(
"Closed FXMessageBox 'Volatile Recomputing' with 'Yes'");
1320 if (oc.
getString(
"additional-files") ==
"") {
1322 WRITE_DEBUG(
"Opening FXMessageBox 'Save additionals before recomputing'");
1324 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Save additionals before recomputing with volatile options",
1325 "Would you like to save additionals before recomputing?");
1329 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before recomputing' with 'No'");
1330 }
else if (answer == 4) {
1331 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before recomputing' with 'ESC'");
1335 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before recomputing' with 'Yes'");
1338 "Select name of the demand element file",
".xml",
1344 if (fileWithExtension !=
"") {
1347 oc.
set(
"additional-files", fileWithExtension);
1349 additionalsSavePath = oc.
getString(
"additional-files");
1354 if (oc.
getString(
"additional-files") ==
"") {
1356 additionalsSavePath = FXSystem::getTempDirectory().text() + std::string(
"/tmpAdditionalsNetedit.xml");
1359 getApp()->beginWaitCursor();
1364 WRITE_DEBUG(
"Opening FXMessageBox 'Error saving additionals before recomputing'");
1366 FXMessageBox::error(
this, MBOX_OK,
"Saving additionals in temporal folder failed!",
"%s", e.what());
1368 WRITE_DEBUG(
"Closed FXMessageBox 'Error saving additionals before recomputing' with 'OK'");
1372 getApp()->endWaitCursor();
1375 additionalsSavePath =
"";
1380 if (oc.
getString(
"route-files") ==
"") {
1382 WRITE_DEBUG(
"Opening FXMessageBox 'Save demand elements before recomputing'");
1384 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Save demand elements before recomputing with volatile options",
1385 "Would you like to save demand elements before recomputing?");
1389 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before recomputing' with 'No'");
1390 }
else if (answer == 4) {
1391 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before recomputing' with 'ESC'");
1395 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before recomputing' with 'Yes'");
1398 "Select name of the demand element file",
".rou.xml",
1404 if (fileWithExtension !=
"") {
1407 oc.
set(
"route-files", fileWithExtension);
1409 demandElementsSavePath = oc.
getString(
"route-files");
1414 if (oc.
getString(
"route-files") ==
"") {
1416 demandElementsSavePath = FXSystem::getTempDirectory().text() + std::string(
"/tmpDemandElementsNetedit.xml");
1419 getApp()->beginWaitCursor();
1424 WRITE_DEBUG(
"Opening FXMessageBox 'Error saving demand elements before recomputing'");
1426 FXMessageBox::error(
this, MBOX_OK,
"Saving demand elements in temporal folder failed!",
"%s", e.what());
1428 WRITE_DEBUG(
"Closed FXMessageBox 'Error saving demand elements before recomputing' with 'OK'");
1432 getApp()->endWaitCursor();
1435 demandElementsSavePath =
"";
1442 WRITE_DEBUG(
"Opening FXMessageBox 'Save data elements before recomputing'");
1444 answer = FXMessageBox::question(
myNet->
getViewNet()->getApp(), MBOX_YES_NO,
"Save data elements before recomputing with volatile options",
1445 "Would you like to save data elements before recomputing?");
1449 WRITE_DEBUG(
"Closed FXMessageBox 'Save data elements before recomputing' with 'No'");
1450 }
else if (answer == 4) {
1451 WRITE_DEBUG(
"Closed FXMessageBox 'Save data elements before recomputing' with 'ESC'");
1455 WRITE_DEBUG(
"Closed FXMessageBox 'Save data elements before recomputing' with 'Yes'");
1458 "Select name of the data element file",
".rou.xml",
1464 if (fileWithExtension !=
"") {
1467 oc.
set(
"data-files", fileWithExtension);
1469 dataElementsSavePath = oc.
getString(
"data-files");
1476 dataElementsSavePath = FXSystem::getTempDirectory().text() + std::string(
"/tmpDataElementsNetedit.xml");
1479 getApp()->beginWaitCursor();
1484 WRITE_DEBUG(
"Opening FXMessageBox 'Error saving data elements before recomputing'");
1486 FXMessageBox::error(
this, MBOX_OK,
"Saving data elements in temporal folder failed!",
"%s", e.what());
1488 WRITE_DEBUG(
"Closed FXMessageBox 'Error saving data elements before recomputing' with 'OK'");
1492 getApp()->endWaitCursor();
1495 dataElementsSavePath =
"";
1498 myNet->
computeNetwork(
this,
true,
true, additionalsSavePath, demandElementsSavePath, dataElementsSavePath);
1580 switch (FXSELID(sel)) {
1589 WRITE_DEBUG(
"Keys Shift + F5 (Compute with volatile options) pressed");
1604 WRITE_DEBUG(
"Key F8 (Clean invalid crossings) pressed");
1612 switch (FXSELID(sel)) {
1621 WRITE_DEBUG(
"Key F6 (RemoveUnusedRoutes) pressed");
1631 WRITE_DEBUG(
"Key F8 (CleanInvalidDemandElements) pressed");
1678 FXRegistry reg(
"SUMO GUI",
"Eclipse");
1684 std::string sumogui =
"sumo-gui";
1685 const char* sumoPath = getenv(
"SUMO_HOME");
1686 if (sumoPath !=
nullptr) {
1687 std::string newPath = std::string(sumoPath) +
"/bin/sumo-gui";
1689 sumogui =
"\"" + newPath +
"\"";
1697 cmd +=
" -a \"" + oc.
getString(
"additional-files") +
"\"";
1701 cmd +=
" -r \"" + oc.
getString(
"route-files") +
"\"";
1708 cmd =
"start /B \"\" " + cmd;
1860 WRITE_DEBUG(
"Disabled grid throught Ctrl+g hotkey");
1863 WRITE_DEBUG(
"Enabled grid throught Ctrl+g hotkey");
1900 if ((numericalKeyPressed < 0) || (numericalKeyPressed > 10)) {
1904 std::vector<MFXCheckableButton*> visibleMenuCommands;
1910 if (numericalKeyPressed >= (
int)visibleMenuCommands.size()) {
1915 visibleMenuCommands.at(numericalKeyPressed), numericalKeyPressed, obj, sel)) {
1918 visibleMenuCommands.at(numericalKeyPressed), numericalKeyPressed, obj, sel)) {
1921 visibleMenuCommands.at(numericalKeyPressed), numericalKeyPressed, obj, sel)) {
1941 if (wizard->execute()) {
2018 WRITE_DEBUG(
"Key Ctrl+F1 (Set Template) pressed");
2030 WRITE_DEBUG(
"Key Ctrl+F2 (Copy Template) pressed");
2042 WRITE_DEBUG(
"Key Ctrl+F3 (Clear Template) pressed");
2055 "Save Network as",
".net.xml",
2061 if (fileWithExtension !=
"") {
2064 oc.
set(
"output-file", fileWithExtension);
2075 "Select name of the plain-xml edge-file (other names will be deduced from this)",
"",
2081 bool wasSet = oc.
isSet(
"plain-output-prefix");
2082 std::string oldPrefix = oc.
getString(
"plain-output-prefix");
2083 std::string prefix = file.text();
2086 prefix = prefix.substr(0, prefix.size() - 8);
2089 prefix = prefix.substr(0, prefix.size() - 1);
2092 oc.
set(
"plain-output-prefix", prefix);
2093 getApp()->beginWaitCursor();
2100 WRITE_DEBUG(
"Opening FXMessageBox 'Error saving plainXML'");
2102 FXMessageBox::error(
this, MBOX_OK,
"Saving plain xml failed!",
"%s", e.what());
2104 WRITE_DEBUG(
"Closed FXMessageBox 'Error saving plainXML' with 'OK'");
2110 oc.
set(
"plain-output-prefix", oldPrefix);
2112 oc.
unSet(
"plain-output-prefix");
2114 getApp()->endWaitCursor();
2123 "Select name of the joined-junctions file",
".nod.xml",
2129 if (fileWithExtension !=
"") {
2131 bool wasSet = oc.
isSet(
"junctions.join-output");
2132 std::string oldFile = oc.
getString(
"junctions.join-output");
2134 oc.
set(
"junctions.join-output", fileWithExtension);
2135 getApp()->beginWaitCursor();
2140 WRITE_DEBUG(
"Opening FXMessageBox 'error saving joined'");
2142 FXMessageBox::error(
this, MBOX_OK,
"Saving joined junctions failed!",
"%s", e.what());
2144 WRITE_DEBUG(
"Closed FXMessageBox 'error saving joined' with 'OK'");
2150 oc.
set(
"junctions.join-output", oldFile);
2152 oc.
unSet(
"junctions.join-output");
2154 getApp()->endWaitCursor();
2164 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2166 sender->handle(
this, FXSEL(SEL_COMMAND, ID_DISABLE),
nullptr);
2176 sender->handle(
this, FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2178 sender->handle(
this, FXSEL(SEL_COMMAND, ID_DISABLE),
nullptr);
2186 sender->handle(
this, ((
myNet ==
nullptr) || !
OptionsCont::getOptions().isSet(
"sumo-net-file")) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2193 sender->handle(
this, ((
myNet ==
nullptr) ||
myNet->
isNetSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2200 sender->handle(
this, ((
myNet ==
nullptr) ||
myNet->
isAdditionalsSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2207 sender->handle(
this, ((
myNet ==
nullptr) ||
myNet->
isDemandElementsSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2214 sender->handle(
this, ((
myNet ==
nullptr) ||
myNet->
isDataElementsSaved()) ? FXSEL(SEL_COMMAND, ID_DISABLE) : FXSEL(SEL_COMMAND, ID_ENABLE),
nullptr);
2238 getApp()->beginWaitCursor();
2245 WRITE_DEBUG(
"Opening FXMessageBox 'error saving network'");
2247 FXMessageBox::error(
this, MBOX_OK,
"Saving Network failed!",
"%s", e.what());
2249 WRITE_DEBUG(
"Closed FXMessageBox 'error saving network' with 'OK'");
2255 getApp()->endWaitCursor();
2268 if (oc.
getString(
"TLSPrograms-output").empty()) {
2270 "Select name of the TLS file",
".xml",
2282 oc.
set(
"TLSPrograms-output", fileWithExtension);
2286 getApp()->beginWaitCursor();
2293 WRITE_DEBUG(
"Opening FXMessageBox 'error saving TLS Programs'");
2295 FXMessageBox::error(
this, MBOX_OK,
"Saving TLS Programs failed!",
"%s", e.what());
2297 WRITE_DEBUG(
"Closed FXMessageBox 'error saving TLS Programs' with 'OK'");
2300 getApp()->endWaitCursor();
2315 if (oc.
getString(
"edgeTypes-output").empty()) {
2317 "Select name of the edgeType file",
".xml",
2329 oc.
set(
"edgeTypes-output", fileWithExtension);
2333 getApp()->beginWaitCursor();
2340 WRITE_DEBUG(
"Opening FXMessageBox 'error saving edgeTypes'");
2342 FXMessageBox::error(
this, MBOX_OK,
"Saving edgeTypes failed!",
"%s", e.what());
2344 WRITE_DEBUG(
"Closed FXMessageBox 'error saving edgeTypes' with 'OK'");
2347 getApp()->endWaitCursor();
2359 "Select name of the TLS Program file",
".xml",
2365 if (fileWithExtension !=
"") {
2380 "Select name of the edgeType file",
".xml",
2386 if (fileWithExtension !=
"") {
2404 if (oc.
getString(
"additional-files").empty()) {
2406 "Select name of the additional file",
".add.xml",
2412 if (fileWithExtension !=
"") {
2415 oc.
set(
"additional-files", fileWithExtension);
2422 getApp()->beginWaitCursor();
2429 WRITE_DEBUG(
"Opening FXMessageBox 'error saving additionals'");
2431 FXMessageBox::error(
this, MBOX_OK,
"Saving additionals failed!",
"%s", e.what());
2433 WRITE_DEBUG(
"Closed FXMessageBox 'error saving additionals' with 'OK'");
2436 getApp()->endWaitCursor();
2448 "Select name of the additional file",
".add.xml",
2454 if (fileWithExtension !=
"") {
2476 if (oc.
getString(
"route-files").empty()) {
2478 "Select name of the demand element file",
".rou.xml",
2484 if (fileWithExtension !=
"") {
2487 oc.
set(
"route-files", fileWithExtension);
2494 getApp()->beginWaitCursor();
2501 WRITE_DEBUG(
"Opening FXMessageBox 'error saving demand elements'");
2503 FXMessageBox::error(
this, MBOX_OK,
"Saving demand elements failed!",
"%s", e.what());
2505 WRITE_DEBUG(
"Closed FXMessageBox 'error saving demand elements' with 'OK'");
2508 getApp()->endWaitCursor();
2520 "Select name of the demand element file",
".rou.xml",
2526 if (fileWithExtension !=
"") {
2548 if (oc.
getString(
"data-files").empty()) {
2550 "Select name of the data element file",
".xml",
2556 if (fileWithExtension !=
"") {
2559 oc.
set(
"data-files", fileWithExtension);
2566 getApp()->beginWaitCursor();
2573 WRITE_DEBUG(
"Opening FXMessageBox 'error saving data elements'");
2575 FXMessageBox::error(
this, MBOX_OK,
"Saving data elements failed!",
"%s", e.what());
2577 WRITE_DEBUG(
"Closed FXMessageBox 'error saving data elements' with 'OK'");
2580 getApp()->endWaitCursor();
2592 "Select name of the data element file",
".xml",
2598 if (fileWithExtension !=
"") {
2618 WRITE_DEBUG(
"Opening FXMessageBox 'Confirm " + operation +
" network'");
2620 answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
2621 (
"Confirm " + operation +
" Network").c_str(),
"%s",
2622 (
"You have unsaved changes in the network. Do you wish to " + operation +
" and discard all changes?").c_str());
2626 if (answer == MBOX_CLICKED_QUIT) {
2628 WRITE_DEBUG(
"Closed FXMessageBox 'Confirm " + operation +
" network' with 'Quit'");
2636 }
else if (answer == MBOX_CLICKED_SAVE) {
2653 WRITE_DEBUG(
"Closed FXMessageBox 'Confirm " + operation +
" network' with 'No'");
2654 }
else if (answer == 4) {
2655 WRITE_DEBUG(
"Closed FXMessageBox 'Confirm " + operation +
" network' with 'ESC'");
2677 WRITE_DEBUG(
"Opening FXMessageBox 'Save additionals before " + operation +
"'");
2679 FXuint answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
2680 (
"Save additionals before " + operation).c_str(),
"%s",
2681 (
"You have unsaved additionals. Do you wish to " + operation +
" and discard all changes?").c_str());
2685 if (answer == MBOX_CLICKED_QUIT) {
2686 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before " + operation +
"' with 'Quit'");
2689 }
else if (answer == MBOX_CLICKED_SAVE) {
2691 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before " + operation +
"' with 'Yes'");
2702 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before " + operation +
"' with 'No'");
2703 }
else if (answer == 4) {
2704 WRITE_DEBUG(
"Closed FXMessageBox 'Save additionals before " + operation +
"' with 'ESC'");
2720 WRITE_DEBUG(
"Opening FXMessageBox 'Save demand elements before " + operation +
"'");
2722 FXuint answer = FXMessageBox::question(getApp(), MBOX_QUIT_SAVE_CANCEL,
2723 (
"Save demand elements before " + operation).c_str(),
"%s",
2724 (
"You have unsaved demand elements. Do you wish to " + operation +
" and discard all changes?").c_str());
2728 if (answer == MBOX_CLICKED_QUIT) {
2729 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before " + operation +
"' with 'Quit'");
2732 }
else if (answer == MBOX_CLICKED_SAVE) {
2734 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before " + operation +
"' with 'Yes'");
2745 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before " + operation +
"' with 'No'");
2746 }
else if (answer == 4) {
2747 WRITE_DEBUG(
"Closed FXMessageBox 'Save demand elements before " + operation +
"' with 'ESC'");
2832 myLoadThread(nullptr),
2834 myFileMenu(nullptr),
2835 myFileMenuTLS(nullptr),
2836 myFileMenuAdditionals(nullptr),
2837 myFileMenuDemandElements(nullptr),
2838 myFileMenuDataElements(nullptr),
2839 myEditMenu(nullptr),
2840 myProcessingMenu(nullptr),
2841 myLocatorMenu(nullptr),
2842 myWindowsMenu(nullptr),
2843 myHelpMenu(nullptr),
2844 myMessageWindow(nullptr),
2845 myMainSplitter(nullptr),
2846 hadDependentBuild(false),
2848 myUndoList(nullptr),
2849 myToolbarsGrip(this),
2850 myMenuBarFile(this),
2851 myFileMenuCommands(this),
2852 myEditMenuCommands(this),
2853 myProcessingMenuCommands(this),
2854 myLocateMenuCommands(this),
2855 myWindowsMenuCommands(this),
2856 mySupermodeCommands(this),
2864 const long handled = FXMainWindow::onKeyPress(o, sel, eventData);
2865 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
2877 const long handled = FXMainWindow::onKeyRelease(o, sel, eventData);
2878 if (handled == 0 &&
myMDIClient->numChildren() > 0) {
FXDEFMAP(GNEApplicationWindow) GNEApplicationWindowMap[]
Supermode
@brie enum for supermodes
@ NETWORK
Network mode (Edges, junctions, etc..)
@ DATA
Data mode (edgeData, LaneData etc..)
@ DEMAND
Demand mode (Routes, Vehicles etc..)
@ MID_GNE_TOOLBAREDIT_LOADADDITIONALS
load additionals in SUMO-GUI after press ctrl+T
@ MID_HOTKEY_CTRL_Q_CLOSE
Main window closes.
@ MID_HOTKEY_SHIFT_F5_COMPUTEJUNCTIONS_VOLATILE
compute junctions with volatile options
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in NETEDIT
@ MID_HOTKEY_ALT_6_TOOGLEEDITOPTION
toogle edit option
@ MID_LOCATEPERSON
Locate person - button.
@ MID_HOTKEY_T_MODES_TLS_VTYPE
hotkey for mode editing TLS AND Vehicle Types
@ MID_HOTKEY_CTRL_Y_REDO
Undo.
@ MID_HOTKEY_CTRL_SHIFT_H_SAVEEDGETYPES
save Edge Types
@ MID_HOTKEY_S_MODES_SELECT
hotkey for mode selecting objects
@ MID_LOCATEJUNCTION
Locate junction - button.
@ MID_GNE_TOOLBAREDIT_LOADDEMAND
load demand in SUMO-GUI after press ctrl+T
@ MID_OPEN_CONFIG
Open configuration - ID.
@ MID_HOTKEY_CTRL_W_CLOSESIMULATION
Close simulation - ID.
@ MID_HOTKEY_F7_JOIN_SELECTEDJUNCTIONS_ROUTES
join selected junctions in network mode and normalice demand element ids in demand mode
@ MID_HOTKEY_CTRL_D_SINGLESIMULATIONSTEP_OPENDEMANDELEMENTS
Perform a single simulation step in SUMO and open Demand Elements in NETEDIT.
@ MID_HOTKEY_F5_COMPUTE_NETWORK_DEMAND
compute Network in network mode and Demand elements in demand mode
@ MID_HOTKEY_V_MODES_VEHICLE
hotkey for mode create vehicles
@ MID_HOTKEY_F9_EDIT_VIEWSCHEME
open edit scheme menu
@ MID_HOTKEY_E_MODES_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_LOCATEPOLY
Locate polygons - button.
@ MID_HOTKEY_DEL
hot key delete selections or elements
@ MID_HOTKEY_ALT_1_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_CTRL_N_NEWNETWORK
create new empty newtork
@ MID_HOTKEY_ALT_0_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_CTRL_SHIFT_S_SAVENETWORK_AS
save network as
@ MID_GNE_TOOLBARFILE_OPENFOREIGN
open foreign network
@ MID_HOTKEY_CTRL_B_EDITBREAKPOINT_OPENDATAELEMENTS
Edit simulation breakpoints in SUMO and open Data Elements in NETEDIT.
@ MID_HOTKEY_ALT_7_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_F1_ONLINEDOCUMENTATION
open online documentation
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
@ MID_HOTKEY_CTRL_R_RELOAD
Reload the previously loaded simulation.
@ MID_HOTKEY_CTRL_SHIFT_V_FORCESAVEDEMANDELEMENTS
Force save demand elements (flag)
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in NETEDIT.
@ MID_HOTKEY_W_MODES_PROHIBITION_PERSONTYPE
hotkey for mode editing connection prohibitions AND person types
@ MID_HOTKEY_ESC
hot key <ESC> abort current edit operation
@ MID_GNE_TOOLBARFILE_SAVEDATA_AS
save data elements as
@ MID_HOTKEY_F10_OPTIONSMENU
open options menu
@ MID_HOTKEY_F11_FRONTELEMENT
set/clear front element
@ MID_HOTKEY_R_MODES_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
@ MID_HOTKEY_F8_CLEANINVALID_CROSSINGS_DEMANDELEMENTS
clean invalid crossings in network mode and demand elements in demand mode
@ MID_HOTKEY_I_MODES_INSPECT
hotkey for mode inspecting object attributes
@ MID_LOCATEADD
Locate addtional structure - button.
@ MID_LOCATEPOI
Locate poi - button.
@ MID_HOTKEY_CTRL_SHIFT_W_FORCESAVEDATAELEMENTS
Force save data elements (flag)
@ MID_HOTKEY_P_MODES_POLYGON_PERSON
hotkey for mode creating polygons
@ MID_HOTKEY_ALT_4_TOOGLEEDITOPTION
toogle edit option
@ MID_OPEN_NETWORK
Open network - ID.
@ MID_HOTKEY_CTRL_SHIFT_U_FORCESAVEADDITIONALS
Force save additionals (flag)
@ MID_GNE_TOOLBARFILE_SAVETLSPROGRAMS_AS
save TLS Programs as
@ MID_HOTKEY_Z_MODES_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_HOTKEY_M_MODES_MOVE
hotkey for mode moving element
@ MID_HOTKEY_CTRL_I_EDITVIEWPORT
Open viewport editor.
@ MID_RECENTFILE
Loads a file previously loaded.
@ MID_HOTKEY_CTRL_J_SAVEJOINEDJUNCTIONS
save joined junctions
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in NETEDIT
@ MID_HOTKEY_F6_CLEAN_SOLITARYJUNCTIONS_UNUSEDROUTES
clean junctions without edges in network mode and unused routes in demand mode
@ MID_LOCATESTOP
Locate stop - button.
@ MID_HOTKEY_CTRL_K_OPENTLSPROGRAMS
Load file with TLS Programs.
@ MID_HOTKEY_CTRL_V_PASTE
paste the current selection / element
@ MID_CLEARMESSAGEWINDOW
Clear simulation output.
@ MID_HOTKEY_ALT_3_TOOGLEEDITOPTION
toogle edit option
@ ID_LOADTHREAD_EVENT
The loading thread.
@ MID_HOTKEY_ALT_5_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_A_MODES_ADDITIONAL_STOP
hotkey for mode editing additionals AND stops
@ MID_HOTKEY_CTRL_C_COPY
Copy the current selection / element.
@ MID_GNE_TOOLBARFILE_SAVEADDITIONALS_AS
save additionals as
@ MID_GNE_TOOLBARFILE_SAVEEDGETYPES_AS
save edgeTypes as
@ MID_HOTKEY_ALT_8_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_C_MODES_CONNECT_PERSONPLAN
hotkey for mode connecting lanes
@ MID_HOTKEY_ALT_F4_CLOSE
Main window closes.
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
@ MID_LOCATEEDGE
Locate edge - button.
@ MID_HOTKEY_SHIFT_F2_TEMPLATE_COPY
copy template
@ MID_HOTKEY_CTRL_A_STARTSIMULATION_OPENADDITIONALS
Start the simulation in SUMO and open Additionals Elemements in NETEDIT.
@ MID_LOCATEVEHICLE
Locate vehicle - button.
@ MID_LOCATETLS
Locate TLS - button.
@ MID_GNE_TOOLBARFILE_SAVEDEMAND_AS
save demand elements as
@ MID_HOTKEY_CTRL_Z_UNDO
Redo.
@ MID_HOTKEY_ALT_2_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_CTRL_SHIFT_T_FORCESAVENETEWORK
Force save network (flag)
@ MID_HOTKEY_BACKSPACE
hot key <Backspace> remove last sub-operation
@ MID_HOTKEY_F12_ABOUT
open about dialog
@ MID_HOTKEY_ENTER
hot key <ENTER> accept current operation
@ MID_HOTKEY_CTRL_SHIFT_K_SAVETLS
save TLS Programs
@ MID_HOTKEY_SHIFT_F1_TEMPLATE_SET
set template
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in NETEDIT
@ MID_HOTKEY_SHIFT_F12_FOCUSUPPERELEMENT
focus upper element of current frame (only used in NETEDIT)
@ MID_HOTKEY_D_MODES_DELETE
hotkey for mode deleting things
@ MID_HOTKEY_SHIFT_F3_TEMPLATE_CLEAR
clear template
@ MID_HOTKEY_CTRL_H_OPENEDGETYPES
open edge type files
@ MID_HOTKEY_CTRL_G_GAMINGMODE_TOOGLEGRID
Toogle Gaming mode in SUMO and grid in NETEDIT.
@ MID_LOCATEROUTE
Locate route - button.
@ MID_HOTKEY_ALT_9_TOOGLEEDITOPTION
toogle edit option
@ MID_HOTKEY_CTRL_L_SAVEASPLAINXML
save network as plain XML
@ MID_HOTKEY_CTRL_X_CUT
cut the current selection / element
@ MID_HOTKEY_CTRL_T_OPENSUMONETEDIT
Open current network in SUMO or in NETEDIT.
@ MID_WINDOW
Main window-ID.
GUICompleteSchemeStorage gSchemeStorage
#define GUIDesignHorizontalFrameStatusBar
Horizontal frame used in status bar.
#define GUIDesignSplitter
#define GUIDesignSplitterMDI
MDI Splitter.
#define GUIDesignStatusBar
design used in status bar
@ EVENT_GLDEBUG_OCCURRED
send when a gldebug occured
@ EVENT_ERROR_OCCURRED
send when a error occured
@ EVENT_SIMULATION_LOADED
send when a simulation has been loaded
@ EVENT_DEBUG_OCCURRED
send when a debug occured
@ EVENT_MESSAGE_OCCURRED
send when a message occured
@ EVENT_WARNING_OCCURRED
send when a warning occured
GUISelectedStorage gSelected
A global holder of selected objects.
FXString gCurrentFolder
The folder used as last.
#define WRITE_MESSAGE(msg)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void setTarget(FXObject *tgt)
set the target
void setSelector(FXSelector sel)
set the selector
static FXint fxexecute(FXString link)
static std::string addExtension(const std::string &path, const std::string &extension)
Add an extension to the given file path.
static bool isReadable(std::string path)
Checks whether the given file is readable.
static void resetFont()
to be called when the font context is invalidated
The application's "About" - dialog.
void create()
Creates the widget.
Builds additional objects for GNENet (busStops, chargingStations, detectors, etc.....
The main window of the Netedit.
long onCmdSaveAsNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network as is executed
long onCmdSaveAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals is executed
GNEApplicationWindowHelper::SupermodeCommands mySupermodeCommands
Supermode Commands.
long onCmdSaveTLSProgramsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save TLSPrograms as is executed
void create()
Creates the main window (required by FOX)
GNEApplicationWindowHelper::WindowsMenuCommands myWindowsMenuCommands
Windows Menu Commands.
GNELoadThread * myLoadThread
the thread that loads the network
GNENet * myNet
we are responsible for the net
long onCmdSaveEdgeTypes(FXObject *, FXSelector, void *)
called when the command/FXCall save edge types is executed
void handleEvent_Message(GUIEvent *e)
hanlde event of type message
bool continueWithUnsavedDemandElementChanges(const std::string &operation)
warns about unsaved changes in demand elements and gives the user the option to abort
long onCmdLoadAdditionalsInSUMOGUI(FXObject *, FXSelector, void *)
called when user toogle windows checkbox "load additionals"
long onCmdOpenTLSPrograms(FXObject *, FXSelector, void *)
called when the command/FXCall open TLS programs is executed
void updateControls()
update control contents after undo/redo or recompute
long computeJunctionWithVolatileOptions()
called if the user selects Processing->compute junctions with volatile options
long onCmdNewNetwork(FXObject *, FXSelector, void *)
long onCmdToogleGrid(FXObject *, FXSelector, void *)
called if the user press key combination Ctrl + G to toogle grid
GNEApplicationWindow()
FOX needs this for static members.
long onClipboardRequest(FXObject *sender, FXSelector sel, void *ptr)
called when the command/FXCall clipboard request is executed
FXMenuPane * myFileMenuAdditionals
long onUpdSaveNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall save network is executed
std::string myUndoRedoListEnabled
string to check if undo/redo list is enabled (a String is used to keep the disabling reason)
std::string myConfigPattern
Input file pattern.
long onCmdClose(FXObject *, FXSelector, void *)
called when the command/FXCall close is executed
long onCmdEditViewport(FXObject *, FXSelector, void *)
Called on menu Edit->Viewport.
void enableSaveAdditionalsMenu()
enable save additionals
FXEX::FXThreadEvent myLoadThreadEvent
io-event with the load-thread
GNEApplicationWindowHelper::MenuBarFile myMenuBarFile
MenuBarFile.
long onCmdOpenAdditionals(FXObject *, FXSelector, void *)
called when the command/FXCall open additionals is executed
long onCmdForceSaveDataElements(FXObject *sender, FXSelector sel, void *ptr)
force save data elements (flag)
long onCmdForceSaveAdditionals(FXObject *sender, FXSelector sel, void *ptr)
force save additionals (flag)
long onUpdRedo(FXObject *obj, FXSelector sel, void *ptr)
called when the update/FXCall redo is executed
long onUpdReload(FXObject *, FXSelector, void *)
called when the update/FXCall reload is executed
GNEApplicationWindowHelper::ProcessingMenuCommands myProcessingMenuCommands
Edit Menu Commands.
FXMenuPane * myWindowsMenu
void setStatusBarText(const std::string &statusBarText)
set text of the statusBar
FXMenuPane * myProcessingMenu
GNEUndoList * myUndoList
the one and only undo list
long onUpdSaveDataElements(FXObject *, FXSelector, void *)
called when the update/FXCall save data elements is executed
long onCmdPaste(FXObject *, FXSelector, void *)
long onCmdSaveAsPlainXML(FXObject *, FXSelector, void *)
called when the command/FXCall save as plain xml is executed
void disableSaveDemandElementsMenu()
disable save demand elements
long onCmdOpenNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall open network is executed
void closeAllWindows()
this method closes all windows and deletes the current simulation */
long onCmdForceSaveNetwork(FXObject *sender, FXSelector sel, void *ptr)
force save network (flag)
long onCmdCopyTemplate(FXObject *, FXSelector, void *)
void enableSaveDataElementsMenu()
enable save data elements
long onLoadThreadEvent(FXObject *, FXSelector, void *)
called when the command/FXCall load thread is executed
FXMDIMenu * myMDIMenu
The menu used for the MDI-windows.
long onUpdSaveDemandElements(FXObject *, FXSelector, void *)
called when the update/FXCall save demand elements is executed
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 */
SUMOTime getCurrentSimTime() const
get current simulation time (pure virtual but we don't need it)
long onCmdOptions(FXObject *, FXSelector, void *)
called if the user selects Processing->Configure Options
long onKeyPress(FXObject *o, FXSelector sel, void *data)
called when a key is pressed
void disableSaveAdditionalsMenu()
disable save additionals
long onCmdQuit(FXObject *, FXSelector, void *)
Called by FOX if the application shall be closed.
FXMenuPane * myFileMenuTLS
long onCmdSaveEdgeTypesAs(FXObject *, FXSelector, void *)
called when the command/FXCall save edgeTypes as is executed
long onCmdClearMsgWindow(FXObject *, FXSelector, void *)
called when the command/FXCall clear message windows is executed
long onCmdClearTemplate(FXObject *, FXSelector, void *)
GNEUndoList * getUndoList()
get pointer to undoList
long onUpdNeedsFrontElement(FXObject *, FXSelector, void *)
called when the update/FXCall needs front element is executed
long onCmdProcessButton(FXObject *, FXSelector sel, void *)
called when user press a process button (or a shortcut)
void loadOptionOnStartup()
load net on startup
GNEViewNet * getViewNet()
get pointer to viewNet
long onCmdSaveAdditionalsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save additionals as is executed
bool hadDependentBuild
check if had dependent build
GNEApplicationWindowHelper::LocateMenuCommands myLocateMenuCommands
Locate Menu Commands.
bool continueWithUnsavedChanges(const std::string &operation)
warns about unsaved changes and gives the user the option to abort
long onCmdUndo(FXObject *, FXSelector, void *)
called when user press Ctrl+Z
long onCmdAbout(FXObject *, FXSelector, void *)
called when the command/FXCall show about dialog is executed
void dependentBuild()
build dependent
FXMenuPane * myFileMenuDemandElements
long onCmdEditChosen(FXObject *, FXSelector, void *)
called when the command/FXCall edit chosen is executed
GNEApplicationWindowHelper::EditMenuCommands myEditMenuCommands
Edit Menu Commands.
long onCmdForceSaveDemandElements(FXObject *sender, FXSelector sel, void *ptr)
force save demand elements (flag)
long onCmdSetSuperMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-supermode hotkey
~GNEApplicationWindow()
Destructor.
long onCmdAbort(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits esc
GNEViewNet * myViewNet
pointer to current view net
const FXString myTitlePrefix
the prefix for the window title
void enableSaveTLSProgramsMenu()
enable save TLS Programs
double getTrackerInterval() const
get current tracker interval (pure virtual but we don't need it)
long onCmdReload(FXObject *, FXSelector, void *)
called when the command/FXCall reload is executed
void disableSaveDataElementsMenu()
disable save data elements
void fillMenuBar()
Builds the menu bar.
long onCmdFocusFrame(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits f
long onCmdToogleEditOptions(FXObject *, FXSelector, void *)
called if the user press key combination Alt + <0-9>
long onCmdHelp(FXObject *sender, FXSelector sel, void *ptr)
called if the user selects help->Documentation
long onCmdSaveDemandElements(FXObject *, FXSelector, void *)
called when the command/FXCall save demand elements is executed
long onCmdCut(FXObject *, FXSelector, void *)
called when user press Ctrl+Z
long onCmdOpenEdgeTypes(FXObject *, FXSelector, void *)
called when the command/FXCall open edgeType is executed
void enableSaveDemandElementsMenu()
enable save demand elements
long onCmdLoadDemandInSUMOGUI(FXObject *, FXSelector, void *)
called when user toogle windows checkbox "load demand"
bool myAmLoading
information whether the gui is currently loading and the load-options shall be greyed out
long onCmdOpenConfiguration(FXObject *, FXSelector, void *)
called when the command/FXCall open configuration is executed
long onUpdSaveAdditionals(FXObject *, FXSelector, void *)
called when the update/FXCall save additionals is executed
long onCmdSaveDemandElementsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save demand elements as is executed
long onCmdSaveDataElementsAs(FXObject *, FXSelector, void *)
called when the command/FXCall save data elements as is executed
GNEApplicationWindowHelper::FileMenuCommands myFileMenuCommands
File Menu Commands.
long onCmdOpenRecent(FXObject *, FXSelector, void *)
called when the command/FXCall open recent is executed
long onUpdOpen(FXObject *, FXSelector, void *)
called when the command/FXCall on update open executed
long onCmdSetMode(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits an edit-mode hotkey
long onCmdBackspace(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits backspace
void handleEvent_NetworkLoaded(GUIEvent *e)
handle event of type Network loaded
long onCmdCopy(FXObject *, FXSelector, void *)
long onCmdOpenSUMOGUI(FXObject *sender, FXSelector sel, void *ptr)
called if the user hints ctrl + T
void disableUndoRedo(const std::string &reason)
disable undo-redo giving a string with the reason
long onCmdOpenDemandElements(FXObject *, FXSelector, void *)
called when the command/FXCall open demand is executed
FXSynchQue< GUIEvent * > myEvents
List of got requests.
void enableUndoRedo()
disable undo-redo
bool continueWithUnsavedAdditionalChanges(const std::string &operation)
warns about unsaved changes in additionals and gives the user the option to abort
const std::string & isUndoRedoEnabled() const
check if undo-redo is enabled
long onUpdNeedsNetwork(FXObject *, FXSelector, void *)
called when the update/FXCall needs network is executed
GNEApplicationWindowHelper::ToolbarsGrip & getToolbarsGrip()
get ToolbarsGrip
FXMenuPane * myLocatorMenu
long onCmdSaveDataElements(FXObject *, FXSelector, void *)
called when the command/FXCall save data elements is executed
long onCmdLocate(FXObject *, FXSelector, void *)
called when the command/FXCall locate is executed
long onCmdDel(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits del
long onCmdOpenDataElements(FXObject *, FXSelector, void *)
called when the command/FXCall open data is executed
void updateSuperModeMenuCommands(const Supermode supermode)
update FXMenuCommands depending of supermode
long onCmdSetFrontElement(FXObject *, FXSelector, void *)
called if the user call set front element
long onCmdEnter(FXObject *sender, FXSelector sel, void *ptr)
called if the user hits enter
FXCursor * getDefaultCursor()
get default cursor
long onCmdSetTemplate(FXObject *, FXSelector, void *)
long onCmdRedo(FXObject *, FXSelector, void *)
long onUpdUndo(FXObject *obj, FXSelector sel, void *ptr)
called when the update/FXCall undo is executed
GUIMessageWindow * myMessageWindow
A window to display messages, warnings and error in.
FXSplitter * myMainSplitter
The splitter that divides the main window into view and the log window.
long onCmdSaveTLSPrograms(FXObject *, FXSelector, void *)
called when the command/FXCall save TLSPrograms is executed
long onCmdSaveJoined(FXObject *, FXSelector, void *)
called when the command/FXCall save joined is executed
long onCmdSaveNetwork(FXObject *, FXSelector, void *)
called when the command/FXCall save network is executed
FXMenuPane * myFileMenu
the submenus
GNEApplicationWindowHelper::ToolbarsGrip myToolbarsGrip
Toolbars Grip.
FXMenuPane * myFileMenuEdgeTypes
FXMenuPane * myFileMenuDataElements
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
called when a key is released
FXGLCanvas * getBuildGLCanvas() const
get build GL Canvas (must be implemented in all children)
long onCmdEditViewScheme(FXObject *, FXSelector, void *)
Called on menu Edit->Visualization.
long onCmdOpenForeign(FXObject *, FXSelector, void *)
called when the command/FXCall open foreign is executed
void refreshEdgeTypeSelector()
refresh edge type selector
EdgeTypeSelector * getEdgeTypeSelector() const
getcustom edge selector
Builds data objects for GNENet (busStops, chargingStations, detectors, etc..)
const std::vector< GNELaneType * > & getLaneTypes() const
get laneTypes
std::string mySettingsFile
the name of the settings file to load
bool myViewportFromRegistry
whether loading viewport from registry
std::string myFile
the name of the loaded file
GNENet * myNet
the loaded net
virtual void updateFrameAfterUndoRedo()
function called after undo/redo in the current frame (can be reimplemented in frame children)
void refreshNeteditAttributesEditor(bool forceRefresh)
refresh netedit attributes
void clearTemplate()
clear template (used by shortcut)
void setTemplate()
set template (used by shortcut)
void copyTemplate()
copy template (used by shortcut)
void inspectSingleElement(GNEAttributeCarrier *AC)
Inspect a single element.
TemplateEditor * getTemplateEditor() const
get template editor
GNEInspectorFrame::NeteditAttributesEditor * getNeteditAttributesEditor() const
get Netedit Attributes editor
void loadConfigOrNet(const std::string &file, bool isNet, bool useStartupOptions, bool newNet=false)
begins the loading of a netconvert configuration or a a network
static void fillOptions(OptionsCont &oc)
clears and initializes the OptionsCont
static void setDefaultOptions(OptionsCont &oc)
sets required options for proper functioning
void removeSolitaryJunctions(GNEUndoList *undoList)
removes junctions that have no edges
int getNumberOfAdditionals(SumoXMLTag type=SUMO_TAG_NOTHING) const
Returns the number of additionals of the net.
bool joinSelectedJunctions(GNEUndoList *undoList)
join selected junctions
void save(OptionsCont &oc)
save the network
void saveDemandElements(const std::string &filename)
save demand element elements of the network
void saveTLSPrograms(const std::string &filename)
save TLS Programs elements of the network
int getNumberOfDemandElements(SumoXMLTag type=SUMO_TAG_NOTHING) const
Returns the number of demand elements of the net.
bool isNetSaved() const
return if net has to be saved
void requireSaveNet(bool value)
inform that net has to be saved
void saveEdgeTypes(const std::string &filename)
save edgeTypes elements of the network
void savePlain(OptionsCont &oc)
save plain xml representation of the network (and nothing else)
void requireSaveAdditionals(bool value)
inform that additionals has to be saved
void cleanInvalidDemandElements(GNEUndoList *undoList)
clean invalid demand elements
void cleanUnusedRoutes(GNEUndoList *undoList)
clean unused routes
void computeNetwork(GNEApplicationWindow *window, bool force=false, bool volatileOptions=false, std::string additionalPath="", std::string demandPath="", std::string dataPath="")
trigger full netbuild computation param[in] window The window to inform about delay param[in] force W...
bool isAdditionalsSaved() const
check if additionals are saved
void disableUpdateData()
disable update data elements after inserting or removing an element in net
int getNumberOfDataSets() const
Returns the number of data sets of the net.
bool cleanInvalidCrossings(GNEUndoList *undoList)
clear invalid crossings
void joinRoutes(GNEUndoList *undoList)
join routes
void requireSaveDemandElements(bool value)
inform that demand elements has to be saved
void requireSaveDataElements(bool value)
inform that data sets has to be saved
void saveJoined(OptionsCont &oc)
save log of joined junctions (and nothing else)
void saveDataElements(const std::string &filename)
save data set elements of the network
void saveAdditionals(const std::string &filename)
save additional elements of the network
bool isDataElementsSaved() const
check if data sets are saved
GNEViewNet * getViewNet() const
get view net
void computeDemandElements(GNEApplicationWindow *window)
compute demand elements param[in] window The window to inform about delay
bool isDemandElementsSaved() const
check if demand elements are saved
Builds trigger objects for GNENet (busStops, chargingStations, detectors, etc..)
const std::vector< TAZCurrent::TAZEdge > & getEdgeAndTAZChildrenSelected() const
get map with edge and TAZChildren
void clearSelectedEdges()
clear current TAZ children
TAZSelectionStatistics * getTAZSelectionStatisticsModul() const
get TAZ Selection Statistics modul
bool parseTLSPrograms(const std::string &file)
parse TLS Programs from a file
void undo()
undo the last command group
void p_clear()
clears the undo list (implies abort)
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...
void redo()
redo the last command group
void p_end()
End undo command sub-group. If the sub-group is still empty, it will be deleted; otherwise,...
long p_onUpdUndo(FXObject *, FXSelector, void *)
long p_onUpdRedo(FXObject *, FXSelector, void *)
event after Redo
void enableIntervalBarUpdate()
enable interval bar update
void disableIntervalBarUpdate()
enable interval bar update
const GNEViewNetHelper::DataViewOptions & getDataViewOptions() const
get data view options
GNENet * getNet() const
get the net object
const GNEAttributeCarrier * getFrontAttributeCarrier() const
get front attributeCarrier
void hotkeyBackSpace()
handle backspace keypress
const GNEViewNetHelper::EditModes & getEditModes() const
get edit modes
void abortOperation(bool clearSelection=true)
abort current edition operation
const GNEViewNetHelper::NetworkViewOptions & getNetworkViewOptions() const
get network view options
void hotkeyFocusFrame()
handle focus frame keypress
GNEViewNetHelper::IntervalBar & getIntervalBar()
get interval bar
GNEViewParent * getViewParent() const
get the net object
GNEUndoList * getUndoList() const
get the undoList object
void saveVisualizationSettings() const
long onCmdSetSupermode(FXObject *, FXSelector sel, void *)
long onCmdSetMode(FXObject *, FXSelector sel, void *)
called when user press a mode button (Network or demand)
void hotkeyEnter()
handle enter keypress
void forceSupermodeNetwork()
set supermode Network (used after load/create new network)
const std::vector< GNEAttributeCarrier * > & getInspectedAttributeCarriers() const
get inspected attribute carriers
long onCmdToogleShowGrid(FXObject *, FXSelector, void *)
toogle show grid
void updateControls()
update control contents after undo/redo or recompute
void hotkeyDel()
handle del keypress
const GNEViewNetHelper::DemandViewOptions & getDemandViewOptions() const
get demand view options
void setFrontAttributeCarrier(const GNEAttributeCarrier *AC)
set front attributeCarrier
A single child window which contains a view of the simulation area.
void updateUndoRedoButtons()
update toolbar undo/redo buttons (called when user press Ctrl+Z/Y)
long onKeyPress(FXObject *o, FXSelector sel, void *data)
Called when user press a key.
GNETAZFrame * getTAZFrame() const
get frame for NETWORK_TAZ
GNETLSEditorFrame * getTLSEditorFrame() const
get frame for NETWORK_TLS
GNEInspectorFrame * getInspectorFrame() const
get frame for inspect elements
GNECreateEdgeFrame * getCreateEdgeFrame() const
get frame for NETWORK_CREATEEDGE
GNEFrame * getCurrentShownFrame() const
get current frame (note: it can be null)
long onCmdLocate(FXObject *, FXSelector, void *)
locator-callback
long onKeyRelease(FXObject *o, FXSelector sel, void *data)
Called when user releases a key.
void saveViewport(const double x, const double y, const double z, const double rot)
Makes the given viewport the default.
static void initCursors(FXApp *a)
Initiate GUICursorSubSys.
static FXMenuTitle * buildFXMenuTitle(FXComposite *p, const std::string &text, FXIcon *icon, FXMenuPane *menuPane)
build menu title
static FXMenuCommand * buildFXMenuCommandShortcut(FXComposite *p, const std::string &text, const std::string &shortcut, const std::string &info, FXIcon *icon, FXObject *tgt, FXSelector sel)
build menu command
Editor for the list of chosen objects.
const std::string & getMsg() const
Returns the message.
GUIEventType getOwnType() const
returns the event type
GUISUMOAbstractView * getView() const
return GUISUMOAbstractView
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static void initIcons(FXApp *a)
Initiate GUIIconSubSys.
static void close()
close GUIIconSubSys
void setWindowSizeAndPos()
perform initial window positioning and sizing according to user options / previous call
std::vector< FXMainWindow * > myTrackerWindows
FXLabel * myCartesianCoordinate
Labels for the current cartesian and geo-coordinate.
FXMDIClient * myMDIClient
The multi view panel.
FXHorizontalFrame * myGeoFrame
FXLabel * myGeoCoordinate
FXHorizontalFrame * myCartesianFrame
FXMutex myTrackerLock
A lock to make the removal and addition of trackers secure.
void storeWindowSizeAndPos()
record window position and size in registry
FXStatusBar * myStatusbar
The status bar.
FXGLVisual * myGLVisual
The gl-visual used.
std::vector< GUIGlChildWindow * > myGLWindows
A logging window for the gui.
void addSeparator()
Adds a a separator to this log window.
void unregisterMsgHandlers()
unregister message handlers
void clear()
Clears the window.
void appendMsg(GUIEventType eType, const std::string &msg)
Adds new text to the window.
void registerMsgHandlers()
register message handlers
virtual double getXPos() const =0
Returns the x-offset of the field to show stored in this changer.
virtual double getYPos() const =0
Returns the y-offset of the field to show stored in this changer.
virtual double getZPos() const =0
Returns the camera height corresponding to the current zoom factor.
void addDecals(const std::vector< Decal > &decals)
add decals
void showViewschemeEditor()
show viewsscheme editor
GUIVisualizationSettings & getVisualisationSettings() const
get visualization settings
virtual void showViewportEditor()
show viewport editor
GUIPerspectiveChanger & getChanger() const
get changer
virtual void setViewportFromToRot(const Position &lookFrom, const Position &lookAt, double rotation)
applies the given viewport settings
An XML-handler for visualisation schemes.
std::string addSettings(GUISUMOAbstractView *view=0) const
Adds the parsed settings to the global list of settings.
void applyViewport(GUISUMOAbstractView *view) const
Sets the viewport which has been parsed.
void setSnapshots(GUISUMOAbstractView *view) const
Makes a snapshot if it has been parsed.
const std::vector< GUISUMOAbstractView::Decal > & getDecals() const
Returns the parsed decals.
static void buildNETEDITAccelerators(GNEApplicationWindow *GNEApp)
build NETEDIT Accelerators
static void close()
close GUITextureSubSys
static void resetTextures()
Reset textures.
static void initTextures(FXApp *a)
Initiate GUITextureSubSys for textures.
static std::string clipped
bool showGrid
Information whether a grid shall be shown.
static void resetLoaded()
resets loaded location elements
static FXString getFilename2Write(FXWindow *parent, const FXString &header, const FXString &extension, FXIcon *icon, FXString ¤tFolder)
Returns the file name to write.
static FXString getTitleText(const FXString &appname, FXString filename="")
Returns the title text in dependance to an optional file name.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
A storage for available edgeTypes of edges.
int size() const
Returns the number of known edgeTypes.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
static bool load(SUMOSAXHandler *handler, const std::vector< std::string > &files, const std::string &type, const bool stringParse=false)
Importer for edge type information stored in XML.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
A storage for options typed value containers)
void unSet(const std::string &name, bool failOnNonExistant=true) const
Marks the option as unset.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
bool set(const std::string &name, const std::string &value)
Sets the given value for the named option.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
void resetWritable()
Resets all options to be writeable.
static OptionsCont & getOptions()
Retrieves the options.
A point in 2D or 3D with translation and scaling methods.
void set(double x, double y)
set positions x and y
double x() const
Returns the x-position.
double y() const
Returns the y-position.
static bool endsWith(const std::string &str, const std::string suffix)
Checks whether a given string ends with the suffix.
static unsigned long runHiddenCommand(const std::string &cmd)
run a shell command without popping up any windows (particuarly on win32)
static bool checkOptions()
checks shared options and sets StdDefs
static void setValidation(const std::string &validationScheme, const std::string &netValidationScheme, const std::string &routeValidationScheme)
Enables or disables validation.
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false, const bool isRoute=false)
Runs the given handler on the given file; returns if everything's ok.
void showDataMenuCommands()
show all menu commands
void hideDataMenuCommands()
hide all menu commands
void hideDemandMenuCommands()
hide all menu commands
void showDemandMenuCommands()
show all menu commands
void showNetworkMenuCommands()
show all menu commands
void hideNetworkMenuCommands()
hide all menu commands
DataMenuCommands dataMenuCommands
Data Menu Commands.
void buildEditMenuCommands(FXMenuPane *editMenu)
build edit menu commands
DemandMenuCommands demandMenuCommands
Demand Menu Commands.
FXMenuCheck * loadAdditionalsInSUMOGUI
menu check for load additionals in SUMO GUI
FXMenuCommand * undoLastChange
FXMenuCommand for undo last change.
FXMenuCheck * loadDemandInSUMOGUI
menu check for load demand in SUMO GUI
FXMenuCommand * redoLastChange
FXMenuCommand for redo last change.
NetworkMenuCommands networkMenuCommands
Network Menu Commands.
FXMenuCommand * saveTLSPrograms
FXMenuCommand for enable or disable save additionals.
FXMenuCommand * saveEdgeTypes
FXMenuCommand for enable or disable save edgeTypes.
FXMenuCommand * saveDemandElementsAs
FXMenuCommand for enable or disable save demand elements as.
FXMenuCommand * saveDataElementsAs
FXMenuCommand for enable or disable save data elements as.
FXMenuCommand * saveAdditionals
FXMenuCommand for enable or disable save additionals.
FXMenuCommand * saveDemandElements
FXMenuCommand for enable or disable save demand elements.
FXMenuCommand * saveDataElements
FXMenuCommand for enable or disable save data elements.
void buildFileMenuCommands(FXMenuPane *fileMenu, FXMenuPane *fileMenuTLS, FXMenuPane *fileMenuEdgeTypes, FXMenuPane *fileMenuAdditionals, FXMenuPane *fileMenuDemandElements, FXMenuPane *fileMenuDataElements)
build menu commands
FXMenuCommand * saveAdditionalsAs
FXMenuCommand for enable or disable save additionals As.
void buildLocateMenuCommands(FXMenuPane *locateMenu)
build menu commands
void showDataProcessingMenuCommands()
show data processing menu commands
void showDemandProcessingMenuCommands()
show demand processing menu commands
void hideDemandProcessingMenuCommands()
show demand processing menu commands
void hideDataProcessingMenuCommands()
show data processing menu commands
void showNetworkProcessingMenuCommands()
show network processing menu commands
void buildProcessingMenuCommands(FXMenuPane *editMenu)
build menu commands
void hideNetworkProcessingMenuCommands()
show network processing menu commands
void hideSupermodeCommands()
hide all menu commands
void buildSupermodeCommands(FXMenuPane *editMenu)
build menu commands
void showSupermodeCommands()
show all menu commands
void buildWindowsMenuCommands(FXMenuPane *windowsMenu, FXStatusBar *statusbar, GUIMessageWindow *messageWindow)
build menu commands
static bool toogleEditOptionsNetwork(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Network menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
static bool toogleEditOptionsData(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Data menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
static bool toogleEditOptionsDemand(GNEViewNet *viewNet, const MFXCheckableButton *menuCheck, const int numericalKeyPressed, FXObject *obj, FXSelector sel)
toogle edit options Demand menu commands (called in GNEApplicationWindow::onCmdToogleEditOptions)
void getVisibleDataMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible demand menu commands
void getVisibleDemandMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible demand menu commands
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
void getVisibleNetworkMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible network menu commands