99 if (selected && (myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck() == TRUE)) {
106 return myLockedElements.at(
GLO_WIRE).lock;
109 return myLockedElements.at(
GLO_ROUTE).lock;
121 return myLockedElements.at(
GLO_STOP).lock;
123 return myLockedElements.at(objectType).lock;
206 mySupermode(supermode) {
227 myInspectedACs.clear();
229 myFirstInspectedAC = AC;
230 myInspectedACs.insert(AC);
232 myFirstInspectedAC =
nullptr;
239 myInspectedACs.clear();
240 if (ACs.size() > 0) {
241 myFirstInspectedAC = ACs.front();
242 for (
const auto& AC : ACs) {
243 myInspectedACs.insert(AC);
246 myFirstInspectedAC =
nullptr;
253 auto it = myInspectedACs.find(AC);
254 if (it != myInspectedACs.end()) {
255 myInspectedACs.erase(it);
256 if (myInspectedACs.size() == 0) {
257 myInspectedACs.clear();
258 myFirstInspectedAC =
nullptr;
259 }
else if (myFirstInspectedAC == AC) {
260 myFirstInspectedAC = (*myInspectedACs.begin());
268 myFirstInspectedAC =
nullptr;
269 myInspectedACs.clear();
275 return myFirstInspectedAC;
279const std::unordered_set<GNEAttributeCarrier*>&
281 return myInspectedACs;
287 if (myInspectedACs.empty()) {
289 }
else if (myFirstInspectedAC == AC) {
292 return myInspectedACs.find(AC) != myInspectedACs.end();
299 if (myInspectedACs.empty()) {
301 }
else if (myFirstInspectedAC == AC) {
312 return myInspectedACs.size() > 0;
318 return myInspectedACs.size() == 1;
324 return myInspectedACs.size() > 1;
336 myMarkedACs.insert(AC);
342 if (myMarkedACs.size() > 0) {
343 auto it = myMarkedACs.find(AC);
344 if (it != myMarkedACs.end()) {
345 myMarkedACs.erase(it);
354 const auto copy = myMarkedACs;
355 for (
auto& AC : copy) {
361const std::unordered_set<GNEAttributeCarrier*>&
378 myViewObjects.clearElements();
393 if (myViewObjects.junctions.size() > 0) {
396 if (myViewObjects.edges.size() > 0) {
399 if (myViewObjects.lanes.size() > 0) {
402 if (myViewObjects.crossings.size() > 0) {
405 if (myViewObjects.connections.size() > 0) {
408 if (myViewObjects.walkingAreas.size() > 0) {
411 if (myViewObjects.lanes.size() > 0) {
414 if (myViewObjects.additionals.size() > 0) {
415 baseObjet->
addParentID(myViewObjects.additionals.front()->getTagProperty()->getTag(), myViewObjects.additionals.front()->getID());
417 if (myViewObjects.demandElements.size() > 0) {
418 baseObjet->
addParentID(myViewObjects.demandElements.front()->getTagProperty()->getTag(), myViewObjects.demandElements.front()->getID());
420 if (myViewObjects.genericDatas.size() > 0) {
421 baseObjet->
addParentID(myViewObjects.genericDatas.front()->getTagProperty()->getTag(), myViewObjects.genericDatas.front()->getID());
429 std::vector<const GUIGlObject*> glElements;
430 for (
const auto& glElement : myViewObjects.GUIGlObjects) {
431 if (glElement->getType() != exception) {
432 glElements.push_back(glElement);
435 myViewObjects.filterElements(glElements);
441 if (myViewNet->getEditModes().isCurrentSupermodeNetwork()) {
442 filterDemandElements(
true);
443 filterDataElements();
444 }
else if (myViewNet->getEditModes().isCurrentSupermodeDemand()) {
445 filterNetworkElements();
446 filterAdditionals(
true,
true);
447 filterDataElements();
448 }
else if (myViewNet->getEditModes().isCurrentSupermodeData()) {
449 filterNetworkElements();
450 filterDemandElements(
true);
458 std::vector<const GUIGlObject*> junctions;
459 for (
const auto& junction : myViewObjects.junctions) {
460 junctions.push_back(junction);
462 myViewObjects.filterElements(junctions);
469 std::vector<const GUIGlObject*> edges;
470 for (
const auto& edge : myViewObjects.edges) {
471 edges.push_back(edge);
473 myViewObjects.filterElements(edges);
480 std::vector<const GUIGlObject*> lanes;
481 for (
const auto& lane : myViewObjects.lanes) {
482 lanes.push_back(lane);
484 myViewObjects.filterElements(lanes);
491 std::vector<const GUIGlObject*> connections;
492 for (
const auto& connection : myViewObjects.connections) {
493 connections.push_back(connection);
495 myViewObjects.filterElements(connections);
502 std::vector<const GUIGlObject*> crossings;
503 for (
const auto& crossing : myViewObjects.crossings) {
504 crossings.push_back(crossing);
506 myViewObjects.filterElements(crossings);
513 std::vector<const GUIGlObject*> walkingAreas;
514 for (
const auto& walkingArea : myViewObjects.walkingAreas) {
515 walkingAreas.push_back(walkingArea);
517 myViewObjects.filterElements(walkingAreas);
524 std::vector<const GUIGlObject*> shapes;
525 for (
const auto& poly : myViewObjects.polys) {
526 shapes.push_back(poly);
528 for (
const auto&
POI : myViewObjects.POIs) {
529 shapes.push_back(
POI);
531 myViewObjects.filterElements(shapes);
538 std::vector<const GUIGlObject*> additionals;
539 for (
const auto& additional : myViewObjects.additionals) {
542 }
else if (!includeTAZs && (additional->getType() ==
GLO_TAZ)) {
545 additionals.push_back(additional);
548 myViewObjects.filterElements(additionals);
555 std::vector<const GUIGlObject*> networkElements;
556 for (
const auto& networkElement : myViewObjects.networkElements) {
557 networkElements.push_back(networkElement);
559 myViewObjects.filterElements(networkElements);
566 std::vector<const GUIGlObject*> demandElements;
567 for (
const auto& demandElement : myViewObjects.demandElements) {
568 if (!includeRoutes && (demandElement->getType() ==
GLO_ROUTE)) {
571 demandElements.push_back(demandElement);
574 myViewObjects.filterElements(demandElements);
581 std::vector<const GUIGlObject*> datadElements;
582 for (
const auto& datadElement : myViewObjects.edgeDatas) {
583 datadElements.push_back(datadElement);
585 for (
const auto& datadElement : myViewObjects.edgeRelDatas) {
586 datadElements.push_back(datadElement);
588 for (
const auto& datadElement : myViewObjects.TAZRelDatas) {
589 datadElements.push_back(datadElement);
591 myViewObjects.filterElements(datadElements);
598 std::vector<const GUIGlObject*> GUIGlObjects;
600 for (
const auto&
GUIGlObject : myViewObjects.GUIGlObjects) {
606 for (
const auto& ignoredType : ignoreFilter) {
607 auto it = GUIGlObjects.begin();
608 while (it != GUIGlObjects.end()) {
609 if ((*it)->getType() == ignoredType) {
610 it = GUIGlObjects.erase(it);
617 myViewObjects.filterElements(GUIGlObjects);
623 if (myViewObjects.GUIGlObjects.size() > 0) {
624 return myViewObjects.GUIGlObjects.front();
633 if (myViewObjects.attributeCarriers.size() > 0) {
634 return myViewObjects.attributeCarriers.front();
643 if (myViewObjects.networkElements.size() > 0) {
644 return myViewObjects.networkElements.front();
653 if (myViewObjects.additionals.size() > 0) {
654 return myViewObjects.additionals.front();
663 if (myViewObjects.demandElements.size() > 0) {
664 return myViewObjects.demandElements.front();
673 if (myViewObjects.genericDatas.size() > 0) {
674 return myViewObjects.genericDatas.front();
683 if (myViewObjects.junctions.size() > 0) {
684 return myViewObjects.junctions.front();
693 if (myViewObjects.edges.size() > 0) {
694 return myViewObjects.edges.front();
703 if (myViewObjects.lanes.size() > 0) {
704 return myViewObjects.lanes.front();
713 if (myViewObjects.lanes.size() > 0) {
714 for (
auto& lane : myViewObjects.lanes) {
715 if (!(lane->isAttributeCarrierSelected() || lane->getParentEdge()->isAttributeCarrierSelected()) ||
716 !myViewNet->getViewParent()->getGNEAppWindows()->getLockMenuCommands().menuCheckLockSelectedElements->getCheck()) {
728const std::vector<GNELane*>&
730 return myViewObjects.lanes;
736 if (myViewObjects.crossings.size() > 0) {
737 return myViewObjects.crossings.front();
746 if (myViewObjects.walkingAreas.size() > 0) {
747 return myViewObjects.walkingAreas.front();
756 if (myViewObjects.connections.size() > 0) {
757 return myViewObjects.connections.front();
766 if (myViewObjects.internalLanes.size() > 0) {
767 return myViewObjects.internalLanes.front();
776 if (myViewObjects.POIs.size() > 0) {
777 return myViewObjects.POIs.front();
786 if (myViewObjects.polys.size() > 0) {
787 return myViewObjects.polys.front();
796 if (myViewObjects.TAZs.size() > 0) {
797 return myViewObjects.TAZs.front();
806 if (myViewObjects.edgeDatas.size() > 0) {
807 return myViewObjects.edgeDatas.front();
816 if (myViewObjects.edgeRelDatas.size() > 0) {
817 return myViewObjects.edgeRelDatas.front();
826 if (myViewObjects.TAZRelDatas.size() > 0) {
827 return myViewObjects.TAZRelDatas.front();
834const std::vector<GUIGlObject*>&
836 return myViewObjects.GUIGlObjects;
840const std::vector<GNEAttributeCarrier*>&
842 return myViewObjects.attributeCarriers;
846const std::vector<GNEJunction*>&
848 return myViewObjects.junctions;
852const std::vector<GNEEdge*>&
854 return myViewObjects.edges;
858const std::vector<GNETAZ*>&
860 return myViewObjects.TAZs;
864const std::vector<GNEAdditional*>&
866 return myViewObjects.additionals;
870const std::vector<GNEDemandElement*>&
872 return myViewObjects.demandElements;
876const std::vector<const GNEJunction*>&
878 return myMergingJunctions;
887 GUIGlObjects.clear();
888 attributeCarriers.clear();
889 networkElements.clear();
891 demandElements.clear();
896 walkingAreas.clear();
898 internalLanes.clear();
902 genericDatas.clear();
904 edgeRelDatas.clear();
911 GUIGlObjects.reserve(size);
912 attributeCarriers.reserve(size);
913 networkElements.reserve(size);
914 additionals.reserve(size);
915 demandElements.reserve(size);
916 junctions.reserve(size);
919 crossings.reserve(size);
920 walkingAreas.reserve(size);
921 connections.reserve(size);
922 internalLanes.reserve(size);
926 genericDatas.reserve(size);
927 edgeDatas.reserve(size);
928 edgeRelDatas.reserve(size);
929 TAZRelDatas.reserve(size);
935 for (
const auto&
object : objects) {
937 auto itGlObjects = GUIGlObjects.begin();
938 while (itGlObjects != GUIGlObjects.end()) {
939 if (*itGlObjects ==
object) {
940 itGlObjects = GUIGlObjects.erase(itGlObjects);
946 auto itACs = attributeCarriers.begin();
947 while (itACs != attributeCarriers.end()) {
948 if ((*itACs)->getGUIGlObject() == object) {
949 itACs = attributeCarriers.erase(itACs);
955 auto itNetworkElements = networkElements.begin();
956 while (itNetworkElements != networkElements.end()) {
957 if ((*itNetworkElements)->getGUIGlObject() == object) {
958 itNetworkElements = networkElements.erase(itNetworkElements);
964 auto itAdditionals = additionals.begin();
965 while (itAdditionals != additionals.end()) {
966 if ((*itAdditionals)->getGUIGlObject() == object) {
967 itAdditionals = additionals.erase(itAdditionals);
973 auto itDemandElements = demandElements.begin();
974 while (itDemandElements != demandElements.end()) {
975 if ((*itDemandElements)->getGUIGlObject() == object) {
976 itDemandElements = demandElements.erase(itDemandElements);
982 auto itGenericDatas = genericDatas.begin();
983 while (itGenericDatas != genericDatas.end()) {
984 if ((*itGenericDatas)->getGUIGlObject() == object) {
985 itGenericDatas = genericDatas.erase(itGenericDatas);
991 auto itJunctions = junctions.begin();
992 while (itJunctions != junctions.end()) {
993 if ((*itJunctions)->getGUIGlObject() == object) {
994 itJunctions = junctions.erase(itJunctions);
1000 auto itEdges = edges.begin();
1001 while (itEdges != edges.end()) {
1002 if ((*itEdges)->getGUIGlObject() == object) {
1003 itEdges = edges.erase(itEdges);
1009 auto itLanes = lanes.begin();
1010 while (itLanes != lanes.end()) {
1011 if ((*itLanes)->getGUIGlObject() == object) {
1012 itLanes = lanes.erase(itLanes);
1018 auto itCrossings = crossings.begin();
1019 while (itCrossings != crossings.end()) {
1020 if ((*itCrossings)->getGUIGlObject() == object) {
1021 itCrossings = crossings.erase(itCrossings);
1027 auto itWalkingAreas = walkingAreas.begin();
1028 while (itWalkingAreas != walkingAreas.end()) {
1029 if ((*itWalkingAreas)->getGUIGlObject() == object) {
1030 itWalkingAreas = walkingAreas.erase(itWalkingAreas);
1036 auto itConnections = connections.begin();
1037 while (itConnections != connections.end()) {
1038 if ((*itConnections)->getGUIGlObject() == object) {
1039 itConnections = connections.erase(itConnections);
1045 auto itInternalLanes = internalLanes.begin();
1046 while (itInternalLanes != internalLanes.end()) {
1047 if ((*itInternalLanes)->getGUIGlObject() == object) {
1048 itInternalLanes = internalLanes.erase(itInternalLanes);
1054 auto itTAZs = TAZs.begin();
1055 while (itTAZs != TAZs.end()) {
1056 if ((*itTAZs)->getGUIGlObject() == object) {
1057 itTAZs = TAZs.erase(itTAZs);
1063 auto itPOIs = POIs.begin();
1064 while (itPOIs != POIs.end()) {
1065 if ((*itPOIs)->getGUIGlObject() == object) {
1066 itPOIs = POIs.erase(itPOIs);
1072 auto itPolys = polys.begin();
1073 while (itPolys != polys.end()) {
1074 if ((*itPolys)->getGUIGlObject() == object) {
1075 itPolys = polys.erase(itPolys);
1081 auto itEdgeDatas = edgeDatas.begin();
1082 while (itEdgeDatas != edgeDatas.end()) {
1083 if ((*itEdgeDatas)->getGUIGlObject() == object) {
1084 itEdgeDatas = edgeDatas.erase(itEdgeDatas);
1090 auto itEdgeRelDatas = edgeRelDatas.begin();
1091 while (itEdgeRelDatas != edgeRelDatas.end()) {
1092 if ((*itEdgeRelDatas)->getGUIGlObject() == object) {
1093 itEdgeRelDatas = edgeRelDatas.erase(itEdgeRelDatas);
1099 auto itTAZRelDatas = TAZRelDatas.begin();
1100 while (itTAZRelDatas != TAZRelDatas.end()) {
1101 if ((*itTAZRelDatas)->getGUIGlObject() == object) {
1102 itTAZRelDatas = TAZRelDatas.erase(itTAZRelDatas);
1114 switch (glObject->
getType()) {
1119 if (junction->isMarkedForDrawingFront()) {
1127 container.
junctions.push_back(junction);
1136 auto edge = myViewNet->getNet()->getAttributeCarriers()->retrieveEdge(glObject->
getMicrosimID());
1138 if (edge->isMarkedForDrawingFront()) {
1140 container.
edges.insert(container.
edges.begin(), edge);
1146 container.
edges.push_back(edge);
1155 auto lane = myViewNet->getNet()->getAttributeCarriers()->retrieveLane(glObject);
1157 if (lane->isMarkedForDrawingFront()) {
1159 container.
lanes.insert(container.
lanes.begin(), lane);
1165 container.
lanes.push_back(lane);
1174 auto crossing = myViewNet->getNet()->getAttributeCarriers()->retrieveCrossing(glObject);
1176 if (crossing->isMarkedForDrawingFront()) {
1184 container.
crossings.push_back(crossing);
1193 auto walkingArea = myViewNet->getNet()->getAttributeCarriers()->retrieveWalkingArea(glObject);
1195 if (walkingArea->isMarkedForDrawingFront()) {
1212 auto connection = myViewNet->getNet()->getAttributeCarriers()->retrieveConnection(glObject);
1214 if (connection->isMarkedForDrawingFront()) {
1231 auto internalLane = myViewNet->getNet()->getAttributeCarriers()->retrieveInternalLane(glObject);
1233 if (internalLane->isMarkedForDrawingFront()) {
1255 auto additionalElement = myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject,
false);
1256 if (additionalElement) {
1258 if (additionalElement->isMarkedForDrawingFront()) {
1265 container.
additionals.push_back(additionalElement);
1278 auto POI =
dynamic_cast<GNEPOI*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1280 if (
POI->isMarkedForDrawingFront()) {
1282 container.
POIs.insert(container.
POIs.begin(),
POI);
1285 container.
POIs.push_back(
POI);
1289 auto poly =
dynamic_cast<GNEPoly*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1291 if (poly->isMarkedForDrawingFront()) {
1293 container.
polys.insert(container.
polys.begin(), poly);
1296 container.
polys.push_back(poly);
1307 auto TAZ =
dynamic_cast<GNETAZ*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveAdditional(glObject));
1309 if (
TAZ->isMarkedForDrawingFront()) {
1311 container.
TAZs.insert(container.
TAZs.begin(),
TAZ);
1314 container.
TAZs.push_back(
TAZ);
1324 if (demandElement) {
1344 switch (glObject->
getType()) {
1347 auto edgeData =
dynamic_cast<GNEEdgeData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1349 if (edgeData->isMarkedForDrawingFront()) {
1357 container.
edgeDatas.push_back(edgeData);
1366 auto edgeRelData =
dynamic_cast<GNEEdgeRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1368 if (edgeRelData->isMarkedForDrawingFront()) {
1385 auto TAZRelData =
dynamic_cast<GNETAZRelData*
>(myViewNet->getNet()->getAttributeCarriers()->retrieveGenericData(glObject));
1387 if (TAZRelData->isMarkedForDrawingFront()) {
1411 for (
const auto& glObjectLayer : objectsContainer) {
1412 for (
const auto& glObject : glObjectLayer.second) {
1414 updateNetworkElements(myViewObjects, glObject.object);
1415 updateAdditionalElements(myViewObjects, glObject.object);
1416 updateShapeElements(myViewObjects, glObject.object);
1417 updateTAZElements(myViewObjects, glObject.object);
1418 updateDemandElements(myViewObjects, glObject.object);
1419 updateGenericDataElements(myViewObjects, glObject.object);
1426 myViewNet(nullptr) {
1434 myEventInfo(nullptr) {
1440 myEventInfo = (FXEvent*) eventData;
1447 return (myEventInfo->state & SHIFTMASK) != 0;
1457 return (myEventInfo->state & CONTROLMASK) != 0;
1467 return (myEventInfo->state & ALTMASK) != 0;
1477 return (myEventInfo->state & LEFTBUTTONMASK) != 0;
1487 return (myEventInfo->state & RIGHTBUTTONMASK) != 0;
1498 myViewNet(viewNet) {
1505 myRelativeClickedPosition = myViewNet->getPositionInformation();
1507 const GNENetworkElement* editedElement = myViewNet->myEditNetworkElementShapes.getEditedNetworkElement();
1509 if (myViewNet->myViewObjectsSelector.getJunctionFront() && (myViewNet->myViewObjectsSelector.getJunctionFront() == editedElement)) {
1511 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1513 if (moveOperation) {
1514 myMoveOperation = moveOperation;
1519 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (myViewNet->myViewObjectsSelector.getLaneFront() == editedElement)) {
1521 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1523 if (moveOperation) {
1524 myMoveOperation = moveOperation;
1529 }
else if (myViewNet->myViewObjectsSelector.getCrossingFront() && (myViewNet->myViewObjectsSelector.getCrossingFront() == editedElement)) {
1531 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getCrossingFront()->getMoveOperation();
1533 if (moveOperation) {
1534 myMoveOperation = moveOperation;
1539 }
else if (myViewNet->myViewObjectsSelector.getConnectionFront() && (myViewNet->myViewObjectsSelector.getConnectionFront() == editedElement)) {
1541 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getConnectionFront()->getMoveOperation();
1543 if (moveOperation) {
1544 myMoveOperation = moveOperation;
1549 }
else if (myViewNet->myViewObjectsSelector.getWalkingAreaFront() && (myViewNet->myViewObjectsSelector.getWalkingAreaFront() == editedElement)) {
1551 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getWalkingAreaFront()->getMoveOperation();
1553 if (moveOperation) {
1554 myMoveOperation = moveOperation;
1569 myRelativeClickedPosition = myViewNet->getPositionInformation();
1571 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1573 if (myViewNet->myViewObjectsSelector.getPolyFront() && (markAC == myViewNet->myViewObjectsSelector.getPolyFront())) {
1575 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPolyFront()->getMoveOperation();
1577 if (moveOperation) {
1578 myMoveOperation = moveOperation;
1583 }
else if (myViewNet->myViewObjectsSelector.getPOIFront() && (markAC == myViewNet->myViewObjectsSelector.getPOIFront())) {
1585 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getPOIFront()->getMoveOperation();
1587 if (moveOperation) {
1588 myMoveOperation = moveOperation;
1593 }
else if (myViewNet->myViewObjectsSelector.getAdditionalFront() && (markAC == myViewNet->myViewObjectsSelector.getAdditionalFront())) {
1595 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getAdditionalFront()->getMoveOperation();
1597 if (moveOperation) {
1598 myMoveOperation = moveOperation;
1603 }
else if (myViewNet->myViewObjectsSelector.getJunctionFront() && (markAC == myViewNet->myViewObjectsSelector.getJunctionFront())) {
1605 if (myViewNet->myViewObjectsSelector.getEdgeFront() && (myViewNet->myViewObjectsSelector.getEdgeFront()->clickedOverGeometryPoint(myRelativeClickedPosition))) {
1607 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1609 if (moveOperation) {
1610 myMoveOperation = moveOperation;
1617 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getJunctionFront()->getMoveOperation();
1619 if (moveOperation) {
1620 myMoveOperation = moveOperation;
1626 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront() && (markAC == myViewNet->myViewObjectsSelector.getEdgeFront())) {
1628 if (myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
1630 myViewNet->myViewObjectsSelector.getEdgeFront()->editEndpoint(myViewNet->getPositionInformation(), myViewNet->myUndoList);
1635 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getEdgeFront()->getMoveOperation();
1637 if (moveOperation) {
1638 myMoveOperation = moveOperation;
1644 }
else if (myViewNet->myViewObjectsSelector.getLaneFront() && (markAC == myViewNet->myViewObjectsSelector.getLaneFront())) {
1646 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getLaneFront()->getMoveOperation();
1648 if (moveOperation) {
1649 myMoveOperation = moveOperation;
1664 myRelativeClickedPosition = myViewNet->getPositionInformation();
1666 const GNEAttributeCarrier* markAC = myViewNet->myViewObjectsSelector.getAttributeCarrierFront();
1668 if (myViewNet->myViewObjectsSelector.getDemandElementFront() && (markAC == myViewNet->myViewObjectsSelector.getDemandElementFront())) {
1670 GNEMoveOperation* moveOperation = myViewNet->myViewObjectsSelector.getDemandElementFront()->getMoveOperation();
1672 if (moveOperation) {
1673 myMoveOperation = moveOperation;
1688 if (myMoveOperation) {
1692 if (mouseLeftButtonPressed) {
1699 delete myMoveOperation;
1700 myMoveOperation =
nullptr;
1708 if (myMoveOperation) {
1713 delete myMoveOperation;
1714 myMoveOperation =
nullptr;
1721 return myMoveOperation !=
nullptr;
1727 if (myMoveOperation) {
1739 Position moveOffset = (myViewNet->getPositionInformation() - myViewNet->myMoveSingleElement.myRelativeClickedPosition);
1741 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1756 myMovingSelectedEdge(false),
1764 myClickedPosition = myViewNet->getPositionInformation();
1766 if (myViewNet->myViewObjectsSelector.getJunctionFront()) {
1767 calculateJunctionSelection();
1768 }
else if (myViewNet->myViewObjectsSelector.getEdgeFront()) {
1769 calculateEdgeSelection(myViewNet->myViewObjectsSelector.getEdgeFront());
1771 myViewNet->updateViewNet();
1780 if (mouseLeftButtonPressed) {
1782 for (
const auto& moveOperation : myMoveOperations) {
1786 }
else if (myMoveOperations.size() > 0) {
1790 for (
const auto& moveOperation : myMoveOperations) {
1794 delete moveOperation;
1797 myViewNet->getUndoList()->end();
1799 myMoveOperations.clear();
1811 for (
const auto& moveOperation : myMoveOperations) {
1814 delete moveOperation;
1817 myViewNet->getUndoList()->end();
1819 myMoveOperations.clear();
1825 return (myMoveOperations.size() > 0);
1831 return myMovingSelectedEdge;
1837 myMovingSelectedEdge =
false;
1843 return myEdgeOffset;
1849 return myMoveOperations.size() > 0;
1857 Position moveOffset = (myViewNet->getPositionInformation() - myClickedPosition);
1859 if (myViewNet->myNetworkViewOptions.menuCheckMoveElevation->shown() && myViewNet->myNetworkViewOptions.menuCheckMoveElevation->amChecked() == TRUE) {
1874 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1876 for (
const auto& junction : selectedJunctions) {
1877 moveOperation = junction->getMoveOperation();
1878 if (moveOperation) {
1879 myMoveOperations.push_back(moveOperation);
1883 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1885 for (
const auto& edge : selectedEdges) {
1886 moveOperation = edge->getMoveOperation();
1887 if (moveOperation) {
1888 myMoveOperations.push_back(moveOperation);
1897 const auto selectedJunctions = myViewNet->getNet()->getAttributeCarriers()->getSelectedJunctions();
1899 for (
const auto& junction : selectedJunctions) {
1901 if (moveOperation) {
1902 myMoveOperations.push_back(moveOperation);
1906 myMovingSelectedEdge =
true;
1913 myEdgeOffset = shape.length2D() - shape.nearest_offset_to_point2D(myViewNet->getPositionInformation());
1916 const auto selectedEdges = myViewNet->getNet()->getAttributeCarriers()->getSelectedEdges();
1918 for (
const auto& edge : selectedEdges) {
1921 if (moveOperation) {
1922 myMoveOperations.push_back(moveOperation);
1932 myViewNet(viewNet) {
1953 myViewNet(viewNet) {
1974 selectingUsingRectangle(false),
1975 startDrawing(false),
1976 myViewNet(viewNet) {
1982 selectingUsingRectangle =
true;
1983 selectionCorner1 = myViewNet->getPositionInformation();
1984 selectionCorner2 = selectionCorner1;
1991 startDrawing =
true;
1993 selectionCorner2 = myViewNet->getPositionInformation();
1995 myViewNet->setStatusBarText(
TL(
"Selection width:") +
toString(fabs(selectionCorner1.x() - selectionCorner2.x()))
1996 +
TL(
" height:") +
toString(fabs(selectionCorner1.y() - selectionCorner2.y()))
1997 +
TL(
" diagonal:") +
toString(selectionCorner1.distanceTo2D(selectionCorner2)));
2004 selectingUsingRectangle =
false;
2005 startDrawing =
false;
2007 myViewNet->setStatusBarText(
"");
2014 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
2015 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
2016 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
2019 rectangleBoundary.
add(selectionCorner1);
2020 rectangleBoundary.
add(selectionCorner2);
2022 processBoundarySelection(rectangleBoundary);
2027std::vector<GNEEdge*>
2030 if ((abs(selectionCorner1.x() - selectionCorner2.x()) > 0.01) &&
2031 (abs(selectionCorner1.y() - selectionCorner2.y()) > 0.01) &&
2032 myViewNet->myMouseButtonKeyPressed.shiftKeyPressed()) {
2035 rectangleBoundary.
add(selectionCorner1);
2036 rectangleBoundary.
add(selectionCorner2);
2038 myViewNet->updateObjectsInShape(rectangleBoundary.
getShape(
false));
2040 return myViewNet->getViewObjectsSelector().getEdges();
2049 if (selectingUsingRectangle) {
2054 glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
2056 glVertex2d(selectionCorner1.x(), selectionCorner1.y());
2057 glVertex2d(selectionCorner1.x(), selectionCorner2.y());
2058 glVertex2d(selectionCorner2.x(), selectionCorner2.y());
2059 glVertex2d(selectionCorner2.x(), selectionCorner1.y());
2068 const bool selEdges = myViewNet->myNetworkViewOptions.selectEdges();
2070 myViewNet->updateObjectsInShape(boundary.
getShape(
false));
2072 std::vector<GNEAttributeCarrier*> ACsFiltered;
2073 ACsFiltered.reserve(myViewNet->getViewObjectsSelector().getAttributeCarriers().size());
2074 for (
const auto& AC : myViewNet->getViewObjectsSelector().getAttributeCarriers()) {
2076 if (!AC->getGUIGlObject()->isGLObjectLocked()) {
2077 const auto tagProperty = AC->getTagProperty();
2078 if (tagProperty->isNetworkElement() || tagProperty->isAdditionalElement()) {
2080 if (((tagProperty->getTag() ==
SUMO_TAG_EDGE) && !selEdges) ||
2084 ACsFiltered.push_back(AC);
2086 }
else if (tagProperty->isDemandElement()) {
2087 ACsFiltered.push_back(AC);
2088 }
else if (tagProperty->isGenericData()) {
2089 ACsFiltered.push_back(AC);
2094 std::vector<GNEAttributeCarrier*> ACToSelect;
2095 std::vector<GNEAttributeCarrier*> ACToUnselect;
2097 ACToSelect.reserve(ACsFiltered.size());
2098 ACToUnselect.reserve(ACsFiltered.size());
2100 const auto modificationMode = myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode();
2103 const auto selectedAC = myViewNet->getNet()->getAttributeCarriers()->getSelectedAttributeCarriers(
false);
2105 for (
const auto& AC : selectedAC) {
2106 ACToUnselect.push_back(AC);
2110 for (
const auto& AC : ACsFiltered) {
2111 switch (myViewNet->myViewParent->getSelectorFrame()->getModificationModeModul()->getModificationMode()) {
2113 ACToUnselect.push_back(AC);
2116 if (std::find(ACToUnselect.begin(), ACToUnselect.end(), AC) != ACToUnselect.end()) {
2117 ACToSelect.push_back(AC);
2121 ACToSelect.push_back(AC);
2127 std::vector<GNEEdge*> edgesToSelect;
2129 for (
const auto& AC : ACToSelect) {
2131 edgesToSelect.push_back(
dynamic_cast<GNEEdge*
>(AC));
2135 for (
const auto& edge : edgesToSelect) {
2137 ACToSelect.push_back(edge->getFromJunction());
2138 for (
const auto& connection : edge->getFromJunction()->getGNEConnections()) {
2139 ACToSelect.push_back(connection);
2141 for (
const auto& crossing : edge->getFromJunction()->getGNECrossings()) {
2142 ACToSelect.push_back(crossing);
2145 ACToSelect.push_back(edge->getToJunction());
2146 for (
const auto& connection : edge->getToJunction()->getGNEConnections()) {
2147 ACToSelect.push_back(connection);
2149 for (
const auto& crossing : edge->getToJunction()->getGNECrossings()) {
2150 ACToSelect.push_back(crossing);
2155 if ((ACToSelect.size() + ACToUnselect.size()) > 0) {
2158 for (
const auto& AC : ACToUnselect) {
2161 for (
const auto& AC : ACToSelect) {
2162 if (AC->getTagProperty()->isSelectable()) {
2166 myViewNet->myUndoList->end();
2168 myViewNet->makeNonCurrent();
2176 myViewNet(viewNet) {
2186 if ((windowSize.size() == 2) && GNEAttributeCarrier::canParse<int>(windowSize[0]) && GNEAttributeCarrier::canParse<int>(windowSize[1])) {
2187 myTestingWidth = GNEAttributeCarrier::parse<int>(windowSize[0]);
2188 myTestingHeight = GNEAttributeCarrier::parse<int>(windowSize[1]);
2201 if (myTestingWidth > 0) {
2202 mainWindow->resize(myTestingWidth, myTestingHeight);
2206 const double size = myViewNet->p2m(32);
2207 Position center = myViewNet->screenPos2NetPos(8, 8);
2212 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2215 glVertex2d(0, -size);
2216 glVertex2d(size, -size);
2217 glVertex2d(size, 0);
2224 glScaled(0.7, 0.7, 0);
2225 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2228 glVertex2d(0, -size);
2229 glVertex2d(size, -size);
2230 glVertex2d(size, 0);
2237 glScaled(0.4, 0.4, 0);
2238 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
2241 glVertex2d(0, -size);
2242 glVertex2d(size, -size);
2243 glVertex2d(size, 0);
2254 myViewNet(viewNet) {
2259 delete mySaveIndividualFilesPopup;
2266 auto gripSaveElements = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().saveElements;
2268 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2273 mySaveNeteditConfig->create();
2278 mySaveSumoConfig->create();
2283 mySaveNetwork->create();
2285 mySaveIndividualFilesPopup =
new FXPopup(gripSaveElements, POPUP_VERTICAL);
2286 mySaveIndividualFilesPopup->create();
2289 std::string(
"\t") +
TL(
"Save individual files") + std::string(
"\t") +
TL(
"Save individual files."),
2291 mySaveIndividualFiles->create();
2293 mySaveAdditionalElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2296 mySaveAdditionalElements->create();
2298 mySaveDemandElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2301 mySaveDemandElements->create();
2303 mySaveDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2306 mySaveDataElements->create();
2308 mySaveMeanDataElements =
new MFXButtonTooltip(mySaveIndividualFilesPopup, tooltipMenu,
2311 mySaveMeanDataElements->create();
2313 gripSaveElements->recalc();
2315 gripSaveElements->show();
2322 mySaveIndividualFiles->enable();
2324 mySaveIndividualFiles->disable();
2333 myViewNet(viewNet) {
2340 mySwitchButton =
new MFXButtonTooltip(myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().timeSwitch,
2341 myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu(),
2342 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,
2344 mySwitchButton->create();
2363 mySwitchButton->setText(
"H");
2365 mySwitchButton->setText(
"S");
2378 myViewNet(viewNet) {
2381 if (neteditOptions.getBool(
"new")) {
2383 neteditOptions.resetWritable();
2384 neteditOptions.set(
"new",
"false");
2390 delete myNeteditViewsPopup;
2397 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2399 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2402 TL(
"Network") + std::string(
"\t") +
TL(
"Edit network elements") + std::string(
"\t") +
TL(
"Set mode for editing network elements. (F2)"),
2404 networkButton->create();
2407 TL(
"Demand") + std::string(
"\t") +
TL(
"Edit traffic demand elements") + std::string(
"\t") +
TL(
"Set mode for editing traffic demand. (F3)"),
2409 demandButton->create();
2412 TL(
"Data") + std::string(
"\t") +
TL(
"Edit data elements") + std::string(
"\t") +
TL(
"Set mode for editing data demand. (F4)"),
2414 dataButton->create();
2416 myNeteditViewsPopup =
new FXPopup(gripSupermodes, POPUP_VERTICAL);
2417 myNeteditViewsPopup->create();
2420 (std::string(
"\t") +
TL(
"Change netedit view") + std::string(
"\t") +
TL(
"Change netedit view.")).c_str(),
2422 myNeteditViewsButton->create();
2424 myDefaultViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2425 (std::string(
"Default\t") +
TL(
"Set default view") + std::string(
"\t") +
TL(
"Set default view.")).c_str(),
2427 myDefaultViewButton->create();
2429 myJuPedSimViewButton =
new MFXButtonTooltip(myNeteditViewsPopup, toolTipMenu,
2430 (std::string(
"JuPedSim\t") +
TL(
"Set JuPedSim view") + std::string(
"\t") +
TL(
"Set JuPedSim view.")).c_str(),
2432 myJuPedSimViewButton->create();
2433 myNeteditViewsPopup->recalc();
2435 gripSupermodes->setWidth(353);
2437 gripSupermodes->show();
2443 if (!force && (supermode == currentSupermode)) {
2444 myViewNet->setStatusBarText(
TL(
"Mode already selected"));
2445 if (myViewNet->myCurrentFrame !=
nullptr) {
2446 myViewNet->myCurrentFrame->focusUpperElement();
2449 myViewNet->setStatusBarText(
"");
2451 myViewNet->abortOperation(
false);
2453 currentSupermode = supermode;
2457 networkButton->setChecked(
true);
2458 demandButton->setChecked(
false);
2459 dataButton->setChecked(
false);
2461 myViewNet->myNetworkCheckableButtons.showNetworkCheckableButtons();
2463 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2465 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2467 setNetworkEditMode(networkEditMode,
true);
2470 networkButton->setChecked(
false);
2471 demandButton->setChecked(
true);
2472 dataButton->setChecked(
false);
2474 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2476 myViewNet->myDemandCheckableButtons.showDemandCheckableButtons();
2478 myViewNet->myDataCheckableButtons.hideDataCheckableButtons();
2480 setDemandEditMode(demandEditMode,
true);
2482 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2484 if (!myViewNet->myNet->getDemandPathManager()->getPathCalculator()->isPathCalculatorUpdated()) {
2486 myViewNet->myNet->getDemandPathManager()->getPathCalculator()->updatePathCalculator();
2488 myViewNet->myNet->computeDemandElements(myViewNet->myViewParent->getGNEAppWindows());
2492 networkButton->setChecked(
false);
2493 demandButton->setChecked(
false);
2494 dataButton->setChecked(
true);
2496 myViewNet->myNetworkCheckableButtons.hideNetworkCheckableButtons();
2498 myViewNet->myDemandCheckableButtons.hideDemandCheckableButtons();
2500 myViewNet->myDataCheckableButtons.showDataCheckableButtons();
2502 setDataEditMode(dataEditMode,
true);
2504 if (myViewNet->getViewParent()->getGNEAppWindows()->getProcessingMenuCommands().menuCheckRecomputeDataMode->getCheck() == TRUE) {
2506 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2509 for (
const auto&
TAZ : myViewNet->getNet()->getAttributeCarriers()->getAdditionals().at(
SUMO_TAG_TAZ)) {
2510 TAZ.second->resetAdditionalContour();
2514 networkButton->update();
2515 demandButton->update();
2516 dataButton->update();
2518 myViewNet->myViewParent->getGNEAppWindows()->updateSuperModeMenuCommands(currentSupermode);
2525 if ((mode == networkEditMode) && !force) {
2526 myViewNet->setStatusBarText(
TL(
"Network mode already selected"));
2527 if (myViewNet->myCurrentFrame !=
nullptr) {
2528 myViewNet->myCurrentFrame->focusUpperElement();
2531 myViewNet->setStatusBarText(
TL(
"Save modifications in TLS before change mode"));
2532 myViewNet->myCurrentFrame->focusUpperElement();
2534 myViewNet->setStatusBarText(
"");
2535 myViewNet->abortOperation(
false);
2537 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2539 networkEditMode = mode;
2560 myViewNet->myNet->computeNetwork(myViewNet->myViewParent->getGNEAppWindows());
2566 myViewNet->updateCursor();
2568 myViewNet->updateNetworkModeSpecificControls();
2575 if ((mode == demandEditMode) && !force) {
2576 myViewNet->setStatusBarText(
TL(
"Demand mode already selected"));
2577 if (myViewNet->myCurrentFrame !=
nullptr) {
2578 myViewNet->myCurrentFrame->focusUpperElement();
2581 myViewNet->setStatusBarText(
"");
2582 myViewNet->abortOperation(
false);
2584 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2586 demandEditMode = mode;
2601 myViewNet->updateCursor();
2603 myViewNet->updateDemandModeSpecificControls();
2610 if ((mode == dataEditMode) && !force) {
2611 myViewNet->setStatusBarText(
TL(
"Data mode already selected"));
2612 if (myViewNet->myCurrentFrame !=
nullptr) {
2613 myViewNet->myCurrentFrame->focusUpperElement();
2616 myViewNet->setStatusBarText(
"");
2617 myViewNet->abortOperation(
false);
2619 myViewNet->myEditNetworkElementShapes.stopEditCustomShape();
2621 dataEditMode = mode;
2634 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
2635 dataSet.second->updateAttributeColors();
2638 myViewNet->updateCursor();
2640 myViewNet->updateDataModeSpecificControls();
2666 auto gripSupermodes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().superModes;
2668 auto& fileMenuCommands = myViewNet->getViewParent()->getGNEAppWindows()->getFileMenuCommands();
2672 gripSupermodes->setWidth(353);
2674 fileMenuCommands.setDefaultView();
2677 gripSupermodes->setWidth(250);
2679 fileMenuCommands.setJuPedSimView();
2682 myViewNet->viewUpdated();
2702 myViewNet(viewNet) {
2709 auto gripModes = myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().modes;
2711 auto toolTipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2714 (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)")),
2717 menuCheckToggleGrid->setChecked(
false);
2718 menuCheckToggleGrid->create();
2720 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2721 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
2724 menuCheckToggleDrawJunctionShape->setChecked(
false);
2725 menuCheckToggleDrawJunctionShape->create();
2728 (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.")),
2731 menuCheckDrawSpreadVehicles->setChecked(
false);
2732 menuCheckDrawSpreadVehicles->create();
2735 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
2738 menuCheckShowDemandElements->setChecked(
false);
2739 menuCheckShowDemandElements->create();
2742 (std::string(
"\t") +
TL(
"Clicks target lanes") + std::string(
"\t") +
TL(
"Toggle whether clicking should inspect/select/delete lanes instead of edges.")),
2745 menuCheckSelectEdges->create();
2748 (std::string(
"\t") +
TL(
"Show connections over junctions") + std::string(
"\t") +
TL(
"Toggle show connections over junctions.")),
2751 menuCheckShowConnections->setChecked(myViewNet->getVisualisationSettings().showLane2Lane);
2752 menuCheckShowConnections->create();
2755 (std::string(
"\t") +
TL(
"Hide connections") + std::string(
"\t") +
TL(
"Toggle hide connections.")),
2758 menuCheckHideConnections->setChecked(
false);
2759 menuCheckHideConnections->create();
2761 menuCheckShowAdditionalSubElements =
new MFXCheckableButton(
false, gripModes, toolTipMenu,
2762 (std::string(
"\t") +
TL(
"Show additional sub-elements") + std::string(
"\t") +
TL(
"Toggle show additional sub-elements.")),
2765 menuCheckShowAdditionalSubElements->setChecked(
false);
2766 menuCheckShowAdditionalSubElements->create();
2769 (std::string(
"\t") +
TL(
"Show TAZ elements") + std::string(
"\t") +
TL(
"Toggle show TAZ elements.")),
2772 menuCheckShowTAZElements->setChecked(
false);
2773 menuCheckShowTAZElements->create();
2776 (std::string(
"\t") +
TL(
"Automatic select junctions") + std::string(
"\t") +
TL(
"Toggle whether selecting multiple edges should automatically select their junctions.")),
2779 menuCheckExtendSelection->setChecked(
true);
2780 menuCheckExtendSelection->create();
2783 (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.")),
2786 menuCheckChangeAllPhases->setChecked(
false);
2787 menuCheckChangeAllPhases->create();
2790 (std::string(
"\t") +
TL(
"Automatic merging junction") + std::string(
"\t") +
TL(
"Toggle ask for confirmation before merging junction.")),
2793 menuCheckMergeAutomatically->create();
2796 (std::string(
"\t") +
TL(
"Edge chain mode") + std::string(
"\t") +
TL(
"Create consecutive edges with a single click (hit ESC to cancel chain).")),
2799 menuCheckChainEdges->setChecked(
false);
2800 menuCheckChainEdges->create();
2803 (std::string(
"\t") +
TL(
"Edge opposite direction") + std::string(
"\t") +
TL(
"Automatically create an edge in the opposite direction.")),
2806 menuCheckAutoOppositeEdge->setChecked(
false);
2807 menuCheckAutoOppositeEdge->create();
2810 (std::string(
"\t") +
TL(
"Move elevation") + std::string(
"\t") +
TL(
"Apply mouse movement to elevation instead of x,y position.")),
2813 menuCheckMoveElevation->setChecked(
false);
2814 menuCheckMoveElevation->create();
2817 (std::string(
"\t") +
TL(
"Show bubbles") + std::string(
"\t") +
TL(
"Toggle show bubbles over junctions shapes.")),
2820 menuCheckShowJunctionBubble->setChecked(
false);
2821 menuCheckShowJunctionBubble->create();
2824 gripModes->recalc();
2830 menuCheckToggleGrid->hide();
2831 menuCheckToggleDrawJunctionShape->hide();
2832 menuCheckDrawSpreadVehicles->hide();
2833 menuCheckShowDemandElements->hide();
2834 menuCheckSelectEdges->hide();
2835 menuCheckShowConnections->hide();
2836 menuCheckHideConnections->hide();
2837 menuCheckShowAdditionalSubElements->hide();
2838 menuCheckShowTAZElements->hide();
2839 menuCheckExtendSelection->hide();
2840 menuCheckChangeAllPhases->hide();
2841 menuCheckMergeAutomatically->hide();
2842 menuCheckShowJunctionBubble->hide();
2843 menuCheckMoveElevation->hide();
2844 menuCheckChainEdges->hide();
2845 menuCheckAutoOppositeEdge->hide();
2852 if (menuCheckToggleGrid->shown()) {
2853 commands.push_back(menuCheckToggleGrid);
2855 if (menuCheckToggleDrawJunctionShape->shown()) {
2856 commands.push_back(menuCheckToggleDrawJunctionShape);
2858 if (menuCheckDrawSpreadVehicles->shown()) {
2859 commands.push_back(menuCheckDrawSpreadVehicles);
2861 if (menuCheckShowDemandElements->shown()) {
2862 commands.push_back(menuCheckShowDemandElements);
2864 if (menuCheckSelectEdges->shown()) {
2865 commands.push_back(menuCheckSelectEdges);
2867 if (menuCheckShowConnections->shown()) {
2868 commands.push_back(menuCheckShowConnections);
2870 if (menuCheckHideConnections->shown()) {
2871 commands.push_back(menuCheckHideConnections);
2873 if (menuCheckShowAdditionalSubElements->shown()) {
2874 commands.push_back(menuCheckShowAdditionalSubElements);
2876 if (menuCheckShowTAZElements->shown()) {
2877 commands.push_back(menuCheckShowTAZElements);
2879 if (menuCheckExtendSelection->shown()) {
2880 commands.push_back(menuCheckExtendSelection);
2882 if (menuCheckChangeAllPhases->shown()) {
2883 commands.push_back(menuCheckChangeAllPhases);
2885 if (menuCheckMergeAutomatically->shown()) {
2886 commands.push_back(menuCheckMergeAutomatically);
2888 if (menuCheckChainEdges->shown()) {
2889 commands.push_back(menuCheckChainEdges);
2891 if (menuCheckAutoOppositeEdge->shown()) {
2892 commands.push_back(menuCheckAutoOppositeEdge);
2894 if (menuCheckMoveElevation->shown()) {
2895 commands.push_back(menuCheckMoveElevation);
2897 if (menuCheckShowJunctionBubble->shown()) {
2898 commands.push_back(menuCheckShowJunctionBubble);
2905 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
2911 if (menuCheckShowDemandElements->shown()) {
2912 return (menuCheckShowDemandElements->amChecked() == TRUE);
2922 if (menuCheckSelectEdges->shown()) {
2923 return (menuCheckSelectEdges->amChecked() != TRUE);
2933 if (myViewNet->myEditModes.isCurrentSupermodeData()) {
2937 return (menuCheckHideConnections->amChecked() == FALSE);
2940 }
else if (myViewNet->myEditModes.isCurrentSupermodeNetwork() && menuCheckShowConnections->shown() ==
false) {
2943 return (myViewNet->getVisualisationSettings().showLane2Lane);
2950 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2952 }
else if (menuCheckShowAdditionalSubElements->shown() ==
false) {
2955 return menuCheckShowAdditionalSubElements->amChecked();
2962 if (!myViewNet->myEditModes.isCurrentSupermodeNetwork()) {
2964 }
else if (menuCheckShowTAZElements->shown() ==
false) {
2967 return menuCheckShowTAZElements->amChecked();
2974 if (menuCheckMoveElevation->shown()) {
2975 return (menuCheckMoveElevation->amChecked() == TRUE);
2986 myViewNet(viewNet) {
2993 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
2995 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
2998 (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)")),
3001 menuCheckToggleGrid->setChecked(
false);
3002 menuCheckToggleGrid->create();
3004 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3005 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
3008 menuCheckToggleDrawJunctionShape->setChecked(
false);
3009 menuCheckToggleDrawJunctionShape->create();
3012 (std::string(
"\t") +
TL(
"Draw vehicles spread/depart position") + std::string(
"\t") +
TL(
"Draw vehicles spread in lane or in depart position.")),
3015 menuCheckDrawSpreadVehicles->setChecked(
false);
3016 menuCheckDrawSpreadVehicles->create();
3019 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
3022 menuCheckHideShapes->setChecked(
false);
3023 menuCheckHideShapes->create();
3026 (std::string(
"\t") +
TL(
"Show all trips") + std::string(
"\t") +
TL(
"Toggle show all trips (requires updated demand - F5).")),
3029 menuCheckShowAllTrips->setChecked(
false);
3030 menuCheckShowAllTrips->create();
3033 (std::string(
"\t") +
TL(
"Show all person plans") + std::string(
"\t") +
TL(
"Toggle show all person plans.")),
3036 menuCheckShowAllPersonPlans->setChecked(
false);
3037 menuCheckShowAllPersonPlans->create();
3040 (std::string(
"\t") +
TL(
"Lock selected person") + std::string(
"\t") +
TL(
"Toggle lock selected person.")),
3043 menuCheckLockPerson->setChecked(
false);
3044 menuCheckLockPerson->create();
3046 menuCheckShowAllContainerPlans =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3047 (std::string(
"\t") +
TL(
"Show all containers plans") + std::string(
"\t") +
TL(
"Toggle show all container plans.")),
3050 menuCheckShowAllContainerPlans->setChecked(
false);
3051 menuCheckShowAllContainerPlans->create();
3054 (std::string(
"\t") +
TL(
"Lock selected container") + std::string(
"\t") +
TL(
"Toggle lock selected container.")),
3057 menuCheckLockContainer->setChecked(
false);
3058 menuCheckLockContainer->create();
3060 menuCheckHideNonInspectedDemandElements =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3061 (std::string(
"\t") +
TL(
"Show non-inspected demand elements") + std::string(
"\t") +
TL(
"Toggle show non-inspected demand elements.")),
3064 menuCheckHideNonInspectedDemandElements->setChecked(
false);
3065 menuCheckHideNonInspectedDemandElements->create();
3067 menuCheckShowOverlappedRoutes =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3068 (std::string(
"\t") +
TL(
"Show number of overlapped routes") + std::string(
"\t") +
TL(
"Toggle show number of overlapped routes.")),
3071 menuCheckShowOverlappedRoutes->setChecked(
false);
3072 menuCheckShowOverlappedRoutes->create();
3075 gripModes->recalc();
3081 menuCheckToggleGrid->hide();
3082 menuCheckToggleDrawJunctionShape->hide();
3083 menuCheckDrawSpreadVehicles->hide();
3084 menuCheckHideShapes->hide();
3085 menuCheckShowAllTrips->hide();
3086 menuCheckShowAllPersonPlans->hide();
3087 menuCheckLockPerson->hide();
3088 menuCheckShowAllContainerPlans->hide();
3089 menuCheckLockContainer->hide();
3090 menuCheckHideNonInspectedDemandElements->hide();
3091 menuCheckShowOverlappedRoutes->hide();
3098 if (menuCheckToggleGrid->shown()) {
3099 commands.push_back(menuCheckToggleGrid);
3101 if (menuCheckToggleDrawJunctionShape->shown()) {
3102 commands.push_back(menuCheckToggleDrawJunctionShape);
3104 if (menuCheckDrawSpreadVehicles->shown()) {
3105 commands.push_back(menuCheckDrawSpreadVehicles);
3107 if (menuCheckHideShapes->shown()) {
3108 commands.push_back(menuCheckHideShapes);
3110 if (menuCheckShowAllTrips->shown()) {
3111 commands.push_back(menuCheckShowAllTrips);
3113 if (menuCheckShowAllPersonPlans->shown() && menuCheckShowAllPersonPlans->isEnabled()) {
3114 commands.push_back(menuCheckShowAllPersonPlans);
3116 if (menuCheckLockPerson->shown() && menuCheckLockPerson->isEnabled()) {
3117 commands.push_back(menuCheckLockPerson);
3119 if (menuCheckShowAllContainerPlans->shown() && menuCheckShowAllContainerPlans->isEnabled()) {
3120 commands.push_back(menuCheckShowAllContainerPlans);
3122 if (menuCheckLockContainer->shown() && menuCheckLockContainer->isEnabled()) {
3123 commands.push_back(menuCheckLockContainer);
3125 if (menuCheckHideNonInspectedDemandElements->shown()) {
3126 commands.push_back(menuCheckHideNonInspectedDemandElements);
3128 if (menuCheckShowOverlappedRoutes->shown()) {
3129 commands.push_back(menuCheckShowOverlappedRoutes);
3136 return (menuCheckDrawSpreadVehicles->amChecked() == TRUE);
3142 if (menuCheckHideNonInspectedDemandElements->shown()) {
3143 const auto& inspectedElements = myViewNet->getInspectedElements();
3145 if ((menuCheckHideNonInspectedDemandElements->amChecked() == FALSE) || (inspectedElements.getFirstAC() ==
nullptr)) {
3148 }
else if (inspectedElements.getFirstAC() && inspectedElements.getFirstAC()->getTagProperty()->isDemandElement()) {
3149 if (inspectedElements.isACInspected(demandElement)) {
3155 if (inspectedElements.isACInspected(demandElementChild)) {
3161 if (inspectedElements.isACInspected(demandElementParent)) {
3181 if (menuCheckHideShapes->shown()) {
3182 return (menuCheckHideShapes->amChecked() == FALSE);
3191 return (menuCheckShowAllTrips->amChecked() == TRUE);
3197 if (menuCheckShowAllPersonPlans->isEnabled()) {
3198 return (menuCheckShowAllPersonPlans->amChecked() == TRUE);
3207 myLockedPerson = person;
3213 myLockedPerson =
nullptr;
3219 return myLockedPerson;
3225 if (menuCheckShowAllContainerPlans->isEnabled()) {
3226 return (menuCheckShowAllContainerPlans->amChecked() == TRUE);
3235 myLockedContainer = container;
3241 myLockedContainer =
nullptr;
3247 if (menuCheckShowOverlappedRoutes->isEnabled()) {
3248 return (menuCheckShowOverlappedRoutes->amChecked() == TRUE);
3257 return myLockedContainer;
3265 myViewNet(viewNet) {
3272 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3274 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3276 menuCheckToggleDrawJunctionShape =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3277 (std::string(
"\t") +
TL(
"Hide junction shape") + std::string(
"\t") +
TL(
"Toggle hiding junction shape. (Ctrl+J)")),
3280 menuCheckToggleDrawJunctionShape->setChecked(
false);
3281 menuCheckToggleDrawJunctionShape->create();
3284 (std::string(
"\t") +
TL(
"Show additionals") + std::string(
"\t") +
TL(
"Toggle show additionals.")),
3287 menuCheckShowAdditionals->create();
3290 (std::string(
"\t") +
TL(
"Show shapes") + std::string(
"\t") +
TL(
"Toggle show shapes (Polygons and POIs).")),
3293 menuCheckShowShapes->create();
3296 (std::string(
"\t") +
TL(
"Show demand elements") + std::string(
"\t") +
TL(
"Toggle show demand elements.")),
3299 menuCheckShowDemandElements->create();
3302 (std::string(
"\t") +
TL(
"Draw TAZREL drawing mode") + std::string(
"\t") +
TL(
"Toggle draw TAZREL drawing mode.")),
3305 menuCheckToggleTAZRelDrawing->create();
3308 (std::string(
"\t") +
TL(
"Toggle draw TAZ fill") + std::string(
"\t") +
TL(
"Toggle draw TAZ fill")),
3311 menuCheckToggleTAZDrawFill->create();
3313 menuCheckToggleTAZRelOnlyFrom =
new MFXCheckableButton(
false, gripModes, tooltipMenu,
3314 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only from") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only from")),
3317 menuCheckToggleTAZRelOnlyFrom->create();
3320 (std::string(
"\t") +
TL(
"Toggle draw TAZRel only to") + std::string(
"\t") +
TL(
"Toggle draw TAZRel only to")),
3323 menuCheckToggleTAZRelOnlyTo->create();
3326 gripModes->recalc();
3332 menuCheckToggleDrawJunctionShape->hide();
3333 menuCheckShowAdditionals->hide();
3334 menuCheckShowShapes->hide();
3335 menuCheckShowDemandElements->hide();
3336 menuCheckToggleTAZRelDrawing->hide();
3337 menuCheckToggleTAZDrawFill->hide();
3338 menuCheckToggleTAZRelOnlyFrom->hide();
3339 menuCheckToggleTAZRelOnlyTo->hide();
3346 if (menuCheckToggleDrawJunctionShape->shown()) {
3347 commands.push_back(menuCheckToggleDrawJunctionShape);
3349 if (menuCheckShowAdditionals->shown()) {
3350 commands.push_back(menuCheckShowAdditionals);
3352 if (menuCheckShowShapes->shown()) {
3353 commands.push_back(menuCheckShowShapes);
3355 if (menuCheckShowDemandElements->shown()) {
3356 commands.push_back(menuCheckShowDemandElements);
3358 if (menuCheckToggleTAZRelDrawing->shown()) {
3359 commands.push_back(menuCheckToggleTAZRelDrawing);
3361 if (menuCheckToggleTAZDrawFill->shown()) {
3362 commands.push_back(menuCheckToggleTAZDrawFill);
3364 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3365 commands.push_back(menuCheckToggleTAZRelOnlyFrom);
3367 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3368 commands.push_back(menuCheckToggleTAZRelOnlyTo);
3375 if (menuCheckShowAdditionals->shown()) {
3376 return (menuCheckShowAdditionals->amChecked() == TRUE);
3385 if (menuCheckShowShapes->shown()) {
3386 return (menuCheckShowShapes->amChecked() == TRUE);
3395 if (menuCheckShowDemandElements->shown()) {
3396 return (menuCheckShowDemandElements->amChecked() == TRUE);
3405 return (menuCheckToggleTAZRelDrawing->amChecked() != TRUE);
3411 if (menuCheckToggleTAZDrawFill->shown()) {
3412 return (menuCheckToggleTAZDrawFill->amChecked() != TRUE);
3421 if (menuCheckToggleTAZRelOnlyFrom->shown()) {
3422 return (menuCheckToggleTAZRelOnlyFrom->amChecked() != TRUE);
3431 if (menuCheckToggleTAZRelOnlyTo->shown()) {
3432 return (menuCheckToggleTAZRelOnlyTo->amChecked() != TRUE);
3443 myViewNet(viewNet) {
3450 FXLabel* genericDataLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3452 genericDataLabel->create();
3454 myGenericDataTypesComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3457 myGenericDataTypesComboBox->create();
3459 myGenericDataTypesComboBox->appendIconItem(
"<all>");
3464 FXLabel* dataSetLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3466 dataSetLabel->create();
3468 myDataSetsComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3471 myDataSetsComboBox->create();
3473 myIntervalCheckBox =
new FXCheckButton(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3475 myIntervalCheckBox->create();
3477 myBeginTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3479 myBeginTextField->create();
3481 myEndTextField =
new FXTextField(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3483 myEndTextField->create();
3485 FXLabel* parameterLabel =
new FXLabel(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3487 parameterLabel->create();
3489 myParametersComboBox =
new MFXComboBoxIcon(myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar,
3492 myParametersComboBox->create();
3494 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->recalc();
3501 updateIntervalBar();
3503 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->show();
3510 myViewNet->myViewParent->getGNEAppWindows()->getToolbarsGrip().intervalBar->hide();
3517 if (myUpdateInterval && myViewNet->getNet()) {
3524 myParameters.clear();
3526 for (
const auto& dataSet : myViewNet->getNet()->getAttributeCarriers()->getDataSets()) {
3528 myDataSets.push_back(dataSet.second->getID());
3530 for (
const auto& interval : dataSet.second->getDataIntervalChildren()) {
3533 begin = interval.first;
3536 end = interval.first;
3539 for (
const auto& genericData : interval.second->getGenericDataChildren()) {
3541 for (
const auto& parameter : genericData->getParametersMap()) {
3542 myParameters.insert(parameter.first);
3548 const std::string previousDataSet = myDataSetsComboBox->getText().text();
3550 const std::string previousBegin = (myIntervalCheckBox->getCheck() == TRUE) ? myBeginTextField->getText().text() :
"";
3551 const std::string previousEnd = (myIntervalCheckBox->getCheck() == TRUE) ? myEndTextField->getText().text() :
"";
3553 const std::string previousParameter = myParametersComboBox->getText().text();
3555 myDataSetsComboBox->clearItems();
3556 myParametersComboBox->clearItems();
3558 myDataSetsComboBox->appendIconItem(
"<all>");
3559 myParametersComboBox->appendIconItem(
"<all>");
3561 for (
const auto& dataSet : myDataSets) {
3562 myDataSetsComboBox->appendIconItem(dataSet.c_str());
3565 myBeginTextField->setText(
toString(begin).c_str());
3566 myEndTextField->setText(
toString(end).c_str());
3568 for (
const auto& parameter : myParameters) {
3569 myParametersComboBox->appendIconItem(parameter.c_str());
3572 myDataSetsComboBox->setCurrentItem(0, FALSE);
3573 for (
int i = 0; i < myDataSetsComboBox->getNumItems(); i++) {
3574 if (myDataSetsComboBox->getItemText(i) == previousDataSet) {
3575 myDataSetsComboBox->setCurrentItem(i);
3579 if (myIntervalCheckBox->getCheck() == TRUE) {
3580 myBeginTextField->setText(previousBegin.c_str());
3581 myEndTextField->setText(previousEnd.c_str());
3584 myParametersComboBox->setCurrentItem(0, FALSE);
3585 for (
int i = 0; i < myParametersComboBox->getNumItems(); i++) {
3586 if (myParametersComboBox->getItemText(i) == previousParameter) {
3587 myParametersComboBox->setCurrentItem(i);
3594 enableIntervalBar();
3596 disableIntervalBar();
3599 myUpdateInterval =
false;
3606 myUpdateInterval =
true;
3612 if (myGenericDataTypesComboBox->isEnabled() && (myGenericDataTypesComboBox->getTextColor() == FXRGB(0, 0, 0))) {
3627 if (!myDataSetsComboBox->isEnabled() ||
3628 (myDataSetsComboBox->getCurrentItem() == 0) ||
3629 (myDataSetsComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3639 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3642 return GNEAttributeCarrier::parse<double>(myBeginTextField->getText().text());
3649 if (!myIntervalCheckBox->isEnabled() || (myIntervalCheckBox->getCheck() == FALSE)) {
3652 return GNEAttributeCarrier::parse<double>(myEndTextField->getText().text());
3659 if (!myParametersComboBox->isEnabled() ||
3660 (myParametersComboBox->getCurrentItem() == 0) ||
3661 (myParametersComboBox->getTextColor() == FXRGB(255, 0, 0))) {
3664 return myParametersComboBox->getText().text();
3671 if ((myGenericDataTypesComboBox->getText() ==
"<all>") ||
3675 myGenericDataTypesComboBox->setTextColor(FXRGB(0, 0, 0));
3677 myGenericDataTypesComboBox->setTextColor(FXRGB(255, 0, 0));
3680 myViewNet->updateViewNet();
3687 if (std::find(myDataSets.begin(), myDataSets.end(), myDataSetsComboBox->getText().text()) != myDataSets.end()) {
3688 myDataSetsComboBox->setTextColor(FXRGB(0, 0, 0));
3690 myDataSetsComboBox->setTextColor(FXRGB(255, 0, 0));
3693 myViewNet->updateViewNet();
3700 if (myIntervalCheckBox->isEnabled() && (myIntervalCheckBox->getCheck() == TRUE)) {
3701 myBeginTextField->enable();
3702 myEndTextField->enable();
3704 myBeginTextField->disable();
3705 myEndTextField->disable();
3708 myViewNet->updateViewNet();
3714 if (myBeginTextField->getText().empty()) {
3715 myBeginTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMinimumBegin()).c_str());
3716 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3717 }
else if (GNEAttributeCarrier::canParse<double>(myBeginTextField->getText().text())) {
3718 myBeginTextField->setTextColor(FXRGB(0, 0, 0));
3720 myBeginTextField->setTextColor(FXRGB(255, 0, 0));
3723 myViewNet->updateViewNet();
3729 if (myEndTextField->getText().empty()) {
3730 myEndTextField->setText(
toString(myViewNet->getNet()->getDataSetIntervalMaximumEnd()).c_str());
3731 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3732 }
else if (GNEAttributeCarrier::canParse<double>(myEndTextField->getText().text())) {
3733 myEndTextField->setTextColor(FXRGB(0, 0, 0));
3735 myEndTextField->setTextColor(FXRGB(255, 0, 0));
3738 myViewNet->updateViewNet();
3745 if (myParameters.count(myParametersComboBox->getText().text()) > 0) {
3746 myParametersComboBox->setTextColor(FXRGB(0, 0, 0));
3748 myParametersComboBox->setTextColor(FXRGB(255, 0, 0));
3751 myViewNet->updateViewNet();
3759 myGenericDataTypesComboBox->enable();
3760 myDataSetsComboBox->enable();
3761 myIntervalCheckBox->enable();
3762 if (myIntervalCheckBox->getCheck() == TRUE) {
3763 myBeginTextField->enable();
3764 myEndTextField->enable();
3766 myBeginTextField->disable();
3767 myEndTextField->disable();
3769 myParametersComboBox->enable();
3776 myGenericDataTypesComboBox->disable();
3777 myDataSetsComboBox->disable();
3778 myIntervalCheckBox->disable();
3779 myBeginTextField->disable();
3780 myEndTextField->disable();
3781 myParametersComboBox->disable();
3789 myViewNet(viewNet) {
3796 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3798 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3801 std::string(
"\t") +
TL(
"Inspect mode") + std::string(
"\t") +
TL(
"Mode to inspect elements and change their attributes. (I)"),
3803 inspectButton->create();
3806 std::string(
"\t") +
TL(
"Delete mode") + std::string(
"\t") +
TL(
"Mode for deleting elements. (D)"),
3808 deleteButton->create();
3811 std::string(
"\t") +
TL(
"Select mode") + std::string(
"\t") +
TL(
"Mode for selecting elements. (S)"),
3813 selectButton->create();
3815 gripModes->recalc();
3821 inspectButton->show();
3822 deleteButton->show();
3823 selectButton->show();
3829 inspectButton->hide();
3830 deleteButton->hide();
3831 selectButton->hide();
3837 inspectButton->setChecked(
false);
3838 deleteButton->setChecked(
false);
3839 selectButton->setChecked(
false);
3845 inspectButton->update();
3846 deleteButton->update();
3847 selectButton->update();
3855 myViewNet(viewNet) {
3862 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
3864 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
3867 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
3869 moveNetworkElementsButton->create();
3872 std::string(
"\t") +
TL(
"Edge mode") + std::string(
"\t") +
TL(
"Mode for creating junctions and edges. (E)"),
3874 createEdgeButton->create();
3877 std::string(
"\t") +
TL(
"Traffic light mode") + std::string(
"\t") +
TL(
"Mode for editing traffic lights over junctions. (T)"),
3879 trafficLightButton->create();
3882 std::string(
"\t") +
TL(
"Connection mode") + std::string(
"\t") +
TL(
"Mode for edit connections between lanes. (C)"),
3884 connectionButton->create();
3887 std::string(
"\t") +
TL(
"Prohibition mode") + std::string(
"\t") +
TL(
"Mode for editing connection prohibitions. (H)"),
3889 prohibitionButton->create();
3892 std::string(
"\t") +
TL(
"Crossing mode") + std::string(
"\t") +
TL(
"Mode for creating crossings between edges. (R)"),
3894 crossingButton->create();
3897 std::string(
"\t") +
TL(
"Additional mode") + std::string(
"\t") +
TL(
"Mode for creating additional elements. (A)"),
3899 additionalButton->create();
3902 std::string(
"\t") +
TL(
"Wire mode") + std::string(
"\t") +
TL(
"Mode for editing overhead wires. (W)"),
3904 wireButton->create();
3907 std::string(
"\t") +
TL(
"TAZ mode") + std::string(
"\t") +
TL(
"Mode for creating Traffic Assignment Zones. (Z)"),
3909 TAZButton->create();
3912 std::string(
"\t") +
TL(
"Polygon mode") + std::string(
"\t") +
TL(
"Mode for creating polygons and POIs. (P)"),
3914 shapeButton->create();
3917 std::string(
"\t") +
TL(
"Decal mode") + std::string(
"\t") +
TL(
"Mode for editing decals. (U)"),
3919 decalButton->create();
3921 gripModes->recalc();
3928 if (myViewNet->getEditModes().isJuPedSimView()) {
3929 moveNetworkElementsButton->show();
3930 createEdgeButton->show();
3931 connectionButton->hide();
3932 trafficLightButton->hide();
3933 additionalButton->show();
3934 crossingButton->show();
3936 shapeButton->show();
3937 prohibitionButton->hide();
3939 decalButton->hide();
3941 moveNetworkElementsButton->show();
3942 createEdgeButton->show();
3943 connectionButton->show();
3944 trafficLightButton->show();
3945 additionalButton->show();
3946 crossingButton->show();
3948 shapeButton->show();
3949 prohibitionButton->show();
3951 decalButton->show();
3958 moveNetworkElementsButton->hide();
3959 createEdgeButton->hide();
3960 connectionButton->hide();
3961 trafficLightButton->hide();
3962 additionalButton->hide();
3963 crossingButton->hide();
3965 shapeButton->hide();
3966 prohibitionButton->hide();
3968 decalButton->hide();
3974 moveNetworkElementsButton->setChecked(
false);
3975 createEdgeButton->setChecked(
false);
3976 connectionButton->setChecked(
false);
3977 trafficLightButton->setChecked(
false);
3978 additionalButton->setChecked(
false);
3979 crossingButton->setChecked(
false);
3980 TAZButton->setChecked(
false);
3981 shapeButton->setChecked(
false);
3982 prohibitionButton->setChecked(
false);
3983 wireButton->setChecked(
false);
3984 decalButton->setChecked(
false);
3990 moveNetworkElementsButton->update();
3991 createEdgeButton->update();
3992 connectionButton->update();
3993 trafficLightButton->update();
3994 additionalButton->update();
3995 crossingButton->update();
3996 TAZButton->update();
3997 shapeButton->update();
3998 prohibitionButton->update();
3999 wireButton->update();
4000 decalButton->update();
4008 myViewNet(viewNet) {
4015 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
4017 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
4020 std::string(
"\t") +
TL(
"Move mode") + std::string(
"\t") +
TL(
"Mode for moving elements. (M)"),
4022 moveDemandElementsButton->create();
4025 std::string(
"\t") +
TL(
"Route mode") + std::string(
"\t") +
TL(
"Mode for creating routes. (R)"),
4027 routeButton->create();
4030 std::string(
"\t") +
TL(
"Route distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing rout distributions. (W)"),
4032 routeDistributionButton->create();
4035 std::string(
"\t") +
TL(
"Vehicle mode") + std::string(
"\t") +
TL(
"Mode for creating vehicles. (V)"),
4037 vehicleButton->create();
4040 std::string(
"\t") +
TL(
"Type mode") + std::string(
"\t") +
TL(
"Mode for creating types (of vehicles, persons and containers). (T)"),
4042 typeButton->create();
4045 std::string(
"\t") +
TL(
"Type distribution mode") + std::string(
"\t") +
TL(
"Mode for creating and editing type distribution. (U)"),
4047 typeDistributionButton->create();
4050 std::string(
"\t") +
TL(
"Stop mode") + std::string(
"\t") +
TL(
"Mode for creating stops. (A)"),
4052 stopButton->create();
4055 std::string(
"\t") +
TL(
"Person mode") + std::string(
"\t") +
TL(
"Mode for creating persons. (P)"),
4057 personButton->create();
4060 std::string(
"\t") +
TL(
"Person plan mode") + std::string(
"\t") +
TL(
"Mode for creating person plans. (L)"),
4062 personPlanButton->create();
4065 std::string(
"\t") +
TL(
"Container mode") + std::string(
"\t") +
TL(
"Mode for creating containers. (C)"),
4067 containerButton->create();
4070 std::string(
"\t") +
TL(
"Container plan mode") + std::string(
"\t") +
TL(
"Mode for creating container plans. (H)"),
4072 containerPlanButton->create();
4074 gripModes->recalc();
4080 if (myViewNet->getEditModes().isJuPedSimView()) {
4081 moveDemandElementsButton->hide();
4082 routeButton->show();
4083 routeDistributionButton->show();
4084 vehicleButton->hide();
4086 typeDistributionButton->show();
4088 personButton->show();
4089 personPlanButton->show();
4090 containerButton->hide();
4091 containerPlanButton->hide();
4093 moveDemandElementsButton->show();
4094 routeButton->show();
4095 routeDistributionButton->show();
4096 vehicleButton->show();
4098 typeDistributionButton->show();
4100 personButton->show();
4101 personPlanButton->show();
4102 containerButton->show();
4103 containerPlanButton->show();
4110 moveDemandElementsButton->hide();
4111 routeButton->hide();
4112 routeDistributionButton->hide();
4113 vehicleButton->hide();
4115 typeDistributionButton->hide();
4117 personButton->hide();
4118 personPlanButton->hide();
4119 containerButton->hide();
4120 containerPlanButton->hide();
4126 moveDemandElementsButton->setChecked(
false);
4127 routeButton->setChecked(
false);
4128 routeDistributionButton->setChecked(
false);
4129 vehicleButton->setChecked(
false);
4130 typeButton->setChecked(
false);
4131 typeDistributionButton->setChecked(
false);
4132 stopButton->setChecked(
false);
4133 personButton->setChecked(
false);
4134 personPlanButton->setChecked(
false);
4135 containerButton->setChecked(
false);
4136 containerPlanButton->setChecked(
false);
4142 moveDemandElementsButton->update();
4143 routeButton->update();
4144 routeDistributionButton->update();
4145 vehicleButton->update();
4146 typeButton->update();
4147 typeDistributionButton->update();
4148 stopButton->update();
4149 personButton->update();
4150 personPlanButton->update();
4151 containerButton->update();
4152 containerPlanButton->update();
4160 myViewNet(viewNet) {
4167 auto gripModes = myViewNet->getViewParent()->getGNEAppWindows()->getToolbarsGrip().modes;
4169 auto tooltipMenu = myViewNet->myViewParent->getGNEAppWindows()->getStaticTooltipMenu();
4172 std::string(
"\t") +
TL(
"Edge data mode") + std::string(
"\t") +
TL(
"Mode for creating edge datas. (E)"),
4174 edgeDataButton->create();
4177 std::string(
"\t") +
TL(
"Edge relation data mode") + std::string(
"\t") +
TL(
"Mode for creating edge relation datas. (R)"),
4179 edgeRelDataButton->create();
4182 std::string(
"\t") +
TL(
"TAZ relation data mode") + std::string(
"\t") +
TL(
"Mode for creating TAZ relation datas. (Z)"),
4184 TAZRelDataButton->create();
4187 std::string(
"\t") +
TL(
"MeanData mode") + std::string(
"\t") +
TL(
"Mode for MeanData elements. (M)"),
4189 meanDataButton->create();
4191 gripModes->recalc();
4197 edgeDataButton->show();
4198 edgeRelDataButton->show();
4199 TAZRelDataButton->show();
4200 meanDataButton->show();
4206 edgeDataButton->hide();
4207 edgeRelDataButton->hide();
4208 TAZRelDataButton->hide();
4209 meanDataButton->hide();
4215 edgeDataButton->setChecked(
false);
4216 edgeRelDataButton->setChecked(
false);
4217 TAZRelDataButton->setChecked(
false);
4218 meanDataButton->setChecked(
false);
4224 edgeDataButton->update();
4225 edgeRelDataButton->update();
4226 TAZRelDataButton->update();
4227 meanDataButton->update();
4242 if (element && (myEditedNetworkElement ==
nullptr)) {
4244 myPreviousNetworkEditMode = myViewNet->myEditModes.networkEditMode;
4248 myEditedNetworkElement = element;
4252 myViewNet->updateViewNet();
4260 if (myEditedNetworkElement !=
nullptr) {
4262 myEditedNetworkElement->setShapeEdited(
false);
4264 myEditedNetworkElement =
nullptr;
4266 if (myViewNet->myEditModes.networkEditMode != myPreviousNetworkEditMode) {
4267 myViewNet->myEditModes.setNetworkEditMode(myPreviousNetworkEditMode);
4276 if (myEditedNetworkElement !=
nullptr) {
4278 stopEditCustomShape();
4285 return myEditedNetworkElement;
4295 const double size,
const double offsetx,
const double offsety) {
4297 if (checkDrawing(d, AC, type, exaggeration)) {
4303 glTranslated(offsetx, offsety, 0);
4305 glRotated(180, 0, 0, 1);
4329 if (exaggeration == 0) {
4333 if (viewNet->getEditModes().isCurrentSupermodeNetwork() &&
4355const std::vector<RGBColor>&
4380 }
else if (value >= max) {
4384 const double procent = ((value - min) * 100) / (max - min);
4388 }
else if (procent >= 100) {
4398std::vector<GUIGlObject*>
4400 std::vector<GUIGlObject*> filteredGLObjects;
4401 if (GLObjects.size() > 0) {
4402 const auto firstLayer = GLObjects.front()->getType();
4403 for (
const auto& GLObject : GLObjects) {
4405 (GLO_RIDE <= GLObject->getType()) && (GLObject->getType() <=
GLO_TRANSHIP)) {
4406 filteredGLObjects.push_back(GLObject);
4408 (GLO_STOP <= GLObject->getType()) && (GLObject->getType() <=
GLO_STOP_PLAN)) {
4409 filteredGLObjects.push_back(GLObject);
4411 (GLO_VEHICLE <= GLObject->getType()) && (GLObject->getType() <=
GLO_ROUTEFLOW)) {
4412 filteredGLObjects.push_back(GLObject);
4414 (GLO_PERSON <= GLObject->getType()) && (GLObject->getType() <=
GLO_PERSONFLOW)) {
4415 filteredGLObjects.push_back(GLObject);
4417 (GLO_CONTAINER <= GLObject->getType()) && (GLObject->getType() <=
GLO_CONTAINERFLOW)) {
4418 filteredGLObjects.push_back(GLObject);
4419 }
else if (GLObject->getType() == firstLayer) {
4420 filteredGLObjects.push_back(GLObject);
4424 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_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 GUIDesignComboBoxWidth180
comboBox with thick frame, width 180
#define GUIDesignComboBoxNCol
number of column of every combo box
#define GUIDesignButtonPopup
checkable button placed in popup (for example, locate buttons)
#define GUIDesignButtonToolbar
little button with icon placed in navigation toolbar
#define GUIDesignButtonLeft
button extended over over Frame with thick and raise frame
#define GUIDesignTextFieldNCol
Num of column of text field.
#define GUIDesignTLSTableCheckableButtonIcon
checkable button only with icon used in TLSTable
#define GUIDesignComboBoxVisibleItemsFixed
combo box size fixed
#define GUIDesignTextFieldFixedRestricted(width, type)
text field with fixed width
#define GUIDesignMFXCheckableButtonSquare
#define GUIDesignButtonToolbarLocator
little checkable button with icon placed in navigation toolbar used specify for Locator
#define GUIDesignMFXCheckableButtonSupermode
checkable button with icon placed in navigation toolbar for supermodes
#define GUIDesignCheckButtonAttribute
checkButton without thick extended over the frame used for attributes
#define GUIDesignLabelThickedFixed(width)
label thicked, icon before text, text centered and custom width
@ GLO_EDGERELDATA
edge relation data
@ GLO_TAZRELDATA
TAZ relation data.
@ GLO_WALKINGAREA
a walkingArea
@ GLO_JPS_WALKABLEAREA
walkable area
@ GLO_ROUTE_EMBEDDED
a route
@ GLO_TESTELEMENT
test element (used in netedit)
@ GLO_TRANSHIP
a container tranship
@ GLO_STOPPING_PLACE_LAST
reserved GLO type for packing all StoppingPlace elements
@ GLO_STOP_PLAN
a stop plan stop
@ GLO_ROUTEFLOW
a routeFlow
@ GLO_WIRE
reserved GLO type for packing all wire elements
@ GLO_TAZ
Traffic Assignment Zones (TAZs)
@ GLO_CONTAINER
a container
@ GLO_JPS_OBSTACLE
obstacles
@ GLO_CONNECTION
a connection
@ GLO_ADDITIONALELEMENT
reserved GLO type for packing all additionals elements
@ GLO_PERSONTRIP
a person trip
@ GLO_STOPPING_PLACE
reserved GLO type for packing all StoppingPlace elements
@ GLO_TRANSPORT
a container transport
@ GLO_POI
poi (over view, geo and lane)
@ GLO_RECTANGLESELECTION
rectangle selection shape (used in netedit)
@ GLO_CONTAINERFLOW
a person flow
@ GLO_PERSONFLOW
a person flow
@ GLO_TRACTIONSUBSTATION
a segment of an overhead line
@ GLO_LOCKICON
Lock icon (used in netedit)
GUIViewObjectsHandler gViewObjectsHandler
@ DATAMODE_CHECKBOX_SHOWADDITIONALS
@ NETWORKMODE_CHECKBOX_BUBBLES
@ DATAMODE_CHECKBOX_TAZRELONLYFROM
@ SAVE_ADDITIONALELEMENTS
@ DEMANDMODE_CHECKBOX_HIDENONINSPECTEDDEMANDELEMENTS
@ NETWORKMODE_CHECKBOX_HIDECONNECTIONS
@ DEMANDMODE_CHECKBOX_SHOWTRIPS
@ COMMONMODE_CHECKBOX_TOGGLEDRAWJUNCTIONSHAPE
@ DATAMODE_CHECKBOX_SHOWSHAPES
@ NETWORKMODE_CHECKBOX_SELECTEDGES
@ COMMONMODE_CHECKBOX_SHOWDEMANDELEMENTS
@ DEMANDMODE_CHECKBOX_LOCKPERSON
@ NETWORKMODE_CHECKBOX_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
const GNETagProperties * getTagProperty() const
get tagProperty associated with this Attribute Carrier
void unmarkForDrawingFront()
unmark for drawing front
GNENet * getNet() const
get pointer to net
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
An Element which don't belong to GNENet but has influence in the simulation.
A road/street connecting two junctions (netedit-version)
bool isConvexAngle() const
check if edge makes a convex angle [0 - 180) degrees
NBEdge * getNBEdge() const
returns the internal NBEdge
An Element which don't belong to GNENet but has influence in the simulation.
const GNEHierarchicalContainerParents< GNEDemandElement * > & getParentDemandElements() const
get parent demand elements
const GNEHierarchicalContainerChildren< GNEDemandElement * > & getChildDemandElements() const
return child demand elements
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
This lane is powered by an underlying GNEEdge and basically knows how to draw itself.
static void commitMove(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset, GNEUndoList *undoList)
commit move element for the given offset
static void moveElement(const GNEViewNet *viewNet, GNEMoveOperation *moveOperation, const GNEMoveOffset &offset)
move element the for given offset (note: offset can be X-Y-0, 0-0-Z or X-Y-Z)
GNEJunction * retrieveJunction(const std::string &id, bool hardFail=true) const
get junction by id
GNEDataSet * retrieveDataSet(const std::string &id, bool hardFail=true) const
Returns the named data set.
GNEDemandElement * retrieveDemandElement(SumoXMLTag type, const std::string &id, bool hardFail=true) const
Returns the named demand element.
GNENetHelper::AttributeCarriers * getAttributeCarriers() const
get all attribute carriers used in this net
GNEViewNet * getViewNet() const
get view net
void setShapeEdited(const bool value)
set shape edited
An Element which don't belong to GNENet but has influence in the simulation.
bool isNetworkElement() const
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
This object is responsible for drawing a shape and for supplying a a popup menu. Messages are routete...
const std::string & getMicrosimID() const
Returns the id of the object as known to microsim.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
virtual bool isGLObjectLocked() const
check if element is locked (Currently used only in netedit)
static FXIcon * getIcon(const GUIIcon which)
returns a icon previously defined in the enum GUIIcon
static GUIGlID getTexture(GUITexture which)
returns a texture previously defined in the enum GUITexture
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
int getNumberOfSelectedObjects() const
get number of selected objects
std::map< double, 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 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