98 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
105 return myLockedElements.at(
GLO_WIRE).lock;
117 return myLockedElements.at(
GLO_STOP).lock;
119 return myLockedElements.at(objectType).lock;
202 mySupermode(supermode) {
226 myViewObjects.clearElements();
235 std::vector<const GUIGlObject*> edges;
236 for (
const auto& edge : myViewObjects.edges) {
237 edges.push_back(edge);
239 myViewObjects.filterElements(edges);
246 std::vector<const GUIGlObject*> lanes;
247 for (
const auto& lane : myViewObjects.lanes) {
248 lanes.push_back(lane);
250 myViewObjects.filterElements(lanes);
257 std::vector<const GUIGlObject*> shapes;
258 for (
const auto& poly : myViewObjects.polys) {
259 shapes.push_back(poly);
261 for (
const auto&
POI : myViewObjects.POIs) {
262 shapes.push_back(
POI);
264 myViewObjects.filterElements(shapes);
271 std::vector<const GUIGlObject*> additionals;
272 for (
const auto& additional : myViewObjects.additionals) {
275 }
else if (!includeTAZs && (additional->getType() ==
GLO_TAZ)) {
278 additionals.push_back(additional);
281 myViewObjects.filterElements(additionals);
288 std::vector<const GUIGlObject*> demandElements;
289 for (
const auto& demandElement : myViewObjects.demandElements) {
290 if (!includeRoutes && (demandElement->getType() ==
GLO_ROUTE)) {
293 demandElements.push_back(demandElement);
296 myViewObjects.filterElements(demandElements);
302 std::vector<const GUIGlObject*> GUIGlObjects;
304 for (
const auto&
GUIGlObject : myViewObjects.GUIGlObjects) {
310 for (
const auto& ignoredType : ignoreFilter) {
311 auto it = GUIGlObjects.begin();
312 while (it != GUIGlObjects.end()) {
313 if ((*it)->getType() == ignoredType) {
314 it = GUIGlObjects.erase(it);
321 myViewObjects.filterElements(GUIGlObjects);
327 if (myViewObjects.GUIGlObjects.size() > 0) {
328 return myViewObjects.GUIGlObjects.front();
337 if (myViewObjects.attributeCarriers.size() > 0) {
338 return myViewObjects.attributeCarriers.front();
347 if (myViewObjects.networkElements.size() > 0) {
348 return myViewObjects.networkElements.front();
357 if (myViewObjects.additionals.size() > 0) {
358 return myViewObjects.additionals.front();
367 if (myViewObjects.demandElements.size() > 0) {
368 return myViewObjects.demandElements.front();
377 if (myViewObjects.genericDatas.size() > 0) {
378 return myViewObjects.genericDatas.front();
387 if (myViewObjects.junctions.size() > 0) {
388 return myViewObjects.junctions.front();
397 if (myViewObjects.edges.size() > 0) {
398 return myViewObjects.edges.front();
407 if (myViewObjects.lanes.size() > 0) {
408 return myViewObjects.lanes.front();
417 if (myViewObjects.lanes.size() > 0) {
418 for (
auto& lane : myViewObjects.lanes) {
419 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
420 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
432 const std::vector<GNELane*>&
434 return myViewObjects.lanes;
440 if (myViewObjects.crossings.size() > 0) {
441 return myViewObjects.crossings.front();
450 if (myViewObjects.walkingAreas.size() > 0) {
451 return myViewObjects.walkingAreas.front();
460 if (myViewObjects.connections.size() > 0) {
461 return myViewObjects.connections.front();
470 if (myViewObjects.internalLanes.size() > 0) {
471 return myViewObjects.internalLanes.front();
480 if (myViewObjects.POIs.size() > 0) {
481 return myViewObjects.POIs.front();
490 if (myViewObjects.polys.size() > 0) {
491 return myViewObjects.polys.front();
500 if (myViewObjects.TAZs.size() > 0) {
501 return myViewObjects.TAZs.front();
510 if (myViewObjects.edgeDatas.size() > 0) {
511 return myViewObjects.edgeDatas.front();
520 if (myViewObjects.edgeRelDatas.size() > 0) {
521 return myViewObjects.edgeRelDatas.front();
530 if (myViewObjects.TAZRelDatas.size() > 0) {
531 return myViewObjects.TAZRelDatas.front();
538 const std::vector<GUIGlObject*>&
540 return myViewObjects.GUIGlObjects;
544 const std::vector<GNEAttributeCarrier*>&
546 return myViewObjects.attributeCarriers;
550 const std::vector<GNEJunction*>&
552 return myViewObjects.junctions;
556 const std::vector<GNEEdge*>&
558 return myViewObjects.edges;
561 const std::vector<GNETAZ*>&
563 return myViewObjects.TAZs;
566 const std::vector<GNEAdditional*>&
568 return myViewObjects.additionals;
571 const std::vector<GNEDemandElement*>&
573 return myViewObjects.demandElements;
583 GUIGlObjects.clear();
584 attributeCarriers.clear();
585 networkElements.clear();
587 demandElements.clear();
592 walkingAreas.clear();
594 internalLanes.clear();
598 genericDatas.clear();
600 edgeRelDatas.clear();
607 for (
const auto&
object : objects) {
609 auto itGlObjects = GUIGlObjects.begin();
610 while (itGlObjects != GUIGlObjects.end()) {
611 if (*itGlObjects ==
object) {
612 itGlObjects = GUIGlObjects.erase(itGlObjects);
618 auto itACs = attributeCarriers.begin();
619 while (itACs != attributeCarriers.end()) {
620 if ((*itACs)->getGUIGlObject() ==
object) {
621 itACs = attributeCarriers.erase(itACs);
627 auto itNetworkElements = networkElements.begin();
628 while (itNetworkElements != networkElements.end()) {
629 if ((*itNetworkElements)->getGUIGlObject() ==
object) {
630 itNetworkElements = networkElements.erase(itNetworkElements);
636 auto itAdditionals = additionals.begin();
637 while (itAdditionals != additionals.end()) {
638 if ((*itAdditionals)->getGUIGlObject() ==
object) {
639 itAdditionals = additionals.erase(itAdditionals);
645 auto itDemandElements = demandElements.begin();
646 while (itDemandElements != demandElements.end()) {
647 if ((*itDemandElements)->getGUIGlObject() ==
object) {
648 itDemandElements = demandElements.erase(itDemandElements);
654 auto itGenericDatas = genericDatas.begin();
655 while (itGenericDatas != genericDatas.end()) {
656 if ((*itGenericDatas)->getGUIGlObject() ==
object) {
657 itGenericDatas = genericDatas.erase(itGenericDatas);
663 auto itJunctions = junctions.begin();
664 while (itJunctions != junctions.end()) {
665 if ((*itJunctions)->getGUIGlObject() ==
object) {
666 itJunctions = junctions.erase(itJunctions);
672 auto itEdges = edges.begin();
673 while (itEdges != edges.end()) {
674 if ((*itEdges)->getGUIGlObject() ==
object) {
675 itEdges = edges.erase(itEdges);
681 auto itLanes = lanes.begin();
682 while (itLanes != lanes.end()) {
683 if ((*itLanes)->getGUIGlObject() ==
object) {
684 itLanes = lanes.erase(itLanes);
690 auto itCrossings = crossings.begin();
691 while (itCrossings != crossings.end()) {
692 if ((*itCrossings)->getGUIGlObject() ==
object) {
693 itCrossings = crossings.erase(itCrossings);
699 auto itWalkingAreas = walkingAreas.begin();
700 while (itWalkingAreas != walkingAreas.end()) {
701 if ((*itWalkingAreas)->getGUIGlObject() ==
object) {
702 itWalkingAreas = walkingAreas.erase(itWalkingAreas);
708 auto itConnections = connections.begin();
709 while (itConnections != connections.end()) {
710 if ((*itConnections)->getGUIGlObject() ==
object) {
711 itConnections = connections.erase(itConnections);
717 auto itInternalLanes = internalLanes.begin();
718 while (itInternalLanes != internalLanes.end()) {
719 if ((*itInternalLanes)->getGUIGlObject() ==
object) {
720 itInternalLanes = internalLanes.erase(itInternalLanes);
726 auto itTAZs = TAZs.begin();
727 while (itTAZs != TAZs.end()) {
728 if ((*itTAZs)->getGUIGlObject() ==
object) {
729 itTAZs = TAZs.erase(itTAZs);
735 auto itPOIs = POIs.begin();
736 while (itPOIs != POIs.end()) {
737 if ((*itPOIs)->getGUIGlObject() ==
object) {
738 itPOIs = POIs.erase(itPOIs);
744 auto itPolys = polys.begin();
745 while (itPolys != polys.end()) {
746 if ((*itPolys)->getGUIGlObject() ==
object) {
747 itPolys = polys.erase(itPolys);
753 auto itEdgeDatas = edgeDatas.begin();
754 while (itEdgeDatas != edgeDatas.end()) {
755 if ((*itEdgeDatas)->getGUIGlObject() ==
object) {
756 itEdgeDatas = edgeDatas.erase(itEdgeDatas);
762 auto itEdgeRelDatas = edgeRelDatas.begin();
763 while (itEdgeRelDatas != edgeRelDatas.end()) {
764 if ((*itEdgeRelDatas)->getGUIGlObject() ==
object) {
765 itEdgeRelDatas = edgeRelDatas.erase(itEdgeRelDatas);
771 auto itTAZRelDatas = TAZRelDatas.begin();
772 while (itTAZRelDatas != TAZRelDatas.end()) {
773 if ((*itTAZRelDatas)->getGUIGlObject() ==
object) {
774 itTAZRelDatas = TAZRelDatas.erase(itTAZRelDatas);
786 const auto frontGLObject = myViewNet->getFrontGLObject();
791 auto junction = myViewNet->getNet()->getAttributeCarriers()->retrieveJunction(glObject->
getMicrosimID());
793 if (glObject == frontGLObject) {
810 auto edge = myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(glObject->
getMicrosimID());
812 if (glObject == frontGLObject) {
814 container.
edges.insert(container.
edges.begin(), edge);
820 container.
edges.push_back(edge);
829 auto lane = myViewNet->getNet()->getAttributeCarriers()->retrieveLane(glObject);
831 if (glObject == frontGLObject) {
833 container.
lanes.insert(container.
lanes.begin(), lane);
839 container.
lanes.push_back(lane);
848 auto crossing = myViewNet->getNet()->getAttributeCarriers()->retrieveCrossing(glObject);
850 if (glObject == frontGLObject) {
867 auto walkingArea = myViewNet->getNet()->getAttributeCarriers()->retrieveWalkingArea(glObject);
869 if (glObject == frontGLObject) {
886 auto connection = myViewNet->getNet()->getAttributeCarriers()->retrieveConnection(glObject);
888 if (glObject == frontGLObject) {
905 auto internalLane = myViewNet->getNet()->getAttributeCarriers()->retrieveInternalLane(glObject);
907 if (glObject == frontGLObject) {
929 auto additionalElement = myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject,
false);
930 if (additionalElement) {
932 if (additionalElement == myViewNet->getFrontAttributeCarrier()) {
939 container.
additionals.push_back(additionalElement);
952 auto POI =
dynamic_cast<GNEPOI*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
954 if (glObject == myViewNet->getFrontGLObject()) {
956 container.
POIs.insert(container.
POIs.begin(),
POI);
963 auto poly =
dynamic_cast<GNEPoly*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
965 if (glObject == myViewNet->getFrontGLObject()) {
967 container.
polys.insert(container.
polys.begin(), poly);
970 container.
polys.push_back(poly);
981 auto TAZ =
dynamic_cast<GNETAZ*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
983 if (glObject == myViewNet->getFrontGLObject()) {
985 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
1000 if (demandElement == myViewNet->getFrontAttributeCarrier()) {
1018 switch (glObject->
getType()) {
1021 auto edgeData =
dynamic_cast<GNEEdgeData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1023 if (glObject == myViewNet->getFrontGLObject()) {
1031 container.
edgeDatas.push_back(edgeData);
1040 auto edgeRelData =
dynamic_cast<GNEEdgeRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1042 if (glObject == myViewNet->getFrontGLObject()) {
1059 auto TAZRelData =
dynamic_cast<GNETAZRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1061 if (glObject == myViewNet->getFrontGLObject()) {
1085 for (
const auto& glObjectLayer : objectsContainer) {
1086 for (
const auto& glObject : glObjectLayer.second) {
1088 updateNetworkElements(myViewObjects, glObject.object);
1089 updateAdditionalElements(myViewObjects, glObject.object);
1090 updateShapeElements(myViewObjects, glObject.object);
1091 updateTAZElements(myViewObjects, glObject.object);
1092 updateDemandElements(myViewObjects, glObject.object);
1093 updateGenericDataElements(myViewObjects, glObject.object);
1100 myViewNet(nullptr) {
1108 myEventInfo(nullptr) {
1114 myEventInfo = (FXEvent*) eventData;
1121 return (myEventInfo->state & SHIFTMASK) != 0;
1131 return (myEventInfo->state & CONTROLMASK) != 0;
1141 return (myEventInfo->state & ALTMASK) != 0;
1151 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1161 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1172 myViewNet(viewNet) {
1179 myRelativeClickedPosition = myViewNet->getPositionInformation();
1181 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1183 if (myViewNet->myViewObjectsSelector.getJunctionFront() && (myViewNet->myViewObjectsSelector.getJunctionFront() == editedElement)) {
1185 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1187 if (moveOperation) {
1188 myMoveOperation = moveOperation;
1193 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (myViewNet->myViewObjectsSelector.getLaneFront() == editedElement)) {
1195 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1197 if (moveOperation) {
1198 myMoveOperation = moveOperation;
1203 }
else if (myViewNet->myViewObjectsSelector.getCrossingFront() && (myViewNet->myViewObjectsSelector.getCrossingFront() == editedElement)) {
1205 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getCrossingFront()->getMoveOperation();
1207 if (moveOperation) {
1208 myMoveOperation = moveOperation;
1213 }
else if (myViewNet->myViewObjectsSelector.getConnectionFront() && (myViewNet->myViewObjectsSelector.getConnectionFront() == editedElement)) {
1215 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getConnectionFront()->getMoveOperation();
1217 if (moveOperation) {
1218 myMoveOperation = moveOperation;
1223 }
else if (myViewNet->myViewObjectsSelector.getWalkingAreaFront() && (myViewNet->myViewObjectsSelector.getWalkingAreaFront() == editedElement)) {
1225 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getWalkingAreaFront()->getMoveOperation();
1227 if (moveOperation) {
1228 myMoveOperation = moveOperation;
1243 myRelativeClickedPosition = myViewNet->getPositionInformation();
1245 const GNEAttributeCarrier* frontAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1247 if (myViewNet->myViewObjectsSelector.getPolyFront() && (frontAC == myViewNet->myViewObjectsSelector.getPolyFront())) {
1249 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPolyFront()->getMoveOperation();
1251 if (moveOperation) {
1252 myMoveOperation = moveOperation;
1257 }
else if (myViewNet->myViewObjectsSelector.getPOIFront() && (frontAC == myViewNet->myViewObjectsSelector.getPOIFront())) {
1259 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPOIFront()->getMoveOperation();
1261 if (moveOperation) {
1262 myMoveOperation = moveOperation;
1267 }
else if (myViewNet->myViewObjectsSelector.getAdditionalFront() && (frontAC == myViewNet->myViewObjectsSelector.getAdditionalFront())) {
1269 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getAdditionalFront()->getMoveOperation();
1271 if (moveOperation) {
1272 myMoveOperation = moveOperation;
1277 }
else if (myViewNet->myViewObjectsSelector.getJunctionFront() && (frontAC == myViewNet->myViewObjectsSelector.getJunctionFront())) {
1279 if (myViewNet->myViewObjectsSelector.getEdgeFront() && (myViewNet->myViewObjectsSelector.getEdgeFront()->clickedOverGeometryPoint(myRelativeClickedPosition))) {
1281 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1283 if (moveOperation) {
1284 myMoveOperation = moveOperation;
1291 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1293 if (moveOperation) {
1294 myMoveOperation = moveOperation;
1300 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront() && (frontAC == myViewNet->myViewObjectsSelector.getEdgeFront())) {
1302 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1304 myViewNet->myViewObjectsSelector.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1309 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1311 if (moveOperation) {
1312 myMoveOperation = moveOperation;
1318 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (frontAC == myViewNet->myViewObjectsSelector.getLaneFront())) {
1320 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1322 if (moveOperation) {
1323 myMoveOperation = moveOperation;
1338 myRelativeClickedPosition = myViewNet->getPositionInformation();
1340 const GNEAttributeCarrier* frontAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1342 if (myViewNet->myViewObjectsSelector.getDemandElementFront() && (frontAC == myViewNet->myViewObjectsSelector.getDemandElementFront())) {
1344 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getDemandElementFront()->getMoveOperation();
1346 if (moveOperation) {
1347 myMoveOperation = moveOperation;
1362 if (myMoveOperation) {
1366 if (mouseLeftButtonPressed) {
1373 delete myMoveOperation;
1374 myMoveOperation =
nullptr;
1382 if (myMoveOperation) {
1387 delete myMoveOperation;
1388 myMoveOperation =
nullptr;
1395 return myMoveOperation !=
nullptr;
1401 if (myMoveOperation) {
1413 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElement.myRelativeClickedPosition);
1415 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1430 myMovingSelectedEdge(false),
1438 myClickedPosition = myViewNet->getPositionInformation();
1440 if (myViewNet->myViewObjectsSelector.getJunctionFront()) {
1441 calculateJunctionSelection();
1442 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront()) {
1443 calculateEdgeSelection(myViewNet->myViewObjectsSelector.getEdgeFront());
1453 if (mouseLeftButtonPressed) {
1455 for (
const auto& moveOperation : myMoveOperations) {
1459 }
else if (myMoveOperations.size() > 0) {
1463 for (
const auto& moveOperation : myMoveOperations) {
1467 delete moveOperation;
1470 myViewNet->getUndoList()->end();
1472 myMoveOperations.clear();
1484 for (
const auto& moveOperation : myMoveOperations) {
1487 delete moveOperation;
1490 myViewNet->getUndoList()->end();
1492 myMoveOperations.clear();
1498 return (myMoveOperations.size() > 0);
1504 return myMovingSelectedEdge;
1510 myMovingSelectedEdge =
false;
1516 return myEdgeOffset;
1522 return myMoveOperations.size() > 0;
1530 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1532 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1547 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1549 for (
const auto& junction : selectedJunctions) {
1550 moveOperation = junction->getMoveOperation();
1551 if (moveOperation) {
1552 myMoveOperations.push_back(moveOperation);
1556 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1558 for (
const auto& edge : selectedEdges) {
1559 moveOperation = edge->getMoveOperation();
1560 if (moveOperation) {
1561 myMoveOperations.push_back(moveOperation);
1570 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1572 for (
const auto& junction : selectedJunctions) {
1574 if (moveOperation) {
1575 myMoveOperations.push_back(moveOperation);
1579 myMovingSelectedEdge =
true;
1586 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1589 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1591 for (
const auto& edge : selectedEdges) {
1594 if (moveOperation) {
1595 myMoveOperations.push_back(moveOperation);
1605 myViewNet(viewNet) {
1626 myViewNet(viewNet) {
1647 selectingUsingRectangle(false),
1648 startDrawing(false),
1649 myViewNet(viewNet) {
1655 selectingUsingRectangle =
true;
1656 selectionCorner1 = myViewNet->getPositionInformation();
1657 selectionCorner2 = selectionCorner1;
1664 startDrawing =
true;
1666 selectionCorner2 = myViewNet->getPositionInformation();
1668 myViewNet->setStatusBarText(
TL(
"Selection width:") +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1669 +
TL(
" height:") +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1670 +
TL(
" diagonal:") +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1677 selectingUsingRectangle =
false;
1678 startDrawing =
false;
1680 myViewNet->setStatusBarText(
"");
1687 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1688 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1689 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1692 rectangleBoundary.
add(selectionCorner1);
1693 rectangleBoundary.
add(selectionCorner2);
1695 processBoundarySelection(rectangleBoundary);
1700 std::vector<GNEEdge*>
1703 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
1704 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
1705 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1708 rectangleBoundary.
add(selectionCorner1);
1709 rectangleBoundary.
add(selectionCorner2);
1711 myViewNet->updateObjectsInBoundary(rectangleBoundary);
1713 return myViewNet->getViewObjectsSelector().getEdges();
1722 if (selectingUsingRectangle) {
1727 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
1729 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
1730 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
1731 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
1732 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
1741 const bool selEdges = myViewNet->myNetworkViewOptions.selectEdges();
1743 myViewNet->updateObjectsInBoundary(boundary);
1745 std::set<GNEAttributeCarrier*> ACsFiltered;
1746 for (
const auto& AC : myViewNet->getViewObjectsSelector().getAttributeCarriers()) {
1747 if (!AC->getGUIGlObject()->isGLObjectLocked()) {
1748 if (myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
1749 if (AC->getTagProperty().isNetworkElement() || AC->getTagProperty().isAdditionalElement()) {
1750 if ((AC->getTagProperty().getTag() ==
SUMO_TAG_EDGE && !selEdges)
1751 || (AC->getTagProperty().getTag() ==
SUMO_TAG_LANE && selEdges)) {
1754 ACsFiltered.insert(AC);
1756 }
else if (myViewNet->myEditModes.isCurrentSupermodeDemand() && AC->getTagProperty().isDemandElement()) {
1757 ACsFiltered.insert(AC);
1758 }
else if (myViewNet->myEditModes.isCurrentSupermodeData() && AC->getTagProperty().isGenericData()) {
1759 ACsFiltered.insert(AC);
1764 std::vector<GNEAttributeCarrier*> ACToSelect;
1765 std::vector<GNEAttributeCarrier*> ACToUnselect;
1767 ACToSelect.reserve(ACsFiltered.size());
1768 ACToUnselect.reserve(ACsFiltered.size());
1773 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
1775 for (
const auto& AC : selectedAC) {
1776 ACToUnselect.push_back(AC);
1780 for (
const auto& AC : ACsFiltered) {
1781 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode()) {
1783 ACToUnselect.push_back(AC);
1786 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC) != ACToUnselect.end()) {
1787 ACToSelect.push_back(AC);
1791 ACToSelect.push_back(AC);
1797 std::vector<GNEEdge*> edgesToSelect;
1799 for (
const auto& AC : ACToSelect) {
1801 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
1805 for (
const auto& edge : edgesToSelect) {
1807 ACToSelect.push_back(edge->getFromJunction());
1808 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
1809 ACToSelect.push_back(connection);
1811 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
1812 ACToSelect.push_back(crossing);
1815 ACToSelect.push_back(edge->getToJunction());
1816 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
1817 ACToSelect.push_back(connection);
1819 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
1820 ACToSelect.push_back(crossing);
1825 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
1828 for (
const auto& AC : ACToUnselect) {
1831 for (
const auto& AC : ACToSelect) {
1832 if (AC->getTagProperty().isSelectable()) {
1836 myViewNet->myUndoList->end();
1838 myViewNet->makeNonCurrent();
1846 myViewNet(viewNet) {
1856 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
1857 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
1858 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
1871 if (myTestingWidth > 0) {
1872 mainWindow->resize(myTestingWidth, myTestingHeight);
1876 const double size = myViewNet->p2m(32);
1877 Position center = myViewNet->screenPos2NetPos(8, 8);
1882 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1885 glVertex2d(0, -size);
1886 glVertex2d(size, -size);
1887 glVertex2d(size, 0);
1894 glScaled(0.7, 0.7, 0);
1895 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1898 glVertex2d(0, -size);
1899 glVertex2d(size, -size);
1900 glVertex2d(size, 0);
1907 glScaled(0.4, 0.4, 0);
1908 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
1911 glVertex2d(0, -size);
1912 glVertex2d(size, -size);
1913 glVertex2d(size, 0);
1924 myViewNet(viewNet) {
1929 delete mySaveIndividualFilesPopup;
1936 auto gripSaveElements = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements;
1938 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
1943 mySaveNeteditConfig->create();
1948 mySaveSumoConfig->create();
1953 mySaveNetwork->create();
1955 mySaveIndividualFilesPopup =
new FXPopup(gripSaveElements, POPUP_VERTICAL);
1956 mySaveIndividualFilesPopup->create();
1959 std::string(
"\t") +
TL(
"Save individual files") + std::string(
"\t") +
TL(
"Save individual files."),
1961 mySaveIndividualFiles->create();
1963 mySaveAdditionalElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
1966 mySaveAdditionalElements->create();
1968 mySaveDemandElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
1971 mySaveDemandElements->create();
1973 mySaveDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
1976 mySaveDataElements->create();
1978 mySaveMeanDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
1981 mySaveMeanDataElements->create();
1983 gripSaveElements->recalc();
1985 gripSaveElements->show();
1992 mySaveIndividualFiles->enable();
1994 mySaveIndividualFiles->disable();
2003 myViewNet(viewNet) {
2010 mySwitchButton =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().timeSwitch,
2011 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2012 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,
2014 mySwitchButton->create();
2033 mySwitchButton->setText(
"H");
2035 mySwitchButton->setText(
"S");
2048 myViewNet(viewNet) {
2051 if (neteditOptions.getBool(
"new")) {
2053 neteditOptions.resetWritable();
2054 neteditOptions.set(
"new",
"false");
2060 delete myNeteditViewsPopup;
2067 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2069 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2072 TL(
"Network") + std::string(
"\t") +
TL(
"Edit network elements") + std::string(
"\t") +
TL(
"Set mode for editing network elements. (F2)"),
2074 networkButton->create();
2077 TL(
"Demand") + std::string(
"\t") +
TL(
"Edit traffic demand elements") + std::string(
"\t") +
TL(
"Set mode for editing traffic demand. (F3)"),
2079 demandButton->create();
2082 TL(
"Data") + std::string(
"\t") +
TL(
"Edit data elements") + std::string(
"\t") +
TL(
"Set mode for editing data demand. (F4)"),
2084 dataButton->create();
2086 myNeteditViewsPopup =
new FXPopup(gripSupermodes, POPUP_VERTICAL);
2087 myNeteditViewsPopup->create();
2090 (std::string(
"\t") +
TL(
"Change netedit view") + std::string(
"\t") +
TL(
"Change netedit view.")).c_str(),
2092 myNeteditViewsButton->create();
2094 myDefaultViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2095 (std::string(
"Default\t") +
TL(
"Set default view") + std::string(
"\t") +
TL(
"Set default view.")).c_str(),
2097 myDefaultViewButton->create();
2099 myJuPedSimViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2100 (std::string(
"JuPedSim\t") +
TL(
"Set JuPedSim view") + std::string(
"\t") +
TL(
"Set JuPedSim view.")).c_str(),
2102 myJuPedSimViewButton->create();
2103 myNeteditViewsPopup->recalc();
2105 gripSupermodes->setWidth(353);
2107 gripSupermodes->show();
2113 if (!force && (supermode == currentSupermode)) {
2114 myViewNet->setStatusBarText(
TL(
"Mode already selected"));
2115 if (myViewNet->myCurrentFrame !=
nullptr) {
2116 myViewNet->myCurrentFrame->focusUpperElement();
2119 myViewNet->setStatusBarText(
"");
2121 myViewNet->abortOperation(
false);
2123 currentSupermode = supermode;
2127 networkButton->setChecked(
true);
2128 demandButton->setChecked(
false);
2129 dataButton->setChecked(
false);
2131 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
2133 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2135 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2137 setNetworkEditMode(networkEditMode,
true);
2140 networkButton->setChecked(
false);
2141 demandButton->setChecked(
true);
2142 dataButton->setChecked(
false);
2144 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2146 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2148 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2150 setDemandEditMode(demandEditMode,
true);
2152 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2154 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2156 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2158 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2162 networkButton->setChecked(
false);
2163 demandButton->setChecked(
false);
2164 dataButton->setChecked(
true);
2166 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2168 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2170 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2172 setDataEditMode(dataEditMode,
true);
2174 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2176 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2179 if (!myViewNet->myNet->getPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2181 myViewNet->myNet->getPathManager()->getPathCalculator()->updatePathCalculator();
2183 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2187 networkButton->update();
2188 demandButton->update();
2189 dataButton->update();
2191 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2198 if ((mode == networkEditMode) && !force) {
2199 myViewNet->setStatusBarText(
TL(
"Network mode already selected"));
2200 if (myViewNet->myCurrentFrame !=
nullptr) {
2201 myViewNet->myCurrentFrame->focusUpperElement();
2204 myViewNet->setStatusBarText(
TL(
"Save modifications in TLS before change mode"));
2205 myViewNet->myCurrentFrame->focusUpperElement();
2207 myViewNet->setStatusBarText(
"");
2208 myViewNet->abortOperation(
false);
2210 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2212 networkEditMode = mode;
2233 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2239 myViewNet->updateCursor();
2241 myViewNet->updateNetworkModeSpecificControls();
2248 if ((mode == demandEditMode) && !force) {
2249 myViewNet->setStatusBarText(
TL(
"Demand mode already selected"));
2250 if (myViewNet->myCurrentFrame !=
nullptr) {
2251 myViewNet->myCurrentFrame->focusUpperElement();
2254 myViewNet->setStatusBarText(
"");
2255 myViewNet->abortOperation(
false);
2257 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2259 demandEditMode = mode;
2274 myViewNet->updateCursor();
2276 myViewNet->updateDemandModeSpecificControls();
2283 if ((mode == dataEditMode) && !force) {
2284 myViewNet->setStatusBarText(
TL(
"Data mode already selected"));
2285 if (myViewNet->myCurrentFrame !=
nullptr) {
2286 myViewNet->myCurrentFrame->focusUpperElement();
2289 myViewNet->setStatusBarText(
"");
2290 myViewNet->abortOperation(
false);
2292 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2294 dataEditMode = mode;
2307 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2308 dataSet.second->updateAttributeColors();
2311 myViewNet->updateCursor();
2313 myViewNet->updateDataModeSpecificControls();
2339 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2341 auto& fileMenuCommands = myViewNet->getViewParent()->getGNEAppWindows()->getFileMenuCommands();
2345 gripSupermodes->setWidth(353);
2347 fileMenuCommands.setDefaultView();
2350 gripSupermodes->setWidth(250);
2352 fileMenuCommands.setJuPedSimView();
2355 myViewNet->viewUpdated();
2375 myViewNet(viewNet) {
2382 auto gripModes = myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes;
2384 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2387 (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)")),
2390 menuCheckToggleGrid->setChecked(
false);
2391 menuCheckToggleGrid->create();
2393 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2394 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2397 menuCheckToggleDrawJunctionShape->setChecked(
false);
2398 menuCheckToggleDrawJunctionShape->create();
2401 (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.")),
2404 menuCheckDrawSpreadVehicles->setChecked(
false);
2405 menuCheckDrawSpreadVehicles->create();
2408 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2411 menuCheckShowDemandElements->setChecked(
false);
2412 menuCheckShowDemandElements->create();
2415 (std::string(
"\t") +
TL(
"Clicks target lanes") + std::string(
"\t") +
TL(
"Toggle whether clicking should inspect/select/delete lanes instead of edges.")),
2418 menuCheckSelectEdges->create();
2421 (std::string(
"\t") +
TL(
"Show connections over junctions") + std::string(
"\t") +
TL(
"Toggle show connections over junctions.")),
2424 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2425 menuCheckShowConnections->create();
2428 (std::string(
"\t") +
TL(
"Hide connections") + std::string(
"\t") +
TL(
"Toggle hide connections.")),
2431 menuCheckHideConnections->setChecked(
false);
2432 menuCheckHideConnections->create();
2434 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2435 (std::string(
"\t") +
TL(
"Show additional sub-elements") + std::string(
"\t") +
TL(
"Toggle show additional sub-elements.")),
2438 menuCheckShowAdditionalSubElements->setChecked(
false);
2439 menuCheckShowAdditionalSubElements->create();
2442 (std::string(
"\t") +
TL(
"Show TAZ elements") + std::string(
"\t") +
TL(
"Toggle show TAZ elements.")),
2445 menuCheckShowTAZElements->setChecked(
false);
2446 menuCheckShowTAZElements->create();
2449 (std::string(
"\t") +
TL(
"Automatic select junctions") + std::string(
"\t") +
TL(
"Toggle whether selecting multiple edges should automatically select their junctions.")),
2452 menuCheckExtendSelection->setChecked(
true);
2453 menuCheckExtendSelection->create();
2456 (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.")),
2459 menuCheckChangeAllPhases->setChecked(
false);
2460 menuCheckChangeAllPhases->create();
2463 (std::string(
"\t") +
TL(
"Automatic merging junction") + std::string(
"\t") +
TL(
"Toggle ask for confirmation before merging junction.")),
2466 menuCheckWarnAboutMerge->create();
2469 (std::string(
"\t") +
TL(
"Show bubbles") + std::string(
"\t") +
TL(
"Toggle show bubbles over junctions shapes.")),
2472 menuCheckShowJunctionBubble->setChecked(
false);
2473 menuCheckShowJunctionBubble->create();
2476 (std::string(
"\t") +
TL(
"Move elevation") + std::string(
"\t") +
TL(
"Apply mouse movement to elevation instead of x,y position.")),
2479 menuCheckMoveElevation->setChecked(
false);
2480 menuCheckMoveElevation->create();
2483 (std::string(
"\t") +
TL(
"Edge chain mode") + std::string(
"\t") +
TL(
"Create consecutive edges with a single click (hit ESC to cancel chain).")),
2486 menuCheckChainEdges->setChecked(
false);
2487 menuCheckChainEdges->create();
2490 (std::string(
"\t") +
TL(
"Edge opposite direction") + std::string(
"\t") +
TL(
"Automatically create an edge in the opposite direction.")),
2493 menuCheckAutoOppositeEdge->setChecked(
false);
2494 menuCheckAutoOppositeEdge->create();
2497 gripModes->recalc();
2503 menuCheckToggleGrid->hide();
2504 menuCheckToggleDrawJunctionShape->hide();
2505 menuCheckDrawSpreadVehicles->hide();
2506 menuCheckShowDemandElements->hide();
2507 menuCheckSelectEdges->hide();
2508 menuCheckShowConnections->hide();
2509 menuCheckHideConnections->hide();
2510 menuCheckShowAdditionalSubElements->hide();
2511 menuCheckShowTAZElements->hide();
2512 menuCheckExtendSelection->hide();
2513 menuCheckChangeAllPhases->hide();
2514 menuCheckWarnAboutMerge->hide();
2515 menuCheckShowJunctionBubble->hide();
2516 menuCheckMoveElevation->hide();
2517 menuCheckChainEdges->hide();
2518 menuCheckAutoOppositeEdge->hide();
2525 if (menuCheckToggleGrid->shown()) {
2526 commands.push_back(menuCheckToggleGrid);
2528 if (menuCheckToggleDrawJunctionShape->shown()) {
2529 commands.push_back(menuCheckToggleDrawJunctionShape);
2531 if (menuCheckDrawSpreadVehicles->shown()) {
2532 commands.push_back(menuCheckDrawSpreadVehicles);
2534 if (menuCheckShowDemandElements->shown()) {
2535 commands.push_back(menuCheckShowDemandElements);
2537 if (menuCheckSelectEdges->shown()) {
2538 commands.push_back(menuCheckSelectEdges);
2540 if (menuCheckShowConnections->shown()) {
2541 commands.push_back(menuCheckShowConnections);
2543 if (menuCheckHideConnections->shown()) {
2544 commands.push_back(menuCheckHideConnections);
2546 if (menuCheckShowAdditionalSubElements->shown()) {
2547 commands.push_back(menuCheckShowAdditionalSubElements);
2549 if (menuCheckShowTAZElements->shown()) {
2550 commands.push_back(menuCheckShowTAZElements);
2552 if (menuCheckExtendSelection->shown()) {
2553 commands.push_back(menuCheckExtendSelection);
2555 if (menuCheckChangeAllPhases->shown()) {
2556 commands.push_back(menuCheckChangeAllPhases);
2558 if (menuCheckWarnAboutMerge->shown()) {
2559 commands.push_back(menuCheckWarnAboutMerge);
2561 if (menuCheckShowJunctionBubble->shown()) {
2562 commands.push_back(menuCheckShowJunctionBubble);
2564 if (menuCheckMoveElevation->shown()) {
2565 commands.push_back(menuCheckMoveElevation);
2567 if (menuCheckChainEdges->shown()) {
2568 commands.push_back(menuCheckChainEdges);
2570 if (menuCheckAutoOppositeEdge->shown()) {
2571 commands.push_back(menuCheckAutoOppositeEdge);
2578 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2584 if (menuCheckShowDemandElements->shown()) {
2585 return (menuCheckShowDemandElements->amChecked() == TRUE);
2595 if (menuCheckSelectEdges->shown()) {
2596 return (menuCheckSelectEdges->amChecked() != TRUE);
2606 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2610 return (menuCheckHideConnections->amChecked() == FALSE);
2613 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2616 return (myViewNet->getVisualisationSettings().showLane2Lane);
2623 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2625 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2628 return menuCheckShowAdditionalSubElements->amChecked();
2635 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2637 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2640 return menuCheckShowTAZElements->amChecked();
2647 if (menuCheckMoveElevation->shown()) {
2648 return (menuCheckMoveElevation->amChecked() == TRUE);
2659 myViewNet(viewNet) {
2666 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
2668 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2671 (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)")),
2674 menuCheckToggleGrid->setChecked(
false);
2675 menuCheckToggleGrid->create();
2677 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2678 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2681 menuCheckToggleDrawJunctionShape->setChecked(
false);
2682 menuCheckToggleDrawJunctionShape->create();
2685 (std::string(
"\t") +
TL(
"Draw vehicles spread/depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
2688 menuCheckDrawSpreadVehicles->setChecked(
false);
2689 menuCheckDrawSpreadVehicles->create();
2692 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
2695 menuCheckHideShapes->setChecked(
false);
2696 menuCheckHideShapes->create();
2699 (std::string(
"\t") +
TL(
"Show all trips") + std::string(
"\t") +
TL(
"Toggle show all trips (requires updated demand - F5).")),
2702 menuCheckShowAllTrips->setChecked(
false);
2703 menuCheckShowAllTrips->create();
2706 (std::string(
"\t") +
TL(
"Show all person plans") + std::string(
"\t") +
TL(
"Toggle show all person plans.")),
2709 menuCheckShowAllPersonPlans->setChecked(
false);
2710 menuCheckShowAllPersonPlans->create();
2713 (std::string(
"\t") +
TL(
"Lock selected person") + std::string(
"\t") +
TL(
"Toggle lock selected person.")),
2716 menuCheckLockPerson->setChecked(
false);
2717 menuCheckLockPerson->create();
2719 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2720 (std::string(
"\t") +
TL(
"Show all containers plans") + std::string(
"\t") +
TL(
"Toggle show all container plans.")),
2723 menuCheckShowAllContainerPlans->setChecked(
false);
2724 menuCheckShowAllContainerPlans->create();
2727 (std::string(
"\t") +
TL(
"Lock selected container") + std::string(
"\t") +
TL(
"Toggle lock selected container.")),
2730 menuCheckLockContainer->setChecked(
false);
2731 menuCheckLockContainer->create();
2733 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2734 (std::string(
"\t") +
TL(
"Show non-inspected demand elements") + std::string(
"\t") +
TL(
"Toggle show non-inspected demand elements.")),
2737 menuCheckHideNonInspectedDemandElements->setChecked(
false);
2738 menuCheckHideNonInspectedDemandElements->create();
2740 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2741 (std::string(
"\t") +
TL(
"Show number of overlapped routes") + std::string(
"\t") +
TL(
"Toggle show number of overlapped routes.")),
2744 menuCheckShowOverlappedRoutes->setChecked(
false);
2745 menuCheckShowOverlappedRoutes->create();
2748 gripModes->recalc();
2754 menuCheckToggleGrid->hide();
2755 menuCheckToggleDrawJunctionShape->hide();
2756 menuCheckDrawSpreadVehicles->hide();
2757 menuCheckHideShapes->hide();
2758 menuCheckShowAllTrips->hide();
2759 menuCheckShowAllPersonPlans->hide();
2760 menuCheckLockPerson->hide();
2761 menuCheckShowAllContainerPlans->hide();
2762 menuCheckLockContainer->hide();
2763 menuCheckHideNonInspectedDemandElements->hide();
2764 menuCheckShowOverlappedRoutes->hide();
2771 if (menuCheckToggleGrid->shown()) {
2772 commands.push_back(menuCheckToggleGrid);
2774 if (menuCheckToggleDrawJunctionShape->shown()) {
2775 commands.push_back(menuCheckToggleDrawJunctionShape);
2777 if (menuCheckDrawSpreadVehicles->shown()) {
2778 commands.push_back(menuCheckDrawSpreadVehicles);
2780 if (menuCheckHideShapes->shown()) {
2781 commands.push_back(menuCheckHideShapes);
2783 if (menuCheckShowAllTrips->shown()) {
2784 commands.push_back(menuCheckShowAllTrips);
2786 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
2787 commands.push_back(menuCheckShowAllPersonPlans);
2789 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
2790 commands.push_back(menuCheckLockPerson);
2792 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
2793 commands.push_back(menuCheckShowAllContainerPlans);
2795 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
2796 commands.push_back(menuCheckLockContainer);
2798 if (menuCheckHideNonInspectedDemandElements->shown()) {
2799 commands.push_back(menuCheckHideNonInspectedDemandElements);
2801 if (menuCheckShowOverlappedRoutes->shown()) {
2802 commands.push_back(menuCheckShowOverlappedRoutes);
2809 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2815 if (menuCheckHideNonInspectedDemandElements->shown()) {
2817 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (myViewNet->getInspectedAttributeCarriers().empty())) {
2820 }
else if (myViewNet->getInspectedAttributeCarriers().front()->getTagProperty().isDemandElement()) {
2821 if (myViewNet->isAttributeCarrierInspected(demandElement)) {
2827 if (myViewNet->isAttributeCarrierInspected(i)) {
2833 if (myViewNet->isAttributeCarrierInspected(i)) {
2853 if (menuCheckHideShapes->shown()) {
2854 return (menuCheckHideShapes->amChecked() == FALSE);
2863 return (menuCheckShowAllTrips->amChecked() == TRUE);
2869 if (menuCheckShowAllPersonPlans->isEnabled()) {
2870 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
2879 myLockedPerson = person;
2885 myLockedPerson =
nullptr;
2891 return myLockedPerson;
2897 if (menuCheckShowAllContainerPlans->isEnabled()) {
2898 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
2907 myLockedContainer = container;
2913 myLockedContainer =
nullptr;
2919 if (menuCheckShowOverlappedRoutes->isEnabled()) {
2920 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
2929 return myLockedContainer;
2937 myViewNet(viewNet) {
2944 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
2946 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2948 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2949 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2952 menuCheckToggleDrawJunctionShape->setChecked(
false);
2953 menuCheckToggleDrawJunctionShape->create();
2956 (std::string(
"\t") +
TL(
"Show additionals") + std::string(
"\t") +
TL(
"Toggle show additionals.")),
2959 menuCheckShowAdditionals->create();
2962 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
2965 menuCheckShowShapes->create();
2968 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2971 menuCheckShowDemandElements->create();
2974 (std::string(
"\t") +
TL(
"Draw TAZREL drawing mode") + std::string(
"\t") +
TL(
"Toggle draw TAZREL drawing mode.")),
2977 menuCheckToggleTAZRelDrawing->create();
2980 (std::string(
"\t") +
TL(
"Toggle draw TAZ fill") + std::string(
"\t") +
TL(
"Toggle draw TAZ fill")),
2983 menuCheckToggleTAZDrawFill->create();
2985 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
2986 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only from") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only from")),
2989 menuCheckToggleTAZRelOnlyFrom->create();
2992 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only to") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only to")),
2995 menuCheckToggleTAZRelOnlyTo->create();
2998 gripModes->recalc();
3004 menuCheckToggleDrawJunctionShape->hide();
3005 menuCheckShowAdditionals->hide();
3006 menuCheckShowShapes->hide();
3007 menuCheckShowDemandElements->hide();
3008 menuCheckToggleTAZRelDrawing->hide();
3009 menuCheckToggleTAZDrawFill->hide();
3010 menuCheckToggleTAZRelOnlyFrom->hide();
3011 menuCheckToggleTAZRelOnlyTo->hide();
3018 if (menuCheckToggleDrawJunctionShape->shown()) {
3019 commands.push_back(menuCheckToggleDrawJunctionShape);
3021 if (menuCheckShowAdditionals->shown()) {
3022 commands.push_back(menuCheckShowAdditionals);
3024 if (menuCheckShowShapes->shown()) {
3025 commands.push_back(menuCheckShowShapes);
3027 if (menuCheckShowDemandElements->shown()) {
3028 commands.push_back(menuCheckShowDemandElements);
3030 if (menuCheckToggleTAZRelDrawing->shown()) {
3031 commands.push_back(menuCheckToggleTAZRelDrawing);
3033 if (menuCheckToggleTAZDrawFill->shown()) {
3034 commands.push_back(menuCheckToggleTAZDrawFill);
3036 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3037 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
3039 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3040 commands.push_back(menuCheckToggleTAZRelOnlyTo);
3047 if (menuCheckShowAdditionals->shown()) {
3048 return (menuCheckShowAdditionals->amChecked() == TRUE);
3057 if (menuCheckShowShapes->shown()) {
3058 return (menuCheckShowShapes->amChecked() == TRUE);
3067 if (menuCheckShowDemandElements->shown()) {
3068 return (menuCheckShowDemandElements->amChecked() == TRUE);
3077 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
3083 if (menuCheckToggleTAZDrawFill->shown()) {
3084 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
3093 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3094 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
3103 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3104 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3115 myViewNet(viewNet) {
3122 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3124 genericDataLabel->create();
3126 myGenericDataTypesComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3129 myGenericDataTypesComboBox->create();
3131 myGenericDataTypesComboBox->appendIconItem(
"<all>");
3136 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3138 dataSetLabel->create();
3140 myDataSetsComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3143 myDataSetsComboBox->create();
3145 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3147 myIntervalCheckBox->create();
3149 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3151 myBeginTextField->create();
3153 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3155 myEndTextField->create();
3157 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3159 parameterLabel->create();
3161 myParametersComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3164 myParametersComboBox->create();
3166 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3173 updateIntervalBar();
3175 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3182 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3189 if (myUpdateInterval && myViewNet->getNet()) {
3196 myParameters.clear();
3198 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3200 myDataSets.push_back(dataSet.second->getID());
3202 for (
const auto& interval : dataSet.second->getDataIntervalChildren()) {
3205 begin = interval.first;
3208 end = interval.first;
3211 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3213 for (
const auto& parameter : genericData->getParametersMap()) {
3214 myParameters.insert(parameter.first);
3220 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3222 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3223 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3225 const std::string previousParameter = myParametersComboBox->getText().text();
3227 myDataSetsComboBox->clearItems();
3228 myParametersComboBox->clearItems();
3230 myDataSetsComboBox->appendIconItem(
"<all>");
3231 myParametersComboBox->appendIconItem(
"<all>");
3233 for (
const auto& dataSet : myDataSets) {
3234 myDataSetsComboBox->appendIconItem(dataSet.c_str());
3237 myBeginTextField->setText(
toString(begin).c_str());
3238 myEndTextField->setText(
toString(end).c_str());
3240 for (
const auto& parameter : myParameters) {
3241 myParametersComboBox->appendIconItem(parameter.c_str());
3244 myDataSetsComboBox->setCurrentItem(0, FALSE);
3245 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3246 if (myDataSetsComboBox->getItemText(i) == previousDataSet) {
3247 myDataSetsComboBox->setCurrentItem(i);
3251 if (myIntervalCheckBox->getCheck() == TRUE) {
3252 myBeginTextField->setText(previousBegin.c_str());
3253 myEndTextField->setText(previousEnd.c_str());
3256 myParametersComboBox->setCurrentItem(0, FALSE);
3257 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3258 if (myParametersComboBox->getItemText(i) == previousParameter) {
3259 myParametersComboBox->setCurrentItem(i);
3266 enableIntervalBar();
3268 disableIntervalBar();
3271 myUpdateInterval =
false;
3278 myUpdateInterval =
true;
3284 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() == FXRGB(0, 0, 0))) {
3299 if (!myDataSetsComboBox->isEnabled() ||
3300 (myDataSetsComboBox->getCurrentItem() == 0) ||
3301 (myDataSetsComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3311 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3314 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3321 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3324 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3331 if (!myParametersComboBox->isEnabled() ||
3332 (myParametersComboBox->getCurrentItem() == 0) ||
3333 (myParametersComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3336 return myParametersComboBox->getText().text();
3343 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3347 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
3349 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
3352 myViewNet->updateViewNet();
3359 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3360 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
3362 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
3365 myViewNet->updateViewNet();
3372 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3373 myBeginTextField->enable();
3374 myEndTextField->enable();
3376 myBeginTextField->disable();
3377 myEndTextField->disable();
3380 myViewNet->updateViewNet();
3386 if (myBeginTextField->getText().empty()) {
3387 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3388 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3389 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3390 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3392 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
3395 myViewNet->updateViewNet();
3401 if (myEndTextField->getText().empty()) {
3402 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3403 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3404 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3405 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3407 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3410 myViewNet->updateViewNet();
3417 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3418 myParametersComboBox->setTextColor(FXRGB(0, 0, 0));
3420 myParametersComboBox->setTextColor(FXRGB(255, 0, 0));
3423 myViewNet->updateViewNet();
3431 myGenericDataTypesComboBox->enable();
3432 myDataSetsComboBox->enable();
3433 myIntervalCheckBox->enable();
3434 if (myIntervalCheckBox->getCheck() == TRUE) {
3435 myBeginTextField->enable();
3436 myEndTextField->enable();
3438 myBeginTextField->disable();
3439 myEndTextField->disable();
3441 myParametersComboBox->enable();
3448 myGenericDataTypesComboBox->disable();
3449 myDataSetsComboBox->disable();
3450 myIntervalCheckBox->disable();
3451 myBeginTextField->disable();
3452 myEndTextField->disable();
3453 myParametersComboBox->disable();
3461 myViewNet(viewNet) {
3468 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3470 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3473 std::string(
"\t") +
TL(
"Inspect mode") + std::string(
"\t") +
TL(
"Mode for inspect elements and change their attributes. (I)"),
3475 inspectButton->create();
3478 std::string(
"\t") +
TL(
"Delete mode") + std::string(
"\t") +
TL(
"Mode for deleting elements. (D)"),
3480 deleteButton->create();
3483 std::string(
"\t") +
TL(
"Select mode") + std::string(
"\t") +
TL(
"Mode for selecting elements. (S)"),
3485 selectButton->create();
3487 gripModes->recalc();
3493 inspectButton->show();
3494 deleteButton->show();
3495 selectButton->show();
3501 inspectButton->hide();
3502 deleteButton->hide();
3503 selectButton->hide();
3509 inspectButton->setChecked(
false);
3510 deleteButton->setChecked(
false);
3511 selectButton->setChecked(
false);
3517 inspectButton->update();
3518 deleteButton->update();
3519 selectButton->update();
3527 myViewNet(viewNet) {
3534 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3536 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3539 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3541 moveNetworkElementsButton->create();
3544 std::string(
"\t") +
TL(
"Edge mode") + std::string(
"\t") +
TL(
"Mode for creating junctions and edges. (E)"),
3546 createEdgeButton->create();
3549 std::string(
"\t") +
TL(
"Traffic light mode") + std::string(
"\t") +
TL(
"Mode for editing traffic lights over junctions. (T)"),
3551 trafficLightButton->create();
3554 std::string(
"\t") +
TL(
"Connection mode") + std::string(
"\t") +
TL(
"Mode for edit connections between lanes. (C)"),
3556 connectionButton->create();
3559 std::string(
"\t") +
TL(
"Prohibition mode") + std::string(
"\t") +
TL(
"Mode for editing connection prohibitions. (H)"),
3561 prohibitionButton->create();
3564 std::string(
"\t") +
TL(
"Crossing mode") + std::string(
"\t") +
TL(
"Mode for creating crossings between edges. (R)"),
3566 crossingButton->create();
3569 std::string(
"\t") +
TL(
"Additional mode") + std::string(
"\t") +
TL(
"Mode for creating additional elements. (A)"),
3571 additionalButton->create();
3574 std::string(
"\t") +
TL(
"Wire mode") + std::string(
"\t") +
TL(
"Mode for editing overhead wires. (W)"),
3576 wireButton->create();
3579 std::string(
"\t") +
TL(
"TAZ mode") + std::string(
"\t") +
TL(
"Mode for creating Traffic Assignment Zones. (Z)"),
3581 TAZButton->create();
3584 std::string(
"\t") +
TL(
"Polygon mode") + std::string(
"\t") +
TL(
"Mode for creating polygons and POIs. (P)"),
3586 shapeButton->create();
3589 std::string(
"\t") +
TL(
"Decal mode") + std::string(
"\t") +
TL(
"Mode for editing decals. (U)"),
3591 decalButton->create();
3593 gripModes->recalc();
3600 if (myViewNet->getEditModes().isJuPedSimView()) {
3601 moveNetworkElementsButton->show();
3602 createEdgeButton->show();
3603 connectionButton->hide();
3604 trafficLightButton->hide();
3605 additionalButton->show();
3606 crossingButton->show();
3608 shapeButton->show();
3609 prohibitionButton->hide();
3611 decalButton->hide();
3613 moveNetworkElementsButton->show();
3614 createEdgeButton->show();
3615 connectionButton->show();
3616 trafficLightButton->show();
3617 additionalButton->show();
3618 crossingButton->show();
3620 shapeButton->show();
3621 prohibitionButton->show();
3623 decalButton->show();
3630 moveNetworkElementsButton->hide();
3631 createEdgeButton->hide();
3632 connectionButton->hide();
3633 trafficLightButton->hide();
3634 additionalButton->hide();
3635 crossingButton->hide();
3637 shapeButton->hide();
3638 prohibitionButton->hide();
3640 decalButton->hide();
3646 moveNetworkElementsButton->setChecked(
false);
3647 createEdgeButton->setChecked(
false);
3648 connectionButton->setChecked(
false);
3649 trafficLightButton->setChecked(
false);
3650 additionalButton->setChecked(
false);
3651 crossingButton->setChecked(
false);
3652 TAZButton->setChecked(
false);
3653 shapeButton->setChecked(
false);
3654 prohibitionButton->setChecked(
false);
3655 wireButton->setChecked(
false);
3656 decalButton->setChecked(
false);
3662 moveNetworkElementsButton->update();
3663 createEdgeButton->update();
3664 connectionButton->update();
3665 trafficLightButton->update();
3666 additionalButton->update();
3667 crossingButton->update();
3668 TAZButton->update();
3669 shapeButton->update();
3670 prohibitionButton->update();
3671 wireButton->update();
3672 decalButton->update();
3680 myViewNet(viewNet) {
3687 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3689 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3692 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3694 moveDemandElementsButton->create();
3697 std::string(
"\t") +
TL(
"Route mode") + std::string(
"\t") +
TL(
"Mode for creating routes. (R)"),
3699 routeButton->create();
3702 std::string(
"\t") +
TL(
"Route distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing rout distributions. (W)"),
3704 routeDistributionButton->create();
3707 std::string(
"\t") +
TL(
"Vehicle mode") + std::string(
"\t") +
TL(
"Mode for creating vehicles. (V)"),
3709 vehicleButton->create();
3712 std::string(
"\t") +
TL(
"Type mode") + std::string(
"\t") +
TL(
"Mode for creating types (of vehicles, persons and containers). (T)"),
3714 typeButton->create();
3717 std::string(
"\t") +
TL(
"Type distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing type distribution. (U)"),
3719 typeDistributionButton->create();
3722 std::string(
"\t") +
TL(
"Stop mode") + std::string(
"\t") +
TL(
"Mode for creating stops. (A)"),
3724 stopButton->create();
3727 std::string(
"\t") +
TL(
"Person mode") + std::string(
"\t") +
TL(
"Mode for creating persons. (P)"),
3729 personButton->create();
3732 std::string(
"\t") +
TL(
"Person plan mode") + std::string(
"\t") +
TL(
"Mode for creating person plans. (L)"),
3734 personPlanButton->create();
3737 std::string(
"\t") +
TL(
"Container mode") + std::string(
"\t") +
TL(
"Mode for creating containers. (C)"),
3739 containerButton->create();
3742 std::string(
"\t") +
TL(
"Container plan mode") + std::string(
"\t") +
TL(
"Mode for creating container plans. (H)"),
3744 containerPlanButton->create();
3746 gripModes->recalc();
3752 if (myViewNet->getEditModes().isJuPedSimView()) {
3753 moveDemandElementsButton->hide();
3754 routeButton->show();
3755 routeDistributionButton->show();
3756 vehicleButton->hide();
3758 typeDistributionButton->show();
3760 personButton->show();
3761 personPlanButton->show();
3762 containerButton->hide();
3763 containerPlanButton->hide();
3765 moveDemandElementsButton->show();
3766 routeButton->show();
3767 routeDistributionButton->show();
3768 vehicleButton->show();
3770 typeDistributionButton->show();
3772 personButton->show();
3773 personPlanButton->show();
3774 containerButton->show();
3775 containerPlanButton->show();
3782 moveDemandElementsButton->hide();
3783 routeButton->hide();
3784 routeDistributionButton->hide();
3785 vehicleButton->hide();
3787 typeDistributionButton->hide();
3789 personButton->hide();
3790 personPlanButton->hide();
3791 containerButton->hide();
3792 containerPlanButton->hide();
3798 moveDemandElementsButton->setChecked(
false);
3799 routeButton->setChecked(
false);
3800 routeDistributionButton->setChecked(
false);
3801 vehicleButton->setChecked(
false);
3802 typeButton->setChecked(
false);
3803 typeDistributionButton->setChecked(
false);
3804 stopButton->setChecked(
false);
3805 personButton->setChecked(
false);
3806 personPlanButton->setChecked(
false);
3807 containerButton->setChecked(
false);
3808 containerPlanButton->setChecked(
false);
3814 moveDemandElementsButton->update();
3815 routeButton->update();
3816 routeDistributionButton->update();
3817 vehicleButton->update();
3818 typeButton->update();
3819 typeDistributionButton->update();
3820 stopButton->update();
3821 personButton->update();
3822 personPlanButton->update();
3823 containerButton->update();
3824 containerPlanButton->update();
3832 myViewNet(viewNet) {
3839 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3841 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3844 std::string(
"\t") +
TL(
"Edge data mode") + std::string(
"\t") +
TL(
"Mode for creating edge datas. (E)"),
3846 edgeDataButton->create();
3849 std::string(
"\t") +
TL(
"Edge relation data mode") + std::string(
"\t") +
TL(
"Mode for creating edge relation datas. (R)"),
3851 edgeRelDataButton->create();
3854 std::string(
"\t") +
TL(
"TAZ relation data mode") + std::string(
"\t") +
TL(
"Mode for creating TAZ relation datas. (Z)"),
3856 TAZRelDataButton->create();
3859 std::string(
"\t") +
TL(
"MeanData mode") + std::string(
"\t") +
TL(
"Mode for MeanData elements. (M)"),
3861 meanDataButton->create();
3863 gripModes->recalc();
3869 edgeDataButton->show();
3870 edgeRelDataButton->show();
3871 TAZRelDataButton->show();
3872 meanDataButton->show();
3878 edgeDataButton->hide();
3879 edgeRelDataButton->hide();
3880 TAZRelDataButton->hide();
3881 meanDataButton->hide();
3887 edgeDataButton->setChecked(
false);
3888 edgeRelDataButton->setChecked(
false);
3889 TAZRelDataButton->setChecked(
false);
3890 meanDataButton->setChecked(
false);
3896 edgeDataButton->update();
3897 edgeRelDataButton->update();
3898 TAZRelDataButton->update();
3899 meanDataButton->update();
3914 if (element && (myEditedNetworkElement ==
nullptr)) {
3916 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
3920 myEditedNetworkElement = element;
3924 myViewNet->updateViewNet();
3932 if (myEditedNetworkElement !=
nullptr) {
3934 myEditedNetworkElement->setShapeEdited(
false);
3936 myEditedNetworkElement =
nullptr;
3938 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
3939 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
3948 if (myEditedNetworkElement !=
nullptr) {
3950 stopEditCustomShape();
3957 return myEditedNetworkElement;
3967 const double size,
const double offsetx,
const double offsety) {
3969 if (checkDrawing(d, AC, type, exaggeration)) {
3975 glTranslated(offsetx, offsety, 0);
3977 glRotated(180, 0, 0, 1);
4001 if (exaggeration == 0) {
4005 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
4027 const std::vector<RGBColor>&
4052 }
else if (value >= max) {
4056 const double procent = ((value - min) * 100) / (max - min);
4060 }
else if (procent >= 100) {
4070 std::vector<GUIGlObject*>
4072 std::vector<GUIGlObject*> filteredGLObjects;
4073 if (GLObjects.size() > 0) {
4074 const auto firstLayer = GLObjects.front()->getType();
4075 for (
const auto& GLObject : GLObjects) {
4077 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
4078 filteredGLObjects.push_back(GLObject);
4080 (GLO_STOP <= GLObject->getType()) && (GLObject->getType() <=
GLO_STOP_PLAN)) {
4081 filteredGLObjects.push_back(GLObject);
4083 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
4084 filteredGLObjects.push_back(GLObject);
4086 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
4087 filteredGLObjects.push_back(GLObject);
4089 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
4090 filteredGLObjects.push_back(GLObject);
4091 }
else if (GLObject->getType() == firstLayer) {
4092 filteredGLObjects.push_back(GLObject);
4096 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
#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_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_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
const GNETagProperties & getTagProperty() const
get tagProperty associated with this Attribute Carrier
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)
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)
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
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
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)
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)
GNEPOI * getPOIFront() const
get front POI or a pointer to nullptr
GNEInternalLane * getInternalLaneFront() const
get front internal lane or a pointer to nullptr
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
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
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 attribute carrier 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
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
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...
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
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.
std::map< double, std::vector< ObjectContainer > > GLObjectsSortedContainer
typedef
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