98 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
105 return myLockedElements.at(
GLO_WIRE).lock;
108 return myLockedElements.at(
GLO_ROUTE).lock;
120 return myLockedElements.at(
GLO_STOP).lock;
122 return myLockedElements.at(objectType).lock;
205 mySupermode(supermode) {
226 myInspectedACs.clear();
228 myFirstInspectedAC = AC;
229 myInspectedACs.insert(AC);
231 myFirstInspectedAC =
nullptr;
238 myInspectedACs.clear();
239 if (ACs.size() > 0) {
240 myFirstInspectedAC = ACs.front();
241 for (
const auto& AC : ACs) {
242 myInspectedACs.insert(AC);
245 myFirstInspectedAC =
nullptr;
252 auto it = myInspectedACs.find(AC);
253 if (it != myInspectedACs.end()) {
254 myInspectedACs.erase(it);
255 if (myInspectedACs.size() == 0) {
256 myInspectedACs.clear();
257 myFirstInspectedAC =
nullptr;
258 }
else if (myFirstInspectedAC == AC) {
259 myFirstInspectedAC = (*myInspectedACs.begin());
267 myFirstInspectedAC =
nullptr;
268 myInspectedACs.clear();
274 return myFirstInspectedAC;
278const std::unordered_set<GNEAttributeCarrier*>&
280 return myInspectedACs;
286 if (myInspectedACs.empty()) {
288 }
else if (myFirstInspectedAC == AC) {
291 return myInspectedACs.find(AC) != myInspectedACs.end();
298 if (myInspectedACs.empty()) {
300 }
else if (myFirstInspectedAC == AC) {
311 return myInspectedACs.size() > 0;
317 return myInspectedACs.size() == 1;
323 return myInspectedACs.size() > 1;
335 myMarkedACs.insert(AC);
341 if (myMarkedACs.size() > 0) {
342 auto it = myMarkedACs.find(AC);
343 if (it != myMarkedACs.end()) {
344 myMarkedACs.erase(it);
353 const auto copy = myMarkedACs;
354 for (
auto& AC : copy) {
360const std::unordered_set<GNEAttributeCarrier*>&
377 myViewObjects.clearElements();
387 std::vector<const GUIGlObject*> glElements;
388 for (
const auto& glElement : myViewObjects.GUIGlObjects) {
389 if (glElement->getType() != exception) {
390 glElements.push_back(glElement);
393 myViewObjects.filterElements(glElements);
399 if (myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
400 filterDemandElements(
true);
401 filterDataElements();
402 }
else if (myViewNet->getEditModes().isCurrentSupermodeDemand()) {
403 filterNetworkElements();
404 filterAdditionals(
true,
true);
405 filterDataElements();
406 }
else if (myViewNet->getEditModes().isCurrentSupermodeData()) {
407 filterNetworkElements();
408 filterDemandElements(
true);
416 std::vector<const GUIGlObject*> junctions;
417 for (
const auto& junction : myViewObjects.junctions) {
418 junctions.push_back(junction);
420 myViewObjects.filterElements(junctions);
427 std::vector<const GUIGlObject*> edges;
428 for (
const auto& edge : myViewObjects.edges) {
429 edges.push_back(edge);
431 myViewObjects.filterElements(edges);
438 std::vector<const GUIGlObject*> lanes;
439 for (
const auto& lane : myViewObjects.lanes) {
440 lanes.push_back(lane);
442 myViewObjects.filterElements(lanes);
449 std::vector<const GUIGlObject*> connections;
450 for (
const auto& connection : myViewObjects.connections) {
451 connections.push_back(connection);
453 myViewObjects.filterElements(connections);
460 std::vector<const GUIGlObject*> crossings;
461 for (
const auto& crossing : myViewObjects.crossings) {
462 crossings.push_back(crossing);
464 myViewObjects.filterElements(crossings);
471 std::vector<const GUIGlObject*> walkingAreas;
472 for (
const auto& walkingArea : myViewObjects.walkingAreas) {
473 walkingAreas.push_back(walkingArea);
475 myViewObjects.filterElements(walkingAreas);
482 std::vector<const GUIGlObject*> shapes;
483 for (
const auto& poly : myViewObjects.polys) {
484 shapes.push_back(poly);
486 for (
const auto&
POI : myViewObjects.POIs) {
487 shapes.push_back(
POI);
489 myViewObjects.filterElements(shapes);
496 std::vector<const GUIGlObject*> additionals;
497 for (
const auto& additional : myViewObjects.additionals) {
500 }
else if (!includeTAZs && (additional->getType() ==
GLO_TAZ)) {
503 additionals.push_back(additional);
506 myViewObjects.filterElements(additionals);
513 std::vector<const GUIGlObject*> networkElements;
514 for (
const auto& networkElement : myViewObjects.networkElements) {
515 networkElements.push_back(networkElement);
517 myViewObjects.filterElements(networkElements);
524 std::vector<const GUIGlObject*> demandElements;
525 for (
const auto& demandElement : myViewObjects.demandElements) {
526 if (!includeRoutes && (demandElement->getType() ==
GLO_ROUTE)) {
529 demandElements.push_back(demandElement);
532 myViewObjects.filterElements(demandElements);
539 std::vector<const GUIGlObject*> datadElements;
540 for (
const auto& datadElement : myViewObjects.edgeDatas) {
541 datadElements.push_back(datadElement);
543 for (
const auto& datadElement : myViewObjects.edgeRelDatas) {
544 datadElements.push_back(datadElement);
546 for (
const auto& datadElement : myViewObjects.TAZRelDatas) {
547 datadElements.push_back(datadElement);
549 myViewObjects.filterElements(datadElements);
556 std::vector<const GUIGlObject*> GUIGlObjects;
558 for (
const auto&
GUIGlObject : myViewObjects.GUIGlObjects) {
564 for (
const auto& ignoredType : ignoreFilter) {
565 auto it = GUIGlObjects.begin();
566 while (it != GUIGlObjects.end()) {
567 if ((*it)->getType() == ignoredType) {
568 it = GUIGlObjects.erase(it);
575 myViewObjects.filterElements(GUIGlObjects);
581 if (myViewObjects.GUIGlObjects.size() > 0) {
582 return myViewObjects.GUIGlObjects.front();
591 if (myViewObjects.attributeCarriers.size() > 0) {
592 return myViewObjects.attributeCarriers.front();
601 if (myViewObjects.networkElements.size() > 0) {
602 return myViewObjects.networkElements.front();
611 if (myViewObjects.additionals.size() > 0) {
612 return myViewObjects.additionals.front();
621 if (myViewObjects.demandElements.size() > 0) {
622 return myViewObjects.demandElements.front();
631 if (myViewObjects.genericDatas.size() > 0) {
632 return myViewObjects.genericDatas.front();
641 if (myViewObjects.junctions.size() > 0) {
642 return myViewObjects.junctions.front();
651 if (myViewObjects.edges.size() > 0) {
652 return myViewObjects.edges.front();
661 if (myViewObjects.lanes.size() > 0) {
662 return myViewObjects.lanes.front();
671 if (myViewObjects.lanes.size() > 0) {
672 for (
auto& lane : myViewObjects.lanes) {
673 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
674 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
686const std::vector<GNELane*>&
688 return myViewObjects.lanes;
694 if (myViewObjects.crossings.size() > 0) {
695 return myViewObjects.crossings.front();
704 if (myViewObjects.walkingAreas.size() > 0) {
705 return myViewObjects.walkingAreas.front();
714 if (myViewObjects.connections.size() > 0) {
715 return myViewObjects.connections.front();
724 if (myViewObjects.internalLanes.size() > 0) {
725 return myViewObjects.internalLanes.front();
734 if (myViewObjects.POIs.size() > 0) {
735 return myViewObjects.POIs.front();
744 if (myViewObjects.polys.size() > 0) {
745 return myViewObjects.polys.front();
754 if (myViewObjects.TAZs.size() > 0) {
755 return myViewObjects.TAZs.front();
764 if (myViewObjects.edgeDatas.size() > 0) {
765 return myViewObjects.edgeDatas.front();
774 if (myViewObjects.edgeRelDatas.size() > 0) {
775 return myViewObjects.edgeRelDatas.front();
784 if (myViewObjects.TAZRelDatas.size() > 0) {
785 return myViewObjects.TAZRelDatas.front();
792const std::vector<GUIGlObject*>&
794 return myViewObjects.GUIGlObjects;
798const std::vector<GNEAttributeCarrier*>&
800 return myViewObjects.attributeCarriers;
804const std::vector<GNEJunction*>&
806 return myViewObjects.junctions;
810const std::vector<GNEEdge*>&
812 return myViewObjects.edges;
815const std::vector<GNETAZ*>&
817 return myViewObjects.TAZs;
820const std::vector<GNEAdditional*>&
822 return myViewObjects.additionals;
825const std::vector<GNEDemandElement*>&
827 return myViewObjects.demandElements;
836 GUIGlObjects.clear();
837 attributeCarriers.clear();
838 networkElements.clear();
840 demandElements.clear();
845 walkingAreas.clear();
847 internalLanes.clear();
851 genericDatas.clear();
853 edgeRelDatas.clear();
860 GUIGlObjects.reserve(size);
861 attributeCarriers.reserve(size);
862 networkElements.reserve(size);
863 additionals.reserve(size);
864 demandElements.reserve(size);
865 junctions.reserve(size);
868 crossings.reserve(size);
869 walkingAreas.reserve(size);
870 connections.reserve(size);
871 internalLanes.reserve(size);
875 genericDatas.reserve(size);
876 edgeDatas.reserve(size);
877 edgeRelDatas.reserve(size);
878 TAZRelDatas.reserve(size);
884 for (
const auto&
object : objects) {
886 auto itGlObjects = GUIGlObjects.begin();
887 while (itGlObjects != GUIGlObjects.end()) {
888 if (*itGlObjects ==
object) {
889 itGlObjects = GUIGlObjects.erase(itGlObjects);
895 auto itACs = attributeCarriers.begin();
896 while (itACs != attributeCarriers.end()) {
897 if ((*itACs)->getGUIGlObject() == object) {
898 itACs = attributeCarriers.erase(itACs);
904 auto itNetworkElements = networkElements.begin();
905 while (itNetworkElements != networkElements.end()) {
906 if ((*itNetworkElements)->getGUIGlObject() == object) {
907 itNetworkElements = networkElements.erase(itNetworkElements);
913 auto itAdditionals = additionals.begin();
914 while (itAdditionals != additionals.end()) {
915 if ((*itAdditionals)->getGUIGlObject() == object) {
916 itAdditionals = additionals.erase(itAdditionals);
922 auto itDemandElements = demandElements.begin();
923 while (itDemandElements != demandElements.end()) {
924 if ((*itDemandElements)->getGUIGlObject() == object) {
925 itDemandElements = demandElements.erase(itDemandElements);
931 auto itGenericDatas = genericDatas.begin();
932 while (itGenericDatas != genericDatas.end()) {
933 if ((*itGenericDatas)->getGUIGlObject() == object) {
934 itGenericDatas = genericDatas.erase(itGenericDatas);
940 auto itJunctions = junctions.begin();
941 while (itJunctions != junctions.end()) {
942 if ((*itJunctions)->getGUIGlObject() == object) {
943 itJunctions = junctions.erase(itJunctions);
949 auto itEdges = edges.begin();
950 while (itEdges != edges.end()) {
951 if ((*itEdges)->getGUIGlObject() == object) {
952 itEdges = edges.erase(itEdges);
958 auto itLanes = lanes.begin();
959 while (itLanes != lanes.end()) {
960 if ((*itLanes)->getGUIGlObject() == object) {
961 itLanes = lanes.erase(itLanes);
967 auto itCrossings = crossings.begin();
968 while (itCrossings != crossings.end()) {
969 if ((*itCrossings)->getGUIGlObject() == object) {
970 itCrossings = crossings.erase(itCrossings);
976 auto itWalkingAreas = walkingAreas.begin();
977 while (itWalkingAreas != walkingAreas.end()) {
978 if ((*itWalkingAreas)->getGUIGlObject() == object) {
979 itWalkingAreas = walkingAreas.erase(itWalkingAreas);
985 auto itConnections = connections.begin();
986 while (itConnections != connections.end()) {
987 if ((*itConnections)->getGUIGlObject() == object) {
988 itConnections = connections.erase(itConnections);
994 auto itInternalLanes = internalLanes.begin();
995 while (itInternalLanes != internalLanes.end()) {
996 if ((*itInternalLanes)->getGUIGlObject() == object) {
997 itInternalLanes = internalLanes.erase(itInternalLanes);
1003 auto itTAZs = TAZs.begin();
1004 while (itTAZs != TAZs.end()) {
1005 if ((*itTAZs)->getGUIGlObject() == object) {
1006 itTAZs = TAZs.erase(itTAZs);
1012 auto itPOIs = POIs.begin();
1013 while (itPOIs != POIs.end()) {
1014 if ((*itPOIs)->getGUIGlObject() == object) {
1015 itPOIs = POIs.erase(itPOIs);
1021 auto itPolys = polys.begin();
1022 while (itPolys != polys.end()) {
1023 if ((*itPolys)->getGUIGlObject() == object) {
1024 itPolys = polys.erase(itPolys);
1030 auto itEdgeDatas = edgeDatas.begin();
1031 while (itEdgeDatas != edgeDatas.end()) {
1032 if ((*itEdgeDatas)->getGUIGlObject() == object) {
1033 itEdgeDatas = edgeDatas.erase(itEdgeDatas);
1039 auto itEdgeRelDatas = edgeRelDatas.begin();
1040 while (itEdgeRelDatas != edgeRelDatas.end()) {
1041 if ((*itEdgeRelDatas)->getGUIGlObject() == object) {
1042 itEdgeRelDatas = edgeRelDatas.erase(itEdgeRelDatas);
1048 auto itTAZRelDatas = TAZRelDatas.begin();
1049 while (itTAZRelDatas != TAZRelDatas.end()) {
1050 if ((*itTAZRelDatas)->getGUIGlObject() == object) {
1051 itTAZRelDatas = TAZRelDatas.erase(itTAZRelDatas);
1063 switch (glObject->
getType()) {
1068 if (junction->isMarkedForDrawingFront()) {
1076 container.
junctions.push_back(junction);
1085 auto edge = myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(glObject->
getMicrosimID());
1087 if (edge->isMarkedForDrawingFront()) {
1089 container.
edges.insert(container.
edges.begin(), edge);
1095 container.
edges.push_back(edge);
1104 auto lane = myViewNet->getNet()->getAttributeCarriers()->retrieveLane(glObject);
1106 if (lane->isMarkedForDrawingFront()) {
1108 container.
lanes.insert(container.
lanes.begin(), lane);
1114 container.
lanes.push_back(lane);
1123 auto crossing = myViewNet->getNet()->getAttributeCarriers()->retrieveCrossing(glObject);
1125 if (crossing->isMarkedForDrawingFront()) {
1133 container.
crossings.push_back(crossing);
1142 auto walkingArea = myViewNet->getNet()->getAttributeCarriers()->retrieveWalkingArea(glObject);
1144 if (walkingArea->isMarkedForDrawingFront()) {
1161 auto connection = myViewNet->getNet()->getAttributeCarriers()->retrieveConnection(glObject);
1163 if (connection->isMarkedForDrawingFront()) {
1180 auto internalLane = myViewNet->getNet()->getAttributeCarriers()->retrieveInternalLane(glObject);
1182 if (internalLane->isMarkedForDrawingFront()) {
1204 auto additionalElement = myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject,
false);
1205 if (additionalElement) {
1207 if (additionalElement->isMarkedForDrawingFront()) {
1214 container.
additionals.push_back(additionalElement);
1227 auto POI =
dynamic_cast<GNEPOI*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1229 if (
POI->isMarkedForDrawingFront()) {
1231 container.
POIs.insert(container.
POIs.begin(),
POI);
1234 container.
POIs.push_back(
POI);
1238 auto poly =
dynamic_cast<GNEPoly*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1240 if (poly->isMarkedForDrawingFront()) {
1242 container.
polys.insert(container.
polys.begin(), poly);
1245 container.
polys.push_back(poly);
1256 auto TAZ =
dynamic_cast<GNETAZ*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1258 if (
TAZ->isMarkedForDrawingFront()) {
1260 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
1263 container.
TAZs.push_back(
TAZ);
1273 if (demandElement) {
1293 switch (glObject->
getType()) {
1296 auto edgeData =
dynamic_cast<GNEEdgeData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1298 if (edgeData->isMarkedForDrawingFront()) {
1306 container.
edgeDatas.push_back(edgeData);
1315 auto edgeRelData =
dynamic_cast<GNEEdgeRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1317 if (edgeRelData->isMarkedForDrawingFront()) {
1334 auto TAZRelData =
dynamic_cast<GNETAZRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1336 if (TAZRelData->isMarkedForDrawingFront()) {
1360 for (
const auto& glObjectLayer : objectsContainer) {
1361 for (
const auto& glObject : glObjectLayer.second) {
1363 updateNetworkElements(myViewObjects, glObject.object);
1364 updateAdditionalElements(myViewObjects, glObject.object);
1365 updateShapeElements(myViewObjects, glObject.object);
1366 updateTAZElements(myViewObjects, glObject.object);
1367 updateDemandElements(myViewObjects, glObject.object);
1368 updateGenericDataElements(myViewObjects, glObject.object);
1375 myViewNet(nullptr) {
1383 myEventInfo(nullptr) {
1389 myEventInfo = (FXEvent*) eventData;
1396 return (myEventInfo->state & SHIFTMASK) != 0;
1406 return (myEventInfo->state & CONTROLMASK) != 0;
1416 return (myEventInfo->state & ALTMASK) != 0;
1426 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1436 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1447 myViewNet(viewNet) {
1454 myRelativeClickedPosition = myViewNet->getPositionInformation();
1456 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1458 if (myViewNet->myViewObjectsSelector.getJunctionFront() && (myViewNet->myViewObjectsSelector.getJunctionFront() == editedElement)) {
1460 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1462 if (moveOperation) {
1463 myMoveOperation = moveOperation;
1468 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (myViewNet->myViewObjectsSelector.getLaneFront() == editedElement)) {
1470 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1472 if (moveOperation) {
1473 myMoveOperation = moveOperation;
1478 }
else if (myViewNet->myViewObjectsSelector.getCrossingFront() && (myViewNet->myViewObjectsSelector.getCrossingFront() == editedElement)) {
1480 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getCrossingFront()->getMoveOperation();
1482 if (moveOperation) {
1483 myMoveOperation = moveOperation;
1488 }
else if (myViewNet->myViewObjectsSelector.getConnectionFront() && (myViewNet->myViewObjectsSelector.getConnectionFront() == editedElement)) {
1490 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getConnectionFront()->getMoveOperation();
1492 if (moveOperation) {
1493 myMoveOperation = moveOperation;
1498 }
else if (myViewNet->myViewObjectsSelector.getWalkingAreaFront() && (myViewNet->myViewObjectsSelector.getWalkingAreaFront() == editedElement)) {
1500 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getWalkingAreaFront()->getMoveOperation();
1502 if (moveOperation) {
1503 myMoveOperation = moveOperation;
1518 myRelativeClickedPosition = myViewNet->getPositionInformation();
1520 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1522 if (myViewNet->myViewObjectsSelector.getPolyFront() && (markAC == myViewNet->myViewObjectsSelector.getPolyFront())) {
1524 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPolyFront()->getMoveOperation();
1526 if (moveOperation) {
1527 myMoveOperation = moveOperation;
1532 }
else if (myViewNet->myViewObjectsSelector.getPOIFront() && (markAC == myViewNet->myViewObjectsSelector.getPOIFront())) {
1534 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPOIFront()->getMoveOperation();
1536 if (moveOperation) {
1537 myMoveOperation = moveOperation;
1542 }
else if (myViewNet->myViewObjectsSelector.getAdditionalFront() && (markAC == myViewNet->myViewObjectsSelector.getAdditionalFront())) {
1544 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getAdditionalFront()->getMoveOperation();
1546 if (moveOperation) {
1547 myMoveOperation = moveOperation;
1552 }
else if (myViewNet->myViewObjectsSelector.getJunctionFront() && (markAC == myViewNet->myViewObjectsSelector.getJunctionFront())) {
1554 if (myViewNet->myViewObjectsSelector.getEdgeFront() && (myViewNet->myViewObjectsSelector.getEdgeFront()->clickedOverGeometryPoint(myRelativeClickedPosition))) {
1556 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1558 if (moveOperation) {
1559 myMoveOperation = moveOperation;
1566 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1568 if (moveOperation) {
1569 myMoveOperation = moveOperation;
1575 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront() && (markAC == myViewNet->myViewObjectsSelector.getEdgeFront())) {
1577 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1579 myViewNet->myViewObjectsSelector.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1584 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1586 if (moveOperation) {
1587 myMoveOperation = moveOperation;
1593 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (markAC == myViewNet->myViewObjectsSelector.getLaneFront())) {
1595 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1597 if (moveOperation) {
1598 myMoveOperation = moveOperation;
1613 myRelativeClickedPosition = myViewNet->getPositionInformation();
1615 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1617 if (myViewNet->myViewObjectsSelector.getDemandElementFront() && (markAC == myViewNet->myViewObjectsSelector.getDemandElementFront())) {
1619 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getDemandElementFront()->getMoveOperation();
1621 if (moveOperation) {
1622 myMoveOperation = moveOperation;
1637 if (myMoveOperation) {
1641 if (mouseLeftButtonPressed) {
1648 delete myMoveOperation;
1649 myMoveOperation =
nullptr;
1657 if (myMoveOperation) {
1662 delete myMoveOperation;
1663 myMoveOperation =
nullptr;
1670 return myMoveOperation !=
nullptr;
1676 if (myMoveOperation) {
1688 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElement.myRelativeClickedPosition);
1690 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1705 myMovingSelectedEdge(false),
1713 myClickedPosition = myViewNet->getPositionInformation();
1715 if (myViewNet->myViewObjectsSelector.getJunctionFront()) {
1716 calculateJunctionSelection();
1717 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront()) {
1718 calculateEdgeSelection(myViewNet->myViewObjectsSelector.getEdgeFront());
1720 myViewNet->updateViewNet();
1729 if (mouseLeftButtonPressed) {
1731 for (
const auto& moveOperation : myMoveOperations) {
1735 }
else if (myMoveOperations.size() > 0) {
1739 for (
const auto& moveOperation : myMoveOperations) {
1743 delete moveOperation;
1746 myViewNet->getUndoList()->end();
1748 myMoveOperations.clear();
1760 for (
const auto& moveOperation : myMoveOperations) {
1763 delete moveOperation;
1766 myViewNet->getUndoList()->end();
1768 myMoveOperations.clear();
1774 return (myMoveOperations.size() > 0);
1780 return myMovingSelectedEdge;
1786 myMovingSelectedEdge =
false;
1792 return myEdgeOffset;
1798 return myMoveOperations.size() > 0;
1806 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1808 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1823 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1825 for (
const auto& junction : selectedJunctions) {
1826 moveOperation = junction->getMoveOperation();
1827 if (moveOperation) {
1828 myMoveOperations.push_back(moveOperation);
1832 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1834 for (
const auto& edge : selectedEdges) {
1835 moveOperation = edge->getMoveOperation();
1836 if (moveOperation) {
1837 myMoveOperations.push_back(moveOperation);
1846 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1848 for (
const auto& junction : selectedJunctions) {
1850 if (moveOperation) {
1851 myMoveOperations.push_back(moveOperation);
1855 myMovingSelectedEdge =
true;
1862 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1865 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1867 for (
const auto& edge : selectedEdges) {
1870 if (moveOperation) {
1871 myMoveOperations.push_back(moveOperation);
1881 myViewNet(viewNet) {
1902 myViewNet(viewNet) {
1923 selectingUsingRectangle(false),
1924 startDrawing(false),
1925 myViewNet(viewNet) {
1931 selectingUsingRectangle =
true;
1932 selectionCorner1 = myViewNet->getPositionInformation();
1933 selectionCorner2 = selectionCorner1;
1940 startDrawing =
true;
1942 selectionCorner2 = myViewNet->getPositionInformation();
1944 myViewNet->setStatusBarText(
TL(
"Selection width:") +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1945 +
TL(
" height:") +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1946 +
TL(
" diagonal:") +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1953 selectingUsingRectangle =
false;
1954 startDrawing =
false;
1956 myViewNet->setStatusBarText(
"");
1963 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1964 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1965 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1968 rectangleBoundary.
add(selectionCorner1);
1969 rectangleBoundary.
add(selectionCorner2);
1971 processBoundarySelection(rectangleBoundary);
1976std::vector<GNEEdge*>
1979 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1980 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1981 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1984 rectangleBoundary.
add(selectionCorner1);
1985 rectangleBoundary.
add(selectionCorner2);
1987 myViewNet->updateObjectsInBoundary(rectangleBoundary);
1989 return myViewNet->getViewObjectsSelector().getEdges();
1998 if (selectingUsingRectangle) {
2003 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
2005 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
2006 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
2007 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
2008 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
2017 const bool selEdges = myViewNet->myNetworkViewOptions.selectEdges();
2019 myViewNet->updateObjectsInBoundary(boundary);
2021 std::vector<GNEAttributeCarrier*> ACsFiltered;
2022 ACsFiltered.reserve(myViewNet->getViewObjectsSelector().getAttributeCarriers().size());
2023 for (
const auto& AC : myViewNet->getViewObjectsSelector().getAttributeCarriers()) {
2025 if (!AC->getGUIGlObject()->isGLObjectLocked()) {
2026 const auto& tagProperty = AC->getTagProperty();
2027 if (tagProperty.isNetworkElement() || tagProperty.isAdditionalElement()) {
2029 if (((tagProperty.getTag() ==
SUMO_TAG_EDGE) && !selEdges) ||
2033 ACsFiltered.push_back(AC);
2035 }
else if (tagProperty.isDemandElement()) {
2036 ACsFiltered.push_back(AC);
2037 }
else if (tagProperty.isGenericData()) {
2038 ACsFiltered.push_back(AC);
2043 std::vector<GNEAttributeCarrier*> ACToSelect;
2044 std::vector<GNEAttributeCarrier*> ACToUnselect;
2046 ACToSelect.reserve(ACsFiltered.size());
2047 ACToUnselect.reserve(ACsFiltered.size());
2049 const auto modificationMode = myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode();
2052 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
2054 for (
const auto& AC : selectedAC) {
2055 ACToUnselect.push_back(AC);
2059 for (
const auto& AC : ACsFiltered) {
2060 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode()) {
2062 ACToUnselect.push_back(AC);
2065 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC) != ACToUnselect.end()) {
2066 ACToSelect.push_back(AC);
2070 ACToSelect.push_back(AC);
2076 std::vector<GNEEdge*> edgesToSelect;
2078 for (
const auto& AC : ACToSelect) {
2080 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
2084 for (
const auto& edge : edgesToSelect) {
2086 ACToSelect.push_back(edge->getFromJunction());
2087 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
2088 ACToSelect.push_back(connection);
2090 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
2091 ACToSelect.push_back(crossing);
2094 ACToSelect.push_back(edge->getToJunction());
2095 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
2096 ACToSelect.push_back(connection);
2098 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
2099 ACToSelect.push_back(crossing);
2104 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
2107 for (
const auto& AC : ACToUnselect) {
2110 for (
const auto& AC : ACToSelect) {
2111 if (AC->getTagProperty().isSelectable()) {
2115 myViewNet->myUndoList->end();
2117 myViewNet->makeNonCurrent();
2125 myViewNet(viewNet) {
2135 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
2136 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
2137 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
2150 if (myTestingWidth > 0) {
2151 mainWindow->resize(myTestingWidth, myTestingHeight);
2155 const double size = myViewNet->p2m(32);
2156 Position center = myViewNet->screenPos2NetPos(8, 8);
2161 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2164 glVertex2d(0, -size);
2165 glVertex2d(size, -size);
2166 glVertex2d(size, 0);
2173 glScaled(0.7, 0.7, 0);
2174 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2177 glVertex2d(0, -size);
2178 glVertex2d(size, -size);
2179 glVertex2d(size, 0);
2186 glScaled(0.4, 0.4, 0);
2187 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2190 glVertex2d(0, -size);
2191 glVertex2d(size, -size);
2192 glVertex2d(size, 0);
2203 myViewNet(viewNet) {
2208 delete mySaveIndividualFilesPopup;
2215 auto gripSaveElements = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements;
2217 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2222 mySaveNeteditConfig->create();
2227 mySaveSumoConfig->create();
2232 mySaveNetwork->create();
2234 mySaveIndividualFilesPopup =
new FXPopup(gripSaveElements, POPUP_VERTICAL);
2235 mySaveIndividualFilesPopup->create();
2238 std::string(
"\t") +
TL(
"Save individual files") + std::string(
"\t") +
TL(
"Save individual files."),
2240 mySaveIndividualFiles->create();
2242 mySaveAdditionalElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2245 mySaveAdditionalElements->create();
2247 mySaveDemandElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2250 mySaveDemandElements->create();
2252 mySaveDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2255 mySaveDataElements->create();
2257 mySaveMeanDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2260 mySaveMeanDataElements->create();
2262 gripSaveElements->recalc();
2264 gripSaveElements->show();
2271 mySaveIndividualFiles->enable();
2273 mySaveIndividualFiles->disable();
2282 myViewNet(viewNet) {
2289 mySwitchButton =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().timeSwitch,
2290 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2291 gHumanReadableTime ?
"H" :
"S" + std::string(
"\t") +
TL(
"Switch between seconds and HH:MM:SS") + std::string(
"\t") +
TL(
"Switch between seconds and HH:MM:SS"),
nullptr,
2293 mySwitchButton->create();
2312 mySwitchButton->setText(
"H");
2314 mySwitchButton->setText(
"S");
2327 myViewNet(viewNet) {
2330 if (neteditOptions.getBool(
"new")) {
2332 neteditOptions.resetWritable();
2333 neteditOptions.set(
"new",
"false");
2339 delete myNeteditViewsPopup;
2346 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2348 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2351 TL(
"Network") + std::string(
"\t") +
TL(
"Edit network elements") + std::string(
"\t") +
TL(
"Set mode for editing network elements. (F2)"),
2353 networkButton->create();
2356 TL(
"Demand") + std::string(
"\t") +
TL(
"Edit traffic demand elements") + std::string(
"\t") +
TL(
"Set mode for editing traffic demand. (F3)"),
2358 demandButton->create();
2361 TL(
"Data") + std::string(
"\t") +
TL(
"Edit data elements") + std::string(
"\t") +
TL(
"Set mode for editing data demand. (F4)"),
2363 dataButton->create();
2365 myNeteditViewsPopup =
new FXPopup(gripSupermodes, POPUP_VERTICAL);
2366 myNeteditViewsPopup->create();
2369 (std::string(
"\t") +
TL(
"Change netedit view") + std::string(
"\t") +
TL(
"Change netedit view.")).c_str(),
2371 myNeteditViewsButton->create();
2373 myDefaultViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2374 (std::string(
"Default\t") +
TL(
"Set default view") + std::string(
"\t") +
TL(
"Set default view.")).c_str(),
2376 myDefaultViewButton->create();
2378 myJuPedSimViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2379 (std::string(
"JuPedSim\t") +
TL(
"Set JuPedSim view") + std::string(
"\t") +
TL(
"Set JuPedSim view.")).c_str(),
2381 myJuPedSimViewButton->create();
2382 myNeteditViewsPopup->recalc();
2384 gripSupermodes->setWidth(353);
2386 gripSupermodes->show();
2392 if (!force && (supermode == currentSupermode)) {
2393 myViewNet->setStatusBarText(
TL(
"Mode already selected"));
2394 if (myViewNet->myCurrentFrame !=
nullptr) {
2395 myViewNet->myCurrentFrame->focusUpperElement();
2398 myViewNet->setStatusBarText(
"");
2400 myViewNet->abortOperation(
false);
2402 currentSupermode = supermode;
2406 networkButton->setChecked(
true);
2407 demandButton->setChecked(
false);
2408 dataButton->setChecked(
false);
2410 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
2412 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2414 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2416 setNetworkEditMode(networkEditMode,
true);
2419 networkButton->setChecked(
false);
2420 demandButton->setChecked(
true);
2421 dataButton->setChecked(
false);
2423 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2425 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2427 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2429 setDemandEditMode(demandEditMode,
true);
2431 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2433 if (!myViewNet->myNet->getDemandPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2435 myViewNet->myNet->getDemandPathManager()->getPathCalculator()->updatePathCalculator();
2437 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2441 networkButton->setChecked(
false);
2442 demandButton->setChecked(
false);
2443 dataButton->setChecked(
true);
2445 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2447 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2449 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2451 setDataEditMode(dataEditMode,
true);
2453 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2455 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2458 for (
const auto&
TAZ : myViewNet->getNet()->getAttributeCarriers()->getAdditionals().at(
SUMO_TAG_TAZ)) {
2459 TAZ.second->resetAdditionalContour();
2463 networkButton->update();
2464 demandButton->update();
2465 dataButton->update();
2467 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2474 if ((mode == networkEditMode) && !force) {
2475 myViewNet->setStatusBarText(
TL(
"Network mode already selected"));
2476 if (myViewNet->myCurrentFrame !=
nullptr) {
2477 myViewNet->myCurrentFrame->focusUpperElement();
2480 myViewNet->setStatusBarText(
TL(
"Save modifications in TLS before change mode"));
2481 myViewNet->myCurrentFrame->focusUpperElement();
2483 myViewNet->setStatusBarText(
"");
2484 myViewNet->abortOperation(
false);
2486 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2488 networkEditMode = mode;
2509 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2515 myViewNet->updateCursor();
2517 myViewNet->updateNetworkModeSpecificControls();
2524 if ((mode == demandEditMode) && !force) {
2525 myViewNet->setStatusBarText(
TL(
"Demand mode already selected"));
2526 if (myViewNet->myCurrentFrame !=
nullptr) {
2527 myViewNet->myCurrentFrame->focusUpperElement();
2530 myViewNet->setStatusBarText(
"");
2531 myViewNet->abortOperation(
false);
2533 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2535 demandEditMode = mode;
2550 myViewNet->updateCursor();
2552 myViewNet->updateDemandModeSpecificControls();
2559 if ((mode == dataEditMode) && !force) {
2560 myViewNet->setStatusBarText(
TL(
"Data mode already selected"));
2561 if (myViewNet->myCurrentFrame !=
nullptr) {
2562 myViewNet->myCurrentFrame->focusUpperElement();
2565 myViewNet->setStatusBarText(
"");
2566 myViewNet->abortOperation(
false);
2568 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2570 dataEditMode = mode;
2583 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2584 dataSet.second->updateAttributeColors();
2587 myViewNet->updateCursor();
2589 myViewNet->updateDataModeSpecificControls();
2615 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2617 auto& fileMenuCommands = myViewNet->getViewParent()->getGNEAppWindows()->getFileMenuCommands();
2621 gripSupermodes->setWidth(353);
2623 fileMenuCommands.setDefaultView();
2626 gripSupermodes->setWidth(250);
2628 fileMenuCommands.setJuPedSimView();
2631 myViewNet->viewUpdated();
2651 myViewNet(viewNet) {
2658 auto gripModes = myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes;
2660 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2663 (std::string(
"\t") +
TL(
"Show grid") + std::string(
"\t") +
TL(
"Show grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)")),
2666 menuCheckToggleGrid->setChecked(
false);
2667 menuCheckToggleGrid->create();
2669 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2670 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2673 menuCheckToggleDrawJunctionShape->setChecked(
false);
2674 menuCheckToggleDrawJunctionShape->create();
2677 (std::string(
"\t") +
TL(
"Draw vehicles spread in lane or depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
2680 menuCheckDrawSpreadVehicles->setChecked(
false);
2681 menuCheckDrawSpreadVehicles->create();
2684 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2687 menuCheckShowDemandElements->setChecked(
false);
2688 menuCheckShowDemandElements->create();
2691 (std::string(
"\t") +
TL(
"Clicks target lanes") + std::string(
"\t") +
TL(
"Toggle whether clicking should inspect/select/delete lanes instead of edges.")),
2694 menuCheckSelectEdges->create();
2697 (std::string(
"\t") +
TL(
"Show connections over junctions") + std::string(
"\t") +
TL(
"Toggle show connections over junctions.")),
2700 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2701 menuCheckShowConnections->create();
2704 (std::string(
"\t") +
TL(
"Hide connections") + std::string(
"\t") +
TL(
"Toggle hide connections.")),
2707 menuCheckHideConnections->setChecked(
false);
2708 menuCheckHideConnections->create();
2710 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2711 (std::string(
"\t") +
TL(
"Show additional sub-elements") + std::string(
"\t") +
TL(
"Toggle show additional sub-elements.")),
2714 menuCheckShowAdditionalSubElements->setChecked(
false);
2715 menuCheckShowAdditionalSubElements->create();
2718 (std::string(
"\t") +
TL(
"Show TAZ elements") + std::string(
"\t") +
TL(
"Toggle show TAZ elements.")),
2721 menuCheckShowTAZElements->setChecked(
false);
2722 menuCheckShowTAZElements->create();
2725 (std::string(
"\t") +
TL(
"Automatic select junctions") + std::string(
"\t") +
TL(
"Toggle whether selecting multiple edges should automatically select their junctions.")),
2728 menuCheckExtendSelection->setChecked(
true);
2729 menuCheckExtendSelection->create();
2732 (std::string(
"\t") +
TL(
"Apply state to all phases") + std::string(
"\t") +
TL(
"Toggle whether clicking should apply state changes to all phases of the current TLS plan.")),
2735 menuCheckChangeAllPhases->setChecked(
false);
2736 menuCheckChangeAllPhases->create();
2739 (std::string(
"\t") +
TL(
"Automatic merging junction") + std::string(
"\t") +
TL(
"Toggle ask for confirmation before merging junction.")),
2742 menuCheckWarnAboutMerge->create();
2745 (std::string(
"\t") +
TL(
"Show bubbles") + std::string(
"\t") +
TL(
"Toggle show bubbles over junctions shapes.")),
2748 menuCheckShowJunctionBubble->setChecked(
false);
2749 menuCheckShowJunctionBubble->create();
2752 (std::string(
"\t") +
TL(
"Move elevation") + std::string(
"\t") +
TL(
"Apply mouse movement to elevation instead of x,y position.")),
2755 menuCheckMoveElevation->setChecked(
false);
2756 menuCheckMoveElevation->create();
2759 (std::string(
"\t") +
TL(
"Edge chain mode") + std::string(
"\t") +
TL(
"Create consecutive edges with a single click (hit ESC to cancel chain).")),
2762 menuCheckChainEdges->setChecked(
false);
2763 menuCheckChainEdges->create();
2766 (std::string(
"\t") +
TL(
"Edge opposite direction") + std::string(
"\t") +
TL(
"Automatically create an edge in the opposite direction.")),
2769 menuCheckAutoOppositeEdge->setChecked(
false);
2770 menuCheckAutoOppositeEdge->create();
2773 gripModes->recalc();
2779 menuCheckToggleGrid->hide();
2780 menuCheckToggleDrawJunctionShape->hide();
2781 menuCheckDrawSpreadVehicles->hide();
2782 menuCheckShowDemandElements->hide();
2783 menuCheckSelectEdges->hide();
2784 menuCheckShowConnections->hide();
2785 menuCheckHideConnections->hide();
2786 menuCheckShowAdditionalSubElements->hide();
2787 menuCheckShowTAZElements->hide();
2788 menuCheckExtendSelection->hide();
2789 menuCheckChangeAllPhases->hide();
2790 menuCheckWarnAboutMerge->hide();
2791 menuCheckShowJunctionBubble->hide();
2792 menuCheckMoveElevation->hide();
2793 menuCheckChainEdges->hide();
2794 menuCheckAutoOppositeEdge->hide();
2801 if (menuCheckToggleGrid->shown()) {
2802 commands.push_back(menuCheckToggleGrid);
2804 if (menuCheckToggleDrawJunctionShape->shown()) {
2805 commands.push_back(menuCheckToggleDrawJunctionShape);
2807 if (menuCheckDrawSpreadVehicles->shown()) {
2808 commands.push_back(menuCheckDrawSpreadVehicles);
2810 if (menuCheckShowDemandElements->shown()) {
2811 commands.push_back(menuCheckShowDemandElements);
2813 if (menuCheckSelectEdges->shown()) {
2814 commands.push_back(menuCheckSelectEdges);
2816 if (menuCheckShowConnections->shown()) {
2817 commands.push_back(menuCheckShowConnections);
2819 if (menuCheckHideConnections->shown()) {
2820 commands.push_back(menuCheckHideConnections);
2822 if (menuCheckShowAdditionalSubElements->shown()) {
2823 commands.push_back(menuCheckShowAdditionalSubElements);
2825 if (menuCheckShowTAZElements->shown()) {
2826 commands.push_back(menuCheckShowTAZElements);
2828 if (menuCheckExtendSelection->shown()) {
2829 commands.push_back(menuCheckExtendSelection);
2831 if (menuCheckChangeAllPhases->shown()) {
2832 commands.push_back(menuCheckChangeAllPhases);
2834 if (menuCheckWarnAboutMerge->shown()) {
2835 commands.push_back(menuCheckWarnAboutMerge);
2837 if (menuCheckShowJunctionBubble->shown()) {
2838 commands.push_back(menuCheckShowJunctionBubble);
2840 if (menuCheckMoveElevation->shown()) {
2841 commands.push_back(menuCheckMoveElevation);
2843 if (menuCheckChainEdges->shown()) {
2844 commands.push_back(menuCheckChainEdges);
2846 if (menuCheckAutoOppositeEdge->shown()) {
2847 commands.push_back(menuCheckAutoOppositeEdge);
2854 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2860 if (menuCheckShowDemandElements->shown()) {
2861 return (menuCheckShowDemandElements->amChecked() == TRUE);
2871 if (menuCheckSelectEdges->shown()) {
2872 return (menuCheckSelectEdges->amChecked() != TRUE);
2882 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2886 return (menuCheckHideConnections->amChecked() == FALSE);
2889 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2892 return (myViewNet->getVisualisationSettings().showLane2Lane);
2899 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2901 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2904 return menuCheckShowAdditionalSubElements->amChecked();
2911 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2913 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2916 return menuCheckShowTAZElements->amChecked();
2923 if (menuCheckMoveElevation->shown()) {
2924 return (menuCheckMoveElevation->amChecked() == TRUE);
2935 myViewNet(viewNet) {
2942 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
2944 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2947 (std::string(
"\t") +
TL(
"Show grid") + std::string(
"\t") +
TL(
"Show grid and restrict movement to the grid - define grid size in visualization options. (Ctrl+G)")),
2950 menuCheckToggleGrid->setChecked(
false);
2951 menuCheckToggleGrid->create();
2953 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2954 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2957 menuCheckToggleDrawJunctionShape->setChecked(
false);
2958 menuCheckToggleDrawJunctionShape->create();
2961 (std::string(
"\t") +
TL(
"Draw vehicles spread/depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
2964 menuCheckDrawSpreadVehicles->setChecked(
false);
2965 menuCheckDrawSpreadVehicles->create();
2968 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
2971 menuCheckHideShapes->setChecked(
false);
2972 menuCheckHideShapes->create();
2975 (std::string(
"\t") +
TL(
"Show all trips") + std::string(
"\t") +
TL(
"Toggle show all trips (requires updated demand - F5).")),
2978 menuCheckShowAllTrips->setChecked(
false);
2979 menuCheckShowAllTrips->create();
2982 (std::string(
"\t") +
TL(
"Show all person plans") + std::string(
"\t") +
TL(
"Toggle show all person plans.")),
2985 menuCheckShowAllPersonPlans->setChecked(
false);
2986 menuCheckShowAllPersonPlans->create();
2989 (std::string(
"\t") +
TL(
"Lock selected person") + std::string(
"\t") +
TL(
"Toggle lock selected person.")),
2992 menuCheckLockPerson->setChecked(
false);
2993 menuCheckLockPerson->create();
2995 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2996 (std::string(
"\t") +
TL(
"Show all containers plans") + std::string(
"\t") +
TL(
"Toggle show all container plans.")),
2999 menuCheckShowAllContainerPlans->setChecked(
false);
3000 menuCheckShowAllContainerPlans->create();
3003 (std::string(
"\t") +
TL(
"Lock selected container") + std::string(
"\t") +
TL(
"Toggle lock selected container.")),
3006 menuCheckLockContainer->setChecked(
false);
3007 menuCheckLockContainer->create();
3009 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3010 (std::string(
"\t") +
TL(
"Show non-inspected demand elements") + std::string(
"\t") +
TL(
"Toggle show non-inspected demand elements.")),
3013 menuCheckHideNonInspectedDemandElements->setChecked(
false);
3014 menuCheckHideNonInspectedDemandElements->create();
3016 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3017 (std::string(
"\t") +
TL(
"Show number of overlapped routes") + std::string(
"\t") +
TL(
"Toggle show number of overlapped routes.")),
3020 menuCheckShowOverlappedRoutes->setChecked(
false);
3021 menuCheckShowOverlappedRoutes->create();
3024 gripModes->recalc();
3030 menuCheckToggleGrid->hide();
3031 menuCheckToggleDrawJunctionShape->hide();
3032 menuCheckDrawSpreadVehicles->hide();
3033 menuCheckHideShapes->hide();
3034 menuCheckShowAllTrips->hide();
3035 menuCheckShowAllPersonPlans->hide();
3036 menuCheckLockPerson->hide();
3037 menuCheckShowAllContainerPlans->hide();
3038 menuCheckLockContainer->hide();
3039 menuCheckHideNonInspectedDemandElements->hide();
3040 menuCheckShowOverlappedRoutes->hide();
3047 if (menuCheckToggleGrid->shown()) {
3048 commands.push_back(menuCheckToggleGrid);
3050 if (menuCheckToggleDrawJunctionShape->shown()) {
3051 commands.push_back(menuCheckToggleDrawJunctionShape);
3053 if (menuCheckDrawSpreadVehicles->shown()) {
3054 commands.push_back(menuCheckDrawSpreadVehicles);
3056 if (menuCheckHideShapes->shown()) {
3057 commands.push_back(menuCheckHideShapes);
3059 if (menuCheckShowAllTrips->shown()) {
3060 commands.push_back(menuCheckShowAllTrips);
3062 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
3063 commands.push_back(menuCheckShowAllPersonPlans);
3065 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
3066 commands.push_back(menuCheckLockPerson);
3068 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
3069 commands.push_back(menuCheckShowAllContainerPlans);
3071 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
3072 commands.push_back(menuCheckLockContainer);
3074 if (menuCheckHideNonInspectedDemandElements->shown()) {
3075 commands.push_back(menuCheckHideNonInspectedDemandElements);
3077 if (menuCheckShowOverlappedRoutes->shown()) {
3078 commands.push_back(menuCheckShowOverlappedRoutes);
3085 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
3091 if (menuCheckHideNonInspectedDemandElements->shown()) {
3092 const auto& inspectedElements = myViewNet->getInspectedElements();
3094 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (inspectedElements.getFirstAC() ==
nullptr)) {
3097 }
else if (inspectedElements.getFirstAC() && inspectedElements.getFirstAC()->getTagProperty().isDemandElement()) {
3098 if (inspectedElements.isACInspected(demandElement)) {
3104 if (inspectedElements.isACInspected(demandElementChild)) {
3110 if (inspectedElements.isACInspected(demandElementParent)) {
3130 if (menuCheckHideShapes->shown()) {
3131 return (menuCheckHideShapes->amChecked() == FALSE);
3140 return (menuCheckShowAllTrips->amChecked() == TRUE);
3146 if (menuCheckShowAllPersonPlans->isEnabled()) {
3147 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
3156 myLockedPerson = person;
3162 myLockedPerson =
nullptr;
3168 return myLockedPerson;
3174 if (menuCheckShowAllContainerPlans->isEnabled()) {
3175 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
3184 myLockedContainer = container;
3190 myLockedContainer =
nullptr;
3196 if (menuCheckShowOverlappedRoutes->isEnabled()) {
3197 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
3206 return myLockedContainer;
3214 myViewNet(viewNet) {
3221 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3223 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3225 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3226 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
3229 menuCheckToggleDrawJunctionShape->setChecked(
false);
3230 menuCheckToggleDrawJunctionShape->create();
3233 (std::string(
"\t") +
TL(
"Show additionals") + std::string(
"\t") +
TL(
"Toggle show additionals.")),
3236 menuCheckShowAdditionals->create();
3239 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
3242 menuCheckShowShapes->create();
3245 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
3248 menuCheckShowDemandElements->create();
3251 (std::string(
"\t") +
TL(
"Draw TAZREL drawing mode") + std::string(
"\t") +
TL(
"Toggle draw TAZREL drawing mode.")),
3254 menuCheckToggleTAZRelDrawing->create();
3257 (std::string(
"\t") +
TL(
"Toggle draw TAZ fill") + std::string(
"\t") +
TL(
"Toggle draw TAZ fill")),
3260 menuCheckToggleTAZDrawFill->create();
3262 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3263 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only from") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only from")),
3266 menuCheckToggleTAZRelOnlyFrom->create();
3269 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only to") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only to")),
3272 menuCheckToggleTAZRelOnlyTo->create();
3275 gripModes->recalc();
3281 menuCheckToggleDrawJunctionShape->hide();
3282 menuCheckShowAdditionals->hide();
3283 menuCheckShowShapes->hide();
3284 menuCheckShowDemandElements->hide();
3285 menuCheckToggleTAZRelDrawing->hide();
3286 menuCheckToggleTAZDrawFill->hide();
3287 menuCheckToggleTAZRelOnlyFrom->hide();
3288 menuCheckToggleTAZRelOnlyTo->hide();
3295 if (menuCheckToggleDrawJunctionShape->shown()) {
3296 commands.push_back(menuCheckToggleDrawJunctionShape);
3298 if (menuCheckShowAdditionals->shown()) {
3299 commands.push_back(menuCheckShowAdditionals);
3301 if (menuCheckShowShapes->shown()) {
3302 commands.push_back(menuCheckShowShapes);
3304 if (menuCheckShowDemandElements->shown()) {
3305 commands.push_back(menuCheckShowDemandElements);
3307 if (menuCheckToggleTAZRelDrawing->shown()) {
3308 commands.push_back(menuCheckToggleTAZRelDrawing);
3310 if (menuCheckToggleTAZDrawFill->shown()) {
3311 commands.push_back(menuCheckToggleTAZDrawFill);
3313 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3314 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
3316 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3317 commands.push_back(menuCheckToggleTAZRelOnlyTo);
3324 if (menuCheckShowAdditionals->shown()) {
3325 return (menuCheckShowAdditionals->amChecked() == TRUE);
3334 if (menuCheckShowShapes->shown()) {
3335 return (menuCheckShowShapes->amChecked() == TRUE);
3344 if (menuCheckShowDemandElements->shown()) {
3345 return (menuCheckShowDemandElements->amChecked() == TRUE);
3354 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
3360 if (menuCheckToggleTAZDrawFill->shown()) {
3361 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
3370 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3371 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
3380 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3381 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3392 myViewNet(viewNet) {
3399 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3401 genericDataLabel->create();
3403 myGenericDataTypesComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3406 myGenericDataTypesComboBox->create();
3408 myGenericDataTypesComboBox->appendIconItem(
"<all>");
3413 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3415 dataSetLabel->create();
3417 myDataSetsComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3420 myDataSetsComboBox->create();
3422 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3424 myIntervalCheckBox->create();
3426 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3428 myBeginTextField->create();
3430 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3432 myEndTextField->create();
3434 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3436 parameterLabel->create();
3438 myParametersComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3441 myParametersComboBox->create();
3443 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3450 updateIntervalBar();
3452 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3459 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3466 if (myUpdateInterval && myViewNet->getNet()) {
3473 myParameters.clear();
3475 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3477 myDataSets.push_back(dataSet.second->getID());
3479 for (
const auto& interval : dataSet.second->getDataIntervalChildren()) {
3482 begin = interval.first;
3485 end = interval.first;
3488 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3490 for (
const auto& parameter : genericData->getParametersMap()) {
3491 myParameters.insert(parameter.first);
3497 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3499 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3500 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3502 const std::string previousParameter = myParametersComboBox->getText().text();
3504 myDataSetsComboBox->clearItems();
3505 myParametersComboBox->clearItems();
3507 myDataSetsComboBox->appendIconItem(
"<all>");
3508 myParametersComboBox->appendIconItem(
"<all>");
3510 for (
const auto& dataSet : myDataSets) {
3511 myDataSetsComboBox->appendIconItem(dataSet.c_str());
3514 myBeginTextField->setText(
toString(begin).c_str());
3515 myEndTextField->setText(
toString(end).c_str());
3517 for (
const auto& parameter : myParameters) {
3518 myParametersComboBox->appendIconItem(parameter.c_str());
3521 myDataSetsComboBox->setCurrentItem(0, FALSE);
3522 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3523 if (myDataSetsComboBox->getItemText(i) == previousDataSet) {
3524 myDataSetsComboBox->setCurrentItem(i);
3528 if (myIntervalCheckBox->getCheck() == TRUE) {
3529 myBeginTextField->setText(previousBegin.c_str());
3530 myEndTextField->setText(previousEnd.c_str());
3533 myParametersComboBox->setCurrentItem(0, FALSE);
3534 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3535 if (myParametersComboBox->getItemText(i) == previousParameter) {
3536 myParametersComboBox->setCurrentItem(i);
3543 enableIntervalBar();
3545 disableIntervalBar();
3548 myUpdateInterval =
false;
3555 myUpdateInterval =
true;
3561 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() == FXRGB(0, 0, 0))) {
3576 if (!myDataSetsComboBox->isEnabled() ||
3577 (myDataSetsComboBox->getCurrentItem() == 0) ||
3578 (myDataSetsComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3588 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3591 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3598 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3601 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3608 if (!myParametersComboBox->isEnabled() ||
3609 (myParametersComboBox->getCurrentItem() == 0) ||
3610 (myParametersComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3613 return myParametersComboBox->getText().text();
3620 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3624 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
3626 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
3629 myViewNet->updateViewNet();
3636 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3637 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
3639 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
3642 myViewNet->updateViewNet();
3649 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3650 myBeginTextField->enable();
3651 myEndTextField->enable();
3653 myBeginTextField->disable();
3654 myEndTextField->disable();
3657 myViewNet->updateViewNet();
3663 if (myBeginTextField->getText().empty()) {
3664 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3665 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3666 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3667 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3669 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
3672 myViewNet->updateViewNet();
3678 if (myEndTextField->getText().empty()) {
3679 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3680 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3681 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3682 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3684 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3687 myViewNet->updateViewNet();
3694 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3695 myParametersComboBox->setTextColor(FXRGB(0, 0, 0));
3697 myParametersComboBox->setTextColor(FXRGB(255, 0, 0));
3700 myViewNet->updateViewNet();
3708 myGenericDataTypesComboBox->enable();
3709 myDataSetsComboBox->enable();
3710 myIntervalCheckBox->enable();
3711 if (myIntervalCheckBox->getCheck() == TRUE) {
3712 myBeginTextField->enable();
3713 myEndTextField->enable();
3715 myBeginTextField->disable();
3716 myEndTextField->disable();
3718 myParametersComboBox->enable();
3725 myGenericDataTypesComboBox->disable();
3726 myDataSetsComboBox->disable();
3727 myIntervalCheckBox->disable();
3728 myBeginTextField->disable();
3729 myEndTextField->disable();
3730 myParametersComboBox->disable();
3738 myViewNet(viewNet) {
3745 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3747 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3750 std::string(
"\t") +
TL(
"Inspect mode") + std::string(
"\t") +
TL(
"Mode for inspect elements and change their attributes. (I)"),
3752 inspectButton->create();
3755 std::string(
"\t") +
TL(
"Delete mode") + std::string(
"\t") +
TL(
"Mode for deleting elements. (D)"),
3757 deleteButton->create();
3760 std::string(
"\t") +
TL(
"Select mode") + std::string(
"\t") +
TL(
"Mode for selecting elements. (S)"),
3762 selectButton->create();
3764 gripModes->recalc();
3770 inspectButton->show();
3771 deleteButton->show();
3772 selectButton->show();
3778 inspectButton->hide();
3779 deleteButton->hide();
3780 selectButton->hide();
3786 inspectButton->setChecked(
false);
3787 deleteButton->setChecked(
false);
3788 selectButton->setChecked(
false);
3794 inspectButton->update();
3795 deleteButton->update();
3796 selectButton->update();
3804 myViewNet(viewNet) {
3811 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3813 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3816 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3818 moveNetworkElementsButton->create();
3821 std::string(
"\t") +
TL(
"Edge mode") + std::string(
"\t") +
TL(
"Mode for creating junctions and edges. (E)"),
3823 createEdgeButton->create();
3826 std::string(
"\t") +
TL(
"Traffic light mode") + std::string(
"\t") +
TL(
"Mode for editing traffic lights over junctions. (T)"),
3828 trafficLightButton->create();
3831 std::string(
"\t") +
TL(
"Connection mode") + std::string(
"\t") +
TL(
"Mode for edit connections between lanes. (C)"),
3833 connectionButton->create();
3836 std::string(
"\t") +
TL(
"Prohibition mode") + std::string(
"\t") +
TL(
"Mode for editing connection prohibitions. (H)"),
3838 prohibitionButton->create();
3841 std::string(
"\t") +
TL(
"Crossing mode") + std::string(
"\t") +
TL(
"Mode for creating crossings between edges. (R)"),
3843 crossingButton->create();
3846 std::string(
"\t") +
TL(
"Additional mode") + std::string(
"\t") +
TL(
"Mode for creating additional elements. (A)"),
3848 additionalButton->create();
3851 std::string(
"\t") +
TL(
"Wire mode") + std::string(
"\t") +
TL(
"Mode for editing overhead wires. (W)"),
3853 wireButton->create();
3856 std::string(
"\t") +
TL(
"TAZ mode") + std::string(
"\t") +
TL(
"Mode for creating Traffic Assignment Zones. (Z)"),
3858 TAZButton->create();
3861 std::string(
"\t") +
TL(
"Polygon mode") + std::string(
"\t") +
TL(
"Mode for creating polygons and POIs. (P)"),
3863 shapeButton->create();
3866 std::string(
"\t") +
TL(
"Decal mode") + std::string(
"\t") +
TL(
"Mode for editing decals. (U)"),
3868 decalButton->create();
3870 gripModes->recalc();
3877 if (myViewNet->getEditModes().isJuPedSimView()) {
3878 moveNetworkElementsButton->show();
3879 createEdgeButton->show();
3880 connectionButton->hide();
3881 trafficLightButton->hide();
3882 additionalButton->show();
3883 crossingButton->show();
3885 shapeButton->show();
3886 prohibitionButton->hide();
3888 decalButton->hide();
3890 moveNetworkElementsButton->show();
3891 createEdgeButton->show();
3892 connectionButton->show();
3893 trafficLightButton->show();
3894 additionalButton->show();
3895 crossingButton->show();
3897 shapeButton->show();
3898 prohibitionButton->show();
3900 decalButton->show();
3907 moveNetworkElementsButton->hide();
3908 createEdgeButton->hide();
3909 connectionButton->hide();
3910 trafficLightButton->hide();
3911 additionalButton->hide();
3912 crossingButton->hide();
3914 shapeButton->hide();
3915 prohibitionButton->hide();
3917 decalButton->hide();
3923 moveNetworkElementsButton->setChecked(
false);
3924 createEdgeButton->setChecked(
false);
3925 connectionButton->setChecked(
false);
3926 trafficLightButton->setChecked(
false);
3927 additionalButton->setChecked(
false);
3928 crossingButton->setChecked(
false);
3929 TAZButton->setChecked(
false);
3930 shapeButton->setChecked(
false);
3931 prohibitionButton->setChecked(
false);
3932 wireButton->setChecked(
false);
3933 decalButton->setChecked(
false);
3939 moveNetworkElementsButton->update();
3940 createEdgeButton->update();
3941 connectionButton->update();
3942 trafficLightButton->update();
3943 additionalButton->update();
3944 crossingButton->update();
3945 TAZButton->update();
3946 shapeButton->update();
3947 prohibitionButton->update();
3948 wireButton->update();
3949 decalButton->update();
3957 myViewNet(viewNet) {
3964 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3966 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3969 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3971 moveDemandElementsButton->create();
3974 std::string(
"\t") +
TL(
"Route mode") + std::string(
"\t") +
TL(
"Mode for creating routes. (R)"),
3976 routeButton->create();
3979 std::string(
"\t") +
TL(
"Route distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing rout distributions. (W)"),
3981 routeDistributionButton->create();
3984 std::string(
"\t") +
TL(
"Vehicle mode") + std::string(
"\t") +
TL(
"Mode for creating vehicles. (V)"),
3986 vehicleButton->create();
3989 std::string(
"\t") +
TL(
"Type mode") + std::string(
"\t") +
TL(
"Mode for creating types (of vehicles, persons and containers). (T)"),
3991 typeButton->create();
3994 std::string(
"\t") +
TL(
"Type distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing type distribution. (U)"),
3996 typeDistributionButton->create();
3999 std::string(
"\t") +
TL(
"Stop mode") + std::string(
"\t") +
TL(
"Mode for creating stops. (A)"),
4001 stopButton->create();
4004 std::string(
"\t") +
TL(
"Person mode") + std::string(
"\t") +
TL(
"Mode for creating persons. (P)"),
4006 personButton->create();
4009 std::string(
"\t") +
TL(
"Person plan mode") + std::string(
"\t") +
TL(
"Mode for creating person plans. (L)"),
4011 personPlanButton->create();
4014 std::string(
"\t") +
TL(
"Container mode") + std::string(
"\t") +
TL(
"Mode for creating containers. (C)"),
4016 containerButton->create();
4019 std::string(
"\t") +
TL(
"Container plan mode") + std::string(
"\t") +
TL(
"Mode for creating container plans. (H)"),
4021 containerPlanButton->create();
4023 gripModes->recalc();
4029 if (myViewNet->getEditModes().isJuPedSimView()) {
4030 moveDemandElementsButton->hide();
4031 routeButton->show();
4032 routeDistributionButton->show();
4033 vehicleButton->hide();
4035 typeDistributionButton->show();
4037 personButton->show();
4038 personPlanButton->show();
4039 containerButton->hide();
4040 containerPlanButton->hide();
4042 moveDemandElementsButton->show();
4043 routeButton->show();
4044 routeDistributionButton->show();
4045 vehicleButton->show();
4047 typeDistributionButton->show();
4049 personButton->show();
4050 personPlanButton->show();
4051 containerButton->show();
4052 containerPlanButton->show();
4059 moveDemandElementsButton->hide();
4060 routeButton->hide();
4061 routeDistributionButton->hide();
4062 vehicleButton->hide();
4064 typeDistributionButton->hide();
4066 personButton->hide();
4067 personPlanButton->hide();
4068 containerButton->hide();
4069 containerPlanButton->hide();
4075 moveDemandElementsButton->setChecked(
false);
4076 routeButton->setChecked(
false);
4077 routeDistributionButton->setChecked(
false);
4078 vehicleButton->setChecked(
false);
4079 typeButton->setChecked(
false);
4080 typeDistributionButton->setChecked(
false);
4081 stopButton->setChecked(
false);
4082 personButton->setChecked(
false);
4083 personPlanButton->setChecked(
false);
4084 containerButton->setChecked(
false);
4085 containerPlanButton->setChecked(
false);
4091 moveDemandElementsButton->update();
4092 routeButton->update();
4093 routeDistributionButton->update();
4094 vehicleButton->update();
4095 typeButton->update();
4096 typeDistributionButton->update();
4097 stopButton->update();
4098 personButton->update();
4099 personPlanButton->update();
4100 containerButton->update();
4101 containerPlanButton->update();
4109 myViewNet(viewNet) {
4116 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
4118 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
4121 std::string(
"\t") +
TL(
"Edge data mode") + std::string(
"\t") +
TL(
"Mode for creating edge datas. (E)"),
4123 edgeDataButton->create();
4126 std::string(
"\t") +
TL(
"Edge relation data mode") + std::string(
"\t") +
TL(
"Mode for creating edge relation datas. (R)"),
4128 edgeRelDataButton->create();
4131 std::string(
"\t") +
TL(
"TAZ relation data mode") + std::string(
"\t") +
TL(
"Mode for creating TAZ relation datas. (Z)"),
4133 TAZRelDataButton->create();
4136 std::string(
"\t") +
TL(
"MeanData mode") + std::string(
"\t") +
TL(
"Mode for MeanData elements. (M)"),
4138 meanDataButton->create();
4140 gripModes->recalc();
4146 edgeDataButton->show();
4147 edgeRelDataButton->show();
4148 TAZRelDataButton->show();
4149 meanDataButton->show();
4155 edgeDataButton->hide();
4156 edgeRelDataButton->hide();
4157 TAZRelDataButton->hide();
4158 meanDataButton->hide();
4164 edgeDataButton->setChecked(
false);
4165 edgeRelDataButton->setChecked(
false);
4166 TAZRelDataButton->setChecked(
false);
4167 meanDataButton->setChecked(
false);
4173 edgeDataButton->update();
4174 edgeRelDataButton->update();
4175 TAZRelDataButton->update();
4176 meanDataButton->update();
4191 if (element && (myEditedNetworkElement ==
nullptr)) {
4193 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
4197 myEditedNetworkElement = element;
4201 myViewNet->updateViewNet();
4209 if (myEditedNetworkElement !=
nullptr) {
4211 myEditedNetworkElement->setShapeEdited(
false);
4213 myEditedNetworkElement =
nullptr;
4215 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
4216 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
4225 if (myEditedNetworkElement !=
nullptr) {
4227 stopEditCustomShape();
4234 return myEditedNetworkElement;
4244 const double size,
const double offsetx,
const double offsety) {
4246 if (checkDrawing(d, AC, type, exaggeration)) {
4252 glTranslated(offsetx, offsety, 0);
4254 glRotated(180, 0, 0, 1);
4278 if (exaggeration == 0) {
4282 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
4304const std::vector<RGBColor>&
4329 }
else if (value >= max) {
4333 const double procent = ((value - min) * 100) / (max - min);
4337 }
else if (procent >= 100) {
4347std::vector<GUIGlObject*>
4349 std::vector<GUIGlObject*> filteredGLObjects;
4350 if (GLObjects.size() > 0) {
4351 const auto firstLayer = GLObjects.front()->getType();
4352 for (
const auto& GLObject : GLObjects) {
4354 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
4355 filteredGLObjects.push_back(GLObject);
4357 (GLO_STOP <= GLObject->getType()) && (GLObject->getType() <=
GLO_STOP_PLAN)) {
4358 filteredGLObjects.push_back(GLObject);
4360 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
4361 filteredGLObjects.push_back(GLObject);
4363 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
4364 filteredGLObjects.push_back(GLObject);
4366 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
4367 filteredGLObjects.push_back(GLObject);
4368 }
else if (GLObject->getType() == firstLayer) {
4369 filteredGLObjects.push_back(GLObject);
4373 return filteredGLObjects;
DataEditMode
enum for data edit modes
@ DATA_SELECT
mode for selecting data elements
@ DATA_INSPECT
mode for inspecting data elements
@ DATA_DELETE
mode for deleting data elements
Supermode
@brie enum for supermodes
@ NETWORK
Network mode (Edges, junctions, etc..)
@ DATA
Data mode (edgeData, LaneData etc..)
@ DEMAND
Demand mode (Routes, Vehicles etc..)
NetworkEditMode
@brie enum for network edit modes
@ NETWORK_DELETE
mode for deleting network elements
@ NETWORK_MOVE
mode for moving network elements
@ NETWORK_WIRE
Mode for editing wires.
@ NETWORK_CREATE_EDGE
mode for creating new edges
@ NETWORK_TLS
mode for editing tls
@ NETWORK_SELECT
mode for selecting network elements
@ NETWORK_INSPECT
mode for inspecting network elements
@ NETWORK_PROHIBITION
Mode for editing connection prohibitions.
@ NETWORK_NONE
empty Network mode
@ NETWORK_CONNECT
mode for connecting lanes
DemandEditMode
@brie enum for demand edit modes
@ DEMAND_INSPECT
mode for inspecting demand elements
@ DEMAND_DELETE
mode for deleting demand elements
@ DEMAND_SELECT
mode for selecting demand elements
@ DEMAND_MOVE
mode for moving demand elements
@ MID_GNE_NETWORKVIEWOPTIONS_AUTOOPPOSITEEDGES
automatically create opposite edge
@ MID_HOTKEY_CTRL_SHIFT_B_SAVEDATAELEMENTS
save Data Elements
@ MID_HOTKEY_F3_SUPERMODE_DEMAND
select demand supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLPERSONPLANS
show all person plans
@ MID_GNE_DATAVIEWOPTIONS_TAZRELDRAWING
toggle TAZRel drawing
@ MID_HOTKEY_U_MODE_DECAL_TYPEDISTRIBUTION
hotkey for mode decal AND type distribution
@ MID_GNE_NETWORKVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_NETWORKVIEWOPTIONS_MOVEELEVATION
move elevation instead of x,y
@ MID_GNE_NETWORKVIEWOPTIONS_HIDECONNECTIONS
hide connections
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWCONNECTIONS
show connections
@ MID_GNE_INTERVALBAR_BEGIN
begin changed in InterbalBar
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYTO
toggle draw TAZRel only to
@ MID_GNE_DATAVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWTAZELEMENTS
show TAZ elements
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKPERSON
lock person
@ MID_HOTKEY_Z_MODE_TAZ_TAZREL
hotkey for mode editing TAZ and TAZRel
@ MID_GNE_DEMANDVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_HOTKEY_A_MODE_STARTSIMULATION_ADDITIONALS_STOPS
hotkey for start simulation in SUMO and set editing mode additionals AND stops in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_ASKFORMERGE
ask before merging junctions
@ MID_GNE_TOGGLE_TIMEFORMAT
switch time format
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWGRID
show grid
@ MID_HOTKEY_CTRL_SHIFT_D_SAVEDEMANDELEMENTS
Save Demand Elements.
@ MID_HOTKEY_CTRL_S_STOPSIMULATION_SAVENETWORK
Stop the simulation in SUMO and save network in netedit.
@ MID_HOTKEY_D_MODE_SINGLESIMULATIONSTEP_DELETE
hotkey for perform a single simulation step in SUMO and set delete mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_CHAINEDGES
create edges in chain mode
@ MID_GNE_DATAVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_C_MODE_CONNECT_CONTAINER
hotkey for mode connecting lanes AND container
@ MID_HOTKEY_H_MODE_PROHIBITION_CONTAINERPLAN
hotkey for mode prohibition AND container plan
@ MID_HOTKEY_W_MODE_WIRE_ROUTEDISTRIBUTION
hotkey for mode editing overhead wires AND route distributions
@ MID_HOTKEY_T_MODE_TLS_TYPE
hotkey for mode editing TLS AND Vehicle Types
@ MID_GNE_DEMANDVIEWOPTIONS_HIDESHAPES
hide shapes
@ MID_GNE_DATAVIEWOPTIONS_SHOWADDITIONALS
show additionals
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWBUBBLES
show junctions as bubbles
@ MID_GNE_INTERVALBAR_END
end changed in InterbalBar
@ MID_GNE_NETWORKVIEWOPTIONS_EXTENDSELECTION
extend selection
@ MID_HOTKEY_S_MODE_STOPSIMULATION_SELECT
hotkey for stop simulation in SUMO and set select mode in netedit
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWSUBADDITIONALS
show sub-additionals
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWALLCONTAINERPLANS
show all container plans
@ MID_GNE_VIEW_DEFAULT
set default view
@ MID_HOTKEY_F4_SUPERMODE_DATA
select data supermode in netedit
@ MID_GNE_VIEW_JUPEDSIM
set juPedSim view
@ MID_GNE_INTERVALBAR_PARAMETER
parameter changed in InterbalBar
@ MID_HOTKEY_R_MODE_CROSSING_ROUTE_EDGERELDATA
hotkey for mode editing crossing, routes and edge rel datas
@ MID_GNE_DATAVIEWOPTIONS_TAZDRAWFILL
toggle draw TAZ fill
@ MID_HOTKEY_CTRL_SHIFT_M_SAVEMEANDATAS
save Mean Datas
@ MID_HOTKEY_L_MODE_PERSONPLAN
hotkey for mode person plan
@ MID_HOTKEY_V_MODE_VEHICLE
hotkey for mode create vehicles
@ MID_HOTKEY_I_MODE_INSPECT
hotkey for mode inspecting object attributes
@ MID_GNE_NETWORKVIEWOPTIONS_SHOWDEMANDELEMENTS
show demand elements
@ MID_HOTKEY_CTRL_SHIFT_E_SAVENETEDITCONFIG
save netedit Config
@ MID_GNE_DEMANDVIEWOPTIONS_HIDENONINSPECTED
hide non-inspected demand element
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALS
Save Additional Elements.
@ MID_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_GNE_NETWORKVIEWOPTIONS_CHANGEALLPHASES
change all phases
@ MID_GNE_DATAVIEWOPTIONS_SHOWSHAPES
show shapes
@ MID_HOTKEY_E_MODE_EDGE_EDGEDATA
hotkey for mode adding edges AND edgeDatas
@ MID_GNE_DATAVIEWOPTIONS_TAZRELONLYFROM
toggle draw TAZRel only from
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEDRAWJUNCTIONSHAPE
toggle draw junction shape
@ MID_GNE_DEMANDVIEWOPTIONS_DRAWSPREADVEHICLES
Draw vehicles in begin position or spread in lane.
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWOVERLAPPEDROUTES
show overlapped routes
@ MID_HOTKEY_CTRL_SHIFT_S_SAVESUMOCONFIG
save SUMOConfig (SUMO AND netedit)
@ MID_GNE_INTERVALBAR_DATASET
data set selected
@ MID_HOTKEY_M_MODE_MOVE_MEANDATA
hotkey for mode moving element AND mean data
@ MID_HOTKEY_F2_SUPERMODE_NETWORK
select network supermode in netedit
@ MID_GNE_DEMANDVIEWOPTIONS_LOCKCONTAINER
lock container
@ MID_GNE_NETWORKVIEWOPTIONS_SELECTEDGES
select edges
@ MID_GNE_DEMANDVIEWOPTIONS_SHOWTRIPS
show all trips
@ MID_GNE_NETWORKVIEWOPTIONS_TOGGLEGRID
show grid
@ MID_GNE_INTERVALBAR_LIMITED
enable/disable show data elements by interval
@ MID_HOTKEY_P_MODE_POLYGON_PERSON
hotkey for mode creating polygons
#define GUIDesignComboBoxWidth180
comboBox with thick frame, width 180
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignButtonPopup
checkable button placed in popup (for example, locate buttons)
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
#define GUIDesignButtonLeft
button extended over over Frame with thick and raise frame
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTLSTableCheckableButtonIcon
checkable button only with icon used in TLSTable
#define GUIDesignComboBoxVisibleItemsFixed
combo box size fixed
#define GUIDesignTextFieldFixedRestricted(width, type)
text field with fixed width
#define GUIDesignMFXCheckableButtonSquare
#define GUIDesignButtonToolbarLocator
little checkable button with icon placed in navigation toolbar used specify for Locator
#define GUIDesignMFXCheckableButtonSupermode
checkable button with icon placed in navigation toolbar for supermodes
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
@ GLO_EDGERELDATA
edge relation data
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_WALKINGAREA
a walkingArea
@ GLO_JPS_WALKABLEAREA
walkable area
@ GLO_ROUTE_EMBEDDED
a route
@ GLO_TESTELEMENT
test element (used in netedit)
@ GLO_TRANSHIP
a container tranship
@ GLO_STOPPING_PLACE_LAST
reserved GLO type for packing all StoppingPlace elements
@ GLO_STOP_PLAN
a stop plan stop
@ GLO_ROUTEFLOW
a routeFlow
@ GLO_WIRE
reserved GLO type for packing all wire elements
@ GLO_TAZ
Traffic Assignment Zones (TAZs)
@ GLO_CONTAINER
a container
@ GLO_JPS_OBSTACLE
obstacles
@ GLO_CONNECTION
a connection
@ GLO_ADDITIONALELEMENT
reserved GLO type for packing all additionals elements
@ GLO_PERSONTRIP
a person trip
@ GLO_STOPPING_PLACE
reserved GLO type for packing all StoppingPlace elements
@ GLO_TRANSPORT
a container transport
@ GLO_POI
poi (over view, geo and lane)
@ GLO_RECTANGLESELECTION
rectangle selection shape (used in netedit)
@ GLO_CONTAINERFLOW
a person flow
@ GLO_PERSONFLOW
a person flow
@ GLO_TRACTIONSUBSTATION
a segment of an overhead line
@ GLO_LOCKICON
Lock icon (used in netedit)
GUIViewObjectsHandler gViewObjectsHandler
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ SAVE_ADDITIONALELEMENTS
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ NETWORKMODE_CHECKBOX_APPLYTOALLPHASES
@ DATAMODE_CHECKBOX_TAZRELONLYTO
@ NETWORKMODE_CHECKBOX_AUTOSELECTJUNCTIONS
@ DATAMODE_CHECKBOX_TAZRELDRAWING
@ NETWORKMODE_CHECKBOX_SHOWCONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWPERSONPLANS
@ DEMANDMODE_CHECKBOX_HIDESHAPES
@ DATAMODE_CHECKBOX_TAZDRAWFILL
@ NETWORKMODE_CHECKBOX_ELEVATION
@ COMMONMODE_CHECKBOX_SPREADVEHICLE
@ DEMANDMODE_CHECKBOX_LOCKCONTAINER
@ NETWORKMODE_CHECKBOX_SHOWSUBADDITIONALS
@ NETWORKMODE_CHECKBOX_SHOWTAZELEMENTS
@ NETWORKMODE_CHECKBOX_CHAIN
@ DEMANDMODE_CHECKBOX_SHOWOVERLAPPEDROUTES
@ NETWORKMODE_CHECKBOX_ASKFORMERGE
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
#define WRITE_ERRORF(...)
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_NOTHING
invalid tag, must be the last one
@ SUMO_TAG_LANE
begin/end of the description of a single lane
@ SUMO_TAG_TAZREL
a relation between two TAZs
@ SUMO_TAG_EDGE
begin/end of the description of an edge
@ GNE_ATTR_SELECTED
element is selected
const double INVALID_DOUBLE
invalid double
#define UNUSED_PARAMETER(x)
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
static void pushMatrix()
push matrix
An Element which don't belong to GNENet but has influence in the simulation.
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
bool isMarkedForDrawingFront() const
check if this AC is marked for drawing front
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unmarkForDrawingFront()
unmark for drawing front
GNENet * getNet() const
get pointer to net
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
An Element which don't belong to GNENet but has influence in the simulation.
A road/street connecting two junctions (netedit-version)
bool isConvexAngle() const
check if edge makes a convex angle [0 - 180) degrees
NBEdge * getNBEdge() const
returns the internal NBEdge
An Element which don't belong to GNENet but has influence in the simulation.
An Element which don't belong to GNENet but has influence in the simulation.
const std::vector< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
const std::vector< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
static void commitMove(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList)
commit move element for the given offset
static void moveElement(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset)
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net
void setShapeEdited(const bool value)
set shape edited
An Element which don't belong to GNENet but has influence in the simulation.
bool isNetworkElement() const
element sets
bool isDataElement() const
return true if tag correspond to a data element
bool isDemandElement() const
return true if tag correspond to a demand element
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool isInspectingElements() const
check if we're inspecting at least one element
void inspectAC(GNEAttributeCarrier *AC)
void inspectACs(const std::vector< GNEAttributeCarrier * > &ACs)
inspect multiple ACs
bool isACInspected(GNEAttributeCarrier *AC) const
const std::unordered_set< GNEAttributeCarrier * > & getACs() const
get hash table with all inspected ACs
GNEAttributeCarrier * getFirstAC() const
void uninspectAC(GNEAttributeCarrier *AC)
uninspect AC
bool isInspectingSingleElement() const
check if we're inspecting exactly one element
bool isInspectingMultipleElements() const
check if we're inspecting more than one elements
void clearInspectedElements()
clear inspected AC
InspectedElements()
constructor
void setDataSet()
set dataSet
void setParameter()
set parameter
std::string getParameter() const
get parameter
void hideIntervalBar()
hide all options menu checks
void setGenericDataType()
set generic data type
double getBegin() const
get begin
void showIntervalBar()
show interval option bar
void disableIntervalBar()
disable interval bar
void updateIntervalBar()
update interval bar
void buildIntervalBarElements()
build interval bar elements
GNEDataSet * getDataSet() const
get dataSet
IntervalBar(GNEViewNet *viewNet)
default constructor
void enableIntervalBar()
enable interval bar
void setInterval()
update limit by interval
double getEnd() const
get end
SumoXMLTag getGenericDataType() const
get generic data type
~OperationLocked()
destructor
Supermode getSupermode() const
get supermode
OperationLocked()
constructor
void updateLockMenuBar()
update lock inspect menuBar
bool isObjectLocked(GUIGlObjectType objectType, const bool selected) const
check if given GLObject is locked for inspect, select, delete and move
LockManager(GNEViewNet *viewNet)
constructor
std::map< GUIGlObjectType, OperationLocked > myLockedElements
map with locked elements
void updateFlags()
update flags
GNEViewNet * myViewNet
pointer to viewNet
void unmarkAC(GNEAttributeCarrier *AC)
unmark AC for drawing front
MarkFrontElements()
constructor
void markAC(GNEAttributeCarrier *AC)
mark AC as drawing front
void unmarkAll()
unmark all ACs
const std::unordered_set< GNEAttributeCarrier * > & getACs() const
get hash table with all fronted ACs
std::vector< GNEConnection * > connections
vector with the connections
std::vector< GNEGenericData * > genericDatas
vector with the generic datas
std::vector< GNEPOI * > POIs
vector with the POIs
std::vector< GNEInternalLane * > internalLanes
vector with the internal lanes
std::vector< GUIGlObject * > GUIGlObjects
vector with the GUIGlObjects
std::vector< GNELane * > lanes
vector with the lanes
std::vector< GNETAZRelData * > TAZRelDatas
vector with the TAZ relation datas
void reserve(int size)
reseve memory for all elements
std::vector< GNECrossing * > crossings
vector with the crossings
std::vector< GNEPoly * > polys
vector with the polys
std::vector< GNETAZ * > TAZs
vector with the TAZ elements
std::vector< GNEAdditional * > additionals
vector with the additional elements
std::vector< GNEAttributeCarrier * > attributeCarriers
vector with the attribute carriers
void clearElements()
clear elements
std::vector< GNENetworkElement * > networkElements
vector with the network elements
std::vector< GNEEdgeData * > edgeDatas
vector with the edge datas
std::vector< GNEEdgeRelData * > edgeRelDatas
vector with the edge relation datas
std::vector< GNEEdge * > edges
vector with the edges
void filterElements(const std::vector< const GUIGlObject * > &objects)
filter elements
std::vector< GNEJunction * > junctions
vector with the junctions
std::vector< GNEWalkingArea * > walkingAreas
vector with the walkingAreas
std::vector< GNEDemandElement * > demandElements
vector with the demand elements
ViewObjectsContainer()
constructor
GNEEdgeRelData * getEdgeRelDataElementFront() const
get edge rel data element or a pointer to nullptr
void updateObjects()
update objects (using gViewObjectsHandler)
void filterConnections()
filter (remove) connections
void filterAllExcept(GUIGlObjectType exception)
filter all elements except the given GLO type
GNEEdgeData * getEdgeDataElementFront() const
get edge data element or a pointer to nullptr
void updateShapeElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update shape elements
GNEConnection * getConnectionFront() const
get front connection or a pointer to nullptr
const std::vector< GNEAttributeCarrier * > & getAttributeCarriers() const
get vector with ACs
void filterEdges()
filter (remove) edges
GNEPoly * getPolyFront() const
get front Poly or a pointer to nullptr
void updateDemandElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update demand elements
void filterLockedElements(const std::vector< GUIGlObjectType > ignoreFilter={})
filter locked elements (except the ignoreFilter)
void filterCrossings()
filter (remove) crossings
GNEPOI * getPOIFront() const
get front POI or a pointer to nullptr
GNEInternalLane * getInternalLaneFront() const
get front internal lane or a pointer to nullptr
void filterNetworkElements()
filter (remove) network elements
void processGUIGlObjects(const GUIViewObjectsHandler::GLObjectsSortedContainer &objectsContainer)
process GL objects
const std::vector< GNETAZ * > & getTAZs() const
get vector with TAZs
GNEWalkingArea * getWalkingAreaFront() const
get front walkingArea or a pointer to nullptr
void filterBySuperMode()
filter by supermode
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier or a pointer to nullptr
void updateAdditionalElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update additional elements
void updateGenericDataElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update generic data elements
void filterDemandElements(const bool includeRoutes)
filter (remove) demand elements
void updateTAZElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update TAZ elements
const std::vector< GNEDemandElement * > & getDemandElements() const
get vector with Demand Elements
void filterWalkingAreas()
filter (remove) walkingAreas
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
void filterAdditionals(const bool includeStoppigPlaces, const bool includeTAZs)
filter (remove) additionals
GNELane * getLaneFront() const
get front lane or a pointer to nullptr
void updateNetworkElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update network elements
GNEGenericData * getGenericDataElementFront() const
get generic data element or a pointer to nullptr
GNEAdditional * getAdditionalFront() const
get front additional element or a pointer to nullptr
GNELane * getLaneFrontNonLocked() const
get front lane or a pointer to nullptr checking if is locked
const GUIGlObject * getGUIGlObjectFront() const
get front GUIGLObject or a pointer to nullptr
GNENetworkElement * getNetworkElementFront() const
get front network element or a pointer to nullptr
const std::vector< GNEEdge * > & getEdges() const
get vector with edges
GNECrossing * getCrossingFront() const
get front crossing or a pointer to nullptr
ViewObjectsSelector()
default constructor
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
void filterLanes()
filter (remove) lanes
void filterJunctions()
filter (remove) junctions
GNETAZRelData * getTAZRelDataElementFront() const
get TAZ rel data element or a pointer to nullptr
const std::vector< GUIGlObject * > & getGLObjects() const
get vector with GL objects
void filterShapes()
filter (remove) polys and POIs
const std::vector< GNEJunction * > & getJunctions() const
get vector with junctions
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
void filterDataElements()
filter (remove) datga elements
const std::vector< GNELane * > & getLanes() const
get lanes
const std::vector< GNEAdditional * > & getAdditionals() const
get vector with additionals
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
virtual bool isGLObjectLocked() const
check if element is locked (Currently used only in netedit)
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
int getNumberOfSelectedObjects() const
get number of selected objects
std::map< double, std::vector< ObjectContainer > > GLObjectsSortedContainer
typedef for pack elements sorted by layer
const GLObjectsSortedContainer & getSelectedObjects() const
get all elements under cursor sorted by layer
const PositionVector & getGeometry() const
Returns the geometry of the edge.
bool set(const std::string &name, const std::string &value, const bool append=false)
Sets the given value for the named option.
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.
C++ TraCI client API implementation.
A point in 2D or 3D with translation and scaling methods.
double x() const
Returns the x-position.
double y() const
Returns the y-position.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
static const RGBColor BLUE
static const RGBColor YELLOW
static const RGBColor MAGENTA
struct for processing menu commands
MFXMenuCheckIcon * menuCheckLockConnections
menu check to lock connections
MFXMenuCheckIcon * menuCheckLockPersonTrip
menu check to lock personTrips
MFXMenuCheckIcon * menuCheckLockPersons
menu check to lock persons
MFXMenuCheckIcon * menuCheckLockVehicles
menu check to lock vehicles
MFXMenuCheckIcon * menuCheckLockCrossings
menu check to lock crossings
MFXMenuCheckIcon * menuCheckLockRoutes
MFXMenuCheckIcon * menuCheckLockTAZs
menu check to lock TAZs
MFXMenuCheckIcon * menuCheckLockWalk
menu check to lock walks
MFXMenuCheckIcon * menuCheckLockEdgeTAZRels
menu check to lock edgeTAZRels
MFXMenuCheckIcon * menuCheckLockJunction
MFXMenuCheckIcon * menuCheckLockWires
menu check to lock Wires
MFXMenuCheckIcon * menuCheckLockPOIs
menu check to lock POIs
MFXMenuCheckIcon * menuCheckLockPolygons
menu check to lock polygons
MFXMenuCheckIcon * menuCheckLockWalkingAreas
menu check to lock walkingAreas
MFXMenuCheckIcon * menuCheckLockEdgeDatas
MFXMenuCheckIcon * menuCheckLockEdges
menu check to lock edges
MFXMenuCheckIcon * menuCheckLockRides
menu check to lock rides
MFXMenuCheckIcon * menuCheckLockContainers
menu check to lock containers
MFXMenuCheckIcon * menuCheckLockJpsWalkableAreas
menu check to lock jps walkableareas
MFXMenuCheckIcon * menuCheckLockEdgeRelDatas
menu check to lock edgeRelDatas
MFXMenuCheckIcon * menuCheckLockStops
menu check to lock stops
MFXMenuCheckIcon * menuCheckLockLanes
menu check to lock lanes
MFXMenuCheckIcon * menuCheckLockAdditionals
menu check to lock additionals
MFXMenuCheckIcon * menuCheckLockJpsObstacles
menu check to lock jps obstacles
MFXMenuCheckIcon * menuCheckLockTranships
menu check to lock tranships
MFXMenuCheckIcon * menuCheckLockTransports
menu check to lock transports
DataViewOptions(GNEViewNet *viewNet)
default constructor
bool TAZRelOnlyTo() const
check if toggle TAZRel only to checkbox is enabled
void hideDataViewOptionsMenuChecks()
hide all options menu checks
bool showAdditionals() const
check if additionals has to be drawn
bool showDemandElements() const
check if show demand elements checkbox is enabled
bool TAZRelOnlyFrom() const
check if toggle TAZRel only from checkbox is enabled
bool TAZDrawFill() const
check if toggle TAZ draw fill checkbox is enabled
void buildDataViewOptionsMenuChecks()
build menu checks
void getVisibleDataMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible demand menu commands
bool showShapes() const
check if shapes has to be drawn
bool TAZRelDrawing() const
check if toggle TAZRel drawing checkbox is enabled
void lockPerson(const GNEDemandElement *person)
lock person
bool showAllPersonPlans() const
check all person plans has to be show
void lockContainer(const GNEDemandElement *container)
lock container
void buildDemandViewOptionsMenuChecks()
build menu checks
const GNEDemandElement * getLockedPerson() const
get locked person
const GNEDemandElement * getLockedContainer() const
get locked container
bool showShapes() const
check if shapes has to be drawn
void hideDemandViewOptionsMenuChecks()
hide all options menu checks
bool showAllContainerPlans() const
check all container plans has to be show
void unlockContainer()
unlock container
void unlockPerson()
unlock person
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool showNonInspectedDemandElements(const GNEDemandElement *demandElement) const
check if non inspected element has to be hidden
DemandViewOptions(GNEViewNet *viewNet)
default constructor
bool showOverlappedRoutes() const
show overlapped routes
void getVisibleDemandMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible demand menu commands
bool showAllTrips() const
check if trips has to be drawn
void buildSuperModeButtons()
build checkable buttons
bool isDefaultView() const
check if default view is enabled
NetworkEditMode networkEditMode
the current Network edit mode
bool isCurrentSupermodeDemand() const
@check if current supermode is Demand
void setDemandEditMode(DemandEditMode demandMode, const bool force=false)
set Demand edit mode
bool isCurrentSupermodeData() const
@check if current supermode is Data
void setView(FXSelector sel)
set view
bool isCurrentSupermodeNetwork() const
@check if current supermode is Network
bool isJuPedSimView() const
check if default view is enabled
void setSupermode(Supermode supermode, const bool force)
set supermode
void setNetworkEditMode(NetworkEditMode networkMode, const bool force=false)
set Network edit mode
EditModes(GNEViewNet *viewNet)
constructor
void setDataEditMode(DataEditMode dataMode, const bool force=false)
set Data edit mode
GNENetworkElement * getEditedNetworkElement() const
pointer to edited network element
void stopEditCustomShape()
edit edit shape
EditNetworkElementShapes(GNEViewNet *viewNet)
default constructor
void startEditCustomShape(GNENetworkElement *element)
start edit custom shape
void commitShapeEdited()
save edited shape
static bool checkDrawing(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const double exaggeration)
check if icon can be drawn
static void drawLockIcon(const GUIVisualizationSettings::Detail d, const GNEAttributeCarrier *AC, GUIGlObjectType type, const Position position, const double exaggeration, const double size=0.5, const double offsetx=0, const double offsety=0)
draw lock icon
void moveSelection(const bool mouseLeftButtonPressed)
move selection
void calculateEdgeSelection(const GNEEdge *clickedEdge)
calculate edge selection
const GNEMoveOffset calculateMoveOffset() const
calculate move offset
bool isCurrentlyMovingMultipleElements() const
check if there are moving elements
void finishMoveSelection()
finish moving selection
double getEdgeOffset() const
edge offset
bool isMovingSelection() const
check if currently there is element being moved
void beginMoveSelection()
begin move selection
void resetMovingSelectedEdge()
reset flag for moving edge
void calculateJunctionSelection()
calculate junction selection
MoveMultipleElementModul(GNEViewNet *viewNet)
constructor
bool isMovingSelectedEdge() const
flag for moving edge
const GNEMoveOffset calculateMoveOffset() const
calculate offset
MoveSingleElementModul(GNEViewNet *viewNet)
constructor
bool beginMoveSingleElementDemandMode()
begin move single element in Demand mode
void moveSingleElement(const bool mouseLeftButtonPressed)
move single element in Network AND Demand mode
GNEMoveElement * getMovedElement() const
get moved element
bool isCurrentlyMovingSingleElement() const
check if there are moving elements
bool beginMoveSingleElementNetworkMode()
begin move single element in Network mode
bool beginMoveNetworkElementShape()
begin move network elementshape
void finishMoveSingleElement()
finish moving single elements in Network AND Demand mode
bool showConnections() const
check if select show connections checkbox is enabled
bool drawSpreadVehicles() const
check if vehicles must be drawn spread
bool editingElevation() const
check if we're editing elevation
void getVisibleNetworkMenuCommands(std::vector< MFXCheckableButton * > &commands) const
get visible network menu commands
bool showDemandElements() const
check if show demand elements checkbox is enabled
bool showSubAdditionals() const
check if show sub-additionals
bool selectEdges() const
check if select edges checkbox is enabled
bool showTAZElements() const
check if show TAZ Elements
NetworkViewOptions(GNEViewNet *viewNet)
default constructor
void hideNetworkViewOptionsMenuChecks()
hide all options menu checks
void buildNetworkViewOptionsMenuChecks()
build menu checks
~SaveElements()
destructor
SaveElements(GNEViewNet *viewNet)
default constructor
void setSaveIndividualFiles(bool value)
enable or disable save individual files
void buildSaveElementsButtons()
build save buttons
void finishRectangleSelection()
finish rectangle selection
void drawRectangleSelection(const RGBColor &color) const
draw rectangle selection
void beginRectangleSelection()
begin rectangle selection
void moveRectangleSelection()
move rectangle selection
void processBoundarySelection(const Boundary &boundary)
Process boundary Selection.
void processRectangleSelection()
process rectangle Selection
std::vector< GNEEdge * > processEdgeRectangleSelection()
process rectangle Selection (only limited to Edges)
SelectingArea(GNEViewNet *viewNet)
default constructor
void drawTestingElements(GUIMainWindow *mainWindow)
draw testing element
TestingMode(GNEViewNet *viewNet)
default constructor
void initTestingMode()
init testing mode
void buildVehicleOptionsMenuChecks()
build menu checks
VehicleOptions(GNEViewNet *viewNet)
constructor
void hideVehicleOptionsMenuChecks()
hide all options menu checks
VehicleTypeOptions(GNEViewNet *viewNet)
constructor
void buildVehicleTypeOptionsMenuChecks()
build menu checks
void hideVehicleTypeOptionsMenuChecks()
hide all options menu checks
static std::vector< RGBColor > myRainbowScaledColors
scale (rainbow) colors
static const RGBColor & getRainbowScaledColor(const double min, const double max, const double value)
get rainbow scaled color
static std::vector< GUIGlObject * > filterElementsByLayer(const std::vector< GUIGlObject * > &GLObjects)
filter elements based on the layer
static const std::vector< RGBColor > & getRainbowScaledColors()
get scaled rainbow colors