100 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
107 return myLockedElements.at(
GLO_WIRE).lock;
110 return myLockedElements.at(
GLO_ROUTE).lock;
122 return myLockedElements.at(
GLO_STOP).lock;
124 return myLockedElements.at(objectType).lock;
207 mySupermode(supermode) {
228 myInspectedACs.clear();
230 myFirstInspectedAC = AC;
231 myInspectedACs.insert(AC);
233 myFirstInspectedAC =
nullptr;
240 myInspectedACs.clear();
241 if (ACs.size() > 0) {
242 myFirstInspectedAC = ACs.front();
243 for (
const auto& AC : ACs) {
244 myInspectedACs.insert(AC);
247 myFirstInspectedAC =
nullptr;
254 auto it = myInspectedACs.find(AC);
255 if (it != myInspectedACs.end()) {
256 myInspectedACs.erase(it);
257 if (myInspectedACs.size() == 0) {
258 myInspectedACs.clear();
259 myFirstInspectedAC =
nullptr;
260 }
else if (myFirstInspectedAC == AC) {
261 myFirstInspectedAC = (*myInspectedACs.begin());
269 myFirstInspectedAC =
nullptr;
270 myInspectedACs.clear();
276 return myFirstInspectedAC;
280const std::unordered_set<GNEAttributeCarrier*>&
282 return myInspectedACs;
288 if (myInspectedACs.empty()) {
290 }
else if (myFirstInspectedAC == AC) {
293 return myInspectedACs.find(AC) != myInspectedACs.end();
300 if (myInspectedACs.empty()) {
302 }
else if (myFirstInspectedAC == AC) {
313 return myInspectedACs.size() > 0;
319 return myInspectedACs.size() == 1;
325 return myInspectedACs.size() > 1;
335const std::unordered_set<GNEAttributeCarrier*>&
344 const auto copy = myMarkedACs;
345 for (
auto& AC : copy) {
353 myMarkedACs.insert(AC);
359 if (myMarkedACs.size() > 0) {
360 auto it = myMarkedACs.find(AC);
361 if (it != myMarkedACs.end()) {
362 myMarkedACs.erase(it);
379 myViewObjects.clearElements();
394 if (myViewObjects.junctions.size() > 0) {
397 if (myViewObjects.edges.size() > 0) {
400 if (myViewObjects.lanes.size() > 0) {
403 if (myViewObjects.crossings.size() > 0) {
406 if (myViewObjects.connections.size() > 0) {
409 if (myViewObjects.walkingAreas.size() > 0) {
412 if (myViewObjects.lanes.size() > 0) {
415 if (myViewObjects.additionals.size() > 0) {
416 baseObjet->
addParentID(myViewObjects.additionals.front()->getTagProperty()->getTag(), myViewObjects.additionals.front()->getID());
418 if (myViewObjects.demandElements.size() > 0) {
419 baseObjet->
addParentID(myViewObjects.demandElements.front()->getTagProperty()->getTag(), myViewObjects.demandElements.front()->getID());
421 if (myViewObjects.genericDatas.size() > 0) {
422 baseObjet->
addParentID(myViewObjects.genericDatas.front()->getTagProperty()->getTag(), myViewObjects.genericDatas.front()->getID());
430 std::vector<const GUIGlObject*> glElements;
431 for (
const auto& glElement : myViewObjects.GUIGlObjects) {
432 if (glElement->getType() != exception) {
433 glElements.push_back(glElement);
436 myViewObjects.filterElements(glElements);
442 if (myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
443 filterDemandElements(
true);
444 filterDataElements();
445 }
else if (myViewNet->getEditModes().isCurrentSupermodeDemand()) {
446 filterNetworkElements();
447 filterAdditionals(
true,
true);
448 filterDataElements();
449 }
else if (myViewNet->getEditModes().isCurrentSupermodeData()) {
450 filterNetworkElements();
451 filterDemandElements(
true);
459 std::vector<const GUIGlObject*> junctions;
460 for (
const auto& junction : myViewObjects.junctions) {
461 junctions.push_back(junction);
463 myViewObjects.filterElements(junctions);
470 std::vector<const GUIGlObject*> edges;
471 for (
const auto& edge : myViewObjects.edges) {
472 edges.push_back(edge);
474 myViewObjects.filterElements(edges);
481 std::vector<const GUIGlObject*> lanes;
482 for (
const auto& lane : myViewObjects.lanes) {
483 lanes.push_back(lane);
485 myViewObjects.filterElements(lanes);
492 std::vector<const GUIGlObject*> connections;
493 for (
const auto& connection : myViewObjects.connections) {
494 connections.push_back(connection);
496 myViewObjects.filterElements(connections);
503 std::vector<const GUIGlObject*> crossings;
504 for (
const auto& crossing : myViewObjects.crossings) {
505 crossings.push_back(crossing);
507 myViewObjects.filterElements(crossings);
514 std::vector<const GUIGlObject*> walkingAreas;
515 for (
const auto& walkingArea : myViewObjects.walkingAreas) {
516 walkingAreas.push_back(walkingArea);
518 myViewObjects.filterElements(walkingAreas);
525 std::vector<const GUIGlObject*> shapes;
526 for (
const auto& poly : myViewObjects.polys) {
527 shapes.push_back(poly);
529 for (
const auto&
POI : myViewObjects.POIs) {
530 shapes.push_back(
POI);
532 myViewObjects.filterElements(shapes);
539 std::vector<const GUIGlObject*> additionals;
540 for (
const auto& additional : myViewObjects.additionals) {
543 }
else if (!includeTAZs && (additional->getType() ==
GLO_TAZ)) {
546 additionals.push_back(additional);
549 myViewObjects.filterElements(additionals);
556 std::vector<const GUIGlObject*> networkElements;
557 for (
const auto& networkElement : myViewObjects.networkElements) {
558 networkElements.push_back(networkElement);
560 myViewObjects.filterElements(networkElements);
567 std::vector<const GUIGlObject*> demandElements;
568 for (
const auto& demandElement : myViewObjects.demandElements) {
569 if (!includeRoutes && (demandElement->getType() ==
GLO_ROUTE)) {
572 demandElements.push_back(demandElement);
575 myViewObjects.filterElements(demandElements);
582 std::vector<const GUIGlObject*> datadElements;
583 for (
const auto& datadElement : myViewObjects.edgeDatas) {
584 datadElements.push_back(datadElement);
586 for (
const auto& datadElement : myViewObjects.edgeRelDatas) {
587 datadElements.push_back(datadElement);
589 for (
const auto& datadElement : myViewObjects.TAZRelDatas) {
590 datadElements.push_back(datadElement);
592 myViewObjects.filterElements(datadElements);
599 std::vector<const GUIGlObject*> GUIGlObjects;
601 for (
const auto&
GUIGlObject : myViewObjects.GUIGlObjects) {
607 for (
const auto& ignoredType : ignoreFilter) {
608 auto it = GUIGlObjects.begin();
609 while (it != GUIGlObjects.end()) {
610 if ((*it)->getType() == ignoredType) {
611 it = GUIGlObjects.erase(it);
618 myViewObjects.filterElements(GUIGlObjects);
624 if (myViewObjects.GUIGlObjects.size() > 0) {
625 return myViewObjects.GUIGlObjects.front();
634 if (myViewObjects.attributeCarriers.size() > 0) {
635 return myViewObjects.attributeCarriers.front();
644 if (myViewObjects.networkElements.size() > 0) {
645 return myViewObjects.networkElements.front();
654 if (myViewObjects.additionals.size() > 0) {
655 return myViewObjects.additionals.front();
664 if (myViewObjects.demandElements.size() > 0) {
665 return myViewObjects.demandElements.front();
674 if (myViewObjects.genericDatas.size() > 0) {
675 return myViewObjects.genericDatas.front();
684 if (myViewObjects.junctions.size() > 0) {
685 return myViewObjects.junctions.front();
694 if (myViewObjects.edges.size() > 0) {
695 return myViewObjects.edges.front();
704 if (myViewObjects.lanes.size() > 0) {
705 return myViewObjects.lanes.front();
714 if (myViewObjects.lanes.size() > 0) {
715 for (
auto& lane : myViewObjects.lanes) {
716 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
717 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
729const std::vector<GNELane*>&
731 return myViewObjects.lanes;
737 if (myViewObjects.crossings.size() > 0) {
738 return myViewObjects.crossings.front();
747 if (myViewObjects.walkingAreas.size() > 0) {
748 return myViewObjects.walkingAreas.front();
757 if (myViewObjects.connections.size() > 0) {
758 return myViewObjects.connections.front();
767 if (myViewObjects.internalLanes.size() > 0) {
768 return myViewObjects.internalLanes.front();
777 if (myViewObjects.POIs.size() > 0) {
778 return myViewObjects.POIs.front();
787 if (myViewObjects.polys.size() > 0) {
788 return myViewObjects.polys.front();
797 if (myViewObjects.TAZs.size() > 0) {
798 return myViewObjects.TAZs.front();
807 if (myViewObjects.edgeDatas.size() > 0) {
808 return myViewObjects.edgeDatas.front();
817 if (myViewObjects.edgeRelDatas.size() > 0) {
818 return myViewObjects.edgeRelDatas.front();
827 if (myViewObjects.TAZRelDatas.size() > 0) {
828 return myViewObjects.TAZRelDatas.front();
835const std::vector<GUIGlObject*>&
837 return myViewObjects.GUIGlObjects;
841const std::vector<GNEAttributeCarrier*>&
843 return myViewObjects.attributeCarriers;
847const std::vector<GNEJunction*>&
849 return myViewObjects.junctions;
853const std::vector<GNEEdge*>&
855 return myViewObjects.edges;
859const std::vector<GNETAZ*>&
861 return myViewObjects.TAZs;
865const std::vector<GNEAdditional*>&
867 return myViewObjects.additionals;
871const std::vector<GNEDemandElement*>&
873 return myViewObjects.demandElements;
877const std::vector<const GNEJunction*>&
879 return myMergingJunctions;
888 GUIGlObjects.clear();
889 attributeCarriers.clear();
890 networkElements.clear();
892 demandElements.clear();
897 walkingAreas.clear();
899 internalLanes.clear();
903 genericDatas.clear();
905 edgeRelDatas.clear();
912 GUIGlObjects.reserve(size);
913 attributeCarriers.reserve(size);
914 networkElements.reserve(size);
915 additionals.reserve(size);
916 demandElements.reserve(size);
917 junctions.reserve(size);
920 crossings.reserve(size);
921 walkingAreas.reserve(size);
922 connections.reserve(size);
923 internalLanes.reserve(size);
927 genericDatas.reserve(size);
928 edgeDatas.reserve(size);
929 edgeRelDatas.reserve(size);
930 TAZRelDatas.reserve(size);
936 for (
const auto&
object : objects) {
938 auto itGlObjects = GUIGlObjects.begin();
939 while (itGlObjects != GUIGlObjects.end()) {
940 if (*itGlObjects ==
object) {
941 itGlObjects = GUIGlObjects.erase(itGlObjects);
947 auto itACs = attributeCarriers.begin();
948 while (itACs != attributeCarriers.end()) {
949 if ((*itACs)->getGUIGlObject() == object) {
950 itACs = attributeCarriers.erase(itACs);
956 auto itNetworkElements = networkElements.begin();
957 while (itNetworkElements != networkElements.end()) {
958 if ((*itNetworkElements)->getGUIGlObject() == object) {
959 itNetworkElements = networkElements.erase(itNetworkElements);
965 auto itAdditionals = additionals.begin();
966 while (itAdditionals != additionals.end()) {
967 if ((*itAdditionals)->getGUIGlObject() == object) {
968 itAdditionals = additionals.erase(itAdditionals);
974 auto itDemandElements = demandElements.begin();
975 while (itDemandElements != demandElements.end()) {
976 if ((*itDemandElements)->getGUIGlObject() == object) {
977 itDemandElements = demandElements.erase(itDemandElements);
983 auto itGenericDatas = genericDatas.begin();
984 while (itGenericDatas != genericDatas.end()) {
985 if ((*itGenericDatas)->getGUIGlObject() == object) {
986 itGenericDatas = genericDatas.erase(itGenericDatas);
992 auto itJunctions = junctions.begin();
993 while (itJunctions != junctions.end()) {
994 if ((*itJunctions)->getGUIGlObject() == object) {
995 itJunctions = junctions.erase(itJunctions);
1001 auto itEdges = edges.begin();
1002 while (itEdges != edges.end()) {
1003 if ((*itEdges)->getGUIGlObject() == object) {
1004 itEdges = edges.erase(itEdges);
1010 auto itLanes = lanes.begin();
1011 while (itLanes != lanes.end()) {
1012 if ((*itLanes)->getGUIGlObject() == object) {
1013 itLanes = lanes.erase(itLanes);
1019 auto itCrossings = crossings.begin();
1020 while (itCrossings != crossings.end()) {
1021 if ((*itCrossings)->getGUIGlObject() == object) {
1022 itCrossings = crossings.erase(itCrossings);
1028 auto itWalkingAreas = walkingAreas.begin();
1029 while (itWalkingAreas != walkingAreas.end()) {
1030 if ((*itWalkingAreas)->getGUIGlObject() == object) {
1031 itWalkingAreas = walkingAreas.erase(itWalkingAreas);
1037 auto itConnections = connections.begin();
1038 while (itConnections != connections.end()) {
1039 if ((*itConnections)->getGUIGlObject() == object) {
1040 itConnections = connections.erase(itConnections);
1046 auto itInternalLanes = internalLanes.begin();
1047 while (itInternalLanes != internalLanes.end()) {
1048 if ((*itInternalLanes)->getGUIGlObject() == object) {
1049 itInternalLanes = internalLanes.erase(itInternalLanes);
1055 auto itTAZs = TAZs.begin();
1056 while (itTAZs != TAZs.end()) {
1057 if ((*itTAZs)->getGUIGlObject() == object) {
1058 itTAZs = TAZs.erase(itTAZs);
1064 auto itPOIs = POIs.begin();
1065 while (itPOIs != POIs.end()) {
1066 if ((*itPOIs)->getGUIGlObject() == object) {
1067 itPOIs = POIs.erase(itPOIs);
1073 auto itPolys = polys.begin();
1074 while (itPolys != polys.end()) {
1075 if ((*itPolys)->getGUIGlObject() == object) {
1076 itPolys = polys.erase(itPolys);
1082 auto itEdgeDatas = edgeDatas.begin();
1083 while (itEdgeDatas != edgeDatas.end()) {
1084 if ((*itEdgeDatas)->getGUIGlObject() == object) {
1085 itEdgeDatas = edgeDatas.erase(itEdgeDatas);
1091 auto itEdgeRelDatas = edgeRelDatas.begin();
1092 while (itEdgeRelDatas != edgeRelDatas.end()) {
1093 if ((*itEdgeRelDatas)->getGUIGlObject() == object) {
1094 itEdgeRelDatas = edgeRelDatas.erase(itEdgeRelDatas);
1100 auto itTAZRelDatas = TAZRelDatas.begin();
1101 while (itTAZRelDatas != TAZRelDatas.end()) {
1102 if ((*itTAZRelDatas)->getGUIGlObject() == object) {
1103 itTAZRelDatas = TAZRelDatas.erase(itTAZRelDatas);
1115 switch (glObject->
getType()) {
1120 if (junction->isMarkedForDrawingFront()) {
1128 container.
junctions.push_back(junction);
1137 auto edge = myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(glObject->
getMicrosimID());
1139 if (edge->isMarkedForDrawingFront()) {
1141 container.
edges.insert(container.
edges.begin(), edge);
1147 container.
edges.push_back(edge);
1156 auto lane = myViewNet->getNet()->getAttributeCarriers()->retrieveLane(glObject);
1158 if (lane->isMarkedForDrawingFront()) {
1160 container.
lanes.insert(container.
lanes.begin(), lane);
1166 container.
lanes.push_back(lane);
1175 auto crossing = myViewNet->getNet()->getAttributeCarriers()->retrieveCrossing(glObject);
1177 if (crossing->isMarkedForDrawingFront()) {
1185 container.
crossings.push_back(crossing);
1194 auto walkingArea = myViewNet->getNet()->getAttributeCarriers()->retrieveWalkingArea(glObject);
1196 if (walkingArea->isMarkedForDrawingFront()) {
1213 auto connection = myViewNet->getNet()->getAttributeCarriers()->retrieveConnection(glObject);
1215 if (connection->isMarkedForDrawingFront()) {
1232 auto internalLane = myViewNet->getNet()->getAttributeCarriers()->retrieveInternalLane(glObject);
1234 if (internalLane->isMarkedForDrawingFront()) {
1256 auto additionalElement = myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject,
false);
1257 if (additionalElement) {
1259 if (additionalElement->isMarkedForDrawingFront()) {
1266 container.
additionals.push_back(additionalElement);
1279 auto POI =
dynamic_cast<GNEPOI*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1281 if (
POI->isMarkedForDrawingFront()) {
1283 container.
POIs.insert(container.
POIs.begin(),
POI);
1286 container.
POIs.push_back(
POI);
1290 auto poly =
dynamic_cast<GNEPoly*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1292 if (poly->isMarkedForDrawingFront()) {
1294 container.
polys.insert(container.
polys.begin(), poly);
1297 container.
polys.push_back(poly);
1308 auto TAZ =
dynamic_cast<GNETAZ*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1310 if (
TAZ->isMarkedForDrawingFront()) {
1312 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
1315 container.
TAZs.push_back(
TAZ);
1325 if (demandElement) {
1345 switch (glObject->
getType()) {
1348 auto edgeData =
dynamic_cast<GNEEdgeData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1350 if (edgeData->isMarkedForDrawingFront()) {
1358 container.
edgeDatas.push_back(edgeData);
1367 auto edgeRelData =
dynamic_cast<GNEEdgeRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1369 if (edgeRelData->isMarkedForDrawingFront()) {
1386 auto TAZRelData =
dynamic_cast<GNETAZRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1388 if (TAZRelData->isMarkedForDrawingFront()) {
1412 for (
const auto& glObjectLayer : objectsContainer) {
1413 for (
const auto& glObject : glObjectLayer.second) {
1415 updateNetworkElements(myViewObjects, glObject.object);
1416 updateAdditionalElements(myViewObjects, glObject.object);
1417 updateShapeElements(myViewObjects, glObject.object);
1418 updateTAZElements(myViewObjects, glObject.object);
1419 updateDemandElements(myViewObjects, glObject.object);
1420 updateGenericDataElements(myViewObjects, glObject.object);
1427 myViewNet(nullptr) {
1435 myEventInfo(nullptr) {
1441 myEventInfo = (FXEvent*) eventData;
1448 return (myEventInfo->state & SHIFTMASK) != 0;
1458 return (myEventInfo->state & CONTROLMASK) != 0;
1468 return (myEventInfo->state & ALTMASK) != 0;
1478 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1488 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1499 myViewNet(viewNet) {
1506 myRelativeClickedPosition = myViewNet->getPositionInformation();
1508 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1510 if (myViewNet->myViewObjectsSelector.getJunctionFront() && (myViewNet->myViewObjectsSelector.getJunctionFront() == editedElement)) {
1512 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveElement()->getMoveOperation();
1514 if (moveOperation) {
1515 myMoveOperation = moveOperation;
1520 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (myViewNet->myViewObjectsSelector.getLaneFront() == editedElement)) {
1522 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveElement()->getMoveOperation();
1524 if (moveOperation) {
1525 myMoveOperation = moveOperation;
1530 }
else if (myViewNet->myViewObjectsSelector.getCrossingFront() && (myViewNet->myViewObjectsSelector.getCrossingFront() == editedElement)) {
1532 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getCrossingFront()->getMoveElement()->getMoveOperation();
1534 if (moveOperation) {
1535 myMoveOperation = moveOperation;
1540 }
else if (myViewNet->myViewObjectsSelector.getConnectionFront() && (myViewNet->myViewObjectsSelector.getConnectionFront() == editedElement)) {
1542 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getConnectionFront()->getMoveElement()->getMoveOperation();
1544 if (moveOperation) {
1545 myMoveOperation = moveOperation;
1550 }
else if (myViewNet->myViewObjectsSelector.getWalkingAreaFront() && (myViewNet->myViewObjectsSelector.getWalkingAreaFront() == editedElement)) {
1563 myRelativeClickedPosition = myViewNet->getPositionInformation();
1565 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1567 if (myViewNet->myViewObjectsSelector.getPolyFront() && (markAC == myViewNet->myViewObjectsSelector.getPolyFront())) {
1569 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPolyFront()->getMoveElement()->getMoveOperation();
1571 if (moveOperation) {
1572 myMoveOperation = moveOperation;
1577 }
else if (myViewNet->myViewObjectsSelector.getPOIFront() && (markAC == myViewNet->myViewObjectsSelector.getPOIFront())) {
1579 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPOIFront()->getMoveElement()->getMoveOperation();
1581 if (moveOperation) {
1582 myMoveOperation = moveOperation;
1587 }
else if (myViewNet->myViewObjectsSelector.getAdditionalFront() && (markAC == myViewNet->myViewObjectsSelector.getAdditionalFront()) &&
1588 myViewNet->myViewObjectsSelector.getAdditionalFront()->getMoveElement()) {
1590 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getAdditionalFront()->getMoveElement()->getMoveOperation();
1592 if (moveOperation) {
1593 myMoveOperation = moveOperation;
1598 }
else if (myViewNet->myViewObjectsSelector.getJunctionFront() && (markAC == myViewNet->myViewObjectsSelector.getJunctionFront())) {
1600 if (myViewNet->myViewObjectsSelector.getEdgeFront() && (myViewNet->myViewObjectsSelector.getEdgeFront()->clickedOverGeometryPoint(myRelativeClickedPosition))) {
1602 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveElement()->getMoveOperation();
1604 if (moveOperation) {
1605 myMoveOperation = moveOperation;
1612 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveElement()->getMoveOperation();
1614 if (moveOperation) {
1615 myMoveOperation = moveOperation;
1621 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront() && (markAC == myViewNet->myViewObjectsSelector.getEdgeFront())) {
1623 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1625 myViewNet->myViewObjectsSelector.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1630 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveElement()->getMoveOperation();
1632 if (moveOperation) {
1633 myMoveOperation = moveOperation;
1639 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (markAC == myViewNet->myViewObjectsSelector.getLaneFront())) {
1641 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveElement()->getMoveOperation();
1643 if (moveOperation) {
1644 myMoveOperation = moveOperation;
1659 myRelativeClickedPosition = myViewNet->getPositionInformation();
1661 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1663 if (myViewNet->myViewObjectsSelector.getDemandElementFront() && (markAC == myViewNet->myViewObjectsSelector.getDemandElementFront() &&
1664 myViewNet->myViewObjectsSelector.getDemandElementFront()->
getMoveElement())) {
1666 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getDemandElementFront()->getMoveElement()->getMoveOperation();
1668 if (moveOperation) {
1669 myMoveOperation = moveOperation;
1683 if (myMoveOperation) {
1687 if (mouseLeftButtonPressed) {
1694 delete myMoveOperation;
1695 myMoveOperation =
nullptr;
1703 if (myMoveOperation) {
1708 delete myMoveOperation;
1709 myMoveOperation =
nullptr;
1716 return myMoveOperation !=
nullptr;
1722 if (myMoveOperation) {
1734 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElement.myRelativeClickedPosition);
1736 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1751 myMovingSelectedEdge(false),
1759 myClickedPosition = myViewNet->getPositionInformation();
1761 if (myViewNet->myViewObjectsSelector.getJunctionFront()) {
1762 calculateJunctionSelection();
1763 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront()) {
1764 calculateEdgeSelection(myViewNet->myViewObjectsSelector.getEdgeFront());
1766 myViewNet->updateViewNet();
1775 if (mouseLeftButtonPressed) {
1777 for (
const auto& moveOperation : myMoveOperations) {
1781 }
else if (myMoveOperations.size() > 0) {
1785 for (
const auto& moveOperation : myMoveOperations) {
1789 delete moveOperation;
1792 myViewNet->getUndoList()->end();
1794 myMoveOperations.clear();
1806 for (
const auto& moveOperation : myMoveOperations) {
1809 delete moveOperation;
1812 myViewNet->getUndoList()->end();
1814 myMoveOperations.clear();
1820 return (myMoveOperations.size() > 0);
1826 return myMovingSelectedEdge;
1832 myMovingSelectedEdge =
false;
1838 return myEdgeOffset;
1844 return myMoveOperations.size() > 0;
1852 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1854 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1869 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1871 for (
const auto& junction : selectedJunctions) {
1872 moveOperation = junction->getMoveElement()->getMoveOperation();
1873 if (moveOperation) {
1874 myMoveOperations.push_back(moveOperation);
1878 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1880 for (
const auto& edge : selectedEdges) {
1881 moveOperation = edge->getMoveElement()->getMoveOperation();
1882 if (moveOperation) {
1883 myMoveOperations.push_back(moveOperation);
1892 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1894 for (
const auto& junction : selectedJunctions) {
1895 GNEMoveOperation* moveOperation = junction->getMoveElement()->getMoveOperation();
1896 if (moveOperation) {
1897 myMoveOperations.push_back(moveOperation);
1901 myMovingSelectedEdge =
true;
1908 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1911 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1913 for (
const auto& edge : selectedEdges) {
1914 GNEMoveOperation* moveOperation = edge->getMoveElement()->getMoveOperation();
1916 if (moveOperation) {
1917 myMoveOperations.push_back(moveOperation);
1927 myViewNet(viewNet) {
1948 myViewNet(viewNet) {
1969 selectingUsingRectangle(false),
1970 startDrawing(false),
1971 myViewNet(viewNet) {
1977 selectingUsingRectangle =
true;
1978 selectionCorner1 = myViewNet->getPositionInformation();
1979 selectionCorner2 = selectionCorner1;
1986 startDrawing =
true;
1988 selectionCorner2 = myViewNet->getPositionInformation();
1990 myViewNet->setStatusBarText(
TL(
"Selection width:") +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1991 +
TL(
" height:") +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1992 +
TL(
" diagonal:") +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
1999 selectingUsingRectangle =
false;
2000 startDrawing =
false;
2002 myViewNet->setStatusBarText(
"");
2009 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
2010 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
2011 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
2014 rectangleBoundary.
add(selectionCorner1);
2015 rectangleBoundary.
add(selectionCorner2);
2017 processBoundarySelection(rectangleBoundary);
2022std::vector<GNEEdge*>
2025 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
2026 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
2027 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
2030 rectangleBoundary.
add(selectionCorner1);
2031 rectangleBoundary.
add(selectionCorner2);
2033 myViewNet->updateObjectsInShape(rectangleBoundary.
getShape(
false));
2035 return myViewNet->getViewObjectsSelector().getEdges();
2044 if (selectingUsingRectangle) {
2049 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
2051 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
2052 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
2053 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
2054 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
2063 const bool selEdges = myViewNet->myNetworkViewOptions.selectEdges();
2065 myViewNet->updateObjectsInShape(boundary.
getShape(
false));
2067 std::vector<GNEAttributeCarrier*> ACsFiltered;
2068 ACsFiltered.reserve(myViewNet->getViewObjectsSelector().getAttributeCarriers().size());
2069 for (
const auto& AC : myViewNet->getViewObjectsSelector().getAttributeCarriers()) {
2070 const auto tagProperty = AC->getTagProperty();
2071 if (tagProperty->isNetworkElement() || tagProperty->isAdditionalElement()) {
2073 if (((tagProperty->getTag() ==
SUMO_TAG_EDGE) && !selEdges) ||
2077 ACsFiltered.push_back(AC);
2079 }
else if (tagProperty->isDemandElement()) {
2080 ACsFiltered.push_back(AC);
2081 }
else if (tagProperty->isGenericData()) {
2082 ACsFiltered.push_back(AC);
2086 std::vector<GNEAttributeCarrier*> ACsFilteredUnlocked;
2087 ACsFilteredUnlocked.reserve(ACsFiltered.size());
2088 for (
const auto& AC : ACsFiltered) {
2090 if (!AC->getGUIGlObject()->isGLObjectLocked()) {
2091 ACsFilteredUnlocked.push_back(AC);
2095 std::vector<GNEAttributeCarrier*> ACToSelect;
2096 std::vector<GNEAttributeCarrier*> ACToUnselect;
2098 ACToSelect.reserve(ACsFilteredUnlocked.size());
2099 ACToUnselect.reserve(ACsFilteredUnlocked.size());
2101 const auto modificationMode = myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode();
2104 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
2106 for (
const auto& AC : selectedAC) {
2107 ACToUnselect.push_back(AC);
2111 for (
const auto& AC : ACsFilteredUnlocked) {
2112 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode()) {
2114 ACToUnselect.push_back(AC);
2117 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC) != ACToUnselect.end()) {
2118 ACToSelect.push_back(AC);
2122 ACToSelect.push_back(AC);
2128 std::vector<GNEEdge*> edgesToSelect;
2130 for (
const auto& AC : ACToSelect) {
2132 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
2136 for (
const auto& edge : edgesToSelect) {
2138 ACToSelect.push_back(edge->getFromJunction());
2139 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
2140 ACToSelect.push_back(connection);
2142 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
2143 ACToSelect.push_back(crossing);
2146 ACToSelect.push_back(edge->getToJunction());
2147 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
2148 ACToSelect.push_back(connection);
2150 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
2151 ACToSelect.push_back(crossing);
2156 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
2159 for (
const auto& AC : ACToUnselect) {
2162 for (
const auto& AC : ACToSelect) {
2163 if (AC->getTagProperty()->isSelectable()) {
2167 myViewNet->myUndoList->end();
2169 myViewNet->makeNonCurrent();
2177 myViewNet(viewNet) {
2187 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
2188 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
2189 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
2202 if (myTestingWidth > 0) {
2203 mainWindow->resize(myTestingWidth, myTestingHeight);
2207 const double size = myViewNet->p2m(32);
2208 Position center = myViewNet->screenPos2NetPos(8, 8);
2213 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2216 glVertex2d(0, -size);
2217 glVertex2d(size, -size);
2218 glVertex2d(size, 0);
2225 glScaled(0.7, 0.7, 0);
2226 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2229 glVertex2d(0, -size);
2230 glVertex2d(size, -size);
2231 glVertex2d(size, 0);
2238 glScaled(0.4, 0.4, 0);
2239 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2242 glVertex2d(0, -size);
2243 glVertex2d(size, -size);
2244 glVertex2d(size, 0);
2255 myViewNet(viewNet) {
2260 delete mySaveIndividualFilesPopup;
2267 auto gripSaveElements = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements;
2269 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2274 mySaveNeteditConfig->create();
2279 mySaveSumoConfig->create();
2284 mySaveNetwork->create();
2286 mySaveIndividualFilesPopup =
new FXPopup(gripSaveElements, POPUP_VERTICAL);
2287 mySaveIndividualFilesPopup->create();
2290 std::string(
"\t") +
TL(
"Save individual files") + std::string(
"\t") +
TL(
"Save individual files."),
2292 mySaveIndividualFiles->create();
2294 mySaveAdditionalElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2297 mySaveAdditionalElements->create();
2299 mySaveDemandElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2302 mySaveDemandElements->create();
2304 mySaveDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2307 mySaveDataElements->create();
2309 mySaveMeanDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2312 mySaveMeanDataElements->create();
2314 gripSaveElements->recalc();
2316 gripSaveElements->show();
2323 mySaveIndividualFiles->enable();
2325 mySaveIndividualFiles->disable();
2334 myViewNet(viewNet) {
2341 mySwitchButton =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().timeSwitch,
2342 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2343 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,
2345 mySwitchButton->create();
2364 mySwitchButton->setText(
"H");
2366 mySwitchButton->setText(
"S");
2379 myViewNet(viewNet) {
2382 if (neteditOptions.getBool(
"new")) {
2384 neteditOptions.resetWritable();
2385 neteditOptions.set(
"new",
"false");
2391 delete myNeteditViewsPopup;
2398 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2400 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2403 TL(
"Network") + std::string(
"\t") +
TL(
"Edit network elements") + std::string(
"\t") +
TL(
"Set mode for editing network elements. (F2)"),
2405 networkButton->create();
2408 TL(
"Demand") + std::string(
"\t") +
TL(
"Edit traffic demand elements") + std::string(
"\t") +
TL(
"Set mode for editing traffic demand. (F3)"),
2410 demandButton->create();
2413 TL(
"Data") + std::string(
"\t") +
TL(
"Edit data elements") + std::string(
"\t") +
TL(
"Set mode for editing data demand. (F4)"),
2415 dataButton->create();
2417 myNeteditViewsPopup =
new FXPopup(gripSupermodes, POPUP_VERTICAL);
2418 myNeteditViewsPopup->create();
2421 (std::string(
"\t") +
TL(
"Change netedit view") + std::string(
"\t") +
TL(
"Change netedit view.")).c_str(),
2423 myNeteditViewsButton->create();
2425 myDefaultViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2426 (std::string(
"Default\t") +
TL(
"Set default view") + std::string(
"\t") +
TL(
"Set default view.")).c_str(),
2428 myDefaultViewButton->create();
2430 myJuPedSimViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2431 (std::string(
"JuPedSim\t") +
TL(
"Set JuPedSim view") + std::string(
"\t") +
TL(
"Set JuPedSim view.")).c_str(),
2433 myJuPedSimViewButton->create();
2434 myNeteditViewsPopup->recalc();
2436 gripSupermodes->setWidth(353);
2438 gripSupermodes->show();
2444 if (!force && (supermode == currentSupermode)) {
2445 myViewNet->setStatusBarText(
TL(
"Mode already selected"));
2446 if (myViewNet->myCurrentFrame !=
nullptr) {
2447 myViewNet->myCurrentFrame->focusUpperElement();
2450 myViewNet->setStatusBarText(
"");
2452 myViewNet->abortOperation(
false);
2454 currentSupermode = supermode;
2458 networkButton->setChecked(
true);
2459 demandButton->setChecked(
false);
2460 dataButton->setChecked(
false);
2462 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
2464 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2466 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2468 setNetworkEditMode(networkEditMode,
true);
2471 networkButton->setChecked(
false);
2472 demandButton->setChecked(
true);
2473 dataButton->setChecked(
false);
2475 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2477 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2479 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2481 setDemandEditMode(demandEditMode,
true);
2483 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2485 if (!myViewNet->myNet->getDemandPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2487 myViewNet->myNet->getDemandPathManager()->getPathCalculator()->updatePathCalculator();
2489 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2493 networkButton->setChecked(
false);
2494 demandButton->setChecked(
false);
2495 dataButton->setChecked(
true);
2497 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2499 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2501 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2503 setDataEditMode(dataEditMode,
true);
2505 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2507 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2510 for (
const auto&
TAZ : myViewNet->getNet()->getAttributeCarriers()->getAdditionals().at(
SUMO_TAG_TAZ)) {
2511 TAZ.second->resetAdditionalContour();
2515 networkButton->update();
2516 demandButton->update();
2517 dataButton->update();
2519 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2526 if ((mode == networkEditMode) && !force) {
2527 myViewNet->setStatusBarText(
TL(
"Network mode already selected"));
2528 if (myViewNet->myCurrentFrame !=
nullptr) {
2529 myViewNet->myCurrentFrame->focusUpperElement();
2532 myViewNet->setStatusBarText(
TL(
"Save modifications in TLS before change mode"));
2533 myViewNet->myCurrentFrame->focusUpperElement();
2535 myViewNet->setStatusBarText(
"");
2536 myViewNet->abortOperation(
false);
2538 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2540 networkEditMode = mode;
2561 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2567 myViewNet->updateCursor();
2569 myViewNet->updateNetworkModeSpecificControls();
2576 if ((mode == demandEditMode) && !force) {
2577 myViewNet->setStatusBarText(
TL(
"Demand mode already selected"));
2578 if (myViewNet->myCurrentFrame !=
nullptr) {
2579 myViewNet->myCurrentFrame->focusUpperElement();
2582 myViewNet->setStatusBarText(
"");
2583 myViewNet->abortOperation(
false);
2585 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2587 demandEditMode = mode;
2602 myViewNet->updateCursor();
2604 myViewNet->updateDemandModeSpecificControls();
2611 if ((mode == dataEditMode) && !force) {
2612 myViewNet->setStatusBarText(
TL(
"Data mode already selected"));
2613 if (myViewNet->myCurrentFrame !=
nullptr) {
2614 myViewNet->myCurrentFrame->focusUpperElement();
2617 myViewNet->setStatusBarText(
"");
2618 myViewNet->abortOperation(
false);
2620 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2622 dataEditMode = mode;
2635 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2636 dataSet.second->updateAttributeColors();
2639 myViewNet->updateCursor();
2641 myViewNet->updateDataModeSpecificControls();
2667 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2669 auto& fileMenuCommands = myViewNet->getViewParent()->getGNEAppWindows()->getFileMenuCommands();
2673 gripSupermodes->setWidth(353);
2675 fileMenuCommands.setDefaultView();
2678 gripSupermodes->setWidth(250);
2680 fileMenuCommands.setJuPedSimView();
2683 myViewNet->viewUpdated();
2703 myViewNet(viewNet) {
2710 auto gripModes = myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes;
2712 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2715 (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)")),
2718 menuCheckToggleGrid->setChecked(
false);
2719 menuCheckToggleGrid->create();
2721 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2722 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2725 menuCheckToggleDrawJunctionShape->setChecked(
false);
2726 menuCheckToggleDrawJunctionShape->create();
2729 (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.")),
2732 menuCheckDrawSpreadVehicles->setChecked(
false);
2733 menuCheckDrawSpreadVehicles->create();
2736 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2739 menuCheckShowDemandElements->setChecked(
false);
2740 menuCheckShowDemandElements->create();
2743 (std::string(
"\t") +
TL(
"Clicks target lanes") + std::string(
"\t") +
TL(
"Toggle whether clicking should inspect/select/delete lanes instead of edges.")),
2746 menuCheckSelectEdges->create();
2749 (std::string(
"\t") +
TL(
"Show connections over junctions") + std::string(
"\t") +
TL(
"Toggle show connections over junctions.")),
2752 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2753 menuCheckShowConnections->create();
2756 (std::string(
"\t") +
TL(
"Hide connections") + std::string(
"\t") +
TL(
"Toggle hide connections.")),
2759 menuCheckHideConnections->setChecked(
false);
2760 menuCheckHideConnections->create();
2762 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2763 (std::string(
"\t") +
TL(
"Show additional sub-elements") + std::string(
"\t") +
TL(
"Toggle show additional sub-elements.")),
2766 menuCheckShowAdditionalSubElements->setChecked(
false);
2767 menuCheckShowAdditionalSubElements->create();
2770 (std::string(
"\t") +
TL(
"Show TAZ elements") + std::string(
"\t") +
TL(
"Toggle show TAZ elements.")),
2773 menuCheckShowTAZElements->setChecked(
false);
2774 menuCheckShowTAZElements->create();
2777 (std::string(
"\t") +
TL(
"Automatic select junctions") + std::string(
"\t") +
TL(
"Toggle whether selecting multiple edges should automatically select their junctions.")),
2780 menuCheckExtendSelection->setChecked(
true);
2781 menuCheckExtendSelection->create();
2784 (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.")),
2787 menuCheckChangeAllPhases->setChecked(
false);
2788 menuCheckChangeAllPhases->create();
2791 (std::string(
"\t") +
TL(
"Automatic merging junction") + std::string(
"\t") +
TL(
"Toggle ask for confirmation before merging junction.")),
2794 menuCheckMergeAutomatically->create();
2797 (std::string(
"\t") +
TL(
"Edge chain mode") + std::string(
"\t") +
TL(
"Create consecutive edges with a single click (hit ESC to cancel chain).")),
2800 menuCheckChainEdges->setChecked(
false);
2801 menuCheckChainEdges->create();
2804 (std::string(
"\t") +
TL(
"Edge opposite direction") + std::string(
"\t") +
TL(
"Automatically create an edge in the opposite direction.")),
2807 menuCheckAutoOppositeEdge->setChecked(
false);
2808 menuCheckAutoOppositeEdge->create();
2811 (std::string(
"\t") +
TL(
"Move elevation") + std::string(
"\t") +
TL(
"Apply mouse movement to elevation instead of x,y position.")),
2814 menuCheckMoveElevation->setChecked(
false);
2815 menuCheckMoveElevation->create();
2818 (std::string(
"\t") +
TL(
"Show bubbles") + std::string(
"\t") +
TL(
"Toggle show bubbles over junctions shapes.")),
2821 menuCheckShowJunctionBubble->setChecked(
false);
2822 menuCheckShowJunctionBubble->create();
2825 (std::string(
"\t") +
TL(
"Show polygon symbols") + std::string(
"\t") +
TL(
"Show polygon symbols.")),
2828 menuCheckShowPolygonSymbols->setChecked(
true);
2829 menuCheckShowPolygonSymbols->create();
2832 gripModes->recalc();
2838 menuCheckToggleGrid->hide();
2839 menuCheckToggleDrawJunctionShape->hide();
2840 menuCheckDrawSpreadVehicles->hide();
2841 menuCheckShowDemandElements->hide();
2842 menuCheckSelectEdges->hide();
2843 menuCheckShowConnections->hide();
2844 menuCheckHideConnections->hide();
2845 menuCheckShowAdditionalSubElements->hide();
2846 menuCheckShowTAZElements->hide();
2847 menuCheckExtendSelection->hide();
2848 menuCheckChangeAllPhases->hide();
2849 menuCheckMergeAutomatically->hide();
2850 menuCheckShowJunctionBubble->hide();
2851 menuCheckMoveElevation->hide();
2852 menuCheckChainEdges->hide();
2853 menuCheckAutoOppositeEdge->hide();
2854 menuCheckShowPolygonSymbols->hide();
2861 if (menuCheckToggleGrid->shown()) {
2862 commands.push_back(menuCheckToggleGrid);
2864 if (menuCheckToggleDrawJunctionShape->shown()) {
2865 commands.push_back(menuCheckToggleDrawJunctionShape);
2867 if (menuCheckDrawSpreadVehicles->shown()) {
2868 commands.push_back(menuCheckDrawSpreadVehicles);
2870 if (menuCheckShowDemandElements->shown()) {
2871 commands.push_back(menuCheckShowDemandElements);
2873 if (menuCheckSelectEdges->shown()) {
2874 commands.push_back(menuCheckSelectEdges);
2876 if (menuCheckShowConnections->shown()) {
2877 commands.push_back(menuCheckShowConnections);
2879 if (menuCheckHideConnections->shown()) {
2880 commands.push_back(menuCheckHideConnections);
2882 if (menuCheckShowAdditionalSubElements->shown()) {
2883 commands.push_back(menuCheckShowAdditionalSubElements);
2885 if (menuCheckShowTAZElements->shown()) {
2886 commands.push_back(menuCheckShowTAZElements);
2888 if (menuCheckExtendSelection->shown()) {
2889 commands.push_back(menuCheckExtendSelection);
2891 if (menuCheckChangeAllPhases->shown()) {
2892 commands.push_back(menuCheckChangeAllPhases);
2894 if (menuCheckMergeAutomatically->shown()) {
2895 commands.push_back(menuCheckMergeAutomatically);
2897 if (menuCheckChainEdges->shown()) {
2898 commands.push_back(menuCheckChainEdges);
2900 if (menuCheckAutoOppositeEdge->shown()) {
2901 commands.push_back(menuCheckAutoOppositeEdge);
2903 if (menuCheckMoveElevation->shown()) {
2904 commands.push_back(menuCheckMoveElevation);
2906 if (menuCheckShowJunctionBubble->shown()) {
2907 commands.push_back(menuCheckShowJunctionBubble);
2909 if (menuCheckShowPolygonSymbols->shown()) {
2910 commands.push_back(menuCheckShowPolygonSymbols);
2917 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2923 if (menuCheckShowDemandElements->shown()) {
2924 return (menuCheckShowDemandElements->amChecked() == TRUE);
2934 if (menuCheckSelectEdges->shown()) {
2935 return (menuCheckSelectEdges->amChecked() != TRUE);
2945 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2949 return (menuCheckHideConnections->amChecked() == FALSE);
2952 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2955 return (myViewNet->getVisualisationSettings().showLane2Lane);
2962 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2964 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2967 return menuCheckShowAdditionalSubElements->amChecked();
2974 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2976 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2979 return menuCheckShowTAZElements->amChecked();
2986 if (menuCheckMoveElevation->shown()) {
2987 return (menuCheckMoveElevation->amChecked() == TRUE);
2996 if (menuCheckShowPolygonSymbols->shown()) {
2997 return (menuCheckShowPolygonSymbols->amChecked() == TRUE);
3008 myViewNet(viewNet) {
3015 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3017 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3020 (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)")),
3023 menuCheckToggleGrid->setChecked(
false);
3024 menuCheckToggleGrid->create();
3026 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3027 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
3030 menuCheckToggleDrawJunctionShape->setChecked(
false);
3031 menuCheckToggleDrawJunctionShape->create();
3034 (std::string(
"\t") +
TL(
"Draw vehicles spread/depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
3037 menuCheckDrawSpreadVehicles->setChecked(
false);
3038 menuCheckDrawSpreadVehicles->create();
3041 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
3044 menuCheckHideShapes->setChecked(
false);
3045 menuCheckHideShapes->create();
3048 (std::string(
"\t") +
TL(
"Show all trips") + std::string(
"\t") +
TL(
"Toggle show all trips (requires updated demand - F5).")),
3051 menuCheckShowAllTrips->setChecked(
false);
3052 menuCheckShowAllTrips->create();
3055 (std::string(
"\t") +
TL(
"Show all person plans") + std::string(
"\t") +
TL(
"Toggle show all person plans.")),
3058 menuCheckShowAllPersonPlans->setChecked(
false);
3059 menuCheckShowAllPersonPlans->create();
3062 (std::string(
"\t") +
TL(
"Lock selected person") + std::string(
"\t") +
TL(
"Toggle lock selected person.")),
3065 menuCheckLockPerson->setChecked(
false);
3066 menuCheckLockPerson->create();
3068 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3069 (std::string(
"\t") +
TL(
"Show all containers plans") + std::string(
"\t") +
TL(
"Toggle show all container plans.")),
3072 menuCheckShowAllContainerPlans->setChecked(
false);
3073 menuCheckShowAllContainerPlans->create();
3076 (std::string(
"\t") +
TL(
"Lock selected container") + std::string(
"\t") +
TL(
"Toggle lock selected container.")),
3079 menuCheckLockContainer->setChecked(
false);
3080 menuCheckLockContainer->create();
3082 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3083 (std::string(
"\t") +
TL(
"Show non-inspected demand elements") + std::string(
"\t") +
TL(
"Toggle show non-inspected demand elements.")),
3086 menuCheckHideNonInspectedDemandElements->setChecked(
false);
3087 menuCheckHideNonInspectedDemandElements->create();
3089 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3090 (std::string(
"\t") +
TL(
"Show number of overlapped routes") + std::string(
"\t") +
TL(
"Toggle show number of overlapped routes.")),
3093 menuCheckShowOverlappedRoutes->setChecked(
false);
3094 menuCheckShowOverlappedRoutes->create();
3097 gripModes->recalc();
3103 menuCheckToggleGrid->hide();
3104 menuCheckToggleDrawJunctionShape->hide();
3105 menuCheckDrawSpreadVehicles->hide();
3106 menuCheckHideShapes->hide();
3107 menuCheckShowAllTrips->hide();
3108 menuCheckShowAllPersonPlans->hide();
3109 menuCheckLockPerson->hide();
3110 menuCheckShowAllContainerPlans->hide();
3111 menuCheckLockContainer->hide();
3112 menuCheckHideNonInspectedDemandElements->hide();
3113 menuCheckShowOverlappedRoutes->hide();
3120 if (menuCheckToggleGrid->shown()) {
3121 commands.push_back(menuCheckToggleGrid);
3123 if (menuCheckToggleDrawJunctionShape->shown()) {
3124 commands.push_back(menuCheckToggleDrawJunctionShape);
3126 if (menuCheckDrawSpreadVehicles->shown()) {
3127 commands.push_back(menuCheckDrawSpreadVehicles);
3129 if (menuCheckHideShapes->shown()) {
3130 commands.push_back(menuCheckHideShapes);
3132 if (menuCheckShowAllTrips->shown()) {
3133 commands.push_back(menuCheckShowAllTrips);
3135 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
3136 commands.push_back(menuCheckShowAllPersonPlans);
3138 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
3139 commands.push_back(menuCheckLockPerson);
3141 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
3142 commands.push_back(menuCheckShowAllContainerPlans);
3144 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
3145 commands.push_back(menuCheckLockContainer);
3147 if (menuCheckHideNonInspectedDemandElements->shown()) {
3148 commands.push_back(menuCheckHideNonInspectedDemandElements);
3150 if (menuCheckShowOverlappedRoutes->shown()) {
3151 commands.push_back(menuCheckShowOverlappedRoutes);
3158 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
3164 if (menuCheckHideNonInspectedDemandElements->shown()) {
3165 const auto& inspectedElements = myViewNet->getInspectedElements();
3167 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (inspectedElements.getFirstAC() ==
nullptr)) {
3170 }
else if (inspectedElements.getFirstAC() && inspectedElements.getFirstAC()->getTagProperty()->isDemandElement()) {
3171 if (inspectedElements.isACInspected(demandElement)) {
3177 if (inspectedElements.isACInspected(demandElementChild)) {
3183 if (inspectedElements.isACInspected(demandElementParent)) {
3203 if (menuCheckHideShapes->shown()) {
3204 return (menuCheckHideShapes->amChecked() == FALSE);
3213 return (menuCheckShowAllTrips->amChecked() == TRUE);
3219 if (menuCheckShowAllPersonPlans->isEnabled()) {
3220 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
3229 myLockedPerson = person;
3235 myLockedPerson =
nullptr;
3241 return myLockedPerson;
3247 if (menuCheckShowAllContainerPlans->isEnabled()) {
3248 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
3257 myLockedContainer = container;
3263 myLockedContainer =
nullptr;
3269 if (menuCheckShowOverlappedRoutes->isEnabled()) {
3270 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
3279 return myLockedContainer;
3287 myViewNet(viewNet) {
3294 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3296 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3298 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3299 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
3302 menuCheckToggleDrawJunctionShape->setChecked(
false);
3303 menuCheckToggleDrawJunctionShape->create();
3306 (std::string(
"\t") +
TL(
"Show additionals") + std::string(
"\t") +
TL(
"Toggle show additionals.")),
3309 menuCheckShowAdditionals->create();
3312 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
3315 menuCheckShowShapes->create();
3318 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
3321 menuCheckShowDemandElements->create();
3324 (std::string(
"\t") +
TL(
"Draw TAZREL drawing mode") + std::string(
"\t") +
TL(
"Toggle draw TAZREL drawing mode.")),
3327 menuCheckToggleTAZRelDrawing->create();
3330 (std::string(
"\t") +
TL(
"Toggle draw TAZ fill") + std::string(
"\t") +
TL(
"Toggle draw TAZ fill")),
3333 menuCheckToggleTAZDrawFill->create();
3335 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3336 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only from") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only from")),
3339 menuCheckToggleTAZRelOnlyFrom->create();
3342 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only to") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only to")),
3345 menuCheckToggleTAZRelOnlyTo->create();
3348 gripModes->recalc();
3354 menuCheckToggleDrawJunctionShape->hide();
3355 menuCheckShowAdditionals->hide();
3356 menuCheckShowShapes->hide();
3357 menuCheckShowDemandElements->hide();
3358 menuCheckToggleTAZRelDrawing->hide();
3359 menuCheckToggleTAZDrawFill->hide();
3360 menuCheckToggleTAZRelOnlyFrom->hide();
3361 menuCheckToggleTAZRelOnlyTo->hide();
3368 if (menuCheckToggleDrawJunctionShape->shown()) {
3369 commands.push_back(menuCheckToggleDrawJunctionShape);
3371 if (menuCheckShowAdditionals->shown()) {
3372 commands.push_back(menuCheckShowAdditionals);
3374 if (menuCheckShowShapes->shown()) {
3375 commands.push_back(menuCheckShowShapes);
3377 if (menuCheckShowDemandElements->shown()) {
3378 commands.push_back(menuCheckShowDemandElements);
3380 if (menuCheckToggleTAZRelDrawing->shown()) {
3381 commands.push_back(menuCheckToggleTAZRelDrawing);
3383 if (menuCheckToggleTAZDrawFill->shown()) {
3384 commands.push_back(menuCheckToggleTAZDrawFill);
3386 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3387 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
3389 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3390 commands.push_back(menuCheckToggleTAZRelOnlyTo);
3397 if (menuCheckShowAdditionals->shown()) {
3398 return (menuCheckShowAdditionals->amChecked() == TRUE);
3407 if (menuCheckShowShapes->shown()) {
3408 return (menuCheckShowShapes->amChecked() == TRUE);
3417 if (menuCheckShowDemandElements->shown()) {
3418 return (menuCheckShowDemandElements->amChecked() == TRUE);
3427 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
3433 if (menuCheckToggleTAZDrawFill->shown()) {
3434 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
3443 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3444 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
3453 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3454 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3465 myViewNet(viewNet) {
3471 const auto staticTooltip = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3473 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3475 genericDataLabel->create();
3477 myGenericDataTypesComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3480 myGenericDataTypesComboBox->create();
3482 myGenericDataTypesComboBox->appendIconItem(
"<all>");
3487 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3489 dataSetLabel->create();
3491 myDataSetsComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3494 myDataSetsComboBox->create();
3496 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3498 myIntervalCheckBox->create();
3500 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3502 myBeginTextField->create();
3504 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3506 myEndTextField->create();
3508 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3510 parameterLabel->create();
3512 myParametersComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3515 myParametersComboBox->create();
3517 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3524 updateIntervalBar();
3526 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3533 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3540 if (myUpdateInterval && myViewNet->getNet()) {
3547 myParameters.clear();
3549 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3551 myDataSets.push_back(dataSet.second->getID());
3553 for (
const auto& interval : dataSet.second->getDataIntervalChildren()) {
3556 begin = interval.first;
3559 end = interval.first;
3562 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3564 for (
const auto& parameter : genericData->getParametersMap()) {
3565 myParameters.insert(parameter.first);
3571 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3573 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3574 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3576 const std::string previousParameter = myParametersComboBox->getText().text();
3578 myDataSetsComboBox->clearItems();
3579 myParametersComboBox->clearItems();
3581 myDataSetsComboBox->appendIconItem(
"<all>");
3582 myParametersComboBox->appendIconItem(
"<all>");
3584 for (
const auto& dataSet : myDataSets) {
3585 myDataSetsComboBox->appendIconItem(dataSet.c_str());
3588 myBeginTextField->setText(
toString(begin).c_str());
3589 myEndTextField->setText(
toString(end).c_str());
3591 for (
const auto& parameter : myParameters) {
3592 myParametersComboBox->appendIconItem(parameter.c_str());
3595 myDataSetsComboBox->setCurrentItem(0, FALSE);
3596 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3597 if (myDataSetsComboBox->getItemText(i) == previousDataSet) {
3598 myDataSetsComboBox->setCurrentItem(i);
3602 if (myIntervalCheckBox->getCheck() == TRUE) {
3603 myBeginTextField->setText(previousBegin.c_str());
3604 myEndTextField->setText(previousEnd.c_str());
3607 myParametersComboBox->setCurrentItem(0, FALSE);
3608 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3609 if (myParametersComboBox->getItemText(i) == previousParameter) {
3610 myParametersComboBox->setCurrentItem(i);
3617 enableIntervalBar();
3619 disableIntervalBar();
3622 myUpdateInterval =
false;
3629 myUpdateInterval =
true;
3635 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() ==
GUIDesignTextColorBlack)) {
3650 if (!myDataSetsComboBox->isEnabled() ||
3651 (myDataSetsComboBox->getCurrentItem() == 0) ||
3662 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3665 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3672 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3675 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3682 if (!myParametersComboBox->isEnabled() ||
3683 (myParametersComboBox->getCurrentItem() == 0) ||
3687 return myParametersComboBox->getText().text();
3694 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3703 myViewNet->updateViewNet();
3710 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3716 myViewNet->updateViewNet();
3723 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3724 myBeginTextField->enable();
3725 myEndTextField->enable();
3727 myBeginTextField->disable();
3728 myEndTextField->disable();
3731 myViewNet->updateViewNet();
3737 if (myBeginTextField->getText().empty()) {
3738 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3740 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3746 myViewNet->updateViewNet();
3752 if (myEndTextField->getText().empty()) {
3753 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3755 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3761 myViewNet->updateViewNet();
3768 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3774 myViewNet->updateViewNet();
3782 myGenericDataTypesComboBox->enable();
3783 myDataSetsComboBox->enable();
3784 myIntervalCheckBox->enable();
3785 if (myIntervalCheckBox->getCheck() == TRUE) {
3786 myBeginTextField->enable();
3787 myEndTextField->enable();
3789 myBeginTextField->disable();
3790 myEndTextField->disable();
3792 myParametersComboBox->enable();
3799 myGenericDataTypesComboBox->disable();
3800 myDataSetsComboBox->disable();
3801 myIntervalCheckBox->disable();
3802 myBeginTextField->disable();
3803 myEndTextField->disable();
3804 myParametersComboBox->disable();
3812 myViewNet(viewNet) {
3819 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3821 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3824 std::string(
"\t") +
TL(
"Inspect mode") + std::string(
"\t") +
TL(
"Mode to inspect elements and change their attributes. (I)"),
3826 inspectButton->create();
3829 std::string(
"\t") +
TL(
"Delete mode") + std::string(
"\t") +
TL(
"Mode for deleting elements. (D)"),
3831 deleteButton->create();
3834 std::string(
"\t") +
TL(
"Select mode") + std::string(
"\t") +
TL(
"Mode for selecting elements. (S)"),
3836 selectButton->create();
3838 gripModes->recalc();
3844 inspectButton->show();
3845 deleteButton->show();
3846 selectButton->show();
3852 inspectButton->hide();
3853 deleteButton->hide();
3854 selectButton->hide();
3860 inspectButton->setChecked(
false);
3861 deleteButton->setChecked(
false);
3862 selectButton->setChecked(
false);
3868 inspectButton->update();
3869 deleteButton->update();
3870 selectButton->update();
3878 myViewNet(viewNet) {
3885 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3887 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3890 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3892 moveNetworkElementsButton->create();
3895 std::string(
"\t") +
TL(
"Edge mode") + std::string(
"\t") +
TL(
"Mode for creating junctions and edges. (E)"),
3897 createEdgeButton->create();
3900 std::string(
"\t") +
TL(
"Traffic light mode") + std::string(
"\t") +
TL(
"Mode for editing traffic lights over junctions. (T)"),
3902 trafficLightButton->create();
3905 std::string(
"\t") +
TL(
"Connection mode") + std::string(
"\t") +
TL(
"Mode for editing connections between lanes. (C)"),
3907 connectionButton->create();
3910 std::string(
"\t") +
TL(
"Prohibition mode") + std::string(
"\t") +
TL(
"Mode for editing connection prohibitions. (H)"),
3912 prohibitionButton->create();
3915 std::string(
"\t") +
TL(
"Crossing mode") + std::string(
"\t") +
TL(
"Mode for creating crossings between edges. (R)"),
3917 crossingButton->create();
3920 std::string(
"\t") +
TL(
"Additional mode") + std::string(
"\t") +
TL(
"Mode for creating additional elements. (A)"),
3922 additionalButton->create();
3925 std::string(
"\t") +
TL(
"Wire mode") + std::string(
"\t") +
TL(
"Mode for editing overhead wires. (W)"),
3927 wireButton->create();
3930 std::string(
"\t") +
TL(
"TAZ mode") + std::string(
"\t") +
TL(
"Mode for creating Traffic Assignment Zones. (Z)"),
3932 TAZButton->create();
3935 std::string(
"\t") +
TL(
"Polygon mode") + std::string(
"\t") +
TL(
"Mode for creating polygons and POIs. (P)"),
3937 shapeButton->create();
3940 std::string(
"\t") +
TL(
"Decal mode") + std::string(
"\t") +
TL(
"Mode for editing decals. (U)"),
3942 decalButton->create();
3944 gripModes->recalc();
3951 if (myViewNet->getEditModes().isJuPedSimView()) {
3952 moveNetworkElementsButton->show();
3953 createEdgeButton->show();
3954 connectionButton->hide();
3955 trafficLightButton->hide();
3956 additionalButton->show();
3957 crossingButton->show();
3959 shapeButton->show();
3960 prohibitionButton->hide();
3962 decalButton->hide();
3964 moveNetworkElementsButton->show();
3965 createEdgeButton->show();
3966 connectionButton->show();
3967 trafficLightButton->show();
3968 additionalButton->show();
3969 crossingButton->show();
3971 shapeButton->show();
3972 prohibitionButton->show();
3974 decalButton->show();
3981 moveNetworkElementsButton->hide();
3982 createEdgeButton->hide();
3983 connectionButton->hide();
3984 trafficLightButton->hide();
3985 additionalButton->hide();
3986 crossingButton->hide();
3988 shapeButton->hide();
3989 prohibitionButton->hide();
3991 decalButton->hide();
3997 moveNetworkElementsButton->setChecked(
false);
3998 createEdgeButton->setChecked(
false);
3999 connectionButton->setChecked(
false);
4000 trafficLightButton->setChecked(
false);
4001 additionalButton->setChecked(
false);
4002 crossingButton->setChecked(
false);
4003 TAZButton->setChecked(
false);
4004 shapeButton->setChecked(
false);
4005 prohibitionButton->setChecked(
false);
4006 wireButton->setChecked(
false);
4007 decalButton->setChecked(
false);
4013 moveNetworkElementsButton->update();
4014 createEdgeButton->update();
4015 connectionButton->update();
4016 trafficLightButton->update();
4017 additionalButton->update();
4018 crossingButton->update();
4019 TAZButton->update();
4020 shapeButton->update();
4021 prohibitionButton->update();
4022 wireButton->update();
4023 decalButton->update();
4031 myViewNet(viewNet) {
4038 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
4040 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
4043 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
4045 moveDemandElementsButton->create();
4048 std::string(
"\t") +
TL(
"Route mode") + std::string(
"\t") +
TL(
"Mode for creating routes. (R)"),
4050 routeButton->create();
4053 std::string(
"\t") +
TL(
"Route distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing rout distributions. (W)"),
4055 routeDistributionButton->create();
4058 std::string(
"\t") +
TL(
"Vehicle mode") + std::string(
"\t") +
TL(
"Mode for creating vehicles. (V)"),
4060 vehicleButton->create();
4063 std::string(
"\t") +
TL(
"Type mode") + std::string(
"\t") +
TL(
"Mode for creating types (of vehicles, persons and containers). (T)"),
4065 typeButton->create();
4068 std::string(
"\t") +
TL(
"Type distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing type distribution. (U)"),
4070 typeDistributionButton->create();
4073 std::string(
"\t") +
TL(
"Stop mode") + std::string(
"\t") +
TL(
"Mode for creating stops. (A)"),
4075 stopButton->create();
4078 std::string(
"\t") +
TL(
"Person mode") + std::string(
"\t") +
TL(
"Mode for creating persons. (P)"),
4080 personButton->create();
4083 std::string(
"\t") +
TL(
"Person plan mode") + std::string(
"\t") +
TL(
"Mode for creating person plans. (L)"),
4085 personPlanButton->create();
4088 std::string(
"\t") +
TL(
"Container mode") + std::string(
"\t") +
TL(
"Mode for creating containers. (C)"),
4090 containerButton->create();
4093 std::string(
"\t") +
TL(
"Container plan mode") + std::string(
"\t") +
TL(
"Mode for creating container plans. (H)"),
4095 containerPlanButton->create();
4097 gripModes->recalc();
4103 if (myViewNet->getEditModes().isJuPedSimView()) {
4104 moveDemandElementsButton->hide();
4105 routeButton->show();
4106 routeDistributionButton->show();
4107 vehicleButton->hide();
4109 typeDistributionButton->show();
4111 personButton->show();
4112 personPlanButton->show();
4113 containerButton->hide();
4114 containerPlanButton->hide();
4116 moveDemandElementsButton->show();
4117 routeButton->show();
4118 routeDistributionButton->show();
4119 vehicleButton->show();
4121 typeDistributionButton->show();
4123 personButton->show();
4124 personPlanButton->show();
4125 containerButton->show();
4126 containerPlanButton->show();
4133 moveDemandElementsButton->hide();
4134 routeButton->hide();
4135 routeDistributionButton->hide();
4136 vehicleButton->hide();
4138 typeDistributionButton->hide();
4140 personButton->hide();
4141 personPlanButton->hide();
4142 containerButton->hide();
4143 containerPlanButton->hide();
4149 moveDemandElementsButton->setChecked(
false);
4150 routeButton->setChecked(
false);
4151 routeDistributionButton->setChecked(
false);
4152 vehicleButton->setChecked(
false);
4153 typeButton->setChecked(
false);
4154 typeDistributionButton->setChecked(
false);
4155 stopButton->setChecked(
false);
4156 personButton->setChecked(
false);
4157 personPlanButton->setChecked(
false);
4158 containerButton->setChecked(
false);
4159 containerPlanButton->setChecked(
false);
4165 moveDemandElementsButton->update();
4166 routeButton->update();
4167 routeDistributionButton->update();
4168 vehicleButton->update();
4169 typeButton->update();
4170 typeDistributionButton->update();
4171 stopButton->update();
4172 personButton->update();
4173 personPlanButton->update();
4174 containerButton->update();
4175 containerPlanButton->update();
4183 myViewNet(viewNet) {
4190 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
4192 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
4195 std::string(
"\t") +
TL(
"Edge data mode") + std::string(
"\t") +
TL(
"Mode for creating edge datas. (E)"),
4197 edgeDataButton->create();
4200 std::string(
"\t") +
TL(
"Edge relation data mode") + std::string(
"\t") +
TL(
"Mode for creating edge relation datas. (R)"),
4202 edgeRelDataButton->create();
4205 std::string(
"\t") +
TL(
"TAZ relation data mode") + std::string(
"\t") +
TL(
"Mode for creating TAZ relation datas. (Z)"),
4207 TAZRelDataButton->create();
4210 std::string(
"\t") +
TL(
"MeanData mode") + std::string(
"\t") +
TL(
"Mode for MeanData elements. (M)"),
4212 meanDataButton->create();
4214 gripModes->recalc();
4220 edgeDataButton->show();
4221 edgeRelDataButton->show();
4222 TAZRelDataButton->show();
4223 meanDataButton->show();
4229 edgeDataButton->hide();
4230 edgeRelDataButton->hide();
4231 TAZRelDataButton->hide();
4232 meanDataButton->hide();
4238 edgeDataButton->setChecked(
false);
4239 edgeRelDataButton->setChecked(
false);
4240 TAZRelDataButton->setChecked(
false);
4241 meanDataButton->setChecked(
false);
4247 edgeDataButton->update();
4248 edgeRelDataButton->update();
4249 TAZRelDataButton->update();
4250 meanDataButton->update();
4265 if (element && (myEditedNetworkElement ==
nullptr)) {
4267 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
4271 myEditedNetworkElement = element;
4275 myViewNet->updateViewNet();
4283 if (myEditedNetworkElement !=
nullptr) {
4285 myEditedNetworkElement->setShapeEdited(
false);
4287 myEditedNetworkElement =
nullptr;
4289 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
4290 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
4299 if (myEditedNetworkElement !=
nullptr) {
4301 stopEditCustomShape();
4308 return myEditedNetworkElement;
4318 const double size,
const double offsetx,
const double offsety) {
4320 if (checkDrawing(d, AC, type, exaggeration)) {
4326 glTranslated(offsetx, offsety, 0);
4328 glRotated(180, 0, 0, 1);
4352 if (exaggeration == 0) {
4356 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
4378const std::vector<RGBColor>&
4403 }
else if (value >= max) {
4407 const double procent = ((value - min) * 100) / (max - min);
4411 }
else if (procent >= 100) {
4421std::vector<GUIGlObject*>
4423 std::vector<GUIGlObject*> filteredGLObjects;
4424 if (GLObjects.size() > 0) {
4425 const auto firstLayer = GLObjects.front()->getType();
4426 for (
const auto& GLObject : GLObjects) {
4428 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
4429 filteredGLObjects.push_back(GLObject);
4431 (GLO_STOP <= GLObject->getType()) && (GLObject->getType() <=
GLO_STOP_PLAN)) {
4432 filteredGLObjects.push_back(GLObject);
4434 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
4435 filteredGLObjects.push_back(GLObject);
4437 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
4438 filteredGLObjects.push_back(GLObject);
4440 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
4441 filteredGLObjects.push_back(GLObject);
4442 }
else if (GLObject->getType() == firstLayer) {
4443 filteredGLObjects.push_back(GLObject);
4447 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_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_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_SHOWPOLYGONSYMBOLS
show polygon symbols
@ 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_GNE_INTERVALBAR_GENERICDATATYPE
generic data selected
@ MID_GNE_NETWORKVIEWOPTIONS_MERGEAUTOMATICALLY
don't ask before merging junctions
@ MID_HOTKEY_CTRL_SHIFT_M_SAVEMEANDATAELEMENTS
save Mean Datas
@ 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
@ MID_HOTKEY_CTRL_SHIFT_A_SAVEADDITIONALELEMENTS
Save Additional Elements.
#define GUIDesignTextColorRed
red color (for invalid text)
#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 GUIDesignComboBoxFixed(customWidth)
comboBox with thick frame, fixed width
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTLSTableCheckableButtonIcon
checkable button only with icon used in TLSTable
#define GUIDesignComboBoxVisibleItemsFixed
combo box size fixed
#define GUIDesignTextColorBlack
black color (for correct text)
#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_ROUTE_DISTRIBUTION
route distribution
@ GLO_LOCKICON
Lock icon (used in netedit)
GUIViewObjectsHandler gViewObjectsHandler
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ NETWORKMODE_CHECKBOX_SHOWPOLYGONSYMBOLS
@ 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_MERGEAUTOMATICALLY
@ 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
@ COMMONMODE_CHECKBOX_TOGGLEGRID
@ DEMANDMODE_CHECKBOX_SHOWCONTAINERPLANS
@ NETWORKMODE_CHECKBOX_TWOWAY
#define WRITE_ERRORF(...)
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ SUMO_TAG_EDGEREL
a relation between two edges
@ SUMO_TAG_TAZ
a traffic assignment zone
@ SUMO_TAG_NOTHING
invalid tag, must be the last one
@ SUMO_TAG_CONNECTION
connectioon between two lanes
@ SUMO_TAG_WALKINGAREA
walking area for pedestrians
@ SUMO_TAG_JUNCTION
begin/end of the description of a junction
@ SUMO_TAG_CROSSING
crossing between edges for pedestrians
@ 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
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.
PositionVector getShape(const bool closeShape) const
get position vector (shape) based on this boundary
void addParentID(const SumoXMLTag tag, const std::string &ID)
add parent (string) attribute into current SumoBaseObject node
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void popMatrix()
pop matrix
static void pushMatrix()
push matrix
bool isAttributeCarrierSelected() const
check if attribute carrier is selected
bool isMarkedForDrawingFront() const
check if this AC is marked for drawing front
virtual GNEMoveElement * getMoveElement() const =0
get GNEMoveElement associated with this AttributeCarrier
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unmarkForDrawingFront()
unmark for drawing front
GNENet * getNet() const
get pointer to net
An Element which don't belong to GNENet but has influence in the simulation.
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.
const GNEHierarchicalContainerParents< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
static void commitMove(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList)
commit move element for the given offset
static void moveElement(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset)
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net (used for simplify code)
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
network elements
bool isDataElement() const
return true if tag correspond to a data element
bool isDemandElement() const
return true if tag correspond to a demand element
bool isAdditionalElement() const
return true if tag correspond to an additional element (note: this include TAZ, shapes and wires)
bool isInspectingElements() const
check if we're inspecting at least one element
void inspectAC(GNEAttributeCarrier *AC)
void inspectACs(const std::vector< GNEAttributeCarrier * > &ACs)
inspect multiple ACs
bool isACInspected(GNEAttributeCarrier *AC) const
const std::unordered_set< GNEAttributeCarrier * > & getACs() const
get hash table with all inspected ACs
GNEAttributeCarrier * getFirstAC() const
void uninspectAC(GNEAttributeCarrier *AC)
uninspect AC
bool isInspectingSingleElement() const
check if we're inspecting exactly one element
bool isInspectingMultipleElements() const
check if we're inspecting more than one elements
void clearInspectedElements()
clear inspected AC
InspectedElements()
constructor
void setDataSet()
set dataSet
void setParameter()
set parameter
std::string getParameter() const
get parameter
void hideIntervalBar()
hide all options menu checks
void setGenericDataType()
set generic data type
double getBegin() const
get begin
void showIntervalBar()
show interval option bar
void disableIntervalBar()
disable interval bar
void updateIntervalBar()
update interval bar
void buildIntervalBarElements()
build interval bar elements
GNEDataSet * getDataSet() const
get dataSet
IntervalBar(GNEViewNet *viewNet)
default constructor
void enableIntervalBar()
enable interval bar
void setInterval()
update limit by interval
double getEnd() const
get end
SumoXMLTag getGenericDataType() const
get generic data type
~OperationLocked()
destructor
Supermode getSupermode() const
get supermode
OperationLocked()
constructor
void updateLockMenuBar()
update lock inspect menuBar
bool isObjectLocked(GUIGlObjectType objectType, const bool selected) const
check if given GLObject is locked for inspect, select, delete and move
LockManager(GNEViewNet *viewNet)
constructor
std::map< GUIGlObjectType, OperationLocked > myLockedElements
map with locked elements
void updateFlags()
update flags
GNEViewNet * myViewNet
pointer to viewNet
void unmarkAC(GNEAttributeCarrier *AC)
unmark AC for drawing front
MarkFrontElements()
constructor
void markAC(GNEAttributeCarrier *AC)
mark AC as drawing front
void unmarkAll()
unmark all ACs
const std::unordered_set< GNEAttributeCarrier * > & getACs() const
get hash table with all fronted ACs
std::vector< GNEConnection * > connections
vector with the connections
std::vector< GNEGenericData * > genericDatas
vector with the generic datas
std::vector< GNEPOI * > POIs
vector with the POIs
std::vector< GNEInternalLane * > internalLanes
vector with the internal lanes
std::vector< GUIGlObject * > GUIGlObjects
vector with the GUIGlObjects
std::vector< GNELane * > lanes
vector with the lanes
std::vector< GNETAZRelData * > TAZRelDatas
vector with the TAZ relation datas
void reserve(int size)
reseve memory for all elements
std::vector< GNECrossing * > crossings
vector with the crossings
std::vector< GNEPoly * > polys
vector with the polys
std::vector< GNETAZ * > TAZs
vector with the TAZ elements
std::vector< GNEAdditional * > additionals
vector with the additional elements
std::vector< GNEAttributeCarrier * > attributeCarriers
vector with the attribute carriers
void clearElements()
clear elements
std::vector< GNENetworkElement * > networkElements
vector with the network elements
std::vector< GNEEdgeData * > edgeDatas
vector with the edge datas
std::vector< GNEEdgeRelData * > edgeRelDatas
vector with the edge relation datas
std::vector< GNEEdge * > edges
vector with the edges
void filterElements(const std::vector< const GUIGlObject * > &objects)
filter elements
std::vector< GNEJunction * > junctions
vector with the junctions
std::vector< GNEWalkingArea * > walkingAreas
vector with the walkingAreas
std::vector< GNEDemandElement * > demandElements
vector with the demand elements
ViewObjectsContainer()
constructor
GNEEdgeRelData * getEdgeRelDataElementFront() const
get edge rel data element or a pointer to nullptr
void updateObjects()
update objects (using gViewObjectsHandler)
void filterConnections()
filter (remove) connections
void filterAllExcept(GUIGlObjectType exception)
filter all elements except the given GLO type
GNEEdgeData * getEdgeDataElementFront() const
get edge data element or a pointer to nullptr
const std::vector< const GNEJunction * > & getMergingJunctions() const
get merging junctions
void updateShapeElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update shape elements
void updateMergingJunctions()
update merging junctions
GNEConnection * getConnectionFront() const
get front connection or a pointer to nullptr
const std::vector< GNEAttributeCarrier * > & getAttributeCarriers() const
get vector with ACs
void filterEdges()
filter (remove) edges
GNEPoly * getPolyFront() const
get front Poly or a pointer to nullptr
void updateDemandElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update demand elements
void filterLockedElements(const std::vector< GUIGlObjectType > ignoreFilter={})
filter locked elements (except the ignoreFilter)
void filterCrossings()
filter (remove) crossings
GNEPOI * getPOIFront() const
get front POI or a pointer to nullptr
GNEInternalLane * getInternalLaneFront() const
get front internal lane or a pointer to nullptr
void filterNetworkElements()
filter (remove) network elements
void processGUIGlObjects(const GUIViewObjectsHandler::GLObjectsSortedContainer &objectsContainer)
process GL objects
const std::vector< GNETAZ * > & getTAZs() const
get vector with TAZs
GNEWalkingArea * getWalkingAreaFront() const
get front walkingArea or a pointer to nullptr
void filterBySuperMode()
filter by supermode
GNEEdge * getEdgeFront() const
get front edge or a pointer to nullptr
GNEAttributeCarrier * getAttributeCarrierFront() const
get front attribute carrier or a pointer to nullptr
void updateAdditionalElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update additional elements
void updateGenericDataElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update generic data elements
void filterDemandElements(const bool includeRoutes)
filter (remove) demand elements
void updateTAZElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update TAZ elements
const std::vector< GNEDemandElement * > & getDemandElements() const
get vector with Demand Elements
void filterWalkingAreas()
filter (remove) walkingAreas
GNETAZ * getTAZFront() const
get front TAZ or a pointer to nullptr
void filterAdditionals(const bool includeStoppigPlaces, const bool includeTAZs)
filter (remove) additionals
GNELane * getLaneFront() const
get front lane or a pointer to nullptr
void updateNetworkElements(ViewObjectsContainer &container, const GUIGlObject *glObject)
update network elements
GNEGenericData * getGenericDataElementFront() const
get generic data element or a pointer to nullptr
void fillSumoBaseObject(CommonXMLStructure::SumoBaseObject *baseObjet) const
fill the given SUMO base object with the current single objects
GNEAdditional * getAdditionalFront() const
get front additional element or a pointer to nullptr
GNELane * getLaneFrontNonLocked() const
get front lane or a pointer to nullptr checking if is locked
const GUIGlObject * getGUIGlObjectFront() const
get front GUIGLObject or a pointer to nullptr
GNENetworkElement * getNetworkElementFront() const
get front network element or a pointer to nullptr
const std::vector< GNEEdge * > & getEdges() const
get vector with edges
GNECrossing * getCrossingFront() const
get front crossing or a pointer to nullptr
ViewObjectsSelector()
default constructor
GNEJunction * getJunctionFront() const
get front junction or a pointer to nullptr
void filterLanes()
filter (remove) lanes
void filterJunctions()
filter (remove) junctions
GNETAZRelData * getTAZRelDataElementFront() const
get TAZ rel data element or a pointer to nullptr
const std::vector< GUIGlObject * > & getGLObjects() const
get vector with GL objects
void filterShapes()
filter (remove) polys and POIs
const std::vector< GNEJunction * > & getJunctions() const
get vector with junctions
GNEDemandElement * getDemandElementFront() const
get front demand element or a pointer to nullptr
void filterDataElements()
filter (remove) datga elements
const std::vector< GNELane * > & getLanes() const
get lanes
const std::vector< GNEAdditional * > & getAdditionals() const
get vector with additionals
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
virtual bool isGLObjectLocked() const
check if element is locked (Currently used only in netedit)
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
int getNumberOfSelectedObjects() const
get number of selected objects
std::map< double, ObjectContainerLayer > GLObjectsSortedContainer
typedef for pack elements sorted by layer
const GLObjectsSortedContainer & getSelectedObjects() const
get all elements under cursor sorted by layer
const std::vector< const GNEJunction * > & getMergingJunctions() const
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
#define UNUSED_PARAMETER(x)
struct for processing menu commands
MFXMenuCheckIcon * menuCheckLockConnections
menu check to lock connections
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 * menuCheckLockEdgeTAZRels
menu check to lock edgeTAZRels
MFXMenuCheckIcon * menuCheckLockJunctions
MFXMenuCheckIcon * menuCheckLockPersonTrips
menu check to lock personTrips
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 * menuCheckLockWalks
menu check to lock walks
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 showPolygonSymbols() const
check if draw polygon symbols
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